broadfield-dev commited on
Commit
3556f91
·
verified ·
1 Parent(s): 6fa17d2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -9
app.py CHANGED
@@ -6,6 +6,11 @@ import json
6
  import io
7
  import subprocess # To call process_hf_dataset.py
8
  from database import init_chromadb, store_program, query_programs, load_chromadb_from_hf, DB_NAME
 
 
 
 
 
9
 
10
  # User-configurable variables
11
  UPLOAD_DIR = "./uploads" # Directory for uploads
@@ -40,6 +45,7 @@ def index():
40
  client = init_chromadb()
41
  vectors = [part['vector'] for part in parts]
42
  store_program(client, code_input, sequence, vectors, DB_NAME)
 
43
  elif 'code' in request.form and request.form['code'].strip():
44
  code_input = request.form['code']
45
  filename = request.form.get('filename', 'unnamed.py') or 'unnamed.py'
@@ -49,11 +55,13 @@ def index():
49
  vectors = [part['vector'] for part in parts]
50
  client = init_chromadb()
51
  store_program(client, code_input, sequence, vectors, DB_NAME)
 
52
  elif 'query_ops' in request.form and request.form['query_ops'].strip():
53
  # Handle query for operations (category sequence)
54
  operations = [op.strip() for op in request.form['query_ops'].split(',')]
55
  client = load_chromadb_from_hf()
56
  query_results = query_programs(client, operations, DB_NAME)
 
57
  return render_template(
58
  'results_partial.html',
59
  parts=None,
@@ -67,6 +75,7 @@ def index():
67
  semantic_query = request.form['semantic_query']
68
  client = load_chromadb_from_hf()
69
  query_results = query_programs(client, None, DB_NAME, semantic_query=semantic_query)
 
70
  return render_template(
71
  'results_partial.html',
72
  parts=None,
@@ -82,12 +91,15 @@ def index():
82
  client = init_chromadb()
83
  try:
84
  client.delete_collection(DB_NAME)
85
- except:
86
- pass # Collection may not exist
 
87
  client.create_collection(DB_NAME)
 
88
 
89
  # Process dataset
90
- subprocess.run(['python', 'process_hf_dataset.py'], check=True)
 
91
  return render_template(
92
  'results_partial.html',
93
  parts=None,
@@ -98,11 +110,19 @@ def index():
98
  message="Hugging Face dataset processed and stored successfully with fresh database."
99
  )
100
  except subprocess.CalledProcessError as e:
101
- return f"Error processing Hugging Face dataset: {e}", 500
 
102
  elif 'load_dataset' in request.form:
103
  # Trigger loading of Hugging Face dataset without resetting
104
  try:
105
- subprocess.run(['python', 'process_hf_dataset.py'], check=True)
 
 
 
 
 
 
 
106
  return render_template(
107
  'results_partial.html',
108
  parts=None,
@@ -113,16 +133,19 @@ def index():
113
  message="Hugging Face dataset loaded and stored successfully."
114
  )
115
  except subprocess.CalledProcessError as e:
116
- return f"Error loading Hugging Face dataset: {e}", 500
 
117
  elif 'reset_db' in request.form:
118
  # Reset ChromaDB collection (no repopulation with samples)
119
  try:
120
  client = init_chromadb()
121
  try:
122
  client.delete_collection(DB_NAME)
123
- except:
124
- pass # Collection may not exist
 
125
  client.create_collection(DB_NAME)
 
126
  return render_template(
127
  'results_partial.html',
128
  parts=None,
@@ -133,6 +156,7 @@ def index():
133
  message="Database reset successfully."
134
  )
135
  except Exception as e:
 
136
  return f"Error resetting database: {e}", 500
137
 
138
  if parts:
@@ -148,7 +172,8 @@ def index():
148
  )
149
  return 'No file, code, or query provided', 400
150
 
151
- # Initial page load (do not populate with samples automatically)
 
152
  return render_template('index.html', parts=None, filename=None, reconstructed_code=None, code_input=None, query_results=None)
153
 
154
  @app.route('/export_json', methods=['POST'])
 
6
  import io
7
  import subprocess # To call process_hf_dataset.py
8
  from database import init_chromadb, store_program, query_programs, load_chromadb_from_hf, DB_NAME
9
+ import logging
10
+
11
+ # Set up logging
12
+ logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
13
+ logger = logging.getLogger(__name__)
14
 
15
  # User-configurable variables
16
  UPLOAD_DIR = "./uploads" # Directory for uploads
 
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'
 
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,
 
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,
 
91
  client = init_chromadb()
92
  try:
93
  client.delete_collection(DB_NAME)
94
+ logger.info(f"Deleted ChromaDB collection: {DB_NAME}")
95
+ except Exception as e:
96
+ logger.warning(f"Failed to delete collection {DB_NAME}: {e}")
97
  client.create_collection(DB_NAME)
98
+ logger.info(f"Created fresh ChromaDB collection: {DB_NAME}")
99
 
100
  # Process dataset
101
+ result = subprocess.run(['python', 'process_hf_dataset.py'], check=True, capture_output=True, text=True)
102
+ logger.info(f"Process Hugging Face dataset output: {result.stdout}")
103
  return render_template(
104
  'results_partial.html',
105
  parts=None,
 
110
  message="Hugging Face dataset processed and stored successfully with fresh database."
111
  )
112
  except subprocess.CalledProcessError as e:
113
+ logger.error(f"Error processing Hugging Face dataset: {e.stderr}")
114
+ return f"Error processing Hugging Face dataset: {e.stderr}", 500
115
  elif 'load_dataset' in request.form:
116
  # Trigger loading of Hugging Face dataset without resetting
117
  try:
118
+ # Check if collection exists, get or create if needed
119
+ client = init_chromadb()
120
+ collection = client.get_or_create_collection(DB_NAME)
121
+ logger.info(f"Using existing or new ChromaDB collection: {DB_NAME}")
122
+
123
+ # Process dataset
124
+ result = subprocess.run(['python', 'process_hf_dataset.py'], check=True, capture_output=True, text=True)
125
+ logger.info(f"Load Hugging Face dataset output: {result.stdout}")
126
  return render_template(
127
  'results_partial.html',
128
  parts=None,
 
133
  message="Hugging Face dataset loaded and stored successfully."
134
  )
135
  except subprocess.CalledProcessError as e:
136
+ logger.error(f"Error loading Hugging Face dataset: {e.stderr}")
137
+ return f"Error loading Hugging Face dataset: {e.stderr}", 500
138
  elif 'reset_db' in request.form:
139
  # Reset ChromaDB collection (no repopulation with samples)
140
  try:
141
  client = init_chromadb()
142
  try:
143
  client.delete_collection(DB_NAME)
144
+ logger.info(f"Deleted ChromaDB collection: {DB_NAME}")
145
+ except Exception as e:
146
+ logger.warning(f"Failed to delete collection {DB_NAME}: {e}")
147
  client.create_collection(DB_NAME)
148
+ logger.info(f"Created fresh ChromaDB collection: {DB_NAME}")
149
  return render_template(
150
  'results_partial.html',
151
  parts=None,
 
156
  message="Database reset successfully."
157
  )
158
  except Exception as e:
159
+ logger.error(f"Error resetting database: {e}")
160
  return f"Error resetting database: {e}", 500
161
 
162
  if parts:
 
172
  )
173
  return 'No file, code, or query provided', 400
174
 
175
+ # Initial page load (start empty, no default population)
176
+ logger.info("Application started, database empty until triggered by buttons")
177
  return render_template('index.html', parts=None, filename=None, reconstructed_code=None, code_input=None, query_results=None)
178
 
179
  @app.route('/export_json', methods=['POST'])