iisadia commited on
Commit
cbe7195
·
verified ·
1 Parent(s): caf1f71

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +55 -65
app.py CHANGED
@@ -1,4 +1,4 @@
1
- import gradio as gr
2
  import requests
3
  from fpdf import FPDF
4
  import pdfplumber
@@ -56,28 +56,6 @@ def analyze_requirement(requirement):
56
  "Rewritten": rewritten
57
  }
58
 
59
- # Function to process multiple requirements
60
- def process_requirements(input_text, uploaded_file):
61
- requirements = []
62
-
63
- # If a file is uploaded, extract text from the PDF
64
- if uploaded_file:
65
- with pdfplumber.open(uploaded_file) as pdf:
66
- for page in pdf.pages:
67
- requirements.extend(page.extract_text().split("\n"))
68
-
69
- # If text input is provided, split into individual requirements
70
- if input_text:
71
- requirements.extend(input_text.split("\n"))
72
-
73
- # Analyze each requirement
74
- results = []
75
- for req in requirements:
76
- if req.strip(): # Ignore empty lines
77
- results.append(analyze_requirement(req.strip()))
78
-
79
- return results
80
-
81
  # Function to generate a PDF report
82
  def generate_pdf_report(results):
83
  pdf = FPDF()
@@ -97,46 +75,58 @@ def generate_pdf_report(results):
97
  pdf.output(pdf_output)
98
  return pdf_output
99
 
100
- # Gradio interface
101
- def app_interface(input_text, uploaded_file):
102
- results = process_requirements(input_text, uploaded_file)
103
- pdf_report = generate_pdf_report(results)
 
104
 
105
- # Display results in a clean format
106
- output_text = ""
107
- for result in results:
108
- output_text += f"Requirement: {result['Requirement']}\n"
109
- output_text += f"Type: {result['Type']}\n"
110
- output_text += f"Stakeholders: {result['Stakeholders']}\n"
111
- output_text += f"Domain: {result['Domain']}\n"
112
- output_text += f"Defects: {result['Defects']}\n"
113
- output_text += f"Rewritten: {result['Rewritten']}\n"
114
- output_text += "-" * 50 + "\n\n"
115
-
116
- return output_text, pdf_report
117
-
118
- # Gradio app
119
- title = "Requirement Analysis App"
120
- description = """
121
- This app analyzes software requirements using the Mistral model.
122
- You can either enter requirements manually or upload a PDF file containing requirements.
123
- """
124
- team_name = "Team Innovators"
125
-
126
- interface = gr.Interface(
127
- fn=app_interface,
128
- inputs=[
129
- gr.Textbox(label="Enter Requirements (one per line)"),
130
- gr.File(label="Upload PDF File (optional)")
131
- ],
132
- outputs=[
133
- gr.Textbox(label="Analysis Results"),
134
- gr.File(label="Download PDF Report")
135
- ],
136
- title=title,
137
- description=description,
138
- theme="soft"
139
- )
140
-
141
- # Add team name to the interface
142
- interface.launch()
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
  import requests
3
  from fpdf import FPDF
4
  import pdfplumber
 
56
  "Rewritten": rewritten
57
  }
58
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
  # Function to generate a PDF report
60
  def generate_pdf_report(results):
61
  pdf = FPDF()
 
75
  pdf.output(pdf_output)
76
  return pdf_output
77
 
78
+ # Streamlit app
79
+ def main():
80
+ st.title("Requirement Defects Detective Tool")
81
+ st.markdown("**Team Name:** Sadia, Areeba, Rabbia, Tesmia")
82
+ st.markdown("**LLM Model:** Mistral")
83
 
84
+ # Input options
85
+ input_option = st.radio("Choose input method:", ("Enter Requirements", "Upload PDF"))
86
+
87
+ requirements = []
88
+ if input_option == "Enter Requirements":
89
+ input_text = st.text_area("Enter your requirements (one per line):")
90
+ if input_text:
91
+ requirements = input_text.split("\n")
92
+ else:
93
+ uploaded_file = st.file_uploader("Upload a PDF file:", type="pdf")
94
+ if uploaded_file:
95
+ with pdfplumber.open(uploaded_file) as pdf:
96
+ for page in pdf.pages:
97
+ requirements.extend(page.extract_text().split("\n"))
98
+
99
+ # Analyze requirements
100
+ if st.button("Analyze Requirements"):
101
+ if not requirements:
102
+ st.warning("Please enter or upload requirements.")
103
+ else:
104
+ results = []
105
+ for req in requirements:
106
+ if req.strip(): # Ignore empty lines
107
+ results.append(analyze_requirement(req.strip()))
108
+
109
+ # Display results
110
+ st.subheader("Analysis Results")
111
+ for result in results:
112
+ st.write(f"**Requirement:** {result['Requirement']}")
113
+ st.write(f"**Type:** {result['Type']}")
114
+ st.write(f"**Stakeholders:** {result['Stakeholders']}")
115
+ st.write(f"**Domain:** {result['Domain']}")
116
+ st.write(f"**Defects:** {result['Defects']}")
117
+ st.write(f"**Rewritten:** {result['Rewritten']}")
118
+ st.write("---")
119
+
120
+ # Generate and download PDF report
121
+ pdf_report = generate_pdf_report(results)
122
+ with open(pdf_report, "rb") as f:
123
+ st.download_button(
124
+ label="Download PDF Report",
125
+ data=f,
126
+ file_name="requirements_report.pdf",
127
+ mime="application/pdf"
128
+ )
129
+
130
+ # Run the app
131
+ if __name__ == "__main__":
132
+ main()