Spaces:
Running
Running
| import gradio as gr | |
| import requests | |
| from huggingface_hub import HfApi | |
| session = requests.Session() | |
| css = """ | |
| @media (prefers-color-scheme: dark) { | |
| .transparent-dropdown, .transparent-dropdown .container .wrap { | |
| background: var(--bg-dark); | |
| } | |
| } | |
| @media (prefers-color-scheme: light) { | |
| .transparent-dropdown, .transparent-dropdown .container .wrap { | |
| background: var(--bg); | |
| } | |
| } | |
| """ | |
| with gr.Blocks(css=css) as demo: | |
| with gr.Row(): | |
| with gr.Column(scale=4): | |
| with gr.Group(): | |
| dataset_dropdown = gr.Dropdown(label="Dataset", allow_custom_value=True, interactive=True) | |
| with gr.Row(): | |
| subset_dropdown = gr.Dropdown(info="Subset", show_label=False, visible=False, elem_classes="transparent-dropdown") | |
| split_dropdown = gr.Dropdown(info="Split", show_label=False, visible=False, elem_classes="transparent-dropdown") | |
| gr.LoginButton() | |
| loading_codes_json = gr.JSON(visible=False) | |
| dataset_subset_split_textbox = gr.Textbox(visible=False) | |
| dataframe = gr.DataFrame() | |
| def fetch_datasets(request: gr.Request, oauth_token: gr.OAuthToken | None): | |
| api = HfApi(token=oauth_token.token if oauth_token else None) | |
| datasets = list(api.list_datasets(limit=3, sort="trendingScore", direction=-1, filter=["format:parquet"])) | |
| if oauth_token and (user := api.whoami().get("user")): | |
| datasets += list(api.list_datasets(limit=3, sort="trendingScore", direction=-1, filter=["format:parquet"], author=user)) | |
| dataset = request.query_params.get("dataset") or datasets[0].id | |
| return {dataset_dropdown: gr.Dropdown(choices=[dataset.id for dataset in datasets], value=dataset)} | |
| def fetch_read_parquet_loading(dataset: str): | |
| if "/" not in dataset.strip().strip("/"): | |
| return [] | |
| resp = session.get(f"https://datasets-server.huggingface.co/compatible-libraries?dataset={dataset}", timeout=3).json() | |
| return ([lib["loading_codes"] for lib in resp.get("libraries", []) if lib["function"] == "dd.read_parquet"] or [[]])[0] or [] | |
| def show_subset_dropdown(loading_codes: list[dict]): | |
| subsets = [loading_code["config_name"] for loading_code in loading_codes] | |
| subset = (subsets or [""])[0] | |
| splits = ([list(loading_code["arguments"]["splits"]) for loading_code in loading_codes if loading_code["config_name"] == subset] or [[]])[0] | |
| split = (splits or [""])[0] | |
| return gr.Dropdown(subsets, value=subset, visible=len(subsets) > 1), gr.Dropdown(splits, value=split, visible=len(splits) > 1) | |
| def show_split_dropdown(loading_codes: list[dict], subset: str): | |
| splits = ([list(loading_code["arguments"]["splits"]) for loading_code in loading_codes if loading_code["config_name"] == subset] or [[]])[0] | |
| split = (splits or [""])[0] | |
| return gr.Dropdown(splits, value=split, visible=len(splits) > 1) | |
| if __name__ == "__main__": | |
| demo.launch() | |