Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -40,50 +40,65 @@ def index():
|
|
40 |
file.save(file_path)
|
41 |
with open(file_path, 'r') as f:
|
42 |
code_input = f.read()
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
|
|
|
|
|
|
49 |
elif 'code' in request.form and request.form['code'].strip():
|
50 |
code_input = request.form['code']
|
51 |
filename = request.form.get('filename', 'unnamed.py') or 'unnamed.py'
|
52 |
if not filename.endswith('.py'):
|
53 |
filename += '.py'
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
|
|
|
|
|
|
|
|
59 |
elif 'query_ops' in request.form and request.form['query_ops'].strip():
|
60 |
# Handle query for operations (category sequence)
|
61 |
operations = [op.strip() for op in request.form['query_ops'].split(',')]
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
|
|
|
|
|
|
|
|
73 |
elif 'semantic_query' in request.form and request.form['semantic_query'].strip():
|
74 |
# Handle semantic query (natural language description)
|
75 |
semantic_query = request.form['semantic_query']
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
|
|
|
|
|
|
|
|
87 |
elif 'process_hf' in request.form:
|
88 |
# Trigger processing of Hugging Face dataset with fresh database
|
89 |
try:
|
@@ -114,6 +129,9 @@ def index():
|
|
114 |
except subprocess.CalledProcessError as e:
|
115 |
logger.error(f"Error processing Hugging Face dataset: {e.stderr}")
|
116 |
return f"Error processing Hugging Face dataset: {e.stderr}", 500
|
|
|
|
|
|
|
117 |
elif 'load_dataset' in request.form:
|
118 |
# Trigger loading of Hugging Face dataset without resetting
|
119 |
try:
|
@@ -139,6 +157,9 @@ def index():
|
|
139 |
except subprocess.CalledProcessError as e:
|
140 |
logger.error(f"Error loading Hugging Face dataset: {e.stderr}")
|
141 |
return f"Error loading Hugging Face dataset: {e.stderr}", 500
|
|
|
|
|
|
|
142 |
elif 'reset_db' in request.form:
|
143 |
# Reset ChromaDB collection (no repopulation with samples)
|
144 |
try:
|
@@ -150,9 +171,10 @@ def index():
|
|
150 |
logger.warning(f"Failed to delete collection {DB_NAME}: {e}")
|
151 |
collection = client.create_collection(DB_NAME)
|
152 |
logger.info(f"Created fresh ChromaDB collection: {DB_NAME}")
|
153 |
-
# Verify collection creation
|
154 |
if collection is None or not hasattr(collection, 'add'):
|
155 |
raise ValueError("ChromaDB collection creation failed")
|
|
|
156 |
return render_template(
|
157 |
'results_partial.html',
|
158 |
parts=None,
|
|
|
40 |
file.save(file_path)
|
41 |
with open(file_path, 'r') as f:
|
42 |
code_input = f.read()
|
43 |
+
try:
|
44 |
+
parts, sequence = parse_python_code(code_input)
|
45 |
+
client = init_chromadb()
|
46 |
+
vectors = [part['vector'] for part in parts]
|
47 |
+
store_program(client, code_input, sequence, vectors, DB_NAME)
|
48 |
+
logger.info(f"Stored code: {filename}")
|
49 |
+
except Exception as e:
|
50 |
+
logger.error(f"Error storing code {filename}: {e}")
|
51 |
+
return f"Error storing code: {e}", 500
|
52 |
elif 'code' in request.form and request.form['code'].strip():
|
53 |
code_input = request.form['code']
|
54 |
filename = request.form.get('filename', 'unnamed.py') or 'unnamed.py'
|
55 |
if not filename.endswith('.py'):
|
56 |
filename += '.py'
|
57 |
+
try:
|
58 |
+
parts, sequence = parse_python_code(code_input)
|
59 |
+
client = init_chromadb()
|
60 |
+
vectors = [part['vector'] for part in parts]
|
61 |
+
store_program(client, code_input, sequence, vectors, DB_NAME)
|
62 |
+
logger.info(f"Stored code: {filename}")
|
63 |
+
except Exception as e:
|
64 |
+
logger.error(f"Error storing code {filename}: {e}")
|
65 |
+
return f"Error storing code: {e}", 500
|
66 |
elif 'query_ops' in request.form and request.form['query_ops'].strip():
|
67 |
# Handle query for operations (category sequence)
|
68 |
operations = [op.strip() for op in request.form['query_ops'].split(',')]
|
69 |
+
try:
|
70 |
+
client = load_chromadb_from_hf()
|
71 |
+
query_results = query_programs(client, operations, DB_NAME)
|
72 |
+
logger.info(f"Queried operations: {operations}")
|
73 |
+
return render_template(
|
74 |
+
'results_partial.html',
|
75 |
+
parts=None,
|
76 |
+
filename=filename,
|
77 |
+
reconstructed_code=None,
|
78 |
+
code_input=None,
|
79 |
+
query_results=query_results
|
80 |
+
)
|
81 |
+
except Exception as e:
|
82 |
+
logger.error(f"Error querying operations: {e}")
|
83 |
+
return f"Error querying operations: {e}", 500
|
84 |
elif 'semantic_query' in request.form and request.form['semantic_query'].strip():
|
85 |
# Handle semantic query (natural language description)
|
86 |
semantic_query = request.form['semantic_query']
|
87 |
+
try:
|
88 |
+
client = load_chromadb_from_hf()
|
89 |
+
query_results = query_programs(client, None, DB_NAME, semantic_query=semantic_query)
|
90 |
+
logger.info(f"Queried semantically: {semantic_query}")
|
91 |
+
return render_template(
|
92 |
+
'results_partial.html',
|
93 |
+
parts=None,
|
94 |
+
filename=filename,
|
95 |
+
reconstructed_code=None,
|
96 |
+
code_input=None,
|
97 |
+
query_results=query_results
|
98 |
+
)
|
99 |
+
except Exception as e:
|
100 |
+
logger.error(f"Error querying semantically: {e}")
|
101 |
+
return f"Error querying semantically: {e}", 500
|
102 |
elif 'process_hf' in request.form:
|
103 |
# Trigger processing of Hugging Face dataset with fresh database
|
104 |
try:
|
|
|
129 |
except subprocess.CalledProcessError as e:
|
130 |
logger.error(f"Error processing Hugging Face dataset: {e.stderr}")
|
131 |
return f"Error processing Hugging Face dataset: {e.stderr}", 500
|
132 |
+
except Exception as e:
|
133 |
+
logger.error(f"Unexpected error processing Hugging Face dataset: {e}")
|
134 |
+
return f"Unexpected error processing Hugging Face dataset: {e}", 500
|
135 |
elif 'load_dataset' in request.form:
|
136 |
# Trigger loading of Hugging Face dataset without resetting
|
137 |
try:
|
|
|
157 |
except subprocess.CalledProcessError as e:
|
158 |
logger.error(f"Error loading Hugging Face dataset: {e.stderr}")
|
159 |
return f"Error loading Hugging Face dataset: {e.stderr}", 500
|
160 |
+
except Exception as e:
|
161 |
+
logger.error(f"Unexpected error loading Hugging Face dataset: {e}")
|
162 |
+
return f"Unexpected error loading Hugging Face dataset: {e}", 500
|
163 |
elif 'reset_db' in request.form:
|
164 |
# Reset ChromaDB collection (no repopulation with samples)
|
165 |
try:
|
|
|
171 |
logger.warning(f"Failed to delete collection {DB_NAME}: {e}")
|
172 |
collection = client.create_collection(DB_NAME)
|
173 |
logger.info(f"Created fresh ChromaDB collection: {DB_NAME}")
|
174 |
+
# Verify collection creation
|
175 |
if collection is None or not hasattr(collection, 'add'):
|
176 |
raise ValueError("ChromaDB collection creation failed")
|
177 |
+
logger.info("Verified ChromaDB collection is valid")
|
178 |
return render_template(
|
179 |
'results_partial.html',
|
180 |
parts=None,
|