broadfield-dev commited on
Commit
c26f5f4
·
verified ·
1 Parent(s): 64b5eaa

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -11
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('uploads', filename)
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
- store_program(client, code_input, sequence, vectors)
 
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 = init_chromadb()
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 = init_chromadb() # Ensure ChromaDB is initialized
77
- populate_sample_db(client) # Populate with sample data
 
 
 
 
 
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('uploads'):
96
- os.makedirs('uploads')
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)