diff --git a/.env.docker b/.env.docker index 2626c5a..c29e5fe 100644 --- a/.env.docker +++ b/.env.docker @@ -1,4 +1,3 @@ # .env.docker (container) CONTAINER_WORKSPACE=/app -PYTHONPATH_CONTAINER=/app/src -NFL_HOME_CONTAINER=/app \ No newline at end of file +PYTHONPATH_CONTAINER=/app/src \ No newline at end of file diff --git a/.github/workflows/pr-ci.yml b/.github/workflows/pr-ci.yml index 953e958..344df99 100644 --- a/.github/workflows/pr-ci.yml +++ b/.github/workflows/pr-ci.yml @@ -37,16 +37,14 @@ jobs: version: "latest" - name: Sync uv - run: | - uv sync --locked + run: uv sync --locked - name: Create features - run: | - source environment.sh - uv run src/create_features.py + run: uv run src/create_features.py - name: Train transformer - run: | - source environment.sh - uv run src/train_transformer.py + run: uv run src/train_transformer.py + + - name: Make week 9 predictions + run: uv run src/generate_predictions.py diff --git a/.gitignore b/.gitignore index 4c82df0..e4dd250 100644 --- a/.gitignore +++ b/.gitignore @@ -187,6 +187,10 @@ output/**/*.txt # MLflow mlruns/ +mlflow.db + +# Ray +log/ # Artifacts *.pkl diff --git a/.vscode/launch.json b/.vscode/launch.json index 6c2d502..2611be3 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -12,7 +12,6 @@ "justMyCode": false, "subProcess": true, "env": { - "NFL_HOME": "${env:NFL_HOME}", "PYTHONPATH": "${workspaceFolder}" }, "envFile": "${workspaceFolder}/.env", @@ -24,14 +23,12 @@ "request": "launch", "program": "${workspaceFolder}/src/main.py", "args": [ - "--data-root", "${env:NFL_HOME}" ], "console": "integratedTerminal", "cwd": "${workspaceFolder}", "justMyCode": false, "subProcess": true, "env": { - "NFL_HOME": "${env:NFL_HOME}", "PYTHONPATH": "${workspaceFolder}" }, "envFile": "${workspaceFolder}/.env", @@ -48,7 +45,6 @@ "justMyCode": false, "subProcess": true, "env": { - "NFL_HOME": "${env:NFL_HOME}", "PYTHONPATH": "${workspaceFolder}" }, "envFile": "${workspaceFolder}/.env", @@ -63,7 +59,6 @@ "cwd": "${workspaceFolder}", "justMyCode": false, "env": { - "NFL_HOME": "${env:NFL_HOME}", "PYTHONPATH": "${workspaceFolder}" }, "envFile": "${workspaceFolder}/.env", diff --git a/Dockerfile b/Dockerfile index d3527cf..219e644 100644 --- a/Dockerfile +++ b/Dockerfile @@ -30,8 +30,5 @@ RUN uv sync --frozen --no-dev --no-install-project # Copy the rest of your repo COPY . . -# Default envs helpful for your project -ENV NFL_HOME=/app - # Set a sensible default; override in docker-compose.yml CMD ["bash"] \ No newline at end of file diff --git a/README.md b/README.md index 32dc87a..289d41b 100644 --- a/README.md +++ b/README.md @@ -103,22 +103,19 @@ curl -LsSf https://astral.sh/uv/install.sh | sh To create and activate the virtual environment, run the following: ```bash uv sync --locked -source .venv/bin/activate ``` ## Run instructions ```bash -# Source the environmental variables -source environment.sh # Digest the raw data and create features -uv src/create_features.py +uv run src/create_features.py # Train the model -uv src/train_transformer.py +uv run src/train_transformer.py # Run inference on week 9 -uv src/generate_predictions.py +uv run src/generate_predictions.py # From this point you can explore the notebooks/predictions.ipynb, adjust the data path as neccesary and see the animations and plots ``` @@ -126,11 +123,14 @@ uv src/generate_predictions.py ## Activating MLflow This project uses MLflow to manage ML models and track experiments from hyper paremter optimization. To start MLflow simply: ```bash -# Make sure your virtual environment is started if you opened a new terminal +# Make sure your virtual environment is sourced so the terminal recognizes mlflow source .venv/bin/activate # Start the tracking server -mlflow ui --backend-store-uri ./mlruns +mlflow ui \ + --backend-store-uri sqlite:///mlflow.db \ + --host 0.0.0.0 \ + --port 5000 ``` The last command will start the MLflow GUI at your local host loopback on port 5000: http://127.0.0.1:5000 \ No newline at end of file diff --git a/data/training/best_model.pth b/data/training/best_model.pth new file mode 100644 index 0000000..cd7d59f Binary files /dev/null and b/data/training/best_model.pth differ diff --git a/data/training/model_params.json b/data/training/model_params.json new file mode 100644 index 0000000..818ed74 --- /dev/null +++ b/data/training/model_params.json @@ -0,0 +1,9 @@ +{ + "epochs": 50, + "model_dim": 64, + "num_heads": 2, + "num_layers": 4, + "dropout": 0.1, + "batch_size": 64, + "checkpoint_freq": 10 +} diff --git a/environment.sh b/environment.sh deleted file mode 100644 index 0f1be83..0000000 --- a/environment.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -# Set NFL_HOME to the repo root -export NFL_HOME="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" \ No newline at end of file diff --git a/notebooks/eda.ipynb b/notebooks/eda.ipynb index 466410d..55494b2 100644 --- a/notebooks/eda.ipynb +++ b/notebooks/eda.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "0fe17705", "metadata": {}, "outputs": [], @@ -15,7 +15,6 @@ "\n", "from load_data import RawDataLoader\n", "\n", - "os.environ[\"NFL_HOME\"] = \"/home/sam/repos/hobby-repos/nfl/\"\n", "rawLoader = RawDataLoader()\n", "games_df, plays_df, players_df, location_data_df = rawLoader.get_data(weeks=[i for i in range(1, 10)])" ] diff --git a/notebooks/predictions.ipynb b/notebooks/predictions.ipynb index 0b97aed..c110221 100644 --- a/notebooks/predictions.ipynb +++ b/notebooks/predictions.ipynb @@ -34,61 +34,61 @@ "text": [ " gameId playId nflId displayName frameId frameType \\\n", "0 2022110700 56 33131.0 Calais Campbell 1 BEFORE_SNAP \n", - "1 2022110700 56 33131.0 Calais Campbell 2 BEFORE_SNAP \n", - "2 2022110700 56 33131.0 Calais Campbell 3 BEFORE_SNAP \n", - "3 2022110700 56 33131.0 Calais Campbell 4 BEFORE_SNAP \n", - "4 2022110700 56 33131.0 Calais Campbell 5 BEFORE_SNAP \n", + "1 2022110700 56 33131.0 Calais Campbell 1 BEFORE_SNAP \n", + "2 2022110700 56 33131.0 Calais Campbell 1 BEFORE_SNAP \n", + "3 2022110700 56 33131.0 Calais Campbell 1 BEFORE_SNAP \n", + "4 2022110700 56 33131.0 Calais Campbell 2 BEFORE_SNAP \n", "\n", " time jerseyNumber club playDirection ... defense week \\\n", "0 2022-11-08 01:16:09.2 93.0 BAL left ... 1 9 \n", - "1 2022-11-08 01:16:09.3 93.0 BAL left ... 1 9 \n", - "2 2022-11-08 01:16:09.4 93.0 BAL left ... 1 9 \n", - "3 2022-11-08 01:16:09.5 93.0 BAL left ... 1 9 \n", - "4 2022-11-08 01:16:09.6 93.0 BAL left ... 1 9 \n", + "1 2022-11-08 01:16:09.2 93.0 BAL left ... 1 9 \n", + "2 2022-11-08 01:16:09.2 93.0 BAL left ... 1 9 \n", + "3 2022-11-08 01:16:09.2 93.0 BAL left ... 1 9 \n", + "4 2022-11-08 01:16:09.3 93.0 BAL left ... 1 9 \n", "\n", " uniqueId frameUniqueId snap_frame frames_from_snap zone_prob \\\n", "0 2022110700_56 2022110700_56_1 117 -116 0.775387 \n", - "1 2022110700_56 2022110700_56_2 117 -115 0.783555 \n", - "2 2022110700_56 2022110700_56_3 117 -114 0.793051 \n", - "3 2022110700_56 2022110700_56_4 117 -113 0.809845 \n", - "4 2022110700_56 2022110700_56_5 117 -112 0.820785 \n", + "1 2022110700_56 2022110700_56_1 117 -116 0.781979 \n", + "2 2022110700_56 2022110700_56_1 117 -116 0.781979 \n", + "3 2022110700_56 2022110700_56_1 117 -116 0.781979 \n", + "4 2022110700_56 2022110700_56_2 117 -115 0.783555 \n", "\n", " man_prob pred actual \n", "0 0.224613 0 0 \n", - "1 0.216445 0 0 \n", - "2 0.206949 0 0 \n", - "3 0.190155 0 0 \n", - "4 0.179215 0 0 \n", + "1 0.218021 0 0 \n", + "2 0.218021 0 0 \n", + "3 0.218021 0 0 \n", + "4 0.216445 0 0 \n", "\n", "[5 rows x 42 columns]\n", "Finished processing week 9...\n", " gameId playId nflId displayName frameId frameType \\\n", "0 2022110700 56 33131.0 Calais Campbell 1 BEFORE_SNAP \n", - "1 2022110700 56 33131.0 Calais Campbell 2 BEFORE_SNAP \n", - "2 2022110700 56 33131.0 Calais Campbell 3 BEFORE_SNAP \n", - "3 2022110700 56 33131.0 Calais Campbell 4 BEFORE_SNAP \n", - "4 2022110700 56 33131.0 Calais Campbell 5 BEFORE_SNAP \n", + "1 2022110700 56 33131.0 Calais Campbell 1 BEFORE_SNAP \n", + "2 2022110700 56 33131.0 Calais Campbell 1 BEFORE_SNAP \n", + "3 2022110700 56 33131.0 Calais Campbell 1 BEFORE_SNAP \n", + "4 2022110700 56 33131.0 Calais Campbell 2 BEFORE_SNAP \n", "\n", " time jerseyNumber club playDirection ... week \\\n", "0 2022-11-08 01:16:09.2 93.0 BAL left ... 9 \n", - "1 2022-11-08 01:16:09.3 93.0 BAL left ... 9 \n", - "2 2022-11-08 01:16:09.4 93.0 BAL left ... 9 \n", - "3 2022-11-08 01:16:09.5 93.0 BAL left ... 9 \n", - "4 2022-11-08 01:16:09.6 93.0 BAL left ... 9 \n", + "1 2022-11-08 01:16:09.2 93.0 BAL left ... 9 \n", + "2 2022-11-08 01:16:09.2 93.0 BAL left ... 9 \n", + "3 2022-11-08 01:16:09.2 93.0 BAL left ... 9 \n", + "4 2022-11-08 01:16:09.3 93.0 BAL left ... 9 \n", "\n", " uniqueId frameUniqueId snap_frame frames_from_snap zone_prob \\\n", "0 2022110700_56 2022110700_56_1 117 -116 0.775387 \n", - "1 2022110700_56 2022110700_56_2 117 -115 0.783555 \n", - "2 2022110700_56 2022110700_56_3 117 -114 0.793051 \n", - "3 2022110700_56 2022110700_56_4 117 -113 0.809845 \n", - "4 2022110700_56 2022110700_56_5 117 -112 0.820785 \n", + "1 2022110700_56 2022110700_56_1 117 -116 0.781979 \n", + "2 2022110700_56 2022110700_56_1 117 -116 0.781979 \n", + "3 2022110700_56 2022110700_56_1 117 -116 0.781979 \n", + "4 2022110700_56 2022110700_56_2 117 -115 0.783555 \n", "\n", " man_prob pred actual base_correct \n", "0 0.224613 0 0 True \n", - "1 0.216445 0 0 True \n", - "2 0.206949 0 0 True \n", - "3 0.190155 0 0 True \n", - "4 0.179215 0 0 True \n", + "1 0.218021 0 0 True \n", + "2 0.218021 0 0 True \n", + "3 0.218021 0 0 True \n", + "4 0.216445 0 0 True \n", "\n", "[5 rows x 43 columns]\n" ] @@ -148,13 +148,13 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 4, "id": "85892cf2", "metadata": {}, "outputs": [ { "data": { - "image/png": "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ezpQJ06cxOE/j2DkiOFYsWoNRt46HCaTCeuqzBwjIiIiIiKi4GNCqg5V1ubp07sXevfuha8Wfes4dvjPv2A0GnHlFX3Rs0c3bNn6m+PYmTPnIJPJcO7cebczaC73s8+2Kisvd5l95Mnb782C1WrFP59/BuXl5Vi9dr3vkyqUlJY67QJ4zdVXIifnIk6ePOX3NaqTy+WIrrJL35CbB2Hn73/gxVdec+qn1WpRVFTk1KY3GLB2/UasXb8RCoUC77/9f5g86X7M/2wBCguLUFZWDplc5vdr48vqdRswdfKDyDpx0lFjqbrzF+zLvNq0buVyrG3b1igoLITeYIDRZIJeb3Barujo17q109f+vh/8pYmKwqCB/bFm3Qas37jJ5fjzf38SI0cMxa4/duPMWft7rH1amsfX8ey5c44+3pSUlkCr1bq0N0tN8Xvstwy+CUajCVOmPw6z2exor5y5V+nMmXOQy+VIa9fW47OqtGLVajzz5ONo1CgZtw4bgi2/bvNrKSsRERERERHVHGtI1aFDh4/AYDBg5IihSGnaBPsOXJ4hZTabceSvo/jbuLvstaWqJHo2bvoFFosF0x5+yO114+PjAACHj/yF06fP4P6J46GpktSplJiY4NImiiJe/s8b2LBxE17790sYOODGGt3bsCE3o0f3bvjy62891ujxpXWrlmjTujWOVpmpZLXaXOpeDbl5EFKaNnFqq3wNKlksFmSdOAlBEKBQKGCz2bDh519wy+Cb0D6tnUtsd6+NL0t/+BGz587HW++877FPXl4+jvx1FLeNutVp97v2ae1w3TVX49eKxKPNZsNv23dg0MD+SElp6ujXrm0bXHft1U7X9Pf94K/BgwYiOjoa33y3BBs2bnL5b/OWbbh58E1QKpX488hRnDl7DveNH+dxN7/CwiLs2r0Ht982yuleqjtz5hzitFp07NDe0daoUTIG3zTA77FbbVaIECGXX/7W1Sw1FYOqXePnjM2wWq2YNmWSy/uputVr10MUgeeeeRItW7bg7npERERERET1gDOk6pDFYsGhP4/gir59YDQacfjPv5yO79t/EPdPHA/gcv0oADhz9hxmzZ6HJx57BM2bpWLTL1tQritH82bNMHjQQCxZuhxffLkIoijipX+/jjkfvosfl36D5T+uwsVLuWjapDGuvLIfysvK8ejMp13GJYoinvvnS/jg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UkRERERERETkk27FIp99RACG9DToJ6YBarnLcfWKMxDqYGzU8DAhRURERERERERBYUhPg35yR0AU3R4XE1T1PCIKVSxqTkREREREREQ+yVNbQZ7ayuNxm1YBfXqaPRkluJkHJYowjGsDm5ZzY4gJKSIiIiIiIiLyQ9zU5xE39XmPx00DUwCV3H0yCrC3q+UwDUipoxFSQ8KEFBERERERERHVmpik9q9fsn/9KLwxIUVEREREREREtSYUGP3rl+9fPwpvTEgRERERERERUa2pMnIAo9VjQXOIImC0QrU5p34HRiGJCSkiIiIiIiIiqjVZqQVRX53wWNAcggDNwizISi31PzgKOUxIEREREREREVFQKHbnuz9gskEzPxNRC7Lqd0AUsrjXIhEREREREREFheWaRi5tquWnET3vKGdGkRMmpIiIiIiIiIjIp5K5b/jsY76miXODVWQyitxiQoqIiIiIiIiIfLJeOO31uC1ZDWvHOKc2xaFCJqPILdaQIiIiIiIiIqJaM1/T2KVNuSNXgpFQQ8CEFBERERERERH5FD16PKJHj/d43OSmfpRyOxNS5B4TUkRERERERETkk7rfDVD3u8HtMVEuwHKlc0JKyDNAfry0PoZGDRATUkRERERERERUK5buCRBjlU5tyh25ECQaD4U+JqSIiIiIiIiIqFbM17rWj1LtyJNgJNRQMCFFRERERERERLXiUtDcYoNiFxNS5JlC6gF4o1Qq8ei0KRg1cjjitFpkHjuOWR/Nw/adv/s895qrr8SUSQ+gQ/s0yBVyZGefxtffLsbKn9Y49YuNjcGUSQ9g8KCBaNqkMQoKC7Fj5y7MnvcJcnIu1tWtEREREREREYUFW+MoWNvHObUpDhZBVm6RaETUEIT0DKnX/v0iJk64Fz+tXoc333oXNpsNs2e9iz69e3k9b+CAG/Hx7A+gVCowe958fPDhXBiMRrzx6su4b/w9jn6CIGD+nFm45+478fOmDLzx37exeu16DLl5ML764hNER0fX9S0SERERERERNWimq93srreDu+uRdyE7Q6p7t64YMWwI/vfOB/jiy0UAgBWrVmP54q/x1MxHMeH+yR7PvXfcWOTm5eHBKY/AbDYDABYv/QErl32HMaNH4stF3wIAevXsjh7du+HVN97Ct98vcZx/6tRpvPrKv3Dt1Vfi51821+FdEhERERER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gLmMJAGCAMOiYqjqg09GEREREREREVFi4gwpapN+YTEAwDStENCpjx6wOmFYVOw+TkREREREREQUCCakqE0CAMPCYuiW7Id1RB6kLB2ESgvEdWWcGUVEREREREREQWNCigKmqrdDv6xU6W4QERERERGRAuyHSpTuAsURJqSIiIiIiIiIqE31LzykdBcojrCoORERERERERERRRUTUkREREREREREFFVcskdEREREREREbcqY9zwAoGLOpQr3hOIBZ0gREREREREREVFUMSFFRERERERERERRxYQUERERERERERFFFRNSREREREREREQUVUxIERERERERERFRVDEhRUREREREREREUaVRugNEREREREREFPsaP31b6S5QHGFCioiIiIiIiIjaZN28XukuUBzhkj0iIiIiIiIiIooqJqSIiIiIiIiIqE3i4GEQBw9TuhsUJ2J6yZ5Wq8X1187EpInjkJaail2792D+cy9i46YfArp+7OhzcPnUS9H7uF6w2+3Yu/dPPPPcC/jhx83uc1JSkjHz6uk4e9RI5OZ0RlV1Nb7f9CMWvPgKysoOR+qlEREREREREXUoyZOnur5Y9ZmyHaG4ENMJqQfvuwfnnj0Kb73zHvYfKMGUyROwYP5TuGrmbPzy6xa/187+5zWYNfNqrFy9Bp98+jk0GjWO61WI3Jwc9zmCIODl5+ej8NieeO+Dxdh/4AC6deuKSy++CGec/jdMvuASGI3GSL9MIiIiIiIiIqKEErMJqYED+mP82NF4/Mln8Mabrkr+ny77Aks/fAe3zL0el185w+e1Jxw/ELNmXo3Hnvwf3nz7PZ/nnXjCQBw/cAAeePgxvPfBR+72ffsO4IF5d+P0007BV1+vC9+LIiIiIiIiIiKi2K0hNfqcUbDb7fhwyVJ3m9VqxZJPPsNJJ56AvNwcn9deMfVSVFRW4q133gcAGAwGr+clJycDACqrqmTt5RUVAACzxdKel0BERERERERERF7E7Aypfn17Y/+BEjQ2Nsrat27bDgDo06c3yg4f8XrtaacOwa9btmLqPy7BP6+ZjoyMTigvr8BLr76Od98/OhNq++9/wGg0Ys61M1FbW4t9+w6ge/euuOXG67F123Z8v+lHv33MzMhARkYnWZvZWItdlduQkZ4GnSE94NerE0WIojbg88NJqdhKxU1qSlBmZ0Y9dMK910rF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", + "image/png": "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d97H/gO5CmRGgWY0GPDG3JeRlpaGm2bMQl5evtIpkZ9Wrl6DaTlTcNXlk7Dgg48AAFqtFpMunYAdf+xCwYmTCmdIgaBSqfCf55/GmWecgdvvvhc7/tgV9JgsSFFUmXHLNABAl+zOAIAJ48fg7LPPBADndq3ft++QXVdZ6VgNtevPv9g0N8x5M8eZmRmY+8p/IEmO/8GOGnGJyz327T+AffsPhDBr8pU38wwAr742Hx8ueBsL3nkDXyz5Eulpaci54Xr8suFX/LLh19AnTs3y7vuL8PwzT+CTRe/h8yVfwmKxYOzokejdqydefe0N2GzsHxUJ1qz9CRs3/YZbbspBYmIi9u7bj0suHoJ+55yF/3vyWTbBbuEKCk6goOCEbPz+e+9CcXEJ/5wVQZ575gn0PaMPlnz5NTp36ojOnTo6j9XU1HCuW5Cdu3Zj+crVuGPOLCQnJyEv/wgunTAWWZmZePTxp5ROjwLk3rvvwLChg/Hjup/QKiEB48eOdjm+7LvlAY8pxKafy2UBFDV2/b7J47E+Z5/n8diAfufg/XfewF33PohVq9cEIzUKEG/muG4+PZk3/23Me/OdgOdGgePLZ/nss87E3Xfchp49uqO6pgYrVv6AV+bOYw+LFurCC87D9JtykJ3dGXGxsTh06DA++WwxPl+8VOnUKICMRiNuv20mRo8cjlatEnDo0GG8u+ADfPv9CqVToyBZ8e1SHDhwELfdcY/SqVCArPh2KdpkZbk9dvTYMYwad1mIM6Lm0Ol0mDPrHxg/djQSEuKxb/8BzJ33JjZs9PxnMmpZ3n97Hgb07+fxeGN/X/YXC1JERERERERERBRSKqUTICIiIiIiIiKi6MKCFBERERERERERhRQLUkREREREREREFFIsSBERERERERERUUixIEVERERERERERCHFghQREREREREREYUUC1JERERERERERBRSLEgREREREREREVFIsSBFREREREREREQhxYIUERERERERERGFlEbpBIiIiIgi3Ypvl6JNVhYAoM/Z5wXsvikpybj3rttx7rn9kZqSApVKhedeeBkffvxpwGIQERERBQMLUkRERBQy6WlpuPUfN+OC889FWuvWMJstKC0txcG/D2HXn39h/lvvKp1ii/L0449i0MALlE6j2RLi4zFj+jRcPGQwMjPSUVtbi7Lychw+nI/df/6Ft955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Lxsx+KKBaN++HV575T9Y8uXXqK6uQVZWBnp0747hw4Zics4tOHb8OJZ9txyXXDwEADAt5wao1Wr8tmUrElu1wvhxo/HE08/j+PECfPv9CnTv1hUA8K8H/4nYV2MgSZJLo2pveji58+O6n3Ht1VcCAK679iqcOHkSx44XYMbNN7o9/8H770Hr1FRs/PU3FJw4AbvNjn5nn+U8rtNp/crDG98tX4kp11/jyPWaK3GysBB5efmYMvla6PV6AMAvG3+V9Y8KhouHXIQbplyHNWvW4tfftuDY8eOIj4vDlMnXOs+pvwXSF8ePn35K4PBLLsa237cjISEBd3nRmHzq5GtRXFyM4wUnXOZw/S8b2T+KiIgoAFiQIiIiopBplZCAq66YhKuumCQ7VlhY5GwEDgBPPPM8Pnz/bWRkpGPwRQMx+CLPK59WrV6DL79ehkkTx0Or1eDmaVOdT5EDTm+r++CjTzH4ooHof87ZaJOV5dy2VWfz1m1Y9OEnfr22Xzb8ip/Wb8DgQRcixmjEQ/f/E4BjFVhFZSUSGvQqMuj1GDl8GEYOHya7l8lkxo+nGqgHwx87d+Hd9xfh5mlTYTAYcP8/73I5XlhYhKee+XfQ4jcUYzRi/LgxLg3v61RXV+Ptdxf4dd8/du7G3n370b1bV7Rtk4VXX34BALDt9x1ISUlu9Nr8I0fxrwfuleVSv2E+ERER+Y8FKSIiIgqJeW+9i737DuD88wagXds2SE1NgUajQUHBCWz4dRPeemeBS7+jgoITuPK6G3BTzg0YOngQsrIyYbPZcfLkSezc/SdWrl6DghMnnOc//NiT+HXTZlxx2UR0794NBr0eRcXF2LZtOyoqHSt9amtrMX3mHNww+VqMGzMK7du1gyA4tgV+u3wlFn34ifPpd/64594HcdcdszFm1AjoDXps27Ydz//nZcx//RVZQWrZdyugVqvR94w+SE1NQYzRiPLyCmzf8QfefOf9gPSPaszLr76O3X/+heuuuRI9uneHwaDHiZOF+OnnX/DWu++jqKg4qPHrfPbFUhQVF+PCC85Dxw4d0Do1FXq9DoVFRdiy9Xe8/e4C/H3osF/3FkURs+bcjYce+CcG9D8HtbW1+O77lfjsiyX4ZulnjV77wkv/xdln9sUVl09CUmIr7Nr9F/794st+50JERESuhNj0c9mikYiIiIii3lOPP4JJE8cDAKbdcis213uKHxEREQUWm5oTEREREREREVFIsSBFREREREREREQhxYIUERERERERERGFFHtIERERERERERFRSHGFFBERERERERERhRQLUkREREREREREFFIsSBERERERERERUUixIEVERERERERERCHFghQREREREREREYUUC1JERERERERERBRSLEgREREREREREVFIsSBFREREREREREQhxYIUERERERERERGFFAtSREREREREREQUUv8P6+7uFZbozZMAAAAASUVORK5CYII=", "text/plain": [ "
" ] diff --git a/notebooks/train_lstm.ipynb b/notebooks/train_lstm.ipynb index 7ebb763..98e9235 100644 --- a/notebooks/train_lstm.ipynb +++ b/notebooks/train_lstm.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "1df8838e", "metadata": {}, "outputs": [ @@ -54,8 +54,6 @@ "#################################################################\n", "\n", "import os\n", - "os.environ[\"NFL_HOME\"] = \"/home/sam/repos/hobby-repos/nfl/\"\n", - "\n", "from common.data_loader import RawDataLoader\n", "\n", "# Get raw data\n", diff --git a/pyproject.toml b/pyproject.toml index 90a3840..ba270e1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,6 +37,7 @@ dependencies = [ "pandas>=2.3.2", "pip-tools>=7.5.0", "polars>=1.35.1", + "ray[train,tune]>=2.51.1", "scikit-learn>=1.7.2", "seaborn>=0.13.2", "torch>=2.8.0", @@ -44,35 +45,9 @@ dependencies = [ "xgboost>=3.0.5", ] -[project.optional-dependencies] -dev = [ - "pytest>=7.0", - "black>=24.0", - "flake8>=6.0", - "mypy>=1.0" -] -# you can define other "extras", e.g.: -# docs = ["sphinx", "sphinx-rtd-theme"] - [project.scripts] # command = "module:function" myproject-cli = "myproject.cli:main" [tool.setuptools.packages.find] where = ["src"] - -# Tool-specific configuration examples: - -[tool.black] -line-length = 88 -target-version = ["py39", "py310", "py311", "py312"] - -[tool.isort] -profile = "black" - -[tool.flake8] -max-line-length = 88 -extend-ignore = ["E203"] - -[tool.mypy] -strict = true diff --git a/src/common/args.py b/src/common/args.py new file mode 100644 index 0000000..57a6a1a --- /dev/null +++ b/src/common/args.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python + +""" +Parses input arguments to then act on in code +""" + +import argparse + +def parse_args(): + parser = argparse.ArgumentParser() + parser.add_argument( + "--tune", + action="store_true", + help="Use Ray Tune to search hyperparameters instead of a single training run", + ) + parser.add_argument( + "--profile", + action="store_true", + help="Enable @time_fcn timing decorators for profiling", + ) + return parser.parse_args() \ No newline at end of file diff --git a/src/common/csv_to_parquet.py b/src/common/csv_to_parquet.py index fedab7b..bbfdc7d 100644 --- a/src/common/csv_to_parquet.py +++ b/src/common/csv_to_parquet.py @@ -4,9 +4,9 @@ Transforms raw csv data to raw parquet data Requires: -- Raw location tracking data in NFL_HOME/data/parquet +- Raw location tracking data in nfl/data/parquet -Outputs parquet data in NFL_HOME/data/parquet that is stored in git LFS +Outputs parquet data in nfl/data/parquet that is stored in git LFS """ import sys diff --git a/src/common/decorators.py b/src/common/decorators.py index efa70fb..f53b0b5 100644 --- a/src/common/decorators.py +++ b/src/common/decorators.py @@ -4,14 +4,34 @@ Contains common use decorators """ -def time_fcn(func): - import time - from functools import wraps +import time +import functools +import logging - @wraps(func) +_TIME_DECORATORS_ENABLED = False + +def set_time_decorators_enabled(enabled: bool) -> None: + """ + Enable/disable time_fcn decorators globally, called at startup + """ + global _TIME_DECORATORS_ENABLED + _TIME_DECORATORS_ENABLED = enabled + +def time_fcn(fn): + """ + Decorator that measures wall-clock time of a function and logs it. + When _TIME_DECORATORS_ENABLED is False, it becomes a simple passthrough. + """ + @functools.wraps(fn) def wrapper(*args, **kwargs): + # Fast exit when disabled (minimal overhead) + if not _TIME_DECORATORS_ENABLED: + return fn(*args, **kwargs) + start = time.perf_counter() - result = func(*args, **kwargs) - print(f"{func.__name__} took {time.perf_counter() - start:.4f}s") - return result - return wrapper \ No newline at end of file + try: + return fn(*args, **kwargs) + finally: + elapsed = time.perf_counter() - start + logging.info("Function %s took %.4f s", fn.__name__, elapsed) + return wrapper diff --git a/src/common/paths.py b/src/common/paths.py new file mode 100644 index 0000000..18aed02 --- /dev/null +++ b/src/common/paths.py @@ -0,0 +1,12 @@ +from pathlib import Path + +def project_root() -> Path: + # 2 since this is at src/commmon/path.py + return Path(__file__).resolve().parents[2] + +# Set project root +PROJECT_ROOT = project_root() + +# Create processing dirs +SAVE_DIR = PROJECT_ROOT / "data" / "processed" +SAVE_DIR.mkdir(parents=True, exist_ok=True) \ No newline at end of file diff --git a/src/create_features.py b/src/create_features.py index d58ca48..4bcccea 100644 --- a/src/create_features.py +++ b/src/create_features.py @@ -4,9 +4,9 @@ Creates features for model training Requires: -- Raw location tracking data in NFL_HOME/data/parquet +- Raw location tracking data in nfl/data/parquet -Cleans data and creates the following in NFL_HOME/data/processed: +Cleans data and creates the following in nfl/data/processed: - features_training.pt - features_val.pt - targets_training.pt @@ -27,7 +27,9 @@ from load_data import RawDataLoader from clean_data import * -from common.decorators import time_fcn +from common.decorators import * +from common.paths import SAVE_DIR +from common.args import parse_args def clean_df(location_df: pd.DataFrame, plays_df: pd.DataFrame, game_df: pd.DataFrame): @@ -84,14 +86,27 @@ def _process_df(location_df: pd.DataFrame, plays_df: pd.DataFrame, games_df: pd. return combined_location_df -def _load_weeks(weeks, prefix, save_dir): - tensors = [torch.load(os.path.join(save_dir, f"{prefix}_w{w}.pt")) for w in weeks] +def _load_weeks(weeks, prefix, SAVE_DIR): + tensors = [torch.load(SAVE_DIR / f"{prefix}_w{w}.pt") for w in weeks] return torch.cat(tensors, dim=0) if len(tensors) > 1 else tensors[0] + @time_fcn def main() -> None: + # Logging logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') + # Get input args + args = parse_args() + + # Enable/disable timing decorators + if args.profile: + set_time_decorators_enabled(True) + logging.info("Timing decorators enabled") + else: + set_time_decorators_enabled(False) + logging.info("Timing decorators disabled") + # Specify constants all_weeks = list(range(1, 10)) train_weeks = list(range(1, 9)) @@ -99,10 +114,6 @@ def main() -> None: features = ["x_clean", "y_clean", "v_x", "v_y", "defense"] target_column = "pff_manZone" - # Create processing dirs - save_dir = os.path.join(os.getenv("NFL_HOME"), "data", "processed") - os.makedirs(save_dir, exist_ok=True) - # Load data once raw = RawDataLoader() games_df, plays_df, players_df, _ = raw.get_data(weeks=all_weeks) @@ -133,8 +144,8 @@ def main() -> None: features_tensor_w, targets_tensor_w = prepare_frame_data(combined_loc_df_w, features=features, target_column=target_column) # Save per-week artifacts - torch.save(features_tensor_w, os.path.join(save_dir, f"features_w{w}.pt")) - torch.save(targets_tensor_w, os.path.join(save_dir, f"targets_w{w}.pt")) + torch.save(features_tensor_w, SAVE_DIR / f"features_w{w}.pt") + torch.save(targets_tensor_w, SAVE_DIR / f"targets_w{w}.pt") # Free memory for next loop del location_df_w, combined_loc_df_w, features_tensor_w, targets_tensor_w @@ -142,22 +153,22 @@ def main() -> None: # Aggregrate train/val from saved weekly tensors logging.info("Aggregrating training set (Week 1 through 8)") - train_features = _load_weeks(train_weeks, "features", save_dir) - train_targets = _load_weeks(train_weeks, "targets", save_dir) + train_features = _load_weeks(train_weeks, "features", SAVE_DIR) + train_targets = _load_weeks(train_weeks, "targets", SAVE_DIR) logging.info("Aggregrating validation set (Week 9)") - val_features = _load_weeks(val_weeks, "features", save_dir) - val_targets = _load_weeks(val_weeks, "targets", save_dir) + val_features = _load_weeks(val_weeks, "features", SAVE_DIR) + val_targets = _load_weeks(val_weeks, "targets", SAVE_DIR) # Optional: ensure float32 train_features = train_features.to(torch.float32) val_features = val_features.to(torch.float32) # Save pooled artifacts - torch.save(train_features, os.path.join(save_dir, "features_training.pt")) - torch.save(train_targets, os.path.join(save_dir, "targets_training.pt")) - torch.save(val_features, os.path.join(save_dir, "features_val.pt")) - torch.save(val_targets, os.path.join(save_dir, "targets_val.pt")) + torch.save(train_features, SAVE_DIR / "features_training.pt") + torch.save(train_targets, SAVE_DIR / "targets_training.pt") + torch.save(val_features, SAVE_DIR / "features_val.pt") + torch.save(val_targets, SAVE_DIR / "targets_val.pt") logging.info("Train features: %s", getattr(train_features, "shape", None)) logging.info("Val features: %s", getattr(val_features, "shape", None)) diff --git a/src/generate_predictions.py b/src/generate_predictions.py index c522008..a4241ab 100644 --- a/src/generate_predictions.py +++ b/src/generate_predictions.py @@ -4,10 +4,10 @@ Trains LSTM model on location tracking data Requires: -- Raw location tracking data in NFL_HOME/data/parquet -- Trained model in NFL_HOME/data/processed/model.pth +- Raw location tracking data in nfl/data/parquet +- Trained model in nfl/data/processed/model.pth -Performs inference on each week and saves to NFL_HOME/data/processed/week{n}_predictions.csv +Performs inference on each week and saves to nfl/data/processed/week{n}_predictions.csv """ import math @@ -15,6 +15,8 @@ import random import os import logging +import json +from pathlib import Path import pandas as pd pd.options.mode.chained_assignment = None @@ -29,50 +31,57 @@ from models.transformer import ManZoneTransformer from load_data import RawDataLoader from clean_data import * +from common.paths import PROJECT_ROOT, SAVE_DIR +from common.decorators import * +from common.args import parse_args + def process_week_data_preds(week_number, plays): - file_path = os.path.join(os.getenv("NFL_HOME"), "data", "parquet", f"tracking_week_{week_number}.parquet") - week = pd.read_parquet(file_path) - logging.info(f"Finished reading Week {week_number} data") + if os.getenv("CI_DATA_ROOT"): + WEEK_PARQUET_PATH = Path(os.getenv("CI_DATA_ROOT")) / f"tracking_week_{week_number}.parquet" + else: + WEEK_PARQUET_PATH = PROJECT_ROOT / "data" / "parquet" / f"tracking_week_{week_number}.parquet" + week = pd.read_parquet(WEEK_PARQUET_PATH) + logging.info(f"Finished reading Week {week_number} data") - # applying cleaning functions - week = rotate_direction_and_orientation(week) - week = make_plays_left_to_right(week) - week = calculate_velocity_components(week) - week = pass_attempt_merging(week, plays) - # week = label_offense_defense_coverage(week, plays) # for specific coverage... currently set to man/zone only - week = label_offense_defense_manzone(week, plays) + # applying cleaning functions + week = rotate_direction_and_orientation(week) + week = make_plays_left_to_right(week) + week = calculate_velocity_components(week) + week = pass_attempt_merging(week, plays) + # week = label_offense_defense_coverage(week, plays) # for specific coverage... currently set to man/zone only + week = label_offense_defense_manzone(week, plays) - week['week'] = week_number - week['uniqueId'] = week['gameId'].astype(str) + "_" + week['playId'].astype(str) - week['frameUniqueId'] = ( - week['gameId'].astype(str) + "_" + - week['playId'].astype(str) + "_" + - week['frameId'].astype(str)) + week['week'] = week_number + week['uniqueId'] = week['gameId'].astype(str) + "_" + week['playId'].astype(str) + week['frameUniqueId'] = ( + week['gameId'].astype(str) + "_" + + week['playId'].astype(str) + "_" + + week['frameId'].astype(str)) - # adding frames_from_snap (to do: make this a function but fine for now) - snap_frames = week[week['frameType'] == 'SNAP'].groupby('uniqueId')['frameId'].first() - week = week.merge(snap_frames.rename('snap_frame'), on='uniqueId', how='left') - week['frames_from_snap'] = week['frameId'] - week['snap_frame'] + # adding frames_from_snap (to do: make this a function but fine for now) + snap_frames = week[week['frameType'] == 'SNAP'].groupby('uniqueId')['frameId'].first() + week = week.merge(snap_frames.rename('snap_frame'), on='uniqueId', how='left') + week['frames_from_snap'] = week['frameId'] - week['snap_frame'] - # filtering only for even frames - # week = week[week['frameId'] % 2 == 0] + # filtering only for even frames + # week = week[week['frameId'] % 2 == 0] - # ridding of any potential outliers (25 seconds after the snap) - week = week[(week['frames_from_snap'] >= -150) & (week['frames_from_snap'] <= 30)] + # ridding of any potential outliers (25 seconds after the snap) + week = week[(week['frames_from_snap'] >= -150) & (week['frames_from_snap'] <= 30)] - # applying data augmentation to increase training size (centered around 0-4 seconds presnap!) - # -- 1/3rd of the current num of frames... specifically selecting for frames around the snap + # applying data augmentation to increase training size (centered around 0-4 seconds presnap!) + # -- 1/3rd of the current num of frames... specifically selecting for frames around the snap - # num_unique_frames = len(set(week['frameUniqueId'])) - # selected_frames = select_augmented_frames(week, int(num_unique_frames / 3), sigma=5) - # week_aug = data_augmentation(week, selected_frames) + # num_unique_frames = len(set(week['frameUniqueId'])) + # selected_frames = select_augmented_frames(week, int(num_unique_frames / 3), sigma=5) + # week_aug = data_augmentation(week, selected_frames) - # week = pd.concat([week, week_aug]) + # week = pd.concat([week, week_aug]) - logging.info(f"Finished processing Week {week_number} data") + logging.info(f"Finished processing Week {week_number} data") - return week + return week def prepare_tensor(play, num_players=22, num_features=5): @@ -92,22 +101,36 @@ def prepare_tensor(play, num_players=22, num_features=5): return all_frames_tensor # Shape: [num_frames, num_players, num_features] +@time_fcn def main(): + # Set logging logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') - save_path = os.path.join(os.getenv('NFL_HOME'), 'data', 'processed') - device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + # Get input args + args = parse_args() + # Enable/disable timing decorators + if args.profile: + set_time_decorators_enabled(True) + logging.info("Timing decorators enabled") + else: + set_time_decorators_enabled(False) + logging.info("Timing decorators disabled") + + # Get model params and set device + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + with open(PROJECT_ROOT / "data" / "training" / "model_params.json", 'r') as file: + model_params_map = json.load(file) model = ManZoneTransformer( - feature_len=5, # num of input features (x, y, v_x, v_y, defense) - model_dim=64, # experimented with 96 & 128... seems best - num_heads=2, # 2 seems best (but may have overfit when tried 4... may be worth iterating) - num_layers=4, - dim_feedforward=64 * 4, - dropout=0.1, # 10% dropout to prevent overfitting... iterate as model becomes more complex (industry std is higher, i believe) + feature_len=5, # num of input features (x, y, v_x, v_y, defense) + model_dim=model_params_map["model_dim"], + num_heads=model_params_map["num_heads"], + num_layers=model_params_map["num_layers"], + dim_feedforward=int(model_params_map["model_dim"]) * int(model_params_map["num_layers"]), + dropout=model_params_map["dropout"], output_dim=2 # man or zone classification ).to(device) - model.load_state_dict(torch.load(os.path.join(save_path, 'model.pth'), weights_only=True, map_location=device)) + model.load_state_dict(torch.load(PROJECT_ROOT / "data" / "training" / "best_model.pth", map_location=device)) model.eval() # Load data @@ -125,7 +148,7 @@ def main(): tracking_df_polars = pl.DataFrame(week_df) # or comment this out and use pandas below # Stream predictions to CSV in batches - out_pred_csv = os.path.join(save_path, f"week{week_eval}_preds.csv") + weekly_predictions_path_csv = SAVE_DIR / f"week{week_eval}_preds.csv" wrote_header = False batch = [] BATCH_SIZE = 5000 # tune (smaller => lower peak RAM) @@ -173,21 +196,21 @@ def main(): # Flush batch to CSV to keep RAM low if len(batch) >= BATCH_SIZE: - pd.DataFrame(batch).to_csv(out_pred_csv, mode='a', header=not wrote_header, index=False) + pd.DataFrame(batch).to_csv(weekly_predictions_path_csv, mode='a', header=not wrote_header, index=False) wrote_header = True batch.clear() # Flush tail if batch: - pd.DataFrame(batch).to_csv(out_pred_csv, mode='a', header=not wrote_header, index=False) + pd.DataFrame(batch).to_csv(weekly_predictions_path_csv, mode='a', header=not wrote_header, index=False) batch.clear() logging.info(f"Finished week {week_eval}... saved to week{week_eval}_preds.csv\n") # Merge week_df with preds (per-week, small) - preds_week = pd.read_csv(out_pred_csv, usecols=['frameUniqueId','zone_prob','man_prob','pred', 'actual']) + preds_week = pd.read_csv(weekly_predictions_path_csv, usecols=['frameUniqueId','zone_prob','man_prob','pred', 'actual']) tracking_preds = week_df.merge(preds_week, on='frameUniqueId', how='left') - tracking_preds.to_csv(os.path.join(save_path, f"tracking_week_{week_eval}_preds.csv"), index=False) + tracking_preds.to_csv(SAVE_DIR / f"tracking_week_{week_eval}_preds.csv", index=False) # Free RAM before next week del week_df, tracking_df_polars, preds_week, tracking_preds diff --git a/src/load_data.py b/src/load_data.py index 22fb985..54dceaf 100644 --- a/src/load_data.py +++ b/src/load_data.py @@ -7,13 +7,17 @@ import os import pandas as pd from typing import Tuple +from pathlib import Path + +from common.paths import PROJECT_ROOT + class RawDataLoader: - def __init__(self, nfl_home=None): + def __init__(self): if os.getenv("CI_DATA_ROOT"): - self.data_path = os.getenv("CI_DATA_ROOT") + self.DATA_PATH = Path(os.getenv("CI_DATA_ROOT")) else: - self.data_path = os.path.join(os.getenv('NFL_HOME'), 'data', 'parquet') + self.DATA_PATH = PROJECT_ROOT / "data" / "parquet" self.games_df = None self.plays_df = None self.players_df = None @@ -29,16 +33,16 @@ def _load_parquet(self, filepath): def _load_base_data(self): """Load games, plays, and players data""" - self.games_df = self._load_parquet(os.path.join(self.data_path, 'games.parquet')) - self.plays_df = self._load_parquet(os.path.join(self.data_path, 'plays.parquet')) - self.players_df = self._load_parquet(os.path.join(self.data_path, 'players.parquet')) + self.games_df = self._load_parquet(self.DATA_PATH / 'games.parquet') + self.plays_df = self._load_parquet(self.DATA_PATH / 'plays.parquet') + self.players_df = self._load_parquet(self.DATA_PATH / 'players.parquet') def _load_tracking_data(self, weeks=list[int]): """Load tracking data for specified weeks""" weekly_dfs = [] for week in weeks: - filepath = os.path.join(self.data_path, f'tracking_week_{week}.parquet') + filepath = self.DATA_PATH / f'tracking_week_{week}.parquet' df = self._load_parquet(filepath) if df is not None: weekly_dfs.append(df) diff --git a/src/old/train_xgb.py b/src/old/train_xgb.py index d6a4223..4ccbaa6 100644 --- a/src/old/train_xgb.py +++ b/src/old/train_xgb.py @@ -43,14 +43,15 @@ #from common.models.svc import SVC from common.models.rfr import RFRModel from common.models.mlp import MLPModel +from common.paths import PROJECT_ROOT def load_data() -> dict[str]: - base_path = os.path.join(os.getenv('NFL_HOME'), 'data', 'coverage') + base_path = PROJECT_ROOT / "data" / "coverage" data_file_list = ['x', 'y'] data_dict = {} for file in data_file_list: file_name = file + '.pkl' - file_path = os.path.join(base_path, file_name) + file_path = base_path / file_name if not os.path.exists(file_path): raise FileNotFoundError(f"Required data file {file_name} not found in {base_path}") else: @@ -70,7 +71,7 @@ def plot_roc(y_test, y_proba) -> None: plt.legend(loc='lower right') plt.grid(True) image_name = f'man_zone_roc_auc.png' - image_path = os.path.join(os.getenv('NFL_HOME'), 'output', 'coverage', image_name) + image_path = PROJECT_ROOT / "output" / "coverage" / image_name plt.savefig(image_path, dpi=200) mlflow.log_artifact(image_path, artifact_path="plots") @@ -159,10 +160,10 @@ def model_man_vs_zone() -> None: }) # Save scaler - artifact_path = os.path.join(os.getenv("NFL_HOME"), "output", "coverage") - os.makedirs(artifact_path, exist_ok=True) - joblib.dump(scaler, os.path.join(artifact_path, "standard_scaler.pkl")) - mlflow.log_artifact(os.path.join(artifact_path, "standard_scaler.pkl"), artifact_path="preprocessing") + artifact_path = PROJECT_ROOT / "output" / "coverage" + artifact_path.mkdir(parents=True, exist_ok=True) + joblib.dump(scaler, artifact_path / "standard_scaler.pkl") + mlflow.log_artifact(artifact_path / "standard_scaler.pkl", artifact_path="preprocessing") # Enable autologging so the fitted model is captured mlflow.xgboost.autolog(log_model_signatures=True, log_input_examples=True) @@ -228,10 +229,10 @@ def train_xgb(model, skf, x_train, y_train, x_test, y_test) -> None: # Save classification report as an artifact report_txt = classification_report(y_test, y_pred, target_names=['Zone', 'Man']) - artifact_path = os.path.join(os.getenv("NFL_HOME"), "output", "coverage") - with open(os.path.join(artifact_path, "classification_report.txt"), "w") as f: + artifact_path = PROJECT_ROOT / "output" / "coverage" + with open(artifact_path / "classification_report.txt", "w") as f: f.write(report_txt) - mlflow.log_artifact(os.path.join(artifact_path, "classification_report.txt"), artifact_path="reports") + mlflow.log_artifact(artifact_path / "classification_report.txt", artifact_path="reports") # Plot & log ROC curve plot_roc(y_test, y_proba) diff --git a/src/train_lstm.py b/src/train_lstm.py index 06e8d82..45a401f 100644 --- a/src/train_lstm.py +++ b/src/train_lstm.py @@ -3,7 +3,7 @@ """ Trains LSTM model on location tracking data -Requires raw location tracking data in NFL_HOME/data/parquet +Requires raw location tracking data in nfl/data/parquet Will produce classification report, confusion matrix, and ROC curve for best model """ diff --git a/src/train_transformer.py b/src/train_transformer.py index 791f891..5bc5868 100644 --- a/src/train_transformer.py +++ b/src/train_transformer.py @@ -9,16 +9,18 @@ - targets_training.pt - targets_val.pt -Will train 30 epochs (unless it early stops) and produce model.pth +Will train 50 epochs (unless it early stops) and produce model.pth """ import os import logging import math +from pathlib import Path import random +import random +import json import pandas as pd -pd.options.mode.chained_assignment = None import numpy as np import matplotlib.pyplot as plt import torch @@ -26,13 +28,34 @@ from torch.utils.data import TensorDataset, DataLoader from torch.optim import AdamW +# ML imports +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import StandardScaler +import torch +from torch.utils.data import TensorDataset, DataLoader +import joblib + +# Ray Tune +import ray +from ray import train, tune, air +from ray.air.integrations.mlflow import MLflowLoggerCallback, setup_mlflow +from ray.tune import Tuner, RunConfig, TuneConfig, FailureConfig, Checkpoint +from ray.tune import Tuner, RunConfig, TuneConfig, FailureConfig +from ray.tune.schedulers import ASHAScheduler + from models.transformer import ManZoneTransformer -from common.decorators import time_fcn +from common.decorators import set_time_decorators_enabled, time_fcn +from common.paths import PROJECT_ROOT, SAVE_DIR +from common.args import parse_args -def set_seed(seed: int = 42): +def set_seed(seed: int = 42) -> torch.Generator: # Python & NumPy random.seed(seed) np.random.seed(seed) + torch.manual_seed(seed) + g = torch.Generator() # Creates a generator that fixes the shuffle in torch Dataloader + g.manual_seed(seed) + os.environ["PYTHONHASHSEED"] = str(seed) # PyTorch CPU & CUDA @@ -48,8 +71,11 @@ def set_seed(seed: int = 42): # DO NOT enforce deterministic algorithms globally # torch.use_deterministic_algorithms(False) + return g + + @time_fcn -def train_epoch(train_loader: DataLoader, val_loader: DataLoader, model, optimizer, loss_fn, device) -> tuple[float, float]: +def train_epoch(train_loader: DataLoader, model, optimizer, loss_fn, device) -> float: # Training model.train() running_loss = 0.0 @@ -63,6 +89,12 @@ def train_epoch(train_loader: DataLoader, val_loader: DataLoader, model, optimiz running_loss += loss.item() * features.size(0) avg_train_loss = running_loss / len(train_loader.dataset) + # Return losses + return avg_train_loss + + +@time_fcn +def validate_epoch(val_loader: DataLoader, model, loss_fn, device) -> tuple[float, float]: # Validation model.eval() val_running_loss = 0.0 @@ -79,88 +111,242 @@ def train_epoch(train_loader: DataLoader, val_loader: DataLoader, model, optimiz val_accuracy = correct / len(val_loader.dataset) # Return losses - return avg_train_loss, avg_val_loss, val_accuracy + return avg_val_loss, val_accuracy @time_fcn -def main(): +def train_trial(config, args): - # Init logging and save path - logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') - save_path = os.path.join(os.getenv('NFL_HOME'), 'data', 'processed') + # Set seeds + g = set_seed(42) - # Define model and device - set_seed(42) - device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + ###################################################################### + # Create model, loss, optimizer + ###################################################################### + device = torch.device("cuda") # this is the Ray-assigned GPU (Ray sets CUDA_VISIBLE_DEVICES) + + # Defining ManZoneTransformer params, initializing optimizer and loss_fn model = ManZoneTransformer( - feature_len=5, # num of input features (x, y, v_x, v_y, defense) - model_dim=64, # TBD with tune - num_heads=2, # TBD with tune - num_layers=4, # TBD with tune - dim_feedforward=64 * 4, # model_dim * number of layers - dropout=0.1, # TBD with tune - output_dim=2 # man or zone classification + feature_len=5, # num of input features (x, y, v_x, v_y, defense) + model_dim=int(config["model_dim"]), # from ray tune or loaded + num_heads=int(config["num_heads"]), # from ray tune or loaded + num_layers=int(config["num_layers"]), # from ray tune or loaded + dim_feedforward=int(config["model_dim"]) * int(config["num_layers"]), # from ray tune or loaded + dropout=float(config["dropout"]), # 10% dropout to prevent overfitting... iterate as model becomes more complex (industry std is higher, i believe) + output_dim=2 # man or zone classification ).to(device) # Set optimizer and loss fcn optimizer = torch.optim.AdamW(model.parameters(), lr=1e-3) loss_fn = nn.CrossEntropyLoss() - early_stopping_patience = 5 - best_val_loss = float('inf') - epochs_no_improve = 0 - num_epochs = 50 + ###################################################################### + # Create dataloaders + ###################################################################### + # Load in data and create tensor datasets + train_features = torch.load(SAVE_DIR / f"features_training.pt") + train_targets = torch.load(SAVE_DIR / f"targets_training.pt") - # Init random - g = torch.Generator() # Creates a generator that fixes the shuffle in torch Dataloader - g.manual_seed(42) + val_features = torch.load(SAVE_DIR / f"features_val.pt") + val_targets = torch.load(SAVE_DIR / f"targets_val.pt") - # Create data loaders - train_features = torch.load(os.path.join(save_path, f"features_training.pt")) - train_targets = torch.load(os.path.join(save_path, f"targets_training.pt")) + # Create data loaders for batching train_loader = DataLoader( TensorDataset(train_features, train_targets), - batch_size=64, + batch_size=int(config["batch_size"]), shuffle=True, # We want random mini batches so GD doesn't overfit to specific ordering patterns, lets shuffle generator=g, # Fixes the shuffle num_workers=0, # Eliminate worker non-determinism pin_memory=True, # Batches are allocated on page-locked ("pinned") memory on the host, allows GPU driver to perform faster async DMA - ) + ) - val_features = torch.load(os.path.join(save_path, f"features_val.pt")) - val_targets = torch.load(os.path.join(save_path, f"targets_val.pt")) val_loader = DataLoader( TensorDataset(val_features, val_targets), - batch_size=64, + batch_size=int(config["batch_size"]), shuffle=False, # In eval we aren't updating the weights, so it doesn't really matter if we imply ordering or not num_workers=0, # Eliminate worker non-determinism pin_memory=True, # Batches are allocated on page-locked ("pinned") memory on the host, allows GPU driver to perform faster async DMA - ) + ) - # Train with early stoppping + ###################################################################### + # Train model (and evaluate) + ###################################################################### + # Init train_losses = [] val_losses = [] val_accuracies = [] - for epoch in range(num_epochs): + early_stopping_patience = 5 + best_val_loss = float('inf') + epochs_no_improve = 0 - avg_train_loss, avg_val_loss, val_accuracy = train_epoch(train_loader, val_loader, model, optimizer, loss_fn, device) + for epoch in range(int(config["epochs"])): + + # Train + avg_train_loss = train_epoch(train_loader, model, optimizer, loss_fn, device) train_losses.append(avg_train_loss) - val_losses.append(avg_val_loss) - val_accuracies.append(val_accuracy) - logging.info(f"Epoch [{epoch+1}/{num_epochs}]") + + # Validate + avg_val_loss, val_accuracy = validate_epoch(val_loader, model, loss_fn, device) + + # Info + logging.info(f"Epoch [{epoch + 1}/{int(config['epochs'])}]") logging.info(f"Train Loss: {avg_train_loss:.4f}, Val Loss: {avg_val_loss:.4f}, Val Accuracy: {val_accuracy:.4f}") - # Early stopping - if avg_val_loss < best_val_loss: - best_val_loss = avg_val_loss - epochs_no_improve = 0 - # saving the best model - torch.save(model.state_dict(), os.path.join(save_path, f"model.pth")) + if args.tune: + ###################################################################### + # Tune logging (with MLflow callback this is all mirrored there as well) + # NOTE: By calling tune.report here effectively once per epoch, that becomes our time scale! + ###################################################################### + session = tune.get_context() + trial_dir = Path(session.get_trial_dir()) + best_model_path = trial_dir / "best_model.pth" + + # Record metrics + metrics = { + "val_accuracy": val_accuracy, + # "val_loss": float(avg_val_loss), + # "train_loss": float(avg_train_loss), + } + + # Report metrics and save checkpoint if applicable (checkpoint every n epochs and don't have redudant checkpoints if using workers via train) + checkpoint = None + should_checkpoint = epoch % config.get("checkpoint_freq", 1) == 0 + if should_checkpoint: + ckpt_dir = trial_dir / f"ckpt_e{epoch:04d}" + ckpt_dir.mkdir(parents=True, exist_ok=True) + torch.save(model.state_dict(), ckpt_dir / "model.pth") + checkpoint = Checkpoint.from_directory(str(ckpt_dir)) + tune.report(metrics, checkpoint=checkpoint) + else: + tune.report(metrics) + else: - epochs_no_improve += 1 - if epochs_no_improve >= early_stopping_patience: - logging.info(f"Early stopping triggered") - break + # Record metrics + val_losses.append(avg_val_loss) + val_accuracies.append(val_accuracy) + + # Adding early stopping check (effort to prevent overfitting) + best_model_path = PROJECT_ROOT / "data" / "training" / "best_model.pth" + if avg_val_loss < best_val_loss: + best_val_loss = avg_val_loss + epochs_no_improve = 0 + torch.save(model.state_dict(), best_model_path) + else: + epochs_no_improve += 1 + if epochs_no_improve >= early_stopping_patience: + logging.info(f"Early stopping triggered") + break + + +@time_fcn +def run_HPO(args): + + ###################################################################### + # Start parent HPO, MLflow session + ###################################################################### + mlflow_tracking_uri = "sqlite:///mlflow.db" + experiment = "transformer" + + ###################################################################### + # Define search space and scheduler + ###################################################################### + transformer_params = { + # Varying model shape + "model_dim": tune.choice([32, 64, 128, 256]), + "num_heads": tune.choice([2, 4]), + "num_layers": tune.choice([1, 2, 3, 4]), + "dropout": tune.choice([0.0, 0.1, 0.2]) , + + # Training + "batch_size": tune.choice([32, 64, 128]), + + # Epochs / checkpointing + "epochs": 50, + "checkpoint_freq": 10, + } + + params=transformer_params + + # Async Successive Halfing Scheduler (ASHA) + # Instead of running all trials for all epochs, it allocates more resources to promising ones and kills of bad ones early + scheduler = ASHAScheduler( + max_t=params["epochs"], # Max amount of "things" on our whatever our scale is (since we call tune.report once per epoch this max epochs per trial) + grace_period=params["checkpoint_freq"]+1, # Allow for 6 epochs each trial until we kill it + reduction_factor=2, # ASHA keeps about 50% of the top trials each time it prunes + ) + + ###################################################################### + # Build tuner; pass MLflow context and PARENT RUN ID to workers via env vars + ###################################################################### + trainable = tune.with_parameters(train_trial, args=args) # Allows each training run to have any specific params + tuner = Tuner( + tune.with_resources(trainable, resources={"cpu": 4, "gpu": 1}), # Gives 4 CPU and one GPU per trial + param_space=params, + tune_config=TuneConfig( + metric="val_accuracy", + mode="max", + scheduler=scheduler, + num_samples=10, # total trials + ), + run_config=RunConfig( + name="transformer_hpo", + storage_path=os.path.abspath("./log/ray_results"), + failure_config=FailureConfig(fail_fast=True), + callbacks=[ + MLflowLoggerCallback( + tracking_uri=mlflow_tracking_uri, + experiment_name=experiment, + save_artifact=True, + ) + ], + ), + ) + + ###################################################################### + # Execute HPO + ###################################################################### + results = tuner.fit() + best = results.get_best_result(metric="val_accuracy", mode="max") + print("Best config:", best.config) + + +@time_fcn +def main(): + + # Set logging + logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') + + # Get input args + args = parse_args() + + # Enable/disable timing decorators + if args.profile: + set_time_decorators_enabled(True) + logging.info("Timing decorators enabled") + else: + set_time_decorators_enabled(False) + logging.info("Timing decorators disabled") + + # We are doing HPO with Ray + if args.tune: + # Disable some warnings about GPUs if we don't use them (we are always using GPUs for training here) + os.environ["RAY_ACCEL_ENV_VAR_OVERRIDE_ON_ZERO"] = "0" + + # Set the runtime env to only ship src/, the whole repo that has a bunch of data + script_dir = Path(__file__).resolve().parent # Directory containing train_transformer.py (i.e., src/) + ray.init( + runtime_env={ + "working_dir": str(script_dir), + } + ) + run_HPO(args) + + # We are doing a single run with fixed model parameters located at nfl/data/training/model_params.json + else: + with open(PROJECT_ROOT / "data" / "training" / "model_params.json", 'r') as file: + model_params_map = json.load(file) + train_trial(model_params_map, args) + if __name__ == "__main__": - main() \ No newline at end of file + main() \ No newline at end of file diff --git a/src/viz/draw_play_driver.py b/src/viz/draw_play_driver.py index 8b73d29..c75b8ab 100644 --- a/src/viz/draw_play_driver.py +++ b/src/viz/draw_play_driver.py @@ -10,6 +10,8 @@ from data_processing.process import load_data from data_processing.draw_play import animate_play +from common.paths import PROJECT_ROOT + if __name__ == "__main__": @@ -17,10 +19,10 @@ random.seed(42) # Load data - games_df = load_data(os.path.join(os.getenv('NFL_HOME'),'data', 'raw', 'games.csv')) - plays_df = load_data(os.path.join(os.getenv('NFL_HOME'),'data', 'raw', 'plays.csv')) - players_df = load_data(os.path.join(os.getenv('NFL_HOME'),'data','raw', 'players.csv')) - week1_df = load_data(os.path.join(os.getenv('NFL_HOME'),'data','raw', 'tracking_week_1.csv')) + games_df = load_data(PROJECT_ROOT / 'data' / 'raw' / 'games.csv') + plays_df = load_data(PROJECT_ROOT / 'data' / 'raw' / 'plays.csv') + players_df = load_data(PROJECT_ROOT / 'data' / 'raw' / 'players.csv') + week1_df = load_data(PROJECT_ROOT / 'data' / 'raw' / 'tracking_week_1.csv') # Draw play frame for i in range(0,len(games_df)): diff --git a/uv.lock b/uv.lock index 3cfd86d..ec4e8d5 100644 --- a/uv.lock +++ b/uv.lock @@ -3,25 +3,25 @@ requires-python = ">=3.12" [[package]] name = "alembic" -version = "1.17.0" +version = "1.17.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mako" }, { name = "sqlalchemy" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6b/45/6f4555f2039f364c3ce31399529dcf48dd60726ff3715ad67f547d87dfd2/alembic-1.17.0.tar.gz", hash = "sha256:4652a0b3e19616b57d652b82bfa5e38bf5dbea0813eed971612671cb9e90c0fe", size = 1975526 } +sdist = { url = "https://files.pythonhosted.org/packages/02/a6/74c8cadc2882977d80ad756a13857857dbcf9bd405bc80b662eb10651282/alembic-1.17.2.tar.gz", hash = "sha256:bbe9751705c5e0f14877f02d46c53d10885e377e3d90eda810a016f9baa19e8e", size = 1988064 } wheels = [ - { url = "https://files.pythonhosted.org/packages/44/1f/38e29b06bfed7818ebba1f84904afdc8153ef7b6c7e0d8f3bc6643f5989c/alembic-1.17.0-py3-none-any.whl", hash = "sha256:80523bc437d41b35c5db7e525ad9d908f79de65c27d6a5a5eab6df348a352d99", size = 247449 }, + { url = "https://files.pythonhosted.org/packages/ba/88/6237e97e3385b57b5f1528647addea5cc03d4d65d5979ab24327d41fb00d/alembic-1.17.2-py3-none-any.whl", hash = "sha256:f483dd1fe93f6c5d49217055e4d15b905b425b6af906746abb35b69c1996c4e6", size = 248554 }, ] [[package]] name = "annotated-doc" -version = "0.0.3" +version = "0.0.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/a6/dc46877b911e40c00d395771ea710d5e77b6de7bacd5fdcd78d70cc5a48f/annotated_doc-0.0.3.tar.gz", hash = "sha256:e18370014c70187422c33e945053ff4c286f453a984eba84d0dbfa0c935adeda", size = 5535 } +sdist = { url = "https://files.pythonhosted.org/packages/57/ba/046ceea27344560984e26a590f90bc7f4a75b06701f653222458922b558c/annotated_doc-0.0.4.tar.gz", hash = "sha256:fbcda96e87e9c92ad167c2e53839e57503ecfda18804ea28102353485033faa4", size = 7288 } wheels = [ - { url = "https://files.pythonhosted.org/packages/02/b7/cf592cb5de5cb3bade3357f8d2cf42bf103bbe39f459824b4939fd212911/annotated_doc-0.0.3-py3-none-any.whl", hash = "sha256:348ec6664a76f1fd3be81f43dffbee4c7e8ce931ba71ec67cc7f4ade7fbbb580", size = 5488 }, + { url = "https://files.pythonhosted.org/packages/1e/d3/26bf1008eb3d2daa8ef4cacc7f3bfdc11818d111f7e2d0201bc6e3b49d45/annotated_doc-0.0.4-py3-none-any.whl", hash = "sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320", size = 5303 }, ] [[package]] @@ -58,48 +58,32 @@ wheels = [ [[package]] name = "asttokens" -version = "3.0.0" +version = "3.0.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/4a/e7/82da0a03e7ba5141f05cce0d302e6eed121ae055e0456ca228bf693984bc/asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7", size = 61978 } +sdist = { url = "https://files.pythonhosted.org/packages/be/a5/8e3f9b6771b0b408517c82d97aed8f2036509bc247d46114925e32fe33f0/asttokens-3.0.1.tar.gz", hash = "sha256:71a4ee5de0bde6a31d64f6b13f2293ac190344478f081c3d1bccfcf5eacb0cb7", size = 62308 } wheels = [ - { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918 }, + { url = "https://files.pythonhosted.org/packages/d2/39/e7eaf1799466a4aef85b6a4fe7bd175ad2b1c6345066aa33f1f58d4b18d0/asttokens-3.0.1-py3-none-any.whl", hash = "sha256:15a3ebc0f43c2d0a50eeafea25e19046c68398e487b9f1f5b517f7c0f40f976a", size = 27047 }, ] [[package]] -name = "black" -version = "25.9.0" +name = "attrs" +version = "25.4.0" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, - { name = "mypy-extensions" }, - { name = "packaging" }, - { name = "pathspec" }, - { name = "platformdirs" }, - { name = "pytokens" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/4b/43/20b5c90612d7bdb2bdbcceeb53d588acca3bb8f0e4c5d5c751a2c8fdd55a/black-25.9.0.tar.gz", hash = "sha256:0474bca9a0dd1b51791fcc507a4e02078a1c63f6d4e4ae5544b9848c7adfb619", size = 648393 } +sdist = { url = "https://files.pythonhosted.org/packages/6b/5c/685e6633917e101e5dcb62b9dd76946cbb57c26e133bae9e0cd36033c0a9/attrs-25.4.0.tar.gz", hash = "sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11", size = 934251 } wheels = [ - { url = "https://files.pythonhosted.org/packages/fb/8e/319cfe6c82f7e2d5bfb4d3353c6cc85b523d677ff59edc61fdb9ee275234/black-25.9.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1b9dc70c21ef8b43248f1d86aedd2aaf75ae110b958a7909ad8463c4aa0880b0", size = 1742012 }, - { url = "https://files.pythonhosted.org/packages/94/cc/f562fe5d0a40cd2a4e6ae3f685e4c36e365b1f7e494af99c26ff7f28117f/black-25.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8e46eecf65a095fa62e53245ae2795c90bdecabd53b50c448d0a8bcd0d2e74c4", size = 1581421 }, - { url = "https://files.pythonhosted.org/packages/84/67/6db6dff1ebc8965fd7661498aea0da5d7301074b85bba8606a28f47ede4d/black-25.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9101ee58ddc2442199a25cb648d46ba22cd580b00ca4b44234a324e3ec7a0f7e", size = 1655619 }, - { url = "https://files.pythonhosted.org/packages/10/10/3faef9aa2a730306cf469d76f7f155a8cc1f66e74781298df0ba31f8b4c8/black-25.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:77e7060a00c5ec4b3367c55f39cf9b06e68965a4f2e61cecacd6d0d9b7ec945a", size = 1342481 }, - { url = "https://files.pythonhosted.org/packages/48/99/3acfea65f5e79f45472c45f87ec13037b506522719cd9d4ac86484ff51ac/black-25.9.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0172a012f725b792c358d57fe7b6b6e8e67375dd157f64fa7a3097b3ed3e2175", size = 1742165 }, - { url = "https://files.pythonhosted.org/packages/3a/18/799285282c8236a79f25d590f0222dbd6850e14b060dfaa3e720241fd772/black-25.9.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3bec74ee60f8dfef564b573a96b8930f7b6a538e846123d5ad77ba14a8d7a64f", size = 1581259 }, - { url = "https://files.pythonhosted.org/packages/f1/ce/883ec4b6303acdeca93ee06b7622f1fa383c6b3765294824165d49b1a86b/black-25.9.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b756fc75871cb1bcac5499552d771822fd9db5a2bb8db2a7247936ca48f39831", size = 1655583 }, - { url = "https://files.pythonhosted.org/packages/21/17/5c253aa80a0639ccc427a5c7144534b661505ae2b5a10b77ebe13fa25334/black-25.9.0-cp313-cp313-win_amd64.whl", hash = "sha256:846d58e3ce7879ec1ffe816bb9df6d006cd9590515ed5d17db14e17666b2b357", size = 1343428 }, - { url = "https://files.pythonhosted.org/packages/1b/46/863c90dcd3f9d41b109b7f19032ae0db021f0b2a81482ba0a1e28c84de86/black-25.9.0-py3-none-any.whl", hash = "sha256:474b34c1342cdc157d307b56c4c65bce916480c4a8f6551fdc6bf9b486a7c4ae", size = 203363 }, + { url = "https://files.pythonhosted.org/packages/3a/2a/7cc015f5b9f5db42b7d48157e23356022889fc354a2813c15934b7cb5c0e/attrs-25.4.0-py3-none-any.whl", hash = "sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373", size = 67615 }, ] [[package]] name = "bleach" -version = "6.2.0" +version = "6.3.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "webencodings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/76/9a/0e33f5054c54d349ea62c277191c020c2d6ef1d65ab2cb1993f91ec846d1/bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f", size = 203083 } +sdist = { url = "https://files.pythonhosted.org/packages/07/18/3c8523962314be6bf4c8989c79ad9531c825210dd13a8669f6b84336e8bd/bleach-6.3.0.tar.gz", hash = "sha256:6f3b91b1c0a02bb9a78b5a454c92506aa0fdf197e1d5e114d2e00c6f64306d22", size = 203533 } wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e", size = 163406 }, + { url = "https://files.pythonhosted.org/packages/cd/3a/577b549de0cc09d95f11087ee63c739bba856cd3952697eec4c4bb91350a/bleach-6.3.0-py3-none-any.whl", hash = "sha256:fe10ec77c93ddf3d13a73b035abaac7a9f5e436513864ccdad516693213c65d6", size = 164437 }, ] [[package]] @@ -127,11 +111,11 @@ wheels = [ [[package]] name = "cachetools" -version = "6.2.1" +version = "6.2.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cc/7e/b975b5814bd36faf009faebe22c1072a1fa1168db34d285ef0ba071ad78c/cachetools-6.2.1.tar.gz", hash = "sha256:3f391e4bd8f8bf0931169baf7456cc822705f4e2a31f840d218f445b9a854201", size = 31325 } +sdist = { url = "https://files.pythonhosted.org/packages/fb/44/ca1675be2a83aeee1886ab745b28cda92093066590233cc501890eb8417a/cachetools-6.2.2.tar.gz", hash = "sha256:8e6d266b25e539df852251cfd6f990b4bc3a141db73b939058d809ebd2590fc6", size = 31571 } wheels = [ - { url = "https://files.pythonhosted.org/packages/96/c5/1e741d26306c42e2bf6ab740b2202872727e0f606033c9dd713f8b93f5a8/cachetools-6.2.1-py3-none-any.whl", hash = "sha256:09868944b6dde876dfd44e1d47e18484541eaf12f26f29b7af91b26cc892d701", size = 11280 }, + { url = "https://files.pythonhosted.org/packages/e6/46/eb6eca305c77a4489affe1c5d8f4cae82f285d9addd8de4ec084a7184221/cachetools-6.2.2-py3-none-any.whl", hash = "sha256:6c09c98183bf58560c97b2abfcedcbaf6a896a490f534b031b661d3723b45ace", size = 11503 }, ] [[package]] @@ -161,11 +145,11 @@ wheels = [ [[package]] name = "certifi" -version = "2025.10.5" +version = "2025.11.12" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/4c/5b/b6ce21586237c77ce67d01dc5507039d444b630dd76611bbca2d8e5dcd91/certifi-2025.10.5.tar.gz", hash = "sha256:47c09d31ccf2acf0be3f701ea53595ee7e0b8fa08801c6624be771df09ae7b43", size = 164519 } +sdist = { url = "https://files.pythonhosted.org/packages/a2/8c/58f469717fa48465e4a50c014a0400602d3c437d7c0c468e17ada824da3a/certifi-2025.11.12.tar.gz", hash = "sha256:d8ab5478f2ecd78af242878415affce761ca6bc54a22a27e026d7c25357c3316", size = 160538 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e4/37/af0d2ef3967ac0d6113837b44a4f0bfe1328c2b9763bd5b1744520e5cfed/certifi-2025.10.5-py3-none-any.whl", hash = "sha256:0f212c2744a9bb6de0c56639a6f68afe01ecd92d91f14ae897c4fe7bbeeef0de", size = 163286 }, + { url = "https://files.pythonhosted.org/packages/70/7d/9bc192684cea499815ff478dfcdc13835ddf401365057044fb721ec6bddb/certifi-2025.11.12-py3-none-any.whl", hash = "sha256:97de8790030bbd5c2d96b7ec782fc2f7820ef8dba6db909ccf95449f2d062d4b", size = 159438 }, ] [[package]] @@ -284,23 +268,23 @@ wheels = [ [[package]] name = "click" -version = "8.3.0" +version = "8.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/46/61/de6cd827efad202d7057d93e0fed9294b96952e188f7384832791c7b2254/click-8.3.0.tar.gz", hash = "sha256:e7b8232224eba16f4ebe410c25ced9f7875cb5f3263ffc93cc3e8da705e229c4", size = 276943 } +sdist = { url = "https://files.pythonhosted.org/packages/3d/fa/656b739db8587d7b5dfa22e22ed02566950fbfbcdc20311993483657a5c0/click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a", size = 295065 } wheels = [ - { url = "https://files.pythonhosted.org/packages/db/d3/9dcc0f5797f070ec8edf30fbadfb200e71d9db6b84d211e3b2085a7589a0/click-8.3.0-py3-none-any.whl", hash = "sha256:9b9f285302c6e3064f4330c05f05b81945b2a39544279343e6e7c5f27a9baddc", size = 107295 }, + { url = "https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6", size = 108274 }, ] [[package]] name = "cloudpickle" -version = "3.1.1" +version = "3.1.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/52/39/069100b84d7418bc358d81669d5748efb14b9cceacd2f9c75f550424132f/cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64", size = 22113 } +sdist = { url = "https://files.pythonhosted.org/packages/27/fb/576f067976d320f5f0114a8d9fa1215425441bb35627b1993e5afd8111e5/cloudpickle-3.1.2.tar.gz", hash = "sha256:7fda9eb655c9c230dab534f1983763de5835249750e85fbcef43aaa30a9a2414", size = 22330 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/e8/64c37fadfc2816a7701fa8a6ed8d87327c7d54eacfbfb6edab14a2f2be75/cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e", size = 20992 }, + { url = "https://files.pythonhosted.org/packages/88/39/799be3f2f0f38cc727ee3b4f1445fe6d5e4133064ec2e4115069418a5bb6/cloudpickle-3.1.2-py3-none-any.whl", hash = "sha256:9acb47f6afd73f60dc1df93bb801b472f05ff42fa6c84167d25cb206be1fbf4a", size = 22228 }, ] [[package]] @@ -454,16 +438,16 @@ wheels = [ [[package]] name = "databricks-sdk" -version = "0.70.0" +version = "0.73.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "google-auth" }, { name = "protobuf" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0e/c0/7bca00fcf265bc1fc8ac9452f8fc80779ca56225e11ffce5fbbcd1b47e17/databricks_sdk-0.70.0.tar.gz", hash = "sha256:a4e2141972a5aebca7f4cda0a8e7e3ea444d150fea9bb28fcbd1746e62f65735", size = 798157 } +sdist = { url = "https://files.pythonhosted.org/packages/a8/7f/cfb2a00d10f6295332616e5b22f2ae3aaf2841a3afa6c49262acb6b94f5b/databricks_sdk-0.73.0.tar.gz", hash = "sha256:db09eaaacd98e07dded78d3e7ab47d2f6c886e0380cb577977bd442bace8bd8d", size = 801017 } wheels = [ - { url = "https://files.pythonhosted.org/packages/45/b9/202b3ff6f2c53736aa45b68870da0de1226e1abe15fc3f2222278cb8193c/databricks_sdk-0.70.0-py3-none-any.whl", hash = "sha256:f573d76cd6960d390253929950210145e9175242196c6f192facd8ea00bc91f2", size = 752568 }, + { url = "https://files.pythonhosted.org/packages/a7/27/b822b474aaefb684d11df358d52e012699a2a8af231f9b47c54b73f280cb/databricks_sdk-0.73.0-py3-none-any.whl", hash = "sha256:a4d3cfd19357a2b459d2dc3101454d7f0d1b62865ce099c35d0c342b66ac64ff", size = 753896 }, ] [[package]] @@ -521,7 +505,7 @@ wheels = [ [[package]] name = "fastapi" -version = "0.120.0" +version = "0.121.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "annotated-doc" }, @@ -529,9 +513,9 @@ dependencies = [ { name = "starlette" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f7/0e/7f29e8f7219e4526747db182e1afb5a4b6abc3201768fb38d81fa2536241/fastapi-0.120.0.tar.gz", hash = "sha256:6ce2c1cfb7000ac14ffd8ddb2bc12e62d023a36c20ec3710d09d8e36fab177a0", size = 337603 } +sdist = { url = "https://files.pythonhosted.org/packages/fb/48/f08f264da34cf160db82c62ffb335e838b1fc16cbcc905f474c7d4c815db/fastapi-0.121.2.tar.gz", hash = "sha256:ca8e932b2b823ec1721c641e3669472c855ad9564a2854c9899d904c2848b8b9", size = 342944 } wheels = [ - { url = "https://files.pythonhosted.org/packages/1d/60/7a639ceaba54aec4e1d5676498c568abc654b95762d456095b6cb529b1ca/fastapi-0.120.0-py3-none-any.whl", hash = "sha256:84009182e530c47648da2f07eb380b44b69889a4acfd9e9035ee4605c5cfc469", size = 108243 }, + { url = "https://files.pythonhosted.org/packages/eb/23/dfb161e91db7c92727db505dc72a384ee79681fe0603f706f9f9f52c2901/fastapi-0.121.2-py3-none-any.whl", hash = "sha256:f2d80b49a86a846b70cc3a03eb5ea6ad2939298bf6a7fe377aa9cd3dd079d358", size = 109201 }, ] [[package]] @@ -543,20 +527,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/76/91/7216b27286936c16f5b4d0c530087e4a54eead683e6b0b73dd0c64844af6/filelock-3.20.0-py3-none-any.whl", hash = "sha256:339b4732ffda5cd79b13f4e2711a31b0365ce445d95d243bb996273d072546a2", size = 16054 }, ] -[[package]] -name = "flake8" -version = "7.3.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "mccabe" }, - { name = "pycodestyle" }, - { name = "pyflakes" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/9b/af/fbfe3c4b5a657d79e5c47a2827a362f9e1b763336a52f926126aa6dc7123/flake8-7.3.0.tar.gz", hash = "sha256:fe044858146b9fc69b551a4b490d69cf960fcb78ad1edcb84e7fbb1b4a8e3872", size = 48326 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/56/13ab06b4f93ca7cac71078fbe37fcea175d3216f31f85c3168a6bbd0bb9a/flake8-7.3.0-py2.py3-none-any.whl", hash = "sha256:b9696257b9ce8beb888cdbe31cf885c90d31928fe202be0889a7cdafad32f01e", size = 57922 }, -] - [[package]] name = "flask" version = "3.1.2" @@ -630,11 +600,11 @@ wheels = [ [[package]] name = "fsspec" -version = "2025.9.0" +version = "2025.10.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/de/e0/bab50af11c2d75c9c4a2a26a5254573c0bd97cea152254401510950486fa/fsspec-2025.9.0.tar.gz", hash = "sha256:19fd429483d25d28b65ec68f9f4adc16c17ea2c7c7bf54ec61360d478fb19c19", size = 304847 } +sdist = { url = "https://files.pythonhosted.org/packages/24/7f/2747c0d332b9acfa75dc84447a066fdf812b5a6b8d30472b74d309bfe8cb/fsspec-2025.10.0.tar.gz", hash = "sha256:b6789427626f068f9a83ca4e8a3cc050850b6c0f71f99ddb4f542b8266a26a59", size = 309285 } wheels = [ - { url = "https://files.pythonhosted.org/packages/47/71/70db47e4f6ce3e5c37a607355f80da8860a33226be640226ac52cb05ef2e/fsspec-2025.9.0-py3-none-any.whl", hash = "sha256:530dc2a2af60a414a832059574df4a6e10cce927f6f4a78209390fe38955cfb7", size = 199289 }, + { url = "https://files.pythonhosted.org/packages/eb/02/a6b21098b1d5d6249b7c5ab69dde30108a71e4e819d4a9778f1de1d5b70d/fsspec-2025.10.0-py3-none-any.whl", hash = "sha256:7c7712353ae7d875407f97715f0e1ffcc21e33d5b24556cb1e090ae9409ec61d", size = 200966 }, ] [[package]] @@ -663,16 +633,16 @@ wheels = [ [[package]] name = "google-auth" -version = "2.41.1" +version = "2.43.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cachetools" }, { name = "pyasn1-modules" }, { name = "rsa" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a8/af/5129ce5b2f9688d2fa49b463e544972a7c82b0fdb50980dafee92e121d9f/google_auth-2.41.1.tar.gz", hash = "sha256:b76b7b1f9e61f0cb7e88870d14f6a94aeef248959ef6992670efee37709cbfd2", size = 292284 } +sdist = { url = "https://files.pythonhosted.org/packages/ff/ef/66d14cf0e01b08d2d51ffc3c20410c4e134a1548fc246a6081eae585a4fe/google_auth-2.43.0.tar.gz", hash = "sha256:88228eee5fc21b62a1b5fe773ca15e67778cb07dc8363adcb4a8827b52d81483", size = 296359 } wheels = [ - { url = "https://files.pythonhosted.org/packages/be/a4/7319a2a8add4cc352be9e3efeff5e2aacee917c85ca2fa1647e29089983c/google_auth-2.41.1-py2.py3-none-any.whl", hash = "sha256:754843be95575b9a19c604a848a41be03f7f2afd8c019f716dc1f51ee41c639d", size = 221302 }, + { url = "https://files.pythonhosted.org/packages/6f/d1/385110a9ae86d91cc14c5282c61fe9f4dc41c0b9f7d423c6ad77038c4448/google_auth-2.43.0-py2.py3-none-any.whl", hash = "sha256:af628ba6fa493f75c7e9dbe9373d148ca9f4399b5ea29976519e0a3848eddd16", size = 223114 }, ] [[package]] @@ -692,11 +662,11 @@ wheels = [ [[package]] name = "graphql-core" -version = "3.2.6" +version = "3.2.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c4/16/7574029da84834349b60ed71614d66ca3afe46e9bf9c7b9562102acb7d4f/graphql_core-3.2.6.tar.gz", hash = "sha256:c08eec22f9e40f0bd61d805907e3b3b1b9a320bc606e23dc145eebca07c8fbab", size = 505353 } +sdist = { url = "https://files.pythonhosted.org/packages/ac/9b/037a640a2983b09aed4a823f9cf1729e6d780b0671f854efa4727a7affbe/graphql_core-3.2.7.tar.gz", hash = "sha256:27b6904bdd3b43f2a0556dad5d579bdfdeab1f38e8e8788e555bdcb586a6f62c", size = 513484 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ae/4f/7297663840621022bc73c22d7d9d80dbc78b4db6297f764b545cd5dd462d/graphql_core-3.2.6-py3-none-any.whl", hash = "sha256:78b016718c161a6fb20a7d97bbf107f331cd1afe53e45566c59f776ed7f0b45f", size = 203416 }, + { url = "https://files.pythonhosted.org/packages/0a/14/933037032608787fb92e365883ad6a741c235e0ff992865ec5d904a38f1e/graphql_core-3.2.7-py3-none-any.whl", hash = "sha256:17fc8f3ca4a42913d8e24d9ac9f08deddf0a0b2483076575757f6c412ead2ec0", size = 207262 }, ] [[package]] @@ -780,6 +750,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515 }, ] +[[package]] +name = "huey" +version = "2.5.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/c6/dfe74b0ee9708216ab798449b694d6ba7c1b701bdc2e5d378ec0505ca9a9/huey-2.5.4.tar.gz", hash = "sha256:4b7fb217b640fbb46efc4f4681b446b40726593522f093e8ef27c4a8fcb6cfbb", size = 848666 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0a/86/fb8f2ec721106ee9d47adb3a757f937044a52239adb26bae6d9ad753927b/huey-2.5.4-py3-none-any.whl", hash = "sha256:0eac1fb2711f6366a1db003629354a0cea470a3db720d5bab0d140c28e993f9c", size = 76843 }, +] + [[package]] name = "idna" version = "3.11" @@ -801,18 +780,9 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/20/b0/36bd937216ec521246249be3bf9855081de4c5e06a0c9b4219dbeda50373/importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd", size = 27656 }, ] -[[package]] -name = "iniconfig" -version = "2.3.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", size = 20503 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 7484 }, -] - [[package]] name = "ipykernel" -version = "7.0.1" +version = "7.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "appnope", marker = "sys_platform == 'darwin'" }, @@ -829,9 +799,9 @@ dependencies = [ { name = "tornado" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a8/4c/9f0024c8457286c6bfd5405a15d650ec5ea36f420ef9bbc58b301f66cfc5/ipykernel-7.0.1.tar.gz", hash = "sha256:2d3fd7cdef22071c2abbad78f142b743228c5d59cd470d034871ae0ac359533c", size = 171460 } +sdist = { url = "https://files.pythonhosted.org/packages/b9/a4/4948be6eb88628505b83a1f2f40d90254cab66abf2043b3c40fa07dfce0f/ipykernel-7.1.0.tar.gz", hash = "sha256:58a3fc88533d5930c3546dc7eac66c6d288acde4f801e2001e65edc5dc9cf0db", size = 174579 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b8/f7/761037905ffdec673533bfa43af8d4c31c859c778dfc3bbb71899875ec18/ipykernel-7.0.1-py3-none-any.whl", hash = "sha256:87182a8305e28954b6721087dec45b171712610111d494c17bb607befa1c4000", size = 118157 }, + { url = "https://files.pythonhosted.org/packages/a3/17/20c2552266728ceba271967b87919664ecc0e33efca29c3efc6baf88c5f9/ipykernel-7.1.0-py3-none-any.whl", hash = "sha256:763b5ec6c5b7776f6a8d7ce09b267693b4e5ce75cb50ae696aaefb3c85e1ea4c", size = 117968 }, ] [[package]] @@ -853,7 +823,7 @@ wheels = [ [[package]] name = "ipython" -version = "9.6.0" +version = "9.7.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, @@ -867,9 +837,9 @@ dependencies = [ { name = "stack-data" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2a/34/29b18c62e39ee2f7a6a3bba7efd952729d8aadd45ca17efc34453b717665/ipython-9.6.0.tar.gz", hash = "sha256:5603d6d5d356378be5043e69441a072b50a5b33b4503428c77b04cb8ce7bc731", size = 4396932 } +sdist = { url = "https://files.pythonhosted.org/packages/29/e6/48c74d54039241a456add616464ea28c6ebf782e4110d419411b83dae06f/ipython-9.7.0.tar.gz", hash = "sha256:5f6de88c905a566c6a9d6c400a8fed54a638e1f7543d17aae2551133216b1e4e", size = 4422115 } wheels = [ - { url = "https://files.pythonhosted.org/packages/48/c5/d5e07995077e48220269c28a221e168c91123ad5ceee44d548f54a057fc0/ipython-9.6.0-py3-none-any.whl", hash = "sha256:5f77efafc886d2f023442479b8149e7d86547ad0a979e9da9f045d252f648196", size = 616170 }, + { url = "https://files.pythonhosted.org/packages/05/aa/62893d6a591d337aa59dcc4c6f6c842f1fe20cd72c8c5c1f980255243252/ipython-9.7.0-py3-none-any.whl", hash = "sha256:bce8ac85eb9521adc94e1845b4c03d88365fd6ac2f4908ec4ed1eb1b0a065f9f", size = 618911 }, ] [[package]] @@ -942,6 +912,33 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/1e/e8/685f47e0d754320684db4425a0967f7d3fa70126bffd76110b7009a0090f/joblib-1.5.2-py3-none-any.whl", hash = "sha256:4e1f0bdbb987e6d843c70cf43714cb276623def372df3c22fe5266b2670bc241", size = 308396 }, ] +[[package]] +name = "jsonschema" +version = "4.25.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "jsonschema-specifications" }, + { name = "referencing" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/74/69/f7185de793a29082a9f3c7728268ffb31cb5095131a9c139a74078e27336/jsonschema-4.25.1.tar.gz", hash = "sha256:e4a9655ce0da0c0b67a085847e00a3a51449e1157f4f75e9fb5aa545e122eb85", size = 357342 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/9c/8c95d856233c1f82500c2450b8c68576b4cf1c871db3afac5c34ff84e6fd/jsonschema-4.25.1-py3-none-any.whl", hash = "sha256:3fba0169e345c7175110351d456342c364814cfcf3b964ba4587f22915230a63", size = 90040 }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2025.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d", size = 32855 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437 }, +] + [[package]] name = "jupyter-client" version = "8.6.3" @@ -1235,18 +1232,9 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/af/33/ee4519fa02ed11a94aef9559552f3b17bb863f2ecfe1a35dc7f548cde231/matplotlib_inline-0.2.1-py3-none-any.whl", hash = "sha256:d56ce5156ba6085e00a9d54fead6ed29a9c47e215cd1bba2e976ef39f5710a76", size = 9516 }, ] -[[package]] -name = "mccabe" -version = "0.7.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e7/ff/0ffefdcac38932a54d2b5eed4e0ba8a408f215002cd178ad1df0f2806ff8/mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325", size = 9658 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c207934b35b86a8ca3aad8395a3d6dd7921c0686e23853ff5a9/mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e", size = 7350 }, -] - [[package]] name = "mlflow" -version = "3.5.1" +version = "3.6.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "alembic" }, @@ -1256,6 +1244,7 @@ dependencies = [ { name = "flask-cors" }, { name = "graphene" }, { name = "gunicorn", marker = "sys_platform != 'win32'" }, + { name = "huey" }, { name = "matplotlib" }, { name = "mlflow-skinny" }, { name = "mlflow-tracing" }, @@ -1267,14 +1256,14 @@ dependencies = [ { name = "sqlalchemy" }, { name = "waitress", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/64/7e/516ba65bfa6f5857904ce18bcb738234004663dae1197cee082d48f1ad29/mlflow-3.5.1.tar.gz", hash = "sha256:32630f2aaadeb6dc6ccbde56247a1500518b38d0a7cc12f714be1703b6ee3ea1", size = 8300179 } +sdist = { url = "https://files.pythonhosted.org/packages/9b/25/930b5312952b2645f066ffacca5bee8e36577c35e327545da225440cbb6a/mlflow-3.6.0.tar.gz", hash = "sha256:d945d259b5c6b551a9f26846db8979fd84c78114a027b77ada3298f821a9b0e1", size = 8371484 } wheels = [ - { url = "https://files.pythonhosted.org/packages/98/e1/33cf2596dfbdfe49c2a4696e4321a90e835faeb46e590980461d1d4ef811/mlflow-3.5.1-py3-none-any.whl", hash = "sha256:ebbf5fef59787161a15f2878f210877a62d54d943ad6cea140621687b2393f85", size = 8773271 }, + { url = "https://files.pythonhosted.org/packages/79/69/5b018518b2fbd02481b58f7ca14f4a489b51e3c2d95cdc1b973135e8d456/mlflow-3.6.0-py3-none-any.whl", hash = "sha256:04d1691facd412be8e61b963fad859286cfeb2dbcafaea294e6aa0b83a15fc04", size = 8860293 }, ] [[package]] name = "mlflow-skinny" -version = "3.5.1" +version = "3.6.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cachetools" }, @@ -1297,14 +1286,14 @@ dependencies = [ { name = "typing-extensions" }, { name = "uvicorn" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fb/1a/ede3fb7a4085bf640e2842c0a4d3d95ef665b21e6d0e92cfb7867ba58ef7/mlflow_skinny-3.5.1.tar.gz", hash = "sha256:4358a5489221cdecf53cf045e10df28919dedb9489965434ce3445f7cbabf365", size = 1927869 } +sdist = { url = "https://files.pythonhosted.org/packages/8d/8e/2a2d0cd5b1b985c5278202805f48aae6f2adc3ddc0fce3385ec50e07e258/mlflow_skinny-3.6.0.tar.gz", hash = "sha256:cc04706b5b6faace9faf95302a6e04119485e1bfe98ddc9b85b81984e80944b6", size = 1963286 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b4/88/75690e7cdc6fe56374e24178055bb2a7385e1e29c51a8cbb2fb747892af1/mlflow_skinny-3.5.1-py3-none-any.whl", hash = "sha256:e5f96977d21a093a3ffda789bee90070855dbfe1b9d0703c0c3e34d2f8d7fba8", size = 2314304 }, + { url = "https://files.pythonhosted.org/packages/0e/78/e8fdc3e1708bdfd1eba64f41ce96b461cae1b505aa08b69352ac99b4caa4/mlflow_skinny-3.6.0-py3-none-any.whl", hash = "sha256:c83b34fce592acb2cc6bddcb507587a6d9ef3f590d9e7a8658c85e0980596d78", size = 2364629 }, ] [[package]] name = "mlflow-tracing" -version = "3.5.1" +version = "3.6.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cachetools" }, @@ -1316,9 +1305,9 @@ dependencies = [ { name = "protobuf" }, { name = "pydantic" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/18/38/ade11b09edfee133078015656aec8a3854f1a6ed1bd6e6d9af333fcdaaf9/mlflow_tracing-3.5.1.tar.gz", hash = "sha256:bca266b1871692ae2ec812ed177cdc108ccef1cb3fb82725a8b959ec98d5fba0", size = 1056089 } +sdist = { url = "https://files.pythonhosted.org/packages/11/4e/a1b2f977a50ed3860e2848548a9173b9018806628d46d5bdafa8b45bc0c7/mlflow_tracing-3.6.0.tar.gz", hash = "sha256:ccff80b3aad6caa18233c98ba69922a91a6f914e0a13d12e1977af7523523d4c", size = 1061879 } wheels = [ - { url = "https://files.pythonhosted.org/packages/29/7f/99006f6c261ef694363e8599ad858c223aa9918231e8bd7a1569041967ac/mlflow_tracing-3.5.1-py3-none-any.whl", hash = "sha256:4fd685347158e0d2c48f5bec3d15ecfc6fadc1dbb48073cb220ded438408fa65", size = 1273904 }, + { url = "https://files.pythonhosted.org/packages/5e/ec/ba3f513152cf5404e36263604d484728d47e61678c39228c36eb769199af/mlflow_tracing-3.6.0-py3-none-any.whl", hash = "sha256:a68ff03ba5129c67dc98e6871e0d5ef512dd3ee66d01e1c1a0c946c08a6d4755", size = 1281617 }, ] [[package]] @@ -1331,53 +1320,56 @@ wheels = [ ] [[package]] -name = "mypy" -version = "1.18.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "mypy-extensions" }, - { name = "pathspec" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c0/77/8f0d0001ffad290cef2f7f216f96c814866248a0b92a722365ed54648e7e/mypy-1.18.2.tar.gz", hash = "sha256:06a398102a5f203d7477b2923dda3634c36727fa5c237d8f859ef90c42a9924b", size = 3448846 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/07/06/dfdd2bc60c66611dd8335f463818514733bc763e4760dee289dcc33df709/mypy-1.18.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:33eca32dd124b29400c31d7cf784e795b050ace0e1f91b8dc035672725617e34", size = 12908273 }, - { url = "https://files.pythonhosted.org/packages/81/14/6a9de6d13a122d5608e1a04130724caf9170333ac5a924e10f670687d3eb/mypy-1.18.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a3c47adf30d65e89b2dcd2fa32f3aeb5e94ca970d2c15fcb25e297871c8e4764", size = 11920910 }, - { url = "https://files.pythonhosted.org/packages/5f/a9/b29de53e42f18e8cc547e38daa9dfa132ffdc64f7250e353f5c8cdd44bee/mypy-1.18.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d6c838e831a062f5f29d11c9057c6009f60cb294fea33a98422688181fe2893", size = 12465585 }, - { url = "https://files.pythonhosted.org/packages/77/ae/6c3d2c7c61ff21f2bee938c917616c92ebf852f015fb55917fd6e2811db2/mypy-1.18.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01199871b6110a2ce984bde85acd481232d17413868c9807e95c1b0739a58914", size = 13348562 }, - { url = "https://files.pythonhosted.org/packages/4d/31/aec68ab3b4aebdf8f36d191b0685d99faa899ab990753ca0fee60fb99511/mypy-1.18.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a2afc0fa0b0e91b4599ddfe0f91e2c26c2b5a5ab263737e998d6817874c5f7c8", size = 13533296 }, - { url = "https://files.pythonhosted.org/packages/9f/83/abcb3ad9478fca3ebeb6a5358bb0b22c95ea42b43b7789c7fb1297ca44f4/mypy-1.18.2-cp312-cp312-win_amd64.whl", hash = "sha256:d8068d0afe682c7c4897c0f7ce84ea77f6de953262b12d07038f4d296d547074", size = 9828828 }, - { url = "https://files.pythonhosted.org/packages/5f/04/7f462e6fbba87a72bc8097b93f6842499c428a6ff0c81dd46948d175afe8/mypy-1.18.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:07b8b0f580ca6d289e69209ec9d3911b4a26e5abfde32228a288eb79df129fcc", size = 12898728 }, - { url = "https://files.pythonhosted.org/packages/99/5b/61ed4efb64f1871b41fd0b82d29a64640f3516078f6c7905b68ab1ad8b13/mypy-1.18.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ed4482847168439651d3feee5833ccedbf6657e964572706a2adb1f7fa4dfe2e", size = 11910758 }, - { url = "https://files.pythonhosted.org/packages/3c/46/d297d4b683cc89a6e4108c4250a6a6b717f5fa96e1a30a7944a6da44da35/mypy-1.18.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c3ad2afadd1e9fea5cf99a45a822346971ede8685cc581ed9cd4d42eaf940986", size = 12475342 }, - { url = "https://files.pythonhosted.org/packages/83/45/4798f4d00df13eae3bfdf726c9244bcb495ab5bd588c0eed93a2f2dd67f3/mypy-1.18.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a431a6f1ef14cf8c144c6b14793a23ec4eae3db28277c358136e79d7d062f62d", size = 13338709 }, - { url = "https://files.pythonhosted.org/packages/d7/09/479f7358d9625172521a87a9271ddd2441e1dab16a09708f056e97007207/mypy-1.18.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7ab28cc197f1dd77a67e1c6f35cd1f8e8b73ed2217e4fc005f9e6a504e46e7ba", size = 13529806 }, - { url = "https://files.pythonhosted.org/packages/71/cf/ac0f2c7e9d0ea3c75cd99dff7aec1c9df4a1376537cb90e4c882267ee7e9/mypy-1.18.2-cp313-cp313-win_amd64.whl", hash = "sha256:0e2785a84b34a72ba55fb5daf079a1003a34c05b22238da94fcae2bbe46f3544", size = 9833262 }, - { url = "https://files.pythonhosted.org/packages/5a/0c/7d5300883da16f0063ae53996358758b2a2df2a09c72a5061fa79a1f5006/mypy-1.18.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:62f0e1e988ad41c2a110edde6c398383a889d95b36b3e60bcf155f5164c4fdce", size = 12893775 }, - { url = "https://files.pythonhosted.org/packages/50/df/2cffbf25737bdb236f60c973edf62e3e7b4ee1c25b6878629e88e2cde967/mypy-1.18.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:8795a039bab805ff0c1dfdb8cd3344642c2b99b8e439d057aba30850b8d3423d", size = 11936852 }, - { url = "https://files.pythonhosted.org/packages/be/50/34059de13dd269227fb4a03be1faee6e2a4b04a2051c82ac0a0b5a773c9a/mypy-1.18.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6ca1e64b24a700ab5ce10133f7ccd956a04715463d30498e64ea8715236f9c9c", size = 12480242 }, - { url = "https://files.pythonhosted.org/packages/5b/11/040983fad5132d85914c874a2836252bbc57832065548885b5bb5b0d4359/mypy-1.18.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d924eef3795cc89fecf6bedc6ed32b33ac13e8321344f6ddbf8ee89f706c05cb", size = 13326683 }, - { url = "https://files.pythonhosted.org/packages/e9/ba/89b2901dd77414dd7a8c8729985832a5735053be15b744c18e4586e506ef/mypy-1.18.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:20c02215a080e3a2be3aa50506c67242df1c151eaba0dcbc1e4e557922a26075", size = 13514749 }, - { url = "https://files.pythonhosted.org/packages/25/bc/cc98767cffd6b2928ba680f3e5bc969c4152bf7c2d83f92f5a504b92b0eb/mypy-1.18.2-cp314-cp314-win_amd64.whl", hash = "sha256:749b5f83198f1ca64345603118a6f01a4e99ad4bf9d103ddc5a3200cc4614adf", size = 9982959 }, - { url = "https://files.pythonhosted.org/packages/87/e3/be76d87158ebafa0309946c4a73831974d4d6ab4f4ef40c3b53a385a66fd/mypy-1.18.2-py3-none-any.whl", hash = "sha256:22a1748707dd62b58d2ae53562ffc4d7f8bcc727e8ac7cbc69c053ddc874d47e", size = 2352367 }, -] - -[[package]] -name = "mypy-extensions" -version = "1.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963 }, +name = "msgpack" +version = "1.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4d/f2/bfb55a6236ed8725a96b0aa3acbd0ec17588e6a2c3b62a93eb513ed8783f/msgpack-1.1.2.tar.gz", hash = "sha256:3b60763c1373dd60f398488069bcdc703cd08a711477b5d480eecc9f9626f47e", size = 173581 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ad/bd/8b0d01c756203fbab65d265859749860682ccd2a59594609aeec3a144efa/msgpack-1.1.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:70a0dff9d1f8da25179ffcf880e10cf1aad55fdb63cd59c9a49a1b82290062aa", size = 81939 }, + { url = "https://files.pythonhosted.org/packages/34/68/ba4f155f793a74c1483d4bdef136e1023f7bcba557f0db4ef3db3c665cf1/msgpack-1.1.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:446abdd8b94b55c800ac34b102dffd2f6aa0ce643c55dfc017ad89347db3dbdb", size = 85064 }, + { url = "https://files.pythonhosted.org/packages/f2/60/a064b0345fc36c4c3d2c743c82d9100c40388d77f0b48b2f04d6041dbec1/msgpack-1.1.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c63eea553c69ab05b6747901b97d620bb2a690633c77f23feb0c6a947a8a7b8f", size = 417131 }, + { url = "https://files.pythonhosted.org/packages/65/92/a5100f7185a800a5d29f8d14041f61475b9de465ffcc0f3b9fba606e4505/msgpack-1.1.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:372839311ccf6bdaf39b00b61288e0557916c3729529b301c52c2d88842add42", size = 427556 }, + { url = "https://files.pythonhosted.org/packages/f5/87/ffe21d1bf7d9991354ad93949286f643b2bb6ddbeab66373922b44c3b8cc/msgpack-1.1.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2929af52106ca73fcb28576218476ffbb531a036c2adbcf54a3664de124303e9", size = 404920 }, + { url = "https://files.pythonhosted.org/packages/ff/41/8543ed2b8604f7c0d89ce066f42007faac1eaa7d79a81555f206a5cdb889/msgpack-1.1.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:be52a8fc79e45b0364210eef5234a7cf8d330836d0a64dfbb878efa903d84620", size = 415013 }, + { url = "https://files.pythonhosted.org/packages/41/0d/2ddfaa8b7e1cee6c490d46cb0a39742b19e2481600a7a0e96537e9c22f43/msgpack-1.1.2-cp312-cp312-win32.whl", hash = "sha256:1fff3d825d7859ac888b0fbda39a42d59193543920eda9d9bea44d958a878029", size = 65096 }, + { url = "https://files.pythonhosted.org/packages/8c/ec/d431eb7941fb55a31dd6ca3404d41fbb52d99172df2e7707754488390910/msgpack-1.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:1de460f0403172cff81169a30b9a92b260cb809c4cb7e2fc79ae8d0510c78b6b", size = 72708 }, + { url = "https://files.pythonhosted.org/packages/c5/31/5b1a1f70eb0e87d1678e9624908f86317787b536060641d6798e3cf70ace/msgpack-1.1.2-cp312-cp312-win_arm64.whl", hash = "sha256:be5980f3ee0e6bd44f3a9e9dea01054f175b50c3e6cdb692bc9424c0bbb8bf69", size = 64119 }, + { url = "https://files.pythonhosted.org/packages/6b/31/b46518ecc604d7edf3a4f94cb3bf021fc62aa301f0cb849936968164ef23/msgpack-1.1.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4efd7b5979ccb539c221a4c4e16aac1a533efc97f3b759bb5a5ac9f6d10383bf", size = 81212 }, + { url = "https://files.pythonhosted.org/packages/92/dc/c385f38f2c2433333345a82926c6bfa5ecfff3ef787201614317b58dd8be/msgpack-1.1.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:42eefe2c3e2af97ed470eec850facbe1b5ad1d6eacdbadc42ec98e7dcf68b4b7", size = 84315 }, + { url = "https://files.pythonhosted.org/packages/d3/68/93180dce57f684a61a88a45ed13047558ded2be46f03acb8dec6d7c513af/msgpack-1.1.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1fdf7d83102bf09e7ce3357de96c59b627395352a4024f6e2458501f158bf999", size = 412721 }, + { url = "https://files.pythonhosted.org/packages/5d/ba/459f18c16f2b3fc1a1ca871f72f07d70c07bf768ad0a507a698b8052ac58/msgpack-1.1.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fac4be746328f90caa3cd4bc67e6fe36ca2bf61d5c6eb6d895b6527e3f05071e", size = 424657 }, + { url = "https://files.pythonhosted.org/packages/38/f8/4398c46863b093252fe67368b44edc6c13b17f4e6b0e4929dbf0bdb13f23/msgpack-1.1.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:fffee09044073e69f2bad787071aeec727183e7580443dfeb8556cbf1978d162", size = 402668 }, + { url = "https://files.pythonhosted.org/packages/28/ce/698c1eff75626e4124b4d78e21cca0b4cc90043afb80a507626ea354ab52/msgpack-1.1.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5928604de9b032bc17f5099496417f113c45bc6bc21b5c6920caf34b3c428794", size = 419040 }, + { url = "https://files.pythonhosted.org/packages/67/32/f3cd1667028424fa7001d82e10ee35386eea1408b93d399b09fb0aa7875f/msgpack-1.1.2-cp313-cp313-win32.whl", hash = "sha256:a7787d353595c7c7e145e2331abf8b7ff1e6673a6b974ded96e6d4ec09f00c8c", size = 65037 }, + { url = "https://files.pythonhosted.org/packages/74/07/1ed8277f8653c40ebc65985180b007879f6a836c525b3885dcc6448ae6cb/msgpack-1.1.2-cp313-cp313-win_amd64.whl", hash = "sha256:a465f0dceb8e13a487e54c07d04ae3ba131c7c5b95e2612596eafde1dccf64a9", size = 72631 }, + { url = "https://files.pythonhosted.org/packages/e5/db/0314e4e2db56ebcf450f277904ffd84a7988b9e5da8d0d61ab2d057df2b6/msgpack-1.1.2-cp313-cp313-win_arm64.whl", hash = "sha256:e69b39f8c0aa5ec24b57737ebee40be647035158f14ed4b40e6f150077e21a84", size = 64118 }, + { url = "https://files.pythonhosted.org/packages/22/71/201105712d0a2ff07b7873ed3c220292fb2ea5120603c00c4b634bcdafb3/msgpack-1.1.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:e23ce8d5f7aa6ea6d2a2b326b4ba46c985dbb204523759984430db7114f8aa00", size = 81127 }, + { url = "https://files.pythonhosted.org/packages/1b/9f/38ff9e57a2eade7bf9dfee5eae17f39fc0e998658050279cbb14d97d36d9/msgpack-1.1.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:6c15b7d74c939ebe620dd8e559384be806204d73b4f9356320632d783d1f7939", size = 84981 }, + { url = "https://files.pythonhosted.org/packages/8e/a9/3536e385167b88c2cc8f4424c49e28d49a6fc35206d4a8060f136e71f94c/msgpack-1.1.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:99e2cb7b9031568a2a5c73aa077180f93dd2e95b4f8d3b8e14a73ae94a9e667e", size = 411885 }, + { url = "https://files.pythonhosted.org/packages/2f/40/dc34d1a8d5f1e51fc64640b62b191684da52ca469da9cd74e84936ffa4a6/msgpack-1.1.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:180759d89a057eab503cf62eeec0aa61c4ea1200dee709f3a8e9397dbb3b6931", size = 419658 }, + { url = "https://files.pythonhosted.org/packages/3b/ef/2b92e286366500a09a67e03496ee8b8ba00562797a52f3c117aa2b29514b/msgpack-1.1.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:04fb995247a6e83830b62f0b07bf36540c213f6eac8e851166d8d86d83cbd014", size = 403290 }, + { url = "https://files.pythonhosted.org/packages/78/90/e0ea7990abea5764e4655b8177aa7c63cdfa89945b6e7641055800f6c16b/msgpack-1.1.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:8e22ab046fa7ede9e36eeb4cfad44d46450f37bb05d5ec482b02868f451c95e2", size = 415234 }, + { url = "https://files.pythonhosted.org/packages/72/4e/9390aed5db983a2310818cd7d3ec0aecad45e1f7007e0cda79c79507bb0d/msgpack-1.1.2-cp314-cp314-win32.whl", hash = "sha256:80a0ff7d4abf5fecb995fcf235d4064b9a9a8a40a3ab80999e6ac1e30b702717", size = 66391 }, + { url = "https://files.pythonhosted.org/packages/6e/f1/abd09c2ae91228c5f3998dbd7f41353def9eac64253de3c8105efa2082f7/msgpack-1.1.2-cp314-cp314-win_amd64.whl", hash = "sha256:9ade919fac6a3e7260b7f64cea89df6bec59104987cbea34d34a2fa15d74310b", size = 73787 }, + { url = "https://files.pythonhosted.org/packages/6a/b0/9d9f667ab48b16ad4115c1935d94023b82b3198064cb84a123e97f7466c1/msgpack-1.1.2-cp314-cp314-win_arm64.whl", hash = "sha256:59415c6076b1e30e563eb732e23b994a61c159cec44deaf584e5cc1dd662f2af", size = 66453 }, + { url = "https://files.pythonhosted.org/packages/16/67/93f80545eb1792b61a217fa7f06d5e5cb9e0055bed867f43e2b8e012e137/msgpack-1.1.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:897c478140877e5307760b0ea66e0932738879e7aa68144d9b78ea4c8302a84a", size = 85264 }, + { url = "https://files.pythonhosted.org/packages/87/1c/33c8a24959cf193966ef11a6f6a2995a65eb066bd681fd085afd519a57ce/msgpack-1.1.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a668204fa43e6d02f89dbe79a30b0d67238d9ec4c5bd8a940fc3a004a47b721b", size = 89076 }, + { url = "https://files.pythonhosted.org/packages/fc/6b/62e85ff7193663fbea5c0254ef32f0c77134b4059f8da89b958beb7696f3/msgpack-1.1.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5559d03930d3aa0f3aacb4c42c776af1a2ace2611871c84a75afe436695e6245", size = 435242 }, + { url = "https://files.pythonhosted.org/packages/c1/47/5c74ecb4cc277cf09f64e913947871682ffa82b3b93c8dad68083112f412/msgpack-1.1.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:70c5a7a9fea7f036b716191c29047374c10721c389c21e9ffafad04df8c52c90", size = 432509 }, + { url = "https://files.pythonhosted.org/packages/24/a4/e98ccdb56dc4e98c929a3f150de1799831c0a800583cde9fa022fa90602d/msgpack-1.1.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:f2cb069d8b981abc72b41aea1c580ce92d57c673ec61af4c500153a626cb9e20", size = 415957 }, + { url = "https://files.pythonhosted.org/packages/da/28/6951f7fb67bc0a4e184a6b38ab71a92d9ba58080b27a77d3e2fb0be5998f/msgpack-1.1.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:d62ce1f483f355f61adb5433ebfd8868c5f078d1a52d042b0a998682b4fa8c27", size = 422910 }, + { url = "https://files.pythonhosted.org/packages/f0/03/42106dcded51f0a0b5284d3ce30a671e7bd3f7318d122b2ead66ad289fed/msgpack-1.1.2-cp314-cp314t-win32.whl", hash = "sha256:1d1418482b1ee984625d88aa9585db570180c286d942da463533b238b98b812b", size = 75197 }, + { url = "https://files.pythonhosted.org/packages/15/86/d0071e94987f8db59d4eeb386ddc64d0bb9b10820a8d82bcd3e53eeb2da6/msgpack-1.1.2-cp314-cp314t-win_amd64.whl", hash = "sha256:5a46bf7e831d09470ad92dff02b8b1ac92175ca36b087f904a0519857c6be3ff", size = 85772 }, + { url = "https://files.pythonhosted.org/packages/81/f2/08ace4142eb281c12701fc3b93a10795e4d4dc7f753911d836675050f886/msgpack-1.1.2-cp314-cp314t-win_arm64.whl", hash = "sha256:d99ef64f349d5ec3293688e91486c5fdb925ed03807f64d98d205d2713c60b46", size = 70868 }, ] [[package]] name = "narwhals" -version = "2.9.0" +version = "2.11.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b7/95/aa46616f5e567ff5d262f4c207d5ca79cb2766010c786c351b8e7f930ef4/narwhals-2.9.0.tar.gz", hash = "sha256:d8cde40a6a8a7049d8e66608b7115ab19464acc6f305d136a8dc8ba396c4acfe", size = 584098 } +sdist = { url = "https://files.pythonhosted.org/packages/7d/a2/25208347aa4c2d82a265cf4bc0873aaf5069f525c0438146821e7fc19ef5/narwhals-2.11.0.tar.gz", hash = "sha256:d23f3ea7efc6b4d0355444a72de6b8fa3011175585246c3400c894a7583964af", size = 589233 } wheels = [ - { url = "https://files.pythonhosted.org/packages/13/34/00c7ae8194074ed82b64e0bb7c24220eac5f77ac90c16e23cf0d2cfd2a03/narwhals-2.9.0-py3-none-any.whl", hash = "sha256:c59f7de4763004ae81691ce16df71b4e55aead0ead7ccde8c8f2ef8c9559c765", size = 422255 }, + { url = "https://files.pythonhosted.org/packages/c0/a1/4d21933898e23b011ae0528151b57a9230a62960d0919bf2ee48c7f5c20a/narwhals-2.11.0-py3-none-any.whl", hash = "sha256:a9795e1e44aa94e5ba6406ef1c5ee4c172414ced4f1aea4a79e5894f0c7378d4", size = 423069 }, ] [[package]] @@ -1414,6 +1406,7 @@ dependencies = [ { name = "pandas" }, { name = "pip-tools" }, { name = "polars" }, + { name = "ray", extra = ["train", "tune"] }, { name = "scikit-learn" }, { name = "seaborn" }, { name = "torch" }, @@ -1421,31 +1414,20 @@ dependencies = [ { name = "xgboost" }, ] -[package.optional-dependencies] -dev = [ - { name = "black" }, - { name = "flake8" }, - { name = "mypy" }, - { name = "pytest" }, -] - [package.metadata] requires-dist = [ - { name = "black", marker = "extra == 'dev'", specifier = ">=24.0" }, { name = "catboost", specifier = ">=1.2.8" }, - { name = "flake8", marker = "extra == 'dev'", specifier = ">=6.0" }, { name = "ipykernel", specifier = ">=6.30.1" }, { name = "ipympl", specifier = ">=0.9.8" }, { name = "kaggle", specifier = ">=1.7.4.5" }, { name = "lightgbm", specifier = ">=4.6.0" }, { name = "matplotlib", specifier = ">=3.10.6" }, { name = "mlflow", specifier = ">=3.4.0" }, - { name = "mypy", marker = "extra == 'dev'", specifier = ">=1.0" }, { name = "numpy", specifier = ">=2.3.3" }, { name = "pandas", specifier = ">=2.3.2" }, { name = "pip-tools", specifier = ">=7.5.0" }, { name = "polars", specifier = ">=1.35.1" }, - { name = "pytest", marker = "extra == 'dev'", specifier = ">=7.0" }, + { name = "ray", extras = ["train", "tune"], specifier = ">=2.51.1" }, { name = "scikit-learn", specifier = ">=1.7.2" }, { name = "seaborn", specifier = ">=0.13.2" }, { name = "torch", specifier = ">=2.8.0" }, @@ -1768,15 +1750,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/16/32/f8e3c85d1d5250232a5d3477a2a28cc291968ff175caeadaf3cc19ce0e4a/parso-0.8.5-py2.py3-none-any.whl", hash = "sha256:646204b5ee239c396d040b90f9e272e9a8017c630092bf59980beb62fd033887", size = 106668 }, ] -[[package]] -name = "pathspec" -version = "0.12.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, -] - [[package]] name = "pexpect" version = "4.9.0" @@ -1869,7 +1842,7 @@ wheels = [ [[package]] name = "pip-tools" -version = "7.5.1" +version = "7.5.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "build" }, @@ -1879,9 +1852,9 @@ dependencies = [ { name = "setuptools" }, { name = "wheel" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/94/a1/54ac29bdb98660f2b9aeab8c2bf105595614edc7858d899fd4ec1bfaad20/pip_tools-7.5.1.tar.gz", hash = "sha256:a051a94794ba52df9acad2d7c9b0b09ae001617db458a543f8287fea7b89c2cf", size = 160910 } +sdist = { url = "https://files.pythonhosted.org/packages/c4/79/d149fb40bc425ad9defcb8ff73c65088bbc36a84b1825e035397d1c40624/pip_tools-7.5.2.tar.gz", hash = "sha256:2d64d72da6a044da1110257d333960563d7a4743637e8617dd2610ae7b82d60f", size = 164815 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/27/76ffe2fa49527ef618950ca368f9d8dfdbb15efa088eb72b17066bbc1173/pip_tools-7.5.1-py3-none-any.whl", hash = "sha256:f5ff803823529edc0e6e40c86b1aa7da7266fb1078093c8beea4e5b77877036a", size = 65297 }, + { url = "https://files.pythonhosted.org/packages/98/c1/61aef9517201b43cc20f4a5c9339a072644cbaf0e9ce4e4970c2a105f766/pip_tools-7.5.2-py3-none-any.whl", hash = "sha256:2fe16db727bbe5bf28765aeb581e792e61be51fc275545ef6725374ad720a1ce", size = 66905 }, ] [[package]] @@ -1895,50 +1868,41 @@ wheels = [ [[package]] name = "plotly" -version = "6.3.1" +version = "6.4.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "narwhals" }, { name = "packaging" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0c/63/961d47c9ffd592a575495891cdcf7875dc0903ebb33ac238935714213789/plotly-6.3.1.tar.gz", hash = "sha256:dd896e3d940e653a7ce0470087e82c2bd903969a55e30d1b01bb389319461bb0", size = 6956460 } +sdist = { url = "https://files.pythonhosted.org/packages/06/e6/b768650072837505804bed4790c5449ba348a3b720e27ca7605414e998cd/plotly-6.4.0.tar.gz", hash = "sha256:68c6db2ed2180289ef978f087841148b7efda687552276da15a6e9b92107052a", size = 7012379 } wheels = [ - { url = "https://files.pythonhosted.org/packages/3f/93/023955c26b0ce614342d11cc0652f1e45e32393b6ab9d11a664a60e9b7b7/plotly-6.3.1-py3-none-any.whl", hash = "sha256:8b4420d1dcf2b040f5983eed433f95732ed24930e496d36eb70d211923532e64", size = 9833698 }, -] - -[[package]] -name = "pluggy" -version = "1.6.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538 }, + { url = "https://files.pythonhosted.org/packages/78/ae/89b45ccccfeebc464c9233de5675990f75241b8ee4cd63227800fdf577d1/plotly-6.4.0-py3-none-any.whl", hash = "sha256:a1062eafbdc657976c2eedd276c90e184ccd6c21282a5e9ee8f20efca9c9a4c5", size = 9892458 }, ] [[package]] name = "polars" -version = "1.35.1" +version = "1.35.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "polars-runtime-32" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9b/5b/3caad788d93304026cbf0ab4c37f8402058b64a2f153b9c62f8b30f5d2ee/polars-1.35.1.tar.gz", hash = "sha256:06548e6d554580151d6ca7452d74bceeec4640b5b9261836889b8e68cfd7a62e", size = 694881 } +sdist = { url = "https://files.pythonhosted.org/packages/fa/43/09d4738aa24394751cb7e5d1fc4b5ef461d796efcadd9d00c79578332063/polars-1.35.2.tar.gz", hash = "sha256:ae458b05ca6e7ca2c089342c70793f92f1103c502dc1b14b56f0a04f2cc1d205", size = 694895 } wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/4c/21a227b722534404241c2a76beceb7463469d50c775a227fc5c209eb8adc/polars-1.35.1-py3-none-any.whl", hash = "sha256:c29a933f28aa330d96a633adbd79aa5e6a6247a802a720eead9933f4613bdbf4", size = 783598 }, + { url = "https://files.pythonhosted.org/packages/b4/9a/24e4b890c7ee4358964aa92c4d1865df0e8831f7df6abaa3a39914521724/polars-1.35.2-py3-none-any.whl", hash = "sha256:5e8057c8289ac148c793478323b726faea933d9776bd6b8a554b0ab7c03db87e", size = 783597 }, ] [[package]] name = "polars-runtime-32" -version = "1.35.1" +version = "1.35.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/df/3e/19c252e8eb4096300c1a36ec3e50a27e5fa9a1ccaf32d3927793c16abaee/polars_runtime_32-1.35.1.tar.gz", hash = "sha256:f6b4ec9cd58b31c87af1b8c110c9c986d82345f1d50d7f7595b5d447a19dc365", size = 2696218 } +sdist = { url = "https://files.pythonhosted.org/packages/cb/75/ac1256ace28c832a0997b20ba9d10a9d3739bd4d457c1eb1e7d196b6f88b/polars_runtime_32-1.35.2.tar.gz", hash = "sha256:6e6e35733ec52abe54b7d30d245e6586b027d433315d20edfb4a5d162c79fe90", size = 2694387 } wheels = [ - { url = "https://files.pythonhosted.org/packages/08/2c/da339459805a26105e9d9c2f07e43ca5b8baeee55acd5457e6881487a79a/polars_runtime_32-1.35.1-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:6f051a42f6ae2f26e3bc2cf1f170f2120602976e2a3ffb6cfba742eecc7cc620", size = 40525100 }, - { url = "https://files.pythonhosted.org/packages/27/70/a0733568b3533481924d2ce68b279ab3d7334e5fa6ed259f671f650b7c5e/polars_runtime_32-1.35.1-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:c2232f9cf05ba59efc72d940b86c033d41fd2d70bf2742e8115ed7112a766aa9", size = 36701908 }, - { url = "https://files.pythonhosted.org/packages/46/54/6c09137bef9da72fd891ba58c2962cc7c6c5cad4649c0e668d6b344a9d7b/polars_runtime_32-1.35.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42f9837348557fd674477ea40a6ac8a7e839674f6dd0a199df24be91b026024c", size = 41317692 }, - { url = "https://files.pythonhosted.org/packages/22/55/81c5b266a947c339edd7fbaa9e1d9614012d02418453f48b76cc177d3dd9/polars_runtime_32-1.35.1-cp39-abi3-manylinux_2_24_aarch64.whl", hash = "sha256:c873aeb36fed182d5ebc35ca17c7eb193fe83ae2ea551ee8523ec34776731390", size = 37853058 }, - { url = "https://files.pythonhosted.org/packages/6c/58/be8b034d559eac515f52408fd6537be9bea095bc0388946a4e38910d3d50/polars_runtime_32-1.35.1-cp39-abi3-win_amd64.whl", hash = "sha256:35cde9453ca7032933f0e58e9ed4388f5a1e415dd0db2dd1e442c81d815e630c", size = 41289554 }, - { url = "https://files.pythonhosted.org/packages/f4/7f/e0111b9e2a1169ea82cde3ded9c92683e93c26dfccd72aee727996a1ac5b/polars_runtime_32-1.35.1-cp39-abi3-win_arm64.whl", hash = "sha256:fd77757a6c9eb9865c4bfb7b07e22225207c6b7da382bd0b9bd47732f637105d", size = 36958878 }, + { url = "https://files.pythonhosted.org/packages/66/de/a532b81e68e636483a5dd764d72e106215543f3ef49a142272b277ada8fe/polars_runtime_32-1.35.2-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:e465d12a29e8df06ea78947e50bd361cdf77535cd904fd562666a8a9374e7e3a", size = 40524507 }, + { url = "https://files.pythonhosted.org/packages/2d/0b/679751ea6aeaa7b3e33a70ba17f9c8150310792583f3ecf9bb1ce15fe15c/polars_runtime_32-1.35.2-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:ef2b029b78f64fb53f126654c0bfa654045c7546bd0de3009d08bd52d660e8cc", size = 36700154 }, + { url = "https://files.pythonhosted.org/packages/e2/c8/fd9f48dd6b89ae9cff53d896b51d08579ef9c739e46ea87a647b376c8ca2/polars_runtime_32-1.35.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85dda0994b5dff7f456bb2f4bbd22be9a9e5c5e28670e23fedb13601ec99a46d", size = 41317788 }, + { url = "https://files.pythonhosted.org/packages/67/89/e09d9897a70b607e22a36c9eae85a5b829581108fd1e3d4292e5c0f52939/polars_runtime_32-1.35.2-cp39-abi3-manylinux_2_24_aarch64.whl", hash = "sha256:3b9006902fc51b768ff747c0f74bd4ce04005ee8aeb290ce9c07ce1cbe1b58a9", size = 37850590 }, + { url = "https://files.pythonhosted.org/packages/dc/40/96a808ca5cc8707894e196315227f04a0c82136b7fb25570bc51ea33b88d/polars_runtime_32-1.35.2-cp39-abi3-win_amd64.whl", hash = "sha256:ddc015fac39735592e2e7c834c02193ba4d257bb4c8c7478b9ebe440b0756b84", size = 41290019 }, + { url = "https://files.pythonhosted.org/packages/f4/d1/8d1b28d007da43c750367c8bf5cb0f22758c16b1104b2b73b9acadb2d17a/polars_runtime_32-1.35.2-cp39-abi3-win_arm64.whl", hash = "sha256:6861145aa321a44eda7cc6694fb7751cb7aa0f21026df51b5faa52e64f9dc39b", size = 36955684 }, ] [[package]] @@ -1955,43 +1919,43 @@ wheels = [ [[package]] name = "protobuf" -version = "6.33.0" +version = "6.33.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/19/ff/64a6c8f420818bb873713988ca5492cba3a7946be57e027ac63495157d97/protobuf-6.33.0.tar.gz", hash = "sha256:140303d5c8d2037730c548f8c7b93b20bb1dc301be280c378b82b8894589c954", size = 443463 } +sdist = { url = "https://files.pythonhosted.org/packages/0a/03/a1440979a3f74f16cab3b75b0da1a1a7f922d56a8ddea96092391998edc0/protobuf-6.33.1.tar.gz", hash = "sha256:97f65757e8d09870de6fd973aeddb92f85435607235d20b2dfed93405d00c85b", size = 443432 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/ee/52b3fa8feb6db4a833dfea4943e175ce645144532e8a90f72571ad85df4e/protobuf-6.33.0-cp310-abi3-win32.whl", hash = "sha256:d6101ded078042a8f17959eccd9236fb7a9ca20d3b0098bbcb91533a5680d035", size = 425593 }, - { url = "https://files.pythonhosted.org/packages/7b/c6/7a465f1825872c55e0341ff4a80198743f73b69ce5d43ab18043699d1d81/protobuf-6.33.0-cp310-abi3-win_amd64.whl", hash = "sha256:9a031d10f703f03768f2743a1c403af050b6ae1f3480e9c140f39c45f81b13ee", size = 436882 }, - { url = "https://files.pythonhosted.org/packages/e1/a9/b6eee662a6951b9c3640e8e452ab3e09f117d99fc10baa32d1581a0d4099/protobuf-6.33.0-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:905b07a65f1a4b72412314082c7dbfae91a9e8b68a0cc1577515f8df58ecf455", size = 427521 }, - { url = "https://files.pythonhosted.org/packages/10/35/16d31e0f92c6d2f0e77c2a3ba93185130ea13053dd16200a57434c882f2b/protobuf-6.33.0-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:e0697ece353e6239b90ee43a9231318302ad8353c70e6e45499fa52396debf90", size = 324445 }, - { url = "https://files.pythonhosted.org/packages/e6/eb/2a981a13e35cda8b75b5585aaffae2eb904f8f351bdd3870769692acbd8a/protobuf-6.33.0-cp39-abi3-manylinux2014_s390x.whl", hash = "sha256:e0a1715e4f27355afd9570f3ea369735afc853a6c3951a6afe1f80d8569ad298", size = 339159 }, - { url = "https://files.pythonhosted.org/packages/21/51/0b1cbad62074439b867b4e04cc09b93f6699d78fd191bed2bbb44562e077/protobuf-6.33.0-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:35be49fd3f4fefa4e6e2aacc35e8b837d6703c37a2168a55ac21e9b1bc7559ef", size = 323172 }, - { url = "https://files.pythonhosted.org/packages/07/d1/0a28c21707807c6aacd5dc9c3704b2aa1effbf37adebd8caeaf68b17a636/protobuf-6.33.0-py3-none-any.whl", hash = "sha256:25c9e1963c6734448ea2d308cfa610e692b801304ba0908d7bfa564ac5132995", size = 170477 }, + { url = "https://files.pythonhosted.org/packages/06/f1/446a9bbd2c60772ca36556bac8bfde40eceb28d9cc7838755bc41e001d8f/protobuf-6.33.1-cp310-abi3-win32.whl", hash = "sha256:f8d3fdbc966aaab1d05046d0240dd94d40f2a8c62856d41eaa141ff64a79de6b", size = 425593 }, + { url = "https://files.pythonhosted.org/packages/a6/79/8780a378c650e3df849b73de8b13cf5412f521ca2ff9b78a45c247029440/protobuf-6.33.1-cp310-abi3-win_amd64.whl", hash = "sha256:923aa6d27a92bf44394f6abf7ea0500f38769d4b07f4be41cb52bd8b1123b9ed", size = 436883 }, + { url = "https://files.pythonhosted.org/packages/cd/93/26213ff72b103ae55bb0d73e7fb91ea570ef407c3ab4fd2f1f27cac16044/protobuf-6.33.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:fe34575f2bdde76ac429ec7b570235bf0c788883e70aee90068e9981806f2490", size = 427522 }, + { url = "https://files.pythonhosted.org/packages/c2/32/df4a35247923393aa6b887c3b3244a8c941c32a25681775f96e2b418f90e/protobuf-6.33.1-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:f8adba2e44cde2d7618996b3fc02341f03f5bc3f2748be72dc7b063319276178", size = 324445 }, + { url = "https://files.pythonhosted.org/packages/8e/d0/d796e419e2ec93d2f3fa44888861c3f88f722cde02b7c3488fcc6a166820/protobuf-6.33.1-cp39-abi3-manylinux2014_s390x.whl", hash = "sha256:0f4cf01222c0d959c2b399142deb526de420be8236f22c71356e2a544e153c53", size = 339161 }, + { url = "https://files.pythonhosted.org/packages/1d/2a/3c5f05a4af06649547027d288747f68525755de692a26a7720dced3652c0/protobuf-6.33.1-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:8fd7d5e0eb08cd5b87fd3df49bc193f5cfd778701f47e11d127d0afc6c39f1d1", size = 323171 }, + { url = "https://files.pythonhosted.org/packages/08/b4/46310463b4f6ceef310f8348786f3cff181cea671578e3d9743ba61a459e/protobuf-6.33.1-py3-none-any.whl", hash = "sha256:d595a9fd694fdeb061a62fbe10eb039cc1e444df81ec9bb70c7fc59ebcb1eafa", size = 170477 }, ] [[package]] name = "psutil" -version = "7.1.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cd/ec/7b8e6b9b1d22708138630ef34c53ab2b61032c04f16adfdbb96791c8c70c/psutil-7.1.2.tar.gz", hash = "sha256:aa225cdde1335ff9684708ee8c72650f6598d5ed2114b9a7c5802030b1785018", size = 487424 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b8/d9/b56cc9f883140ac10021a8c9b0f4e16eed1ba675c22513cdcbce3ba64014/psutil-7.1.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0cc5c6889b9871f231ed5455a9a02149e388fffcb30b607fb7a8896a6d95f22e", size = 238575 }, - { url = "https://files.pythonhosted.org/packages/36/eb/28d22de383888deb252c818622196e709da98816e296ef95afda33f1c0a2/psutil-7.1.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:8e9e77a977208d84aa363a4a12e0f72189d58bbf4e46b49aae29a2c6e93ef206", size = 239297 }, - { url = "https://files.pythonhosted.org/packages/89/5d/220039e2f28cc129626e54d63892ab05c0d56a29818bfe7268dcb5008932/psutil-7.1.2-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7d9623a5e4164d2220ecceb071f4b333b3c78866141e8887c072129185f41278", size = 280420 }, - { url = "https://files.pythonhosted.org/packages/ba/7a/286f0e1c167445b2ef4a6cbdfc8c59fdb45a5a493788950cf8467201dc73/psutil-7.1.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:364b1c10fe4ed59c89ec49e5f1a70da353b27986fa8233b4b999df4742a5ee2f", size = 283049 }, - { url = "https://files.pythonhosted.org/packages/aa/cc/7eb93260794a42e39b976f3a4dde89725800b9f573b014fac142002a5c98/psutil-7.1.2-cp313-cp313t-win_amd64.whl", hash = "sha256:f101ef84de7e05d41310e3ccbdd65a6dd1d9eed85e8aaf0758405d022308e204", size = 248713 }, - { url = "https://files.pythonhosted.org/packages/ab/1a/0681a92b53366e01f0a099f5237d0c8a2f79d322ac589cccde5e30c8a4e2/psutil-7.1.2-cp313-cp313t-win_arm64.whl", hash = "sha256:20c00824048a95de67f00afedc7b08b282aa08638585b0206a9fb51f28f1a165", size = 244644 }, - { url = "https://files.pythonhosted.org/packages/56/9e/f1c5c746b4ed5320952acd3002d3962fe36f30524c00ea79fdf954cc6779/psutil-7.1.2-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:e09cfe92aa8e22b1ec5e2d394820cf86c5dff6367ac3242366485dfa874d43bc", size = 238640 }, - { url = "https://files.pythonhosted.org/packages/32/ee/fd26216a735395cc25c3899634e34aeb41fb1f3dbb44acc67d9e594be562/psutil-7.1.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:fa6342cf859c48b19df3e4aa170e4cfb64aadc50b11e06bb569c6c777b089c9e", size = 239303 }, - { url = "https://files.pythonhosted.org/packages/3c/cd/7d96eaec4ef7742b845a9ce2759a2769ecce4ab7a99133da24abacbc9e41/psutil-7.1.2-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:625977443498ee7d6c1e63e93bacca893fd759a66c5f635d05e05811d23fb5ee", size = 281717 }, - { url = "https://files.pythonhosted.org/packages/bc/1a/7f0b84bdb067d35fe7fade5fff888408688caf989806ce2d6dae08c72dd5/psutil-7.1.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4a24bcd7b7f2918d934af0fb91859f621b873d6aa81267575e3655cd387572a7", size = 284575 }, - { url = "https://files.pythonhosted.org/packages/de/05/7820ef8f7b275268917e0c750eada5834581206d9024ca88edce93c4b762/psutil-7.1.2-cp314-cp314t-win_amd64.whl", hash = "sha256:329f05610da6380982e6078b9d0881d9ab1e9a7eb7c02d833bfb7340aa634e31", size = 249491 }, - { url = "https://files.pythonhosted.org/packages/db/9a/58de399c7cb58489f08498459ff096cd76b3f1ddc4f224ec2c5ef729c7d0/psutil-7.1.2-cp314-cp314t-win_arm64.whl", hash = "sha256:7b04c29e3c0c888e83ed4762b70f31e65c42673ea956cefa8ced0e31e185f582", size = 244880 }, - { url = "https://files.pythonhosted.org/packages/ae/89/b9f8d47ddbc52d7301fc868e8224e5f44ed3c7f55e6d0f54ecaf5dd9ff5e/psutil-7.1.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c9ba5c19f2d46203ee8c152c7b01df6eec87d883cfd8ee1af2ef2727f6b0f814", size = 237244 }, - { url = "https://files.pythonhosted.org/packages/c8/7a/8628c2f6b240680a67d73d8742bb9ff39b1820a693740e43096d5dcb01e5/psutil-7.1.2-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:2a486030d2fe81bec023f703d3d155f4823a10a47c36784c84f1cc7f8d39bedb", size = 238101 }, - { url = "https://files.pythonhosted.org/packages/30/28/5e27f4d5a0e347f8e3cc16cd7d35533dbce086c95807f1f0e9cd77e26c10/psutil-7.1.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3efd8fc791492e7808a51cb2b94889db7578bfaea22df931424f874468e389e3", size = 258675 }, - { url = "https://files.pythonhosted.org/packages/e5/5c/79cf60c9acf36d087f0db0f82066fca4a780e97e5b3a2e4c38209c03d170/psutil-7.1.2-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e2aeb9b64f481b8eabfc633bd39e0016d4d8bbcd590d984af764d80bf0851b8a", size = 260203 }, - { url = "https://files.pythonhosted.org/packages/f7/03/0a464404c51685dcb9329fdd660b1721e076ccd7b3d97dee066bcc9ffb15/psutil-7.1.2-cp37-abi3-win_amd64.whl", hash = "sha256:8e17852114c4e7996fe9da4745c2bdef001ebbf2f260dec406290e66628bdb91", size = 246714 }, - { url = "https://files.pythonhosted.org/packages/6a/32/97ca2090f2f1b45b01b6aa7ae161cfe50671de097311975ca6eea3e7aabc/psutil-7.1.2-cp37-abi3-win_arm64.whl", hash = "sha256:3e988455e61c240cc879cb62a008c2699231bf3e3d061d7fce4234463fd2abb4", size = 243742 }, +version = "7.1.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e1/88/bdd0a41e5857d5d703287598cbf08dad90aed56774ea52ae071bae9071b6/psutil-7.1.3.tar.gz", hash = "sha256:6c86281738d77335af7aec228328e944b30930899ea760ecf33a4dba66be5e74", size = 489059 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/93/0c49e776b8734fef56ec9c5c57f923922f2cf0497d62e0f419465f28f3d0/psutil-7.1.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0005da714eee687b4b8decd3d6cc7c6db36215c9e74e5ad2264b90c3df7d92dc", size = 239751 }, + { url = "https://files.pythonhosted.org/packages/6f/8d/b31e39c769e70780f007969815195a55c81a63efebdd4dbe9e7a113adb2f/psutil-7.1.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:19644c85dcb987e35eeeaefdc3915d059dac7bd1167cdcdbf27e0ce2df0c08c0", size = 240368 }, + { url = "https://files.pythonhosted.org/packages/62/61/23fd4acc3c9eebbf6b6c78bcd89e5d020cfde4acf0a9233e9d4e3fa698b4/psutil-7.1.3-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:95ef04cf2e5ba0ab9eaafc4a11eaae91b44f4ef5541acd2ee91d9108d00d59a7", size = 287134 }, + { url = "https://files.pythonhosted.org/packages/30/1c/f921a009ea9ceb51aa355cb0cc118f68d354db36eae18174bab63affb3e6/psutil-7.1.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1068c303be3a72f8e18e412c5b2a8f6d31750fb152f9cb106b54090296c9d251", size = 289904 }, + { url = "https://files.pythonhosted.org/packages/a6/82/62d68066e13e46a5116df187d319d1724b3f437ddd0f958756fc052677f4/psutil-7.1.3-cp313-cp313t-win_amd64.whl", hash = "sha256:18349c5c24b06ac5612c0428ec2a0331c26443d259e2a0144a9b24b4395b58fa", size = 249642 }, + { url = "https://files.pythonhosted.org/packages/df/ad/c1cd5fe965c14a0392112f68362cfceb5230819dbb5b1888950d18a11d9f/psutil-7.1.3-cp313-cp313t-win_arm64.whl", hash = "sha256:c525ffa774fe4496282fb0b1187725793de3e7c6b29e41562733cae9ada151ee", size = 245518 }, + { url = "https://files.pythonhosted.org/packages/2e/bb/6670bded3e3236eb4287c7bcdc167e9fae6e1e9286e437f7111caed2f909/psutil-7.1.3-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:b403da1df4d6d43973dc004d19cee3b848e998ae3154cc8097d139b77156c353", size = 239843 }, + { url = "https://files.pythonhosted.org/packages/b8/66/853d50e75a38c9a7370ddbeefabdd3d3116b9c31ef94dc92c6729bc36bec/psutil-7.1.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ad81425efc5e75da3f39b3e636293360ad8d0b49bed7df824c79764fb4ba9b8b", size = 240369 }, + { url = "https://files.pythonhosted.org/packages/41/bd/313aba97cb5bfb26916dc29cf0646cbe4dd6a89ca69e8c6edce654876d39/psutil-7.1.3-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8f33a3702e167783a9213db10ad29650ebf383946e91bc77f28a5eb083496bc9", size = 288210 }, + { url = "https://files.pythonhosted.org/packages/c2/fa/76e3c06e760927a0cfb5705eb38164254de34e9bd86db656d4dbaa228b04/psutil-7.1.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fac9cd332c67f4422504297889da5ab7e05fd11e3c4392140f7370f4208ded1f", size = 291182 }, + { url = "https://files.pythonhosted.org/packages/0f/1d/5774a91607035ee5078b8fd747686ebec28a962f178712de100d00b78a32/psutil-7.1.3-cp314-cp314t-win_amd64.whl", hash = "sha256:3792983e23b69843aea49c8f5b8f115572c5ab64c153bada5270086a2123c7e7", size = 250466 }, + { url = "https://files.pythonhosted.org/packages/00/ca/e426584bacb43a5cb1ac91fae1937f478cd8fbe5e4ff96574e698a2c77cd/psutil-7.1.3-cp314-cp314t-win_arm64.whl", hash = "sha256:31d77fcedb7529f27bb3a0472bea9334349f9a04160e8e6e5020f22c59893264", size = 245756 }, + { url = "https://files.pythonhosted.org/packages/ef/94/46b9154a800253e7ecff5aaacdf8ebf43db99de4a2dfa18575b02548654e/psutil-7.1.3-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2bdbcd0e58ca14996a42adf3621a6244f1bb2e2e528886959c72cf1e326677ab", size = 238359 }, + { url = "https://files.pythonhosted.org/packages/68/3a/9f93cff5c025029a36d9a92fef47220ab4692ee7f2be0fba9f92813d0cb8/psutil-7.1.3-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:bc31fa00f1fbc3c3802141eede66f3a2d51d89716a194bf2cd6fc68310a19880", size = 239171 }, + { url = "https://files.pythonhosted.org/packages/ce/b1/5f49af514f76431ba4eea935b8ad3725cdeb397e9245ab919dbc1d1dc20f/psutil-7.1.3-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3bb428f9f05c1225a558f53e30ccbad9930b11c3fc206836242de1091d3e7dd3", size = 263261 }, + { url = "https://files.pythonhosted.org/packages/e0/95/992c8816a74016eb095e73585d747e0a8ea21a061ed3689474fabb29a395/psutil-7.1.3-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:56d974e02ca2c8eb4812c3f76c30e28836fffc311d55d979f1465c1feeb2b68b", size = 264635 }, + { url = "https://files.pythonhosted.org/packages/55/4c/c3ed1a622b6ae2fd3c945a366e64eb35247a31e4db16cf5095e269e8eb3c/psutil-7.1.3-cp37-abi3-win_amd64.whl", hash = "sha256:f39c2c19fe824b47484b96f9692932248a54c43799a84282cfe58d05a6449efd", size = 247633 }, + { url = "https://files.pythonhosted.org/packages/c9/ad/33b2ccec09bf96c2b2ef3f9a6f66baac8253d7565d8839e024a6b905d45d/psutil-7.1.3-cp37-abi3-win_arm64.whl", hash = "sha256:bd0d69cee829226a761e92f28140bec9a5ee9d5b4fb4b0cc589068dbfff559b1", size = 244608 }, ] [[package]] @@ -2014,31 +1978,45 @@ wheels = [ [[package]] name = "pyarrow" -version = "21.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ef/c2/ea068b8f00905c06329a3dfcd40d0fcc2b7d0f2e355bdb25b65e0a0e4cd4/pyarrow-21.0.0.tar.gz", hash = "sha256:5051f2dccf0e283ff56335760cbc8622cf52264d67e359d5569541ac11b6d5bc", size = 1133487 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ca/d4/d4f817b21aacc30195cf6a46ba041dd1be827efa4a623cc8bf39a1c2a0c0/pyarrow-21.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:3a302f0e0963db37e0a24a70c56cf91a4faa0bca51c23812279ca2e23481fccd", size = 31160305 }, - { url = "https://files.pythonhosted.org/packages/a2/9c/dcd38ce6e4b4d9a19e1d36914cb8e2b1da4e6003dd075474c4cfcdfe0601/pyarrow-21.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:b6b27cf01e243871390474a211a7922bfbe3bda21e39bc9160daf0da3fe48876", size = 32684264 }, - { url = "https://files.pythonhosted.org/packages/4f/74/2a2d9f8d7a59b639523454bec12dba35ae3d0a07d8ab529dc0809f74b23c/pyarrow-21.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:e72a8ec6b868e258a2cd2672d91f2860ad532d590ce94cdf7d5e7ec674ccf03d", size = 41108099 }, - { url = "https://files.pythonhosted.org/packages/ad/90/2660332eeb31303c13b653ea566a9918484b6e4d6b9d2d46879a33ab0622/pyarrow-21.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b7ae0bbdc8c6674259b25bef5d2a1d6af5d39d7200c819cf99e07f7dfef1c51e", size = 42829529 }, - { url = "https://files.pythonhosted.org/packages/33/27/1a93a25c92717f6aa0fca06eb4700860577d016cd3ae51aad0e0488ac899/pyarrow-21.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:58c30a1729f82d201627c173d91bd431db88ea74dcaa3885855bc6203e433b82", size = 43367883 }, - { url = "https://files.pythonhosted.org/packages/05/d9/4d09d919f35d599bc05c6950095e358c3e15148ead26292dfca1fb659b0c/pyarrow-21.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:072116f65604b822a7f22945a7a6e581cfa28e3454fdcc6939d4ff6090126623", size = 45133802 }, - { url = "https://files.pythonhosted.org/packages/71/30/f3795b6e192c3ab881325ffe172e526499eb3780e306a15103a2764916a2/pyarrow-21.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf56ec8b0a5c8c9d7021d6fd754e688104f9ebebf1bf4449613c9531f5346a18", size = 26203175 }, - { url = "https://files.pythonhosted.org/packages/16/ca/c7eaa8e62db8fb37ce942b1ea0c6d7abfe3786ca193957afa25e71b81b66/pyarrow-21.0.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:e99310a4ebd4479bcd1964dff9e14af33746300cb014aa4a3781738ac63baf4a", size = 31154306 }, - { url = "https://files.pythonhosted.org/packages/ce/e8/e87d9e3b2489302b3a1aea709aaca4b781c5252fcb812a17ab6275a9a484/pyarrow-21.0.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:d2fe8e7f3ce329a71b7ddd7498b3cfac0eeb200c2789bd840234f0dc271a8efe", size = 32680622 }, - { url = "https://files.pythonhosted.org/packages/84/52/79095d73a742aa0aba370c7942b1b655f598069489ab387fe47261a849e1/pyarrow-21.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:f522e5709379d72fb3da7785aa489ff0bb87448a9dc5a75f45763a795a089ebd", size = 41104094 }, - { url = "https://files.pythonhosted.org/packages/89/4b/7782438b551dbb0468892a276b8c789b8bbdb25ea5c5eb27faadd753e037/pyarrow-21.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:69cbbdf0631396e9925e048cfa5bce4e8c3d3b41562bbd70c685a8eb53a91e61", size = 42825576 }, - { url = "https://files.pythonhosted.org/packages/b3/62/0f29de6e0a1e33518dec92c65be0351d32d7ca351e51ec5f4f837a9aab91/pyarrow-21.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:731c7022587006b755d0bdb27626a1a3bb004bb56b11fb30d98b6c1b4718579d", size = 43368342 }, - { url = "https://files.pythonhosted.org/packages/90/c7/0fa1f3f29cf75f339768cc698c8ad4ddd2481c1742e9741459911c9ac477/pyarrow-21.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:dc56bc708f2d8ac71bd1dcb927e458c93cec10b98eb4120206a4091db7b67b99", size = 45131218 }, - { url = "https://files.pythonhosted.org/packages/01/63/581f2076465e67b23bc5a37d4a2abff8362d389d29d8105832e82c9c811c/pyarrow-21.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:186aa00bca62139f75b7de8420f745f2af12941595bbbfa7ed3870ff63e25636", size = 26087551 }, - { url = "https://files.pythonhosted.org/packages/c9/ab/357d0d9648bb8241ee7348e564f2479d206ebe6e1c47ac5027c2e31ecd39/pyarrow-21.0.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:a7a102574faa3f421141a64c10216e078df467ab9576684d5cd696952546e2da", size = 31290064 }, - { url = "https://files.pythonhosted.org/packages/3f/8a/5685d62a990e4cac2043fc76b4661bf38d06efed55cf45a334b455bd2759/pyarrow-21.0.0-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:1e005378c4a2c6db3ada3ad4c217b381f6c886f0a80d6a316fe586b90f77efd7", size = 32727837 }, - { url = "https://files.pythonhosted.org/packages/fc/de/c0828ee09525c2bafefd3e736a248ebe764d07d0fd762d4f0929dbc516c9/pyarrow-21.0.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:65f8e85f79031449ec8706b74504a316805217b35b6099155dd7e227eef0d4b6", size = 41014158 }, - { url = "https://files.pythonhosted.org/packages/6e/26/a2865c420c50b7a3748320b614f3484bfcde8347b2639b2b903b21ce6a72/pyarrow-21.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:3a81486adc665c7eb1a2bde0224cfca6ceaba344a82a971ef059678417880eb8", size = 42667885 }, - { url = "https://files.pythonhosted.org/packages/0a/f9/4ee798dc902533159250fb4321267730bc0a107d8c6889e07c3add4fe3a5/pyarrow-21.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:fc0d2f88b81dcf3ccf9a6ae17f89183762c8a94a5bdcfa09e05cfe413acf0503", size = 43276625 }, - { url = "https://files.pythonhosted.org/packages/5a/da/e02544d6997037a4b0d22d8e5f66bc9315c3671371a8b18c79ade1cefe14/pyarrow-21.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6299449adf89df38537837487a4f8d3bd91ec94354fdd2a7d30bc11c48ef6e79", size = 44951890 }, - { url = "https://files.pythonhosted.org/packages/e5/4e/519c1bc1876625fe6b71e9a28287c43ec2f20f73c658b9ae1d485c0c206e/pyarrow-21.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:222c39e2c70113543982c6b34f3077962b44fca38c0bd9e68bb6781534425c10", size = 26371006 }, +version = "22.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/30/53/04a7fdc63e6056116c9ddc8b43bc28c12cdd181b85cbeadb79278475f3ae/pyarrow-22.0.0.tar.gz", hash = "sha256:3d600dc583260d845c7d8a6db540339dd883081925da2bd1c5cb808f720b3cd9", size = 1151151 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/63/ba23862d69652f85b615ca14ad14f3bcfc5bf1b99ef3f0cd04ff93fdad5a/pyarrow-22.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:bea79263d55c24a32b0d79c00a1c58bb2ee5f0757ed95656b01c0fb310c5af3d", size = 34211578 }, + { url = "https://files.pythonhosted.org/packages/b1/d0/f9ad86fe809efd2bcc8be32032fa72e8b0d112b01ae56a053006376c5930/pyarrow-22.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:12fe549c9b10ac98c91cf791d2945e878875d95508e1a5d14091a7aaa66d9cf8", size = 35989906 }, + { url = "https://files.pythonhosted.org/packages/b4/a8/f910afcb14630e64d673f15904ec27dd31f1e009b77033c365c84e8c1e1d/pyarrow-22.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:334f900ff08ce0423407af97e6c26ad5d4e3b0763645559ece6fbf3747d6a8f5", size = 45021677 }, + { url = "https://files.pythonhosted.org/packages/13/95/aec81f781c75cd10554dc17a25849c720d54feafb6f7847690478dcf5ef8/pyarrow-22.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:c6c791b09c57ed76a18b03f2631753a4960eefbbca80f846da8baefc6491fcfe", size = 47726315 }, + { url = "https://files.pythonhosted.org/packages/bb/d4/74ac9f7a54cfde12ee42734ea25d5a3c9a45db78f9def949307a92720d37/pyarrow-22.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c3200cb41cdbc65156e5f8c908d739b0dfed57e890329413da2748d1a2cd1a4e", size = 47990906 }, + { url = "https://files.pythonhosted.org/packages/2e/71/fedf2499bf7a95062eafc989ace56572f3343432570e1c54e6599d5b88da/pyarrow-22.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ac93252226cf288753d8b46280f4edf3433bf9508b6977f8dd8526b521a1bbb9", size = 50306783 }, + { url = "https://files.pythonhosted.org/packages/68/ed/b202abd5a5b78f519722f3d29063dda03c114711093c1995a33b8e2e0f4b/pyarrow-22.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:44729980b6c50a5f2bfcc2668d36c569ce17f8b17bccaf470c4313dcbbf13c9d", size = 27972883 }, + { url = "https://files.pythonhosted.org/packages/a6/d6/d0fac16a2963002fc22c8fa75180a838737203d558f0ed3b564c4a54eef5/pyarrow-22.0.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:e6e95176209257803a8b3d0394f21604e796dadb643d2f7ca21b66c9c0b30c9a", size = 34204629 }, + { url = "https://files.pythonhosted.org/packages/c6/9c/1d6357347fbae062ad3f17082f9ebc29cc733321e892c0d2085f42a2212b/pyarrow-22.0.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:001ea83a58024818826a9e3f89bf9310a114f7e26dfe404a4c32686f97bd7901", size = 35985783 }, + { url = "https://files.pythonhosted.org/packages/ff/c0/782344c2ce58afbea010150df07e3a2f5fdad299cd631697ae7bd3bac6e3/pyarrow-22.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:ce20fe000754f477c8a9125543f1936ea5b8867c5406757c224d745ed033e691", size = 45020999 }, + { url = "https://files.pythonhosted.org/packages/1b/8b/5362443737a5307a7b67c1017c42cd104213189b4970bf607e05faf9c525/pyarrow-22.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e0a15757fccb38c410947df156f9749ae4a3c89b2393741a50521f39a8cf202a", size = 47724601 }, + { url = "https://files.pythonhosted.org/packages/69/4d/76e567a4fc2e190ee6072967cb4672b7d9249ac59ae65af2d7e3047afa3b/pyarrow-22.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cedb9dd9358e4ea1d9bce3665ce0797f6adf97ff142c8e25b46ba9cdd508e9b6", size = 48001050 }, + { url = "https://files.pythonhosted.org/packages/01/5e/5653f0535d2a1aef8223cee9d92944cb6bccfee5cf1cd3f462d7cb022790/pyarrow-22.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:252be4a05f9d9185bb8c18e83764ebcfea7185076c07a7a662253af3a8c07941", size = 50307877 }, + { url = "https://files.pythonhosted.org/packages/2d/f8/1d0bd75bf9328a3b826e24a16e5517cd7f9fbf8d34a3184a4566ef5a7f29/pyarrow-22.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:a4893d31e5ef780b6edcaf63122df0f8d321088bb0dee4c8c06eccb1ca28d145", size = 27977099 }, + { url = "https://files.pythonhosted.org/packages/90/81/db56870c997805bf2b0f6eeeb2d68458bf4654652dccdcf1bf7a42d80903/pyarrow-22.0.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:f7fe3dbe871294ba70d789be16b6e7e52b418311e166e0e3cba9522f0f437fb1", size = 34336685 }, + { url = "https://files.pythonhosted.org/packages/1c/98/0727947f199aba8a120f47dfc229eeb05df15bcd7a6f1b669e9f882afc58/pyarrow-22.0.0-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:ba95112d15fd4f1105fb2402c4eab9068f0554435e9b7085924bcfaac2cc306f", size = 36032158 }, + { url = "https://files.pythonhosted.org/packages/96/b4/9babdef9c01720a0785945c7cf550e4acd0ebcd7bdd2e6f0aa7981fa85e2/pyarrow-22.0.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:c064e28361c05d72eed8e744c9605cbd6d2bb7481a511c74071fd9b24bc65d7d", size = 44892060 }, + { url = "https://files.pythonhosted.org/packages/f8/ca/2f8804edd6279f78a37062d813de3f16f29183874447ef6d1aadbb4efa0f/pyarrow-22.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:6f9762274496c244d951c819348afbcf212714902742225f649cf02823a6a10f", size = 47504395 }, + { url = "https://files.pythonhosted.org/packages/b9/f0/77aa5198fd3943682b2e4faaf179a674f0edea0d55d326d83cb2277d9363/pyarrow-22.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a9d9ffdc2ab696f6b15b4d1f7cec6658e1d788124418cb30030afbae31c64746", size = 48066216 }, + { url = "https://files.pythonhosted.org/packages/79/87/a1937b6e78b2aff18b706d738c9e46ade5bfcf11b294e39c87706a0089ac/pyarrow-22.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ec1a15968a9d80da01e1d30349b2b0d7cc91e96588ee324ce1b5228175043e95", size = 50288552 }, + { url = "https://files.pythonhosted.org/packages/60/ae/b5a5811e11f25788ccfdaa8f26b6791c9807119dffcf80514505527c384c/pyarrow-22.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:bba208d9c7decf9961998edf5c65e3ea4355d5818dd6cd0f6809bec1afb951cc", size = 28262504 }, + { url = "https://files.pythonhosted.org/packages/bd/b0/0fa4d28a8edb42b0a7144edd20befd04173ac79819547216f8a9f36f9e50/pyarrow-22.0.0-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:9bddc2cade6561f6820d4cd73f99a0243532ad506bc510a75a5a65a522b2d74d", size = 34224062 }, + { url = "https://files.pythonhosted.org/packages/0f/a8/7a719076b3c1be0acef56a07220c586f25cd24de0e3f3102b438d18ae5df/pyarrow-22.0.0-cp314-cp314-macosx_12_0_x86_64.whl", hash = "sha256:e70ff90c64419709d38c8932ea9fe1cc98415c4f87ea8da81719e43f02534bc9", size = 35990057 }, + { url = "https://files.pythonhosted.org/packages/89/3c/359ed54c93b47fb6fe30ed16cdf50e3f0e8b9ccfb11b86218c3619ae50a8/pyarrow-22.0.0-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:92843c305330aa94a36e706c16209cd4df274693e777ca47112617db7d0ef3d7", size = 45068002 }, + { url = "https://files.pythonhosted.org/packages/55/fc/4945896cc8638536ee787a3bd6ce7cec8ec9acf452d78ec39ab328efa0a1/pyarrow-22.0.0-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:6dda1ddac033d27421c20d7a7943eec60be44e0db4e079f33cc5af3b8280ccde", size = 47737765 }, + { url = "https://files.pythonhosted.org/packages/cd/5e/7cb7edeb2abfaa1f79b5d5eb89432356155c8426f75d3753cbcb9592c0fd/pyarrow-22.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:84378110dd9a6c06323b41b56e129c504d157d1a983ce8f5443761eb5256bafc", size = 48048139 }, + { url = "https://files.pythonhosted.org/packages/88/c6/546baa7c48185f5e9d6e59277c4b19f30f48c94d9dd938c2a80d4d6b067c/pyarrow-22.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:854794239111d2b88b40b6ef92aa478024d1e5074f364033e73e21e3f76b25e0", size = 50314244 }, + { url = "https://files.pythonhosted.org/packages/3c/79/755ff2d145aafec8d347bf18f95e4e81c00127f06d080135dfc86aea417c/pyarrow-22.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:b883fe6fd85adad7932b3271c38ac289c65b7337c2c132e9569f9d3940620730", size = 28757501 }, + { url = "https://files.pythonhosted.org/packages/0e/d2/237d75ac28ced3147912954e3c1a174df43a95f4f88e467809118a8165e0/pyarrow-22.0.0-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:7a820d8ae11facf32585507c11f04e3f38343c1e784c9b5a8b1da5c930547fe2", size = 34355506 }, + { url = "https://files.pythonhosted.org/packages/1e/2c/733dfffe6d3069740f98e57ff81007809067d68626c5faef293434d11bd6/pyarrow-22.0.0-cp314-cp314t-macosx_12_0_x86_64.whl", hash = "sha256:c6ec3675d98915bf1ec8b3c7986422682f7232ea76cad276f4c8abd5b7319b70", size = 36047312 }, + { url = "https://files.pythonhosted.org/packages/7c/2b/29d6e3782dc1f299727462c1543af357a0f2c1d3c160ce199950d9ca51eb/pyarrow-22.0.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:3e739edd001b04f654b166204fc7a9de896cf6007eaff33409ee9e50ceaff754", size = 45081609 }, + { url = "https://files.pythonhosted.org/packages/8d/42/aa9355ecc05997915af1b7b947a7f66c02dcaa927f3203b87871c114ba10/pyarrow-22.0.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:7388ac685cab5b279a41dfe0a6ccd99e4dbf322edfb63e02fc0443bf24134e91", size = 47703663 }, + { url = "https://files.pythonhosted.org/packages/ee/62/45abedde480168e83a1de005b7b7043fd553321c1e8c5a9a114425f64842/pyarrow-22.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:f633074f36dbc33d5c05b5dc75371e5660f1dbf9c8b1d95669def05e5425989c", size = 48066543 }, + { url = "https://files.pythonhosted.org/packages/84/e9/7878940a5b072e4f3bf998770acafeae13b267f9893af5f6d4ab3904b67e/pyarrow-22.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:4c19236ae2402a8663a2c8f21f1870a03cc57f0bef7e4b6eb3238cc82944de80", size = 50288838 }, + { url = "https://files.pythonhosted.org/packages/7b/03/f335d6c52b4a4761bcc83499789a1e2e16d9d201a58c327a9b5cc9a41bd9/pyarrow-22.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:0c34fe18094686194f204a3b1787a27456897d8a2d62caf84b61e8dfbc0252ae", size = 29185594 }, ] [[package]] @@ -2062,15 +2040,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/47/8d/d529b5d697919ba8c11ad626e835d4039be708a35b0d22de83a269a6682c/pyasn1_modules-0.4.2-py3-none-any.whl", hash = "sha256:29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a", size = 181259 }, ] -[[package]] -name = "pycodestyle" -version = "2.14.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/11/e0/abfd2a0d2efe47670df87f3e3a0e2edda42f055053c85361f19c0e2c1ca8/pycodestyle-2.14.0.tar.gz", hash = "sha256:c4b5b517d278089ff9d0abdec919cd97262a3367449ea1c8b49b91529167b783", size = 39472 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/27/a58ddaf8c588a3ef080db9d0b7e0b97215cee3a45df74f3a94dbbf5c893a/pycodestyle-2.14.0-py2.py3-none-any.whl", hash = "sha256:dd6bf7cb4ee77f8e016f9c8e74a35ddd9f67e1d5fd4184d86c3b98e07099f42d", size = 31594 }, -] - [[package]] name = "pycparser" version = "2.23" @@ -2082,7 +2051,7 @@ wheels = [ [[package]] name = "pydantic" -version = "2.12.3" +version = "2.12.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "annotated-types" }, @@ -2090,81 +2059,76 @@ dependencies = [ { name = "typing-extensions" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f3/1e/4f0a3233767010308f2fd6bd0814597e3f63f1dc98304a9112b8759df4ff/pydantic-2.12.3.tar.gz", hash = "sha256:1da1c82b0fc140bb0103bc1441ffe062154c8d38491189751ee00fd8ca65ce74", size = 819383 } +sdist = { url = "https://files.pythonhosted.org/packages/96/ad/a17bc283d7d81837c061c49e3eaa27a45991759a1b7eae1031921c6bd924/pydantic-2.12.4.tar.gz", hash = "sha256:0f8cb9555000a4b5b617f66bfd2566264c4984b27589d3b845685983e8ea85ac", size = 821038 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/6b/83661fa77dcefa195ad5f8cd9af3d1a7450fd57cc883ad04d65446ac2029/pydantic-2.12.3-py3-none-any.whl", hash = "sha256:6986454a854bc3bc6e5443e1369e06a3a456af9d339eda45510f517d9ea5c6bf", size = 462431 }, + { url = "https://files.pythonhosted.org/packages/82/2f/e68750da9b04856e2a7ec56fc6f034a5a79775e9b9a81882252789873798/pydantic-2.12.4-py3-none-any.whl", hash = "sha256:92d3d202a745d46f9be6df459ac5a064fdaa3c1c4cd8adcfa332ccf3c05f871e", size = 463400 }, ] [[package]] name = "pydantic-core" -version = "2.41.4" +version = "2.41.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/df/18/d0944e8eaaa3efd0a91b0f1fc537d3be55ad35091b6a87638211ba691964/pydantic_core-2.41.4.tar.gz", hash = "sha256:70e47929a9d4a1905a67e4b687d5946026390568a8e952b92824118063cee4d5", size = 457557 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/81/d3b3e95929c4369d30b2a66a91db63c8ed0a98381ae55a45da2cd1cc1288/pydantic_core-2.41.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ab06d77e053d660a6faaf04894446df7b0a7e7aba70c2797465a0a1af00fc887", size = 2099043 }, - { url = "https://files.pythonhosted.org/packages/58/da/46fdac49e6717e3a94fc9201403e08d9d61aa7a770fab6190b8740749047/pydantic_core-2.41.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c53ff33e603a9c1179a9364b0a24694f183717b2e0da2b5ad43c316c956901b2", size = 1910699 }, - { url = "https://files.pythonhosted.org/packages/1e/63/4d948f1b9dd8e991a5a98b77dd66c74641f5f2e5225fee37994b2e07d391/pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:304c54176af2c143bd181d82e77c15c41cbacea8872a2225dd37e6544dce9999", size = 1952121 }, - { url = "https://files.pythonhosted.org/packages/b2/a7/e5fc60a6f781fc634ecaa9ecc3c20171d238794cef69ae0af79ac11b89d7/pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:025ba34a4cf4fb32f917d5d188ab5e702223d3ba603be4d8aca2f82bede432a4", size = 2041590 }, - { url = "https://files.pythonhosted.org/packages/70/69/dce747b1d21d59e85af433428978a1893c6f8a7068fa2bb4a927fba7a5ff/pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b9f5f30c402ed58f90c70e12eff65547d3ab74685ffe8283c719e6bead8ef53f", size = 2219869 }, - { url = "https://files.pythonhosted.org/packages/83/6a/c070e30e295403bf29c4df1cb781317b6a9bac7cd07b8d3acc94d501a63c/pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd96e5d15385d301733113bcaa324c8bcf111275b7675a9c6e88bfb19fc05e3b", size = 2345169 }, - { url = "https://files.pythonhosted.org/packages/f0/83/06d001f8043c336baea7fd202a9ac7ad71f87e1c55d8112c50b745c40324/pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98f348cbb44fae6e9653c1055db7e29de67ea6a9ca03a5fa2c2e11a47cff0e47", size = 2070165 }, - { url = "https://files.pythonhosted.org/packages/14/0a/e567c2883588dd12bcbc110232d892cf385356f7c8a9910311ac997ab715/pydantic_core-2.41.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec22626a2d14620a83ca583c6f5a4080fa3155282718b6055c2ea48d3ef35970", size = 2189067 }, - { url = "https://files.pythonhosted.org/packages/f4/1d/3d9fca34273ba03c9b1c5289f7618bc4bd09c3ad2289b5420481aa051a99/pydantic_core-2.41.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3a95d4590b1f1a43bf33ca6d647b990a88f4a3824a8c4572c708f0b45a5290ed", size = 2132997 }, - { url = "https://files.pythonhosted.org/packages/52/70/d702ef7a6cd41a8afc61f3554922b3ed8d19dd54c3bd4bdbfe332e610827/pydantic_core-2.41.4-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:f9672ab4d398e1b602feadcffcdd3af44d5f5e6ddc15bc7d15d376d47e8e19f8", size = 2307187 }, - { url = "https://files.pythonhosted.org/packages/68/4c/c06be6e27545d08b802127914156f38d10ca287a9e8489342793de8aae3c/pydantic_core-2.41.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:84d8854db5f55fead3b579f04bda9a36461dab0730c5d570e1526483e7bb8431", size = 2305204 }, - { url = "https://files.pythonhosted.org/packages/b0/e5/35ae4919bcd9f18603419e23c5eaf32750224a89d41a8df1a3704b69f77e/pydantic_core-2.41.4-cp312-cp312-win32.whl", hash = "sha256:9be1c01adb2ecc4e464392c36d17f97e9110fbbc906bcbe1c943b5b87a74aabd", size = 1972536 }, - { url = "https://files.pythonhosted.org/packages/1e/c2/49c5bb6d2a49eb2ee3647a93e3dae7080c6409a8a7558b075027644e879c/pydantic_core-2.41.4-cp312-cp312-win_amd64.whl", hash = "sha256:d682cf1d22bab22a5be08539dca3d1593488a99998f9f412137bc323179067ff", size = 2031132 }, - { url = "https://files.pythonhosted.org/packages/06/23/936343dbcba6eec93f73e95eb346810fc732f71ba27967b287b66f7b7097/pydantic_core-2.41.4-cp312-cp312-win_arm64.whl", hash = "sha256:833eebfd75a26d17470b58768c1834dfc90141b7afc6eb0429c21fc5a21dcfb8", size = 1969483 }, - { url = "https://files.pythonhosted.org/packages/13/d0/c20adabd181a029a970738dfe23710b52a31f1258f591874fcdec7359845/pydantic_core-2.41.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:85e050ad9e5f6fe1004eec65c914332e52f429bc0ae12d6fa2092407a462c746", size = 2105688 }, - { url = "https://files.pythonhosted.org/packages/00/b6/0ce5c03cec5ae94cca220dfecddc453c077d71363b98a4bbdb3c0b22c783/pydantic_core-2.41.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e7393f1d64792763a48924ba31d1e44c2cfbc05e3b1c2c9abb4ceeadd912cced", size = 1910807 }, - { url = "https://files.pythonhosted.org/packages/68/3e/800d3d02c8beb0b5c069c870cbb83799d085debf43499c897bb4b4aaff0d/pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94dab0940b0d1fb28bcab847adf887c66a27a40291eedf0b473be58761c9799a", size = 1956669 }, - { url = "https://files.pythonhosted.org/packages/60/a4/24271cc71a17f64589be49ab8bd0751f6a0a03046c690df60989f2f95c2c/pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:de7c42f897e689ee6f9e93c4bec72b99ae3b32a2ade1c7e4798e690ff5246e02", size = 2051629 }, - { url = "https://files.pythonhosted.org/packages/68/de/45af3ca2f175d91b96bfb62e1f2d2f1f9f3b14a734afe0bfeff079f78181/pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:664b3199193262277b8b3cd1e754fb07f2c6023289c815a1e1e8fb415cb247b1", size = 2224049 }, - { url = "https://files.pythonhosted.org/packages/af/8f/ae4e1ff84672bf869d0a77af24fd78387850e9497753c432875066b5d622/pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d95b253b88f7d308b1c0b417c4624f44553ba4762816f94e6986819b9c273fb2", size = 2342409 }, - { url = "https://files.pythonhosted.org/packages/18/62/273dd70b0026a085c7b74b000394e1ef95719ea579c76ea2f0cc8893736d/pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1351f5bbdbbabc689727cb91649a00cb9ee7203e0a6e54e9f5ba9e22e384b84", size = 2069635 }, - { url = "https://files.pythonhosted.org/packages/30/03/cf485fff699b4cdaea469bc481719d3e49f023241b4abb656f8d422189fc/pydantic_core-2.41.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1affa4798520b148d7182da0615d648e752de4ab1a9566b7471bc803d88a062d", size = 2194284 }, - { url = "https://files.pythonhosted.org/packages/f9/7e/c8e713db32405dfd97211f2fc0a15d6bf8adb7640f3d18544c1f39526619/pydantic_core-2.41.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7b74e18052fea4aa8dea2fb7dbc23d15439695da6cbe6cfc1b694af1115df09d", size = 2137566 }, - { url = "https://files.pythonhosted.org/packages/04/f7/db71fd4cdccc8b75990f79ccafbbd66757e19f6d5ee724a6252414483fb4/pydantic_core-2.41.4-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:285b643d75c0e30abda9dc1077395624f314a37e3c09ca402d4015ef5979f1a2", size = 2316809 }, - { url = "https://files.pythonhosted.org/packages/76/63/a54973ddb945f1bca56742b48b144d85c9fc22f819ddeb9f861c249d5464/pydantic_core-2.41.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:f52679ff4218d713b3b33f88c89ccbf3a5c2c12ba665fb80ccc4192b4608dbab", size = 2311119 }, - { url = "https://files.pythonhosted.org/packages/f8/03/5d12891e93c19218af74843a27e32b94922195ded2386f7b55382f904d2f/pydantic_core-2.41.4-cp313-cp313-win32.whl", hash = "sha256:ecde6dedd6fff127c273c76821bb754d793be1024bc33314a120f83a3c69460c", size = 1981398 }, - { url = "https://files.pythonhosted.org/packages/be/d8/fd0de71f39db91135b7a26996160de71c073d8635edfce8b3c3681be0d6d/pydantic_core-2.41.4-cp313-cp313-win_amd64.whl", hash = "sha256:d081a1f3800f05409ed868ebb2d74ac39dd0c1ff6c035b5162356d76030736d4", size = 2030735 }, - { url = "https://files.pythonhosted.org/packages/72/86/c99921c1cf6650023c08bfab6fe2d7057a5142628ef7ccfa9921f2dda1d5/pydantic_core-2.41.4-cp313-cp313-win_arm64.whl", hash = "sha256:f8e49c9c364a7edcbe2a310f12733aad95b022495ef2a8d653f645e5d20c1564", size = 1973209 }, - { url = "https://files.pythonhosted.org/packages/36/0d/b5706cacb70a8414396efdda3d72ae0542e050b591119e458e2490baf035/pydantic_core-2.41.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ed97fd56a561f5eb5706cebe94f1ad7c13b84d98312a05546f2ad036bafe87f4", size = 1877324 }, - { url = "https://files.pythonhosted.org/packages/de/2d/cba1fa02cfdea72dfb3a9babb067c83b9dff0bbcb198368e000a6b756ea7/pydantic_core-2.41.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a870c307bf1ee91fc58a9a61338ff780d01bfae45922624816878dce784095d2", size = 1884515 }, - { url = "https://files.pythonhosted.org/packages/07/ea/3df927c4384ed9b503c9cc2d076cf983b4f2adb0c754578dfb1245c51e46/pydantic_core-2.41.4-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d25e97bc1f5f8f7985bdc2335ef9e73843bb561eb1fa6831fdfc295c1c2061cf", size = 2042819 }, - { url = "https://files.pythonhosted.org/packages/6a/ee/df8e871f07074250270a3b1b82aad4cd0026b588acd5d7d3eb2fcb1471a3/pydantic_core-2.41.4-cp313-cp313t-win_amd64.whl", hash = "sha256:d405d14bea042f166512add3091c1af40437c2e7f86988f3915fabd27b1e9cd2", size = 1995866 }, - { url = "https://files.pythonhosted.org/packages/fc/de/b20f4ab954d6d399499c33ec4fafc46d9551e11dc1858fb7f5dca0748ceb/pydantic_core-2.41.4-cp313-cp313t-win_arm64.whl", hash = "sha256:19f3684868309db5263a11bace3c45d93f6f24afa2ffe75a647583df22a2ff89", size = 1970034 }, - { url = "https://files.pythonhosted.org/packages/54/28/d3325da57d413b9819365546eb9a6e8b7cbd9373d9380efd5f74326143e6/pydantic_core-2.41.4-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:e9205d97ed08a82ebb9a307e92914bb30e18cdf6f6b12ca4bedadb1588a0bfe1", size = 2102022 }, - { url = "https://files.pythonhosted.org/packages/9e/24/b58a1bc0d834bf1acc4361e61233ee217169a42efbdc15a60296e13ce438/pydantic_core-2.41.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:82df1f432b37d832709fbcc0e24394bba04a01b6ecf1ee87578145c19cde12ac", size = 1905495 }, - { url = "https://files.pythonhosted.org/packages/fb/a4/71f759cc41b7043e8ecdaab81b985a9b6cad7cec077e0b92cff8b71ecf6b/pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc3b4cc4539e055cfa39a3763c939f9d409eb40e85813257dcd761985a108554", size = 1956131 }, - { url = "https://files.pythonhosted.org/packages/b0/64/1e79ac7aa51f1eec7c4cda8cbe456d5d09f05fdd68b32776d72168d54275/pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b1eb1754fce47c63d2ff57fdb88c351a6c0150995890088b33767a10218eaa4e", size = 2052236 }, - { url = "https://files.pythonhosted.org/packages/e9/e3/a3ffc363bd4287b80f1d43dc1c28ba64831f8dfc237d6fec8f2661138d48/pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e6ab5ab30ef325b443f379ddb575a34969c333004fca5a1daa0133a6ffaad616", size = 2223573 }, - { url = "https://files.pythonhosted.org/packages/28/27/78814089b4d2e684a9088ede3790763c64693c3d1408ddc0a248bc789126/pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:31a41030b1d9ca497634092b46481b937ff9397a86f9f51bd41c4767b6fc04af", size = 2342467 }, - { url = "https://files.pythonhosted.org/packages/92/97/4de0e2a1159cb85ad737e03306717637842c88c7fd6d97973172fb183149/pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a44ac1738591472c3d020f61c6df1e4015180d6262ebd39bf2aeb52571b60f12", size = 2063754 }, - { url = "https://files.pythonhosted.org/packages/0f/50/8cb90ce4b9efcf7ae78130afeb99fd1c86125ccdf9906ef64b9d42f37c25/pydantic_core-2.41.4-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d72f2b5e6e82ab8f94ea7d0d42f83c487dc159c5240d8f83beae684472864e2d", size = 2196754 }, - { url = "https://files.pythonhosted.org/packages/34/3b/ccdc77af9cd5082723574a1cc1bcae7a6acacc829d7c0a06201f7886a109/pydantic_core-2.41.4-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:c4d1e854aaf044487d31143f541f7aafe7b482ae72a022c664b2de2e466ed0ad", size = 2137115 }, - { url = "https://files.pythonhosted.org/packages/ca/ba/e7c7a02651a8f7c52dc2cff2b64a30c313e3b57c7d93703cecea76c09b71/pydantic_core-2.41.4-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:b568af94267729d76e6ee5ececda4e283d07bbb28e8148bb17adad93d025d25a", size = 2317400 }, - { url = "https://files.pythonhosted.org/packages/2c/ba/6c533a4ee8aec6b812c643c49bb3bd88d3f01e3cebe451bb85512d37f00f/pydantic_core-2.41.4-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:6d55fb8b1e8929b341cc313a81a26e0d48aa3b519c1dbaadec3a6a2b4fcad025", size = 2312070 }, - { url = "https://files.pythonhosted.org/packages/22/ae/f10524fcc0ab8d7f96cf9a74c880243576fd3e72bd8ce4f81e43d22bcab7/pydantic_core-2.41.4-cp314-cp314-win32.whl", hash = "sha256:5b66584e549e2e32a1398df11da2e0a7eff45d5c2d9db9d5667c5e6ac764d77e", size = 1982277 }, - { url = "https://files.pythonhosted.org/packages/b4/dc/e5aa27aea1ad4638f0c3fb41132f7eb583bd7420ee63204e2d4333a3bbf9/pydantic_core-2.41.4-cp314-cp314-win_amd64.whl", hash = "sha256:557a0aab88664cc552285316809cab897716a372afaf8efdbef756f8b890e894", size = 2024608 }, - { url = "https://files.pythonhosted.org/packages/3e/61/51d89cc2612bd147198e120a13f150afbf0bcb4615cddb049ab10b81b79e/pydantic_core-2.41.4-cp314-cp314-win_arm64.whl", hash = "sha256:3f1ea6f48a045745d0d9f325989d8abd3f1eaf47dd00485912d1a3a63c623a8d", size = 1967614 }, - { url = "https://files.pythonhosted.org/packages/0d/c2/472f2e31b95eff099961fa050c376ab7156a81da194f9edb9f710f68787b/pydantic_core-2.41.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:6c1fe4c5404c448b13188dd8bd2ebc2bdd7e6727fa61ff481bcc2cca894018da", size = 1876904 }, - { url = "https://files.pythonhosted.org/packages/4a/07/ea8eeb91173807ecdae4f4a5f4b150a520085b35454350fc219ba79e66a3/pydantic_core-2.41.4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:523e7da4d43b113bf8e7b49fa4ec0c35bf4fe66b2230bfc5c13cc498f12c6c3e", size = 1882538 }, - { url = "https://files.pythonhosted.org/packages/1e/29/b53a9ca6cd366bfc928823679c6a76c7a4c69f8201c0ba7903ad18ebae2f/pydantic_core-2.41.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5729225de81fb65b70fdb1907fcf08c75d498f4a6f15af005aabb1fdadc19dfa", size = 2041183 }, - { url = "https://files.pythonhosted.org/packages/c7/3d/f8c1a371ceebcaf94d6dd2d77c6cf4b1c078e13a5837aee83f760b4f7cfd/pydantic_core-2.41.4-cp314-cp314t-win_amd64.whl", hash = "sha256:de2cfbb09e88f0f795fd90cf955858fc2c691df65b1f21f0aa00b99f3fbc661d", size = 1993542 }, - { url = "https://files.pythonhosted.org/packages/8a/ac/9fc61b4f9d079482a290afe8d206b8f490e9fd32d4fc03ed4fc698214e01/pydantic_core-2.41.4-cp314-cp314t-win_arm64.whl", hash = "sha256:d34f950ae05a83e0ede899c595f312ca976023ea1db100cd5aa188f7005e3ab0", size = 1973897 }, -] - -[[package]] -name = "pyflakes" -version = "3.4.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/45/dc/fd034dc20b4b264b3d015808458391acbf9df40b1e54750ef175d39180b1/pyflakes-3.4.0.tar.gz", hash = "sha256:b24f96fafb7d2ab0ec5075b7350b3d2d2218eab42003821c06344973d3ea2f58", size = 64669 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c2/2f/81d580a0fb83baeb066698975cb14a618bdbed7720678566f1b046a95fe8/pyflakes-3.4.0-py2.py3-none-any.whl", hash = "sha256:f742a7dbd0d9cb9ea41e9a24a918996e8170c799fa528688d40dd582c8265f4f", size = 63551 }, +sdist = { url = "https://files.pythonhosted.org/packages/71/70/23b021c950c2addd24ec408e9ab05d59b035b39d97cdc1130e1bce647bb6/pydantic_core-2.41.5.tar.gz", hash = "sha256:08daa51ea16ad373ffd5e7606252cc32f07bc72b28284b6bc9c6df804816476e", size = 460952 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5f/5d/5f6c63eebb5afee93bcaae4ce9a898f3373ca23df3ccaef086d0233a35a7/pydantic_core-2.41.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f41a7489d32336dbf2199c8c0a215390a751c5b014c2c1c5366e817202e9cdf7", size = 2110990 }, + { url = "https://files.pythonhosted.org/packages/aa/32/9c2e8ccb57c01111e0fd091f236c7b371c1bccea0fa85247ac55b1e2b6b6/pydantic_core-2.41.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:070259a8818988b9a84a449a2a7337c7f430a22acc0859c6b110aa7212a6d9c0", size = 1896003 }, + { url = "https://files.pythonhosted.org/packages/68/b8/a01b53cb0e59139fbc9e4fda3e9724ede8de279097179be4ff31f1abb65a/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e96cea19e34778f8d59fe40775a7a574d95816eb150850a85a7a4c8f4b94ac69", size = 1919200 }, + { url = "https://files.pythonhosted.org/packages/38/de/8c36b5198a29bdaade07b5985e80a233a5ac27137846f3bc2d3b40a47360/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed2e99c456e3fadd05c991f8f437ef902e00eedf34320ba2b0842bd1c3ca3a75", size = 2052578 }, + { url = "https://files.pythonhosted.org/packages/00/b5/0e8e4b5b081eac6cb3dbb7e60a65907549a1ce035a724368c330112adfdd/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65840751b72fbfd82c3c640cff9284545342a4f1eb1586ad0636955b261b0b05", size = 2208504 }, + { url = "https://files.pythonhosted.org/packages/77/56/87a61aad59c7c5b9dc8caad5a41a5545cba3810c3e828708b3d7404f6cef/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e536c98a7626a98feb2d3eaf75944ef6f3dbee447e1f841eae16f2f0a72d8ddc", size = 2335816 }, + { url = "https://files.pythonhosted.org/packages/0d/76/941cc9f73529988688a665a5c0ecff1112b3d95ab48f81db5f7606f522d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eceb81a8d74f9267ef4081e246ffd6d129da5d87e37a77c9bde550cb04870c1c", size = 2075366 }, + { url = "https://files.pythonhosted.org/packages/d3/43/ebef01f69baa07a482844faaa0a591bad1ef129253ffd0cdaa9d8a7f72d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d38548150c39b74aeeb0ce8ee1d8e82696f4a4e16ddc6de7b1d8823f7de4b9b5", size = 2171698 }, + { url = "https://files.pythonhosted.org/packages/b1/87/41f3202e4193e3bacfc2c065fab7706ebe81af46a83d3e27605029c1f5a6/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c23e27686783f60290e36827f9c626e63154b82b116d7fe9adba1fda36da706c", size = 2132603 }, + { url = "https://files.pythonhosted.org/packages/49/7d/4c00df99cb12070b6bccdef4a195255e6020a550d572768d92cc54dba91a/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:482c982f814460eabe1d3bb0adfdc583387bd4691ef00b90575ca0d2b6fe2294", size = 2329591 }, + { url = "https://files.pythonhosted.org/packages/cc/6a/ebf4b1d65d458f3cda6a7335d141305dfa19bdc61140a884d165a8a1bbc7/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bfea2a5f0b4d8d43adf9d7b8bf019fb46fdd10a2e5cde477fbcb9d1fa08c68e1", size = 2319068 }, + { url = "https://files.pythonhosted.org/packages/49/3b/774f2b5cd4192d5ab75870ce4381fd89cf218af999515baf07e7206753f0/pydantic_core-2.41.5-cp312-cp312-win32.whl", hash = "sha256:b74557b16e390ec12dca509bce9264c3bbd128f8a2c376eaa68003d7f327276d", size = 1985908 }, + { url = "https://files.pythonhosted.org/packages/86/45/00173a033c801cacf67c190fef088789394feaf88a98a7035b0e40d53dc9/pydantic_core-2.41.5-cp312-cp312-win_amd64.whl", hash = "sha256:1962293292865bca8e54702b08a4f26da73adc83dd1fcf26fbc875b35d81c815", size = 2020145 }, + { url = "https://files.pythonhosted.org/packages/f9/22/91fbc821fa6d261b376a3f73809f907cec5ca6025642c463d3488aad22fb/pydantic_core-2.41.5-cp312-cp312-win_arm64.whl", hash = "sha256:1746d4a3d9a794cacae06a5eaaccb4b8643a131d45fbc9af23e353dc0a5ba5c3", size = 1976179 }, + { url = "https://files.pythonhosted.org/packages/87/06/8806241ff1f70d9939f9af039c6c35f2360cf16e93c2ca76f184e76b1564/pydantic_core-2.41.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:941103c9be18ac8daf7b7adca8228f8ed6bb7a1849020f643b3a14d15b1924d9", size = 2120403 }, + { url = "https://files.pythonhosted.org/packages/94/02/abfa0e0bda67faa65fef1c84971c7e45928e108fe24333c81f3bfe35d5f5/pydantic_core-2.41.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:112e305c3314f40c93998e567879e887a3160bb8689ef3d2c04b6cc62c33ac34", size = 1896206 }, + { url = "https://files.pythonhosted.org/packages/15/df/a4c740c0943e93e6500f9eb23f4ca7ec9bf71b19e608ae5b579678c8d02f/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cbaad15cb0c90aa221d43c00e77bb33c93e8d36e0bf74760cd00e732d10a6a0", size = 1919307 }, + { url = "https://files.pythonhosted.org/packages/9a/e3/6324802931ae1d123528988e0e86587c2072ac2e5394b4bc2bc34b61ff6e/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:03ca43e12fab6023fc79d28ca6b39b05f794ad08ec2feccc59a339b02f2b3d33", size = 2063258 }, + { url = "https://files.pythonhosted.org/packages/c9/d4/2230d7151d4957dd79c3044ea26346c148c98fbf0ee6ebd41056f2d62ab5/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc799088c08fa04e43144b164feb0c13f9a0bc40503f8df3e9fde58a3c0c101e", size = 2214917 }, + { url = "https://files.pythonhosted.org/packages/e6/9f/eaac5df17a3672fef0081b6c1bb0b82b33ee89aa5cec0d7b05f52fd4a1fa/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:97aeba56665b4c3235a0e52b2c2f5ae9cd071b8a8310ad27bddb3f7fb30e9aa2", size = 2332186 }, + { url = "https://files.pythonhosted.org/packages/cf/4e/35a80cae583a37cf15604b44240e45c05e04e86f9cfd766623149297e971/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:406bf18d345822d6c21366031003612b9c77b3e29ffdb0f612367352aab7d586", size = 2073164 }, + { url = "https://files.pythonhosted.org/packages/bf/e3/f6e262673c6140dd3305d144d032f7bd5f7497d3871c1428521f19f9efa2/pydantic_core-2.41.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b93590ae81f7010dbe380cdeab6f515902ebcbefe0b9327cc4804d74e93ae69d", size = 2179146 }, + { url = "https://files.pythonhosted.org/packages/75/c7/20bd7fc05f0c6ea2056a4565c6f36f8968c0924f19b7d97bbfea55780e73/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:01a3d0ab748ee531f4ea6c3e48ad9dac84ddba4b0d82291f87248f2f9de8d740", size = 2137788 }, + { url = "https://files.pythonhosted.org/packages/3a/8d/34318ef985c45196e004bc46c6eab2eda437e744c124ef0dbe1ff2c9d06b/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:6561e94ba9dacc9c61bce40e2d6bdc3bfaa0259d3ff36ace3b1e6901936d2e3e", size = 2340133 }, + { url = "https://files.pythonhosted.org/packages/9c/59/013626bf8c78a5a5d9350d12e7697d3d4de951a75565496abd40ccd46bee/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:915c3d10f81bec3a74fbd4faebe8391013ba61e5a1a8d48c4455b923bdda7858", size = 2324852 }, + { url = "https://files.pythonhosted.org/packages/1a/d9/c248c103856f807ef70c18a4f986693a46a8ffe1602e5d361485da502d20/pydantic_core-2.41.5-cp313-cp313-win32.whl", hash = "sha256:650ae77860b45cfa6e2cdafc42618ceafab3a2d9a3811fcfbd3bbf8ac3c40d36", size = 1994679 }, + { url = "https://files.pythonhosted.org/packages/9e/8b/341991b158ddab181cff136acd2552c9f35bd30380422a639c0671e99a91/pydantic_core-2.41.5-cp313-cp313-win_amd64.whl", hash = "sha256:79ec52ec461e99e13791ec6508c722742ad745571f234ea6255bed38c6480f11", size = 2019766 }, + { url = "https://files.pythonhosted.org/packages/73/7d/f2f9db34af103bea3e09735bb40b021788a5e834c81eedb541991badf8f5/pydantic_core-2.41.5-cp313-cp313-win_arm64.whl", hash = "sha256:3f84d5c1b4ab906093bdc1ff10484838aca54ef08de4afa9de0f5f14d69639cd", size = 1981005 }, + { url = "https://files.pythonhosted.org/packages/ea/28/46b7c5c9635ae96ea0fbb779e271a38129df2550f763937659ee6c5dbc65/pydantic_core-2.41.5-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:3f37a19d7ebcdd20b96485056ba9e8b304e27d9904d233d7b1015db320e51f0a", size = 2119622 }, + { url = "https://files.pythonhosted.org/packages/74/1a/145646e5687e8d9a1e8d09acb278c8535ebe9e972e1f162ed338a622f193/pydantic_core-2.41.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1d1d9764366c73f996edd17abb6d9d7649a7eb690006ab6adbda117717099b14", size = 1891725 }, + { url = "https://files.pythonhosted.org/packages/23/04/e89c29e267b8060b40dca97bfc64a19b2a3cf99018167ea1677d96368273/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25e1c2af0fce638d5f1988b686f3b3ea8cd7de5f244ca147c777769e798a9cd1", size = 1915040 }, + { url = "https://files.pythonhosted.org/packages/84/a3/15a82ac7bd97992a82257f777b3583d3e84bdb06ba6858f745daa2ec8a85/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:506d766a8727beef16b7adaeb8ee6217c64fc813646b424d0804d67c16eddb66", size = 2063691 }, + { url = "https://files.pythonhosted.org/packages/74/9b/0046701313c6ef08c0c1cf0e028c67c770a4e1275ca73131563c5f2a310a/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4819fa52133c9aa3c387b3328f25c1facc356491e6135b459f1de698ff64d869", size = 2213897 }, + { url = "https://files.pythonhosted.org/packages/8a/cd/6bac76ecd1b27e75a95ca3a9a559c643b3afcd2dd62086d4b7a32a18b169/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b761d210c9ea91feda40d25b4efe82a1707da2ef62901466a42492c028553a2", size = 2333302 }, + { url = "https://files.pythonhosted.org/packages/4c/d2/ef2074dc020dd6e109611a8be4449b98cd25e1b9b8a303c2f0fca2f2bcf7/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22f0fb8c1c583a3b6f24df2470833b40207e907b90c928cc8d3594b76f874375", size = 2064877 }, + { url = "https://files.pythonhosted.org/packages/18/66/e9db17a9a763d72f03de903883c057b2592c09509ccfe468187f2a2eef29/pydantic_core-2.41.5-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2782c870e99878c634505236d81e5443092fba820f0373997ff75f90f68cd553", size = 2180680 }, + { url = "https://files.pythonhosted.org/packages/d3/9e/3ce66cebb929f3ced22be85d4c2399b8e85b622db77dad36b73c5387f8f8/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:0177272f88ab8312479336e1d777f6b124537d47f2123f89cb37e0accea97f90", size = 2138960 }, + { url = "https://files.pythonhosted.org/packages/a6/62/205a998f4327d2079326b01abee48e502ea739d174f0a89295c481a2272e/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:63510af5e38f8955b8ee5687740d6ebf7c2a0886d15a6d65c32814613681bc07", size = 2339102 }, + { url = "https://files.pythonhosted.org/packages/3c/0d/f05e79471e889d74d3d88f5bd20d0ed189ad94c2423d81ff8d0000aab4ff/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:e56ba91f47764cc14f1daacd723e3e82d1a89d783f0f5afe9c364b8bb491ccdb", size = 2326039 }, + { url = "https://files.pythonhosted.org/packages/ec/e1/e08a6208bb100da7e0c4b288eed624a703f4d129bde2da475721a80cab32/pydantic_core-2.41.5-cp314-cp314-win32.whl", hash = "sha256:aec5cf2fd867b4ff45b9959f8b20ea3993fc93e63c7363fe6851424c8a7e7c23", size = 1995126 }, + { url = "https://files.pythonhosted.org/packages/48/5d/56ba7b24e9557f99c9237e29f5c09913c81eeb2f3217e40e922353668092/pydantic_core-2.41.5-cp314-cp314-win_amd64.whl", hash = "sha256:8e7c86f27c585ef37c35e56a96363ab8de4e549a95512445b85c96d3e2f7c1bf", size = 2015489 }, + { url = "https://files.pythonhosted.org/packages/4e/bb/f7a190991ec9e3e0ba22e4993d8755bbc4a32925c0b5b42775c03e8148f9/pydantic_core-2.41.5-cp314-cp314-win_arm64.whl", hash = "sha256:e672ba74fbc2dc8eea59fb6d4aed6845e6905fc2a8afe93175d94a83ba2a01a0", size = 1977288 }, + { url = "https://files.pythonhosted.org/packages/92/ed/77542d0c51538e32e15afe7899d79efce4b81eee631d99850edc2f5e9349/pydantic_core-2.41.5-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:8566def80554c3faa0e65ac30ab0932b9e3a5cd7f8323764303d468e5c37595a", size = 2120255 }, + { url = "https://files.pythonhosted.org/packages/bb/3d/6913dde84d5be21e284439676168b28d8bbba5600d838b9dca99de0fad71/pydantic_core-2.41.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b80aa5095cd3109962a298ce14110ae16b8c1aece8b72f9dafe81cf597ad80b3", size = 1863760 }, + { url = "https://files.pythonhosted.org/packages/5a/f0/e5e6b99d4191da102f2b0eb9687aaa7f5bea5d9964071a84effc3e40f997/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3006c3dd9ba34b0c094c544c6006cc79e87d8612999f1a5d43b769b89181f23c", size = 1878092 }, + { url = "https://files.pythonhosted.org/packages/71/48/36fb760642d568925953bcc8116455513d6e34c4beaa37544118c36aba6d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72f6c8b11857a856bcfa48c86f5368439f74453563f951e473514579d44aa612", size = 2053385 }, + { url = "https://files.pythonhosted.org/packages/20/25/92dc684dd8eb75a234bc1c764b4210cf2646479d54b47bf46061657292a8/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cb1b2f9742240e4bb26b652a5aeb840aa4b417c7748b6f8387927bc6e45e40d", size = 2218832 }, + { url = "https://files.pythonhosted.org/packages/e2/09/f53e0b05023d3e30357d82eb35835d0f6340ca344720a4599cd663dca599/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bd3d54f38609ff308209bd43acea66061494157703364ae40c951f83ba99a1a9", size = 2327585 }, + { url = "https://files.pythonhosted.org/packages/aa/4e/2ae1aa85d6af35a39b236b1b1641de73f5a6ac4d5a7509f77b814885760c/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ff4321e56e879ee8d2a879501c8e469414d948f4aba74a2d4593184eb326660", size = 2041078 }, + { url = "https://files.pythonhosted.org/packages/cd/13/2e215f17f0ef326fc72afe94776edb77525142c693767fc347ed6288728d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0d2568a8c11bf8225044aa94409e21da0cb09dcdafe9ecd10250b2baad531a9", size = 2173914 }, + { url = "https://files.pythonhosted.org/packages/02/7a/f999a6dcbcd0e5660bc348a3991c8915ce6599f4f2c6ac22f01d7a10816c/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:a39455728aabd58ceabb03c90e12f71fd30fa69615760a075b9fec596456ccc3", size = 2129560 }, + { url = "https://files.pythonhosted.org/packages/3a/b1/6c990ac65e3b4c079a4fb9f5b05f5b013afa0f4ed6780a3dd236d2cbdc64/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:239edca560d05757817c13dc17c50766136d21f7cd0fac50295499ae24f90fdf", size = 2329244 }, + { url = "https://files.pythonhosted.org/packages/d9/02/3c562f3a51afd4d88fff8dffb1771b30cfdfd79befd9883ee094f5b6c0d8/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:2a5e06546e19f24c6a96a129142a75cee553cc018ffee48a460059b1185f4470", size = 2331955 }, + { url = "https://files.pythonhosted.org/packages/5c/96/5fb7d8c3c17bc8c62fdb031c47d77a1af698f1d7a406b0f79aaa1338f9ad/pydantic_core-2.41.5-cp314-cp314t-win32.whl", hash = "sha256:b4ececa40ac28afa90871c2cc2b9ffd2ff0bf749380fbdf57d165fd23da353aa", size = 1988906 }, + { url = "https://files.pythonhosted.org/packages/22/ed/182129d83032702912c2e2d8bbe33c036f342cc735737064668585dac28f/pydantic_core-2.41.5-cp314-cp314t-win_amd64.whl", hash = "sha256:80aa89cad80b32a912a65332f64a4450ed00966111b6615ca6816153d3585a8c", size = 1981607 }, + { url = "https://files.pythonhosted.org/packages/9f/ed/068e41660b832bb0b1aa5b58011dea2a3fe0ba7861ff38c4d4904c1c1a99/pydantic_core-2.41.5-cp314-cp314t-win_arm64.whl", hash = "sha256:35b44f37a3199f771c3eaa53051bc8a70cd7b54f333531c59e29fd4db5d15008", size = 1974769 }, ] [[package]] @@ -2194,22 +2158,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/bd/24/12818598c362d7f300f18e74db45963dbcb85150324092410c8b49405e42/pyproject_hooks-1.2.0-py3-none-any.whl", hash = "sha256:9e5c6bfa8dcc30091c74b0cf803c81fdd29d94f01992a7707bc97babb1141913", size = 10216 }, ] -[[package]] -name = "pytest" -version = "8.4.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "iniconfig" }, - { name = "packaging" }, - { name = "pluggy" }, - { name = "pygments" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a3/5c/00a0e072241553e1a7496d638deababa67c5058571567b92a7eaa258397c/pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01", size = 1519618 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a8/a4/20da314d277121d6534b3a980b29035dcd51e6744bd79075a6ce8fa4eb8d/pytest-8.4.2-py3-none-any.whl", hash = "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79", size = 365750 }, -] - [[package]] name = "python-dateutil" version = "2.9.0.post0" @@ -2243,15 +2191,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a4/62/02da182e544a51a5c3ccf4b03ab79df279f9c60c5e82d5e8bec7ca26ac11/python_slugify-8.0.4-py2.py3-none-any.whl", hash = "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8", size = 10051 }, ] -[[package]] -name = "pytokens" -version = "0.2.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d4/c2/dbadcdddb412a267585459142bfd7cc241e6276db69339353ae6e241ab2b/pytokens-0.2.0.tar.gz", hash = "sha256:532d6421364e5869ea57a9523bf385f02586d4662acbcc0342afd69511b4dd43", size = 15368 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/89/5a/c269ea6b348b6f2c32686635df89f32dbe05df1088dd4579302a6f8f99af/pytokens-0.2.0-py3-none-any.whl", hash = "sha256:74d4b318c67f4295c13782ddd9abcb7e297ec5630ad060eb90abf7ebbefe59f8", size = 12038 }, -] - [[package]] name = "pytz" version = "2025.2" @@ -2366,6 +2305,61 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/81/d6/4bfbb40c9a0b42fc53c7cf442f6385db70b40f74a783130c5d0a5aa62228/pyzmq-27.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:dc5dbf68a7857b59473f7df42650c621d7e8923fb03fa74a526890f4d33cc4d7", size = 575170 }, ] +[[package]] +name = "ray" +version = "2.51.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "filelock" }, + { name = "jsonschema" }, + { name = "msgpack" }, + { name = "packaging" }, + { name = "protobuf" }, + { name = "pyyaml" }, + { name = "requests" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/f6/95/51e44ce79e42f02ca1c4d4c5501e6dd49f3a384c5f6324aceb4e0015988a/ray-2.51.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:ef847b025ca758baee4571a1ca001d973897cad772f8e95d7f303d24c38b649e", size = 68029226 }, + { url = "https://files.pythonhosted.org/packages/e2/b5/a93e39e131067edb7cba3385a609f61aaaf7aa54728cd3a7474bfbf3b0fc/ray-2.51.1-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:0bed9408712bad1511e65683a455302f88d94e5e5cb6a58cc4a154b61d8a0b4a", size = 70502423 }, + { url = "https://files.pythonhosted.org/packages/ee/59/69b7a653ed8176fc7fd894d462ed34bb1477e7fa71700324de99179b5b7e/ray-2.51.1-cp312-cp312-manylinux2014_x86_64.whl", hash = "sha256:4e786da7862cf73664977d0212a505d6d5a585beadf63e7dc1e1c129259bee20", size = 71353730 }, + { url = "https://files.pythonhosted.org/packages/38/91/0c4fe7aed34baa14d9c050c88f39ff16083d555bd6dcd6c4ffb4332a6f8a/ray-2.51.1-cp312-cp312-win_amd64.whl", hash = "sha256:198fda93074a6863555f4003e9013bb2ba0cd50b59b18c02affdc294b28a2eef", size = 26674921 }, + { url = "https://files.pythonhosted.org/packages/65/1c/3ebf7277d8ae5f99150a5890bff4bdc627021e3a1be7caacd075d2996c7a/ray-2.51.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:d81547886435142dbd79bff1d4e4edf578a5f20e3b11bbd4ced49cfafbd37d27", size = 67974221 }, + { url = "https://files.pythonhosted.org/packages/f6/47/13ba6c4d0e97aff94dcf8537f2832d1101c2080a0aea5c973a4de1d4d8bd/ray-2.51.1-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:3f2bd2acf9b7f4738c17d08592caaad26eafb7a4fc380ad9ab42d5f0a78f73ad", size = 70410610 }, + { url = "https://files.pythonhosted.org/packages/ac/87/3cdf6d0504659d8192baa6576dd7a17ea395a4d969010274f7cc0e894281/ray-2.51.1-cp313-cp313-manylinux2014_x86_64.whl", hash = "sha256:265ecd6fd6d4a695b09c686e17d58fca0c09e7198c073628ae7bf4974b03e9ca", size = 71269225 }, +] + +[package.optional-dependencies] +train = [ + { name = "fsspec" }, + { name = "pandas" }, + { name = "pyarrow" }, + { name = "pydantic" }, + { name = "requests" }, + { name = "tensorboardx" }, +] +tune = [ + { name = "fsspec" }, + { name = "pandas" }, + { name = "pyarrow" }, + { name = "requests" }, + { name = "tensorboardx" }, +] + +[[package]] +name = "referencing" +version = "0.37.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/22/f5/df4e9027acead3ecc63e50fe1e36aca1523e1719559c499951bb4b53188f/referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8", size = 78036 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl", hash = "sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231", size = 26766 }, +] + [[package]] name = "requests" version = "2.32.5" @@ -2381,6 +2375,87 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738 }, ] +[[package]] +name = "rpds-py" +version = "0.29.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/33/23b3b3419b6a3e0f559c7c0d2ca8fc1b9448382b25245033788785921332/rpds_py-0.29.0.tar.gz", hash = "sha256:fe55fe686908f50154d1dc599232016e50c243b438c3b7432f24e2895b0e5359", size = 69359 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/50/bc0e6e736d94e420df79be4deb5c9476b63165c87bb8f19ef75d100d21b3/rpds_py-0.29.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a0891cfd8db43e085c0ab93ab7e9b0c8fee84780d436d3b266b113e51e79f954", size = 376000 }, + { url = "https://files.pythonhosted.org/packages/3e/3a/46676277160f014ae95f24de53bed0e3b7ea66c235e7de0b9df7bd5d68ba/rpds_py-0.29.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3897924d3f9a0361472d884051f9a2460358f9a45b1d85a39a158d2f8f1ad71c", size = 360575 }, + { url = "https://files.pythonhosted.org/packages/75/ba/411d414ed99ea1afdd185bbabeeaac00624bd1e4b22840b5e9967ade6337/rpds_py-0.29.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a21deb8e0d1571508c6491ce5ea5e25669b1dd4adf1c9d64b6314842f708b5d", size = 392159 }, + { url = "https://files.pythonhosted.org/packages/8f/b1/e18aa3a331f705467a48d0296778dc1fea9d7f6cf675bd261f9a846c7e90/rpds_py-0.29.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9efe71687d6427737a0a2de9ca1c0a216510e6cd08925c44162be23ed7bed2d5", size = 410602 }, + { url = "https://files.pythonhosted.org/packages/2f/6c/04f27f0c9f2299274c76612ac9d2c36c5048bb2c6c2e52c38c60bf3868d9/rpds_py-0.29.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:40f65470919dc189c833e86b2c4bd21bd355f98436a2cef9e0a9a92aebc8e57e", size = 515808 }, + { url = "https://files.pythonhosted.org/packages/83/56/a8412aa464fb151f8bc0d91fb0bb888adc9039bd41c1c6ba8d94990d8cf8/rpds_py-0.29.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:def48ff59f181130f1a2cb7c517d16328efac3ec03951cca40c1dc2049747e83", size = 416015 }, + { url = "https://files.pythonhosted.org/packages/04/4c/f9b8a05faca3d9e0a6397c90d13acb9307c9792b2bff621430c58b1d6e76/rpds_py-0.29.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad7bd570be92695d89285a4b373006930715b78d96449f686af422debb4d3949", size = 395325 }, + { url = "https://files.pythonhosted.org/packages/34/60/869f3bfbf8ed7b54f1ad9a5543e0fdffdd40b5a8f587fe300ee7b4f19340/rpds_py-0.29.0-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:5a572911cd053137bbff8e3a52d31c5d2dba51d3a67ad902629c70185f3f2181", size = 410160 }, + { url = "https://files.pythonhosted.org/packages/91/aa/e5b496334e3aba4fe4c8a80187b89f3c1294c5c36f2a926da74338fa5a73/rpds_py-0.29.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d583d4403bcbf10cffc3ab5cee23d7643fcc960dff85973fd3c2d6c86e8dbb0c", size = 425309 }, + { url = "https://files.pythonhosted.org/packages/85/68/4e24a34189751ceb6d66b28f18159922828dd84155876551f7ca5b25f14f/rpds_py-0.29.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:070befbb868f257d24c3bb350dbd6e2f645e83731f31264b19d7231dd5c396c7", size = 574644 }, + { url = "https://files.pythonhosted.org/packages/8c/cf/474a005ea4ea9c3b4f17b6108b6b13cebfc98ebaff11d6e1b193204b3a93/rpds_py-0.29.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:fc935f6b20b0c9f919a8ff024739174522abd331978f750a74bb68abd117bd19", size = 601605 }, + { url = "https://files.pythonhosted.org/packages/f4/b1/c56f6a9ab8c5f6bb5c65c4b5f8229167a3a525245b0773f2c0896686b64e/rpds_py-0.29.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8c5a8ecaa44ce2d8d9d20a68a2483a74c07f05d72e94a4dff88906c8807e77b0", size = 564593 }, + { url = "https://files.pythonhosted.org/packages/b3/13/0494cecce4848f68501e0a229432620b4b57022388b071eeff95f3e1e75b/rpds_py-0.29.0-cp312-cp312-win32.whl", hash = "sha256:ba5e1aeaf8dd6d8f6caba1f5539cddda87d511331714b7b5fc908b6cfc3636b7", size = 223853 }, + { url = "https://files.pythonhosted.org/packages/1f/6a/51e9aeb444a00cdc520b032a28b07e5f8dc7bc328b57760c53e7f96997b4/rpds_py-0.29.0-cp312-cp312-win_amd64.whl", hash = "sha256:b5f6134faf54b3cb83375db0f113506f8b7770785be1f95a631e7e2892101977", size = 239895 }, + { url = "https://files.pythonhosted.org/packages/d1/d4/8bce56cdad1ab873e3f27cb31c6a51d8f384d66b022b820525b879f8bed1/rpds_py-0.29.0-cp312-cp312-win_arm64.whl", hash = "sha256:b016eddf00dca7944721bf0cd85b6af7f6c4efaf83ee0b37c4133bd39757a8c7", size = 230321 }, + { url = "https://files.pythonhosted.org/packages/fd/d9/c5de60d9d371bbb186c3e9bf75f4fc5665e11117a25a06a6b2e0afb7380e/rpds_py-0.29.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1585648d0760b88292eecab5181f5651111a69d90eff35d6b78aa32998886a61", size = 375710 }, + { url = "https://files.pythonhosted.org/packages/b3/b3/0860cdd012291dc21272895ce107f1e98e335509ba986dd83d72658b82b9/rpds_py-0.29.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:521807963971a23996ddaf764c682b3e46459b3c58ccd79fefbe16718db43154", size = 360582 }, + { url = "https://files.pythonhosted.org/packages/92/8a/a18c2f4a61b3407e56175f6aab6deacdf9d360191a3d6f38566e1eaf7266/rpds_py-0.29.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a8896986efaa243ab713c69e6491a4138410f0fe36f2f4c71e18bd5501e8014", size = 391172 }, + { url = "https://files.pythonhosted.org/packages/fd/49/e93354258508c50abc15cdcd5fcf7ac4117f67bb6233ad7859f75e7372a0/rpds_py-0.29.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1d24564a700ef41480a984c5ebed62b74e6ce5860429b98b1fede76049e953e6", size = 409586 }, + { url = "https://files.pythonhosted.org/packages/5a/8d/a27860dae1c19a6bdc901f90c81f0d581df1943355802961a57cdb5b6cd1/rpds_py-0.29.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e6596b93c010d386ae46c9fba9bfc9fc5965fa8228edeac51576299182c2e31c", size = 516339 }, + { url = "https://files.pythonhosted.org/packages/fc/ad/a75e603161e79b7110c647163d130872b271c6b28712c803c65d492100f7/rpds_py-0.29.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5cc58aac218826d054c7da7f95821eba94125d88be673ff44267bb89d12a5866", size = 416201 }, + { url = "https://files.pythonhosted.org/packages/b9/42/555b4ee17508beafac135c8b450816ace5a96194ce97fefc49d58e5652ea/rpds_py-0.29.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de73e40ebc04dd5d9556f50180395322193a78ec247e637e741c1b954810f295", size = 395095 }, + { url = "https://files.pythonhosted.org/packages/cd/f0/c90b671b9031e800ec45112be42ea9f027f94f9ac25faaac8770596a16a1/rpds_py-0.29.0-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:295ce5ac7f0cf69a651ea75c8f76d02a31f98e5698e82a50a5f4d4982fbbae3b", size = 410077 }, + { url = "https://files.pythonhosted.org/packages/3d/80/9af8b640b81fe21e6f718e9dec36c0b5f670332747243130a5490f292245/rpds_py-0.29.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1ea59b23ea931d494459c8338056fe7d93458c0bf3ecc061cd03916505369d55", size = 424548 }, + { url = "https://files.pythonhosted.org/packages/e4/0b/b5647446e991736e6a495ef510e6710df91e880575a586e763baeb0aa770/rpds_py-0.29.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f49d41559cebd608042fdcf54ba597a4a7555b49ad5c1c0c03e0af82692661cd", size = 573661 }, + { url = "https://files.pythonhosted.org/packages/f7/b3/1b1c9576839ff583d1428efbf59f9ee70498d8ce6c0b328ac02f1e470879/rpds_py-0.29.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:05a2bd42768ea988294ca328206efbcc66e220d2d9b7836ee5712c07ad6340ea", size = 600937 }, + { url = "https://files.pythonhosted.org/packages/6c/7b/b6cfca2f9fee4c4494ce54f7fb1b9f578867495a9aa9fc0d44f5f735c8e0/rpds_py-0.29.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:33ca7bdfedd83339ca55da3a5e1527ee5870d4b8369456b5777b197756f3ca22", size = 564496 }, + { url = "https://files.pythonhosted.org/packages/b9/fb/ba29ec7f0f06eb801bac5a23057a9ff7670623b5e8013bd59bec4aa09de8/rpds_py-0.29.0-cp313-cp313-win32.whl", hash = "sha256:20c51ae86a0bb9accc9ad4e6cdeec58d5ebb7f1b09dd4466331fc65e1766aae7", size = 223126 }, + { url = "https://files.pythonhosted.org/packages/3c/6b/0229d3bed4ddaa409e6d90b0ae967ed4380e4bdd0dad6e59b92c17d42457/rpds_py-0.29.0-cp313-cp313-win_amd64.whl", hash = "sha256:6410e66f02803600edb0b1889541f4b5cc298a5ccda0ad789cc50ef23b54813e", size = 239771 }, + { url = "https://files.pythonhosted.org/packages/e4/38/d2868f058b164f8efd89754d85d7b1c08b454f5c07ac2e6cc2e9bd4bd05b/rpds_py-0.29.0-cp313-cp313-win_arm64.whl", hash = "sha256:56838e1cd9174dc23c5691ee29f1d1be9eab357f27efef6bded1328b23e1ced2", size = 229994 }, + { url = "https://files.pythonhosted.org/packages/52/91/5de91c5ec7d41759beec9b251630824dbb8e32d20c3756da1a9a9d309709/rpds_py-0.29.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:37d94eadf764d16b9a04307f2ab1d7af6dc28774bbe0535c9323101e14877b4c", size = 365886 }, + { url = "https://files.pythonhosted.org/packages/85/7c/415d8c1b016d5f47ecec5145d9d6d21002d39dce8761b30f6c88810b455a/rpds_py-0.29.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d472cf73efe5726a067dce63eebe8215b14beabea7c12606fd9994267b3cfe2b", size = 355262 }, + { url = "https://files.pythonhosted.org/packages/3d/14/bf83e2daa4f980e4dc848aed9299792a8b84af95e12541d9e7562f84a6ef/rpds_py-0.29.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72fdfd5ff8992e4636621826371e3ac5f3e3b8323e9d0e48378e9c13c3dac9d0", size = 384826 }, + { url = "https://files.pythonhosted.org/packages/33/b8/53330c50a810ae22b4fbba5e6cf961b68b9d72d9bd6780a7c0a79b070857/rpds_py-0.29.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2549d833abdf8275c901313b9e8ff8fba57e50f6a495035a2a4e30621a2f7cc4", size = 394234 }, + { url = "https://files.pythonhosted.org/packages/cc/32/01e2e9645cef0e584f518cfde4567563e57db2257244632b603f61b40e50/rpds_py-0.29.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4448dad428f28a6a767c3e3b80cde3446a22a0efbddaa2360f4bb4dc836d0688", size = 520008 }, + { url = "https://files.pythonhosted.org/packages/98/c3/0d1b95a81affae2b10f950782e33a1fd2edd6ce2a479966cac98c9a66f57/rpds_py-0.29.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:115f48170fd4296a33938d8c11f697f5f26e0472e43d28f35624764173a60e4d", size = 409569 }, + { url = "https://files.pythonhosted.org/packages/fa/60/aa3b8678f3f009f675b99174fa2754302a7fbfe749162e8043d111de2d88/rpds_py-0.29.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e5bb73ffc029820f4348e9b66b3027493ae00bca6629129cd433fd7a76308ee", size = 385188 }, + { url = "https://files.pythonhosted.org/packages/92/02/5546c1c8aa89c18d40c1fcffdcc957ba730dee53fb7c3ca3a46f114761d2/rpds_py-0.29.0-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:b1581fcde18fcdf42ea2403a16a6b646f8eb1e58d7f90a0ce693da441f76942e", size = 398587 }, + { url = "https://files.pythonhosted.org/packages/6c/e0/ad6eeaf47e236eba052fa34c4073078b9e092bd44da6bbb35aaae9580669/rpds_py-0.29.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:16e9da2bda9eb17ea318b4c335ec9ac1818e88922cbe03a5743ea0da9ecf74fb", size = 416641 }, + { url = "https://files.pythonhosted.org/packages/1a/93/0acedfd50ad9cdd3879c615a6dc8c5f1ce78d2fdf8b87727468bb5bb4077/rpds_py-0.29.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:28fd300326dd21198f311534bdb6d7e989dd09b3418b3a91d54a0f384c700967", size = 566683 }, + { url = "https://files.pythonhosted.org/packages/62/53/8c64e0f340a9e801459fc6456821abc15b3582cb5dc3932d48705a9d9ac7/rpds_py-0.29.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2aba991e041d031c7939e1358f583ae405a7bf04804ca806b97a5c0e0af1ea5e", size = 592730 }, + { url = "https://files.pythonhosted.org/packages/85/ef/3109b6584f8c4b0d2490747c916df833c127ecfa82be04d9a40a376f2090/rpds_py-0.29.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:7f437026dbbc3f08c99cc41a5b2570c6e1a1ddbe48ab19a9b814254128d4ea7a", size = 557361 }, + { url = "https://files.pythonhosted.org/packages/ff/3b/61586475e82d57f01da2c16edb9115a618afe00ce86fe1b58936880b15af/rpds_py-0.29.0-cp313-cp313t-win32.whl", hash = "sha256:6e97846e9800a5d0fe7be4d008f0c93d0feeb2700da7b1f7528dabafb31dfadb", size = 211227 }, + { url = "https://files.pythonhosted.org/packages/3b/3a/12dc43f13594a54ea0c9d7e9d43002116557330e3ad45bc56097ddf266e2/rpds_py-0.29.0-cp313-cp313t-win_amd64.whl", hash = "sha256:f49196aec7c4b406495f60e6f947ad71f317a765f956d74bbd83996b9edc0352", size = 225248 }, + { url = "https://files.pythonhosted.org/packages/89/b1/0b1474e7899371d9540d3bbb2a499a3427ae1fc39c998563fe9035a1073b/rpds_py-0.29.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:394d27e4453d3b4d82bb85665dc1fcf4b0badc30fc84282defed71643b50e1a1", size = 363731 }, + { url = "https://files.pythonhosted.org/packages/28/12/3b7cf2068d0a334ed1d7b385a9c3c8509f4c2bcba3d4648ea71369de0881/rpds_py-0.29.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:55d827b2ae95425d3be9bc9a5838b6c29d664924f98146557f7715e331d06df8", size = 354343 }, + { url = "https://files.pythonhosted.org/packages/eb/73/5afcf8924bc02a749416eda64e17ac9c9b28f825f4737385295a0e99b0c1/rpds_py-0.29.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc31a07ed352e5462d3ee1b22e89285f4ce97d5266f6d1169da1142e78045626", size = 385406 }, + { url = "https://files.pythonhosted.org/packages/c8/37/5db736730662508535221737a21563591b6f43c77f2e388951c42f143242/rpds_py-0.29.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c4695dd224212f6105db7ea62197144230b808d6b2bba52238906a2762f1d1e7", size = 396162 }, + { url = "https://files.pythonhosted.org/packages/70/0d/491c1017d14f62ce7bac07c32768d209a50ec567d76d9f383b4cfad19b80/rpds_py-0.29.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcae1770b401167f8b9e1e3f566562e6966ffa9ce63639916248a9e25fa8a244", size = 517719 }, + { url = "https://files.pythonhosted.org/packages/d7/25/b11132afcb17cd5d82db173f0c8dab270ffdfaba43e5ce7a591837ae9649/rpds_py-0.29.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:90f30d15f45048448b8da21c41703b31c61119c06c216a1bf8c245812a0f0c17", size = 409498 }, + { url = "https://files.pythonhosted.org/packages/0f/7d/e6543cedfb2e6403a1845710a5ab0e0ccf8fc288e0b5af9a70bfe2c12053/rpds_py-0.29.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44a91e0ab77bdc0004b43261a4b8cd6d6b451e8d443754cfda830002b5745b32", size = 382743 }, + { url = "https://files.pythonhosted.org/packages/75/11/a4ebc9f654293ae9fefb83b2b6be7f3253e85ea42a5db2f77d50ad19aaeb/rpds_py-0.29.0-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:4aa195e5804d32c682e453b34474f411ca108e4291c6a0f824ebdc30a91c973c", size = 400317 }, + { url = "https://files.pythonhosted.org/packages/52/18/97677a60a81c7f0e5f64e51fb3f8271c5c8fcabf3a2df18e97af53d7c2bf/rpds_py-0.29.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7971bdb7bf4ee0f7e6f67fa4c7fbc6019d9850cc977d126904392d363f6f8318", size = 416979 }, + { url = "https://files.pythonhosted.org/packages/f0/69/28ab391a9968f6c746b2a2db181eaa4d16afaa859fedc9c2f682d19f7e18/rpds_py-0.29.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:8ae33ad9ce580c7a47452c3b3f7d8a9095ef6208e0a0c7e4e2384f9fc5bf8212", size = 567288 }, + { url = "https://files.pythonhosted.org/packages/3b/d3/0c7afdcdb830eee94f5611b64e71354ffe6ac8df82d00c2faf2bfffd1d4e/rpds_py-0.29.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:c661132ab2fb4eeede2ef69670fd60da5235209874d001a98f1542f31f2a8a94", size = 593157 }, + { url = "https://files.pythonhosted.org/packages/e2/ac/a0fcbc2feed4241cf26d32268c195eb88ddd4bd862adfc9d4b25edfba535/rpds_py-0.29.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:bb78b3a0d31ac1bde132c67015a809948db751cb4e92cdb3f0b242e430b6ed0d", size = 554741 }, + { url = "https://files.pythonhosted.org/packages/0f/f1/fcc24137c470df8588674a677f33719d5800ec053aaacd1de8a5d5d84d9e/rpds_py-0.29.0-cp314-cp314-win32.whl", hash = "sha256:f475f103488312e9bd4000bc890a95955a07b2d0b6e8884aef4be56132adbbf1", size = 215508 }, + { url = "https://files.pythonhosted.org/packages/7b/c7/1d169b2045512eac019918fc1021ea07c30e84a4343f9f344e3e0aa8c788/rpds_py-0.29.0-cp314-cp314-win_amd64.whl", hash = "sha256:b9cf2359a4fca87cfb6801fae83a76aedf66ee1254a7a151f1341632acf67f1b", size = 228125 }, + { url = "https://files.pythonhosted.org/packages/be/36/0cec88aaba70ec4a6e381c444b0d916738497d27f0c30406e3d9fcbd3bc2/rpds_py-0.29.0-cp314-cp314-win_arm64.whl", hash = "sha256:9ba8028597e824854f0f1733d8b964e914ae3003b22a10c2c664cb6927e0feb9", size = 221992 }, + { url = "https://files.pythonhosted.org/packages/b1/fa/a2e524631717c9c0eb5d90d30f648cfba6b731047821c994acacb618406c/rpds_py-0.29.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:e71136fd0612556b35c575dc2726ae04a1669e6a6c378f2240312cf5d1a2ab10", size = 366425 }, + { url = "https://files.pythonhosted.org/packages/a2/a4/6d43ebe0746ff694a30233f63f454aed1677bd50ab7a59ff6b2bb5ac61f2/rpds_py-0.29.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:76fe96632d53f3bf0ea31ede2f53bbe3540cc2736d4aec3b3801b0458499ef3a", size = 355282 }, + { url = "https://files.pythonhosted.org/packages/fa/a7/52fd8270e0320b09eaf295766ae81dd175f65394687906709b3e75c71d06/rpds_py-0.29.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9459a33f077130dbb2c7c3cea72ee9932271fb3126404ba2a2661e4fe9eb7b79", size = 384968 }, + { url = "https://files.pythonhosted.org/packages/f4/7d/e6bc526b7a14e1ef80579a52c1d4ad39260a058a51d66c6039035d14db9d/rpds_py-0.29.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5c9546cfdd5d45e562cc0444b6dddc191e625c62e866bf567a2c69487c7ad28a", size = 394714 }, + { url = "https://files.pythonhosted.org/packages/c0/3f/f0ade3954e7db95c791e7eaf978aa7e08a756d2046e8bdd04d08146ed188/rpds_py-0.29.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12597d11d97b8f7e376c88929a6e17acb980e234547c92992f9f7c058f1a7310", size = 520136 }, + { url = "https://files.pythonhosted.org/packages/87/b3/07122ead1b97009715ab9d4082be6d9bd9546099b2b03fae37c3116f72be/rpds_py-0.29.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28de03cf48b8a9e6ec10318f2197b83946ed91e2891f651a109611be4106ac4b", size = 409250 }, + { url = "https://files.pythonhosted.org/packages/c9/c6/dcbee61fd1dc892aedcb1b489ba661313101aa82ec84b1a015d4c63ebfda/rpds_py-0.29.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd7951c964069039acc9d67a8ff1f0a7f34845ae180ca542b17dc1456b1f1808", size = 384940 }, + { url = "https://files.pythonhosted.org/packages/47/11/914ecb6f3574cf9bf8b38aced4063e0f787d6e1eb30b181a7efbc6c1da9a/rpds_py-0.29.0-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:c07d107b7316088f1ac0177a7661ca0c6670d443f6fe72e836069025e6266761", size = 399392 }, + { url = "https://files.pythonhosted.org/packages/f5/fd/2f4bd9433f58f816434bb934313584caa47dbc6f03ce5484df8ac8980561/rpds_py-0.29.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1de2345af363d25696969befc0c1688a6cb5e8b1d32b515ef84fc245c6cddba3", size = 416796 }, + { url = "https://files.pythonhosted.org/packages/79/a5/449f0281af33efa29d5c71014399d74842342ae908d8cd38260320167692/rpds_py-0.29.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:00e56b12d2199ca96068057e1ae7f9998ab6e99cda82431afafd32f3ec98cca9", size = 566843 }, + { url = "https://files.pythonhosted.org/packages/ab/32/0a6a1ccee2e37fcb1b7ba9afde762b77182dbb57937352a729c6cd3cf2bb/rpds_py-0.29.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:3919a3bbecee589300ed25000b6944174e07cd20db70552159207b3f4bbb45b8", size = 593956 }, + { url = "https://files.pythonhosted.org/packages/4a/3d/eb820f95dce4306f07a495ede02fb61bef36ea201d9137d4fcd5ab94ec1e/rpds_py-0.29.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:e7fa2ccc312bbd91e43aa5e0869e46bc03278a3dddb8d58833150a18b0f0283a", size = 557288 }, + { url = "https://files.pythonhosted.org/packages/e9/f8/b8ff786f40470462a252918e0836e0db903c28e88e3eec66bc4a7856ee5d/rpds_py-0.29.0-cp314-cp314t-win32.whl", hash = "sha256:97c817863ffc397f1e6a6e9d2d89fe5408c0a9922dac0329672fb0f35c867ea5", size = 211382 }, + { url = "https://files.pythonhosted.org/packages/c9/7f/1a65ae870bc9d0576aebb0c501ea5dccf1ae2178fe2821042150ebd2e707/rpds_py-0.29.0-cp314-cp314t-win_amd64.whl", hash = "sha256:2023473f444752f0f82a58dfcbee040d0a1b3d1b3c2ec40e884bd25db6d117d2", size = 225919 }, +] + [[package]] name = "rsa" version = "4.9.1" @@ -2429,63 +2504,63 @@ wheels = [ [[package]] name = "scipy" -version = "1.16.2" +version = "1.16.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/4c/3b/546a6f0bfe791bbb7f8d591613454d15097e53f906308ec6f7c1ce588e8e/scipy-1.16.2.tar.gz", hash = "sha256:af029b153d243a80afb6eabe40b0a07f8e35c9adc269c019f364ad747f826a6b", size = 30580599 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/8d/6396e00db1282279a4ddd507c5f5e11f606812b608ee58517ce8abbf883f/scipy-1.16.2-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:89d6c100fa5c48472047632e06f0876b3c4931aac1f4291afc81a3644316bb0d", size = 36646259 }, - { url = "https://files.pythonhosted.org/packages/3b/93/ea9edd7e193fceb8eef149804491890bde73fb169c896b61aa3e2d1e4e77/scipy-1.16.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:ca748936cd579d3f01928b30a17dc474550b01272d8046e3e1ee593f23620371", size = 28888976 }, - { url = "https://files.pythonhosted.org/packages/91/4d/281fddc3d80fd738ba86fd3aed9202331180b01e2c78eaae0642f22f7e83/scipy-1.16.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:fac4f8ce2ddb40e2e3d0f7ec36d2a1e7f92559a2471e59aec37bd8d9de01fec0", size = 20879905 }, - { url = "https://files.pythonhosted.org/packages/69/40/b33b74c84606fd301b2915f0062e45733c6ff5708d121dd0deaa8871e2d0/scipy-1.16.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:033570f1dcefd79547a88e18bccacff025c8c647a330381064f561d43b821232", size = 23553066 }, - { url = "https://files.pythonhosted.org/packages/55/a7/22c739e2f21a42cc8f16bc76b47cff4ed54fbe0962832c589591c2abec34/scipy-1.16.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ea3421209bf00c8a5ef2227de496601087d8f638a2363ee09af059bd70976dc1", size = 33336407 }, - { url = "https://files.pythonhosted.org/packages/53/11/a0160990b82999b45874dc60c0c183d3a3a969a563fffc476d5a9995c407/scipy-1.16.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f66bd07ba6f84cd4a380b41d1bf3c59ea488b590a2ff96744845163309ee8e2f", size = 35673281 }, - { url = "https://files.pythonhosted.org/packages/96/53/7ef48a4cfcf243c3d0f1643f5887c81f29fdf76911c4e49331828e19fc0a/scipy-1.16.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5e9feab931bd2aea4a23388c962df6468af3d808ddf2d40f94a81c5dc38f32ef", size = 36004222 }, - { url = "https://files.pythonhosted.org/packages/49/7f/71a69e0afd460049d41c65c630c919c537815277dfea214031005f474d78/scipy-1.16.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:03dfc75e52f72cf23ec2ced468645321407faad8f0fe7b1f5b49264adbc29cb1", size = 38664586 }, - { url = "https://files.pythonhosted.org/packages/34/95/20e02ca66fb495a95fba0642fd48e0c390d0ece9b9b14c6e931a60a12dea/scipy-1.16.2-cp312-cp312-win_amd64.whl", hash = "sha256:0ce54e07bbb394b417457409a64fd015be623f36e330ac49306433ffe04bc97e", size = 38550641 }, - { url = "https://files.pythonhosted.org/packages/92/ad/13646b9beb0a95528ca46d52b7babafbe115017814a611f2065ee4e61d20/scipy-1.16.2-cp312-cp312-win_arm64.whl", hash = "sha256:2a8ffaa4ac0df81a0b94577b18ee079f13fecdb924df3328fc44a7dc5ac46851", size = 25456070 }, - { url = "https://files.pythonhosted.org/packages/c1/27/c5b52f1ee81727a9fc457f5ac1e9bf3d6eab311805ea615c83c27ba06400/scipy-1.16.2-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:84f7bf944b43e20b8a894f5fe593976926744f6c185bacfcbdfbb62736b5cc70", size = 36604856 }, - { url = "https://files.pythonhosted.org/packages/32/a9/15c20d08e950b540184caa8ced675ba1128accb0e09c653780ba023a4110/scipy-1.16.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:5c39026d12edc826a1ef2ad35ad1e6d7f087f934bb868fc43fa3049c8b8508f9", size = 28864626 }, - { url = "https://files.pythonhosted.org/packages/4c/fc/ea36098df653cca26062a627c1a94b0de659e97127c8491e18713ca0e3b9/scipy-1.16.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:e52729ffd45b68777c5319560014d6fd251294200625d9d70fd8626516fc49f5", size = 20855689 }, - { url = "https://files.pythonhosted.org/packages/dc/6f/d0b53be55727f3e6d7c72687ec18ea6d0047cf95f1f77488b99a2bafaee1/scipy-1.16.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:024dd4a118cccec09ca3209b7e8e614931a6ffb804b2a601839499cb88bdf925", size = 23512151 }, - { url = "https://files.pythonhosted.org/packages/11/85/bf7dab56e5c4b1d3d8eef92ca8ede788418ad38a7dc3ff50262f00808760/scipy-1.16.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7a5dc7ee9c33019973a470556081b0fd3c9f4c44019191039f9769183141a4d9", size = 33329824 }, - { url = "https://files.pythonhosted.org/packages/da/6a/1a927b14ddc7714111ea51f4e568203b2bb6ed59bdd036d62127c1a360c8/scipy-1.16.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c2275ff105e508942f99d4e3bc56b6ef5e4b3c0af970386ca56b777608ce95b7", size = 35681881 }, - { url = "https://files.pythonhosted.org/packages/c1/5f/331148ea5780b4fcc7007a4a6a6ee0a0c1507a796365cc642d4d226e1c3a/scipy-1.16.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:af80196eaa84f033e48444d2e0786ec47d328ba00c71e4299b602235ffef9acb", size = 36006219 }, - { url = "https://files.pythonhosted.org/packages/46/3a/e991aa9d2aec723b4a8dcfbfc8365edec5d5e5f9f133888067f1cbb7dfc1/scipy-1.16.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9fb1eb735fe3d6ed1f89918224e3385fbf6f9e23757cacc35f9c78d3b712dd6e", size = 38682147 }, - { url = "https://files.pythonhosted.org/packages/a1/57/0f38e396ad19e41b4c5db66130167eef8ee620a49bc7d0512e3bb67e0cab/scipy-1.16.2-cp313-cp313-win_amd64.whl", hash = "sha256:fda714cf45ba43c9d3bae8f2585c777f64e3f89a2e073b668b32ede412d8f52c", size = 38520766 }, - { url = "https://files.pythonhosted.org/packages/1b/a5/85d3e867b6822d331e26c862a91375bb7746a0b458db5effa093d34cdb89/scipy-1.16.2-cp313-cp313-win_arm64.whl", hash = "sha256:2f5350da923ccfd0b00e07c3e5cfb316c1c0d6c1d864c07a72d092e9f20db104", size = 25451169 }, - { url = "https://files.pythonhosted.org/packages/09/d9/60679189bcebda55992d1a45498de6d080dcaf21ce0c8f24f888117e0c2d/scipy-1.16.2-cp313-cp313t-macosx_10_14_x86_64.whl", hash = "sha256:53d8d2ee29b925344c13bda64ab51785f016b1b9617849dac10897f0701b20c1", size = 37012682 }, - { url = "https://files.pythonhosted.org/packages/83/be/a99d13ee4d3b7887a96f8c71361b9659ba4ef34da0338f14891e102a127f/scipy-1.16.2-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:9e05e33657efb4c6a9d23bd8300101536abd99c85cca82da0bffff8d8764d08a", size = 29389926 }, - { url = "https://files.pythonhosted.org/packages/bf/0a/130164a4881cec6ca8c00faf3b57926f28ed429cd6001a673f83c7c2a579/scipy-1.16.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:7fe65b36036357003b3ef9d37547abeefaa353b237e989c21027b8ed62b12d4f", size = 21381152 }, - { url = "https://files.pythonhosted.org/packages/47/a6/503ffb0310ae77fba874e10cddfc4a1280bdcca1d13c3751b8c3c2996cf8/scipy-1.16.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:6406d2ac6d40b861cccf57f49592f9779071655e9f75cd4f977fa0bdd09cb2e4", size = 23914410 }, - { url = "https://files.pythonhosted.org/packages/fa/c7/1147774bcea50d00c02600aadaa919facbd8537997a62496270133536ed6/scipy-1.16.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ff4dc42bd321991fbf611c23fc35912d690f731c9914bf3af8f417e64aca0f21", size = 33481880 }, - { url = "https://files.pythonhosted.org/packages/6a/74/99d5415e4c3e46b2586f30cdbecb95e101c7192628a484a40dd0d163811a/scipy-1.16.2-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:654324826654d4d9133e10675325708fb954bc84dae6e9ad0a52e75c6b1a01d7", size = 35791425 }, - { url = "https://files.pythonhosted.org/packages/1b/ee/a6559de7c1cc710e938c0355d9d4fbcd732dac4d0d131959d1f3b63eb29c/scipy-1.16.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:63870a84cd15c44e65220eaed2dac0e8f8b26bbb991456a033c1d9abfe8a94f8", size = 36178622 }, - { url = "https://files.pythonhosted.org/packages/4e/7b/f127a5795d5ba8ece4e0dce7d4a9fb7cb9e4f4757137757d7a69ab7d4f1a/scipy-1.16.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:fa01f0f6a3050fa6a9771a95d5faccc8e2f5a92b4a2e5440a0fa7264a2398472", size = 38783985 }, - { url = "https://files.pythonhosted.org/packages/3e/9f/bc81c1d1e033951eb5912cd3750cc005943afa3e65a725d2443a3b3c4347/scipy-1.16.2-cp313-cp313t-win_amd64.whl", hash = "sha256:116296e89fba96f76353a8579820c2512f6e55835d3fad7780fece04367de351", size = 38631367 }, - { url = "https://files.pythonhosted.org/packages/d6/5e/2cc7555fd81d01814271412a1d59a289d25f8b63208a0a16c21069d55d3e/scipy-1.16.2-cp313-cp313t-win_arm64.whl", hash = "sha256:98e22834650be81d42982360382b43b17f7ba95e0e6993e2a4f5b9ad9283a94d", size = 25787992 }, - { url = "https://files.pythonhosted.org/packages/8b/ac/ad8951250516db71619f0bd3b2eb2448db04b720a003dd98619b78b692c0/scipy-1.16.2-cp314-cp314-macosx_10_14_x86_64.whl", hash = "sha256:567e77755019bb7461513c87f02bb73fb65b11f049aaaa8ca17cfaa5a5c45d77", size = 36595109 }, - { url = "https://files.pythonhosted.org/packages/ff/f6/5779049ed119c5b503b0f3dc6d6f3f68eefc3a9190d4ad4c276f854f051b/scipy-1.16.2-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:17d9bb346194e8967296621208fcdfd39b55498ef7d2f376884d5ac47cec1a70", size = 28859110 }, - { url = "https://files.pythonhosted.org/packages/82/09/9986e410ae38bf0a0c737ff8189ac81a93b8e42349aac009891c054403d7/scipy-1.16.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:0a17541827a9b78b777d33b623a6dcfe2ef4a25806204d08ead0768f4e529a88", size = 20850110 }, - { url = "https://files.pythonhosted.org/packages/0d/ad/485cdef2d9215e2a7df6d61b81d2ac073dfacf6ae24b9ae87274c4e936ae/scipy-1.16.2-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:d7d4c6ba016ffc0f9568d012f5f1eb77ddd99412aea121e6fa8b4c3b7cbad91f", size = 23497014 }, - { url = "https://files.pythonhosted.org/packages/a7/74/f6a852e5d581122b8f0f831f1d1e32fb8987776ed3658e95c377d308ed86/scipy-1.16.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9702c4c023227785c779cba2e1d6f7635dbb5b2e0936cdd3a4ecb98d78fd41eb", size = 33401155 }, - { url = "https://files.pythonhosted.org/packages/d9/f5/61d243bbc7c6e5e4e13dde9887e84a5cbe9e0f75fd09843044af1590844e/scipy-1.16.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d1cdf0ac28948d225decdefcc45ad7dd91716c29ab56ef32f8e0d50657dffcc7", size = 35691174 }, - { url = "https://files.pythonhosted.org/packages/03/99/59933956331f8cc57e406cdb7a483906c74706b156998f322913e789c7e1/scipy-1.16.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:70327d6aa572a17c2941cdfb20673f82e536e91850a2e4cb0c5b858b690e1548", size = 36070752 }, - { url = "https://files.pythonhosted.org/packages/c6/7d/00f825cfb47ee19ef74ecf01244b43e95eae74e7e0ff796026ea7cd98456/scipy-1.16.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5221c0b2a4b58aa7c4ed0387d360fd90ee9086d383bb34d9f2789fafddc8a936", size = 38701010 }, - { url = "https://files.pythonhosted.org/packages/e4/9f/b62587029980378304ba5a8563d376c96f40b1e133daacee76efdcae32de/scipy-1.16.2-cp314-cp314-win_amd64.whl", hash = "sha256:f5a85d7b2b708025af08f060a496dd261055b617d776fc05a1a1cc69e09fe9ff", size = 39360061 }, - { url = "https://files.pythonhosted.org/packages/82/04/7a2f1609921352c7fbee0815811b5050582f67f19983096c4769867ca45f/scipy-1.16.2-cp314-cp314-win_arm64.whl", hash = "sha256:2cc73a33305b4b24556957d5857d6253ce1e2dcd67fa0ff46d87d1670b3e1e1d", size = 26126914 }, - { url = "https://files.pythonhosted.org/packages/51/b9/60929ce350c16b221928725d2d1d7f86cf96b8bc07415547057d1196dc92/scipy-1.16.2-cp314-cp314t-macosx_10_14_x86_64.whl", hash = "sha256:9ea2a3fed83065d77367775d689401a703d0f697420719ee10c0780bcab594d8", size = 37013193 }, - { url = "https://files.pythonhosted.org/packages/2a/41/ed80e67782d4bc5fc85a966bc356c601afddd175856ba7c7bb6d9490607e/scipy-1.16.2-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:7280d926f11ca945c3ef92ba960fa924e1465f8d07ce3a9923080363390624c4", size = 29390172 }, - { url = "https://files.pythonhosted.org/packages/c4/a3/2f673ace4090452696ccded5f5f8efffb353b8f3628f823a110e0170b605/scipy-1.16.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:8afae1756f6a1fe04636407ef7dbece33d826a5d462b74f3d0eb82deabefd831", size = 21381326 }, - { url = "https://files.pythonhosted.org/packages/42/bf/59df61c5d51395066c35836b78136accf506197617c8662e60ea209881e1/scipy-1.16.2-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:5c66511f29aa8d233388e7416a3f20d5cae7a2744d5cee2ecd38c081f4e861b3", size = 23915036 }, - { url = "https://files.pythonhosted.org/packages/91/c3/edc7b300dc16847ad3672f1a6f3f7c5d13522b21b84b81c265f4f2760d4a/scipy-1.16.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:efe6305aeaa0e96b0ccca5ff647a43737d9a092064a3894e46c414db84bc54ac", size = 33484341 }, - { url = "https://files.pythonhosted.org/packages/26/c7/24d1524e72f06ff141e8d04b833c20db3021020563272ccb1b83860082a9/scipy-1.16.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7f3a337d9ae06a1e8d655ee9d8ecb835ea5ddcdcbd8d23012afa055ab014f374", size = 35790840 }, - { url = "https://files.pythonhosted.org/packages/aa/b7/5aaad984eeedd56858dc33d75efa59e8ce798d918e1033ef62d2708f2c3d/scipy-1.16.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:bab3605795d269067d8ce78a910220262711b753de8913d3deeaedb5dded3bb6", size = 36174716 }, - { url = "https://files.pythonhosted.org/packages/fd/c2/e276a237acb09824822b0ada11b028ed4067fdc367a946730979feacb870/scipy-1.16.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:b0348d8ddb55be2a844c518cd8cc8deeeb8aeba707cf834db5758fc89b476a2c", size = 38790088 }, - { url = "https://files.pythonhosted.org/packages/c6/b4/5c18a766e8353015439f3780f5fc473f36f9762edc1a2e45da3ff5a31b21/scipy-1.16.2-cp314-cp314t-win_amd64.whl", hash = "sha256:26284797e38b8a75e14ea6631d29bda11e76ceaa6ddb6fdebbfe4c4d90faf2f9", size = 39457455 }, - { url = "https://files.pythonhosted.org/packages/97/30/2f9a5243008f76dfc5dee9a53dfb939d9b31e16ce4bd4f2e628bfc5d89d2/scipy-1.16.2-cp314-cp314t-win_arm64.whl", hash = "sha256:d2a4472c231328d4de38d5f1f68fdd6d28a615138f842580a8a321b5845cf779", size = 26448374 }, +sdist = { url = "https://files.pythonhosted.org/packages/0a/ca/d8ace4f98322d01abcd52d381134344bf7b431eba7ed8b42bdea5a3c2ac9/scipy-1.16.3.tar.gz", hash = "sha256:01e87659402762f43bd2fee13370553a17ada367d42e7487800bf2916535aecb", size = 30597883 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/41/5bf55c3f386b1643812f3a5674edf74b26184378ef0f3e7c7a09a7e2ca7f/scipy-1.16.3-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:81fc5827606858cf71446a5e98715ba0e11f0dbc83d71c7409d05486592a45d6", size = 36659043 }, + { url = "https://files.pythonhosted.org/packages/1e/0f/65582071948cfc45d43e9870bf7ca5f0e0684e165d7c9ef4e50d783073eb/scipy-1.16.3-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:c97176013d404c7346bf57874eaac5187d969293bf40497140b0a2b2b7482e07", size = 28898986 }, + { url = "https://files.pythonhosted.org/packages/96/5e/36bf3f0ac298187d1ceadde9051177d6a4fe4d507e8f59067dc9dd39e650/scipy-1.16.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:2b71d93c8a9936046866acebc915e2af2e292b883ed6e2cbe5c34beb094b82d9", size = 20889814 }, + { url = "https://files.pythonhosted.org/packages/80/35/178d9d0c35394d5d5211bbff7ac4f2986c5488b59506fef9e1de13ea28d3/scipy-1.16.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:3d4a07a8e785d80289dfe66b7c27d8634a773020742ec7187b85ccc4b0e7b686", size = 23565795 }, + { url = "https://files.pythonhosted.org/packages/fa/46/d1146ff536d034d02f83c8afc3c4bab2eddb634624d6529a8512f3afc9da/scipy-1.16.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0553371015692a898e1aa858fed67a3576c34edefa6b7ebdb4e9dde49ce5c203", size = 33349476 }, + { url = "https://files.pythonhosted.org/packages/79/2e/415119c9ab3e62249e18c2b082c07aff907a273741b3f8160414b0e9193c/scipy-1.16.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:72d1717fd3b5e6ec747327ce9bda32d5463f472c9dce9f54499e81fbd50245a1", size = 35676692 }, + { url = "https://files.pythonhosted.org/packages/27/82/df26e44da78bf8d2aeaf7566082260cfa15955a5a6e96e6a29935b64132f/scipy-1.16.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1fb2472e72e24d1530debe6ae078db70fb1605350c88a3d14bc401d6306dbffe", size = 36019345 }, + { url = "https://files.pythonhosted.org/packages/82/31/006cbb4b648ba379a95c87262c2855cd0d09453e500937f78b30f02fa1cd/scipy-1.16.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c5192722cffe15f9329a3948c4b1db789fbb1f05c97899187dcf009b283aea70", size = 38678975 }, + { url = "https://files.pythonhosted.org/packages/c2/7f/acbd28c97e990b421af7d6d6cd416358c9c293fc958b8529e0bd5d2a2a19/scipy-1.16.3-cp312-cp312-win_amd64.whl", hash = "sha256:56edc65510d1331dae01ef9b658d428e33ed48b4f77b1d51caf479a0253f96dc", size = 38555926 }, + { url = "https://files.pythonhosted.org/packages/ce/69/c5c7807fd007dad4f48e0a5f2153038dc96e8725d3345b9ee31b2b7bed46/scipy-1.16.3-cp312-cp312-win_arm64.whl", hash = "sha256:a8a26c78ef223d3e30920ef759e25625a0ecdd0d60e5a8818b7513c3e5384cf2", size = 25463014 }, + { url = "https://files.pythonhosted.org/packages/72/f1/57e8327ab1508272029e27eeef34f2302ffc156b69e7e233e906c2a5c379/scipy-1.16.3-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:d2ec56337675e61b312179a1ad124f5f570c00f920cc75e1000025451b88241c", size = 36617856 }, + { url = "https://files.pythonhosted.org/packages/44/13/7e63cfba8a7452eb756306aa2fd9b37a29a323b672b964b4fdeded9a3f21/scipy-1.16.3-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:16b8bc35a4cc24db80a0ec836a9286d0e31b2503cb2fd7ff7fb0e0374a97081d", size = 28874306 }, + { url = "https://files.pythonhosted.org/packages/15/65/3a9400efd0228a176e6ec3454b1fa998fbbb5a8defa1672c3f65706987db/scipy-1.16.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:5803c5fadd29de0cf27fa08ccbfe7a9e5d741bf63e4ab1085437266f12460ff9", size = 20865371 }, + { url = "https://files.pythonhosted.org/packages/33/d7/eda09adf009a9fb81827194d4dd02d2e4bc752cef16737cc4ef065234031/scipy-1.16.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:b81c27fc41954319a943d43b20e07c40bdcd3ff7cf013f4fb86286faefe546c4", size = 23524877 }, + { url = "https://files.pythonhosted.org/packages/7d/6b/3f911e1ebc364cb81320223a3422aab7d26c9c7973109a9cd0f27c64c6c0/scipy-1.16.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0c3b4dd3d9b08dbce0f3440032c52e9e2ab9f96ade2d3943313dfe51a7056959", size = 33342103 }, + { url = "https://files.pythonhosted.org/packages/21/f6/4bfb5695d8941e5c570a04d9fcd0d36bce7511b7d78e6e75c8f9791f82d0/scipy-1.16.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7dc1360c06535ea6116a2220f760ae572db9f661aba2d88074fe30ec2aa1ff88", size = 35697297 }, + { url = "https://files.pythonhosted.org/packages/04/e1/6496dadbc80d8d896ff72511ecfe2316b50313bfc3ebf07a3f580f08bd8c/scipy-1.16.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:663b8d66a8748051c3ee9c96465fb417509315b99c71550fda2591d7dd634234", size = 36021756 }, + { url = "https://files.pythonhosted.org/packages/fe/bd/a8c7799e0136b987bda3e1b23d155bcb31aec68a4a472554df5f0937eef7/scipy-1.16.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eab43fae33a0c39006a88096cd7b4f4ef545ea0447d250d5ac18202d40b6611d", size = 38696566 }, + { url = "https://files.pythonhosted.org/packages/cd/01/1204382461fcbfeb05b6161b594f4007e78b6eba9b375382f79153172b4d/scipy-1.16.3-cp313-cp313-win_amd64.whl", hash = "sha256:062246acacbe9f8210de8e751b16fc37458213f124bef161a5a02c7a39284304", size = 38529877 }, + { url = "https://files.pythonhosted.org/packages/7f/14/9d9fbcaa1260a94f4bb5b64ba9213ceb5d03cd88841fe9fd1ffd47a45b73/scipy-1.16.3-cp313-cp313-win_arm64.whl", hash = "sha256:50a3dbf286dbc7d84f176f9a1574c705f277cb6565069f88f60db9eafdbe3ee2", size = 25455366 }, + { url = "https://files.pythonhosted.org/packages/e2/a3/9ec205bd49f42d45d77f1730dbad9ccf146244c1647605cf834b3a8c4f36/scipy-1.16.3-cp313-cp313t-macosx_10_14_x86_64.whl", hash = "sha256:fb4b29f4cf8cc5a8d628bc8d8e26d12d7278cd1f219f22698a378c3d67db5e4b", size = 37027931 }, + { url = "https://files.pythonhosted.org/packages/25/06/ca9fd1f3a4589cbd825b1447e5db3a8ebb969c1eaf22c8579bd286f51b6d/scipy-1.16.3-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:8d09d72dc92742988b0e7750bddb8060b0c7079606c0d24a8cc8e9c9c11f9079", size = 29400081 }, + { url = "https://files.pythonhosted.org/packages/6a/56/933e68210d92657d93fb0e381683bc0e53a965048d7358ff5fbf9e6a1b17/scipy-1.16.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:03192a35e661470197556de24e7cb1330d84b35b94ead65c46ad6f16f6b28f2a", size = 21391244 }, + { url = "https://files.pythonhosted.org/packages/a8/7e/779845db03dc1418e215726329674b40576879b91814568757ff0014ad65/scipy-1.16.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:57d01cb6f85e34f0946b33caa66e892aae072b64b034183f3d87c4025802a119", size = 23929753 }, + { url = "https://files.pythonhosted.org/packages/4c/4b/f756cf8161d5365dcdef9e5f460ab226c068211030a175d2fc7f3f41ca64/scipy-1.16.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:96491a6a54e995f00a28a3c3badfff58fd093bf26cd5fb34a2188c8c756a3a2c", size = 33496912 }, + { url = "https://files.pythonhosted.org/packages/09/b5/222b1e49a58668f23839ca1542a6322bb095ab8d6590d4f71723869a6c2c/scipy-1.16.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cd13e354df9938598af2be05822c323e97132d5e6306b83a3b4ee6724c6e522e", size = 35802371 }, + { url = "https://files.pythonhosted.org/packages/c1/8d/5964ef68bb31829bde27611f8c9deeac13764589fe74a75390242b64ca44/scipy-1.16.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:63d3cdacb8a824a295191a723ee5e4ea7768ca5ca5f2838532d9f2e2b3ce2135", size = 36190477 }, + { url = "https://files.pythonhosted.org/packages/ab/f2/b31d75cb9b5fa4dd39a0a931ee9b33e7f6f36f23be5ef560bf72e0f92f32/scipy-1.16.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e7efa2681ea410b10dde31a52b18b0154d66f2485328830e45fdf183af5aefc6", size = 38796678 }, + { url = "https://files.pythonhosted.org/packages/b4/1e/b3723d8ff64ab548c38d87055483714fefe6ee20e0189b62352b5e015bb1/scipy-1.16.3-cp313-cp313t-win_amd64.whl", hash = "sha256:2d1ae2cf0c350e7705168ff2429962a89ad90c2d49d1dd300686d8b2a5af22fc", size = 38640178 }, + { url = "https://files.pythonhosted.org/packages/8e/f3/d854ff38789aca9b0cc23008d607ced9de4f7ab14fa1ca4329f86b3758ca/scipy-1.16.3-cp313-cp313t-win_arm64.whl", hash = "sha256:0c623a54f7b79dd88ef56da19bc2873afec9673a48f3b85b18e4d402bdd29a5a", size = 25803246 }, + { url = "https://files.pythonhosted.org/packages/99/f6/99b10fd70f2d864c1e29a28bbcaa0c6340f9d8518396542d9ea3b4aaae15/scipy-1.16.3-cp314-cp314-macosx_10_14_x86_64.whl", hash = "sha256:875555ce62743e1d54f06cdf22c1e0bc47b91130ac40fe5d783b6dfa114beeb6", size = 36606469 }, + { url = "https://files.pythonhosted.org/packages/4d/74/043b54f2319f48ea940dd025779fa28ee360e6b95acb7cd188fad4391c6b/scipy-1.16.3-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:bb61878c18a470021fb515a843dc7a76961a8daceaaaa8bad1332f1bf4b54657", size = 28872043 }, + { url = "https://files.pythonhosted.org/packages/4d/e1/24b7e50cc1c4ee6ffbcb1f27fe9f4c8b40e7911675f6d2d20955f41c6348/scipy-1.16.3-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:f2622206f5559784fa5c4b53a950c3c7c1cf3e84ca1b9c4b6c03f062f289ca26", size = 20862952 }, + { url = "https://files.pythonhosted.org/packages/dd/3a/3e8c01a4d742b730df368e063787c6808597ccb38636ed821d10b39ca51b/scipy-1.16.3-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:7f68154688c515cdb541a31ef8eb66d8cd1050605be9dcd74199cbd22ac739bc", size = 23508512 }, + { url = "https://files.pythonhosted.org/packages/1f/60/c45a12b98ad591536bfe5330cb3cfe1850d7570259303563b1721564d458/scipy-1.16.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8b3c820ddb80029fe9f43d61b81d8b488d3ef8ca010d15122b152db77dc94c22", size = 33413639 }, + { url = "https://files.pythonhosted.org/packages/71/bc/35957d88645476307e4839712642896689df442f3e53b0fa016ecf8a3357/scipy-1.16.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d3837938ae715fc0fe3c39c0202de3a8853aff22ca66781ddc2ade7554b7e2cc", size = 35704729 }, + { url = "https://files.pythonhosted.org/packages/3b/15/89105e659041b1ca11c386e9995aefacd513a78493656e57789f9d9eab61/scipy-1.16.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:aadd23f98f9cb069b3bd64ddc900c4d277778242e961751f77a8cb5c4b946fb0", size = 36086251 }, + { url = "https://files.pythonhosted.org/packages/1a/87/c0ea673ac9c6cc50b3da2196d860273bc7389aa69b64efa8493bdd25b093/scipy-1.16.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b7c5f1bda1354d6a19bc6af73a649f8285ca63ac6b52e64e658a5a11d4d69800", size = 38716681 }, + { url = "https://files.pythonhosted.org/packages/91/06/837893227b043fb9b0d13e4bd7586982d8136cb249ffb3492930dab905b8/scipy-1.16.3-cp314-cp314-win_amd64.whl", hash = "sha256:e5d42a9472e7579e473879a1990327830493a7047506d58d73fc429b84c1d49d", size = 39358423 }, + { url = "https://files.pythonhosted.org/packages/95/03/28bce0355e4d34a7c034727505a02d19548549e190bedd13a721e35380b7/scipy-1.16.3-cp314-cp314-win_arm64.whl", hash = "sha256:6020470b9d00245926f2d5bb93b119ca0340f0d564eb6fbaad843eaebf9d690f", size = 26135027 }, + { url = "https://files.pythonhosted.org/packages/b2/6f/69f1e2b682efe9de8fe9f91040f0cd32f13cfccba690512ba4c582b0bc29/scipy-1.16.3-cp314-cp314t-macosx_10_14_x86_64.whl", hash = "sha256:e1d27cbcb4602680a49d787d90664fa4974063ac9d4134813332a8c53dbe667c", size = 37028379 }, + { url = "https://files.pythonhosted.org/packages/7c/2d/e826f31624a5ebbab1cd93d30fd74349914753076ed0593e1d56a98c4fb4/scipy-1.16.3-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:9b9c9c07b6d56a35777a1b4cc8966118fb16cfd8daf6743867d17d36cfad2d40", size = 29400052 }, + { url = "https://files.pythonhosted.org/packages/69/27/d24feb80155f41fd1f156bf144e7e049b4e2b9dd06261a242905e3bc7a03/scipy-1.16.3-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:3a4c460301fb2cffb7f88528f30b3127742cff583603aa7dc964a52c463b385d", size = 21391183 }, + { url = "https://files.pythonhosted.org/packages/f8/d3/1b229e433074c5738a24277eca520a2319aac7465eea7310ea6ae0e98ae2/scipy-1.16.3-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:f667a4542cc8917af1db06366d3f78a5c8e83badd56409f94d1eac8d8d9133fa", size = 23930174 }, + { url = "https://files.pythonhosted.org/packages/16/9d/d9e148b0ec680c0f042581a2be79a28a7ab66c0c4946697f9e7553ead337/scipy-1.16.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f379b54b77a597aa7ee5e697df0d66903e41b9c85a6dd7946159e356319158e8", size = 33497852 }, + { url = "https://files.pythonhosted.org/packages/2f/22/4e5f7561e4f98b7bea63cf3fd7934bff1e3182e9f1626b089a679914d5c8/scipy-1.16.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4aff59800a3b7f786b70bfd6ab551001cb553244988d7d6b8299cb1ea653b353", size = 35798595 }, + { url = "https://files.pythonhosted.org/packages/83/42/6644d714c179429fc7196857866f219fef25238319b650bb32dde7bf7a48/scipy-1.16.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:da7763f55885045036fabcebd80144b757d3db06ab0861415d1c3b7c69042146", size = 36186269 }, + { url = "https://files.pythonhosted.org/packages/ac/70/64b4d7ca92f9cf2e6fc6aaa2eecf80bb9b6b985043a9583f32f8177ea122/scipy-1.16.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ffa6eea95283b2b8079b821dc11f50a17d0571c92b43e2b5b12764dc5f9b285d", size = 38802779 }, + { url = "https://files.pythonhosted.org/packages/61/82/8d0e39f62764cce5ffd5284131e109f07cf8955aef9ab8ed4e3aa5e30539/scipy-1.16.3-cp314-cp314t-win_amd64.whl", hash = "sha256:d9f48cafc7ce94cf9b15c6bffdc443a81a27bf7075cf2dcd5c8b40f85d10c4e7", size = 39471128 }, + { url = "https://files.pythonhosted.org/packages/64/47/a494741db7280eae6dc033510c319e34d42dd41b7ac0c7ead39354d1a2b5/scipy-1.16.3-cp314-cp314t-win_arm64.whl", hash = "sha256:21d9d6b197227a12dcbf9633320a4e34c6b0e51c57268df255a0942983bac562", size = 26464127 }, ] [[package]] @@ -2592,15 +2667,15 @@ wheels = [ [[package]] name = "starlette" -version = "0.48.0" +version = "0.49.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a7/a5/d6f429d43394057b67a6b5bbe6eae2f77a6bf7459d961fdb224bf206eee6/starlette-0.48.0.tar.gz", hash = "sha256:7e8cee469a8ab2352911528110ce9088fdc6a37d9876926e73da7ce4aa4c7a46", size = 2652949 } +sdist = { url = "https://files.pythonhosted.org/packages/de/1a/608df0b10b53b0beb96a37854ee05864d182ddd4b1156a22f1ad3860425a/starlette-0.49.3.tar.gz", hash = "sha256:1c14546f299b5901a1ea0e34410575bc33bbd741377a10484a54445588d00284", size = 2655031 } wheels = [ - { url = "https://files.pythonhosted.org/packages/be/72/2db2f49247d0a18b4f1bb9a5a39a0162869acf235f3a96418363947b3d46/starlette-0.48.0-py3-none-any.whl", hash = "sha256:0764ca97b097582558ecb498132ed0c7d942f233f365b86ba37770e026510659", size = 73736 }, + { url = "https://files.pythonhosted.org/packages/a3/e0/021c772d6a662f43b63044ab481dc6ac7592447605b5b35a957785363122/starlette-0.49.3-py3-none-any.whl", hash = "sha256:b579b99715fdc2980cf88c8ec96d3bf1ce16f5a8051a7c2b84ef9b1cdecaea2f", size = 74340 }, ] [[package]] @@ -2615,6 +2690,20 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl", hash = "sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5", size = 6299353 }, ] +[[package]] +name = "tensorboardx" +version = "2.6.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "packaging" }, + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2b/c5/d4cc6e293fb837aaf9f76dd7745476aeba8ef7ef5146c3b3f9ee375fe7a5/tensorboardx-2.6.4.tar.gz", hash = "sha256:b163ccb7798b31100b9f5fa4d6bc22dad362d7065c2f24b51e50731adde86828", size = 4769801 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/1d/b5d63f1a6b824282b57f7b581810d20b7a28ca951f2d5b59f1eb0782c12b/tensorboardx-2.6.4-py3-none-any.whl", hash = "sha256:5970cf3a1f0a6a6e8b180ccf46f3fe832b8a25a70b86e5a237048a7c0beb18e2", size = 87201 }, +] + [[package]] name = "text-unidecode" version = "1.3" @@ -2635,7 +2724,7 @@ wheels = [ [[package]] name = "torch" -version = "2.9.0" +version = "2.9.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "filelock" }, @@ -2663,26 +2752,26 @@ dependencies = [ { name = "typing-extensions" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d3/3985739f3b8e88675127bf70f82b3a48ae083e39cda56305dbd90398fec0/torch-2.9.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:e5f7af1dc4c0a7c4a260c2534f41ddaf209714f7c89145e644c44712fbd6b642", size = 104107898 }, - { url = "https://files.pythonhosted.org/packages/a5/4b/f4bb2e6c25d0272f798cd6d7a04ed315da76cec68c602d87040c7847287f/torch-2.9.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:01cff95ecd9a212ea2f141db28acccdceb6a4c54f64e6c51091146f5e2a772c6", size = 899738273 }, - { url = "https://files.pythonhosted.org/packages/66/11/c1c5ba6691cda6279087c35bd626536e4fd29521fe740abf5008377a9a02/torch-2.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:4582b162f541651f0cb184d3e291c05c2f556c7117c64a9873e2ee158d40062b", size = 109280887 }, - { url = "https://files.pythonhosted.org/packages/dd/5f/b85bd8c05312d71de9402bf5868d217c38827cfd09d8f8514e5be128a52b/torch-2.9.0-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:33f58e9a102a91259af289d50525c30323b5c9ae1d31322b6447c0814da68695", size = 74478983 }, - { url = "https://files.pythonhosted.org/packages/c2/1c/90eb13833cdf4969ea9707586d7b57095c3b6e2b223a7256bf111689bcb8/torch-2.9.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:c30a17fc83eeab346913e237c64b15b5ba6407fff812f6c541e322e19bc9ea0e", size = 104111330 }, - { url = "https://files.pythonhosted.org/packages/0e/21/2254c54b8d523592c25ef4434769aa23e29b1e6bf5f4c0ad9e27bf442927/torch-2.9.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:8f25033b8667b57857dfd01458fbf2a9e6a6df1f8def23aef0dc46292f6aa642", size = 899750243 }, - { url = "https://files.pythonhosted.org/packages/b7/a5/5cb94fa4fd1e78223455c23c200f30f6dc10c6d4a2bcc8f6e7f2a2588370/torch-2.9.0-cp313-cp313-win_amd64.whl", hash = "sha256:d037f1b4ffd25013be4a7bf3651a0a910c68554956c7b2c92ebe87c76475dece", size = 109284513 }, - { url = "https://files.pythonhosted.org/packages/66/e8/fc414d8656250ee46120b44836ffbb3266343db424b3e18ca79ebbf69d4f/torch-2.9.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e4e5b5cba837a2a8d1a497ba9a58dae46fa392593eaa13b871c42f71847503a5", size = 74830362 }, - { url = "https://files.pythonhosted.org/packages/ed/5f/9474c98fc5ae0cd04b9466035428cd360e6611a86b8352a0fc2fa504acdc/torch-2.9.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:64693568f5dc4dbd5f880a478b1cea0201cc6b510d91d1bc54fea86ac5d1a637", size = 104144940 }, - { url = "https://files.pythonhosted.org/packages/2d/5a/8e0c1cf57830172c109d4bd6be2708cabeaf550983eee7029291322447a0/torch-2.9.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:f8ed31ddd7d10bfb3fbe0b9fe01b1243577f13d75e6f4a0839a283915ce3791e", size = 899744054 }, - { url = "https://files.pythonhosted.org/packages/6d/28/82c28b30fcb4b7c9cdd995763d18bbb830d6521356712faebbad92ffa61d/torch-2.9.0-cp313-cp313t-win_amd64.whl", hash = "sha256:eff527d4e4846e6f70d2afd8058b73825761203d66576a7e04ea2ecfebcb4ab8", size = 109517546 }, - { url = "https://files.pythonhosted.org/packages/ff/c3/a91f96ec74347fa5fd24453fa514bc61c61ecc79196fa760b012a1873d96/torch-2.9.0-cp313-none-macosx_11_0_arm64.whl", hash = "sha256:f8877779cf56d1ce431a7636703bdb13307f5960bb1af49716d8b179225e0e6a", size = 74480732 }, - { url = "https://files.pythonhosted.org/packages/5c/73/9f70af34b334a7e0ef496ceec96b7ec767bd778ea35385ce6f77557534d1/torch-2.9.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:7e614fae699838038d888729f82b687c03413c5989ce2a9481f9a7e7a396e0bb", size = 74433037 }, - { url = "https://files.pythonhosted.org/packages/b7/84/37cf88625901934c97109e583ecc21777d21c6f54cda97a7e5bbad1ee2f2/torch-2.9.0-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:dfb5b8cd310ba3436c7e14e8b7833ef658cf3045e50d2bdaed23c8fc517065eb", size = 104116482 }, - { url = "https://files.pythonhosted.org/packages/56/8e/ca8b17866943a8d4f4664d402ea84210aa274588b4c5d89918f5caa24eec/torch-2.9.0-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:b3d29524993a478e46f5d598b249cd824b7ed98d7fba538bd9c4cde6c803948f", size = 899746916 }, - { url = "https://files.pythonhosted.org/packages/43/65/3b17c0fbbdab6501c5b320a52a648628d0d44e7379f64e27d9eef701b6bf/torch-2.9.0-cp314-cp314-win_amd64.whl", hash = "sha256:71c7578984f5ec0eb645eb4816ac8435fcf3e3e2ae1901bcd2f519a9cafb5125", size = 109275151 }, - { url = "https://files.pythonhosted.org/packages/83/36/74f8c051f785500396e42f93542422422dfd874a174f21f8d955d36e5d64/torch-2.9.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:71d9309aee457bbe0b164bce2111cd911c4ed4e847e65d5077dbbcd3aba6befc", size = 74823353 }, - { url = "https://files.pythonhosted.org/packages/62/51/dc3b4e2f9ba98ae27238f0153ca098bf9340b2dafcc67fde645d496dfc2a/torch-2.9.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:c08fb654d783899e204a32cca758a7ce8a45b2d78eeb89517cc937088316f78e", size = 104140340 }, - { url = "https://files.pythonhosted.org/packages/c0/8d/b00657f8141ac16af7bb6cda2e67de18499a3263b78d516b9a93fcbc98e3/torch-2.9.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:ec8feb0099b2daa5728fbc7abb0b05730fd97e0f359ff8bda09865aaa7bd7d4b", size = 899731750 }, - { url = "https://files.pythonhosted.org/packages/fc/29/bd361e0cbb2c79ce6450f42643aaf6919956f89923a50571b0ebfe92d142/torch-2.9.0-cp314-cp314t-win_amd64.whl", hash = "sha256:695ba920f234ad4170c9c50e28d56c848432f8f530e6bc7f88fcb15ddf338e75", size = 109503850 }, + { url = "https://files.pythonhosted.org/packages/0f/27/07c645c7673e73e53ded71705045d6cb5bae94c4b021b03aa8d03eee90ab/torch-2.9.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:da5f6f4d7f4940a173e5572791af238cb0b9e21b1aab592bd8b26da4c99f1cd6", size = 104126592 }, + { url = "https://files.pythonhosted.org/packages/19/17/e377a460603132b00760511299fceba4102bd95db1a0ee788da21298ccff/torch-2.9.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:27331cd902fb4322252657f3902adf1c4f6acad9dcad81d8df3ae14c7c4f07c4", size = 899742281 }, + { url = "https://files.pythonhosted.org/packages/b1/1a/64f5769025db846a82567fa5b7d21dba4558a7234ee631712ee4771c436c/torch-2.9.1-cp312-cp312-win_amd64.whl", hash = "sha256:81a285002d7b8cfd3fdf1b98aa8df138d41f1a8334fd9ea37511517cedf43083", size = 110940568 }, + { url = "https://files.pythonhosted.org/packages/6e/ab/07739fd776618e5882661d04c43f5b5586323e2f6a2d7d84aac20d8f20bd/torch-2.9.1-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:c0d25d1d8e531b8343bea0ed811d5d528958f1dcbd37e7245bc686273177ad7e", size = 74479191 }, + { url = "https://files.pythonhosted.org/packages/20/60/8fc5e828d050bddfab469b3fe78e5ab9a7e53dda9c3bdc6a43d17ce99e63/torch-2.9.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:c29455d2b910b98738131990394da3e50eea8291dfeb4b12de71ecf1fdeb21cb", size = 104135743 }, + { url = "https://files.pythonhosted.org/packages/f2/b7/6d3f80e6918213babddb2a37b46dbb14c15b14c5f473e347869a51f40e1f/torch-2.9.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:524de44cd13931208ba2c4bde9ec7741fd4ae6bfd06409a604fc32f6520c2bc9", size = 899749493 }, + { url = "https://files.pythonhosted.org/packages/a6/47/c7843d69d6de8938c1cbb1eba426b1d48ddf375f101473d3e31a5fc52b74/torch-2.9.1-cp313-cp313-win_amd64.whl", hash = "sha256:545844cc16b3f91e08ce3b40e9c2d77012dd33a48d505aed34b7740ed627a1b2", size = 110944162 }, + { url = "https://files.pythonhosted.org/packages/28/0e/2a37247957e72c12151b33a01e4df651d9d155dd74d8cfcbfad15a79b44a/torch-2.9.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5be4bf7496f1e3ffb1dd44b672adb1ac3f081f204c5ca81eba6442f5f634df8e", size = 74830751 }, + { url = "https://files.pythonhosted.org/packages/4b/f7/7a18745edcd7b9ca2381aa03353647bca8aace91683c4975f19ac233809d/torch-2.9.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:30a3e170a84894f3652434b56d59a64a2c11366b0ed5776fab33c2439396bf9a", size = 104142929 }, + { url = "https://files.pythonhosted.org/packages/f4/dd/f1c0d879f2863ef209e18823a988dc7a1bf40470750e3ebe927efdb9407f/torch-2.9.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:8301a7b431e51764629208d0edaa4f9e4c33e6df0f2f90b90e261d623df6a4e2", size = 899748978 }, + { url = "https://files.pythonhosted.org/packages/1f/9f/6986b83a53b4d043e36f3f898b798ab51f7f20fdf1a9b01a2720f445043d/torch-2.9.1-cp313-cp313t-win_amd64.whl", hash = "sha256:2e1c42c0ae92bf803a4b2409fdfed85e30f9027a66887f5e7dcdbc014c7531db", size = 111176995 }, + { url = "https://files.pythonhosted.org/packages/40/60/71c698b466dd01e65d0e9514b5405faae200c52a76901baf6906856f17e4/torch-2.9.1-cp313-none-macosx_11_0_arm64.whl", hash = "sha256:2c14b3da5df416cf9cb5efab83aa3056f5b8cd8620b8fde81b4987ecab730587", size = 74480347 }, + { url = "https://files.pythonhosted.org/packages/48/50/c4b5112546d0d13cc9eaa1c732b823d676a9f49ae8b6f97772f795874a03/torch-2.9.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1edee27a7c9897f4e0b7c14cfc2f3008c571921134522d5b9b5ec4ebbc69041a", size = 74433245 }, + { url = "https://files.pythonhosted.org/packages/81/c9/2628f408f0518b3bae49c95f5af3728b6ab498c8624ab1e03a43dd53d650/torch-2.9.1-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:19d144d6b3e29921f1fc70503e9f2fc572cde6a5115c0c0de2f7ca8b1483e8b6", size = 104134804 }, + { url = "https://files.pythonhosted.org/packages/28/fc/5bc91d6d831ae41bf6e9e6da6468f25330522e92347c9156eb3f1cb95956/torch-2.9.1-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:c432d04376f6d9767a9852ea0def7b47a7bbc8e7af3b16ac9cf9ce02b12851c9", size = 899747132 }, + { url = "https://files.pythonhosted.org/packages/63/5d/e8d4e009e52b6b2cf1684bde2a6be157b96fb873732542fb2a9a99e85a83/torch-2.9.1-cp314-cp314-win_amd64.whl", hash = "sha256:d187566a2cdc726fc80138c3cdb260970fab1c27e99f85452721f7759bbd554d", size = 110934845 }, + { url = "https://files.pythonhosted.org/packages/bd/b2/2d15a52516b2ea3f414643b8de68fa4cb220d3877ac8b1028c83dc8ca1c4/torch-2.9.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:cb10896a1f7fedaddbccc2017ce6ca9ecaaf990f0973bdfcf405439750118d2c", size = 74823558 }, + { url = "https://files.pythonhosted.org/packages/86/5c/5b2e5d84f5b9850cd1e71af07524d8cbb74cba19379800f1f9f7c997fc70/torch-2.9.1-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:0a2bd769944991c74acf0c4ef23603b9c777fdf7637f115605a4b2d8023110c7", size = 104145788 }, + { url = "https://files.pythonhosted.org/packages/a9/8c/3da60787bcf70add986c4ad485993026ac0ca74f2fc21410bc4eb1bb7695/torch-2.9.1-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:07c8a9660bc9414c39cac530ac83b1fb1b679d7155824144a40a54f4a47bfa73", size = 899735500 }, + { url = "https://files.pythonhosted.org/packages/db/2b/f7818f6ec88758dfd21da46b6cd46af9d1b3433e53ddbb19ad1e0da17f9b/torch-2.9.1-cp314-cp314t-win_amd64.whl", hash = "sha256:c88d3299ddeb2b35dcc31753305612db485ab6f1823e37fb29451c8b2732b87e", size = 111163659 }, ] [[package]] @@ -2727,14 +2816,14 @@ wheels = [ [[package]] name = "triton" -version = "3.5.0" +version = "3.5.1" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f5/3a/e991574f3102147b642e49637e0281e9bb7c4ba254edb2bab78247c85e01/triton-3.5.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c9e71db82261c4ffa3921cd050cd5faa18322d2d405c30eb56084afaff3b0833", size = 170476535 }, - { url = "https://files.pythonhosted.org/packages/6c/29/10728de8a6e932e517c10773486b8e99f85d1b1d9dd87d9a9616e1fef4a1/triton-3.5.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e6bb9aa5519c084a333acdba443789e50012a4b851cd486c54f0b8dc2a8d3a12", size = 170487289 }, - { url = "https://files.pythonhosted.org/packages/5c/38/db80e48b9220c9bce872b0f616ad0446cdf554a40b85c7865cbca99ab3c2/triton-3.5.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c83f2343e1a220a716c7b3ab9fccfcbe3ad4020d189549200e2d2e8d5868bed9", size = 170577179 }, - { url = "https://files.pythonhosted.org/packages/ff/60/1810655d1d856c9a4fcc90ee8966d85f552d98c53a6589f95ab2cbe27bb8/triton-3.5.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da0fa67ccd76c3dcfb0bffe1b1c57c685136a6bd33d141c24d9655d4185b1289", size = 170487949 }, - { url = "https://files.pythonhosted.org/packages/fb/b7/1dec8433ac604c061173d0589d99217fe7bf90a70bdc375e745d044b8aad/triton-3.5.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:317fe477ea8fd4524a6a8c499fb0a36984a56d0b75bf9c9cb6133a1c56d5a6e7", size = 170580176 }, + { url = "https://files.pythonhosted.org/packages/f2/50/9a8358d3ef58162c0a415d173cfb45b67de60176e1024f71fbc4d24c0b6d/triton-3.5.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d2c6b915a03888ab931a9fd3e55ba36785e1fe70cbea0b40c6ef93b20fc85232", size = 170470207 }, + { url = "https://files.pythonhosted.org/packages/27/46/8c3bbb5b0a19313f50edcaa363b599e5a1a5ac9683ead82b9b80fe497c8d/triton-3.5.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f3f4346b6ebbd4fad18773f5ba839114f4826037c9f2f34e0148894cd5dd3dba", size = 170470410 }, + { url = "https://files.pythonhosted.org/packages/37/92/e97fcc6b2c27cdb87ce5ee063d77f8f26f19f06916aa680464c8104ef0f6/triton-3.5.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0b4d2c70127fca6a23e247f9348b8adde979d2e7a20391bfbabaac6aebc7e6a8", size = 170579924 }, + { url = "https://files.pythonhosted.org/packages/a4/e6/c595c35e5c50c4bc56a7bac96493dad321e9e29b953b526bbbe20f9911d0/triton-3.5.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d0637b1efb1db599a8e9dc960d53ab6e4637db7d4ab6630a0974705d77b14b60", size = 170480488 }, + { url = "https://files.pythonhosted.org/packages/16/b5/b0d3d8b901b6a04ca38df5e24c27e53afb15b93624d7fd7d658c7cd9352a/triton-3.5.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bac7f7d959ad0f48c0e97d6643a1cc0fd5786fe61cb1f83b537c6b2d54776478", size = 170582192 }, ] [[package]]