Spaces:
Running
Running
Update app.py
Browse files
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 |
-
|
86 |
-
|
|
|
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 |
-
|
|
|
102 |
elif 'load_dataset' in request.form:
|
103 |
# Trigger loading of Hugging Face dataset without resetting
|
104 |
try:
|
105 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
|
|
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 |
-
|
124 |
-
|
|
|
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 (
|
|
|
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'])
|