Fix ReadTimeoutError crash on Space initialization

#2
Files changed (2) hide show
  1. app.py +23 -4
  2. src/populate.py +13 -8
app.py CHANGED
@@ -49,6 +49,19 @@ leaderboard_df = None
49
  logger.info("Initialized LBDB")
50
 
51
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
  def restart_space():
53
  logger.info("Restarting space")
54
  API.restart_space(repo_id=REPO_ID)
@@ -66,10 +79,12 @@ def refresh_leaderboard_data():
66
  leaderboard_df = new_leaderboard_df
67
  else:
68
  logger.warning("No new leaderboard data found")
69
- return None
 
70
  except Exception as e:
71
  logger.error(f"Error refreshing leaderboard data: {e}")
72
- return None
 
73
 
74
 
75
  def init_leaderboard(dataframe: pd.DataFrame):
@@ -511,8 +526,12 @@ with blocks:
511
  elem_classes="markdown-text",
512
  )
513
  refresh_leaderboard_data()
514
- assert leaderboard_df is not None
515
- leaderboard_component = init_leaderboard(leaderboard_df)
 
 
 
 
516
 
517
  with gr.TabItem("Submit Solutions", elem_id="formulaone-submit-tab-table", id=3):
518
  logger.info("Tab submission")
 
49
  logger.info("Initialized LBDB")
50
 
51
 
52
+ def get_empty_leaderboard_df():
53
+ return pd.DataFrame(
54
+ columns=[
55
+ AutoEvalColumn.system.name,
56
+ AutoEvalColumn.organization.name,
57
+ AutoEvalColumn.success_rate_overall.name,
58
+ AutoEvalColumn.success_rate_tier1.name,
59
+ AutoEvalColumn.success_rate_tier2.name,
60
+ AutoEvalColumn.submitted_on.name,
61
+ ]
62
+ )
63
+
64
+
65
  def restart_space():
66
  logger.info("Restarting space")
67
  API.restart_space(repo_id=REPO_ID)
 
79
  leaderboard_df = new_leaderboard_df
80
  else:
81
  logger.warning("No new leaderboard data found")
82
+ if leaderboard_df is None:
83
+ leaderboard_df = get_empty_leaderboard_df()
84
  except Exception as e:
85
  logger.error(f"Error refreshing leaderboard data: {e}")
86
+ if leaderboard_df is None:
87
+ leaderboard_df = get_empty_leaderboard_df()
88
 
89
 
90
  def init_leaderboard(dataframe: pd.DataFrame):
 
526
  elem_classes="markdown-text",
527
  )
528
  refresh_leaderboard_data()
529
+ if leaderboard_df is None or leaderboard_df.empty:
530
+ logger.warning("Displaying empty leaderboard - no data available")
531
+ gr.Markdown("⚠️ Leaderboard data unavailable. Submit solutions to populate it!")
532
+ leaderboard_component = init_leaderboard(get_empty_leaderboard_df())
533
+ else:
534
+ leaderboard_component = init_leaderboard(leaderboard_df)
535
 
536
  with gr.TabItem("Submit Solutions", elem_id="formulaone-submit-tab-table", id=3):
537
  logger.info("Tab submission")
src/populate.py CHANGED
@@ -1,5 +1,5 @@
1
  import pandas as pd
2
- from datasets import get_dataset_config_names, load_dataset
3
  from datasets.exceptions import DatasetNotFoundError
4
  from tqdm.auto import tqdm
5
 
@@ -47,13 +47,18 @@ def get_leaderboard_df(results_dataset_name: str) -> pd.DataFrame:
47
  total=len(configs),
48
  desc="Processing Submission Results",
49
  ):
50
- submission_ds = load_dataset(
51
- results_dataset_name,
52
- submission_id,
53
- split="train",
54
- token=TOKEN,
55
- )
56
- submission_df = pd.DataFrame(submission_ds)
 
 
 
 
 
57
 
58
  if submission_df.empty or "did_pass" not in submission_df.columns or submission_df.did_pass.isna().any():
59
  logger.warning(f"Skipping {submission_id} due to invalid did_pass values")
 
1
  import pandas as pd
2
+ from datasets import DownloadConfig, get_dataset_config_names, load_dataset
3
  from datasets.exceptions import DatasetNotFoundError
4
  from tqdm.auto import tqdm
5
 
 
47
  total=len(configs),
48
  desc="Processing Submission Results",
49
  ):
50
+ try:
51
+ submission_ds = load_dataset(
52
+ results_dataset_name,
53
+ submission_id,
54
+ split="train",
55
+ token=TOKEN,
56
+ download_config=DownloadConfig(timeout=60),
57
+ )
58
+ submission_df = pd.DataFrame(submission_ds)
59
+ except Exception as e:
60
+ logger.warning(f"Failed to load submission {submission_id}: {e}")
61
+ continue
62
 
63
  if submission_df.empty or "did_pass" not in submission_df.columns or submission_df.did_pass.isna().any():
64
  logger.warning(f"Skipping {submission_id} due to invalid did_pass values")