broadfield-dev commited on
Commit
f518567
·
verified ·
1 Parent(s): a4492a3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +56 -34
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
- parts, sequence = parse_python_code(code_input)
44
- # Store in ChromaDB
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
  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
- parts, sequence = parse_python_code(code_input)
55
- vectors = [part['vector'] for part in parts]
56
- client = init_chromadb()
57
- store_program(client, code_input, sequence, vectors, DB_NAME)
58
- logger.info(f"Stored code: {filename}")
 
 
 
 
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
- client = load_chromadb_from_hf()
63
- query_results = query_programs(client, operations, DB_NAME)
64
- logger.info(f"Queried operations: {operations}")
65
- return render_template(
66
- 'results_partial.html',
67
- parts=None,
68
- filename=filename,
69
- reconstructed_code=None,
70
- code_input=None,
71
- query_results=query_results
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
- client = load_chromadb_from_hf()
77
- query_results = query_programs(client, None, DB_NAME, semantic_query=semantic_query)
78
- logger.info(f"Queried semantically: {semantic_query}")
79
- return render_template(
80
- 'results_partial.html',
81
- parts=None,
82
- filename=filename,
83
- reconstructed_code=None,
84
- code_input=None,
85
- query_results=query_results
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 by checking if it's iterable (fix for 'NoneType' error)
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,