feat(coach): add local transformers provider
Browse files- README.md +19 -4
- pyproject.toml +2 -0
- requirements.txt +30 -2
- src/pozify/slm/providers.py +153 -11
- tests/test_coach_summary.py +37 -0
- uv.lock +245 -0
README.md
CHANGED
|
@@ -71,16 +71,19 @@ requires installing MMPose/MMCV and mapping model keypoints into the shared land
|
|
| 71 |
|
| 72 |
## Hugging Face ZeroGPU
|
| 73 |
|
| 74 |
-
When this app runs on a Hugging Face Space with ZeroGPU hardware selected,
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
| 78 |
|
| 79 |
The runtime uses these defaults:
|
| 80 |
|
| 81 |
- `SPACES_ZERO_GPU=1`: set by Hugging Face ZeroGPU; enables CUDA for the Torch exercise router.
|
| 82 |
- `POZIFY_ROUTER_DEVICE`: optional override for router inference, for example `cpu` or `cuda`.
|
| 83 |
- `POZIFY_SPACES_GPU_DURATION`: optional `spaces.GPU` duration in seconds, default `120`.
|
|
|
|
|
|
|
|
|
|
| 84 |
|
| 85 |
The MediaPipe Tasks backend tries its GPU delegate on ZeroGPU and falls back to CPU if unavailable.
|
| 86 |
The older `mp.solutions.pose` path remains CPU-only. The Torch exercise router loads and predicts
|
|
@@ -88,6 +91,18 @@ inside its ZeroGPU-wrapped function, so model objects are not pickled across the
|
|
| 88 |
The root `packages.txt` installs the native GLES/EGL/OpenGL libraries required by MediaPipe Tasks
|
| 89 |
on the Hugging Face runtime.
|
| 90 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 91 |
When running in real mode, the UI summary now shows:
|
| 92 |
|
| 93 |
- `Analysis mode`: `mock` or `real`
|
|
|
|
| 71 |
|
| 72 |
## Hugging Face ZeroGPU
|
| 73 |
|
| 74 |
+
When this app runs on a Hugging Face Space with ZeroGPU hardware selected, compute-heavy model
|
| 75 |
+
calls are wrapped with `spaces.GPU`. The API and pipeline layer stay outside the ZeroGPU boundary
|
| 76 |
+
so request state, streaming progress queues, and file serving are not serialized into the GPU
|
| 77 |
+
worker.
|
| 78 |
|
| 79 |
The runtime uses these defaults:
|
| 80 |
|
| 81 |
- `SPACES_ZERO_GPU=1`: set by Hugging Face ZeroGPU; enables CUDA for the Torch exercise router.
|
| 82 |
- `POZIFY_ROUTER_DEVICE`: optional override for router inference, for example `cpu` or `cuda`.
|
| 83 |
- `POZIFY_SPACES_GPU_DURATION`: optional `spaces.GPU` duration in seconds, default `120`.
|
| 84 |
+
- `POZIFY_COACH_SUMMARY_PROVIDER`: `hf_inference` by default. Set `local_transformers`
|
| 85 |
+
to run the coach summary model inside the Space instead of calling Hugging Face Inference.
|
| 86 |
+
- `POZIFY_COACH_SUMMARY_MODEL`: coach model id, default `Qwen/Qwen2.5-7B-Instruct`.
|
| 87 |
|
| 88 |
The MediaPipe Tasks backend tries its GPU delegate on ZeroGPU and falls back to CPU if unavailable.
|
| 89 |
The older `mp.solutions.pose` path remains CPU-only. The Torch exercise router loads and predicts
|
|
|
|
| 91 |
The root `packages.txt` installs the native GLES/EGL/OpenGL libraries required by MediaPipe Tasks
|
| 92 |
on the Hugging Face runtime.
|
| 93 |
|
| 94 |
+
For a fully local coach on ZeroGPU, set:
|
| 95 |
+
|
| 96 |
+
```bash
|
| 97 |
+
POZIFY_COACH_SUMMARY_PROVIDER=local_transformers
|
| 98 |
+
POZIFY_COACH_SUMMARY_MODEL=Qwen/Qwen2.5-7B-Instruct
|
| 99 |
+
POZIFY_SPACES_GPU_DURATION=300
|
| 100 |
+
```
|
| 101 |
+
|
| 102 |
+
The 7B model is viable on ZeroGPU `large` for short coach-summary prompts, but the first request can
|
| 103 |
+
be slow while the model downloads and loads. Use a smaller Qwen2.5 Instruct model if queue time or
|
| 104 |
+
cold-start time matters more than output quality.
|
| 105 |
+
|
| 106 |
When running in real mode, the UI summary now shows:
|
| 107 |
|
| 108 |
- `Analysis mode`: `mock` or `real`
|
pyproject.toml
CHANGED
|
@@ -5,6 +5,7 @@ description = "Gradio base app for Pozify with mocked pipeline steps and explici
|
|
| 5 |
readme = "README.md"
|
| 6 |
requires-python = ">=3.10"
|
| 7 |
dependencies = [
|
|
|
|
| 8 |
"fastapi>=0.136.3",
|
| 9 |
"gradio>=4.44.0",
|
| 10 |
"huggingface-hub>=0.24.0",
|
|
@@ -18,6 +19,7 @@ dependencies = [
|
|
| 18 |
"scikit-learn>=1.4.0",
|
| 19 |
"spaces>=0.40.0",
|
| 20 |
"torch==2.11.0",
|
|
|
|
| 21 |
]
|
| 22 |
|
| 23 |
[project.optional-dependencies]
|
|
|
|
| 5 |
readme = "README.md"
|
| 6 |
requires-python = ">=3.10"
|
| 7 |
dependencies = [
|
| 8 |
+
"accelerate>=0.26.0",
|
| 9 |
"fastapi>=0.136.3",
|
| 10 |
"gradio>=4.44.0",
|
| 11 |
"huggingface-hub>=0.24.0",
|
|
|
|
| 19 |
"scikit-learn>=1.4.0",
|
| 20 |
"spaces>=0.40.0",
|
| 21 |
"torch==2.11.0",
|
| 22 |
+
"transformers>=4.51.0",
|
| 23 |
]
|
| 24 |
|
| 25 |
[project.optional-dependencies]
|
requirements.txt
CHANGED
|
@@ -2,6 +2,8 @@
|
|
| 2 |
# uv export --format requirements.txt --no-dev --no-hashes --frozen --output-file requirements.txt
|
| 3 |
absl-py==2.4.0
|
| 4 |
# via mediapipe
|
|
|
|
|
|
|
| 5 |
aiohappyeyeballs==2.6.2
|
| 6 |
# via aiohttp
|
| 7 |
aiohttp==3.14.1
|
|
@@ -121,9 +123,12 @@ httpx==0.28.1
|
|
| 121 |
# spaces
|
| 122 |
huggingface-hub==1.18.0
|
| 123 |
# via
|
|
|
|
| 124 |
# gradio
|
| 125 |
# gradio-client
|
| 126 |
# pozify
|
|
|
|
|
|
|
| 127 |
hyperframe==6.1.0
|
| 128 |
# via h2
|
| 129 |
idna==3.18
|
|
@@ -171,6 +176,7 @@ networkx==3.6.1 ; python_full_version >= '3.11'
|
|
| 171 |
# via torch
|
| 172 |
numpy==1.26.4
|
| 173 |
# via
|
|
|
|
| 174 |
# contourpy
|
| 175 |
# gradio
|
| 176 |
# matplotlib
|
|
@@ -181,6 +187,7 @@ numpy==1.26.4
|
|
| 181 |
# pozify
|
| 182 |
# scikit-learn
|
| 183 |
# scipy
|
|
|
|
| 184 |
nvidia-cublas==13.1.0.3 ; sys_platform == 'linux'
|
| 185 |
# via
|
| 186 |
# cuda-toolkit
|
|
@@ -228,11 +235,13 @@ orjson==3.11.9
|
|
| 228 |
# via gradio
|
| 229 |
packaging==26.2
|
| 230 |
# via
|
|
|
|
| 231 |
# gradio
|
| 232 |
# gradio-client
|
| 233 |
# huggingface-hub
|
| 234 |
# matplotlib
|
| 235 |
# spaces
|
|
|
|
| 236 |
pandas==2.3.3 ; python_full_version < '3.11' or python_full_version >= '3.14'
|
| 237 |
# via gradio
|
| 238 |
pandas==3.0.3 ; python_full_version >= '3.11' and python_full_version < '3.14'
|
|
@@ -247,6 +256,8 @@ propcache==0.5.2
|
|
| 247 |
# yarl
|
| 248 |
protobuf==6.33.6
|
| 249 |
# via modal
|
|
|
|
|
|
|
| 250 |
pycparser==3.0 ; implementation_name != 'PyPy'
|
| 251 |
# via cffi
|
| 252 |
pydantic==2.12.5
|
|
@@ -275,8 +286,12 @@ pytz==2026.2
|
|
| 275 |
# pandas
|
| 276 |
pyyaml==6.0.3
|
| 277 |
# via
|
|
|
|
| 278 |
# gradio
|
| 279 |
# huggingface-hub
|
|
|
|
|
|
|
|
|
|
| 280 |
requests==2.34.2
|
| 281 |
# via spaces
|
| 282 |
rich==15.0.0
|
|
@@ -285,6 +300,10 @@ rich==15.0.0
|
|
| 285 |
# typer
|
| 286 |
safehttpx==0.1.7
|
| 287 |
# via gradio
|
|
|
|
|
|
|
|
|
|
|
|
|
| 288 |
scikit-learn==1.7.2 ; python_full_version < '3.11'
|
| 289 |
# via pozify
|
| 290 |
scikit-learn==1.9.0 ; python_full_version >= '3.11'
|
|
@@ -315,14 +334,22 @@ synchronicity==0.12.3
|
|
| 315 |
# via modal
|
| 316 |
threadpoolctl==3.6.0
|
| 317 |
# via scikit-learn
|
|
|
|
|
|
|
| 318 |
toml==0.10.2
|
| 319 |
# via modal
|
| 320 |
tomlkit==0.14.0
|
| 321 |
# via gradio
|
| 322 |
torch==2.11.0
|
| 323 |
-
# via
|
|
|
|
|
|
|
| 324 |
tqdm==4.68.2
|
| 325 |
-
# via
|
|
|
|
|
|
|
|
|
|
|
|
|
| 326 |
triton==3.6.0 ; sys_platform == 'linux'
|
| 327 |
# via torch
|
| 328 |
typer==0.25.1
|
|
@@ -330,6 +357,7 @@ typer==0.25.1
|
|
| 330 |
# gradio
|
| 331 |
# hf-gradio
|
| 332 |
# huggingface-hub
|
|
|
|
| 333 |
types-certifi==2021.10.8.3
|
| 334 |
# via modal
|
| 335 |
types-toml==0.10.8.20260518
|
|
|
|
| 2 |
# uv export --format requirements.txt --no-dev --no-hashes --frozen --output-file requirements.txt
|
| 3 |
absl-py==2.4.0
|
| 4 |
# via mediapipe
|
| 5 |
+
accelerate==1.14.0
|
| 6 |
+
# via pozify
|
| 7 |
aiohappyeyeballs==2.6.2
|
| 8 |
# via aiohttp
|
| 9 |
aiohttp==3.14.1
|
|
|
|
| 123 |
# spaces
|
| 124 |
huggingface-hub==1.18.0
|
| 125 |
# via
|
| 126 |
+
# accelerate
|
| 127 |
# gradio
|
| 128 |
# gradio-client
|
| 129 |
# pozify
|
| 130 |
+
# tokenizers
|
| 131 |
+
# transformers
|
| 132 |
hyperframe==6.1.0
|
| 133 |
# via h2
|
| 134 |
idna==3.18
|
|
|
|
| 176 |
# via torch
|
| 177 |
numpy==1.26.4
|
| 178 |
# via
|
| 179 |
+
# accelerate
|
| 180 |
# contourpy
|
| 181 |
# gradio
|
| 182 |
# matplotlib
|
|
|
|
| 187 |
# pozify
|
| 188 |
# scikit-learn
|
| 189 |
# scipy
|
| 190 |
+
# transformers
|
| 191 |
nvidia-cublas==13.1.0.3 ; sys_platform == 'linux'
|
| 192 |
# via
|
| 193 |
# cuda-toolkit
|
|
|
|
| 235 |
# via gradio
|
| 236 |
packaging==26.2
|
| 237 |
# via
|
| 238 |
+
# accelerate
|
| 239 |
# gradio
|
| 240 |
# gradio-client
|
| 241 |
# huggingface-hub
|
| 242 |
# matplotlib
|
| 243 |
# spaces
|
| 244 |
+
# transformers
|
| 245 |
pandas==2.3.3 ; python_full_version < '3.11' or python_full_version >= '3.14'
|
| 246 |
# via gradio
|
| 247 |
pandas==3.0.3 ; python_full_version >= '3.11' and python_full_version < '3.14'
|
|
|
|
| 256 |
# yarl
|
| 257 |
protobuf==6.33.6
|
| 258 |
# via modal
|
| 259 |
+
psutil==7.2.2
|
| 260 |
+
# via accelerate
|
| 261 |
pycparser==3.0 ; implementation_name != 'PyPy'
|
| 262 |
# via cffi
|
| 263 |
pydantic==2.12.5
|
|
|
|
| 286 |
# pandas
|
| 287 |
pyyaml==6.0.3
|
| 288 |
# via
|
| 289 |
+
# accelerate
|
| 290 |
# gradio
|
| 291 |
# huggingface-hub
|
| 292 |
+
# transformers
|
| 293 |
+
regex==2026.5.9
|
| 294 |
+
# via transformers
|
| 295 |
requests==2.34.2
|
| 296 |
# via spaces
|
| 297 |
rich==15.0.0
|
|
|
|
| 300 |
# typer
|
| 301 |
safehttpx==0.1.7
|
| 302 |
# via gradio
|
| 303 |
+
safetensors==0.8.0
|
| 304 |
+
# via
|
| 305 |
+
# accelerate
|
| 306 |
+
# transformers
|
| 307 |
scikit-learn==1.7.2 ; python_full_version < '3.11'
|
| 308 |
# via pozify
|
| 309 |
scikit-learn==1.9.0 ; python_full_version >= '3.11'
|
|
|
|
| 334 |
# via modal
|
| 335 |
threadpoolctl==3.6.0
|
| 336 |
# via scikit-learn
|
| 337 |
+
tokenizers==0.22.2
|
| 338 |
+
# via transformers
|
| 339 |
toml==0.10.2
|
| 340 |
# via modal
|
| 341 |
tomlkit==0.14.0
|
| 342 |
# via gradio
|
| 343 |
torch==2.11.0
|
| 344 |
+
# via
|
| 345 |
+
# accelerate
|
| 346 |
+
# pozify
|
| 347 |
tqdm==4.68.2
|
| 348 |
+
# via
|
| 349 |
+
# huggingface-hub
|
| 350 |
+
# transformers
|
| 351 |
+
transformers==5.12.0
|
| 352 |
+
# via pozify
|
| 353 |
triton==3.6.0 ; sys_platform == 'linux'
|
| 354 |
# via torch
|
| 355 |
typer==0.25.1
|
|
|
|
| 357 |
# gradio
|
| 358 |
# hf-gradio
|
| 359 |
# huggingface-hub
|
| 360 |
+
# transformers
|
| 361 |
types-certifi==2021.10.8.3
|
| 362 |
# via modal
|
| 363 |
types-toml==0.10.8.20260518
|
src/pozify/slm/providers.py
CHANGED
|
@@ -2,9 +2,10 @@ from __future__ import annotations
|
|
| 2 |
|
| 3 |
from dataclasses import dataclass
|
| 4 |
import os
|
| 5 |
-
from typing import Protocol
|
| 6 |
|
| 7 |
from pozify.env import env_truthy, load_local_env
|
|
|
|
| 8 |
|
| 9 |
|
| 10 |
PROVIDER_ENV = "POZIFY_COACH_SUMMARY_PROVIDER"
|
|
@@ -16,6 +17,10 @@ HF_TOKEN_ENV = "HF_TOKEN"
|
|
| 16 |
|
| 17 |
DEFAULT_PROVIDER = "hf_inference"
|
| 18 |
DEFAULT_MODEL = "Qwen/Qwen2.5-7B-Instruct"
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
|
| 20 |
|
| 21 |
@dataclass(frozen=True)
|
|
@@ -125,19 +130,156 @@ class HFInferenceCoachSummaryModel:
|
|
| 125 |
raise RuntimeError("No supported Hugging Face inference method is available")
|
| 126 |
|
| 127 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 128 |
def get_coach_summary_model() -> CoachSummaryModel | None:
|
| 129 |
load_local_env()
|
| 130 |
|
| 131 |
-
if env_truthy(os.getenv(DISABLE_REMOTE_ENV)):
|
| 132 |
-
return None
|
| 133 |
-
|
| 134 |
provider = os.getenv(PROVIDER_ENV, DEFAULT_PROVIDER).strip().lower()
|
| 135 |
-
if provider
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 136 |
return None
|
| 137 |
|
| 138 |
-
return
|
| 139 |
-
model=os.getenv(MODEL_ENV, DEFAULT_MODEL),
|
| 140 |
-
max_tokens=_env_int(MAX_TOKENS_ENV, 700),
|
| 141 |
-
temperature=_env_float(TEMPERATURE_ENV, 0.1),
|
| 142 |
-
token=os.getenv(HF_TOKEN_ENV),
|
| 143 |
-
)
|
|
|
|
| 2 |
|
| 3 |
from dataclasses import dataclass
|
| 4 |
import os
|
| 5 |
+
from typing import Any, Protocol
|
| 6 |
|
| 7 |
from pozify.env import env_truthy, load_local_env
|
| 8 |
+
from pozify.hf_spaces import default_spaces_gpu_duration, spaces_gpu
|
| 9 |
|
| 10 |
|
| 11 |
PROVIDER_ENV = "POZIFY_COACH_SUMMARY_PROVIDER"
|
|
|
|
| 17 |
|
| 18 |
DEFAULT_PROVIDER = "hf_inference"
|
| 19 |
DEFAULT_MODEL = "Qwen/Qwen2.5-7B-Instruct"
|
| 20 |
+
LOCAL_TRANSFORMERS_PROVIDER = "local_transformers"
|
| 21 |
+
LOCAL_TRANSFORMERS_ALIASES = {LOCAL_TRANSFORMERS_PROVIDER, "local", "transformers"}
|
| 22 |
+
|
| 23 |
+
_LOCAL_TRANSFORMERS_CACHE: dict[str, tuple[Any, Any]] = {}
|
| 24 |
|
| 25 |
|
| 26 |
@dataclass(frozen=True)
|
|
|
|
| 130 |
raise RuntimeError("No supported Hugging Face inference method is available")
|
| 131 |
|
| 132 |
|
| 133 |
+
def _gpu_duration(*_args: object, **_kwargs: object) -> int:
|
| 134 |
+
return default_spaces_gpu_duration()
|
| 135 |
+
|
| 136 |
+
|
| 137 |
+
def _load_local_transformers_backend(model: str, token: str | None) -> tuple[Any, Any]:
|
| 138 |
+
cache_key = f"{model}:{token or ''}"
|
| 139 |
+
cached = _LOCAL_TRANSFORMERS_CACHE.get(cache_key)
|
| 140 |
+
if cached is not None:
|
| 141 |
+
return cached
|
| 142 |
+
|
| 143 |
+
try:
|
| 144 |
+
from transformers import AutoModelForCausalLM, AutoTokenizer
|
| 145 |
+
except ImportError as exc: # pragma: no cover - dependency declared in project
|
| 146 |
+
raise RuntimeError(
|
| 147 |
+
"transformers and torch are required for local coach summary inference"
|
| 148 |
+
) from exc
|
| 149 |
+
|
| 150 |
+
tokenizer = AutoTokenizer.from_pretrained(model, token=token)
|
| 151 |
+
language_model = AutoModelForCausalLM.from_pretrained(
|
| 152 |
+
model,
|
| 153 |
+
device_map="auto",
|
| 154 |
+
torch_dtype="auto",
|
| 155 |
+
token=token,
|
| 156 |
+
)
|
| 157 |
+
language_model.eval()
|
| 158 |
+
|
| 159 |
+
cache_entry = (tokenizer, language_model)
|
| 160 |
+
_LOCAL_TRANSFORMERS_CACHE[cache_key] = cache_entry
|
| 161 |
+
return cache_entry
|
| 162 |
+
|
| 163 |
+
|
| 164 |
+
def _local_transformers_device(language_model: Any) -> Any:
|
| 165 |
+
device = getattr(language_model, "device", None)
|
| 166 |
+
if device is not None:
|
| 167 |
+
return device
|
| 168 |
+
|
| 169 |
+
try:
|
| 170 |
+
return next(language_model.parameters()).device
|
| 171 |
+
except StopIteration as exc:
|
| 172 |
+
raise RuntimeError("Local coach summary model has no parameters") from exc
|
| 173 |
+
|
| 174 |
+
|
| 175 |
+
@spaces_gpu(duration=_gpu_duration)
|
| 176 |
+
def _generate_local_transformers_summary(
|
| 177 |
+
*,
|
| 178 |
+
model: str,
|
| 179 |
+
prompt: str,
|
| 180 |
+
max_tokens: int,
|
| 181 |
+
temperature: float,
|
| 182 |
+
token: str | None,
|
| 183 |
+
) -> str:
|
| 184 |
+
try:
|
| 185 |
+
import torch
|
| 186 |
+
except ImportError as exc: # pragma: no cover - dependency declared in project
|
| 187 |
+
raise RuntimeError("torch is required for local coach summary inference") from exc
|
| 188 |
+
|
| 189 |
+
tokenizer, language_model = _load_local_transformers_backend(model, token)
|
| 190 |
+
messages = [
|
| 191 |
+
{
|
| 192 |
+
"role": "system",
|
| 193 |
+
"content": "Return JSON only.",
|
| 194 |
+
},
|
| 195 |
+
{
|
| 196 |
+
"role": "user",
|
| 197 |
+
"content": prompt,
|
| 198 |
+
},
|
| 199 |
+
]
|
| 200 |
+
if hasattr(tokenizer, "apply_chat_template"):
|
| 201 |
+
text = tokenizer.apply_chat_template(
|
| 202 |
+
messages,
|
| 203 |
+
tokenize=False,
|
| 204 |
+
add_generation_prompt=True,
|
| 205 |
+
)
|
| 206 |
+
else:
|
| 207 |
+
text = "\n\n".join(f"{message['role']}: {message['content']}" for message in messages)
|
| 208 |
+
|
| 209 |
+
inputs = tokenizer([text], return_tensors="pt")
|
| 210 |
+
model_inputs = inputs.to(_local_transformers_device(language_model))
|
| 211 |
+
generation_kwargs: dict[str, Any] = {
|
| 212 |
+
"max_new_tokens": max_tokens,
|
| 213 |
+
"do_sample": temperature > 0,
|
| 214 |
+
}
|
| 215 |
+
if temperature > 0:
|
| 216 |
+
generation_kwargs["temperature"] = temperature
|
| 217 |
+
if getattr(tokenizer, "eos_token_id", None) is not None:
|
| 218 |
+
generation_kwargs["pad_token_id"] = tokenizer.eos_token_id
|
| 219 |
+
|
| 220 |
+
with torch.inference_mode():
|
| 221 |
+
generated = language_model.generate(**model_inputs, **generation_kwargs)
|
| 222 |
+
|
| 223 |
+
prompt_length = model_inputs["input_ids"].shape[-1]
|
| 224 |
+
generated = generated[:, prompt_length:]
|
| 225 |
+
text = tokenizer.batch_decode(generated, skip_special_tokens=True)[0]
|
| 226 |
+
if not isinstance(text, str) or not text.strip():
|
| 227 |
+
raise RuntimeError("Local transformers inference returned empty output")
|
| 228 |
+
return text
|
| 229 |
+
|
| 230 |
+
|
| 231 |
+
class LocalTransformersCoachSummaryModel:
|
| 232 |
+
def __init__(
|
| 233 |
+
self,
|
| 234 |
+
*,
|
| 235 |
+
model: str = DEFAULT_MODEL,
|
| 236 |
+
max_tokens: int = 700,
|
| 237 |
+
temperature: float = 0.1,
|
| 238 |
+
token: str | None = None,
|
| 239 |
+
) -> None:
|
| 240 |
+
self.model = model
|
| 241 |
+
self.max_tokens = max_tokens
|
| 242 |
+
self.temperature = temperature
|
| 243 |
+
self.token = token
|
| 244 |
+
|
| 245 |
+
def generate_summary(self, prompt: str) -> CoachSummaryGeneration:
|
| 246 |
+
text = _generate_local_transformers_summary(
|
| 247 |
+
model=self.model,
|
| 248 |
+
prompt=prompt,
|
| 249 |
+
max_tokens=self.max_tokens,
|
| 250 |
+
temperature=self.temperature,
|
| 251 |
+
token=self.token,
|
| 252 |
+
)
|
| 253 |
+
return CoachSummaryGeneration(
|
| 254 |
+
text=text,
|
| 255 |
+
provider=LOCAL_TRANSFORMERS_PROVIDER,
|
| 256 |
+
model=self.model,
|
| 257 |
+
)
|
| 258 |
+
|
| 259 |
+
|
| 260 |
def get_coach_summary_model() -> CoachSummaryModel | None:
|
| 261 |
load_local_env()
|
| 262 |
|
|
|
|
|
|
|
|
|
|
| 263 |
provider = os.getenv(PROVIDER_ENV, DEFAULT_PROVIDER).strip().lower()
|
| 264 |
+
if provider == "hf_inference":
|
| 265 |
+
if env_truthy(os.getenv(DISABLE_REMOTE_ENV)):
|
| 266 |
+
return None
|
| 267 |
+
return HFInferenceCoachSummaryModel(
|
| 268 |
+
model=os.getenv(MODEL_ENV, DEFAULT_MODEL),
|
| 269 |
+
max_tokens=_env_int(MAX_TOKENS_ENV, 700),
|
| 270 |
+
temperature=_env_float(TEMPERATURE_ENV, 0.1),
|
| 271 |
+
token=os.getenv(HF_TOKEN_ENV),
|
| 272 |
+
)
|
| 273 |
+
|
| 274 |
+
if provider in LOCAL_TRANSFORMERS_ALIASES:
|
| 275 |
+
return LocalTransformersCoachSummaryModel(
|
| 276 |
+
model=os.getenv(MODEL_ENV, DEFAULT_MODEL),
|
| 277 |
+
max_tokens=_env_int(MAX_TOKENS_ENV, 700),
|
| 278 |
+
temperature=_env_float(TEMPERATURE_ENV, 0.1),
|
| 279 |
+
token=os.getenv(HF_TOKEN_ENV),
|
| 280 |
+
)
|
| 281 |
+
|
| 282 |
+
if env_truthy(os.getenv(DISABLE_REMOTE_ENV)):
|
| 283 |
return None
|
| 284 |
|
| 285 |
+
return None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tests/test_coach_summary.py
CHANGED
|
@@ -23,6 +23,7 @@ from pozify.contracts import (
|
|
| 23 |
)
|
| 24 |
from pozify.env import load_local_env
|
| 25 |
from pozify.knowledge_cards import retrieve_cards
|
|
|
|
| 26 |
from pozify.steps import coach_summary, coach_summary_fallback, verifier
|
| 27 |
|
| 28 |
|
|
@@ -165,6 +166,42 @@ class CoachSummaryTests(unittest.TestCase):
|
|
| 165 |
"Qwen/Qwen2.5-7B-Instruct",
|
| 166 |
)
|
| 167 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 168 |
def test_card_retrieval_is_deterministic_and_grounded(self) -> None:
|
| 169 |
cards = retrieve_cards(
|
| 170 |
profile=_profile(),
|
|
|
|
| 23 |
)
|
| 24 |
from pozify.env import load_local_env
|
| 25 |
from pozify.knowledge_cards import retrieve_cards
|
| 26 |
+
import pozify.slm.providers as slm_providers
|
| 27 |
from pozify.steps import coach_summary, coach_summary_fallback, verifier
|
| 28 |
|
| 29 |
|
|
|
|
| 166 |
"Qwen/Qwen2.5-7B-Instruct",
|
| 167 |
)
|
| 168 |
|
| 169 |
+
def test_get_coach_summary_model_can_use_local_transformers_provider(self) -> None:
|
| 170 |
+
local_payload = '{"summary":"ok"}'
|
| 171 |
+
with (
|
| 172 |
+
patch.dict(
|
| 173 |
+
os.environ,
|
| 174 |
+
{
|
| 175 |
+
"POZIFY_COACH_SUMMARY_PROVIDER": "local_transformers",
|
| 176 |
+
"POZIFY_COACH_SUMMARY_MODEL": "Qwen/Qwen2.5-7B-Instruct",
|
| 177 |
+
"POZIFY_COACH_SUMMARY_MAX_TOKENS": "123",
|
| 178 |
+
"POZIFY_COACH_SUMMARY_TEMPERATURE": "0",
|
| 179 |
+
},
|
| 180 |
+
clear=True,
|
| 181 |
+
),
|
| 182 |
+
patch.object(slm_providers, "load_local_env"),
|
| 183 |
+
patch.object(
|
| 184 |
+
slm_providers,
|
| 185 |
+
"_generate_local_transformers_summary",
|
| 186 |
+
return_value=local_payload,
|
| 187 |
+
) as generate,
|
| 188 |
+
):
|
| 189 |
+
provider = slm_providers.get_coach_summary_model()
|
| 190 |
+
|
| 191 |
+
self.assertIsNotNone(provider)
|
| 192 |
+
generation = provider.generate_summary("coach prompt")
|
| 193 |
+
|
| 194 |
+
self.assertEqual(generation.provider, "local_transformers")
|
| 195 |
+
self.assertEqual(generation.model, "Qwen/Qwen2.5-7B-Instruct")
|
| 196 |
+
self.assertEqual(generation.text, local_payload)
|
| 197 |
+
generate.assert_called_once_with(
|
| 198 |
+
model="Qwen/Qwen2.5-7B-Instruct",
|
| 199 |
+
prompt="coach prompt",
|
| 200 |
+
max_tokens=123,
|
| 201 |
+
temperature=0.0,
|
| 202 |
+
token=None,
|
| 203 |
+
)
|
| 204 |
+
|
| 205 |
def test_card_retrieval_is_deterministic_and_grounded(self) -> None:
|
| 206 |
cards = retrieve_cards(
|
| 207 |
profile=_profile(),
|
uv.lock
CHANGED
|
@@ -34,6 +34,24 @@ wheels = [
|
|
| 34 |
{ url = "https://files.pythonhosted.org/packages/18/a6/907a406bb7d359e6a63f99c313846d9eec4f7e6f7437809e03aa00fa3074/absl_py-2.4.0-py3-none-any.whl", hash = "sha256:88476fd881ca8aab94ffa78b7b6c632a782ab3ba1cd19c9bd423abc4fb4cd28d", size = 135750, upload-time = "2026-01-28T10:17:04.19Z" },
|
| 35 |
]
|
| 36 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 37 |
[[package]]
|
| 38 |
name = "aiohappyeyeballs"
|
| 39 |
version = "2.6.2"
|
|
@@ -2524,6 +2542,7 @@ name = "pozify"
|
|
| 2524 |
version = "0.1.0"
|
| 2525 |
source = { virtual = "." }
|
| 2526 |
dependencies = [
|
|
|
|
| 2527 |
{ name = "fastapi" },
|
| 2528 |
{ name = "gradio" },
|
| 2529 |
{ name = "huggingface-hub" },
|
|
@@ -2537,6 +2556,7 @@ dependencies = [
|
|
| 2537 |
{ name = "scikit-learn", version = "1.9.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
|
| 2538 |
{ name = "spaces" },
|
| 2539 |
{ name = "torch" },
|
|
|
|
| 2540 |
]
|
| 2541 |
|
| 2542 |
[package.optional-dependencies]
|
|
@@ -2549,6 +2569,7 @@ train = [
|
|
| 2549 |
|
| 2550 |
[package.metadata]
|
| 2551 |
requires-dist = [
|
|
|
|
| 2552 |
{ name = "datasets", marker = "extra == 'train'", specifier = ">=2.20.0" },
|
| 2553 |
{ name = "fastapi", specifier = ">=0.136.3" },
|
| 2554 |
{ name = "gradio", specifier = ">=4.44.0" },
|
|
@@ -2563,6 +2584,7 @@ requires-dist = [
|
|
| 2563 |
{ name = "scikit-learn", specifier = ">=1.4.0" },
|
| 2564 |
{ name = "spaces", specifier = ">=0.40.0" },
|
| 2565 |
{ name = "torch", specifier = "==2.11.0" },
|
|
|
|
| 2566 |
]
|
| 2567 |
provides-extras = ["dev", "train"]
|
| 2568 |
|
|
@@ -2709,6 +2731,34 @@ wheels = [
|
|
| 2709 |
{ url = "https://files.pythonhosted.org/packages/c4/72/02445137af02769918a93807b2b7890047c32bfb9f90371cbc12688819eb/protobuf-6.33.6-py3-none-any.whl", hash = "sha256:77179e006c476e69bf8e8ce866640091ec42e1beb80b213c3900006ecfba6901", size = 170656, upload-time = "2026-03-18T19:04:59.826Z" },
|
| 2710 |
]
|
| 2711 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2712 |
[[package]]
|
| 2713 |
name = "pyarrow"
|
| 2714 |
version = "24.0.0"
|
|
@@ -3029,6 +3079,127 @@ wheels = [
|
|
| 3029 |
{ url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" },
|
| 3030 |
]
|
| 3031 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3032 |
[[package]]
|
| 3033 |
name = "requests"
|
| 3034 |
version = "2.34.2"
|
|
@@ -3094,6 +3265,30 @@ wheels = [
|
|
| 3094 |
{ url = "https://files.pythonhosted.org/packages/2e/a3/0f0b7d78e2f1eb9e8e1afbff1d2bff8d60144aee17aca51c065b516743dd/safehttpx-0.1.7-py3-none-any.whl", hash = "sha256:c4f4a162db6993464d7ca3d7cc4af0ffc6515a606dfd220b9f82c6945d869cde", size = 8959, upload-time = "2025-10-24T18:30:08.733Z" },
|
| 3095 |
]
|
| 3096 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3097 |
[[package]]
|
| 3098 |
name = "scikit-learn"
|
| 3099 |
version = "1.7.2"
|
|
@@ -3475,6 +3670,36 @@ wheels = [
|
|
| 3475 |
{ url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638, upload-time = "2025-03-13T13:49:21.846Z" },
|
| 3476 |
]
|
| 3477 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3478 |
[[package]]
|
| 3479 |
name = "toml"
|
| 3480 |
version = "0.10.2"
|
|
@@ -3557,6 +3782,26 @@ wheels = [
|
|
| 3557 |
{ url = "https://files.pythonhosted.org/packages/eb/75/1a0392bcc21c44dcdf87b3cf2d137e7829be2c083a1e38d44efca3d57a16/tqdm-4.68.2-py3-none-any.whl", hash = "sha256:d4240441fb5353290b87d6a85968c9decc131a99b8c7faa28269d829de669ede", size = 78578, upload-time = "2026-06-09T13:26:40.731Z" },
|
| 3558 |
]
|
| 3559 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3560 |
[[package]]
|
| 3561 |
name = "triton"
|
| 3562 |
version = "3.6.0"
|
|
|
|
| 34 |
{ url = "https://files.pythonhosted.org/packages/18/a6/907a406bb7d359e6a63f99c313846d9eec4f7e6f7437809e03aa00fa3074/absl_py-2.4.0-py3-none-any.whl", hash = "sha256:88476fd881ca8aab94ffa78b7b6c632a782ab3ba1cd19c9bd423abc4fb4cd28d", size = 135750, upload-time = "2026-01-28T10:17:04.19Z" },
|
| 35 |
]
|
| 36 |
|
| 37 |
+
[[package]]
|
| 38 |
+
name = "accelerate"
|
| 39 |
+
version = "1.14.0"
|
| 40 |
+
source = { registry = "https://pypi.org/simple" }
|
| 41 |
+
dependencies = [
|
| 42 |
+
{ name = "huggingface-hub" },
|
| 43 |
+
{ name = "numpy" },
|
| 44 |
+
{ name = "packaging" },
|
| 45 |
+
{ name = "psutil" },
|
| 46 |
+
{ name = "pyyaml" },
|
| 47 |
+
{ name = "safetensors" },
|
| 48 |
+
{ name = "torch" },
|
| 49 |
+
]
|
| 50 |
+
sdist = { url = "https://files.pythonhosted.org/packages/8d/75/94cd5d389649578aca399e5aa822637eec18319a1dadc400ffe2f9a7493f/accelerate-1.14.0.tar.gz", hash = "sha256:41b9c4377a54e0b460a959b0defa1b736e4ca0a2373252d9a539964c2afe3c8d", size = 412167, upload-time = "2026-06-11T13:45:52.326Z" }
|
| 51 |
+
wheels = [
|
| 52 |
+
{ url = "https://files.pythonhosted.org/packages/a8/db/253133d7e7cb40d3af384bb2f5c0b4a2b7fdcffbc95c688cc67a20a3c103/accelerate-1.14.0-py3-none-any.whl", hash = "sha256:e94390c2863b873be18f623f9df48a0d8fe5eff13ea7f1a00092b0a7904888c6", size = 389246, upload-time = "2026-06-11T13:45:50.477Z" },
|
| 53 |
+
]
|
| 54 |
+
|
| 55 |
[[package]]
|
| 56 |
name = "aiohappyeyeballs"
|
| 57 |
version = "2.6.2"
|
|
|
|
| 2542 |
version = "0.1.0"
|
| 2543 |
source = { virtual = "." }
|
| 2544 |
dependencies = [
|
| 2545 |
+
{ name = "accelerate" },
|
| 2546 |
{ name = "fastapi" },
|
| 2547 |
{ name = "gradio" },
|
| 2548 |
{ name = "huggingface-hub" },
|
|
|
|
| 2556 |
{ name = "scikit-learn", version = "1.9.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
|
| 2557 |
{ name = "spaces" },
|
| 2558 |
{ name = "torch" },
|
| 2559 |
+
{ name = "transformers" },
|
| 2560 |
]
|
| 2561 |
|
| 2562 |
[package.optional-dependencies]
|
|
|
|
| 2569 |
|
| 2570 |
[package.metadata]
|
| 2571 |
requires-dist = [
|
| 2572 |
+
{ name = "accelerate", specifier = ">=0.26.0" },
|
| 2573 |
{ name = "datasets", marker = "extra == 'train'", specifier = ">=2.20.0" },
|
| 2574 |
{ name = "fastapi", specifier = ">=0.136.3" },
|
| 2575 |
{ name = "gradio", specifier = ">=4.44.0" },
|
|
|
|
| 2584 |
{ name = "scikit-learn", specifier = ">=1.4.0" },
|
| 2585 |
{ name = "spaces", specifier = ">=0.40.0" },
|
| 2586 |
{ name = "torch", specifier = "==2.11.0" },
|
| 2587 |
+
{ name = "transformers", specifier = ">=4.51.0" },
|
| 2588 |
]
|
| 2589 |
provides-extras = ["dev", "train"]
|
| 2590 |
|
|
|
|
| 2731 |
{ url = "https://files.pythonhosted.org/packages/c4/72/02445137af02769918a93807b2b7890047c32bfb9f90371cbc12688819eb/protobuf-6.33.6-py3-none-any.whl", hash = "sha256:77179e006c476e69bf8e8ce866640091ec42e1beb80b213c3900006ecfba6901", size = 170656, upload-time = "2026-03-18T19:04:59.826Z" },
|
| 2732 |
]
|
| 2733 |
|
| 2734 |
+
[[package]]
|
| 2735 |
+
name = "psutil"
|
| 2736 |
+
version = "7.2.2"
|
| 2737 |
+
source = { registry = "https://pypi.org/simple" }
|
| 2738 |
+
sdist = { url = "https://files.pythonhosted.org/packages/aa/c6/d1ddf4abb55e93cebc4f2ed8b5d6dbad109ecb8d63748dd2b20ab5e57ebe/psutil-7.2.2.tar.gz", hash = "sha256:0746f5f8d406af344fd547f1c8daa5f5c33dbc293bb8d6a16d80b4bb88f59372", size = 493740, upload-time = "2026-01-28T18:14:54.428Z" }
|
| 2739 |
+
wheels = [
|
| 2740 |
+
{ url = "https://files.pythonhosted.org/packages/51/08/510cbdb69c25a96f4ae523f733cdc963ae654904e8db864c07585ef99875/psutil-7.2.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2edccc433cbfa046b980b0df0171cd25bcaeb3a68fe9022db0979e7aa74a826b", size = 130595, upload-time = "2026-01-28T18:14:57.293Z" },
|
| 2741 |
+
{ url = "https://files.pythonhosted.org/packages/d6/f5/97baea3fe7a5a9af7436301f85490905379b1c6f2dd51fe3ecf24b4c5fbf/psutil-7.2.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e78c8603dcd9a04c7364f1a3e670cea95d51ee865e4efb3556a3a63adef958ea", size = 131082, upload-time = "2026-01-28T18:14:59.732Z" },
|
| 2742 |
+
{ url = "https://files.pythonhosted.org/packages/37/d6/246513fbf9fa174af531f28412297dd05241d97a75911ac8febefa1a53c6/psutil-7.2.2-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1a571f2330c966c62aeda00dd24620425d4b0cc86881c89861fbc04549e5dc63", size = 181476, upload-time = "2026-01-28T18:15:01.884Z" },
|
| 2743 |
+
{ url = "https://files.pythonhosted.org/packages/b8/b5/9182c9af3836cca61696dabe4fd1304e17bc56cb62f17439e1154f225dd3/psutil-7.2.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:917e891983ca3c1887b4ef36447b1e0873e70c933afc831c6b6da078ba474312", size = 184062, upload-time = "2026-01-28T18:15:04.436Z" },
|
| 2744 |
+
{ url = "https://files.pythonhosted.org/packages/16/ba/0756dca669f5a9300d0cbcbfae9a4c30e446dfc7440ffe43ded5724bfd93/psutil-7.2.2-cp313-cp313t-win_amd64.whl", hash = "sha256:ab486563df44c17f5173621c7b198955bd6b613fb87c71c161f827d3fb149a9b", size = 139893, upload-time = "2026-01-28T18:15:06.378Z" },
|
| 2745 |
+
{ url = "https://files.pythonhosted.org/packages/1c/61/8fa0e26f33623b49949346de05ec1ddaad02ed8ba64af45f40a147dbfa97/psutil-7.2.2-cp313-cp313t-win_arm64.whl", hash = "sha256:ae0aefdd8796a7737eccea863f80f81e468a1e4cf14d926bd9b6f5f2d5f90ca9", size = 135589, upload-time = "2026-01-28T18:15:08.03Z" },
|
| 2746 |
+
{ url = "https://files.pythonhosted.org/packages/81/69/ef179ab5ca24f32acc1dac0c247fd6a13b501fd5534dbae0e05a1c48b66d/psutil-7.2.2-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:eed63d3b4d62449571547b60578c5b2c4bcccc5387148db46e0c2313dad0ee00", size = 130664, upload-time = "2026-01-28T18:15:09.469Z" },
|
| 2747 |
+
{ url = "https://files.pythonhosted.org/packages/7b/64/665248b557a236d3fa9efc378d60d95ef56dd0a490c2cd37dafc7660d4a9/psutil-7.2.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7b6d09433a10592ce39b13d7be5a54fbac1d1228ed29abc880fb23df7cb694c9", size = 131087, upload-time = "2026-01-28T18:15:11.724Z" },
|
| 2748 |
+
{ url = "https://files.pythonhosted.org/packages/d5/2e/e6782744700d6759ebce3043dcfa661fb61e2fb752b91cdeae9af12c2178/psutil-7.2.2-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1fa4ecf83bcdf6e6c8f4449aff98eefb5d0604bf88cb883d7da3d8d2d909546a", size = 182383, upload-time = "2026-01-28T18:15:13.445Z" },
|
| 2749 |
+
{ url = "https://files.pythonhosted.org/packages/57/49/0a41cefd10cb7505cdc04dab3eacf24c0c2cb158a998b8c7b1d27ee2c1f5/psutil-7.2.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e452c464a02e7dc7822a05d25db4cde564444a67e58539a00f929c51eddda0cf", size = 185210, upload-time = "2026-01-28T18:15:16.002Z" },
|
| 2750 |
+
{ url = "https://files.pythonhosted.org/packages/dd/2c/ff9bfb544f283ba5f83ba725a3c5fec6d6b10b8f27ac1dc641c473dc390d/psutil-7.2.2-cp314-cp314t-win_amd64.whl", hash = "sha256:c7663d4e37f13e884d13994247449e9f8f574bc4655d509c3b95e9ec9e2b9dc1", size = 141228, upload-time = "2026-01-28T18:15:18.385Z" },
|
| 2751 |
+
{ url = "https://files.pythonhosted.org/packages/f2/fc/f8d9c31db14fcec13748d373e668bc3bed94d9077dbc17fb0eebc073233c/psutil-7.2.2-cp314-cp314t-win_arm64.whl", hash = "sha256:11fe5a4f613759764e79c65cf11ebdf26e33d6dd34336f8a337aa2996d71c841", size = 136284, upload-time = "2026-01-28T18:15:19.912Z" },
|
| 2752 |
+
{ url = "https://files.pythonhosted.org/packages/e7/36/5ee6e05c9bd427237b11b3937ad82bb8ad2752d72c6969314590dd0c2f6e/psutil-7.2.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ed0cace939114f62738d808fdcecd4c869222507e266e574799e9c0faa17d486", size = 129090, upload-time = "2026-01-28T18:15:22.168Z" },
|
| 2753 |
+
{ url = "https://files.pythonhosted.org/packages/80/c4/f5af4c1ca8c1eeb2e92ccca14ce8effdeec651d5ab6053c589b074eda6e1/psutil-7.2.2-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:1a7b04c10f32cc88ab39cbf606e117fd74721c831c98a27dc04578deb0c16979", size = 129859, upload-time = "2026-01-28T18:15:23.795Z" },
|
| 2754 |
+
{ url = "https://files.pythonhosted.org/packages/b5/70/5d8df3b09e25bce090399cf48e452d25c935ab72dad19406c77f4e828045/psutil-7.2.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:076a2d2f923fd4821644f5ba89f059523da90dc9014e85f8e45a5774ca5bc6f9", size = 155560, upload-time = "2026-01-28T18:15:25.976Z" },
|
| 2755 |
+
{ url = "https://files.pythonhosted.org/packages/63/65/37648c0c158dc222aba51c089eb3bdfa238e621674dc42d48706e639204f/psutil-7.2.2-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b0726cecd84f9474419d67252add4ac0cd9811b04d61123054b9fb6f57df6e9e", size = 156997, upload-time = "2026-01-28T18:15:27.794Z" },
|
| 2756 |
+
{ url = "https://files.pythonhosted.org/packages/8e/13/125093eadae863ce03c6ffdbae9929430d116a246ef69866dad94da3bfbc/psutil-7.2.2-cp36-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:fd04ef36b4a6d599bbdb225dd1d3f51e00105f6d48a28f006da7f9822f2606d8", size = 148972, upload-time = "2026-01-28T18:15:29.342Z" },
|
| 2757 |
+
{ url = "https://files.pythonhosted.org/packages/04/78/0acd37ca84ce3ddffaa92ef0f571e073faa6d8ff1f0559ab1272188ea2be/psutil-7.2.2-cp36-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b58fabe35e80b264a4e3bb23e6b96f9e45a3df7fb7eed419ac0e5947c61e47cc", size = 148266, upload-time = "2026-01-28T18:15:31.597Z" },
|
| 2758 |
+
{ url = "https://files.pythonhosted.org/packages/b4/90/e2159492b5426be0c1fef7acba807a03511f97c5f86b3caeda6ad92351a7/psutil-7.2.2-cp37-abi3-win_amd64.whl", hash = "sha256:eb7e81434c8d223ec4a219b5fc1c47d0417b12be7ea866e24fb5ad6e84b3d988", size = 137737, upload-time = "2026-01-28T18:15:33.849Z" },
|
| 2759 |
+
{ url = "https://files.pythonhosted.org/packages/8c/c7/7bb2e321574b10df20cbde462a94e2b71d05f9bbda251ef27d104668306a/psutil-7.2.2-cp37-abi3-win_arm64.whl", hash = "sha256:8c233660f575a5a89e6d4cb65d9f938126312bca76d8fe087b947b3a1aaac9ee", size = 134617, upload-time = "2026-01-28T18:15:36.514Z" },
|
| 2760 |
+
]
|
| 2761 |
+
|
| 2762 |
[[package]]
|
| 2763 |
name = "pyarrow"
|
| 2764 |
version = "24.0.0"
|
|
|
|
| 3079 |
{ url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" },
|
| 3080 |
]
|
| 3081 |
|
| 3082 |
+
[[package]]
|
| 3083 |
+
name = "regex"
|
| 3084 |
+
version = "2026.5.9"
|
| 3085 |
+
source = { registry = "https://pypi.org/simple" }
|
| 3086 |
+
sdist = { url = "https://files.pythonhosted.org/packages/dc/0e/49aee608ad09480e7fd276898c99ec6192985fa331abe4eb3a986094490b/regex-2026.5.9.tar.gz", hash = "sha256:a8234aa23ec39894bfe4a3f1b85616a7032481964a13ac6fc9f10de4f6fca270", size = 416074, upload-time = "2026-05-09T23:15:19.37Z" }
|
| 3087 |
+
wheels = [
|
| 3088 |
+
{ url = "https://files.pythonhosted.org/packages/fe/ed/0ad2c8edf634918eb4484365d3819fa7bd7f58daf807fe7fb21812c316e5/regex-2026.5.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a9e1328e17c84c1a5d22ec9f785ecef4a967fab9a42b6a8dc3bcbebd0a0c9e44", size = 489438, upload-time = "2026-05-09T23:11:29.374Z" },
|
| 3089 |
+
{ url = "https://files.pythonhosted.org/packages/89/a9/4ed972ad263963b860b7c3e86e0e1bcc791def47b43b8c8efe57e710f139/regex-2026.5.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bfe1ce50cbfb569d74e1e4337da6468961f31dbea55fd85aa5de59c0947a805a", size = 291270, upload-time = "2026-05-09T23:11:33.254Z" },
|
| 3090 |
+
{ url = "https://files.pythonhosted.org/packages/16/81/075930d9fa28c4ea1f53398dd015ee7c882f623539759113cda1257f4b82/regex-2026.5.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:15ee42209947f4ca045412eae98416317238163618ace2a8e54f99586a466733", size = 289198, upload-time = "2026-05-09T23:11:35.769Z" },
|
| 3091 |
+
{ url = "https://files.pythonhosted.org/packages/d4/c8/5cdfbf0b5dc6599e1b6131eff43262e5275d4ec3469ce10216061659aadb/regex-2026.5.9-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4bb445ff3f725f59df8f6014edb547ee928ec7023a774f6a39a3f953038cbb2", size = 784765, upload-time = "2026-05-09T23:11:37.689Z" },
|
| 3092 |
+
{ url = "https://files.pythonhosted.org/packages/cd/ca/ae5fd6edc59b7f84b904b31d6ec39a860cbcecd10f64bd5a062ca83a4864/regex-2026.5.9-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:446ddd671e43ab535810c4b21cff7104945c701d4a14d1e6d1cd6f4e445a8bea", size = 852115, upload-time = "2026-05-09T23:11:39.973Z" },
|
| 3093 |
+
{ url = "https://files.pythonhosted.org/packages/f6/ce/a91cf555afb51f3b74a182e24ba073b91ea7bb64592fc4b315c111bb19fd/regex-2026.5.9-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7b92817338591505f282cf3864c145244b1edcf5381d237038df955001091538", size = 899503, upload-time = "2026-05-09T23:11:42.48Z" },
|
| 3094 |
+
{ url = "https://files.pythonhosted.org/packages/55/7f/725a0a2b245a4cf0c4bab29d0e97c74285d94136a65d1b55a6459a583502/regex-2026.5.9-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6b8a143aca6c39b446ea8092cde25cc8fe9304d4f5fecfbc1a9dbb0282703c2", size = 794093, upload-time = "2026-05-09T23:11:44.681Z" },
|
| 3095 |
+
{ url = "https://files.pythonhosted.org/packages/e3/2a/996efbd59ce6b5d4a09e3af6180ceb62af171f4a9a6fb557d2f0ae0d462b/regex-2026.5.9-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0f03aa6898aaaac4592479821df16e68e8d0e29e903e65d8f2dfb2f19028a989", size = 786234, upload-time = "2026-05-09T23:11:46.882Z" },
|
| 3096 |
+
{ url = "https://files.pythonhosted.org/packages/4b/0a/8731e8b8806174c9cdd5903f80a14990331c1f42fc4209b540952e9e010d/regex-2026.5.9-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ed457d8e98ae812ed7732bef7bf78de78e834eae0372a74e23ca90ef21d910f9", size = 769895, upload-time = "2026-05-09T23:11:49.324Z" },
|
| 3097 |
+
{ url = "https://files.pythonhosted.org/packages/9a/0b/932473194bd563f342a412ae2ffbbd6da608306a2bc4e99249a41c2b0b92/regex-2026.5.9-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:71b61c5bfe1c806332defc42ad6c780b3c55f661986d7f40283a3a88274b4c00", size = 774991, upload-time = "2026-05-09T23:11:51.261Z" },
|
| 3098 |
+
{ url = "https://files.pythonhosted.org/packages/98/80/9523d196010031df25f7177ee0a467efbee436324038e5d99def17a57515/regex-2026.5.9-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:3b1e39888c5e0c7d92cea4fc777396c4a90363b05de75d02eb459a4752200808", size = 848790, upload-time = "2026-05-09T23:11:53.232Z" },
|
| 3099 |
+
{ url = "https://files.pythonhosted.org/packages/3c/07/56987b35e89edf47e4a38cf2845aeee476bfa688a6bdbd3e820cda461dc1/regex-2026.5.9-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:6ba42b2e7e7f46cf68cc6a5ca36fa07959f9bbd9c6bdcc47b6ee76549a590248", size = 757679, upload-time = "2026-05-09T23:11:55.82Z" },
|
| 3100 |
+
{ url = "https://files.pythonhosted.org/packages/04/2a/ff713fff0c566507c06a4ce2dc0ae8e7eeebc88811a95fc81cf1e7d534dd/regex-2026.5.9-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:c010eb8caca74bdb40c07498d7ece26b4428fd3f04aa8a72c9ac6f79e8faaac6", size = 837116, upload-time = "2026-05-09T23:11:57.934Z" },
|
| 3101 |
+
{ url = "https://files.pythonhosted.org/packages/77/90/df6d982b03e3614785c6937ba51b57f6733d97d2ee1c9bc7531dbfab3a54/regex-2026.5.9-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:a6a563446a41adc451393dc6b8e6ad87979efaee3c8738690a8d1b08ebead1b4", size = 782081, upload-time = "2026-05-09T23:11:59.607Z" },
|
| 3102 |
+
{ url = "https://files.pythonhosted.org/packages/c7/8a/4e88a5f7c3e98489aac4dd23142723d907b2a595b4a6abcbacabefeded09/regex-2026.5.9-cp310-cp310-win32.whl", hash = "sha256:954cc214c04663ee6d266fc61739cad83054683048de65c5bd1d640ad28098ac", size = 266247, upload-time = "2026-05-09T23:12:01.116Z" },
|
| 3103 |
+
{ url = "https://files.pythonhosted.org/packages/6a/40/4b224cb0582b2dca1786726e6cdabe26abbf757d7f6718332f186da155d2/regex-2026.5.9-cp310-cp310-win_amd64.whl", hash = "sha256:b310768746dd314ea6e2ff4cc89ef215426813396ff4e94ee8e6f7096c8b6e03", size = 278416, upload-time = "2026-05-09T23:12:03.2Z" },
|
| 3104 |
+
{ url = "https://files.pythonhosted.org/packages/12/4d/014fbe803204cab0947ee428f09f658a29632053dde1d3c6176bb4f0fd4c/regex-2026.5.9-cp310-cp310-win_arm64.whl", hash = "sha256:19c16ceb4a267a8789e25733e583983eeab9f0f8664e66b0bd1c5d21f14c2d4b", size = 270413, upload-time = "2026-05-09T23:12:04.649Z" },
|
| 3105 |
+
{ url = "https://files.pythonhosted.org/packages/c2/dc/c1f2df4027e82fc54b5a473e4b250f5139faca49a0fbe29a48668d228f34/regex-2026.5.9-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ccf5249114cc3e772ecdd88a98a86eca0fd74c61ce32a94743758c083fc05d48", size = 489445, upload-time = "2026-05-09T23:12:06.111Z" },
|
| 3106 |
+
{ url = "https://files.pythonhosted.org/packages/03/d2/59f01110660081cce9c0bc30ebd0b5ee250dacf658e3248ed92f01e0e8ee/regex-2026.5.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46f1326ca6e65b0879d23ca302c0f2415aad42ff0309b9c818e7949fe19a41d8", size = 291271, upload-time = "2026-05-09T23:12:07.731Z" },
|
| 3107 |
+
{ url = "https://files.pythonhosted.org/packages/58/b6/14b2c84ff90ddb370c81d27503f4a0fcf071496416f4855f6cc8c5d81c35/regex-2026.5.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ef31cbfe458e21c6122ba8150ff060e0c7789ed0d26eb423f25472584920b555", size = 289212, upload-time = "2026-05-09T23:12:09.266Z" },
|
| 3108 |
+
{ url = "https://files.pythonhosted.org/packages/03/d0/4db86529117320de0c84afd90e70bb47434625875e34fcef9d8c127c5b16/regex-2026.5.9-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:992604d02e6d9c6d786c24a706a71ecffe1020fc1ef264044474cd81fa2c3919", size = 792310, upload-time = "2026-05-09T23:12:11.416Z" },
|
| 3109 |
+
{ url = "https://files.pythonhosted.org/packages/07/78/fe4800cd322f862ecffd2d553409b20d80650e5ed71b9d178f853d020b82/regex-2026.5.9-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c9411dd64ca95477225734a93dfc8583b51916b8d5942f99d6cac21e09965451", size = 861721, upload-time = "2026-05-09T23:12:13.681Z" },
|
| 3110 |
+
{ url = "https://files.pythonhosted.org/packages/b5/d0/b3618a895dd8feb897c61bb2954edd265e1767d82a01d53065d5871127a3/regex-2026.5.9-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3dd4a3ff360dfb836fecdb93a4598f9d6e2ac81e3e397125145c6221bf58cf4c", size = 906460, upload-time = "2026-05-09T23:12:15.443Z" },
|
| 3111 |
+
{ url = "https://files.pythonhosted.org/packages/33/6f/1481597e859ef19508b345eec4afd1416ed6e6b459c75a64026ef193aecf/regex-2026.5.9-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2a661a7d270a61f7cf460caee8b9fa2d5ef9e5c681234bcb9e0fe14f488e7dfc", size = 799843, upload-time = "2026-05-09T23:12:16.892Z" },
|
| 3112 |
+
{ url = "https://files.pythonhosted.org/packages/73/59/955734c803f59108deccba3597ae440c76b62a652733c0006e6243758420/regex-2026.5.9-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f079e50a0d3cc3cd5091fa9ff45869a2e6b2cd35895731edafb0327901a8d86d", size = 773610, upload-time = "2026-05-09T23:12:19.127Z" },
|
| 3113 |
+
{ url = "https://files.pythonhosted.org/packages/68/8f/70c04a236d651c81881dac42ef8538bddda6121434509d0a22d9e601503b/regex-2026.5.9-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4ebe8f0b5ec5a5024dc4a4c59f444c4e9afc5f2abdbb8962065b75d27fb971f9", size = 781645, upload-time = "2026-05-09T23:12:20.806Z" },
|
| 3114 |
+
{ url = "https://files.pythonhosted.org/packages/1d/96/05c7434d88185e5d27fe54aeb74df86bd77cd79f52f0b4eae54faa8fea70/regex-2026.5.9-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:97cf3bc1b7d7d2306772ec07366c80d9df00ff79e79cea32898883a646d2fae2", size = 854473, upload-time = "2026-05-09T23:12:22.465Z" },
|
| 3115 |
+
{ url = "https://files.pythonhosted.org/packages/4e/c1/6e3d8202d981f3117004bf341ee74893ba4ba8a9fbaf4b94615846550a08/regex-2026.5.9-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:0f9eede6a5cbdc02d4978090186390936e1776a7d1359b21e41014c609880bcf", size = 763311, upload-time = "2026-05-09T23:12:24.351Z" },
|
| 3116 |
+
{ url = "https://files.pythonhosted.org/packages/93/c7/e7737f1526b3fb32bd4c337fd6c71c3ebb5c8296fc34d11197e0955d2e35/regex-2026.5.9-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:01f0f5f55f4b64dacec85dc116d3c05fd23ad3ff037bbc73a2085775953c2611", size = 844593, upload-time = "2026-05-09T23:12:26.341Z" },
|
| 3117 |
+
{ url = "https://files.pythonhosted.org/packages/a5/27/0daffb1a535bb39f422c3d200f4ab023c71110ad66a32b366bee708baba0/regex-2026.5.9-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1268eddd8486dc561d08eee1156e40aa3a8fe10f4bdec8fa653b455fcbffd12c", size = 789167, upload-time = "2026-05-09T23:12:27.975Z" },
|
| 3118 |
+
{ url = "https://files.pythonhosted.org/packages/ce/fc/294fe4fac4f2ed67207b17471815870c1c45b3a489e08e0ac96daea16ef6/regex-2026.5.9-cp311-cp311-win32.whl", hash = "sha256:8676474c07469d6f33dd1085ca2cd45f65785f32518f2b20e36d9953ca07f994", size = 266249, upload-time = "2026-05-09T23:12:30.141Z" },
|
| 3119 |
+
{ url = "https://files.pythonhosted.org/packages/d0/b0/8dce459f6245bcf8f6e9f23ac9569f1a0f15c131cc0745e82b43226204cf/regex-2026.5.9-cp311-cp311-win_amd64.whl", hash = "sha256:246de9d60aa3f8538b519834dd95cbf276ea263d6a7bd5a3666dc3fa0230505b", size = 278423, upload-time = "2026-05-09T23:12:31.676Z" },
|
| 3120 |
+
{ url = "https://files.pythonhosted.org/packages/db/8d/f9aeff6ad63a3ef720386f2907e6d34a35a510a6e498ebad28b0fb3f6ab6/regex-2026.5.9-cp311-cp311-win_arm64.whl", hash = "sha256:d726ca3f0d76969bf1e8e477d160d3d666bbf999f6860bd314889e5345782046", size = 270420, upload-time = "2026-05-09T23:12:33.194Z" },
|
| 3121 |
+
{ url = "https://files.pythonhosted.org/packages/50/9b/6550044bc44e17c84d312c031c2ec42fbdb6a4ec4e29093be3a172d08772/regex-2026.5.9-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:57eeeb05db7979413dec5438f2db21d7ecbba787cde7a711df1a6f6df672aa06", size = 490451, upload-time = "2026-05-09T23:12:34.72Z" },
|
| 3122 |
+
{ url = "https://files.pythonhosted.org/packages/1e/95/fc7ba4303b5a0f92446a12ee6778ef2c6c799233f5060042a31bf390cfe9/regex-2026.5.9-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:398c521292f4c7fb807001dcd54694d3a1fcafc179a36ad9cc56f98df85930b6", size = 292112, upload-time = "2026-05-09T23:12:36.285Z" },
|
| 3123 |
+
{ url = "https://files.pythonhosted.org/packages/54/4b/ee27938d1b2c443e89a9a10e00d2d19aa5ee300cd3d61140644e93bb083e/regex-2026.5.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f7a7c26137296beba7784de6eba69c6a93a63ccebc385e4962fe67e267a91225", size = 289599, upload-time = "2026-05-09T23:12:38.089Z" },
|
| 3124 |
+
{ url = "https://files.pythonhosted.org/packages/d8/dd/ba103dc19614e25f3880800ca67ce093d6e21b325d72b8383c7bf906e9fa/regex-2026.5.9-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6441cc660d76107934a09c22167200839a0e89604a6297f78a974e66e931d2c0", size = 796732, upload-time = "2026-05-09T23:12:40.062Z" },
|
| 3125 |
+
{ url = "https://files.pythonhosted.org/packages/cf/e7/f035b4fd858b050b0080bf302968dc0f59ba34e391872d54936758e6844e/regex-2026.5.9-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:91328f1c23d47595ca3ef0a7557fa129c5a23404b775c770697d2f35b33e0107", size = 865440, upload-time = "2026-05-09T23:12:42.059Z" },
|
| 3126 |
+
{ url = "https://files.pythonhosted.org/packages/0a/51/8cd301ecc899aea28124357f729f4272f44de7806fc7ca02490bfbe253e8/regex-2026.5.9-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:93a7860539414dddaefba2b40f8771765ae17949d4c7182b876ce429e11a8309", size = 912329, upload-time = "2026-05-09T23:12:44.373Z" },
|
| 3127 |
+
{ url = "https://files.pythonhosted.org/packages/cc/1e/3fbe2fa1e8cebd62f3bb7d3321cff1640aca2e240b51d9bd624aad949260/regex-2026.5.9-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dd2810d22146b6d838acc5ec15602cb6b47920aa4e33015df3868eedfd20bab8", size = 801239, upload-time = "2026-05-09T23:12:46.268Z" },
|
| 3128 |
+
{ url = "https://files.pythonhosted.org/packages/17/2f/6f6008682bf2cf98040a0d3153a8e557b6ab728d7713d045cee4ce544ab8/regex-2026.5.9-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:daff2bdbaf1d23e52fdff7c0b7bc2048b68f978df6a4d107ac981f94caef2e66", size = 777054, upload-time = "2026-05-09T23:12:48.051Z" },
|
| 3129 |
+
{ url = "https://files.pythonhosted.org/packages/19/2b/eee0d20a6842ba04df4b8847a920b57ef56853f14ef85405473e586b605a/regex-2026.5.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4eeb011098fcb77af513dcef521a3dbecbf8849b1e38940759d293b7a93f5026", size = 785098, upload-time = "2026-05-09T23:12:49.851Z" },
|
| 3130 |
+
{ url = "https://files.pythonhosted.org/packages/4a/98/6fc1e6410feefb92159edaed5041992bfe390e8d26c721865434acbca558/regex-2026.5.9-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:ea9c8ecfa1b73c73b626534d6626e5340d429630943672b8480724f44e84b962", size = 860095, upload-time = "2026-05-09T23:12:51.666Z" },
|
| 3131 |
+
{ url = "https://files.pythonhosted.org/packages/18/a3/bd855e0f2cb1a978ecf6fa6bb69632dd9c3f6ea3b81cde62fde14c9daec7/regex-2026.5.9-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:cd2846168eb9ee3c513902bc8225409cb1caab31d04728b145171fa1625d9621", size = 765762, upload-time = "2026-05-09T23:12:53.413Z" },
|
| 3132 |
+
{ url = "https://files.pythonhosted.org/packages/dc/66/0ae8c092e60b14c79d24f8e0b7f0aea5bfbffdcab00b5483d13404d3c3a5/regex-2026.5.9-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:39617fb0cde9c0e6306dc70e3bfc096f3da793219879f7ae7aa341a69fbdcf6d", size = 852100, upload-time = "2026-05-09T23:12:55.256Z" },
|
| 3133 |
+
{ url = "https://files.pythonhosted.org/packages/21/de/8dfde60fc1b21c946a893ba273403b72617edb261370cb1087099a83f088/regex-2026.5.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fd03c4f0e33280d15cae17159b899245d6b7c53d21def19b263b39655061f5ce", size = 789479, upload-time = "2026-05-09T23:12:57.573Z" },
|
| 3134 |
+
{ url = "https://files.pythonhosted.org/packages/c3/1c/bdcc98f9a4af4fdd166c74941174619ccff4726d3ce32faa8e9a2ecd38dd/regex-2026.5.9-cp312-cp312-win32.whl", hash = "sha256:164eba9b755ea6f244b0d881196fbc1fac09714e9782c9e2732b813142033c8e", size = 266699, upload-time = "2026-05-09T23:12:59.14Z" },
|
| 3135 |
+
{ url = "https://files.pythonhosted.org/packages/78/87/240d36864f9e48ace85f72e79ced97ceb7f27ce87739a947dcb834b4e6bc/regex-2026.5.9-cp312-cp312-win_amd64.whl", hash = "sha256:86f40a5d6444db30a125c9c9177e6b25dad981cbc37451fd838f145e6edac92e", size = 277783, upload-time = "2026-05-09T23:13:00.789Z" },
|
| 3136 |
+
{ url = "https://files.pythonhosted.org/packages/4f/b5/7b30f312b0669dff5beebe5b0989dc2d1a312b1a44fab852199c387a5b96/regex-2026.5.9-cp312-cp312-win_arm64.whl", hash = "sha256:96f5f58b54a063d7ea9dca08e1cf57bfe10499c4d579ee672da284f57f5f0070", size = 270513, upload-time = "2026-05-09T23:13:02.426Z" },
|
| 3137 |
+
{ url = "https://files.pythonhosted.org/packages/aa/da/797e91ecec6f84135da778ddce78c20e0af5d2a15c26f87a81bc3eadb6db/regex-2026.5.9-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d626b84406444b165fc0ba981604edea39f0588ff1f92baa23fe50799ea9afdb", size = 490303, upload-time = "2026-05-09T23:13:04.382Z" },
|
| 3138 |
+
{ url = "https://files.pythonhosted.org/packages/44/da/bf30abaaa737b58f4a4b8c4a03659e02fd92092c822e0197ed9e0daab917/regex-2026.5.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d7bdc0ab8f3dd7e1b4f9ab88634e13374669db86bb3c72e8292f07ae313f539f", size = 292019, upload-time = "2026-05-09T23:13:06.022Z" },
|
| 3139 |
+
{ url = "https://files.pythonhosted.org/packages/2d/e7/d0eaf5713828417b9e5648cf81fa9bacd4961f6ab98c380c2034f8716e35/regex-2026.5.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a8820737949116ffff55fe18f9fc644530063ba6ebfcb8314239416e78f1347c", size = 289468, upload-time = "2026-05-09T23:13:08.214Z" },
|
| 3140 |
+
{ url = "https://files.pythonhosted.org/packages/d3/9b/b3fdd62b003baa1a9b593cd8c8699c9651c2e80cc21a5c715707983c42d7/regex-2026.5.9-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:aa0fbdbac82cb3e4450d0ccde7d7a35607f4cb2dd9fba4b8b69bfaf8c9fa6aed", size = 796749, upload-time = "2026-05-09T23:13:10.573Z" },
|
| 3141 |
+
{ url = "https://files.pythonhosted.org/packages/d4/30/66ab84588765f5b4b271a9ca09ef7ce2b87caa95176ec3d2ad65d7bc4902/regex-2026.5.9-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:57e8915c7986aa33d25e4d3629cef711cd2863f2961b10409f0c04cb8b7d9020", size = 865445, upload-time = "2026-05-09T23:13:12.523Z" },
|
| 3142 |
+
{ url = "https://files.pythonhosted.org/packages/1a/89/f05169e8588aac365f35ffc7f3bc3184f095ef4cfded7cfaa3c7fd5dbd89/regex-2026.5.9-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:508f56a89ba9cb26e4168cbc37dbd60a28d82430a9e18ad1d25fe0883c314ca2", size = 912322, upload-time = "2026-05-09T23:13:14.281Z" },
|
| 3143 |
+
{ url = "https://files.pythonhosted.org/packages/30/e1/c93444052cf41581f3c884ab3fb5823daf0992f11cd4388d4275ca610558/regex-2026.5.9-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b6d189041f15691cfa2b6c4290448ec221244d225b3f5fe9e7771b34ffcdf6e2", size = 801269, upload-time = "2026-05-09T23:13:16.569Z" },
|
| 3144 |
+
{ url = "https://files.pythonhosted.org/packages/50/fe/0cf96b882f540e62e8b9956599798203d599c44cf4c77917ca27400ff69b/regex-2026.5.9-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e82db382b44d0111b22601c509c89f64434816c9e0eef9d1989cda8cc6ff1c04", size = 777085, upload-time = "2026-05-09T23:13:18.675Z" },
|
| 3145 |
+
{ url = "https://files.pythonhosted.org/packages/23/5c/d78d4924e7fc875557b9e9b768423925fdfaac5549d06da7810019a9bd26/regex-2026.5.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2acfb48634f64996b57f90f39afa692ff362162722581921fe92239a59960f3c", size = 785153, upload-time = "2026-05-09T23:13:20.525Z" },
|
| 3146 |
+
{ url = "https://files.pythonhosted.org/packages/bf/e0/5214774090e7b4524dcea3e3c4aa74141d43043f8beb49c1599db1c8b53a/regex-2026.5.9-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:d29eebfc9525db68cad3c97eedd7f754fa265aa5cd0cf4f863b2421e1b48fc9f", size = 860164, upload-time = "2026-05-09T23:13:22.263Z" },
|
| 3147 |
+
{ url = "https://files.pythonhosted.org/packages/6e/e1/4a57a83350319b1271f0d7a249b8672513ed928b237a741631270de6caea/regex-2026.5.9-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:debb893095e944091c16e641a6e33c1b0f4cb61ab945ec5afbf53ce7068834d8", size = 765731, upload-time = "2026-05-09T23:13:24.277Z" },
|
| 3148 |
+
{ url = "https://files.pythonhosted.org/packages/12/f4/499e74a20c156fc75836ee04a72a38d1a063978f600937f9760467beb1b0/regex-2026.5.9-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:d659eee77986549c9ea45b861c7567e44d6287c3dc9a4565478853f7b9fe2ff6", size = 852062, upload-time = "2026-05-09T23:13:26.125Z" },
|
| 3149 |
+
{ url = "https://files.pythonhosted.org/packages/5b/92/7eebc0d0a01e78629695f342ba17e0deaff8fb45e79cc0d7b98287da6e3e/regex-2026.5.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2efa205e6d98b24d1f3ab395c11aa15cdf10935bca283d0285e0499c284fba21", size = 789577, upload-time = "2026-05-09T23:13:27.814Z" },
|
| 3150 |
+
{ url = "https://files.pythonhosted.org/packages/05/a4/018e71f7d2ad48c1ebe6d3ae0026f9b7cb4802fd15c7cc02fdf724355102/regex-2026.5.9-cp313-cp313-win32.whl", hash = "sha256:f3844f134e834076677dd369976e9f5068679fcb8e50102fdf6b7ac96a3ec127", size = 266691, upload-time = "2026-05-09T23:13:29.549Z" },
|
| 3151 |
+
{ url = "https://files.pythonhosted.org/packages/e6/1d/861a93719fb9ee7dbfc3761b3797b7a3e112a5d42c6129459d2d741be9b5/regex-2026.5.9-cp313-cp313-win_amd64.whl", hash = "sha256:3527bb4942d2c14552155406cdedd906567456821848aed1cb4933a391bf5eca", size = 277747, upload-time = "2026-05-09T23:13:31.859Z" },
|
| 3152 |
+
{ url = "https://files.pythonhosted.org/packages/d9/c6/0a2436ae4da1ba76e51cb98943c6838a9a721faa40ebe2dce07694ae34e3/regex-2026.5.9-cp313-cp313-win_arm64.whl", hash = "sha256:56a33f191f17d8c417f99945ebdc1e691d3af9605d86ec68c7e54a57e3e17af6", size = 270500, upload-time = "2026-05-09T23:13:33.525Z" },
|
| 3153 |
+
{ url = "https://files.pythonhosted.org/packages/e8/e9/d21346f7b60ed58789371358ed66b09d00f832e1bd7c06e55d9da5679882/regex-2026.5.9-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:01f28d868834624c934b8d2e0aa1c8341337e37831f4a012f18a5afcba4cbaf3", size = 494172, upload-time = "2026-05-09T23:13:35.935Z" },
|
| 3154 |
+
{ url = "https://files.pythonhosted.org/packages/c4/43/fd1177a2032037c681baecdb3422ee4e1424aec4e4f470ef47793d325274/regex-2026.5.9-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:48036f6374aaa79eb3b754ec29c61d1c6b1606749d705a13f8854fa2539671f6", size = 293952, upload-time = "2026-05-09T23:13:38.307Z" },
|
| 3155 |
+
{ url = "https://files.pythonhosted.org/packages/f2/7d/9fbf919768368d3f8a4f6c692cf2aa61e482b2b81ec6a298ace4cbf02480/regex-2026.5.9-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b96350aa424e79d4fd6b567b344dcbe2b2d6bfc48dfe7717587e1fa6d43da6ff", size = 292314, upload-time = "2026-05-09T23:13:40.353Z" },
|
| 3156 |
+
{ url = "https://files.pythonhosted.org/packages/e2/6c/e41bfeecb589716843e7c4df09ba46ff2a42961457afece19059d85caeef/regex-2026.5.9-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8f3af7a4903c5c04a11a196a5aa75cdd7dd3f8508132f9fb3259d9f5908e3b88", size = 811681, upload-time = "2026-05-09T23:13:42.543Z" },
|
| 3157 |
+
{ url = "https://files.pythonhosted.org/packages/87/83/a5c1c525fba0aa656e88ad0face0b1829788ef4c2fb6b26df58aa1151b84/regex-2026.5.9-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7e87577720152d2caae19fe2baaf1f8d5ca12091e9e229f03915c37d1e4b9178", size = 871135, upload-time = "2026-05-09T23:13:44.326Z" },
|
| 3158 |
+
{ url = "https://files.pythonhosted.org/packages/18/d4/80882e799e440dd878b0979cbebf8fa4d54624a332c83037c7a701649e3f/regex-2026.5.9-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:c8b9b9d294cfea3cd19c718ade7cc93492b2c4991abd9a68d0b3477ae6d8e100", size = 917265, upload-time = "2026-05-09T23:13:47.295Z" },
|
| 3159 |
+
{ url = "https://files.pythonhosted.org/packages/ae/ff/8db60211e2286e396aad7dc7725356c502bff0901ea05bd6cdc2e1a042b9/regex-2026.5.9-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:728d8bfd28a8845c8b6bc5dc7ce010453d206396786c0765c2740cb65f37791e", size = 816311, upload-time = "2026-05-09T23:13:49.885Z" },
|
| 3160 |
+
{ url = "https://files.pythonhosted.org/packages/4c/47/742ef579c61730f8d268e5cf1f9ce0e37e2ea041ad0f5644724f2378e463/regex-2026.5.9-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:7e30b874d341fac767d7df5a0870540541c2c054b80cfaac116e8d367a8a7ff2", size = 785498, upload-time = "2026-05-09T23:13:52.25Z" },
|
| 3161 |
+
{ url = "https://files.pythonhosted.org/packages/7f/ab/cb0999802dcb0fb95b1ab005e8d4163d8afdd67efc2cb6b6630ac13f8cb1/regex-2026.5.9-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:fd190e88a895a8901325fad284a3f74ea52b1da8525b76cc811fa9b1edf0ce2b", size = 801348, upload-time = "2026-05-09T23:13:54.127Z" },
|
| 3162 |
+
{ url = "https://files.pythonhosted.org/packages/7d/62/8ca59a24c55bc34d166eefaf3717bd77772f329fdbf984d86581e0a3571c/regex-2026.5.9-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:8e76e8161ad00694cfce6767d5dea860c6391ac5b83e5c3a39661e696f11fc7e", size = 866493, upload-time = "2026-05-09T23:13:56.067Z" },
|
| 3163 |
+
{ url = "https://files.pythonhosted.org/packages/8d/3d/30f2ae62cef3278bb5bb821f467277a55fb73f01032cf85997e15e8289a8/regex-2026.5.9-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:ddda5340e6c01a293027dd46232fa79eaff1b48058ce7a98f572b6445b088041", size = 772811, upload-time = "2026-05-09T23:13:57.867Z" },
|
| 3164 |
+
{ url = "https://files.pythonhosted.org/packages/d8/ae/7d2089bcd78ad0c0161bc684339df50032acb438a7bd3305e7ddb1193cec/regex-2026.5.9-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:205109e96b3cf5adf8f4cd62bedde9487feb282b9497a3535451e5a24cd706a0", size = 856584, upload-time = "2026-05-09T23:13:59.679Z" },
|
| 3165 |
+
{ url = "https://files.pythonhosted.org/packages/a9/29/92ff47f75990131ea4f24ba17819e5a9d141e10819807e09addd73409af6/regex-2026.5.9-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dfbe4579b9f08036aa7d101d1835437a20783574ac66327e6b29b4018a138081", size = 803453, upload-time = "2026-05-09T23:14:01.978Z" },
|
| 3166 |
+
{ url = "https://files.pythonhosted.org/packages/04/99/eff29f1037dcab36702c9ee5d6858cf1ce2336ea8ea2987f64245b99ea5e/regex-2026.5.9-cp313-cp313t-win32.whl", hash = "sha256:ed2c9e8068b614c574d8d30e543d617cf5379b0535d46f97ef00e904745a08b5", size = 269951, upload-time = "2026-05-09T23:14:03.661Z" },
|
| 3167 |
+
{ url = "https://files.pythonhosted.org/packages/0e/9d/8870b8981d27b22cda77bb26a5ac7ebfa9c7d9e0dea195a834a82380e748/regex-2026.5.9-cp313-cp313t-win_amd64.whl", hash = "sha256:b46b0f094dc1d3b90356c85a0bd2c9bafc4a6a190b9d6f8ddd5a033b6e088ed4", size = 281240, upload-time = "2026-05-09T23:14:05.56Z" },
|
| 3168 |
+
{ url = "https://files.pythonhosted.org/packages/72/b1/3379415e8f135c13ac551353397cc4fe97b4978f3cac73c5fcbcded548b8/regex-2026.5.9-cp313-cp313t-win_arm64.whl", hash = "sha256:872acc074bd29ffc9913ecdfedf6ea77502312ca44a4aa0d3779089c6069d8de", size = 272383, upload-time = "2026-05-09T23:14:07.843Z" },
|
| 3169 |
+
{ url = "https://files.pythonhosted.org/packages/13/3e/9c3cd292d8808b3645a2ce517e200179b6d0e903f176300bd8b542e14de5/regex-2026.5.9-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:1bd7587a2948b4085195d5a3374eaf4a425dc3e55784c038175355ecf3bbbf8a", size = 490376, upload-time = "2026-05-09T23:14:09.64Z" },
|
| 3170 |
+
{ url = "https://files.pythonhosted.org/packages/60/70/d43ee8a2ca0a8b68d167f21658b85520ac0574617c7f320367c5047f7556/regex-2026.5.9-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:dea2e88e1cce4522496cce630e11e67b98b7076620bc4336c3f674bc21a375f4", size = 291964, upload-time = "2026-05-09T23:14:11.424Z" },
|
| 3171 |
+
{ url = "https://files.pythonhosted.org/packages/21/91/9d50b433828d8e74196904e168a43abf1e6e88b2a15d47ed742456720c37/regex-2026.5.9-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:2099f7e7ff7b6aa3192312650a56e91cc091e49d50b04e4f6f8b6e28b3b27f1c", size = 289682, upload-time = "2026-05-09T23:14:13.123Z" },
|
| 3172 |
+
{ url = "https://files.pythonhosted.org/packages/3e/d2/b835e3cafbb9d977736912436259ff551d60919f7d7b3d37d46659c63564/regex-2026.5.9-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ecd353045824e4477562a2ac718c25799cdaaa41f7aa925a806a8a3e6848a5b9", size = 796996, upload-time = "2026-05-09T23:14:14.923Z" },
|
| 3173 |
+
{ url = "https://files.pythonhosted.org/packages/2c/a6/9f992d00019166b9de01c546dd4549bc679f2a68df11b877740b0760b7c2/regex-2026.5.9-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:65c8c8c37377794bd5b2f3ebe51919042bf17aec802e23c833d89782ed0c78af", size = 866089, upload-time = "2026-05-09T23:14:17.757Z" },
|
| 3174 |
+
{ url = "https://files.pythonhosted.org/packages/e0/08/4d32af657e049b19cb62b02e46e38fe1518797bfb2203ee93a510b21b0dc/regex-2026.5.9-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5b73ab8afcf66c622db143d1c6fda4e58e4d537ee4f125229ad47b1ab80f34c0", size = 911530, upload-time = "2026-05-09T23:14:20.353Z" },
|
| 3175 |
+
{ url = "https://files.pythonhosted.org/packages/d9/27/2af43dd1dc201d1fecefda64a45f4ad0995855b92724f795a777b402ee69/regex-2026.5.9-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0de5cf193997384ed2ca6f1cd4f78055b255d93d82d5a8cd6ba0d11c10b167e4", size = 800643, upload-time = "2026-05-09T23:14:22.265Z" },
|
| 3176 |
+
{ url = "https://files.pythonhosted.org/packages/a4/dd/23a249047013b5321d4a60c4d2437462086f601b061776a525e5fba2a59f/regex-2026.5.9-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d641a8c9a61618047796d572a39a79b26167b0411d2c3031937b2fe2d081e2cf", size = 777223, upload-time = "2026-05-09T23:14:24.179Z" },
|
| 3177 |
+
{ url = "https://files.pythonhosted.org/packages/94/6a/e85ed9538cd19586d0465076a4578a12e093ce776d15f3f8ce92733a8dd6/regex-2026.5.9-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:24b2355ef5cc9aa5b8f07d17704face1c166fdcc2290fa7bd6e6c925655a8346", size = 785760, upload-time = "2026-05-09T23:14:26.065Z" },
|
| 3178 |
+
{ url = "https://files.pythonhosted.org/packages/2a/c4/f25473209438638e947c55f9156fd8f236f74169229028cc99116380868e/regex-2026.5.9-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:a24852d3c29ad9e47593593d8a247c44ccc3d0548ef12c822d6ed0810affe676", size = 860891, upload-time = "2026-05-09T23:14:28.17Z" },
|
| 3179 |
+
{ url = "https://files.pythonhosted.org/packages/f9/f7/f4f86e3c74419c37370e91f150ae0c2ef7d34b2e0e4cdd5da046a02e4022/regex-2026.5.9-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:916714069da19329ef7de197dcbc77bb3104145c7c2c864dbfbe318f46b88b14", size = 765891, upload-time = "2026-05-09T23:14:30.06Z" },
|
| 3180 |
+
{ url = "https://files.pythonhosted.org/packages/26/70/704d8e13765939146b1cd0ef4e2feb71d7929727d2290f026eed10095955/regex-2026.5.9-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:fa411799ca8da32a8d38d020a88faa5b6f91657d284761352940ecf9f7c3bbdd", size = 851380, upload-time = "2026-05-09T23:14:32.123Z" },
|
| 3181 |
+
{ url = "https://files.pythonhosted.org/packages/26/29/1a13582a8460038edc38e49f64ceb0dd7c60f5caba77571f4bf6601965d9/regex-2026.5.9-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:1e6da47d679b7010ef27556b6e0f99771b744936db1792a10ceac6547ae1503e", size = 789350, upload-time = "2026-05-09T23:14:34.799Z" },
|
| 3182 |
+
{ url = "https://files.pythonhosted.org/packages/73/56/3dcafe34fc72e271d62ad9a291801e88a1457bb251c132f15fcc2e5aad1a/regex-2026.5.9-cp314-cp314-win32.whl", hash = "sha256:98bd73080e8756255137e1bd3f3f00295bbc5aa383c0e0f973920e9134d7c4ad", size = 272130, upload-time = "2026-05-09T23:14:36.729Z" },
|
| 3183 |
+
{ url = "https://files.pythonhosted.org/packages/d0/9c/02eebf0be95efe416c664db7fb8b6b05b7a0b06a7544f2884f2558b0526f/regex-2026.5.9-cp314-cp314-win_amd64.whl", hash = "sha256:ff8d372ac2acdc048d1c19916f27ee61bc5722728458ba6ca5052f2c72d51763", size = 280999, upload-time = "2026-05-09T23:14:39.126Z" },
|
| 3184 |
+
{ url = "https://files.pythonhosted.org/packages/70/5a/1dd1abee76cb7a846a0bcf42fdc87e5720c3c33c24f3e37814310a513d9f/regex-2026.5.9-cp314-cp314-win_arm64.whl", hash = "sha256:e1d93bf647916292e8edcec150c07ddf3dc50179ccaf770c04a7f9e452155372", size = 273500, upload-time = "2026-05-09T23:14:41.059Z" },
|
| 3185 |
+
{ url = "https://files.pythonhosted.org/packages/86/c1/c5f619b0057a7965cb78ec559c1d7a45ce8c99a35bea95483d64959a93d9/regex-2026.5.9-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:83d0ee4a57d1c87cb549e195ec300b8f0ec3a82eba66d835e4e2ed8634fe4499", size = 494269, upload-time = "2026-05-09T23:14:42.869Z" },
|
| 3186 |
+
{ url = "https://files.pythonhosted.org/packages/05/2c/5d01f1aee33de4bbe60c8452945bfc8477ca7c5ae4450f6bfe711036cb36/regex-2026.5.9-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:d3d7eb5c9a7f6df82ed3cfac9beb93882a5cbcb5b8b157b56cb2b3b276574ac1", size = 293954, upload-time = "2026-05-09T23:14:44.822Z" },
|
| 3187 |
+
{ url = "https://files.pythonhosted.org/packages/7a/fe/e8988b2ae2108c6ef71bd4aa8d87fbe257976dd0810e826cd75f701c68b6/regex-2026.5.9-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:075160bf16658e16d35233300b8453aac25de4cbea808d22348b6979668e924d", size = 292405, upload-time = "2026-05-09T23:14:47.211Z" },
|
| 3188 |
+
{ url = "https://files.pythonhosted.org/packages/79/34/d2b0937faa7859263f7f0a3c6b103a1296306be6952dc173d0154e9a2f49/regex-2026.5.9-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:45375819235558a4ff1c4971dc32881f022613abdb180128f5cb4768c1765a1c", size = 811855, upload-time = "2026-05-09T23:14:49.21Z" },
|
| 3189 |
+
{ url = "https://files.pythonhosted.org/packages/80/fe/daf53a47457a8486db66c66c01ceb9c2303eecee3f87197f1e77eb1a736d/regex-2026.5.9-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ead4b163ac30a29574510cd4b3e2e985ac5290c05fc7095557d6a5f403fc31b5", size = 871189, upload-time = "2026-05-09T23:14:51.555Z" },
|
| 3190 |
+
{ url = "https://files.pythonhosted.org/packages/1c/75/058fc4470cbfbf57d800aff1a0022b929a3f9fa553ee10a0cdf2070eb31f/regex-2026.5.9-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8c6e4218fbdfbcd4f6c19efca40930d24a621bf4b48cb76bc6640543bd28ef20", size = 917485, upload-time = "2026-05-09T23:14:53.633Z" },
|
| 3191 |
+
{ url = "https://files.pythonhosted.org/packages/88/e7/179cfda3a28bc843b5c6cfe7f79f23489c791ed95f151083803660878432/regex-2026.5.9-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6351571c8a42b505eb555c0dc47d740d0fb66977dc142919eea6f4325b7c56a0", size = 816369, upload-time = "2026-05-09T23:14:56.198Z" },
|
| 3192 |
+
{ url = "https://files.pythonhosted.org/packages/41/90/6f0cc422071688266d344fca8462d787cba0a2c144acb25721f9a61ec265/regex-2026.5.9-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:002205cafd2a9e78c6290c7d1df277bf3277b3b7a30e0b4bb0dac2e2e3f7cb2d", size = 785869, upload-time = "2026-05-09T23:14:58.602Z" },
|
| 3193 |
+
{ url = "https://files.pythonhosted.org/packages/02/67/a31f1760f09c27b251ef39e9beb541f462cf977381d067faa764c2c0e393/regex-2026.5.9-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8abd33fef90b2a9efac5557d6033ca82d1195ed3a15fea5af15ba7b463c6a63b", size = 801427, upload-time = "2026-05-09T23:15:00.642Z" },
|
| 3194 |
+
{ url = "https://files.pythonhosted.org/packages/e3/c4/1a80654597b6bc1e1ea0494824c31200e8a956abe290afae9b19a166a148/regex-2026.5.9-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:31037c82eccb44b7ea2e9e221d7c01429430e989a1f4b91ea5a855f6017b509a", size = 866482, upload-time = "2026-05-09T23:15:03.384Z" },
|
| 3195 |
+
{ url = "https://files.pythonhosted.org/packages/d1/11/960724e06482c08466ff5611e242e86f80062949cdf6b4b9cc317b9dd93d/regex-2026.5.9-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:5604dfd046dc37eca90250fc3be938b076c8059fa772ac0ed6f499b0f0fb0415", size = 773022, upload-time = "2026-05-09T23:15:05.625Z" },
|
| 3196 |
+
{ url = "https://files.pythonhosted.org/packages/50/a8/a9979c3e7918280e93159ebcab5ef1a65116dd4f3bd6091be0eae4a126e8/regex-2026.5.9-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:0e1b1b4e496afbb24f4a62aba855ee4f88f25578927697b340702e48c9ee6bc2", size = 856642, upload-time = "2026-05-09T23:15:07.966Z" },
|
| 3197 |
+
{ url = "https://files.pythonhosted.org/packages/fe/d4/a9b732f2f0072c0ab12227483abb24fffcb9f73f8a2b203df0a6d0434735/regex-2026.5.9-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:be3372b9df6ddecff6486d37e19095a7b4973137caf5512407a89f4455361f41", size = 803552, upload-time = "2026-05-09T23:15:10.215Z" },
|
| 3198 |
+
{ url = "https://files.pythonhosted.org/packages/d5/fe/1b3113817447a1d4155e4ac76d2e072f42c0bcba2f43fa8a0e756ea2cd91/regex-2026.5.9-cp314-cp314t-win32.whl", hash = "sha256:3ddd90103f9e5c471c49c7852ecc1fe27c7e45eb99e977aefe7caa4e779f4f58", size = 275746, upload-time = "2026-05-09T23:15:12.609Z" },
|
| 3199 |
+
{ url = "https://files.pythonhosted.org/packages/92/73/93d42045302636c91f2e5ef588b65b84b01428f28ec77de256b1dfdfbe5c/regex-2026.5.9-cp314-cp314t-win_amd64.whl", hash = "sha256:ca518ed29c46eecba6010b15f1b9a479314d2de409536e71b6a13aa04e3b8a77", size = 285685, upload-time = "2026-05-09T23:15:15.086Z" },
|
| 3200 |
+
{ url = "https://files.pythonhosted.org/packages/da/80/35b4c33c804a165a7f55289afda3ea9e3eb6d15800341a2d66455c0f1f30/regex-2026.5.9-cp314-cp314t-win_arm64.whl", hash = "sha256:5e41809d2683fcde7d5a8c87a6567ba1fb1ce0de9f31bff578de00a4b2d76daa", size = 275713, upload-time = "2026-05-09T23:15:16.98Z" },
|
| 3201 |
+
]
|
| 3202 |
+
|
| 3203 |
[[package]]
|
| 3204 |
name = "requests"
|
| 3205 |
version = "2.34.2"
|
|
|
|
| 3265 |
{ url = "https://files.pythonhosted.org/packages/2e/a3/0f0b7d78e2f1eb9e8e1afbff1d2bff8d60144aee17aca51c065b516743dd/safehttpx-0.1.7-py3-none-any.whl", hash = "sha256:c4f4a162db6993464d7ca3d7cc4af0ffc6515a606dfd220b9f82c6945d869cde", size = 8959, upload-time = "2025-10-24T18:30:08.733Z" },
|
| 3266 |
]
|
| 3267 |
|
| 3268 |
+
[[package]]
|
| 3269 |
+
name = "safetensors"
|
| 3270 |
+
version = "0.8.0"
|
| 3271 |
+
source = { registry = "https://pypi.org/simple" }
|
| 3272 |
+
sdist = { url = "https://files.pythonhosted.org/packages/45/06/f955dbbb1859e3bd23c8ac6141af5106e7ad5fedec4a3a6e3d60f94b7001/safetensors-0.8.0.tar.gz", hash = "sha256:fabaf3e0f18a6618d9b36560682562157f77c2b71fcffc7b432be2baed9d753d", size = 325846, upload-time = "2026-06-09T07:52:25.563Z" }
|
| 3273 |
+
wheels = [
|
| 3274 |
+
{ url = "https://files.pythonhosted.org/packages/39/a0/f718cda65b05407d228f97602cf60dca269c979867aa5beb25410de26cd3/safetensors-0.8.0-cp310-abi3-macosx_10_12_x86_64.whl", hash = "sha256:c554f85858e05226d3c2828e32395e677434685d6d94594a41643361c5e837f0", size = 473568, upload-time = "2026-06-09T07:52:18.829Z" },
|
| 3275 |
+
{ url = "https://files.pythonhosted.org/packages/f5/b1/fa7c600e7dceae12e9606c7578cbc9ff1e1ed55844883ee5c92205e86226/safetensors-0.8.0-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:c80201d22cbf405b80647a60ada77bba06c8fba2da2743ba1e89cdcc39a81f25", size = 484562, upload-time = "2026-06-09T07:52:17.518Z" },
|
| 3276 |
+
{ url = "https://files.pythonhosted.org/packages/09/7d/65a7de0af421317bb36a067241e4235fff194eed60b961ed6d3f59a3fc60/safetensors-0.8.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a46e5ff292c356d6991e60942ba7f79817682d3a2cef0702136448cb9c4d235", size = 502844, upload-time = "2026-06-09T07:52:07.624Z" },
|
| 3277 |
+
{ url = "https://files.pythonhosted.org/packages/91/4f/3175c9d75634e0e0dda0082794193521035edd7c70a6f212bf33ca06ddf4/safetensors-0.8.0-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4124502b78f03534117c848f87a39b8f31e577b15eff423bf8bfb95f2a8c30d0", size = 511823, upload-time = "2026-06-09T07:52:09.565Z" },
|
| 3278 |
+
{ url = "https://files.pythonhosted.org/packages/20/87/846c289e7aa2299eff406335717cf43ce8777194ece8aad75772e0411615/safetensors-0.8.0-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7bc0a787ba8a35be368ee3574edfa2b1ad389eebd0a72e482ae275490e3f6c98", size = 633461, upload-time = "2026-06-09T07:52:11.128Z" },
|
| 3279 |
+
{ url = "https://files.pythonhosted.org/packages/76/22/8d64d9df2c45d5ded401df889d0ad90882804ca172d79ec4f0df8f727fe0/safetensors-0.8.0-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:040070828e36dc8e122178bbbd5830ff9e97920affb84cbe0f46442497bed358", size = 545148, upload-time = "2026-06-09T07:52:13.603Z" },
|
| 3280 |
+
{ url = "https://files.pythonhosted.org/packages/28/50/f203ff3a3ddfe19308efc83c5a3a29ed02bf786732ec35e68bf9162f3365/safetensors-0.8.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd6f3f93c9a0a7cc2788ee63fb763353d4bd2e89b0751bc78fcf7dda00bea774", size = 516040, upload-time = "2026-06-09T07:52:16.29Z" },
|
| 3281 |
+
{ url = "https://files.pythonhosted.org/packages/46/fb/cdaed17ceb2948784fd9c36b6fd3e951b608547cea81a48e8ee6f8cfdfcb/safetensors-0.8.0-cp310-abi3-manylinux_2_31_riscv64.whl", hash = "sha256:fcdd41ec4628fee5799f807c73c353629130fbd942aa23d83c623dd6c9d52d78", size = 513832, upload-time = "2026-06-09T07:52:12.37Z" },
|
| 3282 |
+
{ url = "https://files.pythonhosted.org/packages/0d/49/1e15de264dcc3b77943d2d0c56a95809956883b1c2d6d585c792523f180b/safetensors-0.8.0-cp310-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8e9f537aa183a38ace122d27303dcd986b26bd2a7591f9181d7f0c396f4677ca", size = 559930, upload-time = "2026-06-09T07:52:14.743Z" },
|
| 3283 |
+
{ url = "https://files.pythonhosted.org/packages/2a/43/bf38443278eab4b1be1fce2931e2b012ad9cb7df52ada751d0aab8f7659a/safetensors-0.8.0-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:87eec7ffed2b809f05a398a8becb7d013f19f7837cd15d9748580d6cf30dbaf4", size = 678670, upload-time = "2026-06-09T07:52:20.032Z" },
|
| 3284 |
+
{ url = "https://files.pythonhosted.org/packages/72/e3/68cd3fa5b48488e84add63e04cb12f3bc28ae4638c06d4508c6e88823d0e/safetensors-0.8.0-cp310-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:4a95ae2b05d7726d751da4ebf626a2ca782b706e101bd894c95bc2450b1cffcc", size = 786679, upload-time = "2026-06-09T07:52:21.322Z" },
|
| 3285 |
+
{ url = "https://files.pythonhosted.org/packages/29/4b/1c19c509d56e01f4fbb3d0a2e597450f6cc04d1d56cf52defb0a62dfd715/safetensors-0.8.0-cp310-abi3-musllinux_1_2_i686.whl", hash = "sha256:3ae091f16662658bdc019a4ff6cb4c085bb7d725eb5978b183ffd265863b6d2d", size = 765683, upload-time = "2026-06-09T07:52:22.594Z" },
|
| 3286 |
+
{ url = "https://files.pythonhosted.org/packages/27/43/41c1621732edd934d868a00d1b891584c892a7b62a9aab82ea5a0a5623ee/safetensors-0.8.0-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:8e080062fcde23be189565e1c3305d16751a218ecf9412c8601e64204eb6f846", size = 722361, upload-time = "2026-06-09T07:52:23.924Z" },
|
| 3287 |
+
{ url = "https://files.pythonhosted.org/packages/8e/3f/73ccf82579412b4a71c4ca673f10b5f1f888d7cf5af7fe24f27d30307be4/safetensors-0.8.0-cp310-abi3-win32.whl", hash = "sha256:2ddf52eac562eda224f99acfa7889d02968c1fd59a5b011ae7d8137c37e9c02d", size = 342401, upload-time = "2026-06-09T07:52:28.895Z" },
|
| 3288 |
+
{ url = "https://files.pythonhosted.org/packages/1b/6d/3fba214c1e5e0f69991677ec3bc17023f0421776975e1de0c682dca475e2/safetensors-0.8.0-cp310-abi3-win_amd64.whl", hash = "sha256:096ec1a98435df7beb08853bb5aa9081a84f23d0adc67ed1a0a10550f608373f", size = 355540, upload-time = "2026-06-09T07:52:27.832Z" },
|
| 3289 |
+
{ url = "https://files.pythonhosted.org/packages/8d/fc/7eedc3510d97878876e32774eebbeb61c43f148a96e915c84229a3e967aa/safetensors-0.8.0-cp310-abi3-win_arm64.whl", hash = "sha256:f7838e5135a406ad3e02efdcb8cf2e5397d368b0154537c4fec682dbc544d452", size = 340500, upload-time = "2026-06-09T07:52:26.745Z" },
|
| 3290 |
+
]
|
| 3291 |
+
|
| 3292 |
[[package]]
|
| 3293 |
name = "scikit-learn"
|
| 3294 |
version = "1.7.2"
|
|
|
|
| 3670 |
{ url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638, upload-time = "2025-03-13T13:49:21.846Z" },
|
| 3671 |
]
|
| 3672 |
|
| 3673 |
+
[[package]]
|
| 3674 |
+
name = "tokenizers"
|
| 3675 |
+
version = "0.22.2"
|
| 3676 |
+
source = { registry = "https://pypi.org/simple" }
|
| 3677 |
+
dependencies = [
|
| 3678 |
+
{ name = "huggingface-hub" },
|
| 3679 |
+
]
|
| 3680 |
+
sdist = { url = "https://files.pythonhosted.org/packages/73/6f/f80cfef4a312e1fb34baf7d85c72d4411afde10978d4657f8cdd811d3ccc/tokenizers-0.22.2.tar.gz", hash = "sha256:473b83b915e547aa366d1eee11806deaf419e17be16310ac0a14077f1e28f917", size = 372115, upload-time = "2026-01-05T10:45:15.988Z" }
|
| 3681 |
+
wheels = [
|
| 3682 |
+
{ url = "https://files.pythonhosted.org/packages/92/97/5dbfabf04c7e348e655e907ed27913e03db0923abb5dfdd120d7b25630e1/tokenizers-0.22.2-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:544dd704ae7238755d790de45ba8da072e9af3eea688f698b137915ae959281c", size = 3100275, upload-time = "2026-01-05T10:41:02.158Z" },
|
| 3683 |
+
{ url = "https://files.pythonhosted.org/packages/2e/47/174dca0502ef88b28f1c9e06b73ce33500eedfac7a7692108aec220464e7/tokenizers-0.22.2-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:1e418a55456beedca4621dbab65a318981467a2b188e982a23e117f115ce5001", size = 2981472, upload-time = "2026-01-05T10:41:00.276Z" },
|
| 3684 |
+
{ url = "https://files.pythonhosted.org/packages/d6/84/7990e799f1309a8b87af6b948f31edaa12a3ed22d11b352eaf4f4b2e5753/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2249487018adec45d6e3554c71d46eb39fa8ea67156c640f7513eb26f318cec7", size = 3290736, upload-time = "2026-01-05T10:40:32.165Z" },
|
| 3685 |
+
{ url = "https://files.pythonhosted.org/packages/78/59/09d0d9ba94dcd5f4f1368d4858d24546b4bdc0231c2354aa31d6199f0399/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:25b85325d0815e86e0bac263506dd114578953b7b53d7de09a6485e4a160a7dd", size = 3168835, upload-time = "2026-01-05T10:40:38.847Z" },
|
| 3686 |
+
{ url = "https://files.pythonhosted.org/packages/47/50/b3ebb4243e7160bda8d34b731e54dd8ab8b133e50775872e7a434e524c28/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfb88f22a209ff7b40a576d5324bf8286b519d7358663db21d6246fb17eea2d5", size = 3521673, upload-time = "2026-01-05T10:40:56.614Z" },
|
| 3687 |
+
{ url = "https://files.pythonhosted.org/packages/e0/fa/89f4cb9e08df770b57adb96f8cbb7e22695a4cb6c2bd5f0c4f0ebcf33b66/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c774b1276f71e1ef716e5486f21e76333464f47bece56bbd554485982a9e03e", size = 3724818, upload-time = "2026-01-05T10:40:44.507Z" },
|
| 3688 |
+
{ url = "https://files.pythonhosted.org/packages/64/04/ca2363f0bfbe3b3d36e95bf67e56a4c88c8e3362b658e616d1ac185d47f2/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df6c4265b289083bf710dff49bc51ef252f9d5be33a45ee2bed151114a56207b", size = 3379195, upload-time = "2026-01-05T10:40:51.139Z" },
|
| 3689 |
+
{ url = "https://files.pythonhosted.org/packages/2e/76/932be4b50ef6ccedf9d3c6639b056a967a86258c6d9200643f01269211ca/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:369cc9fc8cc10cb24143873a0d95438bb8ee257bb80c71989e3ee290e8d72c67", size = 3274982, upload-time = "2026-01-05T10:40:58.331Z" },
|
| 3690 |
+
{ url = "https://files.pythonhosted.org/packages/1d/28/5f9f5a4cc211b69e89420980e483831bcc29dade307955cc9dc858a40f01/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:29c30b83d8dcd061078b05ae0cb94d3c710555fbb44861139f9f83dcca3dc3e4", size = 9478245, upload-time = "2026-01-05T10:41:04.053Z" },
|
| 3691 |
+
{ url = "https://files.pythonhosted.org/packages/6c/fb/66e2da4704d6aadebf8cb39f1d6d1957df667ab24cff2326b77cda0dcb85/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:37ae80a28c1d3265bb1f22464c856bd23c02a05bb211e56d0c5301a435be6c1a", size = 9560069, upload-time = "2026-01-05T10:45:10.673Z" },
|
| 3692 |
+
{ url = "https://files.pythonhosted.org/packages/16/04/fed398b05caa87ce9b1a1bb5166645e38196081b225059a6edaff6440fac/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:791135ee325f2336f498590eb2f11dc5c295232f288e75c99a36c5dbce63088a", size = 9899263, upload-time = "2026-01-05T10:45:12.559Z" },
|
| 3693 |
+
{ url = "https://files.pythonhosted.org/packages/05/a1/d62dfe7376beaaf1394917e0f8e93ee5f67fea8fcf4107501db35996586b/tokenizers-0.22.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:38337540fbbddff8e999d59970f3c6f35a82de10053206a7562f1ea02d046fa5", size = 10033429, upload-time = "2026-01-05T10:45:14.333Z" },
|
| 3694 |
+
{ url = "https://files.pythonhosted.org/packages/fd/18/a545c4ea42af3df6effd7d13d250ba77a0a86fb20393143bbb9a92e434d4/tokenizers-0.22.2-cp39-abi3-win32.whl", hash = "sha256:a6bf3f88c554a2b653af81f3204491c818ae2ac6fbc09e76ef4773351292bc92", size = 2502363, upload-time = "2026-01-05T10:45:20.593Z" },
|
| 3695 |
+
{ url = "https://files.pythonhosted.org/packages/65/71/0670843133a43d43070abeb1949abfdef12a86d490bea9cd9e18e37c5ff7/tokenizers-0.22.2-cp39-abi3-win_amd64.whl", hash = "sha256:c9ea31edff2968b44a88f97d784c2f16dc0729b8b143ed004699ebca91f05c48", size = 2747786, upload-time = "2026-01-05T10:45:18.411Z" },
|
| 3696 |
+
{ url = "https://files.pythonhosted.org/packages/72/f4/0de46cfa12cdcbcd464cc59fde36912af405696f687e53a091fb432f694c/tokenizers-0.22.2-cp39-abi3-win_arm64.whl", hash = "sha256:9ce725d22864a1e965217204946f830c37876eee3b2ba6fc6255e8e903d5fcbc", size = 2612133, upload-time = "2026-01-05T10:45:17.232Z" },
|
| 3697 |
+
{ url = "https://files.pythonhosted.org/packages/84/04/655b79dbcc9b3ac5f1479f18e931a344af67e5b7d3b251d2dcdcd7558592/tokenizers-0.22.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:753d47ebd4542742ef9261d9da92cd545b2cacbb48349a1225466745bb866ec4", size = 3282301, upload-time = "2026-01-05T10:40:34.858Z" },
|
| 3698 |
+
{ url = "https://files.pythonhosted.org/packages/46/cd/e4851401f3d8f6f45d8480262ab6a5c8cb9c4302a790a35aa14eeed6d2fd/tokenizers-0.22.2-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e10bf9113d209be7cd046d40fbabbaf3278ff6d18eb4da4c500443185dc1896c", size = 3161308, upload-time = "2026-01-05T10:40:40.737Z" },
|
| 3699 |
+
{ url = "https://files.pythonhosted.org/packages/6f/6e/55553992a89982cd12d4a66dddb5e02126c58677ea3931efcbe601d419db/tokenizers-0.22.2-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64d94e84f6660764e64e7e0b22baa72f6cd942279fdbb21d46abd70d179f0195", size = 3718964, upload-time = "2026-01-05T10:40:46.56Z" },
|
| 3700 |
+
{ url = "https://files.pythonhosted.org/packages/59/8c/b1c87148aa15e099243ec9f0cf9d0e970cc2234c3257d558c25a2c5304e6/tokenizers-0.22.2-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f01a9c019878532f98927d2bacb79bbb404b43d3437455522a00a30718cdedb5", size = 3373542, upload-time = "2026-01-05T10:40:52.803Z" },
|
| 3701 |
+
]
|
| 3702 |
+
|
| 3703 |
[[package]]
|
| 3704 |
name = "toml"
|
| 3705 |
version = "0.10.2"
|
|
|
|
| 3782 |
{ url = "https://files.pythonhosted.org/packages/eb/75/1a0392bcc21c44dcdf87b3cf2d137e7829be2c083a1e38d44efca3d57a16/tqdm-4.68.2-py3-none-any.whl", hash = "sha256:d4240441fb5353290b87d6a85968c9decc131a99b8c7faa28269d829de669ede", size = 78578, upload-time = "2026-06-09T13:26:40.731Z" },
|
| 3783 |
]
|
| 3784 |
|
| 3785 |
+
[[package]]
|
| 3786 |
+
name = "transformers"
|
| 3787 |
+
version = "5.12.0"
|
| 3788 |
+
source = { registry = "https://pypi.org/simple" }
|
| 3789 |
+
dependencies = [
|
| 3790 |
+
{ name = "huggingface-hub" },
|
| 3791 |
+
{ name = "numpy" },
|
| 3792 |
+
{ name = "packaging" },
|
| 3793 |
+
{ name = "pyyaml" },
|
| 3794 |
+
{ name = "regex" },
|
| 3795 |
+
{ name = "safetensors" },
|
| 3796 |
+
{ name = "tokenizers" },
|
| 3797 |
+
{ name = "tqdm" },
|
| 3798 |
+
{ name = "typer" },
|
| 3799 |
+
]
|
| 3800 |
+
sdist = { url = "https://files.pythonhosted.org/packages/0c/f9/4552e2ba55db1c943aea0d4c09a32e9cbe5445b9eabe9856900de503dc8f/transformers-5.12.0.tar.gz", hash = "sha256:f0cf42ae1464c2eb41e7e0e66d7fd4b66145f48af17093b4cc0b2e9781faa7f4", size = 8923020, upload-time = "2026-06-12T14:39:20.43Z" }
|
| 3801 |
+
wheels = [
|
| 3802 |
+
{ url = "https://files.pythonhosted.org/packages/ff/1f/d385913c38e900d23b728a4188fee625f2fccb306aeebc59be9d91404a5a/transformers-5.12.0-py3-none-any.whl", hash = "sha256:500be9eb644ede81c3103eee7687fc36d05dd75d1c76686c3820b26396fe7c7c", size = 11150246, upload-time = "2026-06-12T14:39:17.009Z" },
|
| 3803 |
+
]
|
| 3804 |
+
|
| 3805 |
[[package]]
|
| 3806 |
name = "triton"
|
| 3807 |
version = "3.6.0"
|