davanstrien HF staff commited on
Commit
32f75dc
·
1 Parent(s): d944488

Update app.py: Fix missing environment variables and improve dataframe filtering

Browse files
Files changed (1) hide show
  1. app.py +51 -30
app.py CHANGED
@@ -26,9 +26,12 @@ REMOVE_ORGS = {
26
  HF_TOKEN = os.getenv("HF_TOKEN")
27
  USER_AGENT = os.getenv("USER_AGENT")
28
 
 
 
 
 
29
 
30
- headers = {"authorization": f"Bearer ${HF_TOKEN}", "user-agent": USER_AGENT}
31
-
32
 
33
  client = Client(
34
  headers=headers,
@@ -99,9 +102,7 @@ def render_model_hub_link(hub_id):
99
  def get_datasets():
100
  return list(
101
  tqdm(
102
- iter(
103
- list_datasets(limit=LIMIT, full=True, sort="createdAt", direction=-1)
104
- )
105
  )
106
  )
107
 
@@ -130,7 +131,7 @@ columns_to_drop = [
130
  "_id",
131
  "private",
132
  "author",
133
- # "citation",
134
  "lastModified",
135
  ]
136
 
@@ -165,15 +166,22 @@ def filter_by_readme_len(df, min_len=None):
165
 
166
 
167
  def filter_df(max_age_days=None, min_len=None, needs_server_preview: bool = False):
168
- df = prep_dataframe()
169
- if needs_server_preview:
170
- df = df[df["server_preview"] == True]
171
- if max_age_days is not None:
172
- df = filter_df_by_max_age(df, max_age_days=max_age_days)
173
- if min_len is not None:
174
- df = filter_by_readme_len(df, min_len=min_len)
175
- df = df.sort_values(by=["likes", "downloads", "len"], ascending=False)
176
- return df
 
 
 
 
 
 
 
177
 
178
 
179
  with gr.Blocks() as demo:
@@ -204,21 +212,34 @@ with gr.Blocks() as demo:
204
  interactive=True,
205
  )
206
 
207
- output = gr.DataFrame(filter_df, datatype="markdown", min_width=160 * 2.5, height=1000)
208
- max_age_days.input(
209
- filter_df,
210
- inputs=[max_age_days, min_len, needs_server_preview],
211
- outputs=[output],
212
- )
213
- min_len.input(
214
- filter_df,
215
- inputs=[max_age_days, min_len, needs_server_preview],
216
- outputs=[output],
217
- )
218
- needs_server_preview.change(
219
- filter_df,
220
- inputs=[max_age_days, min_len, needs_server_preview],
221
- outputs=[output],
 
 
222
  )
223
 
 
 
 
 
 
 
 
 
 
 
 
224
  demo.launch()
 
26
  HF_TOKEN = os.getenv("HF_TOKEN")
27
  USER_AGENT = os.getenv("USER_AGENT")
28
 
29
+ if not HF_TOKEN or not USER_AGENT:
30
+ raise ValueError(
31
+ "Missing required environment variables. Please ensure both HF_TOKEN and USER_AGENT are set."
32
+ )
33
 
34
+ headers = {"authorization": f"Bearer {HF_TOKEN}", "user-agent": USER_AGENT}
 
35
 
36
  client = Client(
37
  headers=headers,
 
102
  def get_datasets():
103
  return list(
104
  tqdm(
105
+ iter(list_datasets(limit=LIMIT, full=True, sort="createdAt", direction=-1))
 
 
106
  )
107
  )
108
 
 
131
  "_id",
132
  "private",
133
  "author",
134
+ # "citation",
135
  "lastModified",
136
  ]
137
 
 
166
 
167
 
168
  def filter_df(max_age_days=None, min_len=None, needs_server_preview: bool = False):
169
+ try:
170
+ df = prep_dataframe()
171
+ if needs_server_preview:
172
+ df = df[df["server_preview"] == True]
173
+ if max_age_days is not None:
174
+ df = filter_df_by_max_age(df, max_age_days=max_age_days)
175
+ if min_len is not None:
176
+ df = filter_by_readme_len(df, min_len=min_len)
177
+ df = df.sort_values(by=["likes", "downloads", "len"], ascending=False)
178
+ return df
179
+ except Exception as e:
180
+ print(f"Error filtering dataframe: {str(e)}")
181
+ # Return empty dataframe with same columns if there's an error
182
+ return pd.DataFrame(
183
+ columns=["id", "likes", "downloads", "len", "createdAt", "server_preview"]
184
+ )
185
 
186
 
187
  with gr.Blocks() as demo:
 
212
  interactive=True,
213
  )
214
 
215
+ # gr.Markdown(
216
+ # """
217
+ # <style>
218
+ # #dataset_table {
219
+ # height: 1000px;
220
+ # overflow: auto;
221
+ # }
222
+ # </style>
223
+ # """
224
+ # )
225
+
226
+ output = gr.DataFrame(
227
+ value=filter_df(7, 300, False), # Set initial values explicitly
228
+ interactive=False,
229
+ datatype="markdown",
230
+ min_width=160 * 2.5,
231
+ elem_id="dataset_table",
232
  )
233
 
234
+ def update_df(age, length, preview):
235
+ return filter_df(age, length, preview)
236
+
237
+ # Use a single update function for all inputs
238
+ for component in [max_age_days, min_len, needs_server_preview]:
239
+ component.change(
240
+ fn=update_df,
241
+ inputs=[max_age_days, min_len, needs_server_preview],
242
+ outputs=[output],
243
+ )
244
+
245
  demo.launch()