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() | |