acecalisto3 commited on
Commit
c161064
·
verified ·
1 Parent(s): 7e568ab

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +68 -16
app.py CHANGED
@@ -192,29 +192,81 @@ class GradioInterface:
192
  self.rag_system = RAGSystem()
193
  self.preview_manager = PreviewManager()
194
 
195
- # ... (other GradioInterface methods remain largely the same, but you may want to improve error handling) ...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
196
 
197
- def _save_as_template(self, code: str, name: str, description: str) -> Tuple[List[str], str]:
198
- """Save current code as template and add to database"""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
199
  try:
200
  components = self._extract_components(code)
201
  template = Template(code=code, description=description, components=components)
202
  if self.template_manager.save_template(name, template):
203
- self.rag_system.add_to_database(code) #add code to the database
204
- return self._get_template_choices(), f"✅ Template saved as {name}"
205
  else:
206
- raise Exception("Failed to save template")
207
  except Exception as e:
208
- error_msg = f"Error saving template: {str(e)}"
209
- logger.error(error_msg)
210
- return self._get_template_choices(), error_msg
211
-
212
-
213
- def launch(self, **kwargs):
214
- with gr.Blocks() as interface:
215
- # ... (Interface remains largely the same) ...
216
-
217
- interface.launch(**kwargs)
218
 
219
 
220
  def main():
 
192
  self.rag_system = RAGSystem()
193
  self.preview_manager = PreviewManager()
194
 
195
+ def _extract_components(self, code: str) -> List[str]:
196
+ """Extract components from the code."""
197
+ # This logic should analyze the code and extract components.
198
+ # For example, you might look for function definitions, classes, etc.
199
+ components = []
200
+ # Simple regex to find function definitions
201
+ function_matches = re.findall(r'def (\w+)', code)
202
+ components.extend(function_matches)
203
+
204
+ # Simple regex to find class definitions
205
+ class_matches = re.findall(r'class (\w+)', code)
206
+ components.extend(class_matches)
207
+
208
+ # You can add more sophisticated logic here as needed
209
+ return components
210
+
211
+ def _get_template_choices(self) -> List[str]:
212
+ """Get available template choices."""
213
+ return list(self.template_manager.templates.keys())
214
 
215
+ def launch(self, **kwargs):
216
+ with gr.Blocks() as interface:
217
+ gr.Markdown("## Code Generation Interface")
218
+ description_input = gr.Textbox(label="Description", placeholder="Enter a description for the code you want to generate.")
219
+ code_output = gr.Textbox(label="Generated Code", interactive=False)
220
+ generate_button = gr.Button("Generate Code")
221
+ template_choice = gr.Dropdown(label="Select Template", choices=self._get_template_choices(), value=None)
222
+ save_button = gr.Button("Save as Template")
223
+
224
+ # Generate code button action
225
+ generate_button.click(
226
+ fn=self.generate_code,
227
+ inputs=description_input,
228
+ outputs=code_output
229
+ )
230
+
231
+ # Save template button action
232
+ save_button.click(
233
+ fn=self.save_template,
234
+ inputs=[code_output, template_choice, description_input],
235
+ outputs=code_output
236
+ )
237
+
238
+ # Additional UI elements can be added here
239
+ gr.Markdown("### Preview")
240
+ preview_output = gr.Textbox(label="Preview", interactive=False)
241
+ self.preview_manager.update_preview(code_output) # Update preview with generated code
242
+
243
+ # Update preview when code is generated
244
+ generate_button.click(
245
+ fn=lambda code: self.preview_manager.update_preview(code),
246
+ inputs=code_output,
247
+ outputs=preview_output
248
+ )
249
+
250
+ interface.launch(**kwargs)
251
+
252
+ def generate_code(self, description: str) -> str:
253
+ """Generate code based on the description."""
254
+ template_code = "" # Placeholder for template code
255
+ return self.rag_system.generate_code(description, template_code)
256
+
257
+ def save_template(self, code: str, name: str, description: str) -> str:
258
+ """Save the generated code as a template."""
259
  try:
260
  components = self._extract_components(code)
261
  template = Template(code=code, description=description, components=components)
262
  if self.template_manager.save_template(name, template):
263
+ self.rag_system.add_to_database(code) # Add code to the database
264
+ return f"✅ Template '{name}' saved successfully."
265
  else:
266
+ return "Failed to save template."
267
  except Exception as e:
268
+ logger.error(f"Error saving template: {e}")
269
+ return f"❌ Error saving template: {str(e)}"
 
 
 
 
 
 
 
 
270
 
271
 
272
  def main():