Spaces:
				
			
			
	
			
			
					
		Running
		
	
	
	
			
			
	
	
	
	
		
		
					
		Running
		
	fix private dataset accessibility
Browse files- .gitignore +6 -0
- Dockerfile +5 -3
- README.md +3 -3
- client/src/config/api.js +6 -4
- server/poetry.lock +344 -1
- server/pyproject.toml +2 -0
- server/server.py +76 -1
    	
        .gitignore
    CHANGED
    
    | @@ -36,3 +36,9 @@ server/data/leaderboards_list.json | |
| 36 | 
             
            server/data/leaderboards_results.json
         | 
| 37 | 
             
            server/data/leaderboards_runtime.json
         | 
| 38 |  | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | 
|  | |
| 36 | 
             
            server/data/leaderboards_results.json
         | 
| 37 | 
             
            server/data/leaderboards_runtime.json
         | 
| 38 |  | 
| 39 | 
            +
            # Cache directories
         | 
| 40 | 
            +
            cache/
         | 
| 41 | 
            +
            server/cache/
         | 
| 42 | 
            +
            **/cache/
         | 
| 43 | 
            +
            .cache
         | 
| 44 | 
            +
             | 
    	
        Dockerfile
    CHANGED
    
    | @@ -14,6 +14,7 @@ RUN useradd -m -u 1000 user | |
| 14 | 
             
            # Install system dependencies and poetry
         | 
| 15 | 
             
            RUN apt-get update && apt-get install -y \
         | 
| 16 | 
             
                netcat-openbsd \
         | 
|  | |
| 17 | 
             
                && rm -rf /var/lib/apt/lists/* \
         | 
| 18 | 
             
                && pip install poetry
         | 
| 19 |  | 
| @@ -30,10 +31,11 @@ COPY --from=client-build /app/dist ./static | |
| 30 |  | 
| 31 | 
             
            # Environment variables
         | 
| 32 | 
             
            ENV API_HOST=0.0.0.0 \
         | 
| 33 | 
            -
                API_PORT=7860
         | 
|  | |
| 34 |  | 
| 35 | 
            -
            # Create cache  | 
| 36 | 
            -
            RUN mkdir -p /app/cache && chown -R user:user /app/cache
         | 
| 37 |  | 
| 38 | 
             
            # Switch to non-root user
         | 
| 39 | 
             
            USER user
         | 
|  | |
| 14 | 
             
            # Install system dependencies and poetry
         | 
| 15 | 
             
            RUN apt-get update && apt-get install -y \
         | 
| 16 | 
             
                netcat-openbsd \
         | 
| 17 | 
            +
                git \
         | 
| 18 | 
             
                && rm -rf /var/lib/apt/lists/* \
         | 
| 19 | 
             
                && pip install poetry
         | 
| 20 |  | 
|  | |
| 31 |  | 
| 32 | 
             
            # Environment variables
         | 
| 33 | 
             
            ENV API_HOST=0.0.0.0 \
         | 
| 34 | 
            +
                API_PORT=7860 \
         | 
| 35 | 
            +
                HF_HOME=/app/cache/huggingface
         | 
| 36 |  | 
| 37 | 
            +
            # Create cache directories and set permissions
         | 
| 38 | 
            +
            RUN mkdir -p /app/cache/huggingface && chown -R user:user /app/cache
         | 
| 39 |  | 
| 40 | 
             
            # Switch to non-root user
         | 
| 41 | 
             
            USER user
         | 
    	
        README.md
    CHANGED
    
    | @@ -5,7 +5,7 @@ colorFrom: indigo | |
| 5 | 
             
            colorTo: purple
         | 
| 6 | 
             
            sdk: docker
         | 
| 7 | 
             
            hf_oauth: false
         | 
| 8 | 
            -
            pinned:  | 
| 9 | 
             
            license: apache-2.0
         | 
| 10 | 
             
            app_port: 7860
         | 
| 11 | 
             
            tags:
         | 
| @@ -31,8 +31,8 @@ An application to explore and discover all leaderboards from the Hugging Face co | |
| 31 |  | 
| 32 | 
             
            ```bash
         | 
| 33 | 
             
            cd client
         | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 36 | 
             
            ```
         | 
| 37 |  | 
| 38 | 
             
            2. Install server dependencies:
         | 
|  | |
| 5 | 
             
            colorTo: purple
         | 
| 6 | 
             
            sdk: docker
         | 
| 7 | 
             
            hf_oauth: false
         | 
| 8 | 
            +
            pinned: true
         | 
| 9 | 
             
            license: apache-2.0
         | 
| 10 | 
             
            app_port: 7860
         | 
| 11 | 
             
            tags:
         | 
|  | |
| 31 |  | 
| 32 | 
             
            ```bash
         | 
| 33 | 
             
            cd client
         | 
| 34 | 
            +
            nvm use 20; yarn install
         | 
| 35 | 
            +
            yarn run dev
         | 
| 36 | 
             
            ```
         | 
| 37 |  | 
| 38 | 
             
            2. Install server dependencies:
         | 
    	
        client/src/config/api.js
    CHANGED
    
    | @@ -1,9 +1,11 @@ | |
| 1 | 
            -
            // URL  | 
| 2 | 
            -
            const  | 
| 3 | 
            -
               | 
|  | |
|  | |
| 4 |  | 
| 5 | 
             
            export const API_URLS = {
         | 
| 6 | 
            -
              leaderboards:  | 
| 7 | 
             
            };
         | 
| 8 |  | 
| 9 | 
             
            export default API_URLS;
         | 
|  | |
| 1 | 
            +
            // URL de l'API
         | 
| 2 | 
            +
            const API_BASE_URL =
         | 
| 3 | 
            +
              process.env.NODE_ENV === "production"
         | 
| 4 | 
            +
                ? "" // En production, utilise le même domaine
         | 
| 5 | 
            +
                : "http://localhost:3002";
         | 
| 6 |  | 
| 7 | 
             
            export const API_URLS = {
         | 
| 8 | 
            +
              leaderboards: `${API_BASE_URL}/api/leaderboards`,
         | 
| 9 | 
             
            };
         | 
| 10 |  | 
| 11 | 
             
            export default API_URLS;
         | 
    	
        server/poetry.lock
    CHANGED
    
    | @@ -1,5 +1,16 @@ | |
| 1 | 
             
            # This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand.
         | 
| 2 |  | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 3 | 
             
            [[package]]
         | 
| 4 | 
             
            name = "annotated-types"
         | 
| 5 | 
             
            version = "0.7.0"
         | 
| @@ -33,6 +44,118 @@ doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", | |
| 33 | 
             
            test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21)"]
         | 
| 34 | 
             
            trio = ["trio (>=0.26.1)"]
         | 
| 35 |  | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 36 | 
             
            [[package]]
         | 
| 37 | 
             
            name = "click"
         | 
| 38 | 
             
            version = "8.1.8"
         | 
| @@ -91,6 +214,61 @@ typing-extensions = ">=4.8.0" | |
| 91 | 
             
            [package.extras]
         | 
| 92 | 
             
            all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.7)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"]
         | 
| 93 |  | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 94 | 
             
            [[package]]
         | 
| 95 | 
             
            name = "h11"
         | 
| 96 | 
             
            version = "0.14.0"
         | 
| @@ -102,6 +280,39 @@ files = [ | |
| 102 | 
             
                {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"},
         | 
| 103 | 
             
            ]
         | 
| 104 |  | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 105 | 
             
            [[package]]
         | 
| 106 | 
             
            name = "idna"
         | 
| 107 | 
             
            version = "3.10"
         | 
| @@ -116,6 +327,17 @@ files = [ | |
| 116 | 
             
            [package.extras]
         | 
| 117 | 
             
            all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"]
         | 
| 118 |  | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 119 | 
             
            [[package]]
         | 
| 120 | 
             
            name = "pydantic"
         | 
| 121 | 
             
            version = "2.10.6"
         | 
| @@ -262,6 +484,89 @@ files = [ | |
| 262 | 
             
            [package.extras]
         | 
| 263 | 
             
            cli = ["click (>=5.0)"]
         | 
| 264 |  | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 265 | 
             
            [[package]]
         | 
| 266 | 
             
            name = "sniffio"
         | 
| 267 | 
             
            version = "1.3.1"
         | 
| @@ -291,6 +596,27 @@ typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\"" | |
| 291 | 
             
            [package.extras]
         | 
| 292 | 
             
            full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"]
         | 
| 293 |  | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 294 | 
             
            [[package]]
         | 
| 295 | 
             
            name = "typing-extensions"
         | 
| 296 | 
             
            version = "4.12.2"
         | 
| @@ -302,6 +628,23 @@ files = [ | |
| 302 | 
             
                {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"},
         | 
| 303 | 
             
            ]
         | 
| 304 |  | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 305 | 
             
            [[package]]
         | 
| 306 | 
             
            name = "uvicorn"
         | 
| 307 | 
             
            version = "0.27.1"
         | 
| @@ -324,4 +667,4 @@ standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", | |
| 324 | 
             
            [metadata]
         | 
| 325 | 
             
            lock-version = "2.0"
         | 
| 326 | 
             
            python-versions = "^3.9"
         | 
| 327 | 
            -
            content-hash = " | 
|  | |
| 1 | 
             
            # This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand.
         | 
| 2 |  | 
| 3 | 
            +
            [[package]]
         | 
| 4 | 
            +
            name = "aiofiles"
         | 
| 5 | 
            +
            version = "24.1.0"
         | 
| 6 | 
            +
            description = "File support for asyncio."
         | 
| 7 | 
            +
            optional = false
         | 
| 8 | 
            +
            python-versions = ">=3.8"
         | 
| 9 | 
            +
            files = [
         | 
| 10 | 
            +
                {file = "aiofiles-24.1.0-py3-none-any.whl", hash = "sha256:b4ec55f4195e3eb5d7abd1bf7e061763e864dd4954231fb8539a0ef8bb8260e5"},
         | 
| 11 | 
            +
                {file = "aiofiles-24.1.0.tar.gz", hash = "sha256:22a075c9e5a3810f0c2e48f3008c94d68c65d763b9b03857924c99e57355166c"},
         | 
| 12 | 
            +
            ]
         | 
| 13 | 
            +
             | 
| 14 | 
             
            [[package]]
         | 
| 15 | 
             
            name = "annotated-types"
         | 
| 16 | 
             
            version = "0.7.0"
         | 
|  | |
| 44 | 
             
            test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21)"]
         | 
| 45 | 
             
            trio = ["trio (>=0.26.1)"]
         | 
| 46 |  | 
| 47 | 
            +
            [[package]]
         | 
| 48 | 
            +
            name = "certifi"
         | 
| 49 | 
            +
            version = "2025.1.31"
         | 
| 50 | 
            +
            description = "Python package for providing Mozilla's CA Bundle."
         | 
| 51 | 
            +
            optional = false
         | 
| 52 | 
            +
            python-versions = ">=3.6"
         | 
| 53 | 
            +
            files = [
         | 
| 54 | 
            +
                {file = "certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"},
         | 
| 55 | 
            +
                {file = "certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651"},
         | 
| 56 | 
            +
            ]
         | 
| 57 | 
            +
             | 
| 58 | 
            +
            [[package]]
         | 
| 59 | 
            +
            name = "charset-normalizer"
         | 
| 60 | 
            +
            version = "3.4.1"
         | 
| 61 | 
            +
            description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
         | 
| 62 | 
            +
            optional = false
         | 
| 63 | 
            +
            python-versions = ">=3.7"
         | 
| 64 | 
            +
            files = [
         | 
| 65 | 
            +
                {file = "charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de"},
         | 
| 66 | 
            +
                {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176"},
         | 
| 67 | 
            +
                {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037"},
         | 
| 68 | 
            +
                {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f"},
         | 
| 69 | 
            +
                {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a"},
         | 
| 70 | 
            +
                {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a"},
         | 
| 71 | 
            +
                {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247"},
         | 
| 72 | 
            +
                {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408"},
         | 
| 73 | 
            +
                {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb"},
         | 
| 74 | 
            +
                {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d"},
         | 
| 75 | 
            +
                {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807"},
         | 
| 76 | 
            +
                {file = "charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f"},
         | 
| 77 | 
            +
                {file = "charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f"},
         | 
| 78 | 
            +
                {file = "charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125"},
         | 
| 79 | 
            +
                {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1"},
         | 
| 80 | 
            +
                {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3"},
         | 
| 81 | 
            +
                {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd"},
         | 
| 82 | 
            +
                {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00"},
         | 
| 83 | 
            +
                {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12"},
         | 
| 84 | 
            +
                {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77"},
         | 
| 85 | 
            +
                {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146"},
         | 
| 86 | 
            +
                {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd"},
         | 
| 87 | 
            +
                {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6"},
         | 
| 88 | 
            +
                {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8"},
         | 
| 89 | 
            +
                {file = "charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b"},
         | 
| 90 | 
            +
                {file = "charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76"},
         | 
| 91 | 
            +
                {file = "charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545"},
         | 
| 92 | 
            +
                {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7"},
         | 
| 93 | 
            +
                {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757"},
         | 
| 94 | 
            +
                {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa"},
         | 
| 95 | 
            +
                {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d"},
         | 
| 96 | 
            +
                {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616"},
         | 
| 97 | 
            +
                {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b"},
         | 
| 98 | 
            +
                {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d"},
         | 
| 99 | 
            +
                {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a"},
         | 
| 100 | 
            +
                {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9"},
         | 
| 101 | 
            +
                {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1"},
         | 
| 102 | 
            +
                {file = "charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35"},
         | 
| 103 | 
            +
                {file = "charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f"},
         | 
| 104 | 
            +
                {file = "charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda"},
         | 
| 105 | 
            +
                {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313"},
         | 
| 106 | 
            +
                {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9"},
         | 
| 107 | 
            +
                {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b"},
         | 
| 108 | 
            +
                {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11"},
         | 
| 109 | 
            +
                {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f"},
         | 
| 110 | 
            +
                {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd"},
         | 
| 111 | 
            +
                {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2"},
         | 
| 112 | 
            +
                {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886"},
         | 
| 113 | 
            +
                {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601"},
         | 
| 114 | 
            +
                {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd"},
         | 
| 115 | 
            +
                {file = "charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407"},
         | 
| 116 | 
            +
                {file = "charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971"},
         | 
| 117 | 
            +
                {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f30bf9fd9be89ecb2360c7d94a711f00c09b976258846efe40db3d05828e8089"},
         | 
| 118 | 
            +
                {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:97f68b8d6831127e4787ad15e6757232e14e12060bec17091b85eb1486b91d8d"},
         | 
| 119 | 
            +
                {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7974a0b5ecd505609e3b19742b60cee7aa2aa2fb3151bc917e6e2646d7667dcf"},
         | 
| 120 | 
            +
                {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc54db6c8593ef7d4b2a331b58653356cf04f67c960f584edb7c3d8c97e8f39e"},
         | 
| 121 | 
            +
                {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:311f30128d7d333eebd7896965bfcfbd0065f1716ec92bd5638d7748eb6f936a"},
         | 
| 122 | 
            +
                {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:7d053096f67cd1241601111b698f5cad775f97ab25d81567d3f59219b5f1adbd"},
         | 
| 123 | 
            +
                {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:807f52c1f798eef6cf26beb819eeb8819b1622ddfeef9d0977a8502d4db6d534"},
         | 
| 124 | 
            +
                {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:dccbe65bd2f7f7ec22c4ff99ed56faa1e9f785482b9bbd7c717e26fd723a1d1e"},
         | 
| 125 | 
            +
                {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:2fb9bd477fdea8684f78791a6de97a953c51831ee2981f8e4f583ff3b9d9687e"},
         | 
| 126 | 
            +
                {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:01732659ba9b5b873fc117534143e4feefecf3b2078b0a6a2e925271bb6f4cfa"},
         | 
| 127 | 
            +
                {file = "charset_normalizer-3.4.1-cp37-cp37m-win32.whl", hash = "sha256:7a4f97a081603d2050bfaffdefa5b02a9ec823f8348a572e39032caa8404a487"},
         | 
| 128 | 
            +
                {file = "charset_normalizer-3.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7b1bef6280950ee6c177b326508f86cad7ad4dff12454483b51d8b7d673a2c5d"},
         | 
| 129 | 
            +
                {file = "charset_normalizer-3.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ecddf25bee22fe4fe3737a399d0d177d72bc22be6913acfab364b40bce1ba83c"},
         | 
| 130 | 
            +
                {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c60ca7339acd497a55b0ea5d506b2a2612afb2826560416f6894e8b5770d4a9"},
         | 
| 131 | 
            +
                {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b7b2d86dd06bfc2ade3312a83a5c364c7ec2e3498f8734282c6c3d4b07b346b8"},
         | 
| 132 | 
            +
                {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd78cfcda14a1ef52584dbb008f7ac81c1328c0f58184bf9a84c49c605002da6"},
         | 
| 133 | 
            +
                {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e27f48bcd0957c6d4cb9d6fa6b61d192d0b13d5ef563e5f2ae35feafc0d179c"},
         | 
| 134 | 
            +
                {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01ad647cdd609225c5350561d084b42ddf732f4eeefe6e678765636791e78b9a"},
         | 
| 135 | 
            +
                {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:619a609aa74ae43d90ed2e89bdd784765de0a25ca761b93e196d938b8fd1dbbd"},
         | 
| 136 | 
            +
                {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:89149166622f4db9b4b6a449256291dc87a99ee53151c74cbd82a53c8c2f6ccd"},
         | 
| 137 | 
            +
                {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:7709f51f5f7c853f0fb938bcd3bc59cdfdc5203635ffd18bf354f6967ea0f824"},
         | 
| 138 | 
            +
                {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:345b0426edd4e18138d6528aed636de7a9ed169b4aaf9d61a8c19e39d26838ca"},
         | 
| 139 | 
            +
                {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0907f11d019260cdc3f94fbdb23ff9125f6b5d1039b76003b5b0ac9d6a6c9d5b"},
         | 
| 140 | 
            +
                {file = "charset_normalizer-3.4.1-cp38-cp38-win32.whl", hash = "sha256:ea0d8d539afa5eb2728aa1932a988a9a7af94f18582ffae4bc10b3fbdad0626e"},
         | 
| 141 | 
            +
                {file = "charset_normalizer-3.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:329ce159e82018d646c7ac45b01a430369d526569ec08516081727a20e9e4af4"},
         | 
| 142 | 
            +
                {file = "charset_normalizer-3.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41"},
         | 
| 143 | 
            +
                {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f"},
         | 
| 144 | 
            +
                {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2"},
         | 
| 145 | 
            +
                {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770"},
         | 
| 146 | 
            +
                {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4"},
         | 
| 147 | 
            +
                {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537"},
         | 
| 148 | 
            +
                {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496"},
         | 
| 149 | 
            +
                {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78"},
         | 
| 150 | 
            +
                {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7"},
         | 
| 151 | 
            +
                {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6"},
         | 
| 152 | 
            +
                {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294"},
         | 
| 153 | 
            +
                {file = "charset_normalizer-3.4.1-cp39-cp39-win32.whl", hash = "sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5"},
         | 
| 154 | 
            +
                {file = "charset_normalizer-3.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765"},
         | 
| 155 | 
            +
                {file = "charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85"},
         | 
| 156 | 
            +
                {file = "charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3"},
         | 
| 157 | 
            +
            ]
         | 
| 158 | 
            +
             | 
| 159 | 
             
            [[package]]
         | 
| 160 | 
             
            name = "click"
         | 
| 161 | 
             
            version = "8.1.8"
         | 
|  | |
| 214 | 
             
            [package.extras]
         | 
| 215 | 
             
            all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.7)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"]
         | 
| 216 |  | 
| 217 | 
            +
            [[package]]
         | 
| 218 | 
            +
            name = "filelock"
         | 
| 219 | 
            +
            version = "3.17.0"
         | 
| 220 | 
            +
            description = "A platform independent file lock."
         | 
| 221 | 
            +
            optional = false
         | 
| 222 | 
            +
            python-versions = ">=3.9"
         | 
| 223 | 
            +
            files = [
         | 
| 224 | 
            +
                {file = "filelock-3.17.0-py3-none-any.whl", hash = "sha256:533dc2f7ba78dc2f0f531fc6c4940addf7b70a481e269a5a3b93be94ffbe8338"},
         | 
| 225 | 
            +
                {file = "filelock-3.17.0.tar.gz", hash = "sha256:ee4e77401ef576ebb38cd7f13b9b28893194acc20a8e68e18730ba9c0e54660e"},
         | 
| 226 | 
            +
            ]
         | 
| 227 | 
            +
             | 
| 228 | 
            +
            [package.extras]
         | 
| 229 | 
            +
            docs = ["furo (>=2024.8.6)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"]
         | 
| 230 | 
            +
            testing = ["covdefaults (>=2.3)", "coverage (>=7.6.10)", "diff-cover (>=9.2.1)", "pytest (>=8.3.4)", "pytest-asyncio (>=0.25.2)", "pytest-cov (>=6)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.28.1)"]
         | 
| 231 | 
            +
            typing = ["typing-extensions (>=4.12.2)"]
         | 
| 232 | 
            +
             | 
| 233 | 
            +
            [[package]]
         | 
| 234 | 
            +
            name = "fsspec"
         | 
| 235 | 
            +
            version = "2025.2.0"
         | 
| 236 | 
            +
            description = "File-system specification"
         | 
| 237 | 
            +
            optional = false
         | 
| 238 | 
            +
            python-versions = ">=3.8"
         | 
| 239 | 
            +
            files = [
         | 
| 240 | 
            +
                {file = "fsspec-2025.2.0-py3-none-any.whl", hash = "sha256:9de2ad9ce1f85e1931858535bc882543171d197001a0a5eb2ddc04f1781ab95b"},
         | 
| 241 | 
            +
                {file = "fsspec-2025.2.0.tar.gz", hash = "sha256:1c24b16eaa0a1798afa0337aa0db9b256718ab2a89c425371f5628d22c3b6afd"},
         | 
| 242 | 
            +
            ]
         | 
| 243 | 
            +
             | 
| 244 | 
            +
            [package.extras]
         | 
| 245 | 
            +
            abfs = ["adlfs"]
         | 
| 246 | 
            +
            adl = ["adlfs"]
         | 
| 247 | 
            +
            arrow = ["pyarrow (>=1)"]
         | 
| 248 | 
            +
            dask = ["dask", "distributed"]
         | 
| 249 | 
            +
            dev = ["pre-commit", "ruff"]
         | 
| 250 | 
            +
            doc = ["numpydoc", "sphinx", "sphinx-design", "sphinx-rtd-theme", "yarl"]
         | 
| 251 | 
            +
            dropbox = ["dropbox", "dropboxdrivefs", "requests"]
         | 
| 252 | 
            +
            full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"]
         | 
| 253 | 
            +
            fuse = ["fusepy"]
         | 
| 254 | 
            +
            gcs = ["gcsfs"]
         | 
| 255 | 
            +
            git = ["pygit2"]
         | 
| 256 | 
            +
            github = ["requests"]
         | 
| 257 | 
            +
            gs = ["gcsfs"]
         | 
| 258 | 
            +
            gui = ["panel"]
         | 
| 259 | 
            +
            hdfs = ["pyarrow (>=1)"]
         | 
| 260 | 
            +
            http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)"]
         | 
| 261 | 
            +
            libarchive = ["libarchive-c"]
         | 
| 262 | 
            +
            oci = ["ocifs"]
         | 
| 263 | 
            +
            s3 = ["s3fs"]
         | 
| 264 | 
            +
            sftp = ["paramiko"]
         | 
| 265 | 
            +
            smb = ["smbprotocol"]
         | 
| 266 | 
            +
            ssh = ["paramiko"]
         | 
| 267 | 
            +
            test = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "numpy", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "requests"]
         | 
| 268 | 
            +
            test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask[dataframe,test]", "moto[server] (>4,<5)", "pytest-timeout", "xarray"]
         | 
| 269 | 
            +
            test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard"]
         | 
| 270 | 
            +
            tqdm = ["tqdm"]
         | 
| 271 | 
            +
             | 
| 272 | 
             
            [[package]]
         | 
| 273 | 
             
            name = "h11"
         | 
| 274 | 
             
            version = "0.14.0"
         | 
|  | |
| 280 | 
             
                {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"},
         | 
| 281 | 
             
            ]
         | 
| 282 |  | 
| 283 | 
            +
            [[package]]
         | 
| 284 | 
            +
            name = "huggingface-hub"
         | 
| 285 | 
            +
            version = "0.21.4"
         | 
| 286 | 
            +
            description = "Client library to download and publish models, datasets and other repos on the huggingface.co hub"
         | 
| 287 | 
            +
            optional = false
         | 
| 288 | 
            +
            python-versions = ">=3.8.0"
         | 
| 289 | 
            +
            files = [
         | 
| 290 | 
            +
                {file = "huggingface_hub-0.21.4-py3-none-any.whl", hash = "sha256:df37c2c37fc6c82163cdd8a67ede261687d80d1e262526d6c0ce73b6b3630a7b"},
         | 
| 291 | 
            +
                {file = "huggingface_hub-0.21.4.tar.gz", hash = "sha256:e1f4968c93726565a80edf6dc309763c7b546d0cfe79aa221206034d50155531"},
         | 
| 292 | 
            +
            ]
         | 
| 293 | 
            +
             | 
| 294 | 
            +
            [package.dependencies]
         | 
| 295 | 
            +
            filelock = "*"
         | 
| 296 | 
            +
            fsspec = ">=2023.5.0"
         | 
| 297 | 
            +
            packaging = ">=20.9"
         | 
| 298 | 
            +
            pyyaml = ">=5.1"
         | 
| 299 | 
            +
            requests = "*"
         | 
| 300 | 
            +
            tqdm = ">=4.42.1"
         | 
| 301 | 
            +
            typing-extensions = ">=3.7.4.3"
         | 
| 302 | 
            +
             | 
| 303 | 
            +
            [package.extras]
         | 
| 304 | 
            +
            all = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "gradio", "jedi", "mypy (==1.5.1)", "numpy", "pydantic (>1.1,<2.0)", "pydantic (>1.1,<3.0)", "pytest", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.1.3)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"]
         | 
| 305 | 
            +
            cli = ["InquirerPy (==0.3.4)"]
         | 
| 306 | 
            +
            dev = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "gradio", "jedi", "mypy (==1.5.1)", "numpy", "pydantic (>1.1,<2.0)", "pydantic (>1.1,<3.0)", "pytest", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.1.3)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"]
         | 
| 307 | 
            +
            fastai = ["fastai (>=2.4)", "fastcore (>=1.3.27)", "toml"]
         | 
| 308 | 
            +
            hf-transfer = ["hf-transfer (>=0.1.4)"]
         | 
| 309 | 
            +
            inference = ["aiohttp", "pydantic (>1.1,<2.0)", "pydantic (>1.1,<3.0)"]
         | 
| 310 | 
            +
            quality = ["mypy (==1.5.1)", "ruff (>=0.1.3)"]
         | 
| 311 | 
            +
            tensorflow = ["graphviz", "pydot", "tensorflow"]
         | 
| 312 | 
            +
            testing = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "gradio", "jedi", "numpy", "pydantic (>1.1,<2.0)", "pydantic (>1.1,<3.0)", "pytest", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "soundfile", "urllib3 (<2.0)"]
         | 
| 313 | 
            +
            torch = ["safetensors", "torch"]
         | 
| 314 | 
            +
            typing = ["types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)"]
         | 
| 315 | 
            +
             | 
| 316 | 
             
            [[package]]
         | 
| 317 | 
             
            name = "idna"
         | 
| 318 | 
             
            version = "3.10"
         | 
|  | |
| 327 | 
             
            [package.extras]
         | 
| 328 | 
             
            all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"]
         | 
| 329 |  | 
| 330 | 
            +
            [[package]]
         | 
| 331 | 
            +
            name = "packaging"
         | 
| 332 | 
            +
            version = "24.2"
         | 
| 333 | 
            +
            description = "Core utilities for Python packages"
         | 
| 334 | 
            +
            optional = false
         | 
| 335 | 
            +
            python-versions = ">=3.8"
         | 
| 336 | 
            +
            files = [
         | 
| 337 | 
            +
                {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"},
         | 
| 338 | 
            +
                {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"},
         | 
| 339 | 
            +
            ]
         | 
| 340 | 
            +
             | 
| 341 | 
             
            [[package]]
         | 
| 342 | 
             
            name = "pydantic"
         | 
| 343 | 
             
            version = "2.10.6"
         | 
|  | |
| 484 | 
             
            [package.extras]
         | 
| 485 | 
             
            cli = ["click (>=5.0)"]
         | 
| 486 |  | 
| 487 | 
            +
            [[package]]
         | 
| 488 | 
            +
            name = "pyyaml"
         | 
| 489 | 
            +
            version = "6.0.2"
         | 
| 490 | 
            +
            description = "YAML parser and emitter for Python"
         | 
| 491 | 
            +
            optional = false
         | 
| 492 | 
            +
            python-versions = ">=3.8"
         | 
| 493 | 
            +
            files = [
         | 
| 494 | 
            +
                {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"},
         | 
| 495 | 
            +
                {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"},
         | 
| 496 | 
            +
                {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"},
         | 
| 497 | 
            +
                {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"},
         | 
| 498 | 
            +
                {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"},
         | 
| 499 | 
            +
                {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"},
         | 
| 500 | 
            +
                {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"},
         | 
| 501 | 
            +
                {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"},
         | 
| 502 | 
            +
                {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"},
         | 
| 503 | 
            +
                {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"},
         | 
| 504 | 
            +
                {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"},
         | 
| 505 | 
            +
                {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"},
         | 
| 506 | 
            +
                {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"},
         | 
| 507 | 
            +
                {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"},
         | 
| 508 | 
            +
                {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"},
         | 
| 509 | 
            +
                {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"},
         | 
| 510 | 
            +
                {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"},
         | 
| 511 | 
            +
                {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"},
         | 
| 512 | 
            +
                {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"},
         | 
| 513 | 
            +
                {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"},
         | 
| 514 | 
            +
                {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"},
         | 
| 515 | 
            +
                {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"},
         | 
| 516 | 
            +
                {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"},
         | 
| 517 | 
            +
                {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"},
         | 
| 518 | 
            +
                {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"},
         | 
| 519 | 
            +
                {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"},
         | 
| 520 | 
            +
                {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"},
         | 
| 521 | 
            +
                {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"},
         | 
| 522 | 
            +
                {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"},
         | 
| 523 | 
            +
                {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"},
         | 
| 524 | 
            +
                {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"},
         | 
| 525 | 
            +
                {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"},
         | 
| 526 | 
            +
                {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"},
         | 
| 527 | 
            +
                {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"},
         | 
| 528 | 
            +
                {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"},
         | 
| 529 | 
            +
                {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"},
         | 
| 530 | 
            +
                {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"},
         | 
| 531 | 
            +
                {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"},
         | 
| 532 | 
            +
                {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"},
         | 
| 533 | 
            +
                {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"},
         | 
| 534 | 
            +
                {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"},
         | 
| 535 | 
            +
                {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"},
         | 
| 536 | 
            +
                {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"},
         | 
| 537 | 
            +
                {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"},
         | 
| 538 | 
            +
                {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"},
         | 
| 539 | 
            +
                {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"},
         | 
| 540 | 
            +
                {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"},
         | 
| 541 | 
            +
                {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"},
         | 
| 542 | 
            +
                {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"},
         | 
| 543 | 
            +
                {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"},
         | 
| 544 | 
            +
                {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"},
         | 
| 545 | 
            +
                {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"},
         | 
| 546 | 
            +
                {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"},
         | 
| 547 | 
            +
            ]
         | 
| 548 | 
            +
             | 
| 549 | 
            +
            [[package]]
         | 
| 550 | 
            +
            name = "requests"
         | 
| 551 | 
            +
            version = "2.32.3"
         | 
| 552 | 
            +
            description = "Python HTTP for Humans."
         | 
| 553 | 
            +
            optional = false
         | 
| 554 | 
            +
            python-versions = ">=3.8"
         | 
| 555 | 
            +
            files = [
         | 
| 556 | 
            +
                {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"},
         | 
| 557 | 
            +
                {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"},
         | 
| 558 | 
            +
            ]
         | 
| 559 | 
            +
             | 
| 560 | 
            +
            [package.dependencies]
         | 
| 561 | 
            +
            certifi = ">=2017.4.17"
         | 
| 562 | 
            +
            charset-normalizer = ">=2,<4"
         | 
| 563 | 
            +
            idna = ">=2.5,<4"
         | 
| 564 | 
            +
            urllib3 = ">=1.21.1,<3"
         | 
| 565 | 
            +
             | 
| 566 | 
            +
            [package.extras]
         | 
| 567 | 
            +
            socks = ["PySocks (>=1.5.6,!=1.5.7)"]
         | 
| 568 | 
            +
            use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
         | 
| 569 | 
            +
             | 
| 570 | 
             
            [[package]]
         | 
| 571 | 
             
            name = "sniffio"
         | 
| 572 | 
             
            version = "1.3.1"
         | 
|  | |
| 596 | 
             
            [package.extras]
         | 
| 597 | 
             
            full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"]
         | 
| 598 |  | 
| 599 | 
            +
            [[package]]
         | 
| 600 | 
            +
            name = "tqdm"
         | 
| 601 | 
            +
            version = "4.67.1"
         | 
| 602 | 
            +
            description = "Fast, Extensible Progress Meter"
         | 
| 603 | 
            +
            optional = false
         | 
| 604 | 
            +
            python-versions = ">=3.7"
         | 
| 605 | 
            +
            files = [
         | 
| 606 | 
            +
                {file = "tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2"},
         | 
| 607 | 
            +
                {file = "tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2"},
         | 
| 608 | 
            +
            ]
         | 
| 609 | 
            +
             | 
| 610 | 
            +
            [package.dependencies]
         | 
| 611 | 
            +
            colorama = {version = "*", markers = "platform_system == \"Windows\""}
         | 
| 612 | 
            +
             | 
| 613 | 
            +
            [package.extras]
         | 
| 614 | 
            +
            dev = ["nbval", "pytest (>=6)", "pytest-asyncio (>=0.24)", "pytest-cov", "pytest-timeout"]
         | 
| 615 | 
            +
            discord = ["requests"]
         | 
| 616 | 
            +
            notebook = ["ipywidgets (>=6)"]
         | 
| 617 | 
            +
            slack = ["slack-sdk"]
         | 
| 618 | 
            +
            telegram = ["requests"]
         | 
| 619 | 
            +
             | 
| 620 | 
             
            [[package]]
         | 
| 621 | 
             
            name = "typing-extensions"
         | 
| 622 | 
             
            version = "4.12.2"
         | 
|  | |
| 628 | 
             
                {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"},
         | 
| 629 | 
             
            ]
         | 
| 630 |  | 
| 631 | 
            +
            [[package]]
         | 
| 632 | 
            +
            name = "urllib3"
         | 
| 633 | 
            +
            version = "2.3.0"
         | 
| 634 | 
            +
            description = "HTTP library with thread-safe connection pooling, file post, and more."
         | 
| 635 | 
            +
            optional = false
         | 
| 636 | 
            +
            python-versions = ">=3.9"
         | 
| 637 | 
            +
            files = [
         | 
| 638 | 
            +
                {file = "urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df"},
         | 
| 639 | 
            +
                {file = "urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d"},
         | 
| 640 | 
            +
            ]
         | 
| 641 | 
            +
             | 
| 642 | 
            +
            [package.extras]
         | 
| 643 | 
            +
            brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"]
         | 
| 644 | 
            +
            h2 = ["h2 (>=4,<5)"]
         | 
| 645 | 
            +
            socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
         | 
| 646 | 
            +
            zstd = ["zstandard (>=0.18.0)"]
         | 
| 647 | 
            +
             | 
| 648 | 
             
            [[package]]
         | 
| 649 | 
             
            name = "uvicorn"
         | 
| 650 | 
             
            version = "0.27.1"
         | 
|  | |
| 667 | 
             
            [metadata]
         | 
| 668 | 
             
            lock-version = "2.0"
         | 
| 669 | 
             
            python-versions = "^3.9"
         | 
| 670 | 
            +
            content-hash = "35e0293376ee3d9a58ecf8947721ff95397a7b74def681cccf0c8849626d8cd1"
         | 
    	
        server/pyproject.toml
    CHANGED
    
    | @@ -12,6 +12,8 @@ python = "^3.9" | |
| 12 | 
             
            fastapi = "^0.109.0"
         | 
| 13 | 
             
            uvicorn = "^0.27.0"
         | 
| 14 | 
             
            python-dotenv = "^1.0.0"
         | 
|  | |
|  | |
| 15 |  | 
| 16 | 
             
            [tool.poetry.scripts]
         | 
| 17 | 
             
            dev = "server:start"
         | 
|  | |
| 12 | 
             
            fastapi = "^0.109.0"
         | 
| 13 | 
             
            uvicorn = "^0.27.0"
         | 
| 14 | 
             
            python-dotenv = "^1.0.0"
         | 
| 15 | 
            +
            huggingface-hub = "^0.21.0"
         | 
| 16 | 
            +
            aiofiles = "^24.1.0"
         | 
| 17 |  | 
| 18 | 
             
            [tool.poetry.scripts]
         | 
| 19 | 
             
            dev = "server:start"
         | 
    	
        server/server.py
    CHANGED
    
    | @@ -1,7 +1,14 @@ | |
| 1 | 
            -
            from fastapi import FastAPI
         | 
| 2 | 
             
            from fastapi.staticfiles import StaticFiles
         | 
|  | |
| 3 | 
             
            import os
         | 
| 4 | 
             
            from dotenv import load_dotenv
         | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 5 |  | 
| 6 | 
             
            # Load environment variables
         | 
| 7 | 
             
            load_dotenv()
         | 
| @@ -9,9 +16,77 @@ load_dotenv() | |
| 9 | 
             
            # API configuration
         | 
| 10 | 
             
            API_HOST = os.getenv("API_HOST", "0.0.0.0")
         | 
| 11 | 
             
            API_PORT = int(os.getenv("API_PORT", "3002"))
         | 
|  | |
|  | |
|  | |
| 12 |  | 
| 13 | 
             
            app = FastAPI()
         | 
| 14 |  | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 15 | 
             
            # Mount static files for the React client
         | 
| 16 | 
             
            app.mount("/", StaticFiles(directory="static", html=True), name="static")
         | 
| 17 |  | 
|  | |
| 1 | 
            +
            from fastapi import FastAPI, HTTPException
         | 
| 2 | 
             
            from fastapi.staticfiles import StaticFiles
         | 
| 3 | 
            +
            from fastapi.middleware.cors import CORSMiddleware
         | 
| 4 | 
             
            import os
         | 
| 5 | 
             
            from dotenv import load_dotenv
         | 
| 6 | 
            +
            from huggingface_hub import hf_hub_download
         | 
| 7 | 
            +
            import json
         | 
| 8 | 
            +
            from datetime import datetime, timedelta
         | 
| 9 | 
            +
            import aiofiles
         | 
| 10 | 
            +
            import aiofiles.os
         | 
| 11 | 
            +
            import asyncio
         | 
| 12 |  | 
| 13 | 
             
            # Load environment variables
         | 
| 14 | 
             
            load_dotenv()
         | 
|  | |
| 16 | 
             
            # API configuration
         | 
| 17 | 
             
            API_HOST = os.getenv("API_HOST", "0.0.0.0")
         | 
| 18 | 
             
            API_PORT = int(os.getenv("API_PORT", "3002"))
         | 
| 19 | 
            +
            HF_TOKEN = os.getenv("HF_TOKEN")
         | 
| 20 | 
            +
            CACHE_DIR = "cache"
         | 
| 21 | 
            +
            CACHE_DURATION = timedelta(seconds=10)
         | 
| 22 |  | 
| 23 | 
             
            app = FastAPI()
         | 
| 24 |  | 
| 25 | 
            +
            # Enable CORS
         | 
| 26 | 
            +
            app.add_middleware(
         | 
| 27 | 
            +
                CORSMiddleware,
         | 
| 28 | 
            +
                allow_origins=["*"],  # En production, remplacer par les domaines autorisés
         | 
| 29 | 
            +
                allow_credentials=True,
         | 
| 30 | 
            +
                allow_methods=["*"],
         | 
| 31 | 
            +
                allow_headers=["*"],
         | 
| 32 | 
            +
            )
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            # Ensure cache directory exists
         | 
| 35 | 
            +
            os.makedirs(CACHE_DIR, exist_ok=True)
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            async def get_cached_data():
         | 
| 38 | 
            +
                cache_file = os.path.join(CACHE_DIR, "leaderboards_cache.json")
         | 
| 39 | 
            +
                cache_meta_file = os.path.join(CACHE_DIR, "cache_metadata.json")
         | 
| 40 | 
            +
                
         | 
| 41 | 
            +
                try:
         | 
| 42 | 
            +
                    if await aiofiles.os.path.exists(cache_meta_file):
         | 
| 43 | 
            +
                        async with aiofiles.open(cache_meta_file, 'r') as f:
         | 
| 44 | 
            +
                            metadata = json.loads(await f.read())
         | 
| 45 | 
            +
                            cache_time = datetime.fromisoformat(metadata['timestamp'])
         | 
| 46 | 
            +
                            
         | 
| 47 | 
            +
                            if datetime.now() - cache_time < CACHE_DURATION:
         | 
| 48 | 
            +
                                async with aiofiles.open(cache_file, 'r') as f:
         | 
| 49 | 
            +
                                    return json.loads(await f.read())
         | 
| 50 | 
            +
                except Exception as e:
         | 
| 51 | 
            +
                    print(f"Error reading cache: {e}")
         | 
| 52 | 
            +
                
         | 
| 53 | 
            +
                return None
         | 
| 54 | 
            +
             | 
| 55 | 
            +
            async def update_cache(data):
         | 
| 56 | 
            +
                try:
         | 
| 57 | 
            +
                    async with aiofiles.open(os.path.join(CACHE_DIR, "leaderboards_cache.json"), 'w') as f:
         | 
| 58 | 
            +
                        await f.write(json.dumps(data))
         | 
| 59 | 
            +
                    async with aiofiles.open(os.path.join(CACHE_DIR, "cache_metadata.json"), 'w') as f:
         | 
| 60 | 
            +
                        await f.write(json.dumps({'timestamp': datetime.now().isoformat()}))
         | 
| 61 | 
            +
                except Exception as e:
         | 
| 62 | 
            +
                    print(f"Error updating cache: {e}")
         | 
| 63 | 
            +
             | 
| 64 | 
            +
            @app.get("/api/leaderboards")
         | 
| 65 | 
            +
            async def get_leaderboards():
         | 
| 66 | 
            +
                try:
         | 
| 67 | 
            +
                    # Check cache first
         | 
| 68 | 
            +
                    cached_data = await get_cached_data()
         | 
| 69 | 
            +
                    if cached_data:
         | 
| 70 | 
            +
                        return cached_data
         | 
| 71 | 
            +
                        
         | 
| 72 | 
            +
                    # If no cache or expired, download from HF
         | 
| 73 | 
            +
                    file_path = hf_hub_download(
         | 
| 74 | 
            +
                        repo_id="leaderboard-explorer/leaderboard_explorer",
         | 
| 75 | 
            +
                        filename="final_leaderboards.json",
         | 
| 76 | 
            +
                        token=HF_TOKEN,
         | 
| 77 | 
            +
                        repo_type="dataset"
         | 
| 78 | 
            +
                    )
         | 
| 79 | 
            +
                    
         | 
| 80 | 
            +
                    with open(file_path, 'r') as f:
         | 
| 81 | 
            +
                        data = json.load(f)
         | 
| 82 | 
            +
                        
         | 
| 83 | 
            +
                    # Update cache
         | 
| 84 | 
            +
                    await update_cache(data)
         | 
| 85 | 
            +
                    
         | 
| 86 | 
            +
                    return data
         | 
| 87 | 
            +
                except Exception as e:
         | 
| 88 | 
            +
                    raise HTTPException(status_code=500, detail=f"Failed to fetch leaderboards: {str(e)}")
         | 
| 89 | 
            +
             | 
| 90 | 
             
            # Mount static files for the React client
         | 
| 91 | 
             
            app.mount("/", StaticFiles(directory="static", html=True), name="static")
         | 
| 92 |  | 

