From 57e79739c2eb908c6564f5a4aa808107222d6ca2 Mon Sep 17 00:00:00 2001 From: Fin Griffin Date: Tue, 16 Jun 2026 14:05:03 +0100 Subject: [PATCH 01/14] feat(rl): add grpo transform factory and reward func stub, wire in rl hyperparams --- cspell/library-words.txt | 1 + cspell/project-words.txt | 1 + src/voice/finetune/_orchestrator.py | 12 ++++++-- src/voice/rl/__init__.py | 7 +++++ src/voice/rl/_utils.py | 45 +++++++++++++++++++++++++++++ src/voice/rl/rewards.py | 38 ++++++++++++++++++++++++ 6 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 src/voice/rl/__init__.py create mode 100644 src/voice/rl/_utils.py create mode 100644 src/voice/rl/rewards.py diff --git a/cspell/library-words.txt b/cspell/library-words.txt index f9f113e..730b848 100644 --- a/cspell/library-words.txt +++ b/cspell/library-words.txt @@ -24,3 +24,4 @@ libcuda PYTHONPATH venv cuda +funcs diff --git a/cspell/project-words.txt b/cspell/project-words.txt index 0a99bde..6570c62 100644 --- a/cspell/project-words.txt +++ b/cspell/project-words.txt @@ -23,3 +23,4 @@ vocab finetune accum nonpositive +GRPO diff --git a/src/voice/finetune/_orchestrator.py b/src/voice/finetune/_orchestrator.py index 40a74e9..23f08d7 100644 --- a/src/voice/finetune/_orchestrator.py +++ b/src/voice/finetune/_orchestrator.py @@ -68,8 +68,9 @@ def _build_axolotl_cfg( """ Build a per-run axolotl config by merging hyperparams into the base. - Sets ``output_dir`` to ``run_dir.adapter_dir`` and copies any - recognised hyperparams keys present in ``hyperparams``. + Sets ``output_dir`` to ``run_dir.adapter_dir``, copies recognised + flat hyperparams keys, and merges dotted keys (e.g. ``"trl.beta"``) + into their named subsection dict. :param base_cfg: Shared axolotl config from the sweep or single-run config. @@ -82,6 +83,13 @@ def _build_axolotl_cfg( for key in _HYPERPARAMS_CFG_KEYS: if key in hyperparams: cfg[key] = hyperparams[key] + # Dotted keys (e.g. "trl.beta") are merged into the named subsection. + for key, value in hyperparams.items(): + if "." in key: + parent, _, child = key.partition(".") + section = dict(cfg.get(parent) or {}) + section[child] = value + cfg[parent] = section return cfg diff --git a/src/voice/rl/__init__.py b/src/voice/rl/__init__.py new file mode 100644 index 0000000..07cd302 --- /dev/null +++ b/src/voice/rl/__init__.py @@ -0,0 +1,7 @@ +""" +Reinforcement learning module for the VOICE project. + +Provides utilities for GRPO fine-tuning jobs, including: +- Reward functions +- GRPO dataset transform factory +""" diff --git a/src/voice/rl/_utils.py b/src/voice/rl/_utils.py new file mode 100644 index 0000000..690f28a --- /dev/null +++ b/src/voice/rl/_utils.py @@ -0,0 +1,45 @@ +"""Dataset transform utilities for GRPO training.""" + +from __future__ import annotations + +from typing import Any + + +def prompt_transform( + cfg: Any, # noqa: ANN401 + *args: Any, # noqa: ANN401 + **kwargs: Any, # noqa: ANN401 +) -> tuple[Any, dict[str, Any]]: # noqa: ANN401 + """ + Axolotl dataset transform factory for GRPO. + + Strips assistant turns so each example becomes ``{"prompt": [...]}``, + which is the format expected by TRL's GRPOTrainer. + + To register in axolotl config:: + + datasets: + - path: + type: voice.rl._utils.prompt_transform + + :param cfg: Axolotl config object (passed by axolotl; not used here). + :param *args: positional arguments passed to ``reward_funcs``. + :param **kwargs: keyword arguments passed to ``reward_funcs``. + :return: ``(map_fn, dataset_map_kwargs)`` tuple consumed by axolotl. + """ + _ = cfg + __ = args + ___ = kwargs + + def _map( + example: dict[str, Any], # noqa: ANN401 + tokenizer: Any = None, # noqa: ANN401 + ) -> dict[str, Any]: # noqa: ANN401 + _ = tokenizer + return { + "prompt": [ + m for m in example["messages"] if m["role"] != "assistant" + ] + } + + return _map, {} diff --git a/src/voice/rl/rewards.py b/src/voice/rl/rewards.py new file mode 100644 index 0000000..acc61ff --- /dev/null +++ b/src/voice/rl/rewards.py @@ -0,0 +1,38 @@ +""" +Reward functions for GRPO training. + +Each function must match the signature:: + + def my_reward(completions, **kwargs) -> list[float] + +``completions`` + One element per sampled completion. Each element is a single-item list: + ``[{"role": "assistant", "content": ""}]``. + The raw completion string is accessed via ``completions[i][0]["content"]``. + +Return a ``list[float]`` the same length as ``completions``. + +Register functions in your axolotl config:: + + trl: + reward_funcs: + - voice.rl.rewards.my_reward + reward_weights: + - 1.0 +""" + +from __future__ import annotations + + +def placeholder_reward( + completions: list[list[dict[str, str]]], **kwargs: object +) -> list[float]: + """ + Return 0 for all completions (placeholder). + + :param completions: list of completions. + :param **kwargs: keyword arguments passed to ``reward_funcs``. + :return: list of rewards. + """ + _ = kwargs + return [0.0 for _ in completions] From b69c13b69e865386d6d731ee468d6f8b92a5a854 Mon Sep 17 00:00:00 2001 From: Fin Griffin Date: Tue, 16 Jun 2026 16:10:09 +0100 Subject: [PATCH 02/14] feat(docs): add first draft for reward function --- cspell/project-words.txt | 2 ++ docs/03_rl.md | 23 +++++++++++++++++++++++ docs/{03_cli.md => 04_cli.md} | 0 3 files changed, 25 insertions(+) create mode 100644 docs/03_rl.md rename docs/{03_cli.md => 04_cli.md} (100%) diff --git a/cspell/project-words.txt b/cspell/project-words.txt index 6570c62..a9bcd87 100644 --- a/cspell/project-words.txt +++ b/cspell/project-words.txt @@ -24,3 +24,5 @@ finetune accum nonpositive GRPO +styledistance +Wegmann diff --git a/docs/03_rl.md b/docs/03_rl.md new file mode 100644 index 0000000..85285d9 --- /dev/null +++ b/docs/03_rl.md @@ -0,0 +1,23 @@ +# Reward Function + +--- + +VOICE uses a style embedding reward function to train models via GRPO. The reward is defined per completion and is designed to be positive only when the online model's output is more stylistically aligned with the target author than the reference model's output on the same prompt. + +## Preliminaries + +Let $\chi : \mathcal{V}^* \rightarrow \mathbb{R}^d$ be a style embedding model ([Anna Wegmann/Style-Embedding](https://huggingface.co/StyleDistance/styledistance), [StyleDistance/styledistance](https://huggingface.co/StyleDistance/styledistance)). +Let $S_c(\mathbf{a}, \mathbf{b}) = \langle \mathbf{a}, \mathbf{b} \rangle / (\|\mathbf{a}\| \|\mathbf{b}\|) \in [-1, 1]$ denote cosine similarity. +Let $\pi_{\theta}$ and $\pi_{\text{ref}}$ denote the online and reference models respectively, with completions $d_i \sim \pi_{\theta}(\cdot \mid x_i)$ and $d_i^{\text{ref}} \sim \pi_{\text{ref}}(\cdot \mid x_i)$ for prompt $x_i$. +We write $\underline{a} = \chi(a)$ for the style embedding of a text $a \in \mathcal{V}^*$. + +## Reward Definition + +$$r(d_i, c_i, d_i^{\text{ref}}) = \max\!\Big(S_c(\underline{d}_i, \underline{c}_i) - \max\!\big(S_c(\underline{d}_i^{\text{ref}}, \underline{c}_i),\, 0\big),\ 0\Big)$$ + +## Properties + +- The outer $\max(\cdot, 0)$ ensures rewards are always non-negative. +- The reward is zero whenever $S_c(\underline{d}_i, \underline{c}_i) \leq \max(S_c(\underline{d}_i^{\text{ref}}, \underline{c}_i), 0)$: the online model must strictly exceed the reference model's cosine similarity with the author to receive any reward. +- The inner $\max(\cdot, 0)$ floors the reference model's similarity at zero. This prevents a poor reference model (with negative cosine similarity to the author) from making the active region artificially wide and rewards easy to obtain. +- When the reward is positive it grows linearly with the margin by which the online model exceeds the reference model. There is no rescaling by the remaining headroom to perfect alignment, so the gradient signal is uniform across the active region regardless of how well the reference model performs. Absolute reward scale is unimportant: GRPO normalises rewards within each group when computing advantages, so only relative differences between completions within a group affect training. diff --git a/docs/03_cli.md b/docs/04_cli.md similarity index 100% rename from docs/03_cli.md rename to docs/04_cli.md From f37f3131fdb8cb697658b1cba3eb53d7b38f372b Mon Sep 17 00:00:00 2001 From: Fin Griffin Date: Tue, 16 Jun 2026 17:15:52 +0100 Subject: [PATCH 03/14] feat(rl): add style embedding based reward function --- cspell/project-words.txt | 1 + src/voice/_defaults.py | 17 +++++++++ src/voice/rl/_utils.py | 19 +++++++---- src/voice/rl/rewards.py | 74 +++++++++++++++++++++++++++++++++++----- 4 files changed, 96 insertions(+), 15 deletions(-) diff --git a/cspell/project-words.txt b/cspell/project-words.txt index a9bcd87..5620995 100644 --- a/cspell/project-words.txt +++ b/cspell/project-words.txt @@ -26,3 +26,4 @@ nonpositive GRPO styledistance Wegmann +embs diff --git a/src/voice/_defaults.py b/src/voice/_defaults.py index fc85b55..02946fd 100644 --- a/src/voice/_defaults.py +++ b/src/voice/_defaults.py @@ -226,3 +226,20 @@ class InferenceDefaults: INFERENCE_DEFAULTS: InferenceDefaults = InferenceDefaults() + + +@dataclass(frozen=True) +class RLDefaults: + """ + Default parameters for RL (GRPO) training. + + .. attribute :: style_model_id + + Hugging Face model ID for the style embedding model used in the + reward function. + """ + + style_model_id: str = "AnnaWegmann/Style-Embedding" + + +RL_DEFAULTS: RLDefaults = RLDefaults() diff --git a/src/voice/rl/_utils.py b/src/voice/rl/_utils.py index 690f28a..390dcde 100644 --- a/src/voice/rl/_utils.py +++ b/src/voice/rl/_utils.py @@ -13,8 +13,10 @@ def prompt_transform( """ Axolotl dataset transform factory for GRPO. - Strips assistant turns so each example becomes ``{"prompt": [...]}``, - which is the format expected by TRL's GRPOTrainer. + Strips the assistant turn from ``messages`` to build the prompt, extracts + it as ``true_completion``, and passes through ``ref_completion`` from the + dataset column. Both extra fields are forwarded to reward functions via + ``**kwargs`` by TRL. To register in axolotl config:: @@ -23,8 +25,8 @@ def prompt_transform( type: voice.rl._utils.prompt_transform :param cfg: Axolotl config object (passed by axolotl; not used here). - :param *args: positional arguments passed to ``reward_funcs``. - :param **kwargs: keyword arguments passed to ``reward_funcs``. + :param *args: positional arguments passed to ``prompt``. + :param **kwargs: keyword arguments passed to ``prompt``. :return: ``(map_fn, dataset_map_kwargs)`` tuple consumed by axolotl. """ _ = cfg @@ -36,10 +38,13 @@ def _map( tokenizer: Any = None, # noqa: ANN401 ) -> dict[str, Any]: # noqa: ANN401 _ = tokenizer + messages: list[dict[str, str]] = example["messages"] return { - "prompt": [ - m for m in example["messages"] if m["role"] != "assistant" - ] + "prompt": [m for m in messages if m["role"] != "assistant"], + "true_completion": next( + m["content"] for m in messages if m["role"] == "assistant" + ), + "ref_completion": example["ref_completion"], } return _map, {} diff --git a/src/voice/rl/rewards.py b/src/voice/rl/rewards.py index acc61ff..8e8785f 100644 --- a/src/voice/rl/rewards.py +++ b/src/voice/rl/rewards.py @@ -10,29 +10,87 @@ def my_reward(completions, **kwargs) -> list[float] ``[{"role": "assistant", "content": ""}]``. The raw completion string is accessed via ``completions[i][0]["content"]``. +``true_completion``, ``ref_completion`` + Injected via ``**kwargs`` by the prompt transform. + ``true_completion`` is the ground truth assistant turn extracted from + ``messages``; ``ref_completion`` is the pre-generated base model + completion stored as a dataset column. TRL repeats both G times per + prompt to align with the flattened completions batch. + Return a ``list[float]`` the same length as ``completions``. Register functions in your axolotl config:: trl: reward_funcs: - - voice.rl.rewards.my_reward + - voice.rl.rewards.style_reward reward_weights: - 1.0 """ from __future__ import annotations +from sentence_transformers import SentenceTransformer + +from voice._defaults import RL_DEFAULTS + +_style_model: SentenceTransformer | None = None + -def placeholder_reward( - completions: list[list[dict[str, str]]], **kwargs: object +def _get_style_model() -> SentenceTransformer: + global _style_model + if _style_model is None: + _style_model = SentenceTransformer(RL_DEFAULTS.style_model_id) + return _style_model + + +def style_reward( + completions: list[list[dict[str, str]]], + true_completion: list[str], + ref_completion: list[str], + **kwargs: object, ) -> list[float]: """ - Return 0 for all completions (placeholder). + Style embedding reward for GRPO. + + Rewards the online model for exceeding the reference model's cosine + similarity to the true author completion:: - :param completions: list of completions. - :param **kwargs: keyword arguments passed to ``reward_funcs``. - :return: list of rewards. + r = max(S_c(d, c) - max(S_c(d_ref, c), 0), 0) + + where d is the online completion, c is the true completion, and + d_ref is the pre-generated base model reference completion. + + All three groups are encoded in a single StyleDistance forward pass. + + :param completions: + GRPO completions, each ``[{"role": "assistant", "content": ...}]``. + :param true_completion: + Ground truth author completions (repeated G times by TRL). + :param ref_completion: + Pre-generated base model completions (repeated G times by TRL). + :param **kwargs: keyword arguments passed to function by TRL trainer. + :return: Reward for each completion. """ _ = kwargs - return [0.0 for _ in completions] + + model = _get_style_model() + n = len(completions) + online_texts = [c[0]["content"] for c in completions] + + all_embs = model.encode( + online_texts + list(true_completion) + list(ref_completion), + normalize_embeddings=True, + batch_size=64, + show_progress_bar=False, + ) + d_embs = all_embs[:n] + c_embs = all_embs[n : 2 * n] + r_embs = all_embs[2 * n :] + + rewards = [] + for d, c, r in zip(d_embs, c_embs, r_embs, strict=True): + sim_dc = float(d @ c) + sim_rc = float(r @ c) + rewards.append(max(sim_dc - max(sim_rc, 0.0), 0.0)) + return rewards From f631b9cc3fb3c9e9c405f19c3a757a4334bb0e22 Mon Sep 17 00:00:00 2001 From: Fin Griffin Date: Tue, 16 Jun 2026 17:45:48 +0100 Subject: [PATCH 04/14] fix(rl): fix wiring of nested trl parameters --- src/voice/finetune/_grid.py | 49 ++++++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/src/voice/finetune/_grid.py b/src/voice/finetune/_grid.py index f158be5..f0b7f49 100644 --- a/src/voice/finetune/_grid.py +++ b/src/voice/finetune/_grid.py @@ -21,6 +21,11 @@ } ) +# Axes that require custom output keys rather than a direct pass through. +# lora_r -> lora_r + lora_alpha (alpha mirrors rank) +# target_layers -> target_layers_name + lora_target_modules +_SPECIAL_AXES: frozenset[str] = frozenset({"lora_r", "target_layers"}) + # ----------------------------------------------------------------------------- # Run naming # ----------------------------------------------------------------------------- @@ -68,6 +73,13 @@ def expand_grid(sweep_cfg: dict[str, Any]) -> list[dict[str, Any]]: """ Expand the sweep section into a flat list of per-run hyperparameter dicts. + Required axes (``learning_rate``, ``lora_r``, ``micro_batch_size``, + ``gradient_accumulation_steps``, ``target_layers``) must always be + present. Any additional axes (e.g. dotted keys such as + ``trl.beta``) are expanded into the product and passed through + for :func:`~voice.finetune._orchestrator._build_axolotl_cfg` + to merge into the config. + :param sweep_cfg: The ``sweep`` section of a sweep config YAML. :return: List of hyperparameter dicts, one per combination. :raises ValueError: If required sweep axes are missing. @@ -78,25 +90,22 @@ def expand_grid(sweep_cfg: dict[str, Any]) -> list[dict[str, Any]]: f"Sweep config missing required axes: {sorted(missing)}" ) + generic_keys = [k for k in sweep_cfg if k not in _SPECIAL_AXES] + special_keys = [k for k in sweep_cfg if k in _SPECIAL_AXES] + all_keys = generic_keys + special_keys + all_values = [sweep_cfg[k] for k in all_keys] + runs: list[dict[str, Any]] = [] - combos = itertools.product( - sweep_cfg["learning_rate"], - sweep_cfg["lora_r"], - sweep_cfg["micro_batch_size"], - sweep_cfg["gradient_accumulation_steps"], - sweep_cfg["target_layers"], - ) - for idx, (lr, rank, mbs, gas, tl) in enumerate(combos): - runs.append( - { - "run_idx": idx, - "learning_rate": lr, - "lora_r": rank, - "lora_alpha": rank, - "micro_batch_size": mbs, - "gradient_accumulation_steps": gas, - "target_layers_name": tl["name"], - "lora_target_modules": tl["modules"], - } - ) + for idx, combo in enumerate(itertools.product(*all_values)): + params: dict[str, Any] = {"run_idx": idx} + for key, value in zip(all_keys, combo): # noqa: B905 + if key == "lora_r": + params["lora_r"] = value + params["lora_alpha"] = value + elif key == "target_layers": + params["target_layers_name"] = value["name"] + params["lora_target_modules"] = value["modules"] + else: + params[key] = value + runs.append(params) return runs From 3f615eec7c2ef490a76cc4b59d3464e74124aa4f Mon Sep 17 00:00:00 2001 From: Fin Griffin Date: Tue, 16 Jun 2026 20:27:39 +0100 Subject: [PATCH 05/14] fix: remove single column guard on dataset preprocessing --- src/voice/datasets/get_dataset.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/voice/datasets/get_dataset.py b/src/voice/datasets/get_dataset.py index 8591622..698ad18 100644 --- a/src/voice/datasets/get_dataset.py +++ b/src/voice/datasets/get_dataset.py @@ -104,7 +104,7 @@ def _canonicalise_dataset(ds: Dataset) -> Dataset: if {"system", "question", "answer"}.issubset(cols): return ds - if "messages" in cols and len(cols) == 1: + if "messages" in cols: return ds.map( _extract_chat_style, remove_columns=ds.column_names, From c6d0b2f321dea8cce3820592f5119a06bad348cb Mon Sep 17 00:00:00 2001 From: Fin Griffin Date: Tue, 16 Jun 2026 21:04:47 +0100 Subject: [PATCH 06/14] fix: relative import error for grpo --- src/voice/__init__.py | 1 + src/voice/rl/_utils.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/voice/__init__.py b/src/voice/__init__.py index 3f54ae8..e9f3c5d 100644 --- a/src/voice/__init__.py +++ b/src/voice/__init__.py @@ -10,6 +10,7 @@ stylometric_distribution, ) from voice.datasets import DatasetSpec, LocalDatasetSpec, get_dataset +from voice.rl._utils import prompt_transform as _prompt_transform # noqa: F401 from voice.stylometry import get_groups, get_metrics __all__: list[str] = [ diff --git a/src/voice/rl/_utils.py b/src/voice/rl/_utils.py index 390dcde..306db75 100644 --- a/src/voice/rl/_utils.py +++ b/src/voice/rl/_utils.py @@ -22,7 +22,7 @@ def prompt_transform( datasets: - path: - type: voice.rl._utils.prompt_transform + type: voice._prompt_transform :param cfg: Axolotl config object (passed by axolotl; not used here). :param *args: positional arguments passed to ``prompt``. From 145ff1ea0c6186e38fd2cc0763bd6e21339ec51f Mon Sep 17 00:00:00 2001 From: Fin Griffin Date: Wed, 17 Jun 2026 10:12:37 +0100 Subject: [PATCH 07/14] fix: force uv-managed python via .toml --- pyproject.toml | 1 + uv.lock | 1283 +++++++++++++----------------------------------- 2 files changed, 343 insertions(+), 941 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 95ecd18..da86e00 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,6 +28,7 @@ voice = "voice.finetune.cli:main" [tool.uv] required-environments = ["sys_platform == 'linux'"] +python-preference = "only-managed" [tool.uv.sources] axolotl = { git = "https://github.com/axolotl-ai-cloud/axolotl.git", branch = "main" } diff --git a/uv.lock b/uv.lock index 5c2fedd..5867814 100644 --- a/uv.lock +++ b/uv.lock @@ -32,7 +32,8 @@ dependencies = [ { name = "psutil" }, { name = "pyyaml" }, { name = "safetensors" }, - { name = "torch" }, + { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, + { name = "torch", version = "2.12.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/ca/14/787e5498cd062640f0f3d92ef4ae4063174f76f9afd29d13fc52a319daae/accelerate-1.13.0.tar.gz", hash = "sha256:d631b4e0f5b3de4aff2d7e9e6857d164810dfc3237d54d017f075122d057b236", size = 402835, upload-time = "2026-03-04T19:34:12.359Z" } wheels = [ @@ -251,15 +252,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/67/29/57b06fdb3abdf52c621d3ca3caea735e2db4c8d48288ebd26af448e8e247/art-6.5-py3-none-any.whl", hash = "sha256:70706408144c45c666caab690627d5c74aea7b6c7ce8cc968408ddeef8d84afd", size = 610382, upload-time = "2025-04-12T17:02:21.97Z" }, ] -[[package]] -name = "astor" -version = "0.8.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5a/21/75b771132fee241dfe601d39ade629548a9626d1d39f333fde31bc46febe/astor-0.8.1.tar.gz", hash = "sha256:6a6effda93f4e1ce9f618779b2dd1d9d84f1e32812c23a29b3fff6fd7f63fa5e", size = 35090, upload-time = "2019-12-10T01:50:35.51Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c3/88/97eef84f48fa04fbd6750e62dcceafba6c63c81b7ac1420856c8dcc0a3f9/astor-0.8.1-py2.py3-none-any.whl", hash = "sha256:070a54e890cefb5b3739d19f30f5a5ec840ffc9c50ffa7d23cc9fc1a38ebbfc5", size = 27488, upload-time = "2019-12-10T01:50:33.628Z" }, -] - [[package]] name = "asttokens" version = "3.0.1" @@ -301,8 +293,8 @@ wheels = [ [[package]] name = "axolotl" -version = "0.16.0.dev0" -source = { git = "https://github.com/axolotl-ai-cloud/axolotl.git?rev=v0.16.1#08fc7de87e79f38c367f6776c5111b40a914062e" } +version = "0.17.0.dev0" +source = { git = "https://github.com/axolotl-ai-cloud/axolotl.git?branch=main#e86163dd332f3aad2f29de8fe44b6cfd5f74b22d" } dependencies = [ { name = "accelerate", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "addict", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, @@ -311,22 +303,24 @@ dependencies = [ { name = "art", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "axolotl-contribs-lgpl", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "axolotl-contribs-mit", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "bitsandbytes", marker = "sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "colorama", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "datasets", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "datasets", version = "4.8.5", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "einops", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "evaluate", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "fastcore", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "fire", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "fla-core", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "flash-linear-attention", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "fla-core", marker = "platform_machine != 'aarch64' and sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "flash-linear-attention", marker = "platform_machine != 'aarch64' and sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "gcsfs", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "gradio", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "hf-transfer", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "hf-xet", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "hf-xet", version = "1.4.3", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "huggingface-hub", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "immutabledict", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "kernels", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "langdetect", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "liger-kernel", marker = "sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "lm-eval", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "mistral-common", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "modal", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, @@ -349,12 +343,16 @@ dependencies = [ { name = "sentencepiece", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "tensorboard", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "tokenizers", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "torchao", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "torch", version = "2.12.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "torchao", marker = "platform_machine != 'aarch64' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "trackio", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "transformers", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "transformers", version = "5.10.2", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "triton", marker = "sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "trl", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "typer", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "typing-extensions", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "wandb", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "xformers", marker = "platform_machine != 'aarch64' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "zstandard", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, ] @@ -363,9 +361,9 @@ name = "axolotl-contribs-lgpl" version = "0.0.7" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "datasets", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "datasets", version = "4.8.5", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "torch", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "torch", version = "2.12.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/09/60/d9687c5057dfc0ebbccd7c6996cf0f6337794c04a501a92eb6f37709e26b/axolotl_contribs_lgpl-0.0.7.tar.gz", hash = "sha256:f797b3fd0adb5cbf93ed7070c8de61f90fd2f42cb93713e394970ab0e0a77a4d", size = 10922, upload-time = "2025-10-29T17:46:16.215Z" } @@ -374,7 +372,7 @@ name = "axolotl-contribs-mit" version = "0.0.6" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "torch", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "torch", version = "2.12.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/f5/d7/6e3154627508b94dff912280935af8e1afa72883074d2e51e75c7efa2bb3/axolotl_contribs_mit-0.0.6.tar.gz", hash = "sha256:f48a63f5878269cd85e5a78b5f3bb44aabe9ffd0143664c91c5841d8ecefdf26", size = 25895, upload-time = "2025-12-09T16:43:55.021Z" } @@ -479,32 +477,16 @@ wheels = [ [[package]] name = "bitsandbytes" -version = "0.49.2" +version = "0.49.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "packaging", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "torch", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "torch", version = "2.12.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/29/71/acff7af06c818664aa87ff73e17a52c7788ad746b72aea09d3cb8e424348/bitsandbytes-0.49.2-py3-none-manylinux_2_24_aarch64.whl", hash = "sha256:2fc0830c5f7169be36e60e11f2be067c8f812dfcb829801a8703735842450750", size = 31442815, upload-time = "2026-02-16T21:26:06.783Z" }, - { url = "https://files.pythonhosted.org/packages/19/57/3443d6f183436fbdaf5000aac332c4d5ddb056665d459244a5608e98ae92/bitsandbytes-0.49.2-py3-none-manylinux_2_24_x86_64.whl", hash = "sha256:54b771f06e1a3c73af5c7f16ccf0fc23a846052813d4b008d10cb6e017dd1c8c", size = 60651714, upload-time = "2026-02-16T21:26:11.579Z" }, -] - -[[package]] -name = "blake3" -version = "1.0.8" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/75/aa/abcd75e9600987a0bc6cfe9b6b2ff3f0e2cb08c170addc6e76035b5c4cb3/blake3-1.0.8.tar.gz", hash = "sha256:513cc7f0f5a7c035812604c2c852a0c1468311345573de647e310aca4ab165ba", size = 117308, upload-time = "2025-10-14T06:47:48.83Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ee/7d/85a4c0782f613de23d114a7a78fcce270f75b193b3ff3493a0de24ba104a/blake3-1.0.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:269f255b110840e52b6ce9db02217e39660ebad3e34ddd5bca8b8d378a77e4e1", size = 371296, upload-time = "2025-10-14T06:45:49.674Z" }, - { url = "https://files.pythonhosted.org/packages/e3/20/488475254976ed93fab57c67aa80d3b40df77f7d9db6528c9274bff53e08/blake3-1.0.8-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:66ca28a673025c40db3eba21a9cac52f559f83637efa675b3f6bd8683f0415f3", size = 374516, upload-time = "2025-10-14T06:45:51.23Z" }, - { url = "https://files.pythonhosted.org/packages/7b/21/2a1c47fedb77fb396512677ec6d46caf42ac6e9a897db77edd0a2a46f7bb/blake3-1.0.8-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bcb04966537777af56c1f399b35525aa70a1225816e121ff95071c33c0f7abca", size = 447911, upload-time = "2025-10-14T06:45:52.637Z" }, - { url = "https://files.pythonhosted.org/packages/cb/7d/db0626df16029713e7e61b67314c4835e85c296d82bd907c21c6ea271da2/blake3-1.0.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e5b5da177d62cc4b7edf0cea08fe4dec960c9ac27f916131efa890a01f747b93", size = 505420, upload-time = "2025-10-14T06:45:54.445Z" }, - { url = "https://files.pythonhosted.org/packages/5b/55/6e737850c2d58a6d9de8a76dad2ae0f75b852a23eb4ecb07a0b165e6e436/blake3-1.0.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:38209b10482c97e151681ea3e91cc7141f56adbbf4820a7d701a923124b41e6a", size = 394189, upload-time = "2025-10-14T06:45:55.719Z" }, - { url = "https://files.pythonhosted.org/packages/5b/94/eafaa5cdddadc0c9c603a6a6d8339433475e1a9f60c8bb9c2eed2d8736b6/blake3-1.0.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:504d1399b7fb91dfe5c25722d2807990493185faa1917456455480c36867adb5", size = 388001, upload-time = "2025-10-14T06:45:57.067Z" }, - { url = "https://files.pythonhosted.org/packages/17/81/735fa00d13de7f68b25e1b9cb36ff08c6f165e688d85d8ec2cbfcdedccc5/blake3-1.0.8-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c84af132aa09abeadf9a0118c8fb26f4528f3f42c10ef8be0fcf31c478774ec4", size = 550302, upload-time = "2025-10-14T06:45:58.657Z" }, - { url = "https://files.pythonhosted.org/packages/0e/c6/d1fe8bdea4a6088bd54b5a58bc40aed89a4e784cd796af7722a06f74bae7/blake3-1.0.8-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a25db3d36b55f5ed6a86470155cc749fc9c5b91c949b8d14f48658f9d960d9ec", size = 554211, upload-time = "2025-10-14T06:46:00.269Z" }, + { url = "https://files.pythonhosted.org/packages/11/dd/5820e09213a3f7c0ee5aff20fce8b362ce935f9dd9958827274de4eaeec6/bitsandbytes-0.49.1-py3-none-manylinux_2_24_aarch64.whl", hash = "sha256:acd4730a0db3762d286707f4a3bc1d013d21dd5f0e441900da57ec4198578d4e", size = 31065659, upload-time = "2026-01-08T14:31:28.676Z" }, + { url = "https://files.pythonhosted.org/packages/1d/4f/02d3cb62a1b0b5a1ca7ff03dce3606be1bf3ead4744f47eb762dbf471069/bitsandbytes-0.49.1-py3-none-manylinux_2_24_x86_64.whl", hash = "sha256:e7940bf32457dc2e553685285b2a86e82f5ec10b2ae39776c408714f9ae6983c", size = 59054193, upload-time = "2026-01-08T14:31:31.743Z" }, ] [[package]] @@ -552,15 +534,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d5/3b/39e13ce78a8e9a621c5df3aeb5fd181fcc8caba8c48a194cd629771f6828/brotli-1.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:af43b8711a8264bb4e7d6d9a6d004c3a2019c04c01127a868709ec29962b6036", size = 1487913, upload-time = "2025-11-05T18:38:31.618Z" }, ] -[[package]] -name = "cachetools" -version = "7.0.5" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/af/dd/57fe3fdb6e65b25a5987fd2cdc7e22db0aef508b91634d2e57d22928d41b/cachetools-7.0.5.tar.gz", hash = "sha256:0cd042c24377200c1dcd225f8b7b12b0ca53cc2c961b43757e774ebe190fd990", size = 37367, upload-time = "2026-03-09T20:51:29.451Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/06/f3/39cf3367b8107baa44f861dc802cbf16263c945b62d8265d36034fc07bea/cachetools-7.0.5-py3-none-any.whl", hash = "sha256:46bc8ebefbe485407621d0a4264b23c080cedd913921bad7ac3ed2f26c183114", size = 13918, upload-time = "2026-03-09T20:51:27.33Z" }, -] - [[package]] name = "cbor2" version = "5.9.0" @@ -670,25 +643,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6", size = 108274, upload-time = "2025-11-15T20:45:41.139Z" }, ] -[[package]] -name = "cloudpickle" -version = "3.1.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/27/fb/576f067976d320f5f0114a8d9fa1215425441bb35627b1993e5afd8111e5/cloudpickle-3.1.2.tar.gz", hash = "sha256:7fda9eb655c9c230dab534f1983763de5835249750e85fbcef43aaa30a9a2414", size = 22330, upload-time = "2025-11-03T09:25:26.604Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/88/39/799be3f2f0f38cc727ee3b4f1445fe6d5e4133064ec2e4115069418a5bb6/cloudpickle-3.1.2-py3-none-any.whl", hash = "sha256:9acb47f6afd73f60dc1df93bb801b472f05ff42fa6c84167d25cb206be1fbf4a", size = 22228, upload-time = "2025-11-03T09:25:25.534Z" }, -] - -[[package]] -name = "cognitive-complexity" -version = "1.3.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "setuptools", version = "79.0.1", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "setuptools", version = "80.10.2", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6a/ff/3cd46792fcbf742458083527407bc336efe382b168595583a06c70bf8e54/cognitive_complexity-1.3.0.tar.gz", hash = "sha256:a0cfbd47dee0b19f4056f892389f501694b205c3af69fb703cc744541e03dde5", size = 5650, upload-time = "2022-08-09T07:07:52.952Z" } - [[package]] name = "colorama" version = "0.4.6" @@ -719,21 +673,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/60/97/891a0971e1e4a8c5d2b20bbe0e524dc04548d2307fee33cdeba148fd4fc7/comm-0.2.3-py3-none-any.whl", hash = "sha256:c615d91d75f7f04f095b30d1c1711babd43bdc6419c1be9886a85f2f4e489417", size = 7294, upload-time = "2025-07-25T14:02:02.896Z" }, ] -[[package]] -name = "compressed-tensors" -version = "0.11.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "frozendict", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "pydantic", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "torch", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "transformers", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b8/99/3fdabfc95609d6efdf02fa7f1ed0245524cb1209d3d4a17109d3205d2eed/compressed_tensors-0.11.0.tar.gz", hash = "sha256:95ddf19699f775df6494dd864e5f52e8a24f8015496520190c1a22c6cfc44b1f", size = 187566, upload-time = "2025-08-19T18:59:31.854Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d2/81/e3073017a8f5c75169e79108eda209e6089e3f96c9f197d307cbda7df71c/compressed_tensors-0.11.0-py3-none-any.whl", hash = "sha256:e1cbc46e1ae032b7ceea915fe18c8d2de5a54d3a50a607969b6bdfe703b6cb83", size = 179951, upload-time = "2025-08-19T18:59:29.308Z" }, -] - [[package]] name = "contourpy" version = "1.3.3" @@ -812,6 +751,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/41/52/a8908dcb1a389a459a29008c29966c1d552588d4ae6d43f3a1a4512e0ebe/cryptography-46.0.7-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a1529d614f44b863a7b480c6d000fe93b59acee9c82ffa027cfadc77521a9f5e", size = 4664256, upload-time = "2026-04-08T01:57:33.144Z" }, ] +[[package]] +name = "cuda-bindings" +version = "13.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cuda-pathfinder", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/67/5e7dba1ba576dd73da5dee894ca076ca5e959450dfff66d6d510a255d1f7/cuda_bindings-13.3.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c7855c4868aabc0cfae28abbe83d56734bdfbd08f08fc234ac1912a12858bf49", size = 6025351, upload-time = "2026-05-29T23:11:49.685Z" }, + { url = "https://files.pythonhosted.org/packages/39/2a/6d2e9047d1fb243dbaa364b01e0297534b9ed7fd27dba1c9f361519cf69b/cuda_bindings-13.3.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e32d08f71ebcdf00f0f41eab2eb37e8da94c8ed411cc9f7f7a019ce6b34abe3a", size = 6657965, upload-time = "2026-05-29T23:11:52.227Z" }, +] + [[package]] name = "cuda-pathfinder" version = "1.5.2" @@ -821,16 +772,43 @@ wheels = [ ] [[package]] -name = "cupy-cuda12x" -version = "14.0.1" +name = "cuda-toolkit" +version = "13.0.2" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cuda-pathfinder", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, -] wheels = [ - { url = "https://files.pythonhosted.org/packages/38/ca/b93ef9fca1471a65f136a73e10819634c0b83427362fc08fc9f29f935bf0/cupy_cuda12x-14.0.1-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:f244bc14fad6f1ef0c74abd98afa4b82d2534aecdba911197810ec0047f0d1f3", size = 145578614, upload-time = "2026-02-20T10:22:49.108Z" }, - { url = "https://files.pythonhosted.org/packages/5a/a6/944406223a190815d9df156a1d66f3b0352bd8827dc4a8c752196d616dbc/cupy_cuda12x-14.0.1-cp312-cp312-manylinux2014_x86_64.whl", hash = "sha256:9f0c81c3509f77be3ae8444759d5b314201b2dfcbbf2ae0d0b5fb7a61f20893c", size = 134613763, upload-time = "2026-02-20T10:22:56.792Z" }, + { url = "https://files.pythonhosted.org/packages/57/b2/453099f5f3b698d7d0eab38916aac44c7f76229f451709e2eb9db6615dcd/cuda_toolkit-13.0.2-py2.py3-none-any.whl", hash = "sha256:b198824cf2f54003f50d64ada3a0f184b42ca0846c1c94192fa269ecd97a66eb", size = 2364, upload-time = "2025-12-19T23:24:07.328Z" }, +] + +[package.optional-dependencies] +cudart = [ + { name = "nvidia-cuda-runtime", marker = "sys_platform == 'linux'" }, +] +cufft = [ + { name = "nvidia-cufft", marker = "sys_platform == 'linux'" }, +] +cufile = [ + { name = "nvidia-cufile", marker = "sys_platform == 'linux'" }, +] +cupti = [ + { name = "nvidia-cuda-cupti", marker = "sys_platform == 'linux'" }, +] +curand = [ + { name = "nvidia-curand", marker = "sys_platform == 'linux'" }, +] +cusolver = [ + { name = "nvidia-cusolver", marker = "sys_platform == 'linux'" }, +] +cusparse = [ + { name = "nvidia-cusparse", marker = "sys_platform == 'linux'" }, +] +nvjitlink = [ + { name = "nvidia-nvjitlink", marker = "sys_platform == 'linux'" }, +] +nvrtc = [ + { name = "nvidia-cuda-nvrtc", marker = "sys_platform == 'linux'" }, +] +nvtx = [ + { name = "nvidia-nvtx", marker = "sys_platform == 'linux'" }, ] [[package]] @@ -859,28 +837,59 @@ wheels = [ name = "datasets" version = "4.5.0" source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "sys_platform == 'win32'", + "sys_platform == 'emscripten'", +] dependencies = [ - { name = "dill" }, - { name = "filelock" }, - { name = "fsspec", extra = ["http"] }, - { name = "httpx" }, - { name = "huggingface-hub" }, - { name = "multiprocess" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "dill", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, + { name = "filelock", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, + { name = "fsspec", extra = ["http"], marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, + { name = "httpx", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, + { name = "huggingface-hub", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, + { name = "multiprocess", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, - { name = "packaging" }, - { name = "pandas" }, - { name = "pyarrow" }, - { name = "pyyaml" }, - { name = "requests" }, - { name = "tqdm" }, - { name = "xxhash" }, + { name = "packaging", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, + { name = "pandas", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, + { name = "pyarrow", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, + { name = "pyyaml", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, + { name = "requests", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, + { name = "tqdm", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, + { name = "xxhash", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/55/bf/bb927bde63d649296c83e883171ae77074717c1b80fe2868b328bd0dbcbb/datasets-4.5.0.tar.gz", hash = "sha256:00c698ce1c2452e646cc5fad47fef39d3fe78dd650a8a6eb205bb45eb63cd500", size = 588384, upload-time = "2026-01-14T18:27:54.297Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/fc/d5/0d563ea3c205eee226dc8053cf7682a8ac588db8acecd0eda2b587987a0b/datasets-4.5.0-py3-none-any.whl", hash = "sha256:b5d7e08096ffa407dd69e58b1c0271c9b2506140839b8d99af07375ad31b6726", size = 515196, upload-time = "2026-01-14T18:27:52.419Z" }, ] +[[package]] +name = "datasets" +version = "4.8.5" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "sys_platform != 'emscripten' and sys_platform != 'win32'", +] +dependencies = [ + { name = "dill", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "filelock", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "fsspec", extra = ["http"], marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "httpx", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "huggingface-hub", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "multiprocess", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "packaging", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "pandas", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "pyarrow", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "pyyaml", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "requests", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "tqdm", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "xxhash", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/34/14cd8e76f907f7d4dca2334cfeec9f81d30fd15c25a015f99aaea694eaed/datasets-4.8.5.tar.gz", hash = "sha256:0f0c1c3d56ffff2c93b2f4c63c95bac94f3d7e8621aea2a2a576275233bba772", size = 605649, upload-time = "2026-04-27T15:43:57.384Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/65/99/00f3196036501b53032c4b1ab8337a0b978dee832ed276dae3815df4e8b5/datasets-4.8.5-py3-none-any.whl", hash = "sha256:5079900781719c0e063a8efdd2cd95a31ad0c63209178669cd23cf1b926149ff", size = 528973, upload-time = "2026-04-27T15:43:53.702Z" }, +] + [[package]] name = "debugpy" version = "1.8.20" @@ -912,19 +921,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload-time = "2021-03-08T10:59:24.45Z" }, ] -[[package]] -name = "depyf" -version = "0.19.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "astor", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "dill", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/19/38/69157d711be575f1b9cf3177b64ef4ade44373fc02839f183fdd98ec2dd6/depyf-0.19.0.tar.gz", hash = "sha256:afed0916b32d141cc90fa6220df01885eda442ca43b297d5050eeb90b4a5cb44", size = 6171405, upload-time = "2025-04-20T08:07:41.224Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/28/4d/1192acbcdc5e843f5e5d51f6e8788f2b60a9fe0b578ac385ded67a0b0b26/depyf-0.19.0-py3-none-any.whl", hash = "sha256:040b35fc0997d49df024b7d094f2a7836f91e9ed02f49982dd37e70aa3285ad5", size = 39034, upload-time = "2025-04-20T08:07:37.036Z" }, -] - [[package]] name = "detect-secrets" version = "1.5.0" @@ -947,15 +943,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/50/3d/9373ad9c56321fdab5b41197068e1d8c25883b3fea29dd361f9b55116869/dill-0.4.0-py3-none-any.whl", hash = "sha256:44f54bf6412c2c8464c14e8243eb163690a9800dbe2c367330883b19c7561049", size = 119668, upload-time = "2025-04-16T00:41:47.671Z" }, ] -[[package]] -name = "diskcache" -version = "5.6.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3f/21/1c1ffc1a039ddcc459db43cc108658f32c57d271d7289a2794e401d0fdb6/diskcache-5.6.3.tar.gz", hash = "sha256:2c3a3fa2743d8535d832ec61c2054a1641f41775aa7c556758a109941e33e4fc", size = 67916, upload-time = "2023-08-31T06:12:00.316Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3f/27/4570e78fc0bf5ea0ca45eb1de3818a23787af9b390c0b0a0033a1b8236f9/diskcache-5.6.3-py3-none-any.whl", hash = "sha256:5e31b2d5fbad117cc363ebaf6b689474db18a1f6438bc82358b024abd4c2ca19", size = 45550, upload-time = "2023-08-31T06:11:58.822Z" }, -] - [[package]] name = "distlib" version = "0.4.0" @@ -974,15 +961,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2", size = 20277, upload-time = "2023-12-24T09:54:30.421Z" }, ] -[[package]] -name = "dnspython" -version = "2.8.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8c/8b/57666417c0f90f08bcafa776861060426765fdb422eb10212086fb811d26/dnspython-2.8.0.tar.gz", hash = "sha256:181d3c6996452cb1189c4046c61599b84a5a86e099562ffde77d26984ff26d0f", size = 368251, upload-time = "2025-09-07T18:58:00.022Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ba/5a/18ad964b0086c6e62e2e7500f7edc89e3faa45033c71c1893d34eed2b2de/dnspython-2.8.0-py3-none-any.whl", hash = "sha256:01d9bbc4a2d76bf0db7c1f729812ded6d912bd318d3b1cf81d30c0f845dbf3af", size = 331094, upload-time = "2025-09-07T18:57:58.071Z" }, -] - [[package]] name = "docstring-parser-fork" version = "0.0.14" @@ -1012,25 +990,12 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/2a/09/f8d8f8f31e4483c10a906437b4ce31bdf3d6d417b73fe33f1a8b59e34228/einops-0.8.2-py3-none-any.whl", hash = "sha256:54058201ac7087911181bfec4af6091bb59380360f069276601256a76af08193", size = 65638, upload-time = "2026-01-26T04:13:18.546Z" }, ] -[[package]] -name = "email-validator" -version = "2.3.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "dnspython", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "idna", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f5/22/900cb125c76b7aaa450ce02fd727f452243f2e91a61af068b40adba60ea9/email_validator-2.3.0.tar.gz", hash = "sha256:9fc05c37f2f6cf439ff414f8fc46d917929974a82244c20eb10231ba60c54426", size = 51238, upload-time = "2025-08-26T13:09:06.831Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/de/15/545e2b6cf2e3be84bc1ed85613edd75b8aea69807a71c26f4ca6a9258e82/email_validator-2.3.0-py3-none-any.whl", hash = "sha256:80f13f623413e6b197ae73bb10bf4eb0908faf509ad8362c5edeb0be7fd450b4", size = 35604, upload-time = "2025-08-26T13:09:05.858Z" }, -] - [[package]] name = "evaluate" version = "0.4.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "datasets", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "datasets", version = "4.8.5", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "dill", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "fsspec", extra = ["http"], marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "huggingface-hub", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, @@ -1073,76 +1038,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/84/a4/5caa2de7f917a04ada20018eccf60d6cc6145b0199d55ca3711b0fc08312/fastapi-0.135.3-py3-none-any.whl", hash = "sha256:9b0f590c813acd13d0ab43dd8494138eb58e484bfac405db1f3187cfc5810d98", size = 117734, upload-time = "2026-04-01T16:23:59.328Z" }, ] -[package.optional-dependencies] -standard = [ - { name = "email-validator", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "fastapi-cli", extra = ["standard"], marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "httpx", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "jinja2", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "pydantic-extra-types", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "pydantic-settings", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "python-multipart", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "uvicorn", extra = ["standard"], marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, -] - -[[package]] -name = "fastapi-cli" -version = "0.0.24" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "rich-toolkit", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "typer", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "uvicorn", extra = ["standard"], marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6e/58/74797ae9e4610cfa0c6b34c8309096d3b20bb29be3b8b5fbf1004d10fa5f/fastapi_cli-0.0.24.tar.gz", hash = "sha256:1afc9c9e21d7ebc8a3ca5e31790cd8d837742be7e4f8b9236e99cb3451f0de00", size = 19043, upload-time = "2026-02-24T10:45:10.476Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c7/4b/68f9fe268e535d79c76910519530026a4f994ce07189ac0dded45c6af825/fastapi_cli-0.0.24-py3-none-any.whl", hash = "sha256:4a1f78ed798f106b4fee85ca93b85d8fe33c0a3570f775964d37edb80b8f0edc", size = 12304, upload-time = "2026-02-24T10:45:09.552Z" }, -] - -[package.optional-dependencies] -standard = [ - { name = "fastapi-cloud-cli", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "uvicorn", extra = ["standard"], marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, -] - -[[package]] -name = "fastapi-cloud-cli" -version = "0.16.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "fastar", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "httpx", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "pydantic", extra = ["email"], marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "rich-toolkit", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "rignore", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "sentry-sdk", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "typer", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "uvicorn", extra = ["standard"], marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/22/70/ca14fae57a221610d3e2e3dfad2b6e97ee31fcafaa36f90a2158d57e9a73/fastapi_cloud_cli-0.16.1.tar.gz", hash = "sha256:33b552c4ad46cd33823ef53f93b8b7813db2306c80c1cbcfa4d72067c99b26ab", size = 46193, upload-time = "2026-04-08T09:12:54.151Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/8b/f8c9eb116d2e89de5e0875c5fce90f23143410f41fe27725be04bdcec328/fastapi_cloud_cli-0.16.1-py3-none-any.whl", hash = "sha256:8b43bd8c7dd3710393d3be4c248c6a00807202b488a543716562529a8316cbee", size = 33212, upload-time = "2026-04-08T09:12:52.949Z" }, -] - -[[package]] -name = "fastar" -version = "0.10.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5a/8a/841a8fea5d704ed19836a1f7f83fe2b2d95624a14e9ddf45823ffb518c98/fastar-0.10.0.tar.gz", hash = "sha256:cba4452d6a33894faf5b0b9d55342a1259ad5c94cbdb16af09346084e0787680", size = 70357, upload-time = "2026-04-08T01:02:01.507Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6e/dd/bc0deb3c8fc1966f074725e4f44bf6573a4f1de8e3b7d77e08371ebeb0ea/fastar-0.10.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e0df3df848fe78657f9f9b40a811606cae34aa45ad79cd51f26d6f048f0d4ae1", size = 866216, upload-time = "2026-04-08T01:00:23.092Z" }, - { url = "https://files.pythonhosted.org/packages/97/3c/45023b3538b0eb34d0ac04b6bd4dc707c1480a48e88af5365d7be7448334/fastar-0.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a453abf99af0f42bb03db90f9bd4aa69b5a7b88d50841577d428ec51f206856f", size = 761054, upload-time = "2026-04-08T00:59:20.36Z" }, - { url = "https://files.pythonhosted.org/packages/69/07/23294498fceda38c3472f2c24a6aee1478991f1fd1982392bca6345af3ae/fastar-0.10.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c6a3e7acc58377de02ff3e8937d4b7e09b1270c294a0d5a0d3c2614aee69058e", size = 758885, upload-time = "2026-04-08T00:59:32.486Z" }, - { url = "https://files.pythonhosted.org/packages/19/89/1e0b3b5ef774deb0937bfeb93d2d21147a1db7a8d741ea63903b1f5d7cd6/fastar-0.10.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50a4a5fcd001f289fe66cbcff0aaf9e081532253cd7427270734988b22db6136", size = 924750, upload-time = "2026-04-08T00:59:44.41Z" }, - { url = "https://files.pythonhosted.org/packages/b1/85/486c640b768f9f6524d9cebd32e84808070136fea5696884b946bf63ecbb/fastar-0.10.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:54f60b5a87a2884efa8fc51978989e58cb1dc0ec1f645629491cd12f1dd5bb77", size = 817365, upload-time = "2026-04-08T01:00:09.616Z" }, - { url = "https://files.pythonhosted.org/packages/f3/4b/271ac7f9067ab39cffe95f2349604ac2248906be6fd86a70abb3c9f3d8bb/fastar-0.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:edaa085c8555620ec24aac1663251d62bdece619fcf6a4ad9dc2389a5fa13220", size = 819348, upload-time = "2026-04-08T01:00:35.083Z" }, - { url = "https://files.pythonhosted.org/packages/4b/fc/ca87c6fee7eaad484711f8dca44c792e4dc0f2d3f4548c93939b06bdc7eb/fastar-0.10.0-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:4110f5a357ea88fa35f27021cf30c26d863a5b589d6ac9e4e854ed02b34c9f35", size = 885868, upload-time = "2026-04-08T00:59:56.124Z" }, - { url = "https://files.pythonhosted.org/packages/2f/00/588f0960ab1b36978d75a91bd44d9be9072c05211b04f224adcff9e83285/fastar-0.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:efa48b89ca2c8496f7fa0d36162e12d7476c597d0bae4d8fc42f86b958bd8fea", size = 968860, upload-time = "2026-04-08T01:01:12.557Z" }, - { url = "https://files.pythonhosted.org/packages/f4/4f/e07b9d82a58c27a8018d098b3ed51f561732c17fa6643c317bfba2907bdc/fastar-0.10.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:2637a20a69ea34455aa53cca8340273166bba8bd5c06727ea64ec151ba56abe0", size = 1036445, upload-time = "2026-04-08T01:01:25.512Z" }, - { url = "https://files.pythonhosted.org/packages/19/6e/de7934cea77c9938ecad2443b114cfee13a760534bb88279a0701b12fac3/fastar-0.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e9ea5e45a1dd85c3104273b4b1628112f6a09115ed95dc0d31595097ce278fb2", size = 1074104, upload-time = "2026-04-08T01:01:38.464Z" }, - { url = "https://files.pythonhosted.org/packages/7e/8d/54d56acbe2bbab3efbf2c1b93ea709e0cd78b7ff9d42b4038f520a580009/fastar-0.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:68d70adc24b9f4cf4520ed60dbd9fb60a6eb22bb96fd6756bcb387616cb2a979", size = 1026288, upload-time = "2026-04-08T01:01:51.658Z" }, -] - [[package]] name = "fastcore" version = "1.12.38" @@ -1188,45 +1083,20 @@ version = "0.4.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "einops", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "torch", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "torch", version = "2.12.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/f1/de/0d6bd5664ba2e711cabdde11ccb41ddcdd866c531e40900af3601bd7b8c6/fla_core-0.4.1.tar.gz", hash = "sha256:38ab28966eeadc2141b29e87c2bf72a8a4851e00af9d25bbbc3596b1fb53450d", size = 319608, upload-time = "2025-12-24T18:07:37.669Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/f6/43/945ef69eb48a14c30fd7323d3e0b560c821ae71e6d3ef979e06a901bc3b9/fla_core-0.4.1-py3-none-any.whl", hash = "sha256:93c6afe4c80fc7bc705fa8aeea6a46d2cf2d77383f9619a41863c7114c801bab", size = 437282, upload-time = "2025-12-24T18:07:34.41Z" }, ] -[[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, upload-time = "2025-06-20T19:31:35.838Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/56/13ab06b4f93ca7cac71078fbe37fcea175d3216f31f85c3168a6bbd0bb9a/flake8-7.3.0-py2.py3-none-any.whl", hash = "sha256:b9696257b9ce8beb888cdbe31cf885c90d31928fe202be0889a7cdafad32f01e", size = 57922, upload-time = "2025-06-20T19:31:34.425Z" }, -] - -[[package]] -name = "flake8-cognitive-complexity" -version = "0.1.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cognitive-complexity" }, - { name = "setuptools", version = "79.0.1", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "setuptools", version = "80.10.2", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e7/d6/2bb09fab21521424d5afc836aa0057d15a92f5e738e506a3e3cb035be517/flake8_cognitive_complexity-0.1.0.tar.gz", hash = "sha256:f202df054e4f6ff182b659c261922b9c684628a47beb19cb0973c50d6a7831c1", size = 3061, upload-time = "2020-08-01T05:49:18.353Z" } - [[package]] name = "flash-linear-attention" version = "0.4.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "fla-core", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "transformers", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "transformers", version = "5.10.2", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/46/83/7d8ec7ffb5229080b1c9b772338ff588cbd63282ac355ede2a12a6e174a8/flash_linear_attention-0.4.1.tar.gz", hash = "sha256:127ee7273ed15ac17f72bcf4c75e1051719d8fbe0a2d1d047e59406f36d81ee2", size = 158280, upload-time = "2025-12-24T18:07:38.812Z" } wheels = [ @@ -1259,15 +1129,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014", size = 9121, upload-time = "2021-03-11T07:16:28.351Z" }, ] -[[package]] -name = "frozendict" -version = "2.4.7" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/90/b2/2a3d1374b7780999d3184e171e25439a8358c47b481f68be883c14086b4c/frozendict-2.4.7.tar.gz", hash = "sha256:e478fb2a1391a56c8a6e10cc97c4a9002b410ecd1ac28c18d780661762e271bd", size = 317082, upload-time = "2025-11-11T22:40:14.251Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/38/74/f94141b38a51a553efef7f510fc213894161ae49b88bffd037f8d2a7cb2f/frozendict-2.4.7-py3-none-any.whl", hash = "sha256:972af65924ea25cf5b4d9326d549e69a9a4918d8a76a9d3a7cd174d98b237550", size = 16264, upload-time = "2025-11-11T22:40:12.836Z" }, -] - [[package]] name = "frozenlist" version = "1.8.0" @@ -1325,21 +1186,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/7d/f3/393d486f33bf78ce8af4ced1814e936d0e71c630e8d98c1257a06e511c9a/gcsfs-2025.10.0-py2.py3-none-any.whl", hash = "sha256:654457af3a524e03d86658c5d8c6f3887689d6aa0c2c6b1c3b2d8e1fe2b77c09", size = 36911, upload-time = "2025-10-30T15:16:29.044Z" }, ] -[[package]] -name = "gguf" -version = "0.18.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "pyyaml", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "requests", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "tqdm", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/3f/26/7622a41c39db9d7090225a4bf8368550e59694dcf7313b44f9a82b501209/gguf-0.18.0.tar.gz", hash = "sha256:b4659093d5d0dccdb5902a904d54b327f4052879fe5e90946ad5fce9f8018c2e", size = 107170, upload-time = "2026-02-27T15:05:39.254Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5e/0c/e0f1eae7535a97476fb903f65301e35da2a66182b8161066b7eb312b2cb8/gguf-0.18.0-py3-none-any.whl", hash = "sha256:af93f7ef198a265cbde5fa6a6b3101528bca285903949ab0a3e591cd993a1864", size = 114244, upload-time = "2026-02-27T15:05:37.991Z" }, -] - [[package]] name = "gitdb" version = "4.0.12" @@ -1626,18 +1472,33 @@ wheels = [ name = "hf-xet" version = "1.3.2" source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "sys_platform == 'win32'", + "sys_platform == 'emscripten'", +] sdist = { url = "https://files.pythonhosted.org/packages/8b/cb/9bb543bd987ffa1ee48202cc96a756951b734b79a542335c566148ade36c/hf_xet-1.3.2.tar.gz", hash = "sha256:e130ee08984783d12717444e538587fa2119385e5bd8fc2bb9f930419b73a7af", size = 643646, upload-time = "2026-02-27T17:26:08.051Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d8/28/dbb024e2e3907f6f3052847ca7d1a2f7a3972fafcd53ff79018977fcb3e4/hf_xet-1.3.2-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:f93b7595f1d8fefddfede775c18b5c9256757824f7f6832930b49858483cd56f", size = 3763961, upload-time = "2026-02-27T17:25:52.537Z" }, - { url = "https://files.pythonhosted.org/packages/e4/71/b99aed3823c9d1795e4865cf437d651097356a3f38c7d5877e4ac544b8e4/hf_xet-1.3.2-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:a85d3d43743174393afe27835bde0cd146e652b5fcfdbcd624602daef2ef3259", size = 3526171, upload-time = "2026-02-27T17:25:50.968Z" }, - { url = "https://files.pythonhosted.org/packages/9d/ca/907890ce6ef5598b5920514f255ed0a65f558f820515b18db75a51b2f878/hf_xet-1.3.2-cp37-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7c2a054a97c44e136b1f7f5a78f12b3efffdf2eed3abc6746fc5ea4b39511633", size = 4180750, upload-time = "2026-02-27T17:25:43.125Z" }, - { url = "https://files.pythonhosted.org/packages/8c/ad/bc7f41f87173d51d0bce497b171c4ee0cbde1eed2d7b4216db5d0ada9f50/hf_xet-1.3.2-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:06b724a361f670ae557836e57801b82c75b534812e351a87a2c739f77d1e0635", size = 3961035, upload-time = "2026-02-27T17:25:41.837Z" }, - { url = "https://files.pythonhosted.org/packages/73/38/600f4dda40c4a33133404d9fe644f1d35ff2d9babb4d0435c646c63dd107/hf_xet-1.3.2-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:305f5489d7241a47e0458ef49334be02411d1d0f480846363c1c8084ed9916f7", size = 4161378, upload-time = "2026-02-27T17:26:00.365Z" }, - { url = "https://files.pythonhosted.org/packages/00/b3/7bc1ff91d1ac18420b7ad1e169b618b27c00001b96310a89f8a9294fe509/hf_xet-1.3.2-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:06cdbde243c85f39a63b28e9034321399c507bcd5e7befdd17ed2ccc06dfe14e", size = 4398020, upload-time = "2026-02-27T17:26:03.977Z" }, { url = "https://files.pythonhosted.org/packages/2b/0b/99bfd948a3ed3620ab709276df3ad3710dcea61976918cce8706502927af/hf_xet-1.3.2-cp37-abi3-win_amd64.whl", hash = "sha256:9298b47cce6037b7045ae41482e703c471ce36b52e73e49f71226d2e8e5685a1", size = 3641624, upload-time = "2026-02-27T17:26:13.542Z" }, { url = "https://files.pythonhosted.org/packages/cc/02/9a6e4ca1f3f73a164c0cd48e41b3cc56585dcc37e809250de443d673266f/hf_xet-1.3.2-cp37-abi3-win_arm64.whl", hash = "sha256:83d8ec273136171431833a6957e8f3af496bee227a0fe47c7b8b39c106d1749a", size = 3503976, upload-time = "2026-02-27T17:26:12.123Z" }, ] +[[package]] +name = "hf-xet" +version = "1.4.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "sys_platform != 'emscripten' and sys_platform != 'win32'", +] +sdist = { url = "https://files.pythonhosted.org/packages/53/92/ec9ad04d0b5728dca387a45af7bc98fbb0d73b2118759f5f6038b61a57e8/hf_xet-1.4.3.tar.gz", hash = "sha256:8ddedb73c8c08928c793df2f3401ec26f95be7f7e516a7bee2fbb546f6676113", size = 670477, upload-time = "2026-03-31T22:40:07.874Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ac/9f/9c23e4a447b8f83120798f9279d0297a4d1360bdbf59ef49ebec78fe2545/hf_xet-1.4.3-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:d0da85329eaf196e03e90b84c2d0aca53bd4573d097a75f99609e80775f98025", size = 3805048, upload-time = "2026-03-31T22:39:53.105Z" }, + { url = "https://files.pythonhosted.org/packages/0b/f8/7aacb8e5f4a7899d39c787b5984e912e6c18b11be136ef13947d7a66d265/hf_xet-1.4.3-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:e23717ce4186b265f69afa66e6f0069fe7efbf331546f5c313d00e123dc84583", size = 3562178, upload-time = "2026-03-31T22:39:51.295Z" }, + { url = "https://files.pythonhosted.org/packages/df/9a/a24b26dc8a65f0ecc0fe5be981a19e61e7ca963b85e062c083f3a9100529/hf_xet-1.4.3-cp37-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc360b70c815bf340ed56c7b8c63aacf11762a4b099b2fe2c9bd6d6068668c08", size = 4212320, upload-time = "2026-03-31T22:39:42.922Z" }, + { url = "https://files.pythonhosted.org/packages/53/60/46d493db155d2ee2801b71fb1b0fd67696359047fdd8caee2c914cc50c79/hf_xet-1.4.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:39f2d2e9654cd9b4319885733993807aab6de9dfbd34c42f0b78338d6617421f", size = 3991546, upload-time = "2026-03-31T22:39:41.335Z" }, + { url = "https://files.pythonhosted.org/packages/bc/f5/067363e1c96c6b17256910830d1b54099d06287e10f4ec6ec4e7e08371fc/hf_xet-1.4.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:49ad8a8cead2b56051aa84d7fce3e1335efe68df3cf6c058f22a65513885baac", size = 4193200, upload-time = "2026-03-31T22:40:01.936Z" }, + { url = "https://files.pythonhosted.org/packages/42/4b/53951592882d9c23080c7644542fda34a3813104e9e11fa1a7d82d419cb8/hf_xet-1.4.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:7716d62015477a70ea272d2d68cd7cad140f61c52ee452e133e139abfe2c17ba", size = 4429392, upload-time = "2026-03-31T22:40:03.492Z" }, +] + [[package]] name = "hpack" version = "4.1.0" @@ -1660,18 +1521,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, ] -[[package]] -name = "httptools" -version = "0.7.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b5/46/120a669232c7bdedb9d52d4aeae7e6c7dfe151e99dc70802e2fc7a5e1993/httptools-0.7.1.tar.gz", hash = "sha256:abd72556974f8e7c74a259655924a717a2365b236c882c3f6f8a45fe94703ac9", size = 258961, upload-time = "2025-10-10T03:55:08.559Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/84/a6/b3965e1e146ef5762870bbe76117876ceba51a201e18cc31f5703e454596/httptools-0.7.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2c15f37ef679ab9ecc06bfc4e6e8628c32a8e4b305459de7cf6785acd57e4d03", size = 517655, upload-time = "2025-10-10T03:54:41.347Z" }, - { url = "https://files.pythonhosted.org/packages/11/7d/71fee6f1844e6fa378f2eddde6c3e41ce3a1fb4b2d81118dd544e3441ec0/httptools-0.7.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7fe6e96090df46b36ccfaf746f03034e5ab723162bc51b0a4cf58305324036f2", size = 511440, upload-time = "2025-10-10T03:54:42.452Z" }, - { url = "https://files.pythonhosted.org/packages/22/a5/079d216712a4f3ffa24af4a0381b108aa9c45b7a5cc6eb141f81726b1823/httptools-0.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f72fdbae2dbc6e68b8239defb48e6a5937b12218e6ffc2c7846cc37befa84362", size = 495186, upload-time = "2025-10-10T03:54:43.937Z" }, - { url = "https://files.pythonhosted.org/packages/e9/9e/025ad7b65278745dee3bd0ebf9314934c4592560878308a6121f7f812084/httptools-0.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e99c7b90a29fd82fea9ef57943d501a16f3404d7b9ee81799d41639bdaae412c", size = 499192, upload-time = "2025-10-10T03:54:45.003Z" }, -] - [[package]] name = "httpx" version = "0.28.1" @@ -1694,7 +1543,8 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "filelock" }, { name = "fsspec" }, - { name = "hf-xet", marker = "platform_machine == 'AMD64' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64'" }, + { name = "hf-xet", version = "1.3.2", source = { registry = "https://pypi.org/simple" }, marker = "(platform_machine == 'AMD64' and sys_platform == 'emscripten') or (platform_machine == 'aarch64' and sys_platform == 'emscripten') or (platform_machine == 'amd64' and sys_platform == 'emscripten') or (platform_machine == 'arm64' and sys_platform == 'emscripten') or (platform_machine == 'x86_64' and sys_platform == 'emscripten') or (platform_machine == 'AMD64' and sys_platform == 'win32') or (platform_machine == 'aarch64' and sys_platform == 'win32') or (platform_machine == 'amd64' and sys_platform == 'win32') or (platform_machine == 'arm64' and sys_platform == 'win32') or (platform_machine == 'x86_64' and sys_platform == 'win32')" }, + { name = "hf-xet", version = "1.4.3", source = { registry = "https://pypi.org/simple" }, marker = "(platform_machine == 'AMD64' and sys_platform != 'emscripten' and sys_platform != 'win32') or (platform_machine == 'aarch64' and sys_platform != 'emscripten' and sys_platform != 'win32') or (platform_machine == 'amd64' and sys_platform != 'emscripten' and sys_platform != 'win32') or (platform_machine == 'arm64' and sys_platform != 'emscripten' and sys_platform != 'win32') or (platform_machine == 'x86_64' and sys_platform != 'emscripten' and sys_platform != 'win32')" }, { name = "httpx" }, { name = "packaging" }, { name = "pyyaml" }, @@ -1761,15 +1611,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 7484, upload-time = "2025-10-18T21:55:41.639Z" }, ] -[[package]] -name = "interegular" -version = "0.3.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/dc/9d/8b6dde58a028a3962ce17e84d5fe73758df61378e00ef8ac3d85da34b0ff/interegular-0.3.3.tar.gz", hash = "sha256:d9b697b21b34884711399ba0f0376914b81899ce670032486d0d048344a76600", size = 24705, upload-time = "2024-01-06T23:01:22.372Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c4/01/72d6472f80651673716d1deda2a5bbb633e563ecf94f4479da5519d69d25/interegular-0.3.3-py37-none-any.whl", hash = "sha256:b0c07007d48c89d6d19f7204972d369b2a77222722e126b6aa63aa721dc3b19c", size = 23635, upload-time = "2024-01-06T23:01:20.829Z" }, -] - [[package]] name = "ipykernel" version = "7.2.0" @@ -1890,25 +1731,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, ] -[[package]] -name = "jiter" -version = "0.14.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6e/c1/0cddc6eb17d4c53a99840953f95dd3accdc5cfc7a337b0e9b26476276be9/jiter-0.14.0.tar.gz", hash = "sha256:e8a39e66dac7153cf3f964a12aad515afa8d74938ec5cc0018adcdae5367c79e", size = 165725, upload-time = "2026-04-10T14:28:42.01Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/41/a1/4f44832650a16b18e8391f1bf1d6ca4909bc738351826bcc198bba4357f4/jiter-0.14.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c409578cbd77c338975670ada777add4efd53379667edf0aceea730cabede6fb", size = 343730, upload-time = "2026-04-10T14:26:28.326Z" }, - { url = "https://files.pythonhosted.org/packages/48/64/a329e9d469f86307203594b1707e11ae51c3348d03bfd514a5f997870012/jiter-0.14.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7ede4331a1899d604463369c730dbb961ffdc5312bc7f16c41c2896415b1304a", size = 370102, upload-time = "2026-04-10T14:26:30.089Z" }, - { url = "https://files.pythonhosted.org/packages/94/c1/5e3dfc59635aa4d4c7bd20a820ac1d09b8ed851568356802cf1c08edb3cf/jiter-0.14.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:92cd8b6025981a041f5310430310b55b25ca593972c16407af8837d3d7d2ca01", size = 461335, upload-time = "2026-04-10T14:26:31.911Z" }, - { url = "https://files.pythonhosted.org/packages/e3/1b/dd157009dbc058f7b00108f545ccb72a2d56461395c4fc7b9cfdccb00af4/jiter-0.14.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:351bf6eda4e3a7ceb876377840c702e9a3e4ecc4624dbfb2d6463c67ae52637d", size = 378536, upload-time = "2026-04-10T14:26:33.595Z" }, - { url = "https://files.pythonhosted.org/packages/91/78/256013667b7c10b8834f8e6e54cd3e562d4c6e34227a1596addccc05e38c/jiter-0.14.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c1dcfbeb93d9ecd9ca128bbf8910120367777973fa193fb9a39c31237d8df165", size = 353859, upload-time = "2026-04-10T14:26:35.098Z" }, - { url = "https://files.pythonhosted.org/packages/de/d9/137d65ade9093a409fe80955ce60b12bb753722c986467aeda47faf450ad/jiter-0.14.0-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:ae039aaef8de3f8157ecc1fdd4d85043ac4f57538c245a0afaecb8321ec951c3", size = 357626, upload-time = "2026-04-10T14:26:36.685Z" }, - { url = "https://files.pythonhosted.org/packages/2e/48/76750835b87029342727c1a268bea8878ab988caf81ee4e7b880900eeb5a/jiter-0.14.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7d9d51eb96c82a9652933bd769fe6de66877d6eb2b2440e281f2938c51b5643e", size = 393172, upload-time = "2026-04-10T14:26:38.097Z" }, - { url = "https://files.pythonhosted.org/packages/a6/60/456c4e81d5c8045279aefe60e9e483be08793828800a4e64add8fdde7f2a/jiter-0.14.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d824ca4148b705970bf4e120924a212fdfca9859a73e42bd7889a63a4ea6bb98", size = 520300, upload-time = "2026-04-10T14:26:39.532Z" }, - { url = "https://files.pythonhosted.org/packages/a8/9f/2020e0984c235f678dced38fe4eec3058cf528e6af36ebf969b410305941/jiter-0.14.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ff3a6465b3a0f54b1a430f45c3c0ba7d61ceb45cbc3e33f9e1a7f638d690baf3", size = 553059, upload-time = "2026-04-10T14:26:40.991Z" }, - { url = "https://files.pythonhosted.org/packages/ca/44/e26ede3f0caeff93f222559cb0cc4ca68579f07d009d7b6010c5b586f9b1/jiter-0.14.0-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:432c4db5255d86a259efde91e55cb4c8d18c0521d844c9e2e7efcce3899fb016", size = 343039, upload-time = "2026-04-10T14:28:38.356Z" }, - { url = "https://files.pythonhosted.org/packages/da/e9/1f9ada30cef7b05e74bb06f52127e7a724976c225f46adb65c37b1dadfb6/jiter-0.14.0-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67f00d94b281174144d6532a04b66a12cb866cbdc47c3af3bfe2973677f9861a", size = 349613, upload-time = "2026-04-10T14:28:40.066Z" }, -] - [[package]] name = "jmespath" version = "1.1.0" @@ -2153,16 +1975,17 @@ wheels = [ [[package]] name = "kernels" -version = "0.12.2" +version = "0.13.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "huggingface-hub", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "packaging", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "pyyaml", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "tomlkit", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a9/07/d2b635e965b232cae1aa873c6e0458947196be8dca7bb02e64d3cd6e8d19/kernels-0.12.2.tar.gz", hash = "sha256:812fc43c2814f046cee655cbebf3918cddd489715773670bdb38cca3f5203b5b", size = 57108, upload-time = "2026-03-04T10:03:00.379Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3e/0d/e9c158c527a7b51382fe816a7b7e60caae17ff1153640c1803211a067c99/kernels-0.13.0.tar.gz", hash = "sha256:bf7908206009bff0017d09b87f0f6b5934a1a20520562caf1cbb06cab36418cc", size = 74755, upload-time = "2026-04-10T14:30:45.356Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/08/be/f5d6758b48633e4f6a28198fcf4bf9f763cc6a82e2335d9fe8802a5cb440/kernels-0.12.2-py3-none-any.whl", hash = "sha256:1289261804748cf3cf8e3afab80b505b0f1b28e4ec88379cdf08dc31e64964b8", size = 55205, upload-time = "2026-03-04T10:02:59.305Z" }, + { url = "https://files.pythonhosted.org/packages/b3/45/2cb29e965c199ab01151fee24cbb57b23550c9e6bc897ca242b1e4b8c4bf/kernels-0.13.0-py3-none-any.whl", hash = "sha256:5d857ee4e06dc7496bcd59c4756e84eb71c019b34524dea58ccb0eaaae3bb6df", size = 69177, upload-time = "2026-04-10T14:30:43.551Z" }, ] [[package]] @@ -2240,13 +2063,16 @@ wheels = [ ] [[package]] -name = "llguidance" -version = "0.7.30" +name = "liger-kernel" +version = "0.8.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bf/38/d1ef3ae08d8d857e5e0690c5b1e07bf7eb4a1cae5881d87215826dc6cadb/llguidance-0.7.30.tar.gz", hash = "sha256:e93bf75f2b6e48afb86a5cee23038746975e1654672bf5ba0ae75f7d4d4a2248", size = 1055528, upload-time = "2025-06-23T00:23:49.247Z" } +dependencies = [ + { name = "torch", version = "2.12.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "triton", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/41/d6/85f032b40fc30c969e817f9f3527f987b508171b46d9958befd0868855fd/liger_kernel-0.8.0.tar.gz", hash = "sha256:f98b94faf018814a0757e7b72bb8ebaaf12a78782cd09b157732acca2791e72c", size = 3989670, upload-time = "2026-04-30T23:02:15.183Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9c/5b/6a166564b14f9f805f0ea01ec233a84f55789cb7eeffe1d6224ccd0e6cdd/llguidance-0.7.30-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:af8741c867e4bc7e42f7cdc68350c076b4edd0ca10ecefbde75f15a9f6bc25d0", size = 14867038, upload-time = "2025-06-23T00:23:39.571Z" }, - { url = "https://files.pythonhosted.org/packages/af/80/5a40b9689f17612434b820854cba9b8cabd5142072c491b5280fe5f7a35e/llguidance-0.7.30-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9edc409b9decd6cffba5f5bf3b4fbd7541f95daa8cbc9510cbf96c6ab1ffc153", size = 15004926, upload-time = "2025-06-23T00:23:43.965Z" }, + { url = "https://files.pythonhosted.org/packages/7c/6b/eb29b56f128a819e2cded552e293212c57daa949481206b82490b207deac/liger_kernel-0.8.0-py3-none-any.whl", hash = "sha256:e1f03eeb4ba6a6a413d585dacf92c4c15d164bab5844fa4ead2fede6bcac469c", size = 403120, upload-time = "2026-04-30T23:02:13.443Z" }, ] [[package]] @@ -2264,7 +2090,7 @@ name = "lm-eval" version = "0.4.11" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "datasets", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "datasets", version = "4.8.5", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "dill", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "evaluate", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "jinja2", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, @@ -2285,21 +2111,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/df/b3/8c2923ad4c4d911307e20ab9c7d7869d3811b5a76fe6dbe53678aafbeb04/lm_eval-0.4.11-py3-none-any.whl", hash = "sha256:9c9945475a715558649a38ffcb90f46e7bd23a849524a5e838f249161b030517", size = 8744826, upload-time = "2026-02-13T20:22:56.317Z" }, ] -[[package]] -name = "lm-format-enforcer" -version = "0.11.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "interegular", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "packaging", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "pydantic", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "pyyaml", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/84/d5/41cd417ba7dfdbbcfe46cebf81fb3dfd7c591b89897560ad05bb410a465d/lm_format_enforcer-0.11.3.tar.gz", hash = "sha256:e68081c108719cce284a9bcc889709b26ffb085a1945b5eba3a12cfa96d528da", size = 40258, upload-time = "2025-08-24T19:37:47.527Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/ef/11292bb0b85cf4c93447cab5a29f64576ed14d3ab4280e35ddd23486594a/lm_format_enforcer-0.11.3-py3-none-any.whl", hash = "sha256:cf586350875def1ae7a8fba84fcbbfc8371424b6c9d05c1fcba70aa233fbf06f", size = 45418, upload-time = "2025-08-24T19:37:46.325Z" }, -] - [[package]] name = "lxml" version = "6.0.4" @@ -2412,15 +2223,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/30/ac/5ce64a1d4cce00390beab88622a290420401f1cabf05caf2fc0995157c21/mbstrdecoder-1.1.4-py3-none-any.whl", hash = "sha256:03dae4ec50ec0d2ff4743e63fdbd5e0022815857494d35224b60775d3d934a8c", size = 7933, upload-time = "2025-01-18T10:07:29.562Z" }, ] -[[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, upload-time = "2022-01-24T01:14:51.113Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c207934b35b86a8ca3aad8395a3d6dd7921c0686e23853ff5a9/mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e", size = 7350, upload-time = "2022-01-24T01:14:49.62Z" }, -] - [[package]] name = "mdurl" version = "0.1.2" @@ -2449,15 +2251,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/60/e4/73ad3c27e3fb613c3ce0953c928202c46cddebac3989b87be1b6f305a9f6/mistral_common-1.11.0-py3-none-any.whl", hash = "sha256:1d3ecaf7c3aa7338cb37b596fd0fb294485753958ee8e7254a6cc23eb30b249b", size = 6531513, upload-time = "2026-04-01T13:54:16.536Z" }, ] -[package.optional-dependencies] -audio = [ - { name = "soundfile", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "soxr", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, -] -image = [ - { name = "opencv-python-headless", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, -] - [[package]] name = "mistune" version = "3.2.0" @@ -2537,34 +2330,10 @@ wheels = [ ] [[package]] -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, upload-time = "2025-10-08T09:15:56.596Z" } -wheels = [ - { 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, upload-time = "2025-10-08T09:15:05.136Z" }, - { 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, upload-time = "2025-10-08T09:15:06.837Z" }, - { 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, upload-time = "2025-10-08T09:15:08.179Z" }, - { 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, upload-time = "2025-10-08T09:15:09.83Z" }, -] - -[[package]] -name = "msgspec" -version = "0.21.1" +name = "multidict" +version = "6.7.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e3/60/f79b9b013a16fa3a58350c9295ddc6789f2e335f36ea61ed10a21b215364/msgspec-0.21.1.tar.gz", hash = "sha256:2313508e394b0d208f8f56892ca9b2799e2561329de9763b19619595a6c0f72c", size = 319193, upload-time = "2026-04-12T21:44:50.394Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8a/37/655101799590bcc5fddb2bd3fe0e6194e816c2d1da7c361725f5eb89a910/msgspec-0.21.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:846758412e9518252b2ac9bffd6f0e54d9ff614f5f9488df7749f81ff5c80920", size = 218871, upload-time = "2026-04-12T21:44:09.917Z" }, - { url = "https://files.pythonhosted.org/packages/b5/d1/d4cd9fe89c7d400d7a18f86ccc94daa3f0927f53558846fcb60791dce5d6/msgspec-0.21.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:21995e74b5c598c2e004110ad66ec7f1b8c20bf2bcf3b2de8fd9a3094422d3ff", size = 225025, upload-time = "2026-04-12T21:44:11.191Z" }, - { url = "https://files.pythonhosted.org/packages/24/bf/e20549e602b9edccadeeff98760345a416f9cce846a657e8b18e3396b212/msgspec-0.21.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6129f0cca52992e898fd5344187f7c8127b63d810b2fd73e36fca73b4c6475ee", size = 222672, upload-time = "2026-04-12T21:44:12.481Z" }, - { url = "https://files.pythonhosted.org/packages/b4/68/04d7a8f0f786545cf9b8c280c57aa6befb5977af6e884b8b54191cbe44b3/msgspec-0.21.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ef3ec2296248d1f8b9231acb051b6d471dfde8f21819e86c9adaaa9f42918521", size = 227303, upload-time = "2026-04-12T21:44:13.709Z" }, -] - -[[package]] -name = "multidict" -version = "6.7.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1a/c2/c2d94cbe6ac1753f3fc980da97b3d930efe1da3af3c9f5125354436c073d/multidict-6.7.1.tar.gz", hash = "sha256:ec6652a1bee61c53a3e5776b6049172c53b6aaba34f18c9ad04f82712bac623d", size = 102010, upload-time = "2026-01-26T02:46:45.979Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1a/c2/c2d94cbe6ac1753f3fc980da97b3d930efe1da3af3c9f5125354436c073d/multidict-6.7.1.tar.gz", hash = "sha256:ec6652a1bee61c53a3e5776b6049172c53b6aaba34f18c9ad04f82712bac623d", size = 102010, upload-time = "2026-01-26T02:46:45.979Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/8d/9c/f20e0e2cf80e4b2e4b1c365bf5fe104ee633c751a724246262db8f1a0b13/multidict-6.7.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a90f75c956e32891a4eda3639ce6dd86e87105271f43d43442a3aedf3cddf172", size = 76893, upload-time = "2026-01-26T02:43:52.754Z" }, { url = "https://files.pythonhosted.org/packages/fe/cf/18ef143a81610136d3da8193da9d80bfe1cb548a1e2d1c775f26b23d024a/multidict-6.7.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fccb473e87eaa1382689053e4a4618e7ba7b9b9b8d6adf2027ee474597128cd", size = 45456, upload-time = "2026-01-26T02:43:53.893Z" }, @@ -2715,28 +2484,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl", hash = "sha256:d47fbf302e7d9cbbb9e2555a0d267983d2aa476bac30e90dfbe5669bd57f3762", size = 2068504, upload-time = "2025-12-08T17:02:38.159Z" }, ] -[[package]] -name = "ninja" -version = "1.13.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/73/79a0b22fc731989c708068427579e840a6cf4e937fe7ae5c5d0b7356ac22/ninja-1.13.0.tar.gz", hash = "sha256:4a40ce995ded54d9dc24f8ea37ff3bf62ad192b547f6c7126e7e25045e76f978", size = 242558, upload-time = "2025-08-11T15:10:19.421Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8e/de/6e1cd6b84b412ac1ef327b76f0641aeb5dcc01e9d3f9eee0286d0c34fd93/ninja-1.13.0-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3d00c692fb717fd511abeb44b8c5d00340c36938c12d6538ba989fe764e79630", size = 177467, upload-time = "2025-08-11T15:09:52.767Z" }, - { url = "https://files.pythonhosted.org/packages/c8/83/49320fb6e58ae3c079381e333575fdbcf1cca3506ee160a2dcce775046fa/ninja-1.13.0-py3-none-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:be7f478ff9f96a128b599a964fc60a6a87b9fa332ee1bd44fa243ac88d50291c", size = 187834, upload-time = "2025-08-11T15:09:54.115Z" }, - { url = "https://files.pythonhosted.org/packages/56/c7/ba22748fb59f7f896b609cd3e568d28a0a367a6d953c24c461fe04fc4433/ninja-1.13.0-py3-none-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:60056592cf495e9a6a4bea3cd178903056ecb0943e4de45a2ea825edb6dc8d3e", size = 202736, upload-time = "2025-08-11T15:09:55.745Z" }, - { url = "https://files.pythonhosted.org/packages/79/22/d1de07632b78ac8e6b785f41fa9aad7a978ec8c0a1bf15772def36d77aac/ninja-1.13.0-py3-none-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:1c97223cdda0417f414bf864cfb73b72d8777e57ebb279c5f6de368de0062988", size = 179034, upload-time = "2025-08-11T15:09:57.394Z" }, - { url = "https://files.pythonhosted.org/packages/ed/de/0e6edf44d6a04dabd0318a519125ed0415ce437ad5a1ec9b9be03d9048cf/ninja-1.13.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fb46acf6b93b8dd0322adc3a4945452a4e774b75b91293bafcc7b7f8e6517dfa", size = 180716, upload-time = "2025-08-11T15:09:58.696Z" }, - { url = "https://files.pythonhosted.org/packages/54/28/938b562f9057aaa4d6bfbeaa05e81899a47aebb3ba6751e36c027a7f5ff7/ninja-1.13.0-py3-none-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:4be9c1b082d244b1ad7ef41eb8ab088aae8c109a9f3f0b3e56a252d3e00f42c1", size = 146843, upload-time = "2025-08-11T15:10:00.046Z" }, - { url = "https://files.pythonhosted.org/packages/2a/fb/d06a3838de4f8ab866e44ee52a797b5491df823901c54943b2adb0389fbb/ninja-1.13.0-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:6739d3352073341ad284246f81339a384eec091d9851a886dfa5b00a6d48b3e2", size = 154402, upload-time = "2025-08-11T15:10:01.657Z" }, - { url = "https://files.pythonhosted.org/packages/31/bf/0d7808af695ceddc763cf251b84a9892cd7f51622dc8b4c89d5012779f06/ninja-1.13.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:11be2d22027bde06f14c343f01d31446747dbb51e72d00decca2eb99be911e2f", size = 552388, upload-time = "2025-08-11T15:10:03.349Z" }, - { url = "https://files.pythonhosted.org/packages/9d/70/c99d0c2c809f992752453cce312848abb3b1607e56d4cd1b6cded317351a/ninja-1.13.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:aa45b4037b313c2f698bc13306239b8b93b4680eb47e287773156ac9e9304714", size = 472501, upload-time = "2025-08-11T15:10:04.735Z" }, - { url = "https://files.pythonhosted.org/packages/9f/43/c217b1153f0e499652f5e0766da8523ce3480f0a951039c7af115e224d55/ninja-1.13.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:5f8e1e8a1a30835eeb51db05cf5a67151ad37542f5a4af2a438e9490915e5b72", size = 638280, upload-time = "2025-08-11T15:10:06.512Z" }, - { url = "https://files.pythonhosted.org/packages/8c/45/9151bba2c8d0ae2b6260f71696330590de5850e5574b7b5694dce6023e20/ninja-1.13.0-py3-none-musllinux_1_2_ppc64le.whl", hash = "sha256:3d7d7779d12cb20c6d054c61b702139fd23a7a964ec8f2c823f1ab1b084150db", size = 642420, upload-time = "2025-08-11T15:10:08.35Z" }, - { url = "https://files.pythonhosted.org/packages/3c/fb/95752eb635bb8ad27d101d71bef15bc63049de23f299e312878fc21cb2da/ninja-1.13.0-py3-none-musllinux_1_2_riscv64.whl", hash = "sha256:d741a5e6754e0bda767e3274a0f0deeef4807f1fec6c0d7921a0244018926ae5", size = 585106, upload-time = "2025-08-11T15:10:09.818Z" }, - { url = "https://files.pythonhosted.org/packages/c1/31/aa56a1a286703800c0cbe39fb4e82811c277772dc8cd084f442dd8e2938a/ninja-1.13.0-py3-none-musllinux_1_2_s390x.whl", hash = "sha256:e8bad11f8a00b64137e9b315b137d8bb6cbf3086fbdc43bf1f90fd33324d2e96", size = 707138, upload-time = "2025-08-11T15:10:11.366Z" }, - { url = "https://files.pythonhosted.org/packages/34/6f/5f5a54a1041af945130abdb2b8529cbef0cdcbbf9bcf3f4195378319d29a/ninja-1.13.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:b4f2a072db3c0f944c32793e91532d8948d20d9ab83da9c0c7c15b5768072200", size = 581758, upload-time = "2025-08-11T15:10:13.295Z" }, -] - [[package]] name = "nltk" version = "3.9.4" @@ -2838,105 +2585,119 @@ wheels = [ ] [[package]] -name = "nvidia-cublas-cu12" -version = "12.8.4.1" +name = "nvidia-cublas" +version = "13.1.1.3" source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-cuda-nvrtc", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, +] wheels = [ - { url = "https://files.pythonhosted.org/packages/dc/61/e24b560ab2e2eaeb3c839129175fb330dfcfc29e5203196e5541a4c44682/nvidia_cublas_cu12-12.8.4.1-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:8ac4e771d5a348c551b2a426eda6193c19aa630236b418086020df5ba9667142", size = 594346921, upload-time = "2025-03-07T01:44:31.254Z" }, + { url = "https://files.pythonhosted.org/packages/a7/a1/0bd24ee8c8d03adac032fd2909426a00c88f8c57961b1277ded97f91119f/nvidia_cublas-13.1.1.3-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:b7a210458267ac818974c53038fbec2e969d5c99f305ab15c72522fa9f001dd5", size = 542848918, upload-time = "2026-04-08T18:46:22.985Z" }, + { url = "https://files.pythonhosted.org/packages/3b/cd/154ca20c38269e05eff77c1464e6c1da89f50a6390b565e9d82e06bc11e1/nvidia_cublas-13.1.1.3-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:37936a16db8fe4ac1f065c2139360608a543a09275cb1a1af612e08cfa065436", size = 423138758, upload-time = "2026-04-08T18:46:58.655Z" }, ] [[package]] -name = "nvidia-cuda-cupti-cu12" -version = "12.8.90" +name = "nvidia-cuda-cupti" +version = "13.0.85" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f8/02/2adcaa145158bf1a8295d83591d22e4103dbfd821bcaf6f3f53151ca4ffa/nvidia_cuda_cupti_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ea0cb07ebda26bb9b29ba82cda34849e73c166c18162d3913575b0c9db9a6182", size = 10248621, upload-time = "2025-03-07T01:40:21.213Z" }, + { url = "https://files.pythonhosted.org/packages/2a/2a/80353b103fc20ce05ef51e928daed4b6015db4aaa9162ed0997090fe2250/nvidia_cuda_cupti-13.0.85-py3-none-manylinux_2_25_aarch64.whl", hash = "sha256:796bd679890ee55fb14a94629b698b6db54bcfd833d391d5e94017dd9d7d3151", size = 10310827, upload-time = "2025-09-04T08:26:42.012Z" }, + { url = "https://files.pythonhosted.org/packages/33/6d/737d164b4837a9bbd202f5ae3078975f0525a55730fe871d8ed4e3b952b0/nvidia_cuda_cupti-13.0.85-py3-none-manylinux_2_25_x86_64.whl", hash = "sha256:4eb01c08e859bf924d222250d2e8f8b8ff6d3db4721288cf35d14252a4d933c8", size = 10715597, upload-time = "2025-09-04T08:26:51.312Z" }, ] [[package]] -name = "nvidia-cuda-nvrtc-cu12" -version = "12.8.93" +name = "nvidia-cuda-nvrtc" +version = "13.0.88" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/05/6b/32f747947df2da6994e999492ab306a903659555dddc0fbdeb9d71f75e52/nvidia_cuda_nvrtc_cu12-12.8.93-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:a7756528852ef889772a84c6cd89d41dfa74667e24cca16bb31f8f061e3e9994", size = 88040029, upload-time = "2025-03-07T01:42:13.562Z" }, + { url = "https://files.pythonhosted.org/packages/c3/68/483a78f5e8f31b08fb1bb671559968c0ca3a065ac7acabfc7cee55214fd6/nvidia_cuda_nvrtc-13.0.88-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:ad9b6d2ead2435f11cbb6868809d2adeeee302e9bb94bcf0539c7a40d80e8575", size = 90215200, upload-time = "2025-09-04T08:28:44.204Z" }, + { url = "https://files.pythonhosted.org/packages/b7/dc/6bb80850e0b7edd6588d560758f17e0550893a1feaf436807d64d2da040f/nvidia_cuda_nvrtc-13.0.88-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d27f20a0ca67a4bb34268a5e951033496c5b74870b868bacd046b1b8e0c3267b", size = 43015449, upload-time = "2025-09-04T08:28:20.239Z" }, ] [[package]] -name = "nvidia-cuda-runtime-cu12" -version = "12.8.90" +name = "nvidia-cuda-runtime" +version = "13.0.96" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0d/9b/a997b638fcd068ad6e4d53b8551a7d30fe8b404d6f1804abf1df69838932/nvidia_cuda_runtime_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:adade8dcbd0edf427b7204d480d6066d33902cab2a4707dcfc48a2d0fd44ab90", size = 954765, upload-time = "2025-03-07T01:40:01.615Z" }, + { url = "https://files.pythonhosted.org/packages/87/4f/17d7b9b8e285199c58ce28e31b5c5bbaa4d8271af06a89b6405258245de2/nvidia_cuda_runtime-13.0.96-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ef9bcbe90493a2b9d810e43d249adb3d02e98dd30200d86607d8d02687c43f55", size = 2261060, upload-time = "2025-10-09T08:55:15.78Z" }, + { url = "https://files.pythonhosted.org/packages/2e/24/d1558f3b68b1d26e706813b1d10aa1d785e4698c425af8db8edc3dced472/nvidia_cuda_runtime-13.0.96-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7f82250d7782aa23b6cfe765ecc7db554bd3c2870c43f3d1821f1d18aebf0548", size = 2243632, upload-time = "2025-10-09T08:55:36.117Z" }, ] [[package]] -name = "nvidia-cudnn-cu12" -version = "9.10.2.21" +name = "nvidia-cudnn-cu13" +version = "9.20.0.48" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "nvidia-cublas-cu12", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "nvidia-cublas", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/ba/51/e123d997aa098c61d029f76663dedbfb9bc8dcf8c60cbd6adbe42f76d049/nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:949452be657fa16687d0930933f032835951ef0892b37d2d53824d1a84dc97a8", size = 706758467, upload-time = "2025-06-06T21:54:08.597Z" }, + { url = "https://files.pythonhosted.org/packages/56/c5/83384d846b2fd17c44bd499b36c75a45ed4f095fbbb2252294e89cea5c5c/nvidia_cudnn_cu13-9.20.0.48-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:e31454ae00094b0c55319d9d15b6fa2fc50a9e1c0f5c8c80fb75258234e731e1", size = 444574296, upload-time = "2026-03-09T19:28:27.751Z" }, + { url = "https://files.pythonhosted.org/packages/6e/5e/edb9c0ae051602c3ccaffe424256463636d639e27d7f302dde9975ef9e7a/nvidia_cudnn_cu13-9.20.0.48-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:0c45dd8eeb50b603f07995b1b300c62ffe6a1980482b82b3bcf94a4ca9d49304", size = 366173588, upload-time = "2026-03-09T19:29:34.474Z" }, ] [[package]] -name = "nvidia-cufft-cu12" -version = "11.3.3.83" +name = "nvidia-cufft" +version = "12.0.0.61" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "nvidia-nvjitlink-cu12", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "nvidia-nvjitlink", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/1f/13/ee4e00f30e676b66ae65b4f08cb5bcbb8392c03f54f2d5413ea99a5d1c80/nvidia_cufft_cu12-11.3.3.83-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d2dd21ec0b88cf61b62e6b43564355e5222e4a3fb394cac0db101f2dd0d4f74", size = 193118695, upload-time = "2025-03-07T01:45:27.821Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ae/f417a75c0259e85c1d2f83ca4e960289a5f814ed0cea74d18c353d3e989d/nvidia_cufft-12.0.0.61-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2708c852ef8cd89d1d2068bdbece0aa188813a0c934db3779b9b1faa8442e5f5", size = 214053554, upload-time = "2025-09-04T08:31:38.196Z" }, + { url = "https://files.pythonhosted.org/packages/a8/2f/7b57e29836ea8714f81e9898409196f47d772d5ddedddf1592eadb8ab743/nvidia_cufft-12.0.0.61-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6c44f692dce8fd5ffd3e3df134b6cdb9c2f72d99cf40b62c32dde45eea9ddad3", size = 214085489, upload-time = "2025-09-04T08:31:56.044Z" }, ] [[package]] -name = "nvidia-cufile-cu12" -version = "1.13.1.3" +name = "nvidia-cufile" +version = "1.15.1.6" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/bb/fe/1bcba1dfbfb8d01be8d93f07bfc502c93fa23afa6fd5ab3fc7c1df71038a/nvidia_cufile_cu12-1.13.1.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1d069003be650e131b21c932ec3d8969c1715379251f8d23a1860554b1cb24fc", size = 1197834, upload-time = "2025-03-07T01:45:50.723Z" }, + { url = "https://files.pythonhosted.org/packages/3f/70/4f193de89a48b71714e74602ee14d04e4019ad36a5a9f20c425776e72cd6/nvidia_cufile-1.15.1.6-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:08a3ecefae5a01c7f5117351c64f17c7c62efa5fffdbe24fc7d298da19cd0b44", size = 1223672, upload-time = "2025-09-04T08:32:22.779Z" }, + { url = "https://files.pythonhosted.org/packages/ab/73/cc4a14c9813a8a0d509417cf5f4bdaba76e924d58beb9864f5a7baceefbf/nvidia_cufile-1.15.1.6-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:bdc0deedc61f548bddf7733bdc216456c2fdb101d020e1ab4b88d232d5e2f6d1", size = 1136992, upload-time = "2025-09-04T08:32:14.119Z" }, ] [[package]] -name = "nvidia-curand-cu12" -version = "10.3.9.90" +name = "nvidia-curand" +version = "10.4.0.35" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fb/aa/6584b56dc84ebe9cf93226a5cde4d99080c8e90ab40f0c27bda7a0f29aa1/nvidia_curand_cu12-10.3.9.90-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:b32331d4f4df5d6eefa0554c565b626c7216f87a06a4f56fab27c3b68a830ec9", size = 63619976, upload-time = "2025-03-07T01:46:23.323Z" }, + { url = "https://files.pythonhosted.org/packages/1e/72/7c2ae24fb6b63a32e6ae5d241cc65263ea18d08802aaae087d9f013335a2/nvidia_curand-10.4.0.35-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:133df5a7509c3e292aaa2b477afd0194f06ce4ea24d714d616ff36439cee349a", size = 61962106, upload-time = "2025-08-04T10:21:41.128Z" }, + { url = "https://files.pythonhosted.org/packages/a5/9f/be0a41ca4a4917abf5cb9ae0daff1a6060cc5de950aec0396de9f3b52bc5/nvidia_curand-10.4.0.35-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:1aee33a5da6e1db083fe2b90082def8915f30f3248d5896bcec36a579d941bfc", size = 59544258, upload-time = "2025-08-04T10:22:03.992Z" }, ] [[package]] -name = "nvidia-cusolver-cu12" -version = "11.7.3.90" +name = "nvidia-cusolver" +version = "12.0.4.66" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "nvidia-cublas-cu12", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "nvidia-cusparse-cu12", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "nvidia-nvjitlink-cu12", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "nvidia-cublas", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "nvidia-cusparse", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "nvidia-nvjitlink", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/85/48/9a13d2975803e8cf2777d5ed57b87a0b6ca2cc795f9a4f59796a910bfb80/nvidia_cusolver_cu12-11.7.3.90-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:4376c11ad263152bd50ea295c05370360776f8c3427b30991df774f9fb26c450", size = 267506905, upload-time = "2025-03-07T01:47:16.273Z" }, + { url = "https://files.pythonhosted.org/packages/c8/c3/b30c9e935fc01e3da443ec0116ed1b2a009bb867f5324d3f2d7e533e776b/nvidia_cusolver-12.0.4.66-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:02c2457eaa9e39de20f880f4bd8820e6a1cfb9f9a34f820eb12a155aa5bc92d2", size = 223467760, upload-time = "2025-09-04T08:33:04.222Z" }, + { url = "https://files.pythonhosted.org/packages/5f/67/cba3777620cdacb99102da4042883709c41c709f4b6323c10781a9c3aa34/nvidia_cusolver-12.0.4.66-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:0a759da5dea5c0ea10fd307de75cdeb59e7ea4fcb8add0924859b944babf1112", size = 200941980, upload-time = "2025-09-04T08:33:22.767Z" }, ] [[package]] -name = "nvidia-cusparse-cu12" -version = "12.5.8.93" +name = "nvidia-cusparse" +version = "12.6.3.3" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "nvidia-nvjitlink-cu12", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "nvidia-nvjitlink", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/c2/f5/e1854cb2f2bcd4280c44736c93550cc300ff4b8c95ebe370d0aa7d2b473d/nvidia_cusparse_cu12-12.5.8.93-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1ec05d76bbbd8b61b06a80e1eaf8cf4959c3d4ce8e711b65ebd0443bb0ebb13b", size = 288216466, upload-time = "2025-03-07T01:48:13.779Z" }, + { url = "https://files.pythonhosted.org/packages/f8/94/5c26f33738ae35276672f12615a64bd008ed5be6d1ebcb23579285d960a9/nvidia_cusparse-12.6.3.3-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:80bcc4662f23f1054ee334a15c72b8940402975e0eab63178fc7e670aa59472c", size = 162155568, upload-time = "2025-09-04T08:33:42.864Z" }, + { url = "https://files.pythonhosted.org/packages/fa/18/623c77619c31d62efd55302939756966f3ecc8d724a14dab2b75f1508850/nvidia_cusparse-12.6.3.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2b3c89c88d01ee0e477cb7f82ef60a11a4bcd57b6b87c33f789350b59759360b", size = 145942937, upload-time = "2025-09-04T08:33:58.029Z" }, ] [[package]] -name = "nvidia-cusparselt-cu12" -version = "0.7.1" +name = "nvidia-cusparselt-cu13" +version = "0.8.1" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/56/79/12978b96bd44274fe38b5dde5cfb660b1d114f70a65ef962bcbbed99b549/nvidia_cusparselt_cu12-0.7.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:f1bb701d6b930d5a7cea44c19ceb973311500847f81b634d802b7b539dc55623", size = 287193691, upload-time = "2025-02-26T00:15:44.104Z" }, + { url = "https://files.pythonhosted.org/packages/46/e1/cdc1797eadf82d3a9a575a19b33fdc871a97edbec42c00b5b5e914f4aff4/nvidia_cusparselt_cu13-0.8.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:4dca476c50bf4780d46cd0bfbd82e2bc10a08e4fef7950917ce8d7578d22a23f", size = 221051344, upload-time = "2025-09-05T18:49:51.289Z" }, + { url = "https://files.pythonhosted.org/packages/34/7d/2661f2fb3ac4302f3a246f5fc030213ac60c1fe0bce84f9783dbd831dbb7/nvidia_cusparselt_cu13-0.8.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:786ce87568c303fadb5afcc7102d454cd3040d75f6f8626f5db460d1871f4dd0", size = 170148586, upload-time = "2025-09-05T18:50:50.248Z" }, ] [[package]] @@ -2949,27 +2710,39 @@ wheels = [ ] [[package]] -name = "nvidia-nccl-cu12" -version = "2.27.3" +name = "nvidia-nccl-cu13" +version = "2.29.7" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5c/5b/4e4fff7bad39adf89f735f2bc87248c81db71205b62bcc0d5ca5b606b3c3/nvidia_nccl_cu12-2.27.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:adf27ccf4238253e0b826bce3ff5fa532d65fc42322c8bfdfaf28024c0fbe039", size = 322364134, upload-time = "2025-06-03T21:58:04.013Z" }, + { url = "https://files.pythonhosted.org/packages/72/0d/daf50d44177ee0cbc7ff0a0c91eb5ff676c82be42f9a970bc7597f440c3a/nvidia_nccl_cu13-2.29.7-py3-none-manylinux_2_18_aarch64.whl", hash = "sha256:674a12383e3c38a1bcccae7d4f3633b37852230b6047883cb2f4c2d1b36d9bf5", size = 206014712, upload-time = "2026-03-03T05:34:20.843Z" }, + { url = "https://files.pythonhosted.org/packages/67/f4/58e4e91b6919367c7aafb8e36fce9aad1a3047e536bf7e2fd560927d3a4c/nvidia_nccl_cu13-2.29.7-py3-none-manylinux_2_18_x86_64.whl", hash = "sha256:edd81538446786ec3b73972543e53bb43bcaf0bfc8ef76cb679fcc390ffe136d", size = 205976000, upload-time = "2026-03-03T05:36:24.472Z" }, ] [[package]] -name = "nvidia-nvjitlink-cu12" -version = "12.8.93" +name = "nvidia-nvjitlink" +version = "13.0.88" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f6/74/86a07f1d0f42998ca31312f998bd3b9a7eff7f52378f4f270c8679c77fb9/nvidia_nvjitlink_cu12-12.8.93-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:81ff63371a7ebd6e6451970684f916be2eab07321b73c9d244dc2b4da7f73b88", size = 39254836, upload-time = "2025-03-07T01:49:55.661Z" }, + { url = "https://files.pythonhosted.org/packages/56/7a/123e033aaff487c77107195fa5a2b8686795ca537935a24efae476c41f05/nvidia_nvjitlink-13.0.88-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:13a74f429e23b921c1109976abefacc69835f2f433ebd323d3946e11d804e47b", size = 40713933, upload-time = "2025-09-04T08:35:43.553Z" }, + { url = "https://files.pythonhosted.org/packages/ab/2c/93c5250e64df4f894f1cbb397c6fd71f79813f9fd79d7cd61de3f97b3c2d/nvidia_nvjitlink-13.0.88-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e931536ccc7d467a98ba1d8b89ff7fa7f1fa3b13f2b0069118cd7f47bff07d0c", size = 38768748, upload-time = "2025-09-04T08:35:20.008Z" }, ] [[package]] -name = "nvidia-nvtx-cu12" -version = "12.8.90" +name = "nvidia-nvshmem-cu13" +version = "3.4.5" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a2/eb/86626c1bbc2edb86323022371c39aa48df6fd8b0a1647bc274577f72e90b/nvidia_nvtx_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5b17e2001cc0d751a5bc2c6ec6d26ad95913324a4adb86788c944f8ce9ba441f", size = 89954, upload-time = "2025-03-07T01:42:44.131Z" }, + { url = "https://files.pythonhosted.org/packages/dc/0f/05cc9c720236dcd2db9c1ab97fff629e96821be2e63103569da0c9b72f19/nvidia_nvshmem_cu13-3.4.5-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6dc2a197f38e5d0376ad52cd1a2a3617d3cdc150fd5966f4aee9bcebb1d68fe9", size = 60215947, upload-time = "2025-09-06T00:32:20.022Z" }, + { url = "https://files.pythonhosted.org/packages/3c/35/a9bf80a609e74e3b000fef598933235c908fcefcef9026042b8e6dfde2a9/nvidia_nvshmem_cu13-3.4.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:290f0a2ee94c9f3687a02502f3b9299a9f9fe826e6d0287ee18482e78d495b80", size = 60412546, upload-time = "2025-09-06T00:32:41.564Z" }, +] + +[[package]] +name = "nvidia-nvtx" +version = "13.0.85" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/f3/d86c845465a2723ad7e1e5c36dcd75ddb82898b3f53be47ebd429fb2fa5d/nvidia_nvtx-13.0.85-py3-none-manylinux1_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:4936d1d6780fbe68db454f5e72a42ff64d1fd6397df9f363ae786930fd5c1cd4", size = 148047, upload-time = "2025-09-04T08:29:01.761Z" }, + { url = "https://files.pythonhosted.org/packages/a8/64/3708a90d1ebe202ffdeb7185f878a3c84d15c2b2c31858da2ce0583e2def/nvidia_nvtx-13.0.85-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cb7780edb6b14107373c835bf8b72e7a178bac7367e23da7acb108f973f157a6", size = 148878, upload-time = "2025-09-04T08:28:53.627Z" }, ] [[package]] @@ -3013,59 +2786,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f5/fb/f6a64b519ae6685fc60b0b54dc7aeae89c91394387f760f4efcdef814cb6/ocifs-1.3.2-py3-none-any.whl", hash = "sha256:2702cf1574f04f3b9405c7068a111af325409d9332cc010d2cd9e62f99262e62", size = 67797, upload-time = "2025-02-18T20:21:32.382Z" }, ] -[[package]] -name = "openai" -version = "2.31.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "distro", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "httpx", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "jiter", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "pydantic", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "sniffio", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "tqdm", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "typing-extensions", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/94/fe/64b3d035780b3188f86c4f6f1bc202e7bb74757ef028802112273b9dcacf/openai-2.31.0.tar.gz", hash = "sha256:43ca59a88fc973ad1848d86b98d7fac207e265ebbd1828b5e4bdfc85f79427a5", size = 684772, upload-time = "2026-04-08T21:01:41.797Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/66/bc/a8f7c3aa03452fedbb9af8be83e959adba96a6b4a35e416faffcc959c568/openai-2.31.0-py3-none-any.whl", hash = "sha256:44e1344d87e56a493d649b17e2fac519d1368cbb0745f59f1957c4c26de50a0a", size = 1153479, upload-time = "2026-04-08T21:01:39.217Z" }, -] - -[[package]] -name = "openai-harmony" -version = "0.0.8" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pydantic", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/3e/92/2d038d096f29179c7c9571b431f9e739f87a487121901725e23fe338dd9d/openai_harmony-0.0.8.tar.gz", hash = "sha256:6e43f98e6c242fa2de6f8ea12eab24af63fa2ed3e89c06341fb9d92632c5cbdf", size = 284777, upload-time = "2025-11-05T19:07:06.727Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d3/d2/ce6953ca87db9cae3e775024184da7d1c5cb88cead19a2d75b42f00a959c/openai_harmony-0.0.8-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4f709815924ec325b9a890e6ab2bbb0ceec8e319a4e257328eb752cf36b2efc", size = 2948463, upload-time = "2025-11-05T19:06:48.17Z" }, - { url = "https://files.pythonhosted.org/packages/fa/4c/b553c9651662d6ce102ca7f3629d268b23df1abe5841e24bed81e8a8e949/openai_harmony-0.0.8-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5cfcfd963b50a41fc656c84d3440ca6eecdccd6c552158ce790b8f2e33dfb5a9", size = 2704083, upload-time = "2025-11-05T19:06:50.205Z" }, - { url = "https://files.pythonhosted.org/packages/9b/af/4eec8f9ab9c27bcdb444460c72cf43011d176fc44c79d6e113094ca1e152/openai_harmony-0.0.8-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a3a16972aa1cee38ea958470cd04ac9a2d5ac38fdcf77ab686611246220c158", size = 2959765, upload-time = "2025-11-05T19:06:53.62Z" }, - { url = "https://files.pythonhosted.org/packages/11/3c/33f3374e4624e0e776f6b13b73c45a7ead7f9c4529f8369ed5bfcaa30cac/openai_harmony-0.0.8-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b4d5cfa168e74d08f8ba6d58a7e49bc7daef4d58951ec69b66b0d56f4927a68d", size = 3427031, upload-time = "2025-11-05T19:06:51.829Z" }, - { url = "https://files.pythonhosted.org/packages/25/3f/1a192b93bb47c6b44cd98ba8cc1d3d2a9308f1bb700c3017e6352da11bda/openai_harmony-0.0.8-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c007d277218a50db8839e599ed78e0fffe5130f614c3f6d93ae257f282071a29", size = 2953260, upload-time = "2025-11-05T19:06:55.406Z" }, - { url = "https://files.pythonhosted.org/packages/5b/f8/93b582cad3531797c3db7c2db5400fd841538ccddfd9f5e3df61be99a630/openai_harmony-0.0.8-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:8565d4f5a0638da1bffde29832ed63c9e695c558611053add3b2dc0b56c92dbc", size = 3127044, upload-time = "2025-11-05T19:06:59.553Z" }, - { url = "https://files.pythonhosted.org/packages/1d/10/4327dbf87f75ae813405fd9a9b4a5cde63d506ffed0a096a440a4cabd89c/openai_harmony-0.0.8-cp38-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:cbaa3bda75ef0d8836e1f8cc84af62f971b1d756d740efc95c38c3e04c0bfde2", size = 2932931, upload-time = "2025-11-05T19:07:01.437Z" }, - { url = "https://files.pythonhosted.org/packages/8a/c8/1774eec4f6f360ef57618fb8f52e3d3af245b2491bd0297513aa09eec04b/openai_harmony-0.0.8-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:772922a9bd24e133950fad71eb1550836f415a88e8c77870e12d0c3bd688ddc2", size = 2996140, upload-time = "2025-11-05T19:07:03.438Z" }, - { url = "https://files.pythonhosted.org/packages/60/c3/3d1e01e2dba517a91760e4a03e4f20ffc75039a6fe584d0e6f9b5c78fd15/openai_harmony-0.0.8-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:007b0476a1f331f8130783f901f1da6f5a7057af1a4891f1b6a31dec364189b5", size = 3205080, upload-time = "2025-11-05T19:07:05.078Z" }, -] - -[[package]] -name = "opencv-python-headless" -version = "4.13.0.92" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, -] -wheels = [ - { url = "https://files.pythonhosted.org/packages/21/76/9417a6aef9def70e467a5bf560579f816148a4c658b7d525581b356eda9e/opencv_python_headless-4.13.0.92-cp37-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5c8cfc8e87ed452b5cecb9419473ee5560a989859fe1d10d1ce11ae87b09a2cb", size = 33703709, upload-time = "2026-02-05T10:24:46.469Z" }, - { url = "https://files.pythonhosted.org/packages/92/ce/bd17ff5772938267fd49716e94ca24f616ff4cb1ff4c6be13085108037be/opencv_python_headless-4.13.0.92-cp37-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0525a3d2c0b46c611e2130b5fdebc94cf404845d8fa64d2f3a3b679572a5bd22", size = 56016764, upload-time = "2026-02-05T10:26:48.904Z" }, - { url = "https://files.pythonhosted.org/packages/8f/b4/b7bcbf7c874665825a8c8e1097e93ea25d1f1d210a3e20d4451d01da30aa/opencv_python_headless-4.13.0.92-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:eb60e36b237b1ebd40a912da5384b348df8ed534f6f644d8e0b4f103e272ba7d", size = 35010236, upload-time = "2026-02-05T10:28:11.031Z" }, - { url = "https://files.pythonhosted.org/packages/4b/33/b5db29a6c00eb8f50708110d8d453747ca125c8b805bc437b289dbdcc057/opencv_python_headless-4.13.0.92-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:0bd48544f77c68b2941392fcdf9bcd2b9cdf00e98cb8c29b2455d194763cf99e", size = 60391106, upload-time = "2026-02-05T10:30:14.236Z" }, -] - [[package]] name = "openenv-core" version = "0.1.0" @@ -3086,13 +2806,13 @@ version = "1.16.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "coloredlogs", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "datasets", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "datasets", version = "4.8.5", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "huggingface-hub", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "packaging", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "sympy", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "torch", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "transformers", extra = ["sentencepiece"], marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "torch", version = "2.12.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "transformers", version = "5.10.2", source = { registry = "https://pypi.org/simple" }, extra = ["sentencepiece"], marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/d1/4b/92b2308f4e7a2f355699e62e1779456ad0bff5e66a96b75bb628ca9e032a/optimum-1.16.2.tar.gz", hash = "sha256:0ac278c94b94888ea3b68f6a426c836900621d29db1d176587a584fd43600ba9", size = 309154, upload-time = "2024-01-19T15:46:53.144Z" } wheels = [ @@ -3117,16 +2837,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b3/6d/37c2589ba864e582ffe7611643314785c6afb1f83c701654ef05daa8fcc7/orjson-3.11.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:093d489fa039ddade2db541097dbb484999fcc65fc2b0ff9819141e2ab364f25", size = 136485, upload-time = "2026-03-31T16:15:29.749Z" }, ] -[[package]] -name = "outlines-core" -version = "0.2.11" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1a/d3/e04e9145f8f806723dec9b9e5227ad695a3efcd3ced7794cf7c22b15df5e/outlines_core-0.2.11.tar.gz", hash = "sha256:dfce56f717ff5083e54cbcfdb66cad243365437fccbb5509adaa7e31e030f1d8", size = 197263, upload-time = "2025-05-19T10:12:51.719Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/92/c7/a65d1fddf49830ebc41422294eacde35286d9f68994a8aa905cb14f5aade/outlines_core-0.2.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86df9740368866295077346440d911df4972da2b3f1f54b8125e6f329e8a8891", size = 2287677, upload-time = "2025-05-19T10:12:24.24Z" }, - { url = "https://files.pythonhosted.org/packages/23/79/8795aed8be9b77dd69d78e7cfbfcf28c179e6b08da6e56bbbf48a09fe55f/outlines_core-0.2.11-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:96ce4dd78f106799be4a0a5795cefd1352806162973756a4b6fce4bb6eddd7e4", size = 2113000, upload-time = "2025-05-19T10:12:25.446Z" }, -] - [[package]] name = "packaging" version = "26.0" @@ -3176,15 +2886,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b6/61/fae042894f4296ec49e3f193aff5d7c18440da9e48102c3315e1bc4519a7/parso-0.8.6-py2.py3-none-any.whl", hash = "sha256:2c549f800b70a5c4952197248825584cb00f033b29c692671d3bf08bf380baff", size = 106894, upload-time = "2026-02-09T15:45:21.391Z" }, ] -[[package]] -name = "partial-json-parser" -version = "0.2.1.1.post7" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6a/6d/eed37d7ebc1e0bcd27b831c0cf1fe94881934316187c4b30d23f29ea0bd4/partial_json_parser-0.2.1.1.post7.tar.gz", hash = "sha256:86590e1ba6bcb6739a2dfc17d2323f028cb5884f4c6ce23db376999132c9a922", size = 10296, upload-time = "2025-11-17T07:27:41.202Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/42/32/658973117bf0fd82a24abbfb94fe73a5e86216e49342985e10acce54775a/partial_json_parser-0.2.1.1.post7-py3-none-any.whl", hash = "sha256:145119e5eabcf80cbb13844a6b50a85c68bf99d376f8ed771e2a3c3b03e653ae", size = 10877, upload-time = "2025-11-17T07:27:40.457Z" }, -] - [[package]] name = "pathspec" version = "1.0.4" @@ -3205,24 +2906,23 @@ wheels = [ [[package]] name = "peft" -version = "0.18.1" +version = "0.19.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "accelerate" }, - { name = "huggingface-hub" }, + { name = "accelerate", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "huggingface-hub", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, - { name = "packaging" }, - { name = "psutil" }, - { name = "pyyaml" }, - { name = "safetensors" }, - { name = "torch" }, - { name = "tqdm" }, - { name = "transformers" }, + { name = "packaging", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "psutil", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "pyyaml", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "safetensors", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "torch", version = "2.12.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "tqdm", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "transformers", version = "5.10.2", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d8/48/147b3ea999560b40a34fd78724c7777aa9d18409c2250bdcaf9c4f2db7fc/peft-0.18.1.tar.gz", hash = "sha256:2dd0d6bfce936d1850e48aaddbd250941c5c02fc8ef3237cd8fd5aac35e0bae2", size = 635030, upload-time = "2026-01-09T13:08:01.136Z" } +sdist = { url = "https://files.pythonhosted.org/packages/86/cf/037f1e3d5186496c05513a6754639e2dab3038a05f384284d49a9bd06a2d/peft-0.19.1.tar.gz", hash = "sha256:0d97542fe96dcdaa20d3b81c06f26f988618f416a73544ab23c3618ccb674a40", size = 763738, upload-time = "2026-04-16T15:46:45.105Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/14/b4e3f574acf349ae6f61f9c000a77f97a3b315b4bb6ad03791e79ae4a568/peft-0.18.1-py3-none-any.whl", hash = "sha256:0bf06847a3551e3019fc58c440cffc9a6b73e6e2962c95b52e224f77bbdb50f1", size = 556960, upload-time = "2026-01-09T13:07:55.865Z" }, + { url = "https://files.pythonhosted.org/packages/e8/b6/f54d676ed93cc2dd2234c3b172ea9c8c3d7d29361e66b1b23dec57a67465/peft-0.19.1-py3-none-any.whl", hash = "sha256:2113f72a81621b5913ef28f9022204c742df111890c5f49d812716a4a301e356", size = 680692, upload-time = "2026-04-16T15:46:42.886Z" }, ] [[package]] @@ -3338,19 +3038,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/74/c3/24a2f845e3917201628ecaba4f18bab4d18a337834c1df2a159ee9d22a42/prometheus_client-0.24.1-py3-none-any.whl", hash = "sha256:150db128af71a5c2482b36e588fc8a6b95e498750da4b17065947c16070f4055", size = 64057, upload-time = "2026-01-14T15:26:24.42Z" }, ] -[[package]] -name = "prometheus-fastapi-instrumentator" -version = "7.1.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "prometheus-client", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "starlette", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/69/6d/24d53033cf93826aa7857699a4450c1c67e5b9c710e925b1ed2b320c04df/prometheus_fastapi_instrumentator-7.1.0.tar.gz", hash = "sha256:be7cd61eeea4e5912aeccb4261c6631b3f227d8924542d79eaf5af3f439cbe5e", size = 20220, upload-time = "2025-03-19T19:35:05.351Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/27/72/0824c18f3bc75810f55dacc2dd933f6ec829771180245ae3cc976195dec0/prometheus_fastapi_instrumentator-7.1.0-py3-none-any.whl", hash = "sha256:978130f3c0bb7b8ebcc90d35516a6fe13e02d2eb358c8f83887cdef7020c31e9", size = 19296, upload-time = "2025-03-19T19:35:04.323Z" }, -] - [[package]] name = "prompt-toolkit" version = "3.0.52" @@ -3448,15 +3135,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842, upload-time = "2024-07-21T12:58:20.04Z" }, ] -[[package]] -name = "py-cpuinfo" -version = "9.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/37/a8/d832f7293ebb21690860d2e01d8115e5ff6f2ae8bbdc953f0eb0fa4bd2c7/py-cpuinfo-9.0.0.tar.gz", hash = "sha256:3cdbbf3fac90dc6f118bfd64384f309edeadd902d7c8fb17f02ffa1fc3f49690", size = 104716, upload-time = "2022-10-25T20:38:06.303Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e0/a9/023730ba63db1e494a271cb018dcd361bd2c917ba7004c3e49d5daf795a2/py_cpuinfo-9.0.0-py3-none-any.whl", hash = "sha256:859625bc251f64e21f077d099d4162689c762b5d6a4c3c97553d56241c9674d5", size = 22335, upload-time = "2022-10-25T20:38:27.636Z" }, -] - [[package]] name = "pyarrow" version = "23.0.0" @@ -3493,39 +3171,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, upload-time = "2025-03-28T02:41:19.028Z" }, ] -[[package]] -name = "pybase64" -version = "1.4.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/aa/b8/4ed5c7ad5ec15b08d35cc79ace6145d5c1ae426e46435f4987379439dfea/pybase64-1.4.3.tar.gz", hash = "sha256:c2ed274c9e0ba9c8f9c4083cfe265e66dd679126cd9c2027965d807352f3f053", size = 137272, upload-time = "2025-12-06T13:27:04.013Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/43/1b/9a8cab0042b464e9a876d5c65fe5127445a2436da36fda64899b119b1a1b/pybase64-1.4.3-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:f0b3f200c3e06316f6bebabd458b4e4bcd4c2ca26af7c0c766614d91968dee27", size = 68210, upload-time = "2025-12-06T13:23:18.813Z" }, - { url = "https://files.pythonhosted.org/packages/62/f7/965b79ff391ad208b50e412b5d3205ccce372a2d27b7218ae86d5295b105/pybase64-1.4.3-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:bb632edfd132b3eaf90c39c89aa314beec4e946e210099b57d40311f704e11d4", size = 71599, upload-time = "2025-12-06T13:23:20.195Z" }, - { url = "https://files.pythonhosted.org/packages/03/4b/a3b5175130b3810bbb8ccfa1edaadbd3afddb9992d877c8a1e2f274b476e/pybase64-1.4.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:356ef1d74648ce997f5a777cf8f1aefecc1c0b4fe6201e0ef3ec8a08170e1b54", size = 59922, upload-time = "2025-12-06T13:23:21.487Z" }, - { url = "https://files.pythonhosted.org/packages/da/5d/c38d1572027fc601b62d7a407721688b04b4d065d60ca489912d6893e6cf/pybase64-1.4.3-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.whl", hash = "sha256:c48361f90db32bacaa5518419d4eb9066ba558013aaf0c7781620279ecddaeb9", size = 56712, upload-time = "2025-12-06T13:23:22.77Z" }, - { url = "https://files.pythonhosted.org/packages/e7/d4/4e04472fef485caa8f561d904d4d69210a8f8fc1608ea15ebd9012b92655/pybase64-1.4.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:702bcaa16ae02139d881aeaef5b1c8ffb4a3fae062fe601d1e3835e10310a517", size = 59300, upload-time = "2025-12-06T13:23:24.543Z" }, - { url = "https://files.pythonhosted.org/packages/86/e7/16e29721b86734b881d09b7e23dfd7c8408ad01a4f4c7525f3b1088e25ec/pybase64-1.4.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:53d0ffe1847b16b647c6413d34d1de08942b7724273dd57e67dcbdb10c574045", size = 60278, upload-time = "2025-12-06T13:23:25.608Z" }, - { url = "https://files.pythonhosted.org/packages/b1/02/18515f211d7c046be32070709a8efeeef8a0203de4fd7521e6b56404731b/pybase64-1.4.3-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:9a1792e8b830a92736dae58f0c386062eb038dfe8004fb03ba33b6083d89cd43", size = 54817, upload-time = "2025-12-06T13:23:26.633Z" }, - { url = "https://files.pythonhosted.org/packages/e7/be/14e29d8e1a481dbff151324c96dd7b5d2688194bb65dc8a00ca0e1ad1e86/pybase64-1.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1d468b1b1ac5ad84875a46eaa458663c3721e8be5f155ade356406848d3701f6", size = 58611, upload-time = "2025-12-06T13:23:27.684Z" }, - { url = "https://files.pythonhosted.org/packages/b4/8a/a2588dfe24e1bbd742a554553778ab0d65fdf3d1c9a06d10b77047d142aa/pybase64-1.4.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:e97b7bdbd62e71898cd542a6a9e320d9da754ff3ebd02cb802d69087ee94d468", size = 52404, upload-time = "2025-12-06T13:23:28.714Z" }, - { url = "https://files.pythonhosted.org/packages/27/fc/afcda7445bebe0cbc38cafdd7813234cdd4fc5573ff067f1abf317bb0cec/pybase64-1.4.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b33aeaa780caaa08ffda87fc584d5eab61e3d3bbb5d86ead02161dc0c20d04bc", size = 68817, upload-time = "2025-12-06T13:23:30.079Z" }, - { url = "https://files.pythonhosted.org/packages/d3/3a/87c3201e555ed71f73e961a787241a2438c2bbb2ca8809c29ddf938a3157/pybase64-1.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:1c0efcf78f11cf866bed49caa7b97552bc4855a892f9cc2372abcd3ed0056f0d", size = 57854, upload-time = "2025-12-06T13:23:31.17Z" }, - { url = "https://files.pythonhosted.org/packages/fd/7d/931c2539b31a7b375e7d595b88401eeb5bd6c5ce1059c9123f9b608aaa14/pybase64-1.4.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:66e3791f2ed725a46593f8bd2761ff37d01e2cdad065b1dceb89066f476e50c6", size = 54333, upload-time = "2025-12-06T13:23:32.422Z" }, - { url = "https://files.pythonhosted.org/packages/de/5e/537601e02cc01f27e9d75f440f1a6095b8df44fc28b1eef2cd739aea8cec/pybase64-1.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:72bb0b6bddadab26e1b069bb78e83092711a111a80a0d6b9edcb08199ad7299b", size = 56492, upload-time = "2025-12-06T13:23:33.515Z" }, - { url = "https://files.pythonhosted.org/packages/96/97/2a2e57acf8f5c9258d22aba52e71f8050e167b29ed2ee1113677c1b600c1/pybase64-1.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5b3365dbcbcdb0a294f0f50af0c0a16b27a232eddeeb0bceeefd844ef30d2a23", size = 70974, upload-time = "2025-12-06T13:23:36.27Z" }, - { url = "https://files.pythonhosted.org/packages/fa/8f/43c3bb11ca9bacf81cb0b7a71500bb65b2eda6d5fe07433c09b543de97f3/pybase64-1.4.3-graalpy312-graalpy250_312_native-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:5c29a582b0ea3936d02bd6fe9bf674ab6059e6e45ab71c78404ab2c913224414", size = 43461, upload-time = "2025-12-06T13:26:28.906Z" }, - { url = "https://files.pythonhosted.org/packages/2d/4c/2a5258329200be57497d3972b5308558c6de42e3749c6cc2aa1cbe34b25a/pybase64-1.4.3-graalpy312-graalpy250_312_native-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b6b664758c804fa919b4f1257aa8cf68e95db76fc331de5f70bfc3a34655afe1", size = 36058, upload-time = "2025-12-06T13:26:30.092Z" }, -] - -[[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, upload-time = "2025-06-20T18:49:48.75Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/27/a58ddaf8c588a3ef080db9d0b7e0b97215cee3a45df74f3a94dbbf5c893a/pycodestyle-2.14.0-py2.py3-none-any.whl", hash = "sha256:dd6bf7cb4ee77f8e016f9c8e74a35ddd9f67e1d5fd4184d86c3b98e07099f42d", size = 31594, upload-time = "2025-06-20T18:49:47.491Z" }, -] - [[package]] name = "pycountry" version = "26.2.16" @@ -3559,11 +3204,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl", hash = "sha256:e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d", size = 463580, upload-time = "2025-11-26T15:11:44.605Z" }, ] -[package.optional-dependencies] -email = [ - { name = "email-validator", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, -] - [[package]] name = "pydantic-core" version = "2.41.5" @@ -3611,20 +3251,6 @@ pycountry = [ { name = "pycountry", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, ] -[[package]] -name = "pydantic-settings" -version = "2.13.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pydantic", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "python-dotenv", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "typing-inspection", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/52/6d/fffca34caecc4a3f97bda81b2098da5e8ab7efc9a66e819074a11955d87e/pydantic_settings-2.13.1.tar.gz", hash = "sha256:b4c11847b15237fb0171e1462bf540e294affb9b86db4d9aa5c01730bdbe4025", size = 223826, upload-time = "2026-02-19T13:45:08.055Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/00/4b/ccc026168948fec4f7555b9164c724cf4125eac006e176541483d2c959be/pydantic_settings-2.13.1-py3-none-any.whl", hash = "sha256:d56fd801823dbeae7f0975e1f8c8e25c258eb75d278ea7abb5d9cebb01b56237", size = 58929, upload-time = "2026-02-19T13:45:06.034Z" }, -] - [[package]] name = "pydoclint" version = "0.8.3" @@ -3647,15 +3273,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a6/53/d78dc063216e62fc55f6b2eebb447f6a4b0a59f55c8406376f76bf959b08/pydub-0.25.1-py2.py3-none-any.whl", hash = "sha256:65617e33033874b59d87db603aa1ed450633288aefead953b30bded59cb599a6", size = 32327, upload-time = "2021-03-10T02:09:53.503Z" }, ] -[[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, upload-time = "2025-06-20T18:45:27.834Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c2/2f/81d580a0fb83baeb066698975cb14a618bdbed7720678566f1b046a95fe8/pyflakes-3.4.0-py2.py3-none-any.whl", hash = "sha256:f742a7dbd0d9cb9ea41e9a24a918996e8170c799fa528688d40dd582c8265f4f", size = 63551, upload-time = "2025-06-20T18:45:26.937Z" }, -] - [[package]] name = "pygments" version = "2.19.2" @@ -3846,30 +3463,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/78/c2/c012beae5f76b72f007a9e91ee9401cb88c51d0f83c6257a03e785c81cc2/pyzmq-27.1.0-cp312-abi3-win_arm64.whl", hash = "sha256:75a2f36223f0d535a0c919e23615fc85a1e23b71f40c7eb43d7b1dedb4d8f15f", size = 552993, upload-time = "2025-09-08T23:08:18.926Z" }, ] -[[package]] -name = "ray" -version = "2.54.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "filelock", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "jsonschema", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "msgpack", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "packaging", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "protobuf", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "pyyaml", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "requests", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, -] -wheels = [ - { url = "https://files.pythonhosted.org/packages/51/6f/bf1b7a6d4424c19add99eb17398c7522473502193540b679f8b94fbf2d72/ray-2.54.1-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:cd452b61ae2e0daf9271f5a554614397429cc2731681bae10fe72316dadc2749", size = 71831684, upload-time = "2026-03-25T22:41:01.356Z" }, - { url = "https://files.pythonhosted.org/packages/8a/1f/b33d5006823f8c1c8760887cf1190194f4b06de858b3d17e37bd930a6a62/ray-2.54.1-cp312-cp312-manylinux2014_x86_64.whl", hash = "sha256:4c6f7e23dda62a32f94083141c3f97e9c4246e3ae4ae2bc488bcd8fd0311f54a", size = 72688748, upload-time = "2026-03-25T22:41:07.43Z" }, -] - -[package.optional-dependencies] -cgraph = [ - { name = "cupy-cuda12x", marker = "sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'" }, -] - [[package]] name = "referencing" version = "0.37.0" @@ -3996,38 +3589,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/14/25/b208c5683343959b670dc001595f2f3737e051da617f66c31f7c4fa93abc/rich-14.3.3-py3-none-any.whl", hash = "sha256:793431c1f8619afa7d3b52b2cdec859562b950ea0d4b6b505397612db8d5362d", size = 310458, upload-time = "2026-02-19T17:23:13.732Z" }, ] -[[package]] -name = "rich-toolkit" -version = "0.19.7" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "rich", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "typing-extensions", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/42/ba/dae9e3096651042754da419a4042bc1c75e07d615f9b15066d738838e4df/rich_toolkit-0.19.7.tar.gz", hash = "sha256:133c0915872da91d4c25d85342d5ec1dfacc69b63448af1a08a0d4b4f23ef46e", size = 195877, upload-time = "2026-02-24T16:06:20.555Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fb/3c/c923619f6d2f5fafcc96fec0aaf9550a46cd5b6481f06e0c6b66a2a4fed0/rich_toolkit-0.19.7-py3-none-any.whl", hash = "sha256:0288e9203728c47c5a4eb60fd2f0692d9df7455a65901ab6f898437a2ba5989d", size = 32963, upload-time = "2026-02-24T16:06:22.066Z" }, -] - -[[package]] -name = "rignore" -version = "0.7.6" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e5/f5/8bed2310abe4ae04b67a38374a4d311dd85220f5d8da56f47ae9361be0b0/rignore-0.7.6.tar.gz", hash = "sha256:00d3546cd793c30cb17921ce674d2c8f3a4b00501cb0e3dd0e82217dbeba2671", size = 57140, upload-time = "2025-11-05T21:41:21.968Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4a/c8/dea564b36dedac8de21c18e1851789545bc52a0c22ece9843444d5608a6a/rignore-0.7.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bda49950d405aa8d0ebe26af807c4e662dd281d926530f03f29690a2e07d649a", size = 897821, upload-time = "2025-11-05T20:40:52.613Z" }, - { url = "https://files.pythonhosted.org/packages/b3/2b/ee96db17ac1835e024c5d0742eefb7e46de60020385ac883dd3d1cde2c1f/rignore-0.7.6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b5fd5ab3840b8c16851d327ed06e9b8be6459702a53e5ab1fc4073b684b3789e", size = 873963, upload-time = "2025-11-05T20:41:07.49Z" }, - { url = "https://files.pythonhosted.org/packages/a5/8c/ad5a57bbb9d14d5c7e5960f712a8a0b902472ea3f4a2138cbf70d1777b75/rignore-0.7.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ced2a248352636a5c77504cb755dc02c2eef9a820a44d3f33061ce1bb8a7f2d2", size = 1169216, upload-time = "2025-11-05T20:41:23.73Z" }, - { url = "https://files.pythonhosted.org/packages/80/e6/5b00bc2a6bc1701e6878fca798cf5d9125eb3113193e33078b6fc0d99123/rignore-0.7.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a04a3b73b75ddc12c9c9b21efcdaab33ca3832941d6f1d67bffd860941cd448a", size = 942942, upload-time = "2025-11-05T20:41:39.393Z" }, - { url = "https://files.pythonhosted.org/packages/85/e5/7f99bd0cc9818a91d0e8b9acc65b792e35750e3bdccd15a7ee75e64efca4/rignore-0.7.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d24321efac92140b7ec910ac7c53ab0f0c86a41133d2bb4b0e6a7c94967f44dd", size = 959787, upload-time = "2025-11-05T20:42:09.765Z" }, - { url = "https://files.pythonhosted.org/packages/55/54/2ffea79a7c1eabcede1926347ebc2a81bc6b81f447d05b52af9af14948b9/rignore-0.7.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:73c7aa109d41e593785c55fdaa89ad80b10330affa9f9d3e3a51fa695f739b20", size = 984245, upload-time = "2025-11-05T20:41:54.062Z" }, - { url = "https://files.pythonhosted.org/packages/41/f7/e80f55dfe0f35787fa482aa18689b9c8251e045076c35477deb0007b3277/rignore-0.7.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1734dc49d1e9501b07852ef44421f84d9f378da9fbeda729e77db71f49cac28b", size = 1078647, upload-time = "2025-11-05T21:40:13.463Z" }, - { url = "https://files.pythonhosted.org/packages/d4/cf/2c64f0b6725149f7c6e7e5a909d14354889b4beaadddaa5fff023ec71084/rignore-0.7.6-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:5719ea14ea2b652c0c0894be5dfde954e1853a80dea27dd2fbaa749618d837f5", size = 1139186, upload-time = "2025-11-05T21:40:31.27Z" }, - { url = "https://files.pythonhosted.org/packages/75/95/a86c84909ccc24af0d094b50d54697951e576c252a4d9f21b47b52af9598/rignore-0.7.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:8e23424fc7ce35726854f639cb7968151a792c0c3d9d082f7f67e0c362cfecca", size = 1117604, upload-time = "2025-11-05T21:40:48.07Z" }, - { url = "https://files.pythonhosted.org/packages/7f/5e/13b249613fd5d18d58662490ab910a9f0be758981d1797789913adb4e918/rignore-0.7.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3efdcf1dd84d45f3e2bd2f93303d9be103888f56dfa7c3349b5bf4f0657ec696", size = 1127725, upload-time = "2025-11-05T21:41:05.804Z" }, -] - [[package]] name = "rouge-score" version = "0.1.2" @@ -4159,7 +3720,7 @@ name = "schedulefree" version = "1.4.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "torch", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "torch", version = "2.12.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "typing-extensions", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/bd/51/d78369c32b0f3818ee7f5a04e77ed02a6bd0ba8642462f780623af0010f5/schedulefree-1.4.1.tar.gz", hash = "sha256:69ef25601d1fc0d8dd00cb36f9af78833f88b7846f1bb6ddecc9f144f3e9f7cb", size = 29281, upload-time = "2025-03-24T17:32:37.996Z" } @@ -4253,9 +3814,11 @@ dependencies = [ { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, { name = "scikit-learn" }, { name = "scipy" }, - { name = "torch" }, + { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, + { name = "torch", version = "2.12.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "tqdm" }, - { name = "transformers" }, + { name = "transformers", version = "5.5.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, + { name = "transformers", version = "5.10.2", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "typing-extensions" }, ] sdist = { url = "https://files.pythonhosted.org/packages/fe/26/448453925b6ce0c29d8b54327caa71ee4835511aef02070467402273079c/sentence_transformers-5.3.0.tar.gz", hash = "sha256:414a0a881f53a4df0e6cbace75f823bfcb6b94d674c42a384b498959b7c065e2", size = 403330, upload-time = "2026-03-12T14:53:40.778Z" } @@ -4286,20 +3849,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c9/64/982e07b93219cb52e1cca5d272cb579e2f3eb001956c9e7a9a6d106c9473/sentry_sdk-2.57.0-py2.py3-none-any.whl", hash = "sha256:812c8bf5ff3d2f0e89c82f5ce80ab3a6423e102729c4706af7413fd1eb480585", size = 456489, upload-time = "2026-03-31T09:39:27.524Z" }, ] -[[package]] -name = "setproctitle" -version = "1.3.7" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8d/48/49393a96a2eef1ab418b17475fb92b8fcfad83d099e678751b05472e69de/setproctitle-1.3.7.tar.gz", hash = "sha256:bc2bc917691c1537d5b9bca1468437176809c7e11e5694ca79a9ca12345dcb9e", size = 27002, upload-time = "2025-09-05T12:51:25.278Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d0/99/71630546b9395b095f4082be41165d1078204d1696c2d9baade3de3202d0/setproctitle-1.3.7-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2906b6c7959cdb75f46159bf0acd8cc9906cf1361c9e1ded0d065fe8f9039629", size = 32932, upload-time = "2025-09-05T12:49:39.271Z" }, - { url = "https://files.pythonhosted.org/packages/50/22/cee06af4ffcfb0e8aba047bd44f5262e644199ae7527ae2c1f672b86495c/setproctitle-1.3.7-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6915964a6dda07920a1159321dcd6d94fc7fc526f815ca08a8063aeca3c204f1", size = 33736, upload-time = "2025-09-05T12:49:40.565Z" }, - { url = "https://files.pythonhosted.org/packages/5c/00/a5949a8bb06ef5e7df214fc393bb2fb6aedf0479b17214e57750dfdd0f24/setproctitle-1.3.7-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:cff72899861c765bd4021d1ff1c68d60edc129711a2fdba77f9cb69ef726a8b6", size = 35605, upload-time = "2025-09-05T12:49:42.362Z" }, - { url = "https://files.pythonhosted.org/packages/b0/3a/50caca532a9343828e3bf5778c7a84d6c737a249b1796d50dd680290594d/setproctitle-1.3.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b7cb05bd446687ff816a3aaaf831047fc4c364feff7ada94a66024f1367b448c", size = 33143, upload-time = "2025-09-05T12:49:43.515Z" }, - { url = "https://files.pythonhosted.org/packages/ca/14/b843a251296ce55e2e17c017d6b9f11ce0d3d070e9265de4ecad948b913d/setproctitle-1.3.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:3a57b9a00de8cae7e2a1f7b9f0c2ac7b69372159e16a7708aa2f38f9e5cc987a", size = 34434, upload-time = "2025-09-05T12:49:45.31Z" }, - { url = "https://files.pythonhosted.org/packages/c8/b7/06145c238c0a6d2c4bc881f8be230bb9f36d2bf51aff7bddcb796d5eed67/setproctitle-1.3.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d8828b356114f6b308b04afe398ed93803d7fca4a955dd3abe84430e28d33739", size = 32795, upload-time = "2025-09-05T12:49:46.419Z" }, -] - [[package]] name = "setuptools" version = "79.0.1" @@ -4352,30 +3901,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c1/d4/59e74daffcb57a07668852eeeb6035af9f32cbfd7a1d2511f17d2fe6a738/smmap-5.0.3-py3-none-any.whl", hash = "sha256:c106e05d5a61449cf6ba9a1e650227ecfb141590d2a98412103ff35d89fc7b2f", size = 24390, upload-time = "2026-03-09T03:43:24.361Z" }, ] -[[package]] -name = "sniffio" -version = "1.3.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload-time = "2024-02-25T23:20:04.057Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" }, -] - -[[package]] -name = "soundfile" -version = "0.13.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cffi", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e1/41/9b873a8c055582859b239be17902a85339bec6a30ad162f98c9b0288a2cc/soundfile-0.13.1.tar.gz", hash = "sha256:b2c68dab1e30297317080a5b43df57e302584c49e2942defdde0acccc53f0e5b", size = 46156, upload-time = "2025-01-25T09:17:04.831Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/64/28/e2a36573ccbcf3d57c00626a21fe51989380636e821b341d36ccca0c1c3a/soundfile-0.13.1-py2.py3-none-any.whl", hash = "sha256:a23c717560da2cf4c7b5ae1142514e0fd82d6bbd9dfc93a50423447142f2c445", size = 25751, upload-time = "2025-01-25T09:16:44.235Z" }, - { url = "https://files.pythonhosted.org/packages/58/ae/c0e4a53d77cf6e9a04179535766b3321b0b9ced5f70522e4caf9329f0046/soundfile-0.13.1-py2.py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:9c9e855f5a4d06ce4213f31918653ab7de0c5a8d8107cd2427e44b42df547deb", size = 1235729, upload-time = "2025-01-25T09:16:53.018Z" }, - { url = "https://files.pythonhosted.org/packages/57/5e/70bdd9579b35003a489fc850b5047beeda26328053ebadc1fb60f320f7db/soundfile-0.13.1-py2.py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:03267c4e493315294834a0870f31dbb3b28a95561b80b134f0bd3cf2d5f0e618", size = 1313646, upload-time = "2025-01-25T09:16:54.872Z" }, -] - [[package]] name = "soupsieve" version = "2.8.3" @@ -4385,19 +3910,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/46/2c/1462b1d0a634697ae9e55b3cecdcb64788e8b7d63f54d923fcd0bb140aed/soupsieve-2.8.3-py3-none-any.whl", hash = "sha256:ed64f2ba4eebeab06cc4962affce381647455978ffc1e36bb79a545b91f45a95", size = 37016, upload-time = "2026-01-20T04:27:01.012Z" }, ] -[[package]] -name = "soxr" -version = "1.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/42/7e/f4b461944662ad75036df65277d6130f9411002bfb79e9df7dff40a31db9/soxr-1.0.0.tar.gz", hash = "sha256:e07ee6c1d659bc6957034f4800c60cb8b98de798823e34d2a2bba1caa85a4509", size = 171415, upload-time = "2025-09-07T13:22:21.317Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b5/80/10640970998a1d2199bef6c4d92205f36968cddaf3e4d0e9fe35ddd405bd/soxr-1.0.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e8ce273cca101aff3d8c387db5a5a41001ba76ef1837883438d3c652507a9ccc", size = 204707, upload-time = "2025-09-07T13:22:05.125Z" }, - { url = "https://files.pythonhosted.org/packages/b1/87/2726603c13c2126cb8ded9e57381b7377f4f0df6ba4408e1af5ddbfdc3dd/soxr-1.0.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e8f2a69686f2856d37823bbb7b78c3d44904f311fe70ba49b893af11d6b6047b", size = 238032, upload-time = "2025-09-07T13:22:06.428Z" }, -] - [[package]] name = "sqlitedict" version = "2.1.0" @@ -4623,71 +4135,60 @@ wheels = [ name = "torch" version = "2.8.0" source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "sys_platform == 'win32'", + "sys_platform == 'emscripten'", +] dependencies = [ - { name = "filelock" }, - { name = "fsspec" }, - { name = "jinja2" }, - { name = "networkx" }, - { name = "nvidia-cublas-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cuda-cupti-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cuda-nvrtc-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cuda-runtime-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cudnn-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cufft-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cufile-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-curand-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cusolver-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cusparse-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cusparselt-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-nccl-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-nvjitlink-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-nvtx-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "setuptools", version = "79.0.1", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "filelock", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, + { name = "fsspec", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, + { name = "jinja2", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, + { name = "networkx", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, { name = "setuptools", version = "80.10.2", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, - { name = "sympy" }, - { name = "triton", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "typing-extensions" }, + { name = "sympy", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, + { name = "typing-extensions", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/49/0c/2fd4df0d83a495bb5e54dca4474c4ec5f9c62db185421563deeb5dabf609/torch-2.8.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:e2fab4153768d433f8ed9279c8133a114a034a61e77a3a104dcdf54388838705", size = 101906089, upload-time = "2025-08-06T14:53:52.631Z" }, - { url = "https://files.pythonhosted.org/packages/99/a8/6acf48d48838fb8fe480597d98a0668c2beb02ee4755cc136de92a0a956f/torch-2.8.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b2aca0939fb7e4d842561febbd4ffda67a8e958ff725c1c27e244e85e982173c", size = 887913624, upload-time = "2025-08-06T14:56:44.33Z" }, { url = "https://files.pythonhosted.org/packages/af/8a/5c87f08e3abd825c7dfecef5a0f1d9aa5df5dd0e3fd1fa2f490a8e512402/torch-2.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:2f4ac52f0130275d7517b03a33d2493bab3693c83dcfadf4f81688ea82147d2e", size = 241326087, upload-time = "2025-08-06T14:53:46.503Z" }, - { url = "https://files.pythonhosted.org/packages/be/66/5c9a321b325aaecb92d4d1855421e3a055abd77903b7dab6575ca07796db/torch-2.8.0-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:619c2869db3ada2c0105487ba21b5008defcc472d23f8b80ed91ac4a380283b0", size = 73630478, upload-time = "2025-08-06T14:53:57.144Z" }, ] [[package]] -name = "torchao" -version = "0.17.0" +name = "torch" +version = "2.12.0" source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/32/fe/a4036a8e80fa800c92dbcbf75f541cd4c106248b6b579db6dab1800f616a/torchao-0.17.0-cp310-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:87a418ce0ec064a821ceab83c921b501acef0ce9a6ccd1be358fcd16c3ae8c58", size = 3206172, upload-time = "2026-03-30T22:25:52.974Z" }, - { url = "https://files.pythonhosted.org/packages/c9/37/ef37ca885265e5f79a168616767dd416a3cea1cc3b28bb6b503ce4a5b652/torchao-0.17.0-py3-none-any.whl", hash = "sha256:02eba449036715b9ae784fbaa1a6f97994bb7b0421ce92d1d5d1c08e5bd6d349", size = 1200680, upload-time = "2026-03-30T22:25:54.457Z" }, +resolution-markers = [ + "sys_platform != 'emscripten' and sys_platform != 'win32'", ] - -[[package]] -name = "torchaudio" -version = "2.8.0" -source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "torch", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "cuda-bindings", marker = "sys_platform == 'linux'" }, + { name = "cuda-toolkit", extra = ["cudart", "cufft", "cufile", "cupti", "curand", "cusolver", "cusparse", "nvjitlink", "nvrtc", "nvtx"], marker = "sys_platform == 'linux'" }, + { name = "filelock", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "fsspec", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "jinja2", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "networkx", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "nvidia-cublas", marker = "sys_platform == 'linux'" }, + { name = "nvidia-cudnn-cu13", marker = "sys_platform == 'linux'" }, + { name = "nvidia-cusparselt-cu13", marker = "sys_platform == 'linux'" }, + { name = "nvidia-nccl-cu13", marker = "sys_platform == 'linux'" }, + { name = "nvidia-nvshmem-cu13", marker = "sys_platform == 'linux'" }, + { name = "setuptools", version = "79.0.1", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "sympy", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "triton", marker = "sys_platform == 'linux'" }, + { name = "typing-extensions", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/c7/0d/24dad878784f1edd62862f27173781669f0c71eb46368636787d1e364188/torchaudio-2.8.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:862e2e40bf09d865e5df080a84c1a39bbcef40e43140f4b1737eb3a389d3b38f", size = 1692930, upload-time = "2025-08-06T14:58:41.312Z" }, - { url = "https://files.pythonhosted.org/packages/c2/a6/84d80f34472503e9eb82245d7df501c59602d75d7360e717fb9b84f91c5e/torchaudio-2.8.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:93a8583f280fe83ba021aa713319381ea71362cc87b67ee38e97a43cb2254aee", size = 4014607, upload-time = "2025-08-06T14:58:47.234Z" }, + { url = "https://files.pythonhosted.org/packages/ef/bb/285d643f254731294c9b595a007eac39db4600a98682d7bca688f42ca164/torch-2.12.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:b41339df93d491435e790ff8bcbae1c0ce777175889bfd1281d119862793e6a2", size = 88010197, upload-time = "2026-05-13T14:55:35.414Z" }, + { url = "https://files.pythonhosted.org/packages/79/81/76debf1db1343bd929bbb5d74c89fb437c2ed88eb144712557e7bd3eea45/torch-2.12.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:8fbef9f108a863e7722a73740998967e3b074742a834fc5be3a535a2befa7057", size = 426376751, upload-time = "2026-05-13T14:55:03.353Z" }, + { url = "https://files.pythonhosted.org/packages/de/f0/80026028b603c4650ff270fc3785bdef4bd6738765a9cc5a0f5a637d65a2/torch-2.12.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:4b4f64c2c2b11f7510d93dd6412b87025ff6eddd6bb61c3b5a3d892ea20c4756", size = 532261691, upload-time = "2026-05-13T14:52:54.453Z" }, ] [[package]] -name = "torchvision" -version = "0.23.0" +name = "torchao" +version = "0.17.0" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "pillow", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "torch", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, -] wheels = [ - { url = "https://files.pythonhosted.org/packages/e2/00/2f6454decc0cd67158c7890364e446aad4b91797087a57a78e72e1a8f8bc/torchvision-0.23.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:6dd7c4d329a0e03157803031bc856220c6155ef08c26d4f5bbac938acecf0948", size = 2396614, upload-time = "2025-08-06T14:58:03.116Z" }, - { url = "https://files.pythonhosted.org/packages/e4/b5/3e580dcbc16f39a324f3dd71b90edbf02a42548ad44d2b4893cc92b1194b/torchvision-0.23.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:4e7d31c43bc7cbecbb1a5652ac0106b436aa66e26437585fc2c4b2cf04d6014c", size = 8627108, upload-time = "2025-08-06T14:58:12.956Z" }, + { url = "https://files.pythonhosted.org/packages/32/fe/a4036a8e80fa800c92dbcbf75f541cd4c106248b6b579db6dab1800f616a/torchao-0.17.0-cp310-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:87a418ce0ec064a821ceab83c921b501acef0ce9a6ccd1be358fcd16c3ae8c58", size = 3206172, upload-time = "2026-03-30T22:25:52.974Z" }, + { url = "https://files.pythonhosted.org/packages/c9/37/ef37ca885265e5f79a168616767dd416a3cea1cc3b28bb6b503ce4a5b652/torchao-0.17.0-py3-none-any.whl", hash = "sha256:02eba449036715b9ae784fbaa1a6f97994bb7b0421ce92d1d5d1c08e5bd6d349", size = 1200680, upload-time = "2026-03-30T22:25:54.457Z" }, ] [[package]] @@ -4752,23 +4253,49 @@ wheels = [ name = "transformers" version = "5.5.0" source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "sys_platform == 'win32'", + "sys_platform == 'emscripten'", +] dependencies = [ - { name = "huggingface-hub" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "huggingface-hub", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, - { name = "packaging" }, - { name = "pyyaml" }, - { name = "regex" }, - { name = "safetensors" }, - { name = "tokenizers" }, - { name = "tqdm" }, - { name = "typer" }, + { name = "packaging", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, + { name = "pyyaml", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, + { name = "regex", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, + { name = "safetensors", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, + { name = "tokenizers", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, + { name = "tqdm", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, + { name = "typer", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/ff/9d/fb46e729b461985f41a5740167688b924a4019141e5c164bea77548d3d9e/transformers-5.5.0.tar.gz", hash = "sha256:c8db656cf51c600cd8c75f06b20ef85c72e8b8ff9abc880c5d3e8bc70e0ddcbd", size = 8237745, upload-time = "2026-04-02T16:13:08.113Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/e7/28/35f7411ff80a3640c1f4fc907dcbb6a65061ebb82f66950e38bfc9f7f740/transformers-5.5.0-py3-none-any.whl", hash = "sha256:821a9ff0961abbb29eb1eb686d78df1c85929fdf213a3fe49dc6bd94f9efa944", size = 10245591, upload-time = "2026-04-02T16:13:03.462Z" }, ] +[[package]] +name = "transformers" +version = "5.10.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "sys_platform != 'emscripten' and sys_platform != 'win32'", +] +dependencies = [ + { name = "huggingface-hub", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "packaging", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "pyyaml", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "regex", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "safetensors", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "tokenizers", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "tqdm", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "typer", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8d/38/d5f978bd5091019e89aef29b9a831f5cd70f2598963a3ead8b9570cab592/transformers-5.10.2.tar.gz", hash = "sha256:f9a44b9c8ca9ab1156b467f574d832ea066284299c2fd0ed84641ccb592751fc", size = 8799687, upload-time = "2026-06-04T18:43:49.119Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/73/6f/e1564b0cc182afa05e219a8e09a8e770ffaab879b6b824b56c819bd221da/transformers-5.10.2-py3-none-any.whl", hash = "sha256:8a669db546f82c7c3618cb46ceb0f0afd89292bc70f319c058f8332ec63e268d", size = 11003830, upload-time = "2026-06-04T18:43:45.303Z" }, +] + [package.optional-dependencies] sentencepiece = [ { name = "protobuf", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, @@ -4777,28 +4304,27 @@ sentencepiece = [ [[package]] name = "triton" -version = "3.4.0" +version = "3.7.0" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "setuptools", version = "79.0.1", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, -] wheels = [ - { url = "https://files.pythonhosted.org/packages/d0/66/b1eb52839f563623d185f0927eb3530ee4d5ffe9d377cdaf5346b306689e/triton-3.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:31c1d84a5c0ec2c0f8e8a072d7fd150cab84a9c239eaddc6706c081bfae4eb04", size = 155560068, upload-time = "2025-07-30T19:58:37.081Z" }, + { url = "https://files.pythonhosted.org/packages/f7/13/ec05adfcd87311d532ba61e3af143e8be59fcd26675884c4682841406a20/triton-3.7.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a4bf49b00a7a377a68a6da603a876e797614e6455a80e9021669c476a953ad9a", size = 188505104, upload-time = "2026-05-07T19:05:09.843Z" }, + { url = "https://files.pythonhosted.org/packages/62/7b/468a576e35beef1426e0828e28e9ba9e65f5474d496f16ee126c15646324/triton-3.7.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8f111161d49bf903c0eaedde3962353a3d841c08a836839b7cc1025b8426efcf", size = 201457567, upload-time = "2026-05-07T18:46:13.505Z" }, ] [[package]] name = "trl" -version = "0.29.0" +version = "1.5.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "accelerate", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "datasets", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "datasets", version = "4.8.5", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "jinja2", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "packaging", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "transformers", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "transformers", version = "5.10.2", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/69/5c/6f6d35b509e9107c9dbb6cbeee9db306c23bfcf75aaaa347b451c8bb2ecc/trl-0.29.0.tar.gz", hash = "sha256:b1c9f756a3d73c5457b7025b0c7bb9792873a87a2f3841cccf4f9d4f0e9ab273", size = 451314, upload-time = "2026-02-25T21:56:55.513Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a4/72/115c84b05d0e9b3458bb485ff3aa170cdd923fd2136e7832e41850475a8c/trl-1.5.1.tar.gz", hash = "sha256:8d73ffd9329ac21ffc47919656da2b7faaa6406fbe3574896a1923f390a9197b", size = 622292, upload-time = "2026-05-27T15:26:20.223Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4b/7d/ffada7c1ac6628b2fa9962207543910813a6732820a556abc13907a77823/trl-0.29.0-py3-none-any.whl", hash = "sha256:7d49cb1526c55cc1d798d921d9d91bb84a35ad5c645d6277441ffb7a30a233aa", size = 528757, upload-time = "2026-02-25T21:56:54.022Z" }, + { url = "https://files.pythonhosted.org/packages/46/9a/646429e405d49d0db2e612c418f8278d193158781a9daf3b86356244097f/trl-1.5.1-py3-none-any.whl", hash = "sha256:502a4c71f807fcb2de9768802faf5d1e9c16e52c483f51e80630b10da3451928", size = 761076, upload-time = "2026-05-27T15:26:18.22Z" }, ] [[package]] @@ -4914,28 +4440,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b7/23/a5bbd9600dd607411fa644c06ff4951bec3a4d82c4b852374024359c19c0/uvicorn-0.44.0-py3-none-any.whl", hash = "sha256:ce937c99a2cc70279556967274414c087888e8cec9f9c94644dfca11bd3ced89", size = 69425, upload-time = "2026-04-06T09:23:21.524Z" }, ] -[package.optional-dependencies] -standard = [ - { name = "httptools", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "python-dotenv", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "pyyaml", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "uvloop", marker = "platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "watchfiles", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "websockets", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, -] - -[[package]] -name = "uvloop" -version = "0.22.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/06/f0/18d39dbd1971d6d62c4629cc7fa67f74821b0dc1f5a77af43719de7936a7/uvloop-0.22.1.tar.gz", hash = "sha256:6c84bae345b9147082b17371e3dd5d42775bddce91f885499017f4607fdaf39f", size = 2443250, upload-time = "2025-10-16T22:17:19.342Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/24/68/a6ac446820273e71aa762fa21cdcc09861edd3536ff47c5cd3b7afb10eeb/uvloop-0.22.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:700e674a166ca5778255e0e1dc4e9d79ab2acc57b9171b79e65feba7184b3370", size = 4317413, upload-time = "2025-10-16T22:16:31.644Z" }, - { url = "https://files.pythonhosted.org/packages/5f/6f/e62b4dfc7ad6518e7eff2516f680d02a0f6eb62c0c212e152ca708a0085e/uvloop-0.22.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b5b1ac819a3f946d3b2ee07f09149578ae76066d70b44df3fa990add49a82e4", size = 4426307, upload-time = "2025-10-16T22:16:32.917Z" }, - { url = "https://files.pythonhosted.org/packages/90/60/97362554ac21e20e81bcef1150cb2a7e4ffdaf8ea1e5b2e8bf7a053caa18/uvloop-0.22.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e047cc068570bac9866237739607d1313b9253c3051ad84738cbb095be0537b2", size = 4131970, upload-time = "2025-10-16T22:16:34.015Z" }, - { url = "https://files.pythonhosted.org/packages/99/39/6b3f7d234ba3964c428a6e40006340f53ba37993f46ed6e111c6e9141d18/uvloop-0.22.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:512fec6815e2dd45161054592441ef76c830eddaad55c8aa30952e6fe1ed07c0", size = 4296343, upload-time = "2025-10-16T22:16:35.149Z" }, -] - [[package]] name = "virtualenv" version = "20.36.1" @@ -4950,73 +4454,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/6a/2a/dc2228b2888f51192c7dc766106cd475f1b768c10caaf9727659726f7391/virtualenv-20.36.1-py3-none-any.whl", hash = "sha256:575a8d6b124ef88f6f51d56d656132389f961062a9177016a50e4f507bbcc19f", size = 6008258, upload-time = "2026-01-09T18:20:59.425Z" }, ] -[[package]] -name = "vllm" -version = "0.11.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "aiohttp", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "blake3", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "cachetools", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "cbor2", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "cloudpickle", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "compressed-tensors", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "depyf", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "diskcache", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "einops", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "fastapi", extra = ["standard"], marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "filelock", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "gguf", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "lark", version = "1.2.2", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "llguidance", marker = "(platform_machine == 'aarch64' and sys_platform != 'emscripten' and sys_platform != 'win32') or (platform_machine == 'arm64' and sys_platform != 'emscripten' and sys_platform != 'win32') or (platform_machine == 'x86_64' and sys_platform != 'emscripten' and sys_platform != 'win32')" }, - { name = "lm-format-enforcer", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "mistral-common", extra = ["audio", "image"], marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "msgspec", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "ninja", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "numba", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "openai", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "openai-harmony", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "opencv-python-headless", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "outlines-core", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "partial-json-parser", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "pillow", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "prometheus-client", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "prometheus-fastapi-instrumentator", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "protobuf", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "psutil", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "py-cpuinfo", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "pybase64", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "pydantic", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "python-json-logger", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "pyyaml", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "pyzmq", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "ray", extra = ["cgraph"], marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "regex", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "requests", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "scipy", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "sentencepiece", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "setproctitle", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "setuptools", version = "79.0.1", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "six", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "tiktoken", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "tokenizers", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "torch", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "torchaudio", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "torchvision", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "tqdm", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "transformers", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "typing-extensions", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "watchfiles", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "xformers", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "xgrammar", marker = "(platform_machine == 'aarch64' and sys_platform != 'emscripten' and sys_platform != 'win32') or (platform_machine == 'arm64' and sys_platform != 'emscripten' and sys_platform != 'win32') or (platform_machine == 'x86_64' and sys_platform != 'emscripten' and sys_platform != 'win32')" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/82/5a/36d2351206f4d8d871b10780f874d03957985e08298d430cc837723e07af/vllm-0.11.0.tar.gz", hash = "sha256:f435a64c24e9c4178d657a76f8edd8548ddc444012f7d06a9f79ac3a6392bfae", size = 10822208, upload-time = "2025-10-04T01:39:57.798Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/47/33/d19e0763c34392ec956534536fa837c060495bfff31ed83452135ea7608d/vllm-0.11.0-cp38-abi3-manylinux1_x86_64.whl", hash = "sha256:3861c75ff2b12e24f6d179ff5c084d791b42ded8675d76c8706697c79f68cd62", size = 438217982, upload-time = "2025-10-04T01:39:32.382Z" }, - { url = "https://files.pythonhosted.org/packages/d7/bf/973444bb959fc7acbbeb3d226bd4d135dcd49b6af174b29aab1b50e2d710/vllm-0.11.0-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:52369c9ee949944354bdc7afc88ded2d1ed02b098bf90db06cf80098a19787b7", size = 401003969, upload-time = "2025-10-04T01:39:50.251Z" }, -] - [[package]] name = "voice" version = "0.1.0" @@ -5025,27 +4462,26 @@ dependencies = [ { name = "accelerate" }, { name = "axolotl", marker = "sys_platform == 'linux'" }, { name = "bitsandbytes", marker = "sys_platform == 'linux'" }, - { name = "datasets" }, + { name = "click" }, + { name = "datasets", version = "4.5.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, + { name = "datasets", version = "4.8.5", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "dotenv" }, { name = "huggingface-hub" }, { name = "matplotlib" }, { name = "pandas" }, - { name = "peft" }, { name = "pyyaml" }, { name = "scipy" }, { name = "seaborn" }, { name = "sentence-transformers" }, - { name = "transformers" }, + { name = "transformers", version = "5.5.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" }, + { name = "transformers", version = "5.10.2", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, { name = "typer" }, - { name = "vllm", marker = "sys_platform == 'linux'" }, { name = "wandb" }, ] [package.dev-dependencies] dev = [ { name = "detect-secrets" }, - { name = "flake8" }, - { name = "flake8-cognitive-complexity" }, { name = "isort" }, { name = "mypy" }, { name = "notebook" }, @@ -5059,29 +4495,26 @@ dev = [ [package.metadata] requires-dist = [ { name = "accelerate" }, - { name = "axolotl", marker = "sys_platform == 'linux'", git = "https://github.com/axolotl-ai-cloud/axolotl.git?rev=v0.16.1" }, + { name = "axolotl", marker = "sys_platform == 'linux'", git = "https://github.com/axolotl-ai-cloud/axolotl.git?branch=main" }, { name = "bitsandbytes", marker = "sys_platform == 'linux'", specifier = ">=0.49.1" }, + { name = "click", specifier = ">=8.0.0" }, { name = "datasets", specifier = ">=4.5.0" }, { name = "dotenv", specifier = ">=0.9.9" }, { name = "huggingface-hub", specifier = ">=1.4.1" }, { name = "matplotlib", specifier = ">=3.10.8" }, { name = "pandas" }, - { name = "peft" }, { name = "pyyaml", specifier = ">=6.0.3" }, { name = "scipy", specifier = ">=1.17.0" }, { name = "seaborn", specifier = ">=0.13.2" }, { name = "sentence-transformers", specifier = ">=5.3.0" }, { name = "transformers" }, { name = "typer", specifier = ">=0.9.0" }, - { name = "vllm", marker = "sys_platform == 'linux'", specifier = ">=0.11.0" }, { name = "wandb", specifier = ">=0.25.1" }, ] [package.metadata.requires-dev] dev = [ { name = "detect-secrets", specifier = ">=1.5.0" }, - { name = "flake8", specifier = ">=7.3.0" }, - { name = "flake8-cognitive-complexity", specifier = ">=0.1.0" }, { name = "isort", specifier = ">=7.0.0" }, { name = "mypy", specifier = ">=1.19.1" }, { name = "notebook", specifier = ">=7.5.3" }, @@ -5176,19 +4609,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/34/db/b10e48aa8fff7407e67470363eac595018441cf32d5e1001567a7aeba5d2/websocket_client-1.9.0-py3-none-any.whl", hash = "sha256:af248a825037ef591efbf6ed20cc5faa03d3b47b9e5a2230a529eeee1c1fc3ef", size = 82616, upload-time = "2025-10-07T21:16:34.951Z" }, ] -[[package]] -name = "websockets" -version = "16.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/04/24/4b2031d72e840ce4c1ccb255f693b15c334757fc50023e4db9537080b8c4/websockets-16.0.tar.gz", hash = "sha256:5f6261a5e56e8d5c42a4497b364ea24d94d9563e8fbd44e78ac40879c60179b5", size = 179346, upload-time = "2026-01-10T09:23:47.181Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/18/29/71729b4671f21e1eaa5d6573031ab810ad2936c8175f03f97f3ff164c802/websockets-16.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9b5aca38b67492ef518a8ab76851862488a478602229112c4b0d58d63a7a4d5c", size = 184915, upload-time = "2026-01-10T09:22:51.071Z" }, - { url = "https://files.pythonhosted.org/packages/97/bb/21c36b7dbbafc85d2d480cd65df02a1dc93bf76d97147605a8e27ff9409d/websockets-16.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e0334872c0a37b606418ac52f6ab9cfd17317ac26365f7f65e203e2d0d0d359f", size = 186152, upload-time = "2026-01-10T09:22:52.224Z" }, - { url = "https://files.pythonhosted.org/packages/4a/34/9bf8df0c0cf88fa7bfe36678dc7b02970c9a7d5e065a3099292db87b1be2/websockets-16.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a0b31e0b424cc6b5a04b8838bbaec1688834b2383256688cf47eb97412531da1", size = 185583, upload-time = "2026-01-10T09:22:53.443Z" }, - { url = "https://files.pythonhosted.org/packages/47/88/4dd516068e1a3d6ab3c7c183288404cd424a9a02d585efbac226cb61ff2d/websockets-16.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:485c49116d0af10ac698623c513c1cc01c9446c058a4e61e3bf6c19dff7335a2", size = 184880, upload-time = "2026-01-10T09:22:55.033Z" }, - { url = "https://files.pythonhosted.org/packages/6f/28/258ebab549c2bf3e64d2b0217b973467394a9cea8c42f70418ca2c5d0d2e/websockets-16.0-py3-none-any.whl", hash = "sha256:1637db62fad1dc833276dded54215f2c7fa46912301a24bd94d45d46a011ceec", size = 171598, upload-time = "2026-01-10T09:23:45.395Z" }, -] - [[package]] name = "werkzeug" version = "3.1.8" @@ -5222,34 +4642,15 @@ wheels = [ [[package]] name = "xformers" -version = "0.0.32.post1" +version = "0.0.35" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "torch", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6f/33/3b9c4d3d5b2da453d27de891df4ad653ac5795324961aa3a5c15b0353fe6/xformers-0.0.32.post1.tar.gz", hash = "sha256:1de84a45c497c8d92326986508d81f4b0a8c6be4d3d62a29b8ad6048a6ab51e1", size = 12106196, upload-time = "2025-08-14T18:07:45.486Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/df/6817346f1a77278315d5fe1fc9f239ba3282ba36e8ab3256babd448dde62/xformers-0.0.32.post1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:5f245b5555188da112070d8fefb6b7ae1ae47422856521d66c837e9d2352fbe4", size = 117199943, upload-time = "2025-08-14T18:07:34.78Z" }, -] - -[[package]] -name = "xgrammar" -version = "0.1.25" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "ninja", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "pydantic", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "torch", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "transformers", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "triton", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "typing-extensions", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "torch", version = "2.12.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f2/a9/dc3c63cf7f082d183711e46ef34d10d8a135c2319dc581905d79449f52ea/xgrammar-0.1.25.tar.gz", hash = "sha256:70ce16b27e8082f20808ed759b0733304316facc421656f0f30cfce514b5b77a", size = 2297187, upload-time = "2025-09-21T05:58:58.942Z" } +sdist = { url = "https://files.pythonhosted.org/packages/de/5a/6e27734bd793adc44d0b8d294e67cfacf4ec590572c1aef51d683fc7a791/xformers-0.0.35.tar.gz", hash = "sha256:f7fc183a58e4bf0e2ae339a18fb1b1d4a37854c0f2545b4f360fef001646ab76", size = 4258182, upload-time = "2026-02-20T20:33:05.417Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/99/9c/39bb38680be3b6d6aa11b8a46a69fb43e2537d6728710b299fa9fc231ff0/xgrammar-0.1.25-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c519518ebc65f75053123baaf23776a21bda58f64101a64c2fc4aa467c9cd480", size = 8519097, upload-time = "2025-09-21T05:58:40.831Z" }, - { url = "https://files.pythonhosted.org/packages/c6/c2/695797afa9922c30c45aa94e087ad33a9d87843f269461b622a65a39022a/xgrammar-0.1.25-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47fdbfc6007df47de2142613220292023e88e4a570546b39591f053e4d9ec33f", size = 8712184, upload-time = "2025-09-21T05:58:43.142Z" }, + { url = "https://files.pythonhosted.org/packages/a4/85/6d71f9b16f2ac647877e66ed4af723b3fbd477806ab8b8a89d39a362b85f/xformers-0.0.35-py39-none-manylinux_2_28_x86_64.whl", hash = "sha256:ccc73c7db9890224ab05f5fb60e2034f9e6c8672a10be0cf00e95cbbae3eda7c", size = 3264751, upload-time = "2026-02-20T20:33:02.444Z" }, ] [[package]] From 927d0dbd2d9d2984edec420123d39be98b3fb4c3 Mon Sep 17 00:00:00 2001 From: Fin Griffin Date: Wed, 17 Jun 2026 13:39:02 +0100 Subject: [PATCH 08/14] fix: monkeypatch GRPOTrainer chat template to use enable_thinking=False when passed into config --- src/voice/finetune/callbacks.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/voice/finetune/callbacks.py b/src/voice/finetune/callbacks.py index c18be56..d98d75e 100644 --- a/src/voice/finetune/callbacks.py +++ b/src/voice/finetune/callbacks.py @@ -422,6 +422,28 @@ def add_callbacks_post_trainer( :return: List containing the EvalCompletionsCallback instance. :raises ValueError: If ``cfg.datasets[0].path`` is not accessible. """ + chat_template_kwargs: dict[str, Any] = ( + getattr(cfg, "chat_template_kwargs", None) or {} + ) + if "enable_thinking" in chat_template_kwargs: + enable_thinking: bool = chat_template_kwargs["enable_thinking"] + tokenizer = getattr(trainer, "processing_class", None) or getattr( + trainer, "tokenizer", None + ) + if tokenizer is not None: + _orig = tokenizer.apply_chat_template + + def _patch(*args: Any, **kwargs: Any) -> Any: + kwargs.setdefault("enable_thinking", enable_thinking) + return _orig(*args, **kwargs) + + tokenizer.apply_chat_template = _patch + log.info( + "EvalCompletionsPlugin: patched tokenizer to default " + "enable_thinking=%s", + enable_thinking, + ) + try: dataset: str = cfg.datasets[0].path except (AttributeError, IndexError) as exc: From 81fe3f762938923088f40bdc1f9156e0b433dd57 Mon Sep 17 00:00:00 2001 From: Fin Griffin Date: Wed, 17 Jun 2026 15:12:17 +0100 Subject: [PATCH 09/14] fix(docs): clarify that reference model, wrt to reward function, is base model not true GRPO reference model --- docs/03_rl.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/03_rl.md b/docs/03_rl.md index 85285d9..7b4f506 100644 --- a/docs/03_rl.md +++ b/docs/03_rl.md @@ -8,16 +8,16 @@ VOICE uses a style embedding reward function to train models via GRPO. The rewar Let $\chi : \mathcal{V}^* \rightarrow \mathbb{R}^d$ be a style embedding model ([Anna Wegmann/Style-Embedding](https://huggingface.co/StyleDistance/styledistance), [StyleDistance/styledistance](https://huggingface.co/StyleDistance/styledistance)). Let $S_c(\mathbf{a}, \mathbf{b}) = \langle \mathbf{a}, \mathbf{b} \rangle / (\|\mathbf{a}\| \|\mathbf{b}\|) \in [-1, 1]$ denote cosine similarity. -Let $\pi_{\theta}$ and $\pi_{\text{ref}}$ denote the online and reference models respectively, with completions $d_i \sim \pi_{\theta}(\cdot \mid x_i)$ and $d_i^{\text{ref}} \sim \pi_{\text{ref}}(\cdot \mid x_i)$ for prompt $x_i$. +Let $\pi_{\theta}$ and $\pi_{\text{base}}$ denote the online and reference models respectively, with completions $d_i \sim \pi_{\theta}(\cdot \mid x_i)$ and $d_i^{\text{base}} \sim \pi_{\text{base}}(\cdot \mid x_i)$ for prompt $x_i$. We write $\underline{a} = \chi(a)$ for the style embedding of a text $a \in \mathcal{V}^*$. ## Reward Definition -$$r(d_i, c_i, d_i^{\text{ref}}) = \max\!\Big(S_c(\underline{d}_i, \underline{c}_i) - \max\!\big(S_c(\underline{d}_i^{\text{ref}}, \underline{c}_i),\, 0\big),\ 0\Big)$$ +$$r(d_i, c_i, d_i^{\text{base}}) = \max\!\Big(S_c(\underline{d}_i, \underline{c}_i) - \max\!\big(S_c(\underline{d}_i^{\text{base}}, \underline{c}_i),\, 0\big),\ 0\Big)$$ ## Properties - The outer $\max(\cdot, 0)$ ensures rewards are always non-negative. -- The reward is zero whenever $S_c(\underline{d}_i, \underline{c}_i) \leq \max(S_c(\underline{d}_i^{\text{ref}}, \underline{c}_i), 0)$: the online model must strictly exceed the reference model's cosine similarity with the author to receive any reward. +- The reward is zero whenever $S_c(\underline{d}_i, \underline{c}_i) \leq \max(S_c(\underline{d}_i^{\text{base}}, \underline{c}_i), 0)$: the online model must strictly exceed the reference model's cosine similarity with the author to receive any reward. - The inner $\max(\cdot, 0)$ floors the reference model's similarity at zero. This prevents a poor reference model (with negative cosine similarity to the author) from making the active region artificially wide and rewards easy to obtain. - When the reward is positive it grows linearly with the margin by which the online model exceeds the reference model. There is no rescaling by the remaining headroom to perfect alignment, so the gradient signal is uniform across the active region regardless of how well the reference model performs. Absolute reward scale is unimportant: GRPO normalises rewards within each group when computing advantages, so only relative differences between completions within a group affect training. From b28e98a95ae500c216cae997e2fd5c95ae43bebe Mon Sep 17 00:00:00 2001 From: Fin Griffin Date: Thu, 18 Jun 2026 13:04:01 +0100 Subject: [PATCH 10/14] feat(docs): add first draft of second reward function --- docs/03_rl.md | 48 ++++++++++++++++++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 12 deletions(-) diff --git a/docs/03_rl.md b/docs/03_rl.md index 7b4f506..f5d1463 100644 --- a/docs/03_rl.md +++ b/docs/03_rl.md @@ -1,23 +1,47 @@ -# Reward Function +# Reward Functions --- -VOICE uses a style embedding reward function to train models via GRPO. The reward is defined per completion and is designed to be positive only when the online model's output is more stylistically aligned with the target author than the reference model's output on the same prompt. +VOICE defines two reward functions for GRPO training: a style reward and a typicality reward. Both are computed per completion and are positive only when the online model's output is more stylistically aligned with the target author than the reference model's output on the same prompt. ## Preliminaries -Let $\chi : \mathcal{V}^* \rightarrow \mathbb{R}^d$ be a style embedding model ([Anna Wegmann/Style-Embedding](https://huggingface.co/StyleDistance/styledistance), [StyleDistance/styledistance](https://huggingface.co/StyleDistance/styledistance)). -Let $S_c(\mathbf{a}, \mathbf{b}) = \langle \mathbf{a}, \mathbf{b} \rangle / (\|\mathbf{a}\| \|\mathbf{b}\|) \in [-1, 1]$ denote cosine similarity. Let $\pi_{\theta}$ and $\pi_{\text{base}}$ denote the online and reference models respectively, with completions $d_i \sim \pi_{\theta}(\cdot \mid x_i)$ and $d_i^{\text{base}} \sim \pi_{\text{base}}(\cdot \mid x_i)$ for prompt $x_i$. -We write $\underline{a} = \chi(a)$ for the style embedding of a text $a \in \mathcal{V}^*$. -## Reward Definition +## Style Reward -$$r(d_i, c_i, d_i^{\text{base}}) = \max\!\Big(S_c(\underline{d}_i, \underline{c}_i) - \max\!\big(S_c(\underline{d}_i^{\text{base}}, \underline{c}_i),\, 0\big),\ 0\Big)$$ +Let $\chi : \mathcal{V}^* \rightarrow \mathbb{R}^d$ be a style embedding model (e.g. [AnnaWegmann/Style-Embedding](https://huggingface.co/AnnaWegmann/Style-Embedding) and let $S_c(\mathbf{a}, \mathbf{b}) = \langle \mathbf{a}, \mathbf{b} \rangle / (\|\mathbf{a}\| \|\mathbf{b}\|) \in [-1, 1]$ denote cosine similarity. We write $\underline{a} = \chi(a)$ for the style embedding of a text $a$. -## Properties +$$r_{\text{style}}(d_i, c_i, d_i^{\text{base}}) = \max\!\Big(S_c(\underline{d}_i, \underline{c}_i) - \max\!\big(S_c(\underline{d}_i^{\text{base}}, \underline{c}_i),\, 0\big),\ 0\Big)$$ -- The outer $\max(\cdot, 0)$ ensures rewards are always non-negative. -- The reward is zero whenever $S_c(\underline{d}_i, \underline{c}_i) \leq \max(S_c(\underline{d}_i^{\text{base}}, \underline{c}_i), 0)$: the online model must strictly exceed the reference model's cosine similarity with the author to receive any reward. -- The inner $\max(\cdot, 0)$ floors the reference model's similarity at zero. This prevents a poor reference model (with negative cosine similarity to the author) from making the active region artificially wide and rewards easy to obtain. -- When the reward is positive it grows linearly with the margin by which the online model exceeds the reference model. There is no rescaling by the remaining headroom to perfect alignment, so the gradient signal is uniform across the active region regardless of how well the reference model performs. Absolute reward scale is unimportant: GRPO normalises rewards within each group when computing advantages, so only relative differences between completions within a group affect training. +**Strictly non-negative.** The outer $\max(\cdot, 0)$ ensures rewards are always non-negative. + +**Improvement over the reference model.** The reward is zero whenever $S_c(\underline{d}_i, \underline{c}_i) \leq \max(S_c(\underline{d}_i^{\text{base}}, \underline{c}_i), 0)$: the online model must strictly exceed the reference model's cosine similarity with the author to receive any reward. + +**Floor on reference model similarity.** The inner $\max(\cdot, 0)$ floors the reference model's similarity at zero. This prevents a poor reference model (with negative cosine similarity to the author) from making the active region artificially wide and rewards easy to obtain. + +**Linear and scale-free in the active region.** When the reward is positive it grows linearly with the margin by which the online model exceeds the reference model. There is no rescaling by the remaining headroom to perfect alignment, so the gradient signal is uniform across the active region regardless of how well the reference model performs. Absolute reward scale is unimportant: GRPO normalises rewards within each group when computing advantages, so only relative differences between completions within a group affect training. + +## Typicality Reward + +The style reward requires a paired author completion $c_i$ for every prompt and an external embedding model. The typicality reward instead reuses the stylometric metrics directly (see [Stylometric Metrics](01_stylometry.md)), each already defined per-text as $f : \mathcal{T} \rightarrow \mathbb{R}$, and asks how typical a single completion is of the author's general style rather than how close it is to one paired reference. + +For each metric $f$, let $\hat{F}_f$ be its empirical CDF over the author's training split, the same split used to construct $\mathcal{W}_0$ in the eval suite. For a text $a$, define its percentile $u_f(a) = \hat{F}_f(f(a)) \in [0, 1]$ and + +$$\tau_f(a) = 1 - 2\left|u_f(a) - \frac{1}{2}\right| \in [0, 1]$$ + +so that $\tau_f(a) = 1$ when $a$ sits exactly at the author's median for $f$ and $\tau_f(a) = 0$ at either extreme. Group and aggregate exactly as in the eval suite (see [Evaluation Suite](02_evals.md)), averaging within group and taking the floored geometric mean across groups: + +$$\bar{\tau}_g(a) = \frac{1}{|g|} \sum_{f \in g} \tau_f(a), \qquad T(a) = \left(\prod_{g=1}^{G} \max(\bar{\tau}_g(a),\, \varepsilon)\right)^{1/G}$$ + +using the same floor $\varepsilon$ as the eval suite. The reward is then: + +$$r_{\text{typicality}}(d_i, d_i^{\text{base}}) = \max\big(T(d_i) - T(d_i^{\text{base}}),\ 0\big)$$ + +**No paired reference or embedding model required.** $T$ depends only on the completion itself and the author's precomputed training-split CDFs, so unlike the style reward it does not need a per-prompt author completion $c_i$ or an external embedding model at reward time. + +**$T$ is always strictly positive.** Unlike $S_c$, which can be negative, $T(a) \geq \varepsilon > 0$ by construction. The inner floor the style reward uses to guard against a poor reference model is therefore unnecessary here. + +**Faithful to the eval suite's structure.** $T$ uses the same metric groups, within-group averaging and floored geometric mean as the alignment score $\mathcal{S}$, so a completion's typicality is measured on the same terms the eval suite itself uses, applied to a single text rather than a distributional comparison. + +**Linear in the active region.** As with the style reward, $r_{\text{typicality}}$ grows linearly with the margin once positive, and absolute scale is unimportant given GRPO's within-group normalisation. From 137afa2f38945d28956bdda36bd5ce5620fd2e9b Mon Sep 17 00:00:00 2001 From: Fin Griffin Date: Thu, 18 Jun 2026 13:36:43 +0100 Subject: [PATCH 11/14] feat(rewards): add typicality reward function --- cspell/project-words.txt | 1 + src/voice/finetune/callbacks.py | 43 ++++++++++++ src/voice/rl/rewards.py | 119 +++++++++++++++++++++++++++++++- 3 files changed, 162 insertions(+), 1 deletion(-) diff --git a/cspell/project-words.txt b/cspell/project-words.txt index 5620995..75ccb73 100644 --- a/cspell/project-words.txt +++ b/cspell/project-words.txt @@ -27,3 +27,4 @@ GRPO styledistance Wegmann embs +cdfs diff --git a/src/voice/finetune/callbacks.py b/src/voice/finetune/callbacks.py index d98d75e..6c87a4d 100644 --- a/src/voice/finetune/callbacks.py +++ b/src/voice/finetune/callbacks.py @@ -401,6 +401,49 @@ def on_epoch_end( # ----------------------------------------------------------------------------- +class TypicalityRewardPlugin(BasePlugin): # type: ignore[misc] + """ + Axolotl plugin that primes typicality CDFs before GRPO training starts. + + Loads the training split of the configured dataset and builds per-metric + empirical CDFs so that ``typicality_reward`` can look them up at reward + computation time without needing the dataset path. + + Register alongside EvalCompletionsPlugin in the axolotl YAML config:: + + plugins: + - voice.finetune.callbacks.EvalCompletionsPlugin + - voice.finetune.callbacks.TypicalityRewardPlugin + """ + + def add_callbacks_post_trainer( + self, cfg: Any, _trainer: Any + ) -> list[TrainerCallback]: + """ + Prime typicality CDFs from the configured training dataset. + + :param cfg: Axolotl config object. + :param _trainer: The built HF Trainer instance (unused). + :return: Empty list — no callbacks are registered. + :raises ValueError: If ``cfg.datasets[0].path`` is not accessible. + """ + from voice.rl.rewards import prime_typicality_cdfs + + try: + dataset: str = cfg.datasets[0].path + except (AttributeError, IndexError) as exc: + raise ValueError( + "TypicalityRewardPlugin requires cfg.datasets[0].path " + "to be set in the axolotl config." + ) from exc + + log.info( + "TypicalityRewardPlugin: priming typicality CDFs from %s", dataset + ) + prime_typicality_cdfs(dataset) + return [] + + class EvalCompletionsPlugin(BasePlugin): # type: ignore[misc] """ Axolotl plugin that registers EvalCompletionsCallback before training. diff --git a/src/voice/rl/rewards.py b/src/voice/rl/rewards.py index 8e8785f..14e8526 100644 --- a/src/voice/rl/rewards.py +++ b/src/voice/rl/rewards.py @@ -30,14 +30,24 @@ def my_reward(completions, **kwargs) -> list[float] from __future__ import annotations +import os + +import numpy as np +from datasets import load_dataset from sentence_transformers import SentenceTransformer -from voice._defaults import RL_DEFAULTS +from voice._defaults import RL_DEFAULTS, SCORING_DEFAULTS +from voice.stylometry.metrics import get_metrics _style_model: SentenceTransformer | None = None def _get_style_model() -> SentenceTransformer: + """ + Return the shared style embedding model, loading it on first call. + + :return: Loaded SentenceTransformer model. + """ global _style_model if _style_model is None: _style_model = SentenceTransformer(RL_DEFAULTS.style_model_id) @@ -94,3 +104,110 @@ def style_reward( sim_rc = float(r @ c) rewards.append(max(sim_dc - max(sim_rc, 0.0), 0.0)) return rewards + + +# ----------------------------------------------------------------------------- +# Typicality reward +# ----------------------------------------------------------------------------- + +_typicality_cdfs: dict[str, np.ndarray] | None = None + + +def _build_training_cdfs(dataset: str) -> dict[str, np.ndarray]: + """ + Load the HF training split and return sorted value arrays per metric. + + :param dataset: HuggingFace dataset repo id. + :return: Mapping of metric name to sorted array of training values. + """ + hf_token = os.environ.get("HF_TOKEN") + ds = load_dataset(dataset, split="train", token=hf_token) + texts = [ + next(m["content"] for m in ex["messages"] if m["role"] == "assistant") + for ex in ds + ] + return { + name: np.sort([spec.fn(t) for t in texts]) + for name, spec in get_metrics().items() + } + + +def prime_typicality_cdfs(dataset: str) -> None: + """ + Pre-compute and cache metric empirical CDFs from the training split. + + Subsequent calls with any argument are no-ops. + + Called by TypicalityRewardPlugin before training starts. + + :param dataset: HuggingFace dataset repo id. + :return: None + """ + global _typicality_cdfs + if _typicality_cdfs is None: + _typicality_cdfs = _build_training_cdfs(dataset) + + +def _typicality(text: str, cdfs: dict[str, np.ndarray]) -> float: + """ + Compute T(a) for a single text against pre-built training split CDFs. + + :param text: Text to score. + :param cdfs: Mapping of metric name to sorted training values. + :return: Floored geometric mean of per-group average typicality scores. + """ + group_taus: dict[object, list[float]] = {} + for name, spec in get_metrics().items(): + arr = cdfs[name] + u = np.searchsorted(arr, spec.fn(text), side="right") / len(arr) + tau = 1.0 - 2.0 * abs(u - 0.5) + group_taus.setdefault(spec.group, []).append(tau) + group_scores = [ + max(sum(taus) / len(taus), SCORING_DEFAULTS.group_eps) + for taus in group_taus.values() + ] + return float(np.exp(np.log(group_scores).mean())) + + +def typicality_reward( + completions: list[list[dict[str, str]]], + ref_completion: list[str], + **kwargs: object, +) -> list[float]: + """ + Typicality reward for GRPO. + + Rewards the online model for producing completions more typical of the + author's style than the reference model, measured against metric + empirical CDFs built from the training split:: + + r = max(T(d) - T(d_ref), 0) + + where T(a) is the floored geometric mean of per-group average typicality + scores, matching the structure of the eval suite alignment score. + + Requires TypicalityRewardPlugin to be registered in the axolotl config + so that CDFs are primed before training starts. + + :param completions: + GRPO completions, each ``[{"role": "assistant", "content": ...}]``. + :param ref_completion: + Pre-generated base model completions (repeated G times by TRL). + :param **kwargs: keyword arguments passed to function by TRL trainer. + :return: Reward for each completion. + :raises RuntimeError: If CDFs have not been primed. + """ + _ = kwargs + if _typicality_cdfs is None: + raise RuntimeError( + "Typicality CDFs not initialised — register " + "TypicalityRewardPlugin in your axolotl config." + ) + return [ + max( + _typicality(comp[0]["content"], _typicality_cdfs) + - _typicality(ref, _typicality_cdfs), + 0.0, + ) + for comp, ref in zip(completions, ref_completion, strict=True) + ] From b1dc3bb07df7b89477fbfff017e498183ace3294 Mon Sep 17 00:00:00 2001 From: Fin Griffin Date: Mon, 22 Jun 2026 10:21:39 +0100 Subject: [PATCH 12/14] chore(grpo): remove style embedding based reward --- pyproject.toml | 3 -- src/voice/_defaults.py | 17 --------- src/voice/rl/rewards.py | 76 ++--------------------------------------- 3 files changed, 2 insertions(+), 94 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index da86e00..45981bb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,7 +16,6 @@ dependencies = [ "pyyaml>=6.0.3", "scipy>=1.17.0", "seaborn>=0.13.2", - "sentence-transformers>=5.3.0", "transformers", "click>=8.0.0", "wandb>=0.25.1", @@ -129,8 +128,6 @@ module = [ "seaborn.*", "matplotlib", "matplotlib.*", - "sentence_transformers", - "sentence_transformers.*", "peft", "peft.*", "torch", diff --git a/src/voice/_defaults.py b/src/voice/_defaults.py index 02946fd..fc85b55 100644 --- a/src/voice/_defaults.py +++ b/src/voice/_defaults.py @@ -226,20 +226,3 @@ class InferenceDefaults: INFERENCE_DEFAULTS: InferenceDefaults = InferenceDefaults() - - -@dataclass(frozen=True) -class RLDefaults: - """ - Default parameters for RL (GRPO) training. - - .. attribute :: style_model_id - - Hugging Face model ID for the style embedding model used in the - reward function. - """ - - style_model_id: str = "AnnaWegmann/Style-Embedding" - - -RL_DEFAULTS: RLDefaults = RLDefaults() diff --git a/src/voice/rl/rewards.py b/src/voice/rl/rewards.py index 14e8526..7c1493f 100644 --- a/src/voice/rl/rewards.py +++ b/src/voice/rl/rewards.py @@ -23,7 +23,7 @@ def my_reward(completions, **kwargs) -> list[float] trl: reward_funcs: - - voice.rl.rewards.style_reward + - voice.rl.rewards.typicality_reward reward_weights: - 1.0 """ @@ -34,82 +34,10 @@ def my_reward(completions, **kwargs) -> list[float] import numpy as np from datasets import load_dataset -from sentence_transformers import SentenceTransformer -from voice._defaults import RL_DEFAULTS, SCORING_DEFAULTS +from voice._defaults import SCORING_DEFAULTS from voice.stylometry.metrics import get_metrics -_style_model: SentenceTransformer | None = None - - -def _get_style_model() -> SentenceTransformer: - """ - Return the shared style embedding model, loading it on first call. - - :return: Loaded SentenceTransformer model. - """ - global _style_model - if _style_model is None: - _style_model = SentenceTransformer(RL_DEFAULTS.style_model_id) - return _style_model - - -def style_reward( - completions: list[list[dict[str, str]]], - true_completion: list[str], - ref_completion: list[str], - **kwargs: object, -) -> list[float]: - """ - Style embedding reward for GRPO. - - Rewards the online model for exceeding the reference model's cosine - similarity to the true author completion:: - - r = max(S_c(d, c) - max(S_c(d_ref, c), 0), 0) - - where d is the online completion, c is the true completion, and - d_ref is the pre-generated base model reference completion. - - All three groups are encoded in a single StyleDistance forward pass. - - :param completions: - GRPO completions, each ``[{"role": "assistant", "content": ...}]``. - :param true_completion: - Ground truth author completions (repeated G times by TRL). - :param ref_completion: - Pre-generated base model completions (repeated G times by TRL). - :param **kwargs: keyword arguments passed to function by TRL trainer. - :return: Reward for each completion. - """ - _ = kwargs - - model = _get_style_model() - n = len(completions) - online_texts = [c[0]["content"] for c in completions] - - all_embs = model.encode( - online_texts + list(true_completion) + list(ref_completion), - normalize_embeddings=True, - batch_size=64, - show_progress_bar=False, - ) - d_embs = all_embs[:n] - c_embs = all_embs[n : 2 * n] - r_embs = all_embs[2 * n :] - - rewards = [] - for d, c, r in zip(d_embs, c_embs, r_embs, strict=True): - sim_dc = float(d @ c) - sim_rc = float(r @ c) - rewards.append(max(sim_dc - max(sim_rc, 0.0), 0.0)) - return rewards - - -# ----------------------------------------------------------------------------- -# Typicality reward -# ----------------------------------------------------------------------------- - _typicality_cdfs: dict[str, np.ndarray] | None = None From 4bcd2f99333036a946219974fc992b61315010b2 Mon Sep 17 00:00:00 2001 From: Fin Griffin Date: Mon, 22 Jun 2026 10:33:20 +0100 Subject: [PATCH 13/14] feat(docs): remove style embedding reward from documentation --- docs/03_rl.md | 30 +++--------------------------- 1 file changed, 3 insertions(+), 27 deletions(-) diff --git a/docs/03_rl.md b/docs/03_rl.md index f5d1463..1163109 100644 --- a/docs/03_rl.md +++ b/docs/03_rl.md @@ -1,30 +1,14 @@ -# Reward Functions +# Reward Function --- -VOICE defines two reward functions for GRPO training: a style reward and a typicality reward. Both are computed per completion and are positive only when the online model's output is more stylistically aligned with the target author than the reference model's output on the same prompt. - ## Preliminaries -Let $\pi_{\theta}$ and $\pi_{\text{base}}$ denote the online and reference models respectively, with completions $d_i \sim \pi_{\theta}(\cdot \mid x_i)$ and $d_i^{\text{base}} \sim \pi_{\text{base}}(\cdot \mid x_i)$ for prompt $x_i$. - -## Style Reward - -Let $\chi : \mathcal{V}^* \rightarrow \mathbb{R}^d$ be a style embedding model (e.g. [AnnaWegmann/Style-Embedding](https://huggingface.co/AnnaWegmann/Style-Embedding) and let $S_c(\mathbf{a}, \mathbf{b}) = \langle \mathbf{a}, \mathbf{b} \rangle / (\|\mathbf{a}\| \|\mathbf{b}\|) \in [-1, 1]$ denote cosine similarity. We write $\underline{a} = \chi(a)$ for the style embedding of a text $a$. - -$$r_{\text{style}}(d_i, c_i, d_i^{\text{base}}) = \max\!\Big(S_c(\underline{d}_i, \underline{c}_i) - \max\!\big(S_c(\underline{d}_i^{\text{base}}, \underline{c}_i),\, 0\big),\ 0\Big)$$ - -**Strictly non-negative.** The outer $\max(\cdot, 0)$ ensures rewards are always non-negative. - -**Improvement over the reference model.** The reward is zero whenever $S_c(\underline{d}_i, \underline{c}_i) \leq \max(S_c(\underline{d}_i^{\text{base}}, \underline{c}_i), 0)$: the online model must strictly exceed the reference model's cosine similarity with the author to receive any reward. - -**Floor on reference model similarity.** The inner $\max(\cdot, 0)$ floors the reference model's similarity at zero. This prevents a poor reference model (with negative cosine similarity to the author) from making the active region artificially wide and rewards easy to obtain. - -**Linear and scale-free in the active region.** When the reward is positive it grows linearly with the margin by which the online model exceeds the reference model. There is no rescaling by the remaining headroom to perfect alignment, so the gradient signal is uniform across the active region regardless of how well the reference model performs. Absolute reward scale is unimportant: GRPO normalises rewards within each group when computing advantages, so only relative differences between completions within a group affect training. +Let $\pi_{\theta}$ and $\pi_{\text{base}}$ denote the online and reference (base) models respectively, with completions $d_i \sim \pi_{\theta}(\cdot \mid x_i)$ and $d_i^{\text{base}} \sim \pi_{\text{base}}(\cdot \mid x_i)$ for prompt $x_i$. ## Typicality Reward -The style reward requires a paired author completion $c_i$ for every prompt and an external embedding model. The typicality reward instead reuses the stylometric metrics directly (see [Stylometric Metrics](01_stylometry.md)), each already defined per-text as $f : \mathcal{T} \rightarrow \mathbb{R}$, and asks how typical a single completion is of the author's general style rather than how close it is to one paired reference. +The typicality reward reuses the stylometric metrics directly (see [Stylometric Metrics](01_stylometry.md)), and asks how typical a single completion is of the author's general style. For each metric $f$, let $\hat{F}_f$ be its empirical CDF over the author's training split, the same split used to construct $\mathcal{W}_0$ in the eval suite. For a text $a$, define its percentile $u_f(a) = \hat{F}_f(f(a)) \in [0, 1]$ and @@ -37,11 +21,3 @@ $$\bar{\tau}_g(a) = \frac{1}{|g|} \sum_{f \in g} \tau_f(a), \qquad T(a) = \left( using the same floor $\varepsilon$ as the eval suite. The reward is then: $$r_{\text{typicality}}(d_i, d_i^{\text{base}}) = \max\big(T(d_i) - T(d_i^{\text{base}}),\ 0\big)$$ - -**No paired reference or embedding model required.** $T$ depends only on the completion itself and the author's precomputed training-split CDFs, so unlike the style reward it does not need a per-prompt author completion $c_i$ or an external embedding model at reward time. - -**$T$ is always strictly positive.** Unlike $S_c$, which can be negative, $T(a) \geq \varepsilon > 0$ by construction. The inner floor the style reward uses to guard against a poor reference model is therefore unnecessary here. - -**Faithful to the eval suite's structure.** $T$ uses the same metric groups, within-group averaging and floored geometric mean as the alignment score $\mathcal{S}$, so a completion's typicality is measured on the same terms the eval suite itself uses, applied to a single text rather than a distributional comparison. - -**Linear in the active region.** As with the style reward, $r_{\text{typicality}}$ grows linearly with the margin once positive, and absolute scale is unimportant given GRPO's within-group normalisation. From fe1cc0de8cd5135b356f99fa39005d5762d455ea Mon Sep 17 00:00:00 2001 From: Fin Griffin Date: Mon, 22 Jun 2026 10:49:53 +0100 Subject: [PATCH 14/14] test(grpo): add test coverage for GRPO utilities --- .coverage | Bin 53248 -> 53248 bytes cspell/project-words.txt | 1 + tests/voice/comparison/test_comparison.py | 14 ++ tests/voice/datasets/test_dataset.py | 42 ++++ tests/voice/rl/test_rewards.py | 238 ++++++++++++++++++++++ tests/voice/rl/test_utils.py | 63 ++++++ 6 files changed, 358 insertions(+) create mode 100644 tests/voice/rl/test_rewards.py create mode 100644 tests/voice/rl/test_utils.py diff --git a/.coverage b/.coverage index ba0356da53bb543238dd8a7fa8d4bee7d6a1ea0e..c6ead3f9da7df0c36d5894209f8d28e00144e6b8 100644 GIT binary patch delta 1189 zcmY+CUu;uV9LLYSy>0Kk?LEKS|LxsUHZycF+bAGxlQCNu*tH!q;X%vnx-w=~nNU0M zUqEj=V>D)CdLGb3ZKDsom|@aj3^6z~KBx~HV$`6Kni$;!3)2vW5ShPwV~E^`^Etoo z`Tc(Pe9t+0)uLA|9|=*5CT5sD8V*(+2g6#CbR#r&Lj>*ySv8Qsl@^FA<5>csm^pKG^ z=x2*bGlQiPD*L=Y#@l|}YQkew`y zjT)VHs8}NzJ8|PqvPX~PCk(j{P*x1tVaVD1q5P3-w)Rc3Tj;JaZT>`pB^={Wg-7Q_3(n4SrF2dJPg9ES+5)h*| z=?`>)o~5tQgEUFE;VJy2TvWbPK2)m8Nu{h5l@`44B`2TK*#7AOS4iNbFy*7`Nu228 zoF~ZUr@e^)s;aXbl>IpI%REn-_<#@R5sfEAzvR9#L*CNY{^AH(2spjCpsDw-BV_e6 z!REn;0^jIHKImmvrvvGz%gRY5;^E1)?S;L!h42dLCD;cm@LMwmi*OuA{Y4xKBubXR z5DAHpE>t;6RqPfH@r%+sy3l2hgaPB;AbV_PU2A|R`f$loKJ)!P&MI)nVk7D&BbyXV zc*4(<#mnc{>pGBg&FsCI=0=Yb^;Tc`7a|Jx#tFyifBbXR=0K6U*`=9B8 zoaDQ;a%KJ@ZbLOTWfyT>b+Ocm#=!xr;YG9X)ppU&ALFlcq<7WQNXSYzsh5$D*YCUW z!om9OE%m{v!&^wjHh9KwFW5yw_q7A!!`IFeuOXJ0(=VNkb)dO zguQSap225v2407kVGd3~72bw7;V@pk3NP94Z=6FjK|>~#pb2NdgzPt=`An!@6W}r7 ob(`?GOoUVuK`;@ZCj5#CpVNffVM3Bk*d-g@k;J)biVju)tti?d9P`X64?UpXa2a96ewGd0Jwr-b- zNpYv8K8c9VlL<-pL8A}NifPb3klj{&!YD;dV*;Ti5jD}KTSKI#Vb`);x!sb;Sjf56-Q)~* zsOoS!nLf5-=&g>h^ZCJD70KCw?~ff(mOAnJFjnG0XFlduLW8Nk{$s=GR5Cr7!phSD zY!$fQ%6KJp{3xmi{HQ`zWqRMhaTH@d6l?B_ye~O0@N%;6)k^M zS?$@QZ5Z))N$3M}GF64HnvHm*@g*G zXcg88nOqk*A#1f{s6uOvT zmkTr`Vdr|!_;!;(GZ}>$tY$_8uUHvK>8%LGV829n;(68*vZp1ENBRqC$2k;38hK!6; z1kG~6!!C@F3q9yU4Y=_8UHE)1EYn38T!grbpy48*yD&8uOm*R9E dict: + called[0] += 1 + return {} + + monkeypatch.setattr(rewards_mod, "_build_training_cdfs", spy) + + prime_typicality_cdfs("any") + + assert called[0] == 0 + assert rewards_mod._typicality_cdfs is sentinel + + +# ----------------------------------------------------------------------------- +# _typicality +# ----------------------------------------------------------------------------- + + +def test_typicality_returns_float(monkeypatch): + _patch_metrics(monkeypatch) + + result = _typicality("text", _fake_cdfs()) + + assert isinstance(result, float) + + +def test_typicality_in_unit_interval(monkeypatch): + _patch_metrics(monkeypatch) + + result = _typicality("text", _fake_cdfs()) + + assert 0.0 <= result <= 1.0 + + +def test_typicality_applies_group_eps_floor(monkeypatch): + _patch_metrics(monkeypatch, fn=lambda t: 999.0) + cdfs = {"m": np.array([0.0, 0.5, 0.9])} + + result = _typicality("any", cdfs) + + assert result == pytest.approx(SCORING_DEFAULTS.group_eps) + + +def test_typicality_median_value_gives_high_score(monkeypatch): + _patch_metrics(monkeypatch, fn=lambda t: 0.5) + cdfs = {"m": np.array([0.0, 0.25, 0.5, 0.75, 1.0])} + + result = _typicality("text", cdfs) + + assert result == pytest.approx(0.8) + + +# ----------------------------------------------------------------------------- +# typicality_reward +# ----------------------------------------------------------------------------- + + +def test_typicality_reward_raises_without_primed_cdfs(monkeypatch): + monkeypatch.setattr(rewards_mod, "_typicality_cdfs", None) + + with pytest.raises(RuntimeError, match="Typicality CDFs not initialised"): + typicality_reward( + completions=[[{"role": "assistant", "content": "x"}]], + ref_completion=["y"], + ) + + +def test_typicality_reward_returns_list_matching_completions_length( + monkeypatch, +): + _patch_metrics(monkeypatch) + monkeypatch.setattr(rewards_mod, "_typicality_cdfs", _fake_cdfs()) + + completions = [ + [{"role": "assistant", "content": "a"}], + [{"role": "assistant", "content": "b"}], + [{"role": "assistant", "content": "c"}], + ] + result = typicality_reward( + completions=completions, ref_completion=["x", "y", "z"] + ) + + assert len(result) == 3 + + +def test_typicality_reward_clips_negative_to_zero(monkeypatch): + values = {"comp": 0.0, "ref": 0.5} + _patch_metrics(monkeypatch, fn=lambda t: values.get(t, 0.5)) + monkeypatch.setattr(rewards_mod, "_typicality_cdfs", _fake_cdfs()) + + result = typicality_reward( + completions=[[{"role": "assistant", "content": "comp"}]], + ref_completion=["ref"], + ) + + assert result[0] == 0.0 + + +def test_typicality_reward_positive_when_completion_beats_ref(monkeypatch): + values = {"comp": 0.5, "ref": 0.0} + _patch_metrics(monkeypatch, fn=lambda t: values.get(t, 0.5)) + monkeypatch.setattr(rewards_mod, "_typicality_cdfs", _fake_cdfs()) + + result = typicality_reward( + completions=[[{"role": "assistant", "content": "comp"}]], + ref_completion=["ref"], + ) + + assert result[0] > 0.0 + + +def test_typicality_reward_passes_kwargs_without_error(monkeypatch): + _patch_metrics(monkeypatch) + monkeypatch.setattr(rewards_mod, "_typicality_cdfs", _fake_cdfs()) + + result = typicality_reward( + completions=[[{"role": "assistant", "content": "x"}]], + ref_completion=["y"], + extra_kwarg="ignored", + ) + + assert len(result) == 1 diff --git a/tests/voice/rl/test_utils.py b/tests/voice/rl/test_utils.py new file mode 100644 index 0000000..2c5680b --- /dev/null +++ b/tests/voice/rl/test_utils.py @@ -0,0 +1,63 @@ +""" +Tests for voice.rl._utils. + +Scope: +- prompt_transform: returns (callable, {}) tuple +- inner _map function: extracts prompt, true_completion, ref_completion +""" + +from __future__ import annotations + +from voice.rl._utils import prompt_transform + +_EXAMPLE = { + "messages": [ + {"role": "system", "content": "You are helpful."}, + {"role": "user", "content": "What is 2+2?"}, + {"role": "assistant", "content": "It is 4."}, + ], + "ref_completion": "The answer is 4.", +} + + +def test_prompt_transform_returns_callable_and_empty_dict(): + fn, kwargs = prompt_transform(None) + + assert callable(fn) + assert kwargs == {} + + +def test_prompt_transform_map_extracts_true_completion(): + fn, _ = prompt_transform(object()) + + result = fn(_EXAMPLE) + + assert result["true_completion"] == "It is 4." + + +def test_prompt_transform_map_extracts_ref_completion(): + fn, _ = prompt_transform(None) + + result = fn(_EXAMPLE) + + assert result["ref_completion"] == "The answer is 4." + + +def test_prompt_transform_map_removes_assistant_from_prompt(): + fn, _ = prompt_transform(None) + + result = fn(_EXAMPLE) + + roles = [m["role"] for m in result["prompt"]] + assert "assistant" not in roles + assert "system" in roles + assert "user" in roles + + +def test_prompt_transform_map_ignores_tokenizer(): + fn, _ = prompt_transform(None) + + result_without = fn(_EXAMPLE) + result_with = fn(_EXAMPLE, tokenizer=object()) + + assert result_without == result_with