thomasht86 commited on
Commit
1f02318
·
verified ·
1 Parent(s): 96db22e

Upload folder using huggingface_hub

Browse files
Files changed (4) hide show
  1. frontend/app.py +12 -4
  2. globals.css +0 -14
  3. main.py +9 -4
  4. output.css +53 -15
frontend/app.py CHANGED
@@ -197,9 +197,9 @@ def Search(request, search_results=[]):
197
 
198
  def LoadingMessage():
199
  return Div(
200
- P(Lucide(icon="loader-circle", size="50", cls="animate-rotate htmx-indicator")),
201
- P("Retrieving search results", cls="text-base text-center"),
202
- cls="p-10 text-center text-muted-foreground",
203
  id="loading-indicator",
204
  )
205
 
@@ -248,13 +248,21 @@ def SearchResult(results: list, query_id: Optional[str] = None):
248
  data_image_src=full_image_base64,
249
  cls="reset-button pointer-events-auto font-mono text-xs h-5 rounded-none px-2",
250
  )
 
 
 
 
 
 
 
251
  # Add "Tokens" button - this has no action, just a placeholder
252
  tokens_button = Button(
253
- Lucide(icon="images", size="15"),
254
  "Tokens",
255
  size="sm",
256
  cls="tokens-button flex gap-[3px] font-bold pointer-events-none font-mono text-xs h-5 rounded-none px-2",
257
  )
 
258
  result_items.append(
259
  Div(
260
  Div(
 
197
 
198
  def LoadingMessage():
199
  return Div(
200
+ Lucide(icon="loader-circle", cls="size-5 mr-1.5 animate-spin"),
201
+ Span("Retrieving search results", cls="text-base text-center"),
202
+ cls="p-10 text-muted-foreground flex items-center justify-center",
203
  id="loading-indicator",
204
  )
205
 
 
248
  data_image_src=full_image_base64,
249
  cls="reset-button pointer-events-auto font-mono text-xs h-5 rounded-none px-2",
250
  )
251
+
252
+ tokens_icon = (
253
+ Lucide(icon="loader-circle", size="15", cls="animate-spin")
254
+ if query_id is not None
255
+ else Lucide(icon="images", size="15")
256
+ )
257
+
258
  # Add "Tokens" button - this has no action, just a placeholder
259
  tokens_button = Button(
260
+ tokens_icon,
261
  "Tokens",
262
  size="sm",
263
  cls="tokens-button flex gap-[3px] font-bold pointer-events-none font-mono text-xs h-5 rounded-none px-2",
264
  )
265
+
266
  result_items.append(
267
  Div(
268
  Div(
globals.css CHANGED
@@ -148,15 +148,6 @@
148
  }
149
  }
150
 
151
- @keyframes rotate {
152
- from {
153
- transform: rotate(0deg);
154
- }
155
- to {
156
- transform: rotate(360deg);
157
- }
158
- }
159
-
160
  .animate-fade-in {
161
  animation: fade-in 1s ease-out forwards;
162
  }
@@ -165,11 +156,6 @@
165
  animation: slide-up 1s ease-out forwards;
166
  }
167
 
168
- .animate-rotate {
169
- animation: rotate 2s linear infinite;
170
- display: inline;
171
- }
172
-
173
  .sim-map-button.active {
174
  background-color: #61D790;
175
  color: #2E2F27;
 
148
  }
149
  }
150
 
 
 
 
 
 
 
 
 
 
151
  .animate-fade-in {
152
  animation: fade-in 1s ease-out forwards;
153
  }
 
156
  animation: slide-up 1s ease-out forwards;
157
  }
158
 
 
 
 
 
 
159
  .sim-map-button.active {
160
  background-color: #61D790;
161
  color: #2E2F27;
main.py CHANGED
@@ -27,6 +27,7 @@ highlight_js = HighlightJS(
27
  light="github",
28
  )
29
 
 
30
  app, rt = fast_app(
31
  htmlkw={"cls": "h-full"},
32
  pico=False,
@@ -46,6 +47,12 @@ task_cache = LRUCache(
46
  thread_pool = ThreadPoolExecutor()
47
 
48
 
 
 
 
 
 
 
49
  def generate_query_id(query):
50
  return hashlib.md5(query.encode("utf-8")).hexdigest()
51
 
@@ -111,10 +118,8 @@ async def get(request, query: str, nn: bool = True):
111
  # If task is not completed, return the results with query_id
112
  return SearchResult(search_results, query_id)
113
  task_cache.set(query_id, False)
114
- # Fetch model and processor
115
- manager = ModelManager.get_instance()
116
- model = manager.model
117
- processor = manager.processor
118
  q_embs, token_to_idx = get_query_embeddings_and_token_map(processor, model, query)
119
 
120
  start = time.perf_counter()
 
27
  light="github",
28
  )
29
 
30
+
31
  app, rt = fast_app(
32
  htmlkw={"cls": "h-full"},
33
  pico=False,
 
47
  thread_pool = ThreadPoolExecutor()
48
 
49
 
50
+ @app.on_event("startup")
51
+ def load_model_on_startup():
52
+ app.manager = ModelManager.get_instance()
53
+ return
54
+
55
+
56
  def generate_query_id(query):
57
  return hashlib.md5(query.encode("utf-8")).hexdigest()
58
 
 
118
  # If task is not completed, return the results with query_id
119
  return SearchResult(search_results, query_id)
120
  task_cache.set(query_id, False)
121
+ model = app.manager.model
122
+ processor = app.manager.processor
 
 
123
  q_embs, token_to_idx = get_query_embeddings_and_token_map(processor, model, query)
124
 
125
  start = time.perf_counter()
output.css CHANGED
@@ -801,6 +801,10 @@ body {
801
  margin-bottom: 0.25rem;
802
  }
803
 
 
 
 
 
804
  .mt-2 {
805
  margin-top: 0.5rem;
806
  }
@@ -842,6 +846,11 @@ body {
842
  height: 1rem;
843
  }
844
 
 
 
 
 
 
845
  .h-10 {
846
  height: 2.5rem;
847
  }
@@ -930,6 +939,10 @@ body {
930
  min-height: 80px;
931
  }
932
 
 
 
 
 
933
  .w-10 {
934
  width: 2.5rem;
935
  }
@@ -1047,6 +1060,16 @@ body {
1047
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1048
  }
1049
 
 
 
 
 
 
 
 
 
 
 
1050
  .cursor-default {
1051
  cursor: default;
1052
  }
@@ -1289,6 +1312,11 @@ body {
1289
  background-color: rgb(0 0 0 / 0.8);
1290
  }
1291
 
 
 
 
 
 
1292
  .bg-border {
1293
  background-color: hsl(var(--border));
1294
  }
@@ -1325,6 +1353,16 @@ body {
1325
  background-color: hsl(var(--primary));
1326
  }
1327
 
 
 
 
 
 
 
 
 
 
 
1328
  .bg-secondary {
1329
  background-color: hsl(var(--secondary));
1330
  }
@@ -1475,6 +1513,11 @@ body {
1475
  line-height: 2rem;
1476
  }
1477
 
 
 
 
 
 
1478
  .text-5xl {
1479
  font-size: 3rem;
1480
  line-height: 1;
@@ -1557,6 +1600,16 @@ body {
1557
  color: hsl(var(--foreground) / 0.5);
1558
  }
1559
 
 
 
 
 
 
 
 
 
 
 
1560
  .text-muted-foreground {
1561
  color: hsl(var(--muted-foreground));
1562
  }
@@ -1903,16 +1956,6 @@ body {
1903
  }
1904
  }
1905
 
1906
- @keyframes rotate {
1907
- from {
1908
- transform: rotate(0deg);
1909
- }
1910
-
1911
- to {
1912
- transform: rotate(360deg);
1913
- }
1914
- }
1915
-
1916
  .animate-fade-in {
1917
  animation: fade-in 1s ease-out forwards;
1918
  }
@@ -1921,11 +1964,6 @@ body {
1921
  animation: slide-up 1s ease-out forwards;
1922
  }
1923
 
1924
- .animate-rotate {
1925
- animation: rotate 2s linear infinite;
1926
- display: inline;
1927
- }
1928
-
1929
  .sim-map-button.active {
1930
  background-color: #61D790;
1931
  color: #2E2F27;
 
801
  margin-bottom: 0.25rem;
802
  }
803
 
804
+ .mr-1\.5 {
805
+ margin-right: 0.375rem;
806
+ }
807
+
808
  .mt-2 {
809
  margin-top: 0.5rem;
810
  }
 
846
  height: 1rem;
847
  }
848
 
849
+ .size-5 {
850
+ width: 1.25rem;
851
+ height: 1.25rem;
852
+ }
853
+
854
  .h-10 {
855
  height: 2.5rem;
856
  }
 
939
  min-height: 80px;
940
  }
941
 
942
+ .min-h-screen {
943
+ min-height: 100vh;
944
+ }
945
+
946
  .w-10 {
947
  width: 2.5rem;
948
  }
 
1060
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1061
  }
1062
 
1063
+ @keyframes spin {
1064
+ to {
1065
+ transform: rotate(360deg);
1066
+ }
1067
+ }
1068
+
1069
+ .animate-spin {
1070
+ animation: spin 1s linear infinite;
1071
+ }
1072
+
1073
  .cursor-default {
1074
  cursor: default;
1075
  }
 
1312
  background-color: rgb(0 0 0 / 0.8);
1313
  }
1314
 
1315
+ .bg-blue-500 {
1316
+ --tw-bg-opacity: 1;
1317
+ background-color: rgb(59 130 246 / var(--tw-bg-opacity));
1318
+ }
1319
+
1320
  .bg-border {
1321
  background-color: hsl(var(--border));
1322
  }
 
1353
  background-color: hsl(var(--primary));
1354
  }
1355
 
1356
+ .bg-red-300 {
1357
+ --tw-bg-opacity: 1;
1358
+ background-color: rgb(252 165 165 / var(--tw-bg-opacity));
1359
+ }
1360
+
1361
+ .bg-red-500 {
1362
+ --tw-bg-opacity: 1;
1363
+ background-color: rgb(239 68 68 / var(--tw-bg-opacity));
1364
+ }
1365
+
1366
  .bg-secondary {
1367
  background-color: hsl(var(--secondary));
1368
  }
 
1513
  line-height: 2rem;
1514
  }
1515
 
1516
+ .text-3xl {
1517
+ font-size: 1.875rem;
1518
+ line-height: 2.25rem;
1519
+ }
1520
+
1521
  .text-5xl {
1522
  font-size: 3rem;
1523
  line-height: 1;
 
1600
  color: hsl(var(--foreground) / 0.5);
1601
  }
1602
 
1603
+ .text-gray-800 {
1604
+ --tw-text-opacity: 1;
1605
+ color: rgb(31 41 55 / var(--tw-text-opacity));
1606
+ }
1607
+
1608
+ .text-gray-900 {
1609
+ --tw-text-opacity: 1;
1610
+ color: rgb(17 24 39 / var(--tw-text-opacity));
1611
+ }
1612
+
1613
  .text-muted-foreground {
1614
  color: hsl(var(--muted-foreground));
1615
  }
 
1956
  }
1957
  }
1958
 
 
 
 
 
 
 
 
 
 
 
1959
  .animate-fade-in {
1960
  animation: fade-in 1s ease-out forwards;
1961
  }
 
1964
  animation: slide-up 1s ease-out forwards;
1965
  }
1966
 
 
 
 
 
 
1967
  .sim-map-button.active {
1968
  background-color: #61D790;
1969
  color: #2E2F27;