Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -4,7 +4,11 @@ from parser import parse_python_code
|
|
4 |
import os
|
5 |
import json
|
6 |
import io
|
7 |
-
from database import init_chromadb, populate_sample_db, store_program, query_programs
|
|
|
|
|
|
|
|
|
8 |
|
9 |
app = Flask(__name__)
|
10 |
|
@@ -27,15 +31,15 @@ def index():
|
|
27 |
if not file.filename.endswith('.py'):
|
28 |
return 'Invalid file type. Please upload a Python file.', 400
|
29 |
filename = file.filename
|
30 |
-
file_path = os.path.join(
|
31 |
file.save(file_path)
|
32 |
with open(file_path, 'r') as f:
|
33 |
code_input = f.read()
|
34 |
parts, sequence = parse_python_code(code_input)
|
35 |
# Store in ChromaDB
|
36 |
-
vectors = [part['vector'] for part in parts]
|
37 |
client = init_chromadb()
|
38 |
-
|
|
|
39 |
elif 'code' in request.form and request.form['code'].strip():
|
40 |
code_input = request.form['code']
|
41 |
filename = request.form.get('filename', 'unnamed.py') or 'unnamed.py'
|
@@ -44,12 +48,12 @@ def index():
|
|
44 |
parts, sequence = parse_python_code(code_input)
|
45 |
vectors = [part['vector'] for part in parts]
|
46 |
client = init_chromadb()
|
47 |
-
store_program(client, code_input, sequence, vectors)
|
48 |
elif 'query_ops' in request.form and request.form['query_ops'].strip():
|
49 |
# Handle query for operations
|
50 |
operations = [op.strip() for op in request.form['query_ops'].split(',')]
|
51 |
-
client =
|
52 |
-
query_results = query_programs(client, operations)
|
53 |
return render_template(
|
54 |
'results_partial.html',
|
55 |
parts=None,
|
@@ -73,8 +77,13 @@ def index():
|
|
73 |
return 'No file, code, or query provided', 400
|
74 |
|
75 |
# Initial page load
|
76 |
-
client =
|
77 |
-
|
|
|
|
|
|
|
|
|
|
|
78 |
return render_template('index.html', parts=None, filename=None, reconstructed_code=None, code_input=None, query_results=None)
|
79 |
|
80 |
@app.route('/export_json', methods=['POST'])
|
@@ -92,6 +101,6 @@ def export_json():
|
|
92 |
)
|
93 |
|
94 |
if __name__ == '__main__':
|
95 |
-
if not os.path.exists(
|
96 |
-
os.makedirs(
|
97 |
app.run(host="0.0.0.0", port=7860)
|
|
|
4 |
import os
|
5 |
import json
|
6 |
import io
|
7 |
+
from database import init_chromadb, populate_sample_db, store_program, query_programs, load_chromadb_from_hf, HF_DATASET_NAME, HF_TOKEN
|
8 |
+
|
9 |
+
# User-configurable variables
|
10 |
+
DB_NAME = "python_programs" # ChromaDB collection name
|
11 |
+
UPLOAD_DIR = "./uploads" # Directory for uploads
|
12 |
|
13 |
app = Flask(__name__)
|
14 |
|
|
|
31 |
if not file.filename.endswith('.py'):
|
32 |
return 'Invalid file type. Please upload a Python file.', 400
|
33 |
filename = file.filename
|
34 |
+
file_path = os.path.join(UPLOAD_DIR, filename)
|
35 |
file.save(file_path)
|
36 |
with open(file_path, 'r') as f:
|
37 |
code_input = f.read()
|
38 |
parts, sequence = parse_python_code(code_input)
|
39 |
# Store in ChromaDB
|
|
|
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'
|
|
|
48 |
parts, sequence = parse_python_code(code_input)
|
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
|
54 |
operations = [op.strip() for op in request.form['query_ops'].split(',')]
|
55 |
+
client = load_chromadb_from_hf(HF_DATASET_NAME, HF_TOKEN) # Load from Hugging Face
|
56 |
+
query_results = query_programs(client, operations, DB_NAME)
|
57 |
return render_template(
|
58 |
'results_partial.html',
|
59 |
parts=None,
|
|
|
77 |
return 'No file, code, or query provided', 400
|
78 |
|
79 |
# Initial page load
|
80 |
+
client = load_chromadb_from_hf(HF_DATASET_NAME, HF_TOKEN) # Load from Hugging Face on startup
|
81 |
+
# If no dataset exists locally, populate with samples
|
82 |
+
try:
|
83 |
+
if not client.list_collections()[0].name == DB_NAME:
|
84 |
+
populate_sample_db(client)
|
85 |
+
except:
|
86 |
+
populate_sample_db(client)
|
87 |
return render_template('index.html', parts=None, filename=None, reconstructed_code=None, code_input=None, query_results=None)
|
88 |
|
89 |
@app.route('/export_json', methods=['POST'])
|
|
|
101 |
)
|
102 |
|
103 |
if __name__ == '__main__':
|
104 |
+
if not os.path.exists(UPLOAD_DIR):
|
105 |
+
os.makedirs(UPLOAD_DIR)
|
106 |
app.run(host="0.0.0.0", port=7860)
|