lhoestq HF staff commited on
Commit
030df6f
Β·
1 Parent(s): 36212af
Files changed (1) hide show
  1. app.py +19 -4
app.py CHANGED
@@ -73,7 +73,7 @@ with gr.Blocks(css=css) as demo:
73
  loading_codes_json = gr.JSON([], visible=False)
74
  with gr.Row():
75
  with gr.Column():
76
- gr.Markdown("# πŸ€— (WIP) Hugging Face Dataset Spreadsheets πŸ“\n\nEdit any dataset on Hugging Face (full list <a href='https://huggingface.co/datasets' target='_blank'>here</a>)", elem_classes="centered")
77
  with gr.Group():
78
  with gr.Tab("Select Dataset"):
79
  with gr.Row():
@@ -155,7 +155,7 @@ with gr.Blocks(css=css) as demo:
155
  page_html: f"Page {page}",
156
  }
157
 
158
- @dataset_dropdown.select(inputs=[session_state, dataset_dropdown], outputs=[session_state, loading_codes_json, subset_dropdown, split_dropdown, dataframe, prev_button, next_button, page_html])
159
  def _show_subset_dropdown(session: str | None, dataset: str):
160
  subsets, loading_codes = show_subset_dropdown(dataset)
161
  splits = show_split_dropdown(subsets["value"], loading_codes)
@@ -168,12 +168,17 @@ with gr.Blocks(css=css) as demo:
168
  split_dropdown: gr.Dropdown(**splits),
169
  session_state: session,
170
  dataframe: gr.DataFrame(**input_dataframe),
 
 
 
 
 
171
  prev_button: gr.Button(interactive=False),
172
  next_button: gr.Button(elem_classes="", interactive=True) if len(input_dataframe["value"]) >= PAGE_SIZE else gr.Button(interactive=False),
173
  page_html: f"Page {page}",
174
  }
175
 
176
- @subset_dropdown.select(inputs=[dataset_dropdown, subset_dropdown, loading_codes_json], outputs=[session_state, split_dropdown, dataframe, prev_button, next_button, page_html])
177
  def _show_split_dropdown(dataset: str, subset: str, loading_codes: list[dict]):
178
  splits = show_split_dropdown(subset, loading_codes)
179
  session = f"{dataset.replace('/', '--')}--{subset}--{splits['value']}--{uuid4()}"
@@ -183,12 +188,17 @@ with gr.Blocks(css=css) as demo:
183
  split_dropdown: gr.Dropdown(**splits),
184
  session_state: session,
185
  dataframe: gr.DataFrame(**input_dataframe),
 
 
 
 
 
186
  prev_button: gr.Button(interactive=False),
187
  next_button: gr.Button(elem_classes="", interactive=True) if len(input_dataframe["value"]) >= PAGE_SIZE else gr.Button(interactive=False),
188
  page_html: f"Page {page}",
189
  }
190
 
191
- @split_dropdown.select(inputs=[dataset_dropdown, subset_dropdown, split_dropdown, loading_codes_json], outputs=[session_state, dataframe, prev_button, next_button, page_html])
192
  def _show_input_dataframe(dataset: str, subset: str, split: str, loading_codes: list[dict]) -> pd.DataFrame:
193
  session = f"{dataset.replace('/', '--')}--{subset}--{split}--{uuid4()}"
194
  page = 1
@@ -196,6 +206,11 @@ with gr.Blocks(css=css) as demo:
196
  return {
197
  session_state: session,
198
  dataframe: gr.DataFrame(**input_dataframe),
 
 
 
 
 
199
  prev_button: gr.Button(interactive=False),
200
  next_button: gr.Button(elem_classes="", interactive=True) if len(input_dataframe["value"]) >= PAGE_SIZE else gr.Button(interactive=False),
201
  page_html: f"Page {page}",
 
73
  loading_codes_json = gr.JSON([], visible=False)
74
  with gr.Row():
75
  with gr.Column():
76
+ gr.Markdown("# πŸ€— (WIP) Hugging Face Dataset Spreadsheets πŸ“\n\nEdit any Parquet dataset on Hugging Face (full list <a href='https://huggingface.co/datasets' target='_blank'>here</a>)", elem_classes="centered")
77
  with gr.Group():
78
  with gr.Tab("Select Dataset"):
79
  with gr.Row():
 
155
  page_html: f"Page {page}",
156
  }
157
 
158
+ @dataset_dropdown.select(inputs=[session_state, dataset_dropdown], outputs=[session_state, loading_codes_json, subset_dropdown, split_dropdown, dataframe, share_link_textbox, use_locally_markdown, prev_button, next_button, page_html])
159
  def _show_subset_dropdown(session: str | None, dataset: str):
160
  subsets, loading_codes = show_subset_dropdown(dataset)
161
  splits = show_split_dropdown(subsets["value"], loading_codes)
 
168
  split_dropdown: gr.Dropdown(**splits),
169
  session_state: session,
170
  dataframe: gr.DataFrame(**input_dataframe),
171
+ share_link_textbox: f"{APP_URL}?{SESSIONS_DIR}={session}",
172
+ use_locally_markdown: (
173
+ f"""In DuckDB:\n\n```sql\nATTACH '{HOST_URL}/gradio_api/file={SESSIONS_DIR}/{session}.duckdb AS db';\nUSE db;\nSELECT * FROM edited_dataset LIMIT 5;\n```\n\n"""
174
+ f"""In Python:\n\n```python\nimport duckdb\n\nduckdb.sql("ATTACH '{HOST_URL}/gradio_api/file={SESSIONS_DIR}/{session}.duckdb' AS db")\nduckdb.sql("USE db")\ndf = duckdb.sql("SELECT * FROM edited_dataset LIMIT 5").df()\n```"""
175
+ ),
176
  prev_button: gr.Button(interactive=False),
177
  next_button: gr.Button(elem_classes="", interactive=True) if len(input_dataframe["value"]) >= PAGE_SIZE else gr.Button(interactive=False),
178
  page_html: f"Page {page}",
179
  }
180
 
181
+ @subset_dropdown.select(inputs=[dataset_dropdown, subset_dropdown, loading_codes_json], outputs=[session_state, split_dropdown, dataframe, share_link_textbox, use_locally_markdown, prev_button, next_button, page_html])
182
  def _show_split_dropdown(dataset: str, subset: str, loading_codes: list[dict]):
183
  splits = show_split_dropdown(subset, loading_codes)
184
  session = f"{dataset.replace('/', '--')}--{subset}--{splits['value']}--{uuid4()}"
 
188
  split_dropdown: gr.Dropdown(**splits),
189
  session_state: session,
190
  dataframe: gr.DataFrame(**input_dataframe),
191
+ share_link_textbox: f"{APP_URL}?{SESSIONS_DIR}={session}",
192
+ use_locally_markdown: (
193
+ f"""In DuckDB:\n\n```sql\nATTACH '{HOST_URL}/gradio_api/file={SESSIONS_DIR}/{session}.duckdb AS db';\nUSE db;\nSELECT * FROM edited_dataset LIMIT 5;\n```\n\n"""
194
+ f"""In Python:\n\n```python\nimport duckdb\n\nduckdb.sql("ATTACH '{HOST_URL}/gradio_api/file={SESSIONS_DIR}/{session}.duckdb' AS db")\nduckdb.sql("USE db")\ndf = duckdb.sql("SELECT * FROM edited_dataset LIMIT 5").df()\n```"""
195
+ ),
196
  prev_button: gr.Button(interactive=False),
197
  next_button: gr.Button(elem_classes="", interactive=True) if len(input_dataframe["value"]) >= PAGE_SIZE else gr.Button(interactive=False),
198
  page_html: f"Page {page}",
199
  }
200
 
201
+ @split_dropdown.select(inputs=[dataset_dropdown, subset_dropdown, split_dropdown, loading_codes_json], outputs=[session_state, dataframe, share_link_textbox, use_locally_markdown, prev_button, next_button, page_html])
202
  def _show_input_dataframe(dataset: str, subset: str, split: str, loading_codes: list[dict]) -> pd.DataFrame:
203
  session = f"{dataset.replace('/', '--')}--{subset}--{split}--{uuid4()}"
204
  page = 1
 
206
  return {
207
  session_state: session,
208
  dataframe: gr.DataFrame(**input_dataframe),
209
+ share_link_textbox: f"{APP_URL}?{SESSIONS_DIR}={session}",
210
+ use_locally_markdown: (
211
+ f"""In DuckDB:\n\n```sql\nATTACH '{HOST_URL}/gradio_api/file={SESSIONS_DIR}/{session}.duckdb AS db';\nUSE db;\nSELECT * FROM edited_dataset LIMIT 5;\n```\n\n"""
212
+ f"""In Python:\n\n```python\nimport duckdb\n\nduckdb.sql("ATTACH '{HOST_URL}/gradio_api/file={SESSIONS_DIR}/{session}.duckdb' AS db")\nduckdb.sql("USE db")\ndf = duckdb.sql("SELECT * FROM edited_dataset LIMIT 5").df()\n```"""
213
+ ),
214
  prev_button: gr.Button(interactive=False),
215
  next_button: gr.Button(elem_classes="", interactive=True) if len(input_dataframe["value"]) >= PAGE_SIZE else gr.Button(interactive=False),
216
  page_html: f"Page {page}",