Team Ai
Apppublic

WalisonCruz/function-gemma

sourceHugging Faceupdated 10mo agoView on Hugging Face
0likes
files.py125 linesDownload Raw Back to ui
1"""The Files page for the Trackio UI."""2 3import os4from pathlib import Path5 6import gradio as gr7 8try:9    import trackio.utils as utils10    from trackio.ui import fns11except ImportError:12    import utils13    from ui import fns14 15 16def get_files_path(project: str | None) -> str | None:17    """Get the files directory path for a project. If the directory does not exist, returns None."""18    if not project:19        return None20    files_dir = utils.MEDIA_DIR / project / "files"21    if not files_dir.exists():22        return None23    return str(files_dir)24 25 26def update_file_explorer(project: str | None):27    """Update the file explorer based on the selected project."""28    files_path = get_files_path(project)29    if files_path:30        return gr.FileExplorer(root_dir=files_path, visible=True)31    else:32        return gr.FileExplorer(visible=False)33 34 35def extract_files(project: str, files_or_diectories: list[str | Path]):36    """Extract files from a list of files or directories."""37    files = []38    root_dir = Path(get_files_path(project))39    for file_or_directory in files_or_diectories:40        if os.path.isfile(file_or_directory):41            files.append(str(root_dir / file_or_directory))42    return files43 44 45with gr.Blocks() as files_page:46    with gr.Sidebar() as sidebar:47        logo_urls = utils.get_logo_urls()48        logo = gr.Markdown(49            f"""50                <img src='{logo_urls["light"]}' width='80%' class='logo-light'>51                <img src='{logo_urls["dark"]}' width='80%' class='logo-dark'>            52            """53        )54        project_dd = gr.Dropdown(label="Project", allow_custom_value=True)55 56    navbar = gr.Navbar(57        value=[58            ("Metrics", ""),59            ("Media & Tables", "/media"),60            ("Runs", "/runs"),61            ("Files", "/files"),62        ],63        main_page_name=False,64    )65    timer = gr.Timer(value=1)66 67    gr.Markdown("## Files")68    file_explorer = gr.FileExplorer(label="Uploaded Files", visible=False)69    file_downloader = gr.Files(label="Download Selected Files")70 71    gr.on(72        [timer.tick],73        fn=lambda: gr.Dropdown(info=fns.get_project_info()),74        outputs=[project_dd],75        show_progress="hidden",76        api_visibility="private",77    )78 79    gr.on(80        [files_page.load],81        fn=fns.get_projects,82        outputs=project_dd,83        show_progress="hidden",84        queue=False,85        api_visibility="private",86    ).then(87        fn=update_file_explorer,88        inputs=[project_dd],89        outputs=[file_explorer],90        show_progress="hidden",91        api_visibility="private",92        queue=False,93    ).then(94        fns.update_navbar_value,95        inputs=[project_dd],96        outputs=[navbar],97        show_progress="hidden",98        api_visibility="private",99        queue=False,100    )101 102    gr.on(103        [project_dd.change],104        fn=update_file_explorer,105        inputs=[project_dd],106        outputs=[file_explorer],107        show_progress="hidden",108        api_visibility="private",109        queue=False,110    ).then(111        fns.update_navbar_value,112        inputs=[project_dd],113        outputs=[navbar],114        show_progress="hidden",115        api_visibility="private",116        queue=False,117    )118 119    gr.on(120        [file_explorer.change],121        fn=extract_files,122        inputs=[project_dd, file_explorer],123        outputs=[file_downloader],124    )125