From 596de9f9e4048210edb1a101c236dd08bbeec1a0 Mon Sep 17 00:00:00 2001 From: CodSpeed Bot Date: Thu, 10 Sep 2026 22:51:26 +0000 Subject: [PATCH] ci: add CodSpeed benchmarks for core forecasting pipeline --- .github/workflows/codspeed.yaml | 51 +++ README.md | 1 + benchmarks/__init__.py | 1 + benchmarks/_models.py | 86 ++++ benchmarks/conftest.py | 55 +++ benchmarks/test_bench_core_utils.py | 78 ++++ benchmarks/test_bench_dataset.py | 63 +++ benchmarks/test_bench_pipelines.py | 58 +++ pyproject.toml | 1 + uv.lock | 621 +++++++++++++++------------- 10 files changed, 724 insertions(+), 291 deletions(-) create mode 100644 .github/workflows/codspeed.yaml create mode 100644 benchmarks/__init__.py create mode 100644 benchmarks/_models.py create mode 100644 benchmarks/conftest.py create mode 100644 benchmarks/test_bench_core_utils.py create mode 100644 benchmarks/test_bench_dataset.py create mode 100644 benchmarks/test_bench_pipelines.py diff --git a/.github/workflows/codspeed.yaml b/.github/workflows/codspeed.yaml new file mode 100644 index 0000000..3e33a47 --- /dev/null +++ b/.github/workflows/codspeed.yaml @@ -0,0 +1,51 @@ +name: CodSpeed + +on: + push: + branches: [main] + pull_request: + # `workflow_dispatch` allows CodSpeed to trigger backtest + # performance analysis in order to generate initial data. + workflow_dispatch: + +permissions: + contents: read + id-token: write # for OpenID Connect authentication with CodSpeed + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + benchmarks: + name: Run benchmarks + runs-on: ubuntu-latest + env: + UV_PYTHON: "3.11" + + steps: + - name: Clone repo + uses: actions/checkout@v4 + + - name: Set up uv + uses: astral-sh/setup-uv@v6 + with: + enable-cache: true + + - name: Free disk space in action runner + uses: endersonmenezes/free-disk-space@v3 + with: + remove_android: true + remove_dotnet: true + remove_haskell: true + rm_cmd: "rmz" + rmz_version: "3.1.1" + + - name: Install dependencies + run: uv sync --group dev + + - name: Run benchmarks + uses: CodSpeedHQ/action@v5 + with: + mode: simulation + run: uv run pytest benchmarks/ --codspeed diff --git a/README.md b/README.md index 2fc156b..f079be0 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,7 @@ PyPI versions license + CodSpeed Join Discord diff --git a/benchmarks/__init__.py b/benchmarks/__init__.py new file mode 100644 index 0000000..e9763df --- /dev/null +++ b/benchmarks/__init__.py @@ -0,0 +1 @@ +"""CodSpeed performance benchmarks for foundationforecast.""" diff --git a/benchmarks/_models.py b/benchmarks/_models.py new file mode 100644 index 0000000..463ef5a --- /dev/null +++ b/benchmarks/_models.py @@ -0,0 +1,86 @@ +"""Lightweight forecasters used to benchmark the FoundationForecast pipeline. + +These models are deliberately trivial: the goal is to measure the cost of the +library's own data plumbing (validation, splitting, merging, quantile handling) +without downloading or running any foundation model weights. +""" + +from __future__ import annotations + +import numpy as np +import pandas as pd +from utilsforecast.processing import make_future_dataframe + +from foundationforecast.core.forecaster import Forecaster, QuantileConverter + + +class ConstantModel(Forecaster): + """Return a constant point forecast, plus quantiles when requested.""" + + def __init__(self, alias: str = "Constant", value: float = 1.0): + self.alias = alias + self.value = value + + def forecast( + self, + df: pd.DataFrame, + h: int, + freq: str | None = None, + level: list[int | float] | None = None, + quantiles: list[float] | None = None, + ) -> pd.DataFrame: + freq = self._maybe_infer_freq(df, freq) + qc = QuantileConverter(level=level, quantiles=quantiles) + last_times = df.groupby("unique_id")["ds"].max() + fcst = make_future_dataframe( + uids=last_times.index.tolist(), + last_times=last_times, + h=h, + freq=freq, + ) + fcst[self.alias] = self.value + if qc.quantiles: + for q in qc.quantiles: + fcst[f"{self.alias}-q-{int(q * 100)}"] = fcst[self.alias] + q + fcst = qc.maybe_convert_quantiles_to_level(fcst, models=[self.alias]) + return fcst + + +class SeasonalNaiveModel(Forecaster): + """Repeat the last seasonal period, mimicking a real model's output shape.""" + + alias = "SeasonalNaive" + + def __init__(self, season_length: int | None = None): + self.season_length = season_length + + def forecast( + self, + df: pd.DataFrame, + h: int, + freq: str | None = None, + level: list[int | float] | None = None, + quantiles: list[float] | None = None, + ) -> pd.DataFrame: + freq = self._maybe_infer_freq(df, freq) + season_length = self._maybe_get_seasonality(freq) + qc = QuantileConverter(level=level, quantiles=quantiles) + results = [] + for uid, group in df.groupby("unique_id"): + y = group["y"].to_numpy() + effective_length = min(season_length, len(y)) + future = make_future_dataframe( + uids=[uid], + last_times=pd.Series([group["ds"].max()], index=[uid]), + h=h, + freq=freq, + ) + seasonal_values = y[-effective_length:] + future[self.alias] = seasonal_values[np.arange(h) % effective_length] + results.append(future) + fcst = pd.concat(results, ignore_index=True) + if qc.quantiles: + for q in qc.quantiles: + fcst[f"{self.alias}-q-{int(q * 100)}"] = fcst[self.alias] * (1 + q) + fcst = qc.maybe_convert_quantiles_to_level(fcst, models=[self.alias]) + return fcst diff --git a/benchmarks/conftest.py b/benchmarks/conftest.py new file mode 100644 index 0000000..54ca11f --- /dev/null +++ b/benchmarks/conftest.py @@ -0,0 +1,55 @@ +"""Shared, deterministic data fixtures for the CodSpeed benchmarks.""" + +from __future__ import annotations + +import numpy as np +import pandas as pd +import pytest +from utilsforecast.data import generate_series + + +def make_panel( + n_series: int, + length: int, + freq: str = "D", +) -> pd.DataFrame: + """Generate a deterministic panel with `n_series` series of `length` rows. + + `generate_series` is seeded by default, so the data is stable across runs. + """ + df = generate_series( + n_series=n_series, + freq=freq, + min_length=length, + max_length=length, + ) + df["unique_id"] = df["unique_id"].astype(str) + return df.reset_index(drop=True) + + +@pytest.fixture(scope="session") +def small_panel() -> pd.DataFrame: + """20 daily series of 200 observations.""" + return make_panel(n_series=20, length=200) + + +@pytest.fixture(scope="session") +def large_panel() -> pd.DataFrame: + """200 daily series of 500 observations.""" + return make_panel(n_series=200, length=500) + + +@pytest.fixture(scope="session") +def unsorted_panel(large_panel: pd.DataFrame) -> pd.DataFrame: + """A shuffled copy of `large_panel`, forcing the sorting code paths.""" + rng = np.random.default_rng(42) + idxs = rng.permutation(len(large_panel)) + return large_panel.iloc[idxs].reset_index(drop=True) + + +@pytest.fixture(scope="session") +def string_ds_panel(large_panel: pd.DataFrame) -> pd.DataFrame: + """`large_panel` with `ds` stored as ISO-8601 strings.""" + df = large_panel.copy() + df["ds"] = df["ds"].dt.strftime("%Y-%m-%d") + return df diff --git a/benchmarks/test_bench_core_utils.py b/benchmarks/test_bench_core_utils.py new file mode 100644 index 0000000..9437c34 --- /dev/null +++ b/benchmarks/test_bench_core_utils.py @@ -0,0 +1,78 @@ +"""Benchmarks for the pure-python helpers used on every forecasting call.""" + +from __future__ import annotations + +import pandas as pd +import pytest + +from foundationforecast.core.forecaster import ( + Forecaster, + QuantileConverter, + get_seasonality, + maybe_convert_col_to_datetime, + maybe_infer_freq, +) +from foundationforecast.core.gluonts_forecaster import ( + maybe_convert_col_to_float32, +) + + +def test_validate_input(benchmark, large_panel: pd.DataFrame): + benchmark(Forecaster.validate_input, large_panel, 12) + + +def test_maybe_infer_freq(benchmark, large_panel: pd.DataFrame): + freq = benchmark(maybe_infer_freq, large_panel, None) + assert freq == "D" + + +def test_maybe_convert_col_to_datetime_from_string( + benchmark, + string_ds_panel: pd.DataFrame, +): + out = benchmark(maybe_convert_col_to_datetime, string_ds_panel, "ds") + assert pd.api.types.is_datetime64_any_dtype(out["ds"]) + + +def test_maybe_convert_col_to_float32(benchmark, large_panel: pd.DataFrame): + out = benchmark(maybe_convert_col_to_float32, large_panel, "y") + assert out["y"].dtype == "float32" + + +@pytest.mark.parametrize("freq", ["D", "h", "MS"]) +def test_get_seasonality(benchmark, freq: str): + benchmark(get_seasonality, freq) + + +def test_quantile_converter_from_level(benchmark): + qc = benchmark(QuantileConverter, [80, 90, 95], None) + assert qc.quantiles is not None + + +def test_quantile_converter_level_to_quantiles( + benchmark, + large_panel: pd.DataFrame, +): + """Levels -> quantile columns, as done when users pass `quantiles`.""" + model = "Model" + df = large_panel.rename(columns={"y": model}) + qc = QuantileConverter(quantiles=[0.1, 0.25, 0.5, 0.75, 0.9]) + for lv in [50, 80]: + df[f"{model}-lo-{lv}"] = df[model] - lv / 100 + df[f"{model}-hi-{lv}"] = df[model] + lv / 100 + out = benchmark(qc.maybe_convert_level_to_quantiles, df, [model]) + assert f"{model}-q-90" in out.columns + + +def test_quantile_converter_quantiles_to_level( + benchmark, + large_panel: pd.DataFrame, +): + """Quantile columns -> lo/hi levels, as done when users pass `level`.""" + model = "Model" + df = large_panel.rename(columns={"y": model}) + qc = QuantileConverter(level=[80, 90]) + for q in qc.quantiles or []: + df[f"{model}-q-{int(q * 100)}"] = df[model] + q + out = benchmark(qc.maybe_convert_quantiles_to_level, df, [model]) + assert f"{model}-lo-90" in out.columns diff --git a/benchmarks/test_bench_dataset.py b/benchmarks/test_bench_dataset.py new file mode 100644 index 0000000..9000419 --- /dev/null +++ b/benchmarks/test_bench_dataset.py @@ -0,0 +1,63 @@ +"""Benchmarks for the tensor-side data preparation used by every model.""" + +from __future__ import annotations + +import pandas as pd +import pytest +import torch + +from foundationforecast.core.forecaster import _DataProcessor +from foundationforecast.core.utils import TimeSeriesDataset + + +@pytest.mark.parametrize("batch_size", [16, 128]) +def test_time_series_dataset_from_df( + benchmark, + large_panel: pd.DataFrame, + batch_size: int, +): + dataset = benchmark(TimeSeriesDataset.from_df, large_panel, batch_size) + assert len(dataset) > 0 + + +def test_time_series_dataset_iteration(benchmark, large_panel: pd.DataFrame): + dataset = TimeSeriesDataset.from_df(large_panel, batch_size=16) + + def consume() -> int: + return sum(len(batch) for batch in dataset) + + assert benchmark(consume) == len(large_panel["unique_id"].unique()) + + +def test_time_series_dataset_make_future_dataframe( + benchmark, + large_panel: pd.DataFrame, +): + dataset = TimeSeriesDataset.from_df(large_panel, batch_size=32) + future = benchmark(dataset.make_future_dataframe, 24, "D") + assert len(future) == 24 * len(large_panel["unique_id"].unique()) + + +def _variable_length_context( + n_series: int = 128, + max_len: int = 512, +) -> list[torch.Tensor]: + generator = torch.Generator().manual_seed(0) + return [ + torch.rand(max_len - (i % 64), generator=generator, dtype=torch.float32) + for i in range(n_series) + ] + + +def test_data_processor_left_pad_and_stack(benchmark): + processor = _DataProcessor(dtype=torch.float32, device=torch.device("cpu")) + context = _variable_length_context() + out = benchmark(processor._prepare_and_validate_context, context) + assert out.shape[0] == len(context) + + +def test_data_processor_impute_missing(benchmark): + processor = _DataProcessor(dtype=torch.float32, device=torch.device("cpu")) + batch = processor._prepare_and_validate_context(_variable_length_context()) + out = benchmark(processor._maybe_impute_missing, batch) + assert not torch.isnan(out).any() diff --git a/benchmarks/test_bench_pipelines.py b/benchmarks/test_bench_pipelines.py new file mode 100644 index 0000000..bea3408 --- /dev/null +++ b/benchmarks/test_bench_pipelines.py @@ -0,0 +1,58 @@ +"""End-to-end benchmarks of the forecast / cross-validation / anomaly APIs. + +The models used here are trivial by design (see `_models.py`): what is measured +is the library's own orchestration cost - validation, frequency inference, +backtest splitting, merging and residual statistics. +""" + +from __future__ import annotations + +import pandas as pd +import pytest + +from ._models import ConstantModel, SeasonalNaiveModel +from foundationforecast import FoundationForecast + + +def test_forecast_single_model(benchmark, large_panel: pd.DataFrame): + ff = FoundationForecast(models=[SeasonalNaiveModel()]) + fcst = benchmark(ff.forecast, large_panel, 12, "D") + assert len(fcst) == 12 * large_panel["unique_id"].nunique() + + +def test_forecast_with_levels(benchmark, large_panel: pd.DataFrame): + ff = FoundationForecast(models=[SeasonalNaiveModel()]) + fcst = benchmark(ff.forecast, large_panel, 12, "D", [80, 90]) + assert "SeasonalNaive-lo-90" in fcst.columns + + +def test_forecast_multi_model_merge(benchmark, large_panel: pd.DataFrame): + ff = FoundationForecast( + models=[ConstantModel(alias=f"Constant{i}", value=float(i)) for i in range(4)] + ) + fcst = benchmark(ff.forecast, large_panel, 12, "D") + assert "Constant3" in fcst.columns + + +def test_forecast_infer_freq_and_sort(benchmark, unsorted_panel: pd.DataFrame): + """Forecast on shuffled input, exercising freq inference and sorting.""" + ff = FoundationForecast(models=[ConstantModel()]) + fcst = benchmark(ff.forecast, unsorted_panel, 12) + assert len(fcst) == 12 * unsorted_panel["unique_id"].nunique() + + +@pytest.mark.parametrize("n_windows", [1, 4]) +def test_cross_validation( + benchmark, + small_panel: pd.DataFrame, + n_windows: int, +): + ff = FoundationForecast(models=[SeasonalNaiveModel()]) + cv_df = benchmark(ff.cross_validation, small_panel, 12, "D", n_windows) + assert len(cv_df) == 12 * n_windows * small_panel["unique_id"].nunique() + + +def test_detect_anomalies(benchmark, small_panel: pd.DataFrame): + ff = FoundationForecast(models=[SeasonalNaiveModel()]) + anomalies = benchmark(ff.detect_anomalies, small_panel, 12, "D", 3) + assert "SeasonalNaive-anomaly" in anomalies.columns diff --git a/pyproject.toml b/pyproject.toml index c9337e3..3ed0b1a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,6 +6,7 @@ requires = ["hatchling"] dev = [ "mktestdocs>=0.2.5", "pre-commit", + "pytest-codspeed>=4.0", "pytest-cov>=6.0", "pytest-mock>=3.15.1", "pytest-rerunfailures>=15.1", diff --git a/uv.lock b/uv.lock index 266def1..2c16fe6 100644 --- a/uv.lock +++ b/uv.lock @@ -7,7 +7,7 @@ resolution-markers = [ "python_full_version == '3.14.*'", "python_full_version >= '3.15'", ] -revision = 2 +revision = 3 version = 1 [[package]] @@ -497,7 +497,7 @@ wheels = [ [[package]] dependencies = [ - {marker = "implementation_name != 'PyPy'", name = "pycparser"}, + {name = "pycparser"}, ] name = "cffi" sdist = {hash = "sha256:dd31f52ea1086513bb9df30f8fcee9b8918323ae067a3d5b78bc826a000712be", size = 530807, upload-time = "2026-08-03T21:21:18.939Z", url = "https://files.pythonhosted.org/packages/9e/ef/008a1939e372c06329a3fce4279c02f328488f3526744906eeec3da7ad5f/cffi-2.1.1.tar.gz"} @@ -733,7 +733,7 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version < '3.11'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, + {name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, ] name = "contourpy" resolution-markers = [ @@ -803,7 +803,7 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, + {marker = "python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, {marker = "python_full_version >= '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "2.5.2"}, ] name = "contourpy" @@ -1026,7 +1026,7 @@ toml = [ [[package]] dependencies = [ - {marker = "python_full_version < '3.15'", name = "cuda-pathfinder"}, + {name = "cuda-pathfinder"}, ] name = "cuda-bindings" source = {registry = "https://pypi.org/simple"} @@ -1064,43 +1064,43 @@ wheels = [ [package.optional-dependencies] cublas = [ - {marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')", name = "nvidia-cublas"}, - {marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')", name = "nvidia-cuda-nvrtc"}, + {marker = "platform_machine == 'aarch64' or platform_machine == 'x86_64'", name = "nvidia-cublas"}, + {marker = "platform_machine == 'aarch64' or platform_machine == 'x86_64'", name = "nvidia-cuda-nvrtc"}, ] cudart = [ - {marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')", name = "nvidia-cuda-runtime"}, + {marker = "platform_machine == 'aarch64' or platform_machine == 'x86_64'", name = "nvidia-cuda-runtime"}, ] cufft = [ - {marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')", name = "nvidia-cufft"}, - {marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')", name = "nvidia-nvjitlink"}, + {marker = "platform_machine == 'aarch64' or platform_machine == 'x86_64'", name = "nvidia-cufft"}, + {marker = "platform_machine == 'aarch64' or platform_machine == 'x86_64'", name = "nvidia-nvjitlink"}, ] cufile = [ - {marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')", name = "nvidia-cufile"}, + {marker = "platform_machine == 'aarch64' or platform_machine == 'x86_64'", name = "nvidia-cufile"}, ] cupti = [ - {marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')", name = "nvidia-cuda-cupti"}, + {marker = "platform_machine == 'aarch64' or platform_machine == 'x86_64'", name = "nvidia-cuda-cupti"}, ] curand = [ - {marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')", name = "nvidia-curand"}, + {marker = "platform_machine == 'aarch64' or platform_machine == 'x86_64'", name = "nvidia-curand"}, ] cusolver = [ - {marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')", name = "nvidia-cublas"}, - {marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')", name = "nvidia-cusolver"}, - {marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')", name = "nvidia-cusparse"}, - {marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')", name = "nvidia-nvjitlink"}, + {marker = "platform_machine == 'aarch64' or platform_machine == 'x86_64'", name = "nvidia-cublas"}, + {marker = "platform_machine == 'aarch64' or platform_machine == 'x86_64'", name = "nvidia-cusolver"}, + {marker = "platform_machine == 'aarch64' or platform_machine == 'x86_64'", name = "nvidia-cusparse"}, + {marker = "platform_machine == 'aarch64' or platform_machine == 'x86_64'", name = "nvidia-nvjitlink"}, ] cusparse = [ - {marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')", name = "nvidia-cusparse"}, - {marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')", name = "nvidia-nvjitlink"}, + {marker = "platform_machine == 'aarch64' or platform_machine == 'x86_64'", name = "nvidia-cusparse"}, + {marker = "platform_machine == 'aarch64' or platform_machine == 'x86_64'", name = "nvidia-nvjitlink"}, ] nvjitlink = [ - {marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')", name = "nvidia-nvjitlink"}, + {marker = "platform_machine == 'aarch64' or platform_machine == 'x86_64'", name = "nvidia-nvjitlink"}, ] nvrtc = [ - {marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')", name = "nvidia-cuda-nvrtc"}, + {marker = "platform_machine == 'aarch64' or platform_machine == 'x86_64'", name = "nvidia-cuda-nvrtc"}, ] nvtx = [ - {marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux') or (platform_machine == 'AMD64' and sys_platform == 'win32')", name = "nvidia-nvtx"}, + {marker = "platform_machine == 'aarch64' or platform_machine == 'x86_64'", name = "nvidia-nvtx"}, ] [[package]] @@ -1199,7 +1199,7 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version >= '3.11' and python_full_version < '3.14'", name = "wrapt"}, + {name = "wrapt"}, ] name = "deprecated" sdist = {hash = "sha256:b1b50e0ff0c1fddaa5708a2c6b0a6588bb09b892825ab2b214ac9ea9d92a5223", size = 2932523, upload-time = "2025-10-30T08:19:02.757Z", url = "https://files.pythonhosted.org/packages/49/85/12f0a49a7c4ffb70572b6c2ef13c90c88fd190debda93b23f026b25f9634/deprecated-1.3.1.tar.gz"} @@ -1270,7 +1270,7 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version < '3.11'", name = "typing-extensions"}, + {name = "typing-extensions"}, ] name = "exceptiongroup" sdist = {hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z", url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz"} @@ -1318,11 +1318,11 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version >= '3.11' and sys_platform == 'linux'", name = "triton"}, - {marker = "python_full_version >= '3.11' and sys_platform == 'win32'", name = "triton-windows"}, - {marker = "python_full_version >= '3.11'", name = "einops"}, - {marker = "python_full_version >= '3.11'", name = "ninja"}, - {marker = "python_full_version >= '3.11'", name = "torch"}, + {marker = "sys_platform == 'linux'", name = "triton"}, + {marker = "sys_platform == 'win32'", name = "triton-windows"}, + {name = "einops"}, + {name = "ninja"}, + {name = "torch"}, ] name = "flashrnn" sdist = {hash = "sha256:61e99063b5c500ad40294c0ca3cd953fbcdbba99bbe19af3fc49e50862183855", size = 112180, upload-time = "2026-07-29T13:11:06.062Z", url = "https://files.pythonhosted.org/packages/ca/ba/c389f1440c4f38f20d9f420c8f0632a6b556a6959f5e80868db5406d0ba0/flashrnn-1.0.6.tar.gz"} @@ -1422,6 +1422,7 @@ dev = [ {name = "mktestdocs"}, {name = "pre-commit"}, {name = "pytest"}, + {name = "pytest-codspeed"}, {name = "pytest-cov"}, {name = "pytest-mock"}, {name = "pytest-rerunfailures"}, @@ -1472,6 +1473,7 @@ dev = [ {name = "mktestdocs", specifier = ">=0.2.5"}, {name = "pre-commit"}, {name = "pytest", specifier = ">=8.0"}, + {name = "pytest-codspeed", specifier = ">=4.0"}, {name = "pytest-cov", specifier = ">=6.0"}, {name = "pytest-mock", specifier = ">=3.15.1"}, {name = "pytest-rerunfailures", specifier = ">=15.1"}, @@ -1633,7 +1635,7 @@ http = [ [[package]] dependencies = [ - {marker = "python_full_version >= '3.11'", name = "wcwidth"}, + {name = "wcwidth"}, ] name = "ftfy" sdist = {hash = "sha256:9b3c3d90f84fb267fe64d375a07b7f8912d817cf86009ae134aa03e1819506ec", size = 308927, upload-time = "2024-10-26T00:50:35.149Z", url = "https://files.pythonhosted.org/packages/a5/d3/8650919bc3c7c6e90ee3fa7fd618bf373cbbe55dff043bd67353dbb20cd8/ftfy-6.3.1.tar.gz"} @@ -1731,7 +1733,7 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version < '3.14'", name = "typing-extensions"}, + {name = "typing-extensions"}, ] name = "grpcio" sdist = {hash = "sha256:7674587248fbbb2ac6e4eecf83a8a0f3d91a928f941de571acfd3a2f007fbc24", size = 13428824, upload-time = "2026-07-23T15:20:37.759Z", url = "https://files.pythonhosted.org/packages/0c/98/304898ac4e04e2d5e4e4c2eadc178b1f2a16d5f4bc2f91306c87d64680b9/grpcio-1.83.0.tar.gz"} @@ -1879,10 +1881,10 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version < '3.13'", name = "omegaconf", source = {registry = "https://pypi.org/simple"}, version = "2.3.0"}, - {marker = "python_full_version < '3.14'", name = "antlr4-python3-runtime"}, - {marker = "python_full_version < '3.14'", name = "packaging"}, + {marker = "python_full_version != '3.13.*'", name = "omegaconf", source = {registry = "https://pypi.org/simple"}, version = "2.3.0"}, {marker = "python_full_version == '3.13.*'", name = "omegaconf", source = {registry = "https://pypi.org/simple"}, version = "2.3.1"}, + {name = "antlr4-python3-runtime"}, + {name = "packaging"}, ] name = "hydra-core" sdist = {hash = "sha256:71c441eabbde086062045e4d3fce9e26015244f1a4ac721cf3e444c7edf10633", size = 3264337, upload-time = "2026-08-05T18:33:21.394Z", url = "https://files.pythonhosted.org/packages/3e/e4/69a522676faf88994d93d8a5e69e0666c61cae7f73d1bbcc483222023e74/hydra_core-1.3.5.tar.gz"} @@ -1946,17 +1948,17 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version < '3.11' and sys_platform != 'emscripten' and sys_platform != 'win32'", name = "pexpect"}, - {marker = "python_full_version < '3.11' and sys_platform == 'win32'", name = "colorama"}, - {marker = "python_full_version < '3.11'", name = "decorator"}, - {marker = "python_full_version < '3.11'", name = "exceptiongroup"}, - {marker = "python_full_version < '3.11'", name = "jedi"}, - {marker = "python_full_version < '3.11'", name = "matplotlib-inline"}, - {marker = "python_full_version < '3.11'", name = "prompt-toolkit"}, - {marker = "python_full_version < '3.11'", name = "pygments"}, - {marker = "python_full_version < '3.11'", name = "stack-data"}, - {marker = "python_full_version < '3.11'", name = "traitlets"}, - {marker = "python_full_version < '3.11'", name = "typing-extensions"}, + {marker = "sys_platform != 'emscripten' and sys_platform != 'win32'", name = "pexpect"}, + {marker = "sys_platform == 'win32'", name = "colorama"}, + {name = "decorator"}, + {name = "exceptiongroup"}, + {name = "jedi"}, + {name = "matplotlib-inline"}, + {name = "prompt-toolkit"}, + {name = "pygments"}, + {name = "stack-data"}, + {name = "traitlets"}, + {name = "typing-extensions"}, ] name = "ipython" resolution-markers = [ @@ -1971,17 +1973,17 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version == '3.11.*'", name = "typing-extensions"}, - {marker = "python_full_version >= '3.11' and sys_platform != 'cygwin' and sys_platform != 'emscripten'", name = "psutil"}, - {marker = "python_full_version >= '3.11' and sys_platform != 'emscripten' and sys_platform != 'win32'", name = "pexpect"}, - {marker = "python_full_version >= '3.11' and sys_platform == 'win32'", name = "colorama"}, - {marker = "python_full_version >= '3.11'", name = "ipython-pygments-lexers"}, - {marker = "python_full_version >= '3.11'", name = "jedi"}, - {marker = "python_full_version >= '3.11'", name = "matplotlib-inline"}, - {marker = "python_full_version >= '3.11'", name = "prompt-toolkit"}, - {marker = "python_full_version >= '3.11'", name = "pygments"}, - {marker = "python_full_version >= '3.11'", name = "stack-data"}, - {marker = "python_full_version >= '3.11'", name = "traitlets"}, + {marker = "python_full_version < '3.12'", name = "typing-extensions"}, + {marker = "sys_platform != 'cygwin' and sys_platform != 'emscripten'", name = "psutil"}, + {marker = "sys_platform != 'emscripten' and sys_platform != 'win32'", name = "pexpect"}, + {marker = "sys_platform == 'win32'", name = "colorama"}, + {name = "ipython-pygments-lexers"}, + {name = "jedi"}, + {name = "matplotlib-inline"}, + {name = "prompt-toolkit"}, + {name = "pygments"}, + {name = "stack-data"}, + {name = "traitlets"}, ] name = "ipython" resolution-markers = [ @@ -2000,7 +2002,7 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version >= '3.11'", name = "pygments"}, + {name = "pygments"}, ] name = "ipython-pygments-lexers" sdist = {hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload-time = "2025-01-17T11:24:34.505Z", url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz"} @@ -2021,11 +2023,11 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version < '3.11'", name = "jaxlib", source = {registry = "https://pypi.org/simple"}, version = "0.6.2"}, - {marker = "python_full_version < '3.11'", name = "ml-dtypes"}, - {marker = "python_full_version < '3.11'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, - {marker = "python_full_version < '3.11'", name = "opt-einsum"}, - {marker = "python_full_version < '3.11'", name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.15.3"}, + {name = "jaxlib", source = {registry = "https://pypi.org/simple"}, version = "0.6.2"}, + {name = "ml-dtypes"}, + {name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, + {name = "opt-einsum"}, + {name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.15.3"}, ] name = "jax" resolution-markers = [ @@ -2040,11 +2042,11 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "jaxlib", source = {registry = "https://pypi.org/simple"}, version = "0.7.1"}, - {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "ml-dtypes"}, - {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, - {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "opt-einsum"}, - {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.17.1"}, + {name = "jaxlib", source = {registry = "https://pypi.org/simple"}, version = "0.7.1"}, + {name = "ml-dtypes"}, + {name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, + {name = "opt-einsum"}, + {name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.17.1"}, ] name = "jax" resolution-markers = [ @@ -2060,11 +2062,11 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version == '3.13.*'", name = "jaxlib", source = {registry = "https://pypi.org/simple"}, version = "0.11.0"}, - {marker = "python_full_version == '3.13.*'", name = "ml-dtypes"}, - {marker = "python_full_version == '3.13.*'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "2.5.2"}, - {marker = "python_full_version == '3.13.*'", name = "opt-einsum"}, - {marker = "python_full_version == '3.13.*'", name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.18.0"}, + {name = "jaxlib", source = {registry = "https://pypi.org/simple"}, version = "0.11.0"}, + {name = "ml-dtypes"}, + {name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "2.5.2"}, + {name = "opt-einsum"}, + {name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.18.0"}, ] name = "jax" resolution-markers = [ @@ -2079,9 +2081,9 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version < '3.11'", name = "ml-dtypes"}, - {marker = "python_full_version < '3.11'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, - {marker = "python_full_version < '3.11'", name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.15.3"}, + {name = "ml-dtypes"}, + {name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, + {name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.15.3"}, ] name = "jaxlib" resolution-markers = [ @@ -2112,9 +2114,9 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "ml-dtypes"}, - {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, - {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.17.1"}, + {name = "ml-dtypes"}, + {name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, + {name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.17.1"}, ] name = "jaxlib" resolution-markers = [ @@ -2150,9 +2152,9 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version == '3.13.*'", name = "ml-dtypes"}, - {marker = "python_full_version == '3.13.*'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "2.5.2"}, - {marker = "python_full_version == '3.13.*'", name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.18.0"}, + {name = "ml-dtypes"}, + {name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "2.5.2"}, + {name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.18.0"}, ] name = "jaxlib" resolution-markers = [ @@ -2180,7 +2182,7 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version < '3.14'", name = "wadler-lindig"}, + {name = "wadler-lindig"}, ] name = "jaxtyping" resolution-markers = [ @@ -2198,7 +2200,7 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version >= '3.14'", name = "wadler-lindig"}, + {name = "wadler-lindig"}, ] name = "jaxtyping" resolution-markers = [ @@ -2256,13 +2258,13 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, - {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "pandas", source = {registry = "https://pypi.org/simple"}, version = "2.1.4"}, - {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.17.1"}, - {marker = "python_full_version >= '3.11'", name = "matplotlib", source = {registry = "https://pypi.org/simple"}, version = "3.11.1"}, + {marker = "python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, + {marker = "python_full_version < '3.13'", name = "pandas", source = {registry = "https://pypi.org/simple"}, version = "2.1.4"}, + {marker = "python_full_version < '3.13'", name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.17.1"}, {marker = "python_full_version >= '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "2.5.2"}, {marker = "python_full_version >= '3.13'", name = "pandas", source = {registry = "https://pypi.org/simple"}, version = "2.3.3"}, {marker = "python_full_version >= '3.13'", name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.18.0"}, + {name = "matplotlib", source = {registry = "https://pypi.org/simple"}, version = "3.11.1"}, ] name = "joypy" sdist = {hash = "sha256:099da2d6c7d81b5eccc957bd9446831f565ba42d5abbab0fa92b81892449522e", size = 10270, upload-time = "2021-12-19T09:42:52.541Z", url = "https://files.pythonhosted.org/packages/89/f4/49636d4c5fa30822028a1e2af234cecf488ba3c7e9ff5aba88e36fb0c95c/joypy-0.2.6.tar.gz"} @@ -2611,10 +2613,10 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version < '3.11'", name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.15.3"}, - {marker = "python_full_version < '3.13'", name = "narwhals"}, - {marker = "python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, + {marker = "python_full_version < '3.11' or python_full_version >= '3.13'", name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.15.3"}, {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.17.1"}, + {name = "narwhals"}, + {name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, ] name = "lightgbm" sdist = {hash = "sha256:f8e20f682c9aabd000bcf4a7ed8aa6f473c1adfecccae34ec24e823d156f4af0", size = 1792896, upload-time = "2026-07-18T21:00:56.139Z", url = "https://files.pythonhosted.org/packages/63/8e/4db5e29290d7e619c307fdb8dab0a0514090af2ce3ec483050e024ec6126/lightgbm-4.7.0.tar.gz"} @@ -2770,15 +2772,15 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version < '3.11'", name = "contourpy", source = {registry = "https://pypi.org/simple"}, version = "1.3.2"}, - {marker = "python_full_version < '3.11'", name = "cycler"}, - {marker = "python_full_version < '3.11'", name = "fonttools"}, - {marker = "python_full_version < '3.11'", name = "kiwisolver"}, - {marker = "python_full_version < '3.11'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, - {marker = "python_full_version < '3.11'", name = "packaging"}, - {marker = "python_full_version < '3.11'", name = "pillow"}, - {marker = "python_full_version < '3.11'", name = "pyparsing"}, - {marker = "python_full_version < '3.11'", name = "python-dateutil"}, + {name = "contourpy", source = {registry = "https://pypi.org/simple"}, version = "1.3.2"}, + {name = "cycler"}, + {name = "fonttools"}, + {name = "kiwisolver"}, + {name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, + {name = "packaging"}, + {name = "pillow"}, + {name = "pyparsing"}, + {name = "python-dateutil"}, ] name = "matplotlib" resolution-markers = [ @@ -2846,16 +2848,16 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, - {marker = "python_full_version >= '3.11'", name = "contourpy", source = {registry = "https://pypi.org/simple"}, version = "1.3.3"}, - {marker = "python_full_version >= '3.11'", name = "cycler"}, - {marker = "python_full_version >= '3.11'", name = "fonttools"}, - {marker = "python_full_version >= '3.11'", name = "kiwisolver"}, - {marker = "python_full_version >= '3.11'", name = "packaging"}, - {marker = "python_full_version >= '3.11'", name = "pillow"}, - {marker = "python_full_version >= '3.11'", name = "pyparsing"}, - {marker = "python_full_version >= '3.11'", name = "python-dateutil"}, + {marker = "python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, {marker = "python_full_version >= '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "2.5.2"}, + {name = "contourpy", source = {registry = "https://pypi.org/simple"}, version = "1.3.3"}, + {name = "cycler"}, + {name = "fonttools"}, + {name = "kiwisolver"}, + {name = "packaging"}, + {name = "pillow"}, + {name = "pyparsing"}, + {name = "python-dateutil"}, ] name = "matplotlib" resolution-markers = [ @@ -3131,7 +3133,7 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, + {marker = "python_full_version != '3.13.*'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, {marker = "python_full_version == '3.13.*'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "2.5.2"}, ] name = "ml-dtypes" @@ -3177,18 +3179,18 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, - {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "omegaconf", source = {registry = "https://pypi.org/simple"}, version = "2.3.0"}, - {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "tqdm", source = {registry = "https://pypi.org/simple"}, version = "4.67.3"}, - {marker = "python_full_version >= '3.11'", name = "dacite"}, - {marker = "python_full_version >= '3.11'", name = "einops"}, - {marker = "python_full_version >= '3.11'", name = "ipykernel"}, - {marker = "python_full_version >= '3.11'", name = "matplotlib", source = {registry = "https://pypi.org/simple"}, version = "3.11.1"}, - {marker = "python_full_version >= '3.11'", name = "rich"}, - {marker = "python_full_version >= '3.11'", name = "torch"}, + {marker = "python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, + {marker = "python_full_version < '3.13'", name = "omegaconf", source = {registry = "https://pypi.org/simple"}, version = "2.3.0"}, + {marker = "python_full_version < '3.13'", name = "tqdm", source = {registry = "https://pypi.org/simple"}, version = "4.67.3"}, {marker = "python_full_version >= '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "2.5.2"}, {marker = "python_full_version >= '3.13'", name = "omegaconf", source = {registry = "https://pypi.org/simple"}, version = "2.3.1"}, {marker = "python_full_version >= '3.13'", name = "tqdm", source = {registry = "https://pypi.org/simple"}, version = "4.70.0"}, + {name = "dacite"}, + {name = "einops"}, + {name = "ipykernel"}, + {name = "matplotlib", source = {registry = "https://pypi.org/simple"}, version = "3.11.1"}, + {name = "rich"}, + {name = "torch"}, ] name = "mlstm-kernels" sdist = {hash = "sha256:df312a07952c5063ce2e7c7aae22d1748e0b82aa330f9be40eef8a5c373c5fdc", size = 200322, upload-time = "2026-07-06T14:11:30.397Z", url = "https://files.pythonhosted.org/packages/76/dc/d7f11d3a7b5ae9c8e966f811825efb9df4f91928bf59c8a4e69631a13dc4/mlstm_kernels-2.0.4.tar.gz"} @@ -3200,7 +3202,7 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version < '3.13' and sys_platform == 'darwin'", name = "mlx-metal"}, + {name = "mlx-metal"}, ] name = "mlx" source = {registry = "https://pypi.org/simple"} @@ -3908,8 +3910,8 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version < '3.13'", name = "antlr4-python3-runtime"}, - {marker = "python_full_version < '3.13'", name = "pyyaml"}, + {name = "antlr4-python3-runtime"}, + {name = "pyyaml"}, ] name = "omegaconf" resolution-markers = [ @@ -3926,8 +3928,8 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version >= '3.13'", name = "antlr4-python3-runtime"}, - {marker = "python_full_version >= '3.13'", name = "pyyaml"}, + {name = "antlr4-python3-runtime"}, + {name = "pyyaml"}, ] name = "omegaconf" resolution-markers = [ @@ -4052,10 +4054,10 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, - {marker = "python_full_version < '3.13'", name = "python-dateutil"}, - {marker = "python_full_version < '3.13'", name = "pytz"}, - {marker = "python_full_version < '3.13'", name = "tzdata"}, + {name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, + {name = "python-dateutil"}, + {name = "pytz"}, + {name = "tzdata"}, ] name = "pandas" resolution-markers = [ @@ -4089,10 +4091,10 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version >= '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "2.5.2"}, - {marker = "python_full_version >= '3.13'", name = "python-dateutil"}, - {marker = "python_full_version >= '3.13'", name = "pytz"}, - {marker = "python_full_version >= '3.13'", name = "tzdata"}, + {name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "2.5.2"}, + {name = "python-dateutil"}, + {name = "pytz"}, + {name = "tzdata"}, ] name = "pandas" resolution-markers = [ @@ -4173,7 +4175,7 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version < '3.13'", name = "six"}, + {name = "six"}, ] name = "password-strength" sdist = {hash = "sha256:bf4df10a58fcd3abfa182367307b4fd7b1cec518121dd83bf80c1c42ba796762", size = 12857, upload-time = "2019-01-04T13:41:29.711Z", url = "https://files.pythonhosted.org/packages/db/f1/6165ebcca27fca3f1d63f8c3a45805c2ed8568be4d09219a2aa45e792c14/password_strength-0.0.3.post2.tar.gz"} @@ -4194,7 +4196,7 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, + {name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, ] name = "patsy" sdist = {hash = "sha256:cdc995455f6233e90e22de72c37fcadb344e7586fb83f06696f54d92f8ce74c0", size = 399942, upload-time = "2025-10-20T16:17:37.535Z", url = "https://files.pythonhosted.org/packages/be/44/ed13eccdd0519eff265f44b670d46fbb0ec813e2274932dc1c0e48520f7d/patsy-1.0.2.tar.gz"} @@ -4343,10 +4345,10 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version < '3.13'", name = "backoff"}, - {marker = "python_full_version < '3.13'", name = "distro"}, - {marker = "python_full_version < '3.13'", name = "requests"}, - {marker = "python_full_version < '3.13'", name = "typing-extensions"}, + {name = "backoff"}, + {name = "distro"}, + {name = "requests"}, + {name = "typing-extensions"}, ] name = "posthog" sdist = {hash = "sha256:ec8f46255a7c30629e7fec6aef04ce79e157dbfff4e1d8ca0e0612e0abe16a68", size = 422782, upload-time = "2026-08-10T14:02:45.585Z", url = "https://files.pythonhosted.org/packages/b1/c8/73ad89833953426b150462c3f3ea5ffda917f65e537acf47849ad61765e9/posthog-7.38.4.tar.gz"} @@ -4832,9 +4834,9 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version < '3.13'", name = "pydantic"}, - {marker = "python_full_version < '3.13'", name = "python-dotenv"}, - {marker = "python_full_version < '3.13'", name = "typing-inspection"}, + {name = "pydantic"}, + {name = "python-dotenv"}, + {name = "typing-inspection"}, ] name = "pydantic-settings" sdist = {hash = "sha256:c19dd64b19097f1de80184f0cc7b0272a13ae6e170cbf240a3e27e381ed14a5f", size = 237700, upload-time = "2026-06-19T13:44:56.324Z", url = "https://files.pythonhosted.org/packages/5c/b5/8f48e906c3e0205276e8bd8cb7512217a87b2685304d64be27cad5b3019f/pydantic_settings-2.14.2.tar.gz"} @@ -4893,6 +4895,43 @@ wheels = [ {hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386536, upload-time = "2026-06-19T10:58:31.347Z", url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl"}, ] +[[package]] +dependencies = [ + {name = "pytest"}, + {name = "rich"}, +] +name = "pytest-codspeed" +sdist = {hash = "sha256:91afef90e6a96b013495e4702ef5d6358614a449e71008cdc194ef668778b92f", size = 324571, upload-time = "2026-05-22T16:20:49.231Z", url = "https://files.pythonhosted.org/packages/e1/b4/cf932fcd1960a2fd6d9b09eb403253a8709aeee975961afa6299239a830e/pytest_codspeed-5.0.3.tar.gz"} +source = {registry = "https://pypi.org/simple"} +version = "5.0.3" +wheels = [ + {hash = "sha256:005348ea52ace3ede2e2f595913912ad2564cca7b124211a88dc78a9cb1fca63", size = 366249, upload-time = "2026-05-22T16:20:39.985Z", url = "https://files.pythonhosted.org/packages/a7/f5/a8f70147216e4b84046ca406d03ecc8e83e3ea56ba1bdca0bb79cca79fee/pytest_codspeed-5.0.3-cp310-cp310-macosx_11_0_arm64.whl"}, + {hash = "sha256:0c383c9121deb58a69f174188e9e4488ffc0daced0ed276abf87747182511901", size = 932360, upload-time = "2026-05-22T16:20:30.589Z", url = "https://files.pythonhosted.org/packages/a9/7b/ae76fd8ac656b9695806a6aafd5f22ec32e6ce20e266a58f9112e01d3cd8/pytest_codspeed-5.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl"}, + {hash = "sha256:20eba63765be9d1b6cacbbfad84b87d49eb04b357a7045a0899880da181f81e3", size = 935522, upload-time = "2026-05-22T16:21:03.398Z", url = "https://files.pythonhosted.org/packages/d1/de/2213f868fa7694f743f96cccbc07e757f45c920c523cccc2da97bc8652df/pytest_codspeed-5.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl"}, + {hash = "sha256:25464363c7f9b9bd5022e969c0addba616fa40ac9b8f0fc9e030c4538863b32d", size = 366259, upload-time = "2026-05-22T16:21:06.039Z", url = "https://files.pythonhosted.org/packages/04/6a/fdcec19c7f267c195f147c51d3fd2245f6b8d09b80495ed0a90c008e0842/pytest_codspeed-5.0.3-cp314-cp314-macosx_11_0_arm64.whl"}, + {hash = "sha256:2eeb25fb1ac3f73c4de50e739e78fea396b89782bdb740bf2a7cd2df21f8d4ee", size = 366255, upload-time = "2026-05-22T16:20:56.214Z", url = "https://files.pythonhosted.org/packages/c2/22/456c48160b761d5028c8afa119f085a9fc42855a783a13d73918078969f0/pytest_codspeed-5.0.3-cp312-cp312-macosx_11_0_arm64.whl"}, + {hash = "sha256:4c682f6645d4eb472f3bd95dbda1805e3af4243610572cb7d6bf94a88e8a0b6c", size = 932465, upload-time = "2026-05-22T16:20:34.265Z", url = "https://files.pythonhosted.org/packages/2a/15/c66ef90a793c5d2c039e63a1726a5e55c678be2618b0f5f1660d0f79e25f/pytest_codspeed-5.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl"}, + {hash = "sha256:6524c57fec279a22ffef6112af404036afc71b4704758ae9f0abda429b8478d4", size = 366253, upload-time = "2026-05-22T16:20:46.192Z", url = "https://files.pythonhosted.org/packages/dc/8e/e032451e9e0a06b0c4bff53105f62b693d9a54595dd8c024693741ce3380/pytest_codspeed-5.0.3-cp313-cp313-macosx_11_0_arm64.whl"}, + {hash = "sha256:73c5c9d98a3372a42611989ccfa437cce3842431ac6d6b9ab42c4f0e59c070f7", size = 932325, upload-time = "2026-05-22T16:21:08.814Z", url = "https://files.pythonhosted.org/packages/74/33/ac7441fa937c9d9f158083a8c46920a5a5c81ed3c5f96240fc8d650db5c2/pytest_codspeed-5.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl"}, + {hash = "sha256:782f9985b6f6b45b8bc20152d206d3a52b56dd088ba81cb70a71f0b39841be9e", size = 934994, upload-time = "2026-05-22T16:20:28.809Z", url = "https://files.pythonhosted.org/packages/96/08/56ad8f1cc7d6962f8a680141b361e93467a2abc53d976cd9d5e1edd740e3/pytest_codspeed-5.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl"}, + {hash = "sha256:7ac4344f34bbcdd17f6f8c30dbac3da2f80d223dd112e568fd7f7c2cd4cbc693", size = 934647, upload-time = "2026-05-22T16:20:31.997Z", url = "https://files.pythonhosted.org/packages/b1/e1/414ea4c66559f24ec06aeb6db62bfc7079582dac1452e648affe1eb5cfb4/pytest_codspeed-5.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl"}, + {hash = "sha256:85505c96a3477c346ec2d2b7dced8478f4c651e2b1666ee102d53a832b511853", size = 933169, upload-time = "2026-05-22T16:20:43.178Z", url = "https://files.pythonhosted.org/packages/a7/3c/24c53f67a38ad48cb087105ac30a8aa0923223ee274ea9bf2dc705edaa59/pytest_codspeed-5.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl"}, + {hash = "sha256:8df77b3409f54f4a268f77f3ff74992fe1d995cdbaf2cecf8ad74d32db217ce7", size = 932537, upload-time = "2026-05-22T16:20:54.945Z", url = "https://files.pythonhosted.org/packages/3c/2b/af4d1b612f03b98a6cf3c7d5f62678917a60110a8bf380d49ab408b31137/pytest_codspeed-5.0.3-cp315-cp315-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl"}, + {hash = "sha256:9aa0815b90196f3c20d736ea8691381e97f12bbe8c7d87af10a351e434b452cb", size = 366311, upload-time = "2026-05-22T16:20:41.791Z", url = "https://files.pythonhosted.org/packages/0b/54/9096c4545f09da94b1b00f3be2fe4952949e86c9bcafca9a29b26aed1a75/pytest_codspeed-5.0.3-cp314-cp314t-macosx_11_0_arm64.whl"}, + {hash = "sha256:a2e0ab65df73e837666d12357280ca50ff6d6ac03ea5266703be518b68170edf", size = 934885, upload-time = "2026-05-22T16:21:01.444Z", url = "https://files.pythonhosted.org/packages/77/bc/8b994adcb9e9016e7d9a808056a3dd9cca21441e432ef456eae2b697d7fe/pytest_codspeed-5.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl"}, + {hash = "sha256:a4bcdb4b6522738152885ef067e0c8524d5699828d780fb6f464cdb3db44369c", size = 934928, upload-time = "2026-05-22T16:20:38.62Z", url = "https://files.pythonhosted.org/packages/a6/4a/dfd43d943fdb143be4fd62f34c2793ba349dc27aa188e521d19d629aa7ab/pytest_codspeed-5.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl"}, + {hash = "sha256:a5d8695a227ea1c3a41d25db5b3fe720bf1b4808bd38862be811a4efd902c792", size = 934153, upload-time = "2026-05-22T16:21:07.494Z", url = "https://files.pythonhosted.org/packages/f5/a2/c7ec45e36a61b418efb2a3cccaa67a0c2fcf1f21d5880f64c33114f0c249/pytest_codspeed-5.0.3-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl"}, + {hash = "sha256:abe793da40f87295d33988673d34f06ea569848b44490b847552cd416816258a", size = 933055, upload-time = "2026-05-22T16:20:44.861Z", url = "https://files.pythonhosted.org/packages/a8/37/fb27aeb40a81320e7349553b877a21333c897b27c8dfe215630452908f36/pytest_codspeed-5.0.3-cp315-cp315t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl"}, + {hash = "sha256:bf4cc4178cbace8f4d2bd240408276bc4da3850ac5fcb5fb5f8a74ab417615bb", size = 366339, upload-time = "2026-05-22T16:20:51.968Z", url = "https://files.pythonhosted.org/packages/cf/c7/d5bada9618a0af56a5c8065fc61280849cab8e7c1e24025807a51c3157ce/pytest_codspeed-5.0.3-cp315-cp315t-macosx_11_0_arm64.whl"}, + {hash = "sha256:c3a9ed38dfa776443b86f4b49a982e8443d0953db4974bd2673d63cc904ae1ad", size = 934481, upload-time = "2026-05-22T16:20:58.264Z", url = "https://files.pythonhosted.org/packages/f3/d9/6f2d69e96deaf0475a695fc9195af59e7a3b5fab50782855e65c63a7bc28/pytest_codspeed-5.0.3-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl"}, + {hash = "sha256:dbe6a4a00b449b6ba2771f644cbc38bdf55acf5c812e60e5659110e19dd9f510", size = 932229, upload-time = "2026-05-22T16:20:37.283Z", url = "https://files.pythonhosted.org/packages/f6/bd/7a4dbcf457fcc3ed788c55d402f3af2671e0e342b6098090fd590aa8712e/pytest_codspeed-5.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl"}, + {hash = "sha256:ec9fa6f0af0a9feb0e0bd517fb59ef28f806fbd50c0c6900ac26cbb4d080eba5", size = 366275, upload-time = "2026-05-22T16:20:59.463Z", url = "https://files.pythonhosted.org/packages/df/85/5dfea1c031d6cccc11653464828edf205c30f798caf5b2a85375aacd914a/pytest_codspeed-5.0.3-cp315-cp315-macosx_11_0_arm64.whl"}, + {hash = "sha256:efd43f82ea03ced8488a767ded9473f050791ab7783ea8654107e1e0ac66af40", size = 932395, upload-time = "2026-05-22T16:21:04.804Z", url = "https://files.pythonhosted.org/packages/6a/96/c6b03b81dcd21ae3d6b32cca0b3c10149fa378eb21b338d4b63c9eb8050b/pytest_codspeed-5.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl"}, + {hash = "sha256:f56d0339cd98d26f6e561987be25bdd2761a5d53d8f73493b1ebe02d0d451093", size = 366253, upload-time = "2026-05-22T16:21:10.013Z", url = "https://files.pythonhosted.org/packages/ac/ef/32ce60d42a4aa43e728d988e13eb6568fbc7b10a514517b459bafd3f2b94/pytest_codspeed-5.0.3-cp311-cp311-macosx_11_0_arm64.whl"}, + {hash = "sha256:f852bee785a7a124cb1720b1915670c6742af87747dc4d838f3ffdbd365ce9d9", size = 934925, upload-time = "2026-05-22T16:20:47.63Z", url = "https://files.pythonhosted.org/packages/1a/7b/d231279301967f05b7909160489e85ee3a1b9da76094ea25343faba1abc2/pytest_codspeed-5.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl"}, + {hash = "sha256:fe2ea83c924c2250675b75686c3ee456b8cf0208d83d552e182a195fdf467378", size = 74033, upload-time = "2026-05-22T16:20:26.814Z", url = "https://files.pythonhosted.org/packages/c5/b2/1d2a993c532146dce9eca5b5942d51898021c3579ce18b2454f932a915f8/pytest_codspeed-5.0.3-py3-none-any.whl"}, +] + [[package]] dependencies = [ {extra = ["toml"], name = "coverage"}, @@ -5346,8 +5385,8 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version >= '3.11'", name = "charset-normalizer"}, - {marker = "python_full_version >= '3.11'", name = "pillow"}, + {name = "charset-normalizer"}, + {name = "pillow"}, ] name = "reportlab" sdist = {hash = "sha256:e4494a0c6623ae213bb856fba523171b2b54a7bf629fda02d5e525a7b899a784", size = 3701928, upload-time = "2026-06-18T11:34:31.145Z", url = "https://files.pythonhosted.org/packages/41/d6/4b7b0cf56880eb96533e607967be6a939e344675601e033d113a0bfa1f4e/reportlab-5.0.0.tar.gz"} @@ -5581,10 +5620,10 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version < '3.11'", name = "joblib"}, - {marker = "python_full_version < '3.11'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, - {marker = "python_full_version < '3.11'", name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.15.3"}, - {marker = "python_full_version < '3.11'", name = "threadpoolctl"}, + {name = "joblib"}, + {name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, + {name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.15.3"}, + {name = "threadpoolctl"}, ] name = "scikit-learn" resolution-markers = [ @@ -5628,13 +5667,13 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, - {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.17.1"}, - {marker = "python_full_version >= '3.11'", name = "joblib"}, - {marker = "python_full_version >= '3.11'", name = "narwhals"}, - {marker = "python_full_version >= '3.11'", name = "threadpoolctl"}, + {marker = "python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, + {marker = "python_full_version < '3.13'", name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.17.1"}, {marker = "python_full_version >= '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "2.5.2"}, {marker = "python_full_version >= '3.13'", name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.18.0"}, + {name = "joblib"}, + {name = "narwhals"}, + {name = "threadpoolctl"}, ] name = "scikit-learn" resolution-markers = [ @@ -5682,7 +5721,7 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version < '3.11'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, + {name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, ] name = "scipy" resolution-markers = [ @@ -5741,7 +5780,7 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, + {name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, ] name = "scipy" resolution-markers = [ @@ -5816,7 +5855,7 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version >= '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "2.5.2"}, + {name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "2.5.2"}, ] name = "scipy" resolution-markers = [ @@ -5872,11 +5911,11 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, - {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "pandas", source = {registry = "https://pypi.org/simple"}, version = "2.1.4"}, - {marker = "python_full_version >= '3.11'", name = "matplotlib", source = {registry = "https://pypi.org/simple"}, version = "3.11.1"}, + {marker = "python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, + {marker = "python_full_version < '3.13'", name = "pandas", source = {registry = "https://pypi.org/simple"}, version = "2.1.4"}, {marker = "python_full_version >= '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "2.5.2"}, {marker = "python_full_version >= '3.13'", name = "pandas", source = {registry = "https://pypi.org/simple"}, version = "2.3.3"}, + {name = "matplotlib", source = {registry = "https://pypi.org/simple"}, version = "3.11.1"}, ] name = "seaborn" sdist = {hash = "sha256:93e60a40988f4d65e9f4885df477e2fdaff6b73a9ded434c1ab356dd57eefff7", size = 1457696, upload-time = "2024-01-25T13:21:52.551Z", url = "https://files.pythonhosted.org/packages/86/59/a451d7420a77ab0b98f7affa3a1d78a313d2f7281a57afb1a34bae8ab412/seaborn-0.13.2.tar.gz"} @@ -5959,12 +5998,12 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version < '3.11'", name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.15.3"}, - {marker = "python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, - {marker = "python_full_version < '3.13'", name = "packaging"}, - {marker = "python_full_version < '3.13'", name = "pandas", source = {registry = "https://pypi.org/simple"}, version = "2.1.4"}, - {marker = "python_full_version < '3.13'", name = "patsy"}, + {marker = "python_full_version < '3.11' or python_full_version >= '3.13'", name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.15.3"}, {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.17.1"}, + {name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, + {name = "packaging"}, + {name = "pandas", source = {registry = "https://pypi.org/simple"}, version = "2.1.4"}, + {name = "patsy"}, ] name = "statsmodels" sdist = {hash = "sha256:4d17873d3e607d398b85126cd4ed7aad89e4e9d89fc744cdab1af3189a996c2a", size = 20689085, upload-time = "2025-12-05T23:08:39.522Z", url = "https://files.pythonhosted.org/packages/0d/81/e8d74b34f85285f7335d30c5e3c2d7c0346997af9f3debf9a0a9a63de184/statsmodels-0.14.6.tar.gz"} @@ -6017,24 +6056,24 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version < '3.11'", name = "scikit-learn", source = {registry = "https://pypi.org/simple"}, version = "1.7.2"}, - {marker = "python_full_version < '3.11'", name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.15.3"}, - {marker = "python_full_version < '3.13' and platform_machine == 'arm64' and sys_platform == 'darwin'", name = "mlx"}, - {marker = "python_full_version < '3.13'", name = "einops"}, - {marker = "python_full_version < '3.13'", name = "filelock"}, - {marker = "python_full_version < '3.13'", name = "huggingface-hub"}, - {marker = "python_full_version < '3.13'", name = "joblib"}, - {marker = "python_full_version < '3.13'", name = "lightgbm"}, - {marker = "python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, - {marker = "python_full_version < '3.13'", name = "pandas", source = {registry = "https://pypi.org/simple"}, version = "2.1.4"}, - {marker = "python_full_version < '3.13'", name = "pydantic"}, - {marker = "python_full_version < '3.13'", name = "pydantic-settings"}, - {marker = "python_full_version < '3.13'", name = "safetensors"}, - {marker = "python_full_version < '3.13'", name = "torch"}, - {marker = "python_full_version < '3.13'", name = "tqdm", source = {registry = "https://pypi.org/simple"}, version = "4.67.3"}, - {marker = "python_full_version < '3.13'", name = "typing-extensions"}, + {marker = "platform_machine == 'arm64' and sys_platform == 'darwin'", name = "mlx"}, + {marker = "python_full_version < '3.11' or python_full_version >= '3.13'", name = "scikit-learn", source = {registry = "https://pypi.org/simple"}, version = "1.7.2"}, + {marker = "python_full_version < '3.11' or python_full_version >= '3.13'", name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.15.3"}, {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "scikit-learn", source = {registry = "https://pypi.org/simple"}, version = "1.9.0"}, {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.17.1"}, + {name = "einops"}, + {name = "filelock"}, + {name = "huggingface-hub"}, + {name = "joblib"}, + {name = "lightgbm"}, + {name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, + {name = "pandas", source = {registry = "https://pypi.org/simple"}, version = "2.1.4"}, + {name = "pydantic"}, + {name = "pydantic-settings"}, + {name = "safetensors"}, + {name = "torch"}, + {name = "tqdm", source = {registry = "https://pypi.org/simple"}, version = "4.67.3"}, + {name = "typing-extensions"}, ] name = "tabpfn" sdist = {hash = "sha256:05361a6d68654fee182809718b29bb7b1add233b51148479e946bb46bf39df4e", size = 770054, upload-time = "2026-07-28T15:00:52.509Z", url = "https://files.pythonhosted.org/packages/80/da/657c9c8d6ec9a72eb4c27d8e02e1e5d20faf188783cfd44d1ba591d4fcce/tabpfn-8.2.0.tar.gz"} @@ -6046,23 +6085,23 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version < '3.11'", name = "scikit-learn", source = {registry = "https://pypi.org/simple"}, version = "1.7.2"}, - {marker = "python_full_version < '3.13'", name = "backoff"}, - {marker = "python_full_version < '3.13'", name = "google-crc32c"}, - {marker = "python_full_version < '3.13'", name = "httpx"}, - {marker = "python_full_version < '3.13'", name = "omegaconf", source = {registry = "https://pypi.org/simple"}, version = "2.3.0"}, - {marker = "python_full_version < '3.13'", name = "pandas", source = {registry = "https://pypi.org/simple"}, version = "2.1.4"}, - {marker = "python_full_version < '3.13'", name = "password-strength"}, - {marker = "python_full_version < '3.13'", name = "pyarrow", source = {registry = "https://pypi.org/simple"}, version = "23.0.1"}, - {marker = "python_full_version < '3.13'", name = "pydantic"}, - {marker = "python_full_version < '3.13'", name = "pydantic-settings"}, - {marker = "python_full_version < '3.13'", name = "rich"}, - {marker = "python_full_version < '3.13'", name = "sseclient-py"}, - {marker = "python_full_version < '3.13'", name = "tabpfn-common-utils"}, - {marker = "python_full_version < '3.13'", name = "tqdm", source = {registry = "https://pypi.org/simple"}, version = "4.67.3"}, - {marker = "python_full_version < '3.13'", name = "typing-extensions"}, - {marker = "python_full_version < '3.13'", name = "xxhash"}, + {marker = "python_full_version < '3.11' or python_full_version >= '3.13'", name = "scikit-learn", source = {registry = "https://pypi.org/simple"}, version = "1.7.2"}, {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "scikit-learn", source = {registry = "https://pypi.org/simple"}, version = "1.9.0"}, + {name = "backoff"}, + {name = "google-crc32c"}, + {name = "httpx"}, + {name = "omegaconf", source = {registry = "https://pypi.org/simple"}, version = "2.3.0"}, + {name = "pandas", source = {registry = "https://pypi.org/simple"}, version = "2.1.4"}, + {name = "password-strength"}, + {name = "pyarrow", source = {registry = "https://pypi.org/simple"}, version = "23.0.1"}, + {name = "pydantic"}, + {name = "pydantic-settings"}, + {name = "rich"}, + {name = "sseclient-py"}, + {name = "tabpfn-common-utils"}, + {name = "tqdm", source = {registry = "https://pypi.org/simple"}, version = "4.67.3"}, + {name = "typing-extensions"}, + {name = "xxhash"}, ] name = "tabpfn-client" sdist = {hash = "sha256:b5e94f6941abb375b583de249a81b4bc0f5cfbe3e72debeb72dc7ac1e3249bbe", size = 199146, upload-time = "2026-08-11T11:26:26.361Z", url = "https://files.pythonhosted.org/packages/a3/e9/3f56f05c4ec3e90e8b36654685fa169b531f130d892877476e9b005ca741/tabpfn_client-0.4.1.tar.gz"} @@ -6074,17 +6113,17 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version < '3.11'", name = "scikit-learn", source = {registry = "https://pypi.org/simple"}, version = "1.7.2"}, - {marker = "python_full_version < '3.13'", name = "filelock"}, - {marker = "python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, - {marker = "python_full_version < '3.13'", name = "nvidia-ml-py"}, - {marker = "python_full_version < '3.13'", name = "pandas", source = {registry = "https://pypi.org/simple"}, version = "2.1.4"}, - {marker = "python_full_version < '3.13'", name = "platformdirs"}, - {marker = "python_full_version < '3.13'", name = "posthog"}, - {marker = "python_full_version < '3.13'", name = "requests"}, - {marker = "python_full_version < '3.13'", name = "ruff"}, - {marker = "python_full_version < '3.13'", name = "typing-extensions"}, + {marker = "python_full_version < '3.11' or python_full_version >= '3.13'", name = "scikit-learn", source = {registry = "https://pypi.org/simple"}, version = "1.7.2"}, {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "scikit-learn", source = {registry = "https://pypi.org/simple"}, version = "1.9.0"}, + {name = "filelock"}, + {name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, + {name = "nvidia-ml-py"}, + {name = "pandas", source = {registry = "https://pypi.org/simple"}, version = "2.1.4"}, + {name = "platformdirs"}, + {name = "posthog"}, + {name = "requests"}, + {name = "ruff"}, + {name = "typing-extensions"}, ] name = "tabpfn-common-utils" sdist = {hash = "sha256:d5bb515f9c7bdda555d833542ab4c41a2cc7007e3ae57b9c302ad4f4f8186558", size = 1932394, upload-time = "2026-03-27T13:31:27.285Z", url = "https://files.pythonhosted.org/packages/84/62/ec181b52e12f64eac179f31d0891ccb2b3f48552de32d8992e0f5144c808/tabpfn_common_utils-0.2.19.tar.gz"} @@ -6096,15 +6135,15 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version < '3.13'", name = "datasets"}, - {marker = "python_full_version < '3.13'", name = "gluonts"}, - {marker = "python_full_version < '3.13'", name = "pandas", source = {registry = "https://pypi.org/simple"}, version = "2.1.4"}, - {marker = "python_full_version < '3.13'", name = "python-dotenv"}, - {marker = "python_full_version < '3.13'", name = "pyyaml"}, - {marker = "python_full_version < '3.13'", name = "statsmodels"}, - {marker = "python_full_version < '3.13'", name = "tabpfn"}, - {marker = "python_full_version < '3.13'", name = "tabpfn-client"}, - {marker = "python_full_version < '3.13'", name = "tqdm", source = {registry = "https://pypi.org/simple"}, version = "4.67.3"}, + {name = "datasets"}, + {name = "gluonts"}, + {name = "pandas", source = {registry = "https://pypi.org/simple"}, version = "2.1.4"}, + {name = "python-dotenv"}, + {name = "pyyaml"}, + {name = "statsmodels"}, + {name = "tabpfn"}, + {name = "tabpfn-client"}, + {name = "tqdm", source = {registry = "https://pypi.org/simple"}, version = "4.67.3"}, ] name = "tabpfn-time-series" sdist = {hash = "sha256:f0922f73dc4760cc4919b76381443f1b7287f694bb832c5675b5f4f4929fdb6b", size = 468774, upload-time = "2025-07-16T13:21:44.809Z", url = "https://files.pythonhosted.org/packages/33/8e/82cea00d409a298144b569e4ec4eeb057f89d79c9b2a17d6c5025a7570ac/tabpfn_time_series-1.0.3.tar.gz"} @@ -6150,17 +6189,17 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, - {marker = "python_full_version < '3.14'", name = "absl-py"}, - {marker = "python_full_version < '3.14'", name = "grpcio"}, - {marker = "python_full_version < '3.14'", name = "markdown"}, - {marker = "python_full_version < '3.14'", name = "packaging"}, - {marker = "python_full_version < '3.14'", name = "pillow"}, - {marker = "python_full_version < '3.14'", name = "protobuf"}, - {marker = "python_full_version < '3.14'", name = "setuptools"}, - {marker = "python_full_version < '3.14'", name = "tensorboard-data-server"}, - {marker = "python_full_version < '3.14'", name = "werkzeug"}, + {marker = "python_full_version != '3.13.*'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, {marker = "python_full_version == '3.13.*'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "2.5.2"}, + {name = "absl-py"}, + {name = "grpcio"}, + {name = "markdown"}, + {name = "packaging"}, + {name = "pillow"}, + {name = "protobuf"}, + {name = "setuptools"}, + {name = "tensorboard-data-server"}, + {name = "werkzeug"}, ] name = "tensorboard" source = {registry = "https://pypi.org/simple"} @@ -6181,14 +6220,14 @@ wheels = [ [[package]] dependencies = [ + {marker = "python_full_version != '3.13.*'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, {marker = "python_full_version == '3.13.*'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "2.5.2"}, - {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, - {marker = "python_full_version >= '3.11' and python_full_version < '3.14'", name = "einops"}, - {marker = "python_full_version >= '3.11' and python_full_version < '3.14'", name = "huggingface-hub"}, - {marker = "python_full_version >= '3.11' and python_full_version < '3.14'", name = "jaxtyping", source = {registry = "https://pypi.org/simple"}, version = "0.2.38"}, - {marker = "python_full_version >= '3.11' and python_full_version < '3.14'", name = "rotary-embedding-torch"}, - {marker = "python_full_version >= '3.11' and python_full_version < '3.14'", name = "safetensors"}, - {marker = "python_full_version >= '3.11' and python_full_version < '3.14'", name = "torch"}, + {name = "einops"}, + {name = "huggingface-hub"}, + {name = "jaxtyping", source = {registry = "https://pypi.org/simple"}, version = "0.2.38"}, + {name = "rotary-embedding-torch"}, + {name = "safetensors"}, + {name = "torch"}, ] name = "tfc-t0" sdist = {hash = "sha256:0792f5088ecf898b13e51290da0508d1b96c8abf74843aea4b397d6e807331d4", size = 327018, upload-time = "2026-07-30T15:51:35.942Z", url = "https://files.pythonhosted.org/packages/85/59/de499b9a1ec1a6ca95745525cf01f336a4999a7c4436d8b71dcfd0a975ae/tfc_t0-0.2.3.tar.gz"} @@ -6241,17 +6280,17 @@ wheels = [ [[package]] dependencies = [ - {extra = ["torch"], marker = "python_full_version >= '3.11' and python_full_version < '3.14'", name = "transformers"}, + {extra = ["torch"], name = "transformers"}, + {marker = "python_full_version != '3.13.*'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, + {marker = "python_full_version != '3.13.*'", name = "pandas", source = {registry = "https://pypi.org/simple"}, version = "2.1.4"}, {marker = "python_full_version == '3.13.*'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "2.5.2"}, {marker = "python_full_version == '3.13.*'", name = "pandas", source = {registry = "https://pypi.org/simple"}, version = "2.3.3"}, - {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, - {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "pandas", source = {registry = "https://pypi.org/simple"}, version = "2.1.4"}, - {marker = "python_full_version >= '3.11' and python_full_version < '3.14'", name = "datasets"}, - {marker = "python_full_version >= '3.11' and python_full_version < '3.14'", name = "deprecated"}, - {marker = "python_full_version >= '3.11' and python_full_version < '3.14'", name = "einops"}, - {marker = "python_full_version >= '3.11' and python_full_version < '3.14'", name = "scikit-learn", source = {registry = "https://pypi.org/simple"}, version = "1.9.0"}, - {marker = "python_full_version >= '3.11' and python_full_version < '3.14'", name = "torch"}, - {marker = "python_full_version >= '3.11' and python_full_version < '3.14'", name = "urllib3"}, + {name = "datasets"}, + {name = "deprecated"}, + {name = "einops"}, + {name = "scikit-learn", source = {registry = "https://pypi.org/simple"}, version = "1.9.0"}, + {name = "torch"}, + {name = "urllib3"}, ] name = "timecopilot-granite-tsfm" sdist = {hash = "sha256:753d23da2c67b232c2e7919aa776a9e0851ea5c22737ce7eb94a70f89913ebba", size = 24475737, upload-time = "2026-06-24T22:31:38.166Z", url = "https://files.pythonhosted.org/packages/b2/55/c85728a8ea30843f745784ae760cc3db30e60f05b7662a4e3ed90fb10052/timecopilot_granite_tsfm-0.2.1.tar.gz"} @@ -6288,13 +6327,13 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, - {marker = "python_full_version >= '3.11'", name = "huggingface-hub"}, - {marker = "python_full_version >= '3.11'", name = "ninja"}, - {marker = "python_full_version >= '3.11'", name = "scikit-learn", source = {registry = "https://pypi.org/simple"}, version = "1.9.0"}, - {marker = "python_full_version >= '3.11'", name = "torch"}, - {marker = "python_full_version >= '3.11'", name = "xlstm"}, + {marker = "python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, {marker = "python_full_version >= '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "2.5.2"}, + {name = "huggingface-hub"}, + {name = "ninja"}, + {name = "scikit-learn", source = {registry = "https://pypi.org/simple"}, version = "1.9.0"}, + {name = "torch"}, + {name = "xlstm"}, ] name = "timecopilot-tirex" sdist = {hash = "sha256:c493aff2d29d1fb7a4c3a5a2642df67030691744cc1ae79d5ea9583f4b5d8895", size = 56461, upload-time = "2026-06-09T23:24:46.477Z", url = "https://files.pythonhosted.org/packages/4a/06/2574fe82fb59ba11a8bf589677243cff349061e95912a762558ca46813aa/timecopilot_tirex-0.1.1.tar.gz"} @@ -6306,14 +6345,14 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, - {marker = "python_full_version >= '3.11'", name = "einops"}, - {marker = "python_full_version >= '3.11'", name = "flashrnn"}, - {marker = "python_full_version >= '3.11'", name = "huggingface-hub"}, - {marker = "python_full_version >= '3.11'", name = "pyyaml"}, - {marker = "python_full_version >= '3.11'", name = "torch"}, - {marker = "python_full_version >= '3.11'", name = "xlstm"}, + {marker = "python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, {marker = "python_full_version >= '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "2.5.2"}, + {name = "einops"}, + {name = "flashrnn"}, + {name = "huggingface-hub"}, + {name = "pyyaml"}, + {name = "torch"}, + {name = "xlstm"}, ] name = "timecopilot-tirex2" sdist = {hash = "sha256:e7898a6aa0bde7619290bec798624de3b281a9047c2f78e1f2792aba42aa9910", size = 64334, upload-time = "2026-08-10T18:05:24.413Z", url = "https://files.pythonhosted.org/packages/7c/80/30db0c511868117e38f3b638e7f7f83723de4ff5a648bf68b7c29dc17209/timecopilot_tirex2-0.1.0.tar.gz"} @@ -6388,27 +6427,27 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version < '3.11'", name = "jax", source = {registry = "https://pypi.org/simple"}, version = "0.6.2"}, - {marker = "python_full_version < '3.11'", name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.15.3"}, - {marker = "python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, - {marker = "python_full_version < '3.14'", name = "datasets"}, - {marker = "python_full_version < '3.14'", name = "einops"}, - {marker = "python_full_version < '3.14'", name = "gluonts"}, - {marker = "python_full_version < '3.14'", name = "huggingface-hub"}, - {marker = "python_full_version < '3.14'", name = "hydra-core"}, - {marker = "python_full_version < '3.14'", name = "jaxtyping", source = {registry = "https://pypi.org/simple"}, version = "0.2.38"}, - {marker = "python_full_version < '3.14'", name = "lightning"}, - {marker = "python_full_version < '3.14'", name = "multiprocess"}, - {marker = "python_full_version < '3.14'", name = "orjson"}, - {marker = "python_full_version < '3.14'", name = "python-dotenv"}, - {marker = "python_full_version < '3.14'", name = "safetensors"}, - {marker = "python_full_version < '3.14'", name = "tensorboard"}, - {marker = "python_full_version < '3.14'", name = "torch"}, + {marker = "python_full_version != '3.13.*'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, + {marker = "python_full_version < '3.11' or python_full_version >= '3.14'", name = "jax", source = {registry = "https://pypi.org/simple"}, version = "0.6.2"}, + {marker = "python_full_version < '3.11' or python_full_version >= '3.14'", name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.15.3"}, {marker = "python_full_version == '3.13.*'", name = "jax", source = {registry = "https://pypi.org/simple"}, version = "0.11.0"}, {marker = "python_full_version == '3.13.*'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "2.5.2"}, {marker = "python_full_version == '3.13.*'", name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.18.0"}, {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "jax", source = {registry = "https://pypi.org/simple"}, version = "0.7.1"}, {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "scipy", source = {registry = "https://pypi.org/simple"}, version = "1.17.1"}, + {name = "datasets"}, + {name = "einops"}, + {name = "gluonts"}, + {name = "huggingface-hub"}, + {name = "hydra-core"}, + {name = "jaxtyping", source = {registry = "https://pypi.org/simple"}, version = "0.2.38"}, + {name = "lightning"}, + {name = "multiprocess"}, + {name = "orjson"}, + {name = "python-dotenv"}, + {name = "safetensors"}, + {name = "tensorboard"}, + {name = "torch"}, ] name = "timecopilot-uni2ts" sdist = {hash = "sha256:352b08af9fcd001399f36a8c6c398c1f80ee84801c2b3d7bc36bf9634ecefffc", size = 102981, upload-time = "2026-08-10T17:59:11.628Z", url = "https://files.pythonhosted.org/packages/63/99/e2b3d93a82734103282a9f8f2460d881d6c34f764911de4f52047a59f5a5/timecopilot_uni2ts-0.1.3.tar.gz"} @@ -6606,7 +6645,7 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version < '3.13' and sys_platform == 'win32'", name = "colorama"}, + {marker = "sys_platform == 'win32'", name = "colorama"}, ] name = "tqdm" resolution-markers = [ @@ -6623,7 +6662,7 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version >= '3.13' and sys_platform == 'win32'", name = "colorama"}, + {marker = "sys_platform == 'win32'", name = "colorama"}, ] name = "tqdm" resolution-markers = [ @@ -6671,8 +6710,8 @@ wheels = [ [package.optional-dependencies] torch = [ - {marker = "python_full_version >= '3.11' and python_full_version < '3.14'", name = "accelerate"}, - {marker = "python_full_version >= '3.11' and python_full_version < '3.14'", name = "torch"}, + {name = "accelerate"}, + {name = "torch"}, ] [[package]] @@ -6927,7 +6966,7 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version < '3.14'", name = "markupsafe"}, + {name = "markupsafe"}, ] name = "werkzeug" sdist = {hash = "sha256:9bad61a4268dac112f1c5cd4630a56ede601b6ed420300677a869083d70a4c44", size = 875852, upload-time = "2026-04-02T18:49:14.268Z", url = "https://files.pythonhosted.org/packages/dd/b2/381be8cfdee792dd117872481b6e378f85c957dd7c5bca38897b08f765fd/werkzeug-3.1.8.tar.gz"} @@ -7025,27 +7064,27 @@ wheels = [ [[package]] dependencies = [ - {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, - {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "omegaconf", source = {registry = "https://pypi.org/simple"}, version = "2.3.0"}, - {marker = "python_full_version >= '3.11' and python_full_version < '3.13'", name = "tqdm", source = {registry = "https://pypi.org/simple"}, version = "4.67.3"}, - {marker = "python_full_version >= '3.11'", name = "dacite"}, - {marker = "python_full_version >= '3.11'", name = "einops"}, - {marker = "python_full_version >= '3.11'", name = "ftfy"}, - {marker = "python_full_version >= '3.11'", name = "huggingface-hub"}, - {marker = "python_full_version >= '3.11'", name = "ipykernel"}, - {marker = "python_full_version >= '3.11'", name = "joypy"}, - {marker = "python_full_version >= '3.11'", name = "mlstm-kernels"}, - {marker = "python_full_version >= '3.11'", name = "ninja"}, - {marker = "python_full_version >= '3.11'", name = "opt-einsum"}, - {marker = "python_full_version >= '3.11'", name = "reportlab"}, - {marker = "python_full_version >= '3.11'", name = "rich"}, - {marker = "python_full_version >= '3.11'", name = "seaborn"}, - {marker = "python_full_version >= '3.11'", name = "tokenizers"}, - {marker = "python_full_version >= '3.11'", name = "torch"}, - {marker = "python_full_version >= '3.11'", name = "transformers"}, + {marker = "python_full_version < '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "1.26.4"}, + {marker = "python_full_version < '3.13'", name = "omegaconf", source = {registry = "https://pypi.org/simple"}, version = "2.3.0"}, + {marker = "python_full_version < '3.13'", name = "tqdm", source = {registry = "https://pypi.org/simple"}, version = "4.67.3"}, {marker = "python_full_version >= '3.13'", name = "numpy", source = {registry = "https://pypi.org/simple"}, version = "2.5.2"}, {marker = "python_full_version >= '3.13'", name = "omegaconf", source = {registry = "https://pypi.org/simple"}, version = "2.3.1"}, {marker = "python_full_version >= '3.13'", name = "tqdm", source = {registry = "https://pypi.org/simple"}, version = "4.70.0"}, + {name = "dacite"}, + {name = "einops"}, + {name = "ftfy"}, + {name = "huggingface-hub"}, + {name = "ipykernel"}, + {name = "joypy"}, + {name = "mlstm-kernels"}, + {name = "ninja"}, + {name = "opt-einsum"}, + {name = "reportlab"}, + {name = "rich"}, + {name = "seaborn"}, + {name = "tokenizers"}, + {name = "torch"}, + {name = "transformers"}, ] name = "xlstm" sdist = {hash = "sha256:24a5572be44207fc15ed5dea6b805c4bcd450a8f2728320cf21b8082c535b60e", size = 71129, upload-time = "2025-08-24T14:38:49.493Z", url = "https://files.pythonhosted.org/packages/7f/4d/05efa4c76b8ade8cbd638e2b0329694a767146616186ef786107740e4e89/xlstm-2.0.5.tar.gz"}