dataframe_background_update

#4
Files changed (2) hide show
  1. app.py +26 -64
  2. requirements.txt +0 -1
app.py CHANGED
@@ -1,5 +1,3 @@
1
- from apscheduler.schedulers.background import BackgroundScheduler
2
- import datetime
3
  import os
4
  from typing import Dict, Tuple
5
  from uuid import UUID
@@ -216,7 +214,6 @@ def kpi_chart() -> alt.Chart:
216
 
217
  return chart
218
 
219
-
220
  def render_hub_user_link(hub_id):
221
  link = f"https://huggingface.co/{hub_id}"
222
  return f'<a target="_blank" href="{link}" style="color: var(--link-text-color); text-decoration: underline;text-decoration-style: dotted;">{hub_id}</a>'
@@ -236,42 +233,13 @@ def obtain_top_5_users(user_ids_annotations: Dict[str, int]) -> pd.DataFrame:
236
  dataframe = pd.DataFrame(
237
  user_ids_annotations.items(), columns=["Name", "Submitted Responses"]
238
  )
239
- dataframe["Name"] = dataframe["Name"].apply(render_hub_user_link)
240
  dataframe = dataframe.sort_values(by="Submitted Responses", ascending=False)
241
  return dataframe.head(50)
242
 
243
 
244
- def fetch_data() -> None:
245
- """
246
- This function fetches the data from the source and target datasets and updates the global variables.
247
- """
248
-
249
- print(f"Starting to fetch data: {datetime.datetime.now()}")
250
-
251
- global source_dataset, target_dataset, user_ids_annotations, annotated, remaining, percentage_completed, top5_dataframe
252
- source_dataset, target_dataset = obtain_source_target_datasets()
253
- user_ids_annotations = get_user_annotations_dictionary(target_dataset)
254
-
255
- annotated = len(target_dataset)
256
- remaining = int(os.getenv("TARGET_RECORDS")) - annotated
257
- percentage_completed = round(
258
- (annotated / int(os.getenv("TARGET_RECORDS"))) * 100, 1
259
- )
260
-
261
- # Print the current date and time
262
- print(f"Data fetched: {datetime.datetime.now()}")
263
-
264
-
265
- def get_top5() -> pd.DataFrame:
266
- return obtain_top_5_users(user_ids_annotations)
267
-
268
-
269
  def main() -> None:
270
 
271
- # Set the update interval
272
- update_interval = 300 # seconds
273
- update_interval_charts = 30 # seconds
274
-
275
  # Connect to the space with rg.init()
276
  rg.init(
277
  api_url=os.getenv("ARGILLA_API_URL"),
@@ -279,22 +247,19 @@ def main() -> None:
279
  extra_headers={"Authorization": f"Bearer {os.getenv('HF_TOKEN')}"},
280
  )
281
 
282
- fetch_data()
 
 
283
 
284
- scheduler = BackgroundScheduler()
285
- scheduler.add_job(
286
- func=fetch_data, trigger="interval", seconds=update_interval, max_instances=1
287
- )
288
- scheduler.start()
289
 
290
- # To avoid the orange border for the Gradio elements that are in constant loading
291
- css = """
292
- .generating {
293
- border: none;
294
- }
295
- """
296
 
297
- with gr.Blocks(css=css) as demo:
298
  gr.Markdown(
299
  """
300
  # 🗣️ The Prompt Collective Dashboad
@@ -312,12 +277,11 @@ def main() -> None:
312
  )
313
  with gr.Row():
314
 
315
- donut_target_plot = gr.Plot(label="Plot")
316
  demo.load(
317
  donut_chart_target,
318
  inputs=[],
319
- outputs=[donut_target_plot],
320
- every=update_interval_charts,
321
  )
322
 
323
  gr.Markdown(
@@ -335,28 +299,25 @@ def main() -> None:
335
  )
336
  with gr.Row():
337
 
338
- kpi_submitted_plot = gr.Plot(label="Plot")
339
  demo.load(
340
  kpi_chart_submitted,
341
  inputs=[],
342
- outputs=[kpi_submitted_plot],
343
- every=update_interval_charts,
344
  )
345
 
346
- kpi_remaining_plot = gr.Plot(label="Plot")
347
  demo.load(
348
  kpi_chart_remaining,
349
  inputs=[],
350
- outputs=[kpi_remaining_plot],
351
- every=update_interval_charts,
352
  )
353
 
354
- donut_total_plot = gr.Plot(label="Plot")
355
  demo.load(
356
  donut_chart_total,
357
  inputs=[],
358
- outputs=[donut_total_plot],
359
- every=update_interval_charts,
360
  )
361
 
362
  gr.Markdown(
@@ -368,12 +329,15 @@ def main() -> None:
368
 
369
  with gr.Row():
370
 
371
- kpi_hall_plot = gr.Plot(label="Plot")
372
  demo.load(
373
- kpi_chart, inputs=[], outputs=[kpi_hall_plot], every=update_interval_charts
 
 
374
  )
375
 
376
- top5_df_plot = gr.Dataframe(
 
377
  headers=["Name", "Submitted Responses"],
378
  datatype=[
379
  "markdown",
@@ -382,9 +346,7 @@ def main() -> None:
382
  row_count=50,
383
  col_count=(2, "fixed"),
384
  interactive=False,
385
- every=update_interval,
386
- )
387
- demo.load(get_top5, None, [top5_df_plot], every=update_interval_charts)
388
 
389
  # Launch the Gradio interface
390
  demo.launch()
 
 
 
1
  import os
2
  from typing import Dict, Tuple
3
  from uuid import UUID
 
214
 
215
  return chart
216
 
 
217
  def render_hub_user_link(hub_id):
218
  link = f"https://huggingface.co/{hub_id}"
219
  return f'<a target="_blank" href="{link}" style="color: var(--link-text-color); text-decoration: underline;text-decoration-style: dotted;">{hub_id}</a>'
 
233
  dataframe = pd.DataFrame(
234
  user_ids_annotations.items(), columns=["Name", "Submitted Responses"]
235
  )
236
+ dataframe['Name'] = dataframe['Name'].apply(render_hub_user_link)
237
  dataframe = dataframe.sort_values(by="Submitted Responses", ascending=False)
238
  return dataframe.head(50)
239
 
240
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
241
  def main() -> None:
242
 
 
 
 
 
243
  # Connect to the space with rg.init()
244
  rg.init(
245
  api_url=os.getenv("ARGILLA_API_URL"),
 
247
  extra_headers={"Authorization": f"Bearer {os.getenv('HF_TOKEN')}"},
248
  )
249
 
250
+ global source_dataset, target_dataset, user_ids_annotations
251
+ source_dataset, target_dataset = obtain_source_target_datasets()
252
+ user_ids_annotations = get_user_annotations_dictionary(target_dataset)
253
 
254
+ top5_dataframe = obtain_top_5_users(user_ids_annotations)
 
 
 
 
255
 
256
+ annotated = len(target_dataset)
257
+ remaining = int(os.getenv("TARGET_RECORDS")) - annotated
258
+ percentage_completed = round(
259
+ (annotated / int(os.getenv("TARGET_RECORDS"))) * 100, 1
260
+ )
 
261
 
262
+ with gr.Blocks() as demo:
263
  gr.Markdown(
264
  """
265
  # 🗣️ The Prompt Collective Dashboad
 
277
  )
278
  with gr.Row():
279
 
280
+ plot2 = gr.Plot(label="Plot")
281
  demo.load(
282
  donut_chart_target,
283
  inputs=[],
284
+ outputs=[plot2],
 
285
  )
286
 
287
  gr.Markdown(
 
299
  )
300
  with gr.Row():
301
 
302
+ plot = gr.Plot(label="Plot")
303
  demo.load(
304
  kpi_chart_submitted,
305
  inputs=[],
306
+ outputs=[plot],
 
307
  )
308
 
309
+ plot = gr.Plot(label="Plot")
310
  demo.load(
311
  kpi_chart_remaining,
312
  inputs=[],
313
+ outputs=[plot],
 
314
  )
315
 
316
+ plot2 = gr.Plot(label="Plot")
317
  demo.load(
318
  donut_chart_total,
319
  inputs=[],
320
+ outputs=[plot2],
 
321
  )
322
 
323
  gr.Markdown(
 
329
 
330
  with gr.Row():
331
 
332
+ plot2 = gr.Plot(label="Plot")
333
  demo.load(
334
+ kpi_chart,
335
+ inputs=[],
336
+ outputs=[plot2],
337
  )
338
 
339
+ gr.Dataframe(
340
+ value=top5_dataframe,
341
  headers=["Name", "Submitted Responses"],
342
  datatype=[
343
  "markdown",
 
346
  row_count=50,
347
  col_count=(2, "fixed"),
348
  interactive=False,
349
+ ),
 
 
350
 
351
  # Launch the Gradio interface
352
  demo.launch()
requirements.txt CHANGED
@@ -2,7 +2,6 @@ aiofiles==23.2.1
2
  altair==5.2.0
3
  annotated-types==0.6.0
4
  anyio==4.2.0
5
- apscheduler==3.10.4
6
  argilla==1.23.0
7
  attrs==23.2.0
8
  backoff==2.2.1
 
2
  altair==5.2.0
3
  annotated-types==0.6.0
4
  anyio==4.2.0
 
5
  argilla==1.23.0
6
  attrs==23.2.0
7
  backoff==2.2.1