diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 49145a7..0028405 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -1,28 +1,20 @@ -name: build docs +name: docs on: workflow_dispatch: + pull_request: push: - tags: - - "*" permissions: contents: read - pages: write # for deploying to GitHub Pages - id-token: write # for authenticating deployment jobs: - deploy: + build: + name: Build Docs runs-on: ubuntu-latest - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} steps: - uses: actions/checkout@v6 - - name: Configure Pages - uses: actions/configure-pages@v6 - - name: Install uv uses: astral-sh/setup-uv@v8.2.0 with: @@ -33,17 +25,31 @@ jobs: with: python-version: "3.14" - - name: Install the project - run: uv sync --all-extras --all-groups + - name: Install docs dependencies + run: uv sync --no-default-groups --group docs --group typing - name: Build with Zensical - run: uv run zensical build --clean # no cache for zensical v0.0.x + run: uv run --no-default-groups --group docs --group typing zensical build --clean - - name: Upload artifact + - name: Upload Pages artifact uses: actions/upload-pages-artifact@v5 with: path: site + deploy: + name: Deploy GitHub Pages + needs: build + if: >- + github.event_name == 'workflow_dispatch' || + startsWith(github.ref, 'refs/tags/') + runs-on: ubuntu-latest + permissions: + pages: write # for deploying to GitHub Pages + id-token: write # for authenticating deployment + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v5 \ No newline at end of file + uses: actions/deploy-pages@v5 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index e767aa4..2711231 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -30,7 +30,7 @@ jobs: python-version: "3.10" - name: install the project - run: uv sync --all-extras --all-groups + run: uv sync --all-groups --extra all --extra torch_cpu - name: style checking run: | @@ -67,7 +67,7 @@ jobs: python-version: ${{ matrix.python-version }} - name: install the project - run: uv sync --all-extras --all-groups + run: uv sync --all-groups --extra all --extra torch_cpu - name: run non-network tests run: uv run pytest -q -m "not network" @@ -97,7 +97,7 @@ jobs: run: sudo apt-get update && sudo apt-get install -y zstd - name: install the project - run: uv sync --all-extras --all-groups + run: uv sync --all-groups --extra all --extra torch_cpu - name: run network tests env: diff --git a/README.md b/README.md index db40ef3..a547f25 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ Depending on your use case, you can pick the optional dependencies you need: - `polars`: support for [polars](https://github.com/pola-rs/polars) and its Array API shim (postprocessing third party data) - `httpx`: support for [httpx](https://github.com/encode/httpx) (downloading data from external sources) - `xarray`: support for [xarray](https://github.com/pydata/xarray) (ARCO-ERA5 weather grids, working with NetCDF) -- `jax`: support for [JAX](https://github.com/jax-ml/jax) (automatic differentiation support) +- `jax`: support for [JAX](https://github.com/jax-ml/jax) (automatic differentiation/GPU acceleration support) - `matplotlib`: plotting - `platformdirs`: reading/writing cache/config files - `cli`: command line scripts @@ -51,13 +51,16 @@ uv run aerocore --help git clone https://github.com/abc8747/aerocore --depth=1 cd aerocore uv venv -uv sync --all-extras --all-groups +# standard +uv sync --all-groups --extra all +# if you want to benchmark with GPU support +uv sync --all-groups --all-extras --no-extra 'torch-cpu' ``` To run scripts: ```sh -uv run examples/autodiff.py +uv run examples/capabilities_jax.py ``` For documentation: diff --git a/docs/acropole.md b/docs/acropole.md new file mode 100644 index 0000000..066fe2e --- /dev/null +++ b/docs/acropole.md @@ -0,0 +1,105 @@ +# Fuel Estimation (Acropole) + +Acropole is a neural network that estimates the fuel flow given an aircraft state vector and its parameters (see [Jarry et al. (2024)](https://doi.org/10.13140/RG.2.2.23229.27360)). + +Unlike the [upstream repository](https://github.com/DGAC/Acropole) which uses ONNX, this implementation is intentionally backend agnostic. You can use pure numpy, or optionally use JAX/Torch for GPU acceleration. + +## Download assets + +The model weights and aircraft database are distributed separately (not bundled in the library) because it is licensed under the GNU Affero General Public License v3.0. Download them manually: + +```sh +uv add "aerocore[cli,httpx]" +# by default, this is downloaded to the cache directory (xdg cache home on Linux/Mac) +uv run aerocore data-acropole-sync +``` + +## Numpy Backend + +To run with the default numpy backend: + +```python +--8<-- "examples/acropole_numpy.py:input0" +``` + +```text +--8<-- "examples/acropole_numpy.py:output0" +``` + +!!! note "Inputs" + + Trajectory arrays must have identical shapes and store time along the final axis. Aerocore does not broadcast, resample, smooth or interpolate trajectory inputs. + + The paper reports using one-second QAR samples and says vertical speed and true airspeed were smoothed with a Savitzky-Golay filter, but does not specify a filter window. The upstream implementation later recommended approximately four-second sampling. Callers are responsible for any resampling, interpolation, and smoothing. + +Under the hood, it duplicates the parameters in the given [`AcropoleAircraft`][aerocore.acropole.AcropoleAircraft] across the batch, resulting in an array of shape `(12, T)`. But in cases where you want heterogenous aircraft types, you should construct the input arrays yourself and use lower level functions: + +```python +--8<-- "examples/acropole_mixed_aircraft.py:input0" +``` + +```text +--8<-- "examples/acropole_mixed_aircraft.py:output0" +``` + +## Other numerical backends + +Here is a benchmark of Acropole. On my machine `jax.jit` achieves 2-4x speedup compared to `onnxruntime-gpu` depending on the batch size. Note that input arrays are assumed to be on the device the model is located, so GPU benchmarks do not include the CPU-GPU synchronisation latency. + +![Acropole backend benchmark](assets/img/acropole-benchmark.png) + +To use JAX JIT on GPU, use [`tree_map()`][aerocore.utils.tree_map] to move the model to another device: + +```sh +uv add "aerocore[jax_gpu,matplotlib]" +``` + +```python +--8<-- "examples/acropole_jax_gpu.py:input0" +``` + +```text +--8<-- "examples/acropole_jax_gpu.py:output0" +``` + +A toy example of using `jax.value_and_grad` to show the direction of the steepest increase in fuel flow over a grid of altitude and groundspeed, for a steady, level, unaccelerated A320 flight at 65 tonnes: + +
+ code + + ```python + --8<-- "examples/acropole_jax_gradient.py:input0" + ``` +
+ +![Acropole fuel-flow gradient field](assets/img/acropole-fuel-flow-gradient.png) + +It supports PyTorch CUDA too: + +```sh +uv add "aerocore[torch_gpu]" +``` + +```python +--8<-- "examples/acropole_torch_gpu.py:input0" +``` + +```text +--8<-- "examples/acropole_torch_gpu.py:output0" +``` + +Any Array API compatible interface is also supported. + +## Development + +```sh +./scripts/acropole_prepare_model.py build \ + --output-dir dist/acropole-v0.1.0 + +# test the published assets +uv run pytest -q tests/test_acropole.py + +./scripts/acropole_benchmark.py \ + --output /tmp/acropole-benchmark.jsonl \ + --plot docs/assets/img/acropole-benchmark.png +``` diff --git a/docs/api/acropole.md b/docs/api/acropole.md new file mode 100644 index 0000000..b633735 --- /dev/null +++ b/docs/api/acropole.md @@ -0,0 +1 @@ +::: aerocore.acropole diff --git a/docs/assets/img/acropole-benchmark.png b/docs/assets/img/acropole-benchmark.png new file mode 100644 index 0000000..42fcf85 Binary files /dev/null and b/docs/assets/img/acropole-benchmark.png differ diff --git a/docs/assets/img/acropole-fuel-flow-gradient.png b/docs/assets/img/acropole-fuel-flow-gradient.png new file mode 100644 index 0000000..0a21a39 Binary files /dev/null and b/docs/assets/img/acropole-fuel-flow-gradient.png differ diff --git a/docs/capabilities.md b/docs/capabilities.md new file mode 100644 index 0000000..9dca84c --- /dev/null +++ b/docs/capabilities.md @@ -0,0 +1,31 @@ +# Capabilities + +Most aerocore functions can be used with multiple computational backends by passing an Array API-compatible namespace to the `xp` keyword argument. + +This allows us to do some cool tricks like automatically differentiating and vmapping a function via JAX: + +```python +--8<-- "examples/capabilities_jax.py:input0" +``` + +```text +--8<-- "examples/capabilities_jax.py:output0" +``` + +And even pipe an entire dataframe column through an aerocore function with Polars Lazy evaluation: + +```python +--8<-- "examples/capabilities_polars.py:input0" +``` + +```text +--8<-- "examples/capabilities_polars.py:output0" +``` + +```python +--8<-- "examples/capabilities_polars.py:input1" +``` + +```text +--8<-- "examples/capabilities_polars.py:output1" +``` diff --git a/examples/__init__.py b/examples/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/examples/acropole_jax_gpu.py b/examples/acropole_jax_gpu.py new file mode 100644 index 0000000..e068164 --- /dev/null +++ b/examples/acropole_jax_gpu.py @@ -0,0 +1,43 @@ +# --8<-- [start:input0] +import jax +import jax.numpy as jnp + +import numpy as np +from aerocore.acropole import fuel_flow, load_aircraft_database, load_model +from aerocore.utils import tree_map + +device = jax.devices("gpu")[0] +model = tree_map(lambda array: jnp.asarray(array, device=device), load_model()) +aircraft = load_aircraft_database()["A320"] + + +def predict( + groundspeed: jax.Array, altitude: jax.Array, vertical_rate: jax.Array +) -> jax.Array: + return fuel_flow( # type: ignore[no-any-return] + model=model, + aircraft=aircraft, + groundspeed=groundspeed, + altitude=altitude, + vertical_rate=vertical_rate, + xp=jnp, + ) + + +predict = jax.jit(predict, device=device) +print( + np.asarray( + predict( + groundspeed=jnp.asarray([180.0, 450.0, 250.0], device=device), + altitude=jnp.asarray([0.0, 30_000.0, 40_000.0], device=device), + vertical_rate=jnp.asarray([3_000.0, 0.0, -2_000.0], device=device), + ) + ) +) +# --8<-- [end:input0] + +""" +--8<-- [start:output0] +[1.9125862 0.75758696 0.09448687] +--8<-- [end:output0] +""" diff --git a/examples/acropole_jax_gradient.py b/examples/acropole_jax_gradient.py new file mode 100644 index 0000000..7094473 --- /dev/null +++ b/examples/acropole_jax_gradient.py @@ -0,0 +1,108 @@ +# mypy: disable-error-code="arg-type,type-arg" +# --8<-- [start:input0] +from pathlib import Path + +import isqx +import jax +import jax.numpy as jnp +from matplotlib import pyplot as plt + +import aerocore.types as t +from aerocore.acropole import fuel_flow, load_aircraft_database, load_model +from aerocore.utils import tree_map + +MIN_GROUNDSPEED: t.GsKt = 250.0 +MAX_GROUNDSPEED: t.GsKt = 500.0 +MIN_ALTITUDE: t.PressureAltitudeFt = 20_000.0 +MAX_ALTITUDE: t.PressureAltitudeFt = 40_000.0 +kg_per_s_to_kg_per_h = isqx.convert( + isqx.KG * isqx.S**-1, isqx.KG * isqx.HOUR**-1 +) +GRID_SIZE = 401 +ARROW_STRIDE = 16 + + +device = jax.devices("gpu")[0] +model = tree_map( + lambda array: jax.device_put(array, device=device), load_model() +) +aircraft = load_aircraft_database()["A320"] +mass = jax.device_put(65_000.0, device=device) +zero = jax.device_put(0.0, device=device) + + +def steady_cruise_fuel_flow(point: jax.Array) -> jax.Array: + scaled_groundspeed, scaled_altitude = point + groundspeed = MIN_GROUNDSPEED + scaled_groundspeed * ( + MAX_GROUNDSPEED - MIN_GROUNDSPEED + ) + return fuel_flow( # type: ignore[no-any-return] + model=model, + aircraft=aircraft, + groundspeed=groundspeed, + altitude=MIN_ALTITUDE + scaled_altitude * (MAX_ALTITUDE - MIN_ALTITUDE), + vertical_rate=zero, + airspeed=groundspeed, + mass=mass, + altitude_rate=zero, + groundspeed_rate=zero, + airspeed_rate=zero, + xp=jnp, + ) + + +scaled_gs = jnp.linspace(0.0, 1.0, GRID_SIZE, device=device) +scaled_alt = jnp.linspace(0.0, 1.0, GRID_SIZE, device=device) +scaled_gs_grid, scaled_alt_grid = jnp.meshgrid(scaled_gs, scaled_alt) +points = jnp.stack((scaled_gs_grid, scaled_alt_grid), axis=-1) + +ff_and_grad = jax.jit( + jax.vmap(jax.value_and_grad(steady_cruise_fuel_flow)), device=device +) +ff, grad = ff_and_grad(points.reshape(-1, 2)) +ff_grid = ff.reshape(GRID_SIZE, GRID_SIZE) +grad_grid = grad.reshape(GRID_SIZE, GRID_SIZE, 2) +unit_grad_grid = grad_grid / jnp.linalg.norm(grad_grid, axis=-1, keepdims=True) + +gs = MIN_GROUNDSPEED + scaled_gs_grid * (MAX_GROUNDSPEED - MIN_GROUNDSPEED) +alt = MIN_ALTITUDE + scaled_alt_grid * (MAX_ALTITUDE - MIN_ALTITUDE) +unit_grad = unit_grad_grid * jnp.asarray( + (MAX_GROUNDSPEED - MIN_GROUNDSPEED, MAX_ALTITUDE - MIN_ALTITUDE) +) + +plt.style.use("dark_background") +figure, axis = plt.subplots(figsize=(8, 6), constrained_layout=True) +image = axis.imshow( + kg_per_s_to_kg_per_h(ff_grid), + origin="lower", + extent=(MIN_GROUNDSPEED, MAX_GROUNDSPEED, MIN_ALTITUDE, MAX_ALTITUDE), + aspect="auto", + interpolation="bilinear", +) +contours = axis.contour( + gs, + alt, + kg_per_s_to_kg_per_h(ff_grid), + levels=10, + colors="white", + linewidths=0.8, + alpha=0.7, +) +axis.clabel(contours, inline=True, fontsize=8, fmt="%.0f", colors="white") +axis.quiver( + gs[::ARROW_STRIDE, ::ARROW_STRIDE], + alt[::ARROW_STRIDE, ::ARROW_STRIDE], + unit_grad[::ARROW_STRIDE, ::ARROW_STRIDE, 0], + unit_grad[::ARROW_STRIDE, ::ARROW_STRIDE, 1], + angles="xy", + scale_units="xy", + scale=32, + width=0.0015, +) +axis.set_xlabel("Groundspeed (kt)") +axis.set_ylabel("Pressure altitude (ft)") +figure.colorbar(image, ax=axis, label="Fuel flow (kg/h)") +# --8<-- [end:input0] +output = Path("docs/assets/img/acropole-fuel-flow-gradient.png") +figure.savefig(output, dpi=180) +plt.close(figure) diff --git a/examples/acropole_mixed_aircraft.py b/examples/acropole_mixed_aircraft.py new file mode 100644 index 0000000..0780d1f --- /dev/null +++ b/examples/acropole_mixed_aircraft.py @@ -0,0 +1,49 @@ +# --8<-- [start:input0] +import aerocore.acropole as ac +import numpy as np + +model = ac.load_model() +database = ac.load_aircraft_database() +aircraft_codes = ("A320", "AT76", "B738", "A320") +aircraft = [database[code] for code in aircraft_codes] + +groundspeed = np.asarray([180.0, 180.0, 450.0, 250.0]) +altitude = np.asarray([0.0, 12_000.0, 30_000.0, 40_000.0]) +vertical_rate = np.asarray([3_000.0, 1_500.0, 0.0, -2_000.0]) +airspeed = np.asarray([190.0, 190.0, 460.0, 260.0]) +groundspeed_rate = np.asarray([2.0, 1.0, 0.0, -1.0]) +airspeed_rate = np.asarray([1.5, 0.8, 0.0, -0.8]) +mass = np.asarray([65_000.0, 18_000.0, 65_000.0, 60_000.0]) + +oew = np.asarray([item.oew for item in aircraft]) +max_tow = np.asarray([item.max_tow for item in aircraft]) +features = np.column_stack( + ( + [item.engine_type for item in aircraft], + vertical_rate / 60, + groundspeed_rate, + airspeed_rate, + [item.wing_area for item in aircraft], + [item.max_alt for item in aircraft], + [item.max_tas for item in aircraft], + altitude, + groundspeed, + airspeed, + vertical_rate, + (mass - oew) / (max_tow - oew), + ) +) +standardised = ac.standardise(model.standardisation, features) +normalised_flow = ac.predict_standardised(model.weights, standardised, xp=np) +fuel_scale = np.asarray( + [item.fuel_flow_per_engine_to * item.engine_count for item in aircraft] +) + +print(normalised_flow * fuel_scale) +# --8<-- [end:input0] + +""" +--8<-- [start:output0] +[2.04228825 0.23620985 0.80334929 0.11475204] +--8<-- [end:output0] +""" diff --git a/examples/acropole_numpy.py b/examples/acropole_numpy.py new file mode 100644 index 0000000..c2bddcf --- /dev/null +++ b/examples/acropole_numpy.py @@ -0,0 +1,23 @@ +# --8<-- [start:input0] +import numpy as np +from aerocore.acropole import fuel_flow, load_aircraft_database, load_model + +model = load_model() +aircraft = load_aircraft_database()["A320"] +print( + fuel_flow( + model=model, + aircraft=aircraft, + groundspeed=np.asarray([180.0, 450.0, 250.0]), + altitude=np.asarray([0.0, 30_000.0, 40_000.0]), + vertical_rate=np.asarray([3_000.0, 0.0, -2_000.0]), + xp=np, + ) +) +# --8<-- [end:input0] + +""" +--8<-- [start:output0] +[1.91229012 0.75688555 0.09444639] +--8<-- [end:output0] +""" diff --git a/examples/acropole_torch_gpu.py b/examples/acropole_torch_gpu.py new file mode 100644 index 0000000..e4abecc --- /dev/null +++ b/examples/acropole_torch_gpu.py @@ -0,0 +1,28 @@ +# --8<-- [start:input0] +import torch + +from aerocore.acropole import fuel_flow, load_aircraft_database, load_model +from aerocore.utils import tree_map + +device = torch.device("cuda") +model = tree_map(lambda array: torch.from_numpy(array).to(device), load_model()) +aircraft = load_aircraft_database()["A320"] +print( + fuel_flow( + model=model, + aircraft=aircraft, + groundspeed=torch.tensor([180.0, 450.0, 250.0], device=device), + altitude=torch.tensor([0.0, 30_000.0, 40_000.0], device=device), + vertical_rate=torch.tensor([3_000.0, 0.0, -2_000.0], device=device), + xp=torch, + ) + .cpu() + .numpy() +) +# --8<-- [end:input0] + +""" +--8<-- [start:output0] +[1.9122902 0.7568858 0.09444637] +--8<-- [end:output0] +""" diff --git a/examples/autodiff.py b/examples/autodiff.py deleted file mode 100644 index 22d4356..0000000 --- a/examples/autodiff.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Test that the BADA3 atmosphere model can be differentiated with JAX, -and that it is under hydrostatic equilibrium. -""" - -import jax -import jax.numpy as jnp - -from aerocore.bada3 import atmosphere -from aerocore.geo import G_0 -from aerocore.thermo import R_SPECIFIC_DRY_AIR - -zs = jnp.linspace(0, 20000, 100) - -dpdz = jax.vmap( - jax.grad(lambda z: atmosphere(z, delta_temperature=0.0, xp=jnp).pressure) -)(zs) -rho = atmosphere(zs, delta_temperature=0.0, xp=jnp).density(R_SPECIFIC_DRY_AIR) - -assert jnp.allclose(dpdz, -rho * G_0) diff --git a/examples/capabilities_jax.py b/examples/capabilities_jax.py new file mode 100644 index 0000000..7268a15 --- /dev/null +++ b/examples/capabilities_jax.py @@ -0,0 +1,35 @@ +"""Differentiate the BADA3 atmosphere model with JAX.""" + +# --8<-- [start:input0] +import jax +import jax.numpy as jnp + +from aerocore.bada3 import atmosphere +from aerocore.geo import G_0 +from aerocore.thermo import R_SPECIFIC_DRY_AIR + +altitude = jnp.linspace(0, 20_000, 100) +pressure_gradient = jax.vmap( + jax.grad( + lambda value: ( + atmosphere( + value, + delta_temperature=0.0, + xp=jnp, + ).pressure + ) + ) +)(altitude) +density = atmosphere( + altitude, + delta_temperature=0.0, + xp=jnp, +).density(R_SPECIFIC_DRY_AIR) +print(jnp.allclose(pressure_gradient, -density * G_0)) +# --8<-- [end:input0] + +""" +--8<-- [start:output0] +True +--8<-- [end:output0] +""" diff --git a/examples/capabilities_polars.py b/examples/capabilities_polars.py new file mode 100644 index 0000000..84f8bcb --- /dev/null +++ b/examples/capabilities_polars.py @@ -0,0 +1,80 @@ +"""Evaluate aerocore expressions lazily with Polars.""" + +# --8<-- [start:input0] +import polars as pl + +import numpy as np +from aerocore.bada3 import atmosphere +from aerocore.polars import PolarsArrayApiNamespace + + +def calc_atmosphere(altitude: pl.Expr) -> tuple[pl.Expr, pl.Expr, pl.Expr]: + result = atmosphere( + altitude, delta_temperature=0.0, xp=PolarsArrayApiNamespace + ) + return ( + altitude, + result.pressure.alias("pressure"), + result.temperature.alias("temperature"), + ) + + +frame = pl.DataFrame({"altitude": np.linspace(0, 20_000, 5)}).lazy() +query = frame.select(calc_atmosphere(pl.col("altitude"))) +print(query.explain(format="tree")) +# --8<-- [end:input0] + +""" +--8<-- [start:output0] + 0 1 2 3 4 5 + ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── + │ + │ ╭────────╮ + 0 │ │ SELECT │ + │ ╰───┬┬───╯ + │ ││ + │ │╰────────────────────────────────────────────────────────┬─────────────────────────────────────────────────────────────────────┬────────────────────────────────────────────────────╮ + │ │ │ │ │ + │ │ ╭─────────────────────────────────────────────┴─────────────────────────────────────────────╮ │ │ + │ │ │ expression: │ │ │ + │ │ │ when(col("__POLARS_CSER_0x7dbd3b72cd594ba5")) │ │ │ + │ ╭────────┴────────╮ │ .then([(101325.0) * ([([(col("__POLARS_CSER_0x48a7fecdc84dc074")) - (0.0)]) / (288.15)] │ ╭────────────────────┴────────────────────╮ ╭──────┴───────╮ + │ │ expression: │ │ .alias("literal") │ │ expression: │ │ FROM: │ + 1 │ │ col("altitude") │ │ .pow([dyn float: 5.25587973947749]))]) │ │ col("__POLARS_CSER_0x48a7fecdc84dc074") │ │ WITH_COLUMNS │ + │ ╰─────────────────╯ │ .otherwise([(22632.06) * ([([(col("altitude")) - (11000.0)]) * (-0.000158)] │ │ .alias("temperature") │ ╰──────┬┬──────╯ + │ │ .exp())]) │ ╰─────────────────────────────────────────╯ ││ + │ │ .alias("pressure") │ ││ + │ ╰───────────────────────────────────────────────────────────────────────────────────────────╯ ││ + │ ││ + │ │╰─────────────────────────────────────────────────────┬─────────────────────────────────────╮ + │ │ │ │ + │ ╭────────────────────────────┴────────────────────────────╮ │ │ + │ │ expression: │ ╭──────────────────────┴───────────────────────╮ ╭──────────┴──────────╮ + │ │ when([(col("altitude")) <= (11000.0)]) │ │ expression: │ │ DF ["altitude"] │ + 2 │ │ .then([(288.15) + ([(col("altitude")) * (-0.0065)])]) │ │ [(col("altitude")) <= (11000.0)] │ │ PROJECT */1 COLUMNS │ + │ │ .otherwise(216.65) │ │ .alias("__POLARS_CSER_0x7dbd3b72cd594ba5") │ ╰─────────────────────╯ + │ │ .alias("__POLARS_CSER_0x48a7fecdc84dc074") │ ╰──────────────────────────────────────────────╯ + │ ╰─────────────────────────────────────────────────────────╯ +--8<-- [end:output0] +""" + +# --8<-- [start:input1] +print(query.collect()) +# --8<-- [end:input1] + +""" +--8<-- [start:output1] +shape: (5, 3) +┌──────────┬──────────────┬─────────────┐ +│ altitude ┆ pressure ┆ temperature │ +│ --- ┆ --- ┆ --- │ +│ f64 ┆ f64 ┆ f64 │ +╞══════════╪══════════════╪═════════════╡ +│ 0.0 ┆ 101325.0 ┆ 288.15 │ +│ 5000.0 ┆ 54019.888662 ┆ 255.65 │ +│ 10000.0 ┆ 26436.243088 ┆ 223.15 │ +│ 15000.0 ┆ 12044.563506 ┆ 216.65 │ +│ 20000.0 ┆ 5474.882348 ┆ 216.65 │ +└──────────┴──────────────┴─────────────┘ +--8<-- [end:output1] +""" diff --git a/examples/lazy_evaluation.py b/examples/lazy_evaluation.py deleted file mode 100644 index c448bf4..0000000 --- a/examples/lazy_evaluation.py +++ /dev/null @@ -1,81 +0,0 @@ -# ruff: noqa: E501 -"""Support for lazy evaluation via polars DataFrame""" - -import polars as pl - -import numpy as np -from aerocore.bada3 import atmosphere -from aerocore.polars import PolarsArrayApiNamespace - - -def calc_atmosphere(z: pl.Expr) -> tuple[pl.Expr, pl.Expr, pl.Expr]: - res = atmosphere(z, delta_temperature=0.0, xp=PolarsArrayApiNamespace) - return ( - z, - res.pressure.alias("pressure"), - res.temperature.alias("temperature"), - ) - - -DATA = { - "z": np.linspace(0, 20000, 50), - # ... more data -} - -lf = pl.DataFrame(DATA).lazy() -query = lf.select(calc_atmosphere(pl.col("z"))) -# print(query.explain(format="tree")) -print(query.explain()) -""" - 0 1 2 3 4 5 - ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── - │ - │ ╭────────╮ - 0 │ │ SELECT │ - │ ╰───┬┬───╯ - │ ││ - │ │╰──────────────────────────────────────────────────────┬─────────────────────────────────────────────────────────────────────┬────────────────────────────────────────────────╮ - │ │ │ │ │ - │ │ ╭─────────────────────────────────────────────┴─────────────────────────────────────────────╮ │ │ - │ │ │ expression: │ │ │ - │ │ │ when(col("__POLARS_CSER_0x9f539ccc6d7838ed")) │ │ │ - │ ╭──────┴──────╮ │ .then([(101325.0) * ([([(col("__POLARS_CSER_0xf7897d38e96eff58")) - (0.0)]) / (288.15)] │ ╭────────────────────┴────────────────────╮ ╭──────┴───────╮ - │ │ expression: │ │ .alias("literal") │ │ expression: │ │ FROM: │ - 1 │ │ col("z") │ │ .pow([dyn float: 5.25587973947749]))]) │ │ col("__POLARS_CSER_0xf7897d38e96eff58") │ │ WITH_COLUMNS │ - │ ╰─────────────╯ │ .otherwise([(22632.06) * ([([(col("z")) - (11000.0)]) * (-0.000158)] │ │ .alias("temperature") │ ╰──────┬┬──────╯ - │ │ .exp())]) │ ╰─────────────────────────────────────────╯ ││ - │ │ .alias("pressure") │ ││ - │ ╰───────────────────────────────────────────────────────────────────────────────────────────╯ ││ - │ ││ - │ │╰──────────────────────────────────────────────────┬─────────────────────────────────────╮ - │ │ │ │ - │ ╭────────────────────────┴─────────────────────────╮ │ │ - │ │ expression: │ ╭──────────────────────┴───────────────────────╮ ╭──────────┴──────────╮ - │ │ when([(col("z")) <= (11000.0)]) │ │ expression: │ │ DF ["z"] │ - 2 │ │ .then([(288.15) + ([(col("z")) * (-0.0065)])]) │ │ [(col("z")) <= (11000.0)] │ │ PROJECT */1 COLUMNS │ - │ │ .otherwise(216.65) │ │ .alias("__POLARS_CSER_0x9f539ccc6d7838ed") │ ╰─────────────────────╯ - │ │ .alias("__POLARS_CSER_0xf7897d38e96eff58") │ ╰──────────────────────────────────────────────╯ - │ ╰──────────────────────────────────────────────────╯ - -""" -print(query.collect()) -""" -shape: (50, 3) -┌──────────────┬──────────────┬─────────────┐ -│ z ┆ pressure ┆ temperature │ -│ --- ┆ --- ┆ --- │ -│ f64 ┆ f64 ┆ f64 │ -╞══════════════╪══════════════╪═════════════╡ -│ 0.0 ┆ 101325.0 ┆ 288.15 │ -│ 408.163265 ┆ 96516.787991 ┆ 285.496939 │ -│ 816.326531 ┆ 91895.021614 ┆ 282.843878 │ -│ 1224.489796 ┆ 87454.118816 ┆ 280.190816 │ -│ 1632.653061 ┆ 83188.614413 ┆ 277.537755 │ -│ … ┆ … ┆ … │ -│ 18367.346939 ┆ 7082.460919 ┆ 216.65 │ -│ 18775.510204 ┆ 6640.974885 ┆ 216.65 │ -│ 19183.673469 ┆ 6227.008934 ┆ 216.65 │ -│ 19591.836735 ┆ 5838.8476 ┆ 216.65 │ -│ 20000.0 ┆ 5474.882348 ┆ 216.65 │ -└──────────────┴──────────────┴─────────────┘ -""" diff --git a/justfile b/justfile index 498cde3..c5effbf 100644 --- a/justfile +++ b/justfile @@ -6,4 +6,4 @@ fmt: check: uv run ruff check src tests scripts examples uv run ruff format --check src tests scripts examples - uv run mypy src tests scripts examples \ No newline at end of file + uv run mypy src tests scripts examples diff --git a/mkdocs.yml b/mkdocs.yml index 841af6f..1380512 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -4,7 +4,11 @@ repo_name: abc8747/aerocore repo_url: https://github.com/abc8747/aerocore site_url: https://abc8747.github.io/aerocore/ nav: + - Home: "index.md" + - Capabilities: "capabilities.md" + - Fuel Estimation (Acropole): "acropole.md" - API Reference: + - Acropole: "api/acropole.md" - Core: "api/core.md" - Types: "api/types.md" - Data: "api/data.md" @@ -75,7 +79,9 @@ markdown_extensions: - pymdownx.highlight: pygments_lang_class: true - pymdownx.magiclink - - pymdownx.snippets + - pymdownx.snippets: + base_path: ["."] + check_paths: true - pymdownx.superfences - pymdownx.tabbed: alternate_style: true diff --git a/pyproject.toml b/pyproject.toml index a763f2d..0454b12 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,13 +4,14 @@ build-backend = "hatchling.build" [project] name = "aerocore" -version = "0.2.1" +version = "0.2.2" authors = [{ name = "Abraham Cheung", email = "abraham@ylcheung.com" }] description = "A lightweight collection of tools for air traffic management research." readme = "README.md" -license = { file = "LICENSE" } +license = "MIT" +license-files = ["LICENSE"] requires-python = ">=3.10" -keywords = ["air transportation", "atm", "visualisation"] +keywords = ["air transportation", "atm"] classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Information Technology", @@ -44,6 +45,18 @@ cli = ["typer>=0.26"] platformdirs = ["platformdirs>=4"] # pydantic = ["pydantic>=2.10"] all = ["aerocore[polars,httpx,xarray,jax,matplotlib,rich,cli,platformdirs]"] +# development-only backends use extras because accelerator selection requires it +# also note that PEP0817 is still under development and so the following hacks +# are needed even though its not optimal. we therefore exclude it from `all`. +onnx = ["onnx>=1.20.0"] +onnx_gpu = ["onnxruntime-gpu>=1.22.0"] +torch_cpu = ["torch>=2.7.0"] +torch_gpu = ["torch>=2.7.0"] +jax_gpu = [ + "jax[cuda12]>=0.5.0; python_version < '3.11'", + "jax[cuda13]>=0.5.0; python_version >= '3.11'", +] +onnxscript = ["onnxscript>=0.7.0"] [project.scripts] aerocore = "aerocore.cli:app" @@ -53,16 +66,16 @@ aerocore = "aerocore.cli:app" dev = [ { include-group = "test" }, { include-group = "docs" }, + { include-group = "typing" }, "array-api-strict>=2.2", "ipykernel>=6.29.5", "mypy>=1.13.0", "ruff>=0.8.3", - "typer>=0.16.0", - "types-pytz>=2024.2.0.20241221", + "aerocore[cli]", ] +typing = ["typing-extensions>=4.1.0", "types-pytz>=2024.2.0.20241221"] test = ["pytest>=8.3.4", "anyio>=4.7.0"] -docs = ["zensical>=0.0.43", "mkdocstrings-python>=2.0.3"] - +docs = ["zensical>=0.0.47", "mkdocstrings-python>=2.0.3"] [tool.pytest.ini_options] markers = ["network: live network tests"] @@ -82,6 +95,9 @@ lint.select = [ line-length = 80 target-version = "py310" +[tool.ruff.lint.per-file-ignores] +"examples/*.py" = ["E501"] # bare """ are cell outputs + [tool.ruff.lint.isort] known-first-party = ["numpy", "pandas"] @@ -109,9 +125,30 @@ module = [ "aerocore.bada3", "aerocore.geo", "aerocore.turbofan", + "aerocore.acropole", ] disable_error_code = ["type-arg"] [[tool.mypy.overrides]] module = ["aerocore.array_api"] disable_error_code = ["type-arg", "no-untyped-def"] + +# see: https://docs.astral.sh/uv/guides/integration/pytorch/#configuring-accelerators-with-optional-dependencies +[tool.uv] +conflicts = [[{ extra = "torch_cpu" }, { extra = "torch_gpu" }]] + +[tool.uv.sources] +torch = [ + { index = "pytorch-cpu", extra = "torch_cpu" }, + { index = "pytorch-cu130", extra = "torch_gpu" }, +] + +[[tool.uv.index]] +name = "pytorch-cpu" +url = "https://download.pytorch.org/whl/cpu" +explicit = true + +[[tool.uv.index]] +name = "pytorch-cu130" +url = "https://download.pytorch.org/whl/cu130" +explicit = true diff --git a/scripts/acropole_benchmark.py b/scripts/acropole_benchmark.py new file mode 100755 index 0000000..11280cf --- /dev/null +++ b/scripts/acropole_benchmark.py @@ -0,0 +1,663 @@ +#!/usr/bin/env -S uv run --no-default-groups --extra cli --extra jax_gpu --extra matplotlib --extra onnx --extra onnx_gpu --extra torch_gpu +# ruff: noqa: E501 +# mypy: disable-error-code="type-arg" +"""Benchmark Array API functions across numerical backends. + +The harness is written to benchmark other functions in the future. It currently +runs the Acropole workload defined at the end of this script. + +Requires extras: + +- `cli` for Typer +- `matplotlib` for plotting +- `jax_gpu` for JAX CPU and GPU +- `torch_gpu` for CUDA-enabled PyTorch +- `onnx` for exporting the benchmark function to ONNX +- `onnx_gpu` for ONNX Runtime CPU and GPU +- `onnxscript` for Dynamo-based Torch->ONNX export (default in pytorch>=2.9) + +Requires: + +- an NVIDIA GPU and compatible driver for GPU targets +""" + +from __future__ import annotations + +import io +import json +import math +import statistics +import time +from collections import defaultdict +from collections.abc import Callable, Iterable +from dataclasses import dataclass +from enum import Enum +from pathlib import Path +from typing import Any, NamedTuple, TypedDict, cast + +import typer +from typing_extensions import assert_never + +import aerocore.types as t +import numpy as np +from aerocore.acropole import ( + ACROPOLE_MODEL_FILENAME, + AcropoleModel, + data_dir, + load_model, + predict_standardised, + standardise, +) +from aerocore.utils import tree_map + +Array = Any +ArrayApiFunction = Callable[..., Array] +Call = Callable[[], Array] +Convert = Callable[[np.ndarray], Array] + + +class PreparedArguments(NamedTuple): + args: tuple[Any, ...] + kwargs: dict[str, Any] + + +Prepare = Callable[[Convert], PreparedArguments] + + +def no_prepare(convert: Convert) -> PreparedArguments: + return PreparedArguments((), {}) + + +@dataclass(frozen=True) +class Workload: + """One invocation of a function accepting an `xp` keyword.""" + + name: str + function: ArrayApiFunction + inputs: tuple[np.ndarray, ...] + batch_size: int + prepare: Prepare = no_prepare + + def bind(self, xp: Any, convert: Convert) -> Callable[..., Array]: + prepared = self.prepare(convert) + + def invoke(*inputs: Array) -> Array: + return self.function( + *prepared.args, + *inputs, + xp=xp, + **prepared.kwargs, + ) + + return invoke + + def reference(self) -> np.ndarray: + invoke = self.bind(np, np.asarray) + return np.asarray(invoke(*self.inputs)) + + +@dataclass(frozen=True) +class Backend: + name: str + device: str + version: str + # timed calls keep model state and inputs resident on the device + # host transfers are performed only for correctness checking + call: Call + synchronize: Callable[[Array], None] + to_host: Callable[[Array], np.ndarray] + + +def noop_synchronize(output: Array) -> None: + pass + + +def numpy_backend(workload: Workload) -> Backend: + invoke = workload.bind(np, np.asarray) + return Backend( + name="numpy", + device="cpu", + version=np.__version__, + call=lambda: invoke(*workload.inputs), + synchronize=noop_synchronize, + to_host=np.asarray, + ) + + +def jax_backend( + workload: Workload, + device_name: str, + *, + compiled: bool, +) -> Backend: + import jax + import jax.numpy as jnp + + target = jax.devices(device_name)[0] + + def convert(array: np.ndarray) -> Array: + return jnp.asarray(array, device=target) + + invoke = workload.bind(jnp, convert) + if compiled: + invoke = jax.jit(invoke, device=target) + inputs = tuple(convert(array) for array in workload.inputs) + + def synchronize(output: Array) -> None: + output.block_until_ready() + + return Backend( + name="jax-jit" if compiled else "jax-eager", + device=device_name, + version=jax.__version__, + call=lambda: invoke(*inputs), + synchronize=synchronize, + to_host=np.asarray, + ) + + +def torch_backend( + workload: Workload, + device_name: str, + *, + compiled: bool, +) -> Backend: + import torch + + target = torch.device("cuda" if device_name == "gpu" else "cpu") + if device_name == "gpu": + torch.set_float32_matmul_precision("high") + + def convert(array: np.ndarray) -> Array: + return torch.from_numpy(array).to(target) + + invoke = workload.bind(torch, convert) + if compiled: + invoke = torch.compile(invoke, mode="default") + inputs = tuple(convert(array) for array in workload.inputs) + + def resident() -> Array: + with torch.inference_mode(): + return invoke(*inputs) + + def synchronize(output: Array) -> None: + if device_name == "gpu": + torch.cuda.synchronize(target) + + def to_host(output: Array) -> np.ndarray: + return output.detach().cpu().numpy() # type: ignore[no-any-return] + + return Backend( + name="torch-compile" if compiled else "torch-eager", + device=device_name, + version=torch.__version__, + call=resident, + synchronize=synchronize, + to_host=to_host, + ) + + +def onnxruntime_backend( + workload: Workload, + reference: np.ndarray, + device_name: str, +) -> Backend: + import onnxruntime as ort + import torch + + invoke = workload.bind(torch, torch.from_numpy) + example_inputs = tuple(torch.from_numpy(array) for array in workload.inputs) + input_names = [f"input_{index}" for index in range(len(example_inputs))] + + class Module(torch.nn.Module): + def forward(self, *inputs: Array) -> Array: + return invoke(*inputs) + + batch = torch.export.Dim("batch") + dynamic_shapes = { + "inputs": tuple( + {0: batch} if array.ndim > 0 else None for array in workload.inputs + ) + } + + module = Module().eval() + buffer = io.BytesIO() + torch.onnx.export( + module, + example_inputs, + cast(Any, buffer), + input_names=input_names, + output_names=["output"], + dynamic_shapes=dynamic_shapes, + opset_version=18, + ) + providers = ( + ["CUDAExecutionProvider", "CPUExecutionProvider"] + if device_name == "gpu" + else ["CPUExecutionProvider"] + ) + session = ort.InferenceSession(buffer.getvalue(), providers=providers) + feed = dict(zip(input_names, workload.inputs)) + + if device_name == "cpu": + return Backend( + name="onnxruntime", + device="cpu", + version=ort.__version__, + call=lambda: session.run(None, feed)[0], + synchronize=noop_synchronize, + to_host=np.asarray, + ) + + binding = session.io_binding() + for name, array in feed.items(): + value = ort.OrtValue.ortvalue_from_numpy(array, "cuda", 0) + binding.bind_ortvalue_input(name, value) + output = ort.OrtValue.ortvalue_from_shape_and_type( + reference.shape, + reference.dtype, + "cuda", + 0, + ) + binding.bind_ortvalue_output("output", output) + + def resident() -> Array: + session.run_with_iobinding(binding) + return output + + return Backend( + name="onnxruntime", + device="gpu", + version=ort.__version__, + call=resident, + synchronize=lambda value: binding.synchronize_outputs(), + to_host=lambda value: value.numpy(), + ) + + +class BenchmarkResult(TypedDict): + workload: str + backend: str + device: str + batch_size: int + setup_ms: float + first_call_ms: float + median_us: float + p05_us: float + p95_us: float + samples_per_second: float + iterations: int + max_abs_error: float + max_rel_error: float + backend_version: str + + +class Target(str, Enum): + NUMPY_CPU = "numpy-cpu" + JAX_EAGER_CPU = "jax-eager-cpu" + JAX_EAGER_GPU = "jax-eager-gpu" + JAX_JIT_CPU = "jax-jit-cpu" + JAX_JIT_GPU = "jax-jit-gpu" + TORCH_EAGER_CPU = "torch-eager-cpu" + TORCH_EAGER_GPU = "torch-eager-gpu" + TORCH_COMPILE_CPU = "torch-compile-cpu" + TORCH_COMPILE_GPU = "torch-compile-gpu" + ONNXRUNTIME_CPU = "onnxruntime-cpu" + ONNXRUNTIME_GPU = "onnxruntime-gpu" + + +def make_backend( + name: Target, + workload: Workload, + reference: np.ndarray, +) -> Backend: + match name: + case Target.NUMPY_CPU: + return numpy_backend(workload) + case Target.JAX_EAGER_CPU: + return jax_backend(workload, "cpu", compiled=False) + case Target.JAX_EAGER_GPU: + return jax_backend(workload, "gpu", compiled=False) + case Target.JAX_JIT_CPU: + return jax_backend(workload, "cpu", compiled=True) + case Target.JAX_JIT_GPU: + return jax_backend(workload, "gpu", compiled=True) + case Target.TORCH_EAGER_CPU: + return torch_backend(workload, "cpu", compiled=False) + case Target.TORCH_EAGER_GPU: + return torch_backend(workload, "gpu", compiled=False) + case Target.TORCH_COMPILE_CPU: + return torch_backend(workload, "cpu", compiled=True) + case Target.TORCH_COMPILE_GPU: + return torch_backend(workload, "gpu", compiled=True) + case Target.ONNXRUNTIME_CPU: + return onnxruntime_backend(workload, reference, "cpu") + case Target.ONNXRUNTIME_GPU: + return onnxruntime_backend(workload, reference, "gpu") + assert_never(name) + + +class ErrorStats(NamedTuple): + max_abs_error: float + max_rel_error: float + + +def relative_error( + reference: np.ndarray, + actual: np.ndarray, +) -> ErrorStats: + difference = np.abs(reference - actual) + denominator = np.maximum(np.abs(reference), np.float32(1e-7)) + return ErrorStats( + float(difference.max()), + float((difference / denominator).max()), + ) + + +@dataclass(frozen=True) +class Measurement: + iterations: int + samples_us: list[float] + + @property + def median_us(self) -> float: + return statistics.median(self.samples_us) + + @property + def p05_us(self) -> float: + return statistics.quantiles( + self.samples_us, + n=20, + method="inclusive", + )[0] + + @property + def p95_us(self) -> float: + return statistics.quantiles( + self.samples_us, + n=20, + method="inclusive", + )[18] + + +@dataclass(frozen=True) +class Criterion: + warm_up: t.DurationS[float] = 0.1 + measurement: t.DurationS[float] = 0.15 + sample_count: int = 10 + + def measure( + self, + call: Call, + synchronize: Callable[[Array], None], + ) -> Measurement: + warm_up_end = time.perf_counter() + self.warm_up + while time.perf_counter() < warm_up_end: + output = call() + synchronize(output) + + start = time.perf_counter_ns() + output = call() + synchronize(output) + elapsed_ns = max(time.perf_counter_ns() - start, 1) + sample_seconds = self.measurement / self.sample_count + iterations = max(1, math.ceil(sample_seconds * 1e9 / elapsed_ns)) + + samples = [] + for _ in range(self.sample_count): + start = time.perf_counter_ns() + for _ in range(iterations): + output = call() + synchronize(output) + duration = time.perf_counter_ns() - start + samples.append(duration / iterations / 1000) + return Measurement(iterations, samples) + + +def benchmark( + workload: Workload, + target_name: Target, + criterion: Criterion, +) -> BenchmarkResult: + reference = workload.reference() + setup_start = time.perf_counter_ns() + backend = make_backend(target_name, workload, reference) + setup_ms = (time.perf_counter_ns() - setup_start) / 1e6 + + first_start = time.perf_counter_ns() + first_output = backend.call() + backend.synchronize(first_output) + first_call_ms = (time.perf_counter_ns() - first_start) / 1e6 + error = relative_error(reference, backend.to_host(first_output)) + measurement = criterion.measure(backend.call, backend.synchronize) + return BenchmarkResult( + workload=workload.name, + backend=backend.name, + device=backend.device, + batch_size=workload.batch_size, + setup_ms=setup_ms, + first_call_ms=first_call_ms, + median_us=measurement.median_us, + p05_us=measurement.p05_us, + p95_us=measurement.p95_us, + samples_per_second=(workload.batch_size * 1e6 / measurement.median_us), + iterations=measurement.iterations, + max_abs_error=error.max_abs_error, + max_rel_error=error.max_rel_error, + backend_version=backend.version, + ) + + +def plot_results( + results: Iterable[BenchmarkResult], + output: Path, +) -> None: + import matplotlib.pyplot as plt + from matplotlib.lines import Line2D + + series: defaultdict[tuple[str, str], list[BenchmarkResult]] = defaultdict( + list + ) + backend_versions: defaultdict[str, set[str]] = defaultdict(set) + batch_sizes = set() + for result in results: + series[(result["backend"], result["device"])].append(result) + backend_versions[result["backend"]].add(result["backend_version"]) + batch_sizes.add(result["batch_size"]) + + backends = list(dict.fromkeys(backend for backend, _ in series)) + colors = plt.colormaps["tab10"] + backend_colors = { + backend: colors(index % colors.N) + for index, backend in enumerate(backends) + } + device_styles = { + "cpu": ("o", "-"), + "gpu": ("x", "--"), + } + + plt.style.use("dark_background") + + figure = plt.figure(figsize=(12, 9), constrained_layout=True) + layout = figure.add_gridspec( + 2, + 2, + height_ratios=(5, 1), + hspace=0.05, + ) + axes = figure.add_subplot(layout[0, :]) + backend_axes = figure.add_subplot(layout[1, 0]) + device_axes = figure.add_subplot(layout[1, 1]) + backend_axes.axis("off") + device_axes.axis("off") + + for (backend, device), values in series.items(): + values.sort(key=lambda value: value["batch_size"]) + marker, linestyle = device_styles[device] + axes.errorbar( + [value["batch_size"] for value in values], + medians := [value["median_us"] for value in values], + yerr=[ + [ + median - value["p05_us"] + for median, value in zip(medians, values) + ], + [ + value["p95_us"] - median + for median, value in zip(medians, values) + ], + ], + color=backend_colors[backend], + marker=marker, + linestyle=linestyle, + markersize=3, + markeredgewidth=0.75, + capsize=2, + ) + + axes.set_xscale("log", base=2) + axes.set_yscale("log") + axes.set_xticks( + ticks := sorted(batch_sizes), + [f"{value:,}" for value in ticks], + rotation=30, + ha="right", + ) + axes.set_xlabel("batch size") + axes.set_ylabel("median latency per batch call (µs)") + axes.grid(True, which="both", linewidth=0.5, alpha=0.35) + + backend_axes.legend( + handles=[ + Line2D( + [], + [], + color=backend_colors[backend], + label=( + f"{backend} {', '.join(sorted(backend_versions[backend]))}" + ), + ) + for backend in backends + ], + title="backend", + loc="upper center", + frameon=True, + ) + device_axes.legend( + handles=[ + Line2D( + [], + [], + color=plt.rcParams["text.color"], + marker=marker, + linestyle=linestyle, + markersize=3, + markeredgewidth=0.75, + label=device, + ) + for device, (marker, linestyle) in device_styles.items() + ], + title="device", + loc="upper center", + frameon=True, + ) + output.parent.mkdir(parents=True, exist_ok=True) + figure.savefig( + output, + dpi=180, + bbox_inches="tight", + pad_inches=0.05, + facecolor=figure.get_facecolor(), + ) + plt.close(figure) + + +def write_results( + results: Iterable[BenchmarkResult], + output: Path | None, +) -> None: + text = "".join( + json.dumps(result, sort_keys=True) + "\n" for result in results + ) + if output is None: + typer.echo(text, nl=False) + return + output.parent.mkdir(parents=True, exist_ok=True) + output.write_text(text) + + +# +# acropole workload +# + + +def infer(model: AcropoleModel[Any], features: Array, *, xp: Any) -> Array: + standardised = standardise(model.standardisation, features) + return predict_standardised(model.weights, standardised, xp=xp) + + +def acropole_workload(model: AcropoleModel[Any], batch_size: int) -> Workload: + rng = np.random.default_rng(20260708 + batch_size) + unit = rng.uniform(-0.1, 1.1, size=(batch_size, 12)).astype(np.float32) + minimums = model.standardisation.minimums + features = minimums + unit * (model.standardisation.maximums - minimums) + return Workload( + name="Acropole", + function=infer, + inputs=(features,), + batch_size=batch_size, + prepare=lambda convert: PreparedArguments( + (tree_map(convert, model),), {} + ), + ) + + +app = typer.Typer( + add_completion=False, + no_args_is_help=False, + pretty_exceptions_show_locals=False, +) + + +@app.command() +def main( + target: list[Target] = [ + Target.NUMPY_CPU, + Target.JAX_EAGER_CPU, + Target.JAX_EAGER_GPU, + Target.JAX_JIT_CPU, + Target.JAX_JIT_GPU, + Target.TORCH_EAGER_CPU, + Target.TORCH_EAGER_GPU, + Target.TORCH_COMPILE_CPU, + Target.TORCH_COMPILE_GPU, + Target.ONNXRUNTIME_CPU, + Target.ONNXRUNTIME_GPU, + ], + batch_size: list[int] = [4**i for i in range(11)], + warm_up: t.DurationS[float] = 0.1, + measurement: t.DurationS[float] = 0.15, + sample_count: int = 10, + model: Path = data_dir() / ACROPOLE_MODEL_FILENAME, + output: Path | None = None, + plot: Path | None = Path("docs/assets/img/acropole-benchmark.png"), +) -> None: + """Benchmark Acropole across one or more backends.""" + acropole = load_model(model) + criterion = Criterion(warm_up, measurement, sample_count) + results = [ + benchmark( + acropole_workload(acropole, size), + target_name, + criterion, + ) + for target_name in target + for size in batch_size + ] + write_results(results, output) + if plot is not None: + plot_results(results, plot) + + +if __name__ == "__main__": + app() diff --git a/scripts/acropole_prepare_model.py b/scripts/acropole_prepare_model.py new file mode 100755 index 0000000..fc0c06d --- /dev/null +++ b/scripts/acropole_prepare_model.py @@ -0,0 +1,164 @@ +#!/usr/bin/env -S uv run --no-default-groups --extra cli --extra httpx --extra onnx +# ruff: noqa: E501 +"""Build redistributable Acropole runtime data artifacts. + +Requires extras: + +- `cli` for Typer +- `httpx` for downloading the upstream release +- `onnx` for reading the upstream ONNX model + +Requires: + +- network access to download the upstream release +""" + +from __future__ import annotations + +import csv +import io +import tarfile +from pathlib import Path +from typing import Any, BinaryIO, cast + +import httpx +import onnx +import typer +from onnx import numpy_helper + +import numpy as np +from aerocore.acropole import ( + ACROPOLE_AIRCRAFT_FILENAME, + ACROPOLE_LICENSE_FILENAME, + ACROPOLE_MODEL_FILENAME, +) + +UPSTREAM_VERSION = "0.1.0" +UPSTREAM_URL = ( + "https://github.com/DGAC/Acropole/archive/refs/tags/v0.1.0.tar.gz" +) +_ARCHIVE_ROOT = f"Acropole-{UPSTREAM_VERSION}" +_AIRCRAFT_MEMBER = f"{_ARCHIVE_ROOT}/src/acropole/data/aircraft_params.csv" +_MODEL_MEMBER = f"{_ARCHIVE_ROOT}/src/acropole/models/acropole_fuel_model.onnx" +_LICENSE_MEMBER = f"{_ARCHIVE_ROOT}/LICENSE" + +_FEATURE_MINIMUMS = np.array( + [0, -5000, -50, -50, 0, 0, 200, 0, 200, 200, -5000, 0], + dtype=np.float32, +) +_FEATURE_MAXIMUMS = np.array( + [1, 5000, 50, 50, 600, 50000, 800, 50000, 800, 800, 5000, 1], + dtype=np.float32, +) +_DENSE_LAYERS = ( + "dense_1", + "dense_1_2", + "dense_2_1", + "dense_3_1", + "dense_4_1", +) + +_AIRCRAFT_COLUMNS = ( + "ACFT_ICAO_TYPE", + "ENGINE_ICAO", + "TRAIN_ON", + "ENGINE_TYPE", + "SURFACE", + "MAX_OPE_ALTI", + "MAX_OPE_SPEED", + "OPE_EMPTY_WEIGHT", + "MAX_TO_WEIGHT", + "FUEL_FLOW_TO", + "ENGINE_NUM", +) + + +app = typer.Typer( + add_completion=False, + no_args_is_help=False, + pretty_exceptions_show_locals=False, +) + + +def _read_member(archive: tarfile.TarFile, name: str) -> bytes: + return cast(BinaryIO, archive.extractfile(name)).read() + + +def _source_members(source_url: str) -> tuple[bytes, bytes, bytes]: + response = httpx.get(source_url, follow_redirects=True) + response.raise_for_status() + with tarfile.open( + fileobj=io.BytesIO(response.content), + mode="r:gz", + ) as archive: + return ( + _read_member(archive, _MODEL_MEMBER), + _read_member(archive, _AIRCRAFT_MEMBER), + _read_member(archive, _LICENSE_MEMBER), + ) + + +def _convert_model(model_data: bytes, output: Path) -> None: + model = onnx.load_model_from_string(model_data) + tensors = { + tensor.name: np.asarray(numpy_helper.to_array(tensor), dtype=np.float32) + for tensor in model.graph.initializer + } + arrays: dict[str, Any] = { + "feature_minimums": _FEATURE_MINIMUMS, + "feature_maximums": _FEATURE_MAXIMUMS, + } + for index, layer in enumerate(_DENSE_LAYERS): + prefix = f"StatefulPartitionedCall/sequential_1/{layer}" + arrays[f"weight_{index}"] = tensors[f"{prefix}/Cast/ReadVariableOp:0"] + arrays[f"bias_{index}"] = tensors[f"{prefix}/Add/ReadVariableOp:0"] + np.savez(output, **arrays) + output.chmod(0o644) + + +def _convert_aircraft(data: bytes, output: Path) -> None: + rows = csv.DictReader(io.StringIO(data.decode("utf-8"))) + with output.open("w", newline="", encoding="utf-8") as file: + writer = csv.DictWriter(file, fieldnames=_AIRCRAFT_COLUMNS) + writer.writeheader() + for row in rows: + converted = {name: row[name] for name in _AIRCRAFT_COLUMNS} + for name in ("TRAIN_ON", "ENGINE_TYPE", "ENGINE_NUM"): + converted[name] = str(int(float(converted[name]))) + for name in ( + "SURFACE", + "MAX_OPE_ALTI", + "MAX_OPE_SPEED", + "OPE_EMPTY_WEIGHT", + "MAX_TO_WEIGHT", + "FUEL_FLOW_TO", + ): + converted[name] = format(float(converted[name]), ".15g") + writer.writerow(converted) + output.chmod(0o644) + + +@app.command() +def build( + output_dir: Path = Path("dist/acropole-v0.1.0"), + source_url: str = UPSTREAM_URL, +) -> None: + """Download Acropole and build the release artifacts.""" + output_dir.mkdir(parents=True, exist_ok=True) + model_data, aircraft_data, license_data = _source_members(source_url) + + model_output = output_dir / ACROPOLE_MODEL_FILENAME + aircraft_output = output_dir / ACROPOLE_AIRCRAFT_FILENAME + license_output = output_dir / ACROPOLE_LICENSE_FILENAME + _convert_model(model_data, model_output) + _convert_aircraft(aircraft_data, aircraft_output) + license_output.write_bytes(license_data) + license_output.chmod(0o644) + + typer.echo(model_output) + typer.echo(aircraft_output) + typer.echo(license_output) + + +if __name__ == "__main__": + app() diff --git a/src/aerocore/acropole.py b/src/aerocore/acropole.py new file mode 100644 index 0000000..3c6850b --- /dev/null +++ b/src/aerocore/acropole.py @@ -0,0 +1,335 @@ +# mypy: disable-error-code="no-untyped-def" +"""Array API implementation of the Acropole fuel-flow model.""" + +from __future__ import annotations + +import csv +from collections.abc import Iterable +from dataclasses import dataclass +from enum import IntEnum +from pathlib import Path +from typing import Generic, TypeAlias, TypeVar + +import numpy as np +import numpy.typing as npt + +from . import types as t +from .array_api import ArrayApiNamespace +from .utils import default_cache_dir + +ACROPOLE_DATA_VERSION = "0.1.0" +ACROPOLE_MODEL_FILENAME = "acropole_model.npz" +ACROPOLE_AIRCRAFT_FILENAME = "acropole_aircraft.csv" +ACROPOLE_LICENSE_FILENAME = "acropole_LICENSE.txt" +ACROPOLE_RELEASE_BASE_URL = ( + "https://github.com/abc8747/aerocore/releases/download/v0.2.1" +) + + +def data_dir(cache_dir: Path | None = None) -> Path: + return ( + (cache_dir or default_cache_dir()) + / "acropole" + / f"v{ACROPOLE_DATA_VERSION}" + ) + + +async def sync_data( + cache_dir: Path | None = None, + force: bool = False, + base_url: str = ACROPOLE_RELEASE_BASE_URL, +) -> tuple[Path, ...]: + """Download the prepared Acropole model, aircraft, and license files. + + Requires optional dependency `httpx`. + """ + root = data_dir(cache_dir) + root.mkdir(parents=True, exist_ok=True) + paths = tuple( + root / filename + for filename in ( + ACROPOLE_MODEL_FILENAME, + ACROPOLE_AIRCRAFT_FILENAME, + ACROPOLE_LICENSE_FILENAME, + ) + ) + pending = ( + paths if force else tuple(path for path in paths if not path.exists()) + ) + if not pending: + return paths + + import httpx + + async with httpx.AsyncClient(follow_redirects=True) as client: + for destination in pending: + response = await client.get( + f"{base_url.rstrip('/')}/{destination.name}" + ) + response.raise_for_status() + temporary = destination.with_name(f".{destination.name}.part") + temporary.write_bytes(response.content) + temporary.replace(destination) + return paths + + +# +# model +# + + +ArrayT = TypeVar("ArrayT") + + +@dataclass(frozen=True) +class AcropoleStandardisation(Generic[ArrayT]): + minimums: ArrayT + maximums: ArrayT + + +@dataclass(frozen=True) +class AcropoleWeights(Generic[ArrayT]): + weights: tuple[ArrayT, ...] + biases: tuple[ArrayT, ...] + + +@dataclass(frozen=True) +class AcropoleModel(Generic[ArrayT]): + standardisation: AcropoleStandardisation[ArrayT] + weights: AcropoleWeights[ArrayT] + + +def load_model( + path: Path | None = None, +) -> AcropoleModel[npt.NDArray[np.float32]]: + """Load model arrays from the Acropole cache. + + Use [`aerocore.utils.tree_map`][] to move to another device or type. + """ + model_path = path or data_dir() / ACROPOLE_MODEL_FILENAME + with np.load(model_path, allow_pickle=False) as archive: + return AcropoleModel( + standardisation=AcropoleStandardisation( + minimums=archive["feature_minimums"], + maximums=archive["feature_maximums"], + ), + weights=AcropoleWeights( + weights=tuple(archive[f"weight_{index}"] for index in range(5)), + biases=tuple(archive[f"bias_{index}"] for index in range(5)), + ), + ) + + +# +# aircraft +# + + +class AcropoleEngineType(IntEnum): + JET = 0 + TURBOPROP = 1 + + +@dataclass(frozen=True) +class AcropoleAircraft: + engine_type: AcropoleEngineType + wing_area: t.WingAreaM2[float] + max_alt: t.MaximumOperatingPressureAltitudeFt[float] + max_tas: t.MaximumOperatingTasKt[float] + oew: t.OperatingEmptyWeightKg[float] + max_tow: t.MaximumTakeoffWeightKg[float] + fuel_flow_per_engine_to: t.MassFlowKgPSPEngine[float] + engine_count: int + # following are unused in inference but keeping it for reference + representative_engine: str | None = None + trained: bool | None = None + + +IcaoTypeCode: TypeAlias = str +AcropoleAircraftDatabase: TypeAlias = dict[IcaoTypeCode, AcropoleAircraft] + + +def _decode_aircraft_database( + lines: Iterable[str], +) -> AcropoleAircraftDatabase: + return { + row["ACFT_ICAO_TYPE"]: AcropoleAircraft( + engine_type=AcropoleEngineType(int(row["ENGINE_TYPE"])), + wing_area=float(row["SURFACE"]), + max_alt=float(row["MAX_OPE_ALTI"]), + max_tas=float(row["MAX_OPE_SPEED"]), + oew=float(row["OPE_EMPTY_WEIGHT"]), + max_tow=float(row["MAX_TO_WEIGHT"]), + fuel_flow_per_engine_to=float(row["FUEL_FLOW_TO"]), + engine_count=int(row["ENGINE_NUM"]), + representative_engine=row["ENGINE_ICAO"], + trained=bool(int(row["TRAIN_ON"])), + ) + for row in csv.DictReader(lines) + } + + +def load_aircraft_database( + source: Path | Iterable[str] | None = None, +) -> AcropoleAircraftDatabase: + if source is None: + source = data_dir() / ACROPOLE_AIRCRAFT_FILENAME + if isinstance(source, Path): + with source.open(newline="", encoding="utf-8") as file: + return _decode_aircraft_database(file) + return _decode_aircraft_database(source) + + +# +# predict +# + + +def fuel_flow( + model: AcropoleModel, + aircraft: AcropoleAircraft, + groundspeed: t.GsKt, + altitude: t.PressureAltitudeFt, + vertical_rate: t.VerticalRateFtMin, + *, + airspeed: t.TasKt | None = None, + mass: t.MassKg | None = None, + elapsed_time: t.DurationS | None = None, + altitude_rate: t.VerticalRateFtS | None = None, + groundspeed_rate: t.AccelerationKtS | None = None, + airspeed_rate: t.AccelerationKtS | None = None, + xp: ArrayApiNamespace, +) -> t.MassFlowKgPS: + """Predict fuel flow from caller-owned backend arrays. + + Trajectory arrays must have identical shapes. The final axis represents + samples ordered in time. When `elapsed_time` is provided, it must have the + same shape, contain at least two samples, and be strictly increasing without + duplicate timestamps. + + The paper reports one-second QAR samples but does not specify a + resampling interval or smoothing-window duration. The upstream + implementation later recommended approximately four-second sampling. + Callers are responsible for resampling, interpolation, and + smoothing before calling this function. + """ + features = input_features( + aircraft, + groundspeed, + altitude, + vertical_rate, + airspeed=airspeed, + mass=mass, + elapsed_time=elapsed_time, + altitude_rate=altitude_rate, + groundspeed_rate=groundspeed_rate, + airspeed_rate=airspeed_rate, + xp=xp, + ) + standardised = standardise(model.standardisation, features) + normalised_flow = predict_standardised(model.weights, standardised, xp=xp) + fuel_scale = aircraft.fuel_flow_per_engine_to * aircraft.engine_count + return normalised_flow * fuel_scale + + +# low level functions + + +def _diff_bfill(values, *, xp: ArrayApiNamespace): + differences = xp.diff(values, axis=-1) + return xp.concat((differences[..., :1], differences), axis=-1) + + +def input_features( + aircraft: AcropoleAircraft, + groundspeed: t.GsKt, + altitude: t.PressureAltitudeFt, + vertical_rate: t.VerticalRateFtMin, + *, + airspeed: t.TasKt | None = None, + mass: t.MassKg | None = None, + elapsed_time: t.DurationS | None = None, + altitude_rate: t.VerticalRateFtS | None = None, + groundspeed_rate: t.AccelerationKtS | None = None, + airspeed_rate: t.AccelerationKtS | None = None, + xp: ArrayApiNamespace, +): + airspeed = groundspeed if airspeed is None else airspeed + zeros = xp.zeros_like(groundspeed) + + normalised_mass = ( + zeros - 1 + if mass is None + else (mass - aircraft.oew) / (aircraft.max_tow - aircraft.oew) + ) + + if elapsed_time is None: + altitude_rate = ( + vertical_rate / 60 if altitude_rate is None else altitude_rate + ) + groundspeed_rate = ( + zeros if groundspeed_rate is None else groundspeed_rate + ) + airspeed_rate = zeros if airspeed_rate is None else airspeed_rate + else: + delta_time = _diff_bfill(elapsed_time, xp=xp) + altitude_rate = ( + _diff_bfill(altitude, xp=xp) / delta_time + if altitude_rate is None + else altitude_rate + ) + groundspeed_rate = ( + _diff_bfill(groundspeed, xp=xp) / delta_time + if groundspeed_rate is None + else groundspeed_rate + ) + airspeed_rate = ( + _diff_bfill(airspeed, xp=xp) / delta_time + if airspeed_rate is None + else airspeed_rate + ) + + return xp.stack( + ( + zeros + int(aircraft.engine_type), + altitude_rate, + groundspeed_rate, + airspeed_rate, + zeros + aircraft.wing_area, + zeros + aircraft.max_alt, + zeros + aircraft.max_tas, + altitude, + groundspeed, + airspeed, + vertical_rate, + normalised_mass, + ), + axis=-1, + ) + + +def standardise( + standardisation: AcropoleStandardisation, + features, +): + return (features - standardisation.minimums) / ( + standardisation.maximums - standardisation.minimums + ) + + +def predict_standardised( + weights: AcropoleWeights, + features_standardised, + *, + xp: ArrayApiNamespace, +): + """Return the raw normalised fuel-flow prediction.""" + hidden = features_standardised + for weight, bias in zip(weights.weights[:-1], weights.biases[:-1]): + activation = hidden @ weight + bias + hidden = xp.maximum(activation, xp.zeros_like(activation)) + + logits = hidden @ weights.weights[-1] + weights.biases[-1] + one = xp.ones_like(logits[..., 0]) + # very negative logits may overflow exp; the sigmoid still converges to 0. + return one / (one + xp.exp(-logits[..., 0])) diff --git a/src/aerocore/cli.py b/src/aerocore/cli.py index 02125a0..86c3d3f 100644 --- a/src/aerocore/cli.py +++ b/src/aerocore/cli.py @@ -44,6 +44,18 @@ def dirs() -> None: # +@app.command() +def data_acropole_sync( + cache_dir: Path | None = None, + force: bool = False, +) -> None: + """Download prepared Acropole model data.""" + from .acropole import sync_data + + for path in asyncio.run(sync_data(cache_dir=cache_dir, force=force)): + logger.info("synced=%s", path) + + @app.command() def data_adsblol_metadata_sync( repo_output_specs: list[str] | None = None, diff --git a/src/aerocore/types.py b/src/aerocore/types.py index 95be182..4a67e92 100644 --- a/src/aerocore/types.py +++ b/src/aerocore/types.py @@ -26,6 +26,7 @@ def foo(x: t.StaticTemperatureK) -> t.PressurePA: from typing import Annotated, TypeVar import isqx +import isqx.usc from isqx import aerospace as aero _T = TypeVar("_T") @@ -45,6 +46,10 @@ def foo(x: t.StaticTemperatureK) -> t.PressurePA: DENSITY_FACTOR = isqx.Dimensionless("density_factor") COMPRESSIBILITY_FACTOR = isqx.Dimensionless("compressibility_factor") +ENGINE = isqx.Dimensionless("engine") +ENGINE_TAKEOFF_FUEL_FLOW = isqx.QtyKind( + isqx.KG * isqx.S**-1 * ENGINE**-1, ("takeoff",) +) # # Type Aliases @@ -57,6 +62,8 @@ def foo(x: t.StaticTemperatureK) -> t.PressurePA: _T, isqx.ACCELERATION_OF_FREE_FALL(isqx.M_PERS2) ] TimestampUtcS = Annotated[_T, isqx.TIME["timestamp", "utc"](isqx.S)] +DurationS = Annotated[_T, isqx.DURATION(isqx.S)] +MassKg = Annotated[_T, isqx.MASS(isqx.KG)] LatitudeDeg = Annotated[_T, isqx.LATITUDE(isqx.DEG)] LongitudeDeg = Annotated[_T, isqx.LONGITUDE(isqx.DEG)] @@ -90,12 +97,35 @@ def foo(x: t.StaticTemperatureK) -> t.PressurePA: CasMPS = Annotated[_T, aero.CALIBRATED_AIRSPEED(isqx.M_PERS)] EasMPS = Annotated[_T, aero.EQUIVALENT_AIRSPEED(isqx.M_PERS)] TasMPS = Annotated[_T, aero.TRUE_AIRSPEED(isqx.M_PERS)] +TasKt = Annotated[_T, aero.TRUE_AIRSPEED(isqx.usc.KNOT)] +MaximumOperatingTasKt = Annotated[ + _T, aero.TRUE_AIRSPEED["maximum_operating"](isqx.usc.KNOT) +] +GsKt = Annotated[_T, aero.GROUND_SPEED(isqx.usc.KNOT)] SpeedOfSoundMPS = Annotated[_T, isqx.SPEED_OF_SOUND(isqx.M_PERS)] GeopotentialAltitudeM = Annotated[_T, aero.GEOPOTENTIAL_ALTITUDE(isqx.M)] +PressureAltitudeFt = Annotated[_T, aero.PRESSURE_ALTITUDE(isqx.usc.FT)] +MaximumOperatingPressureAltitudeFt = Annotated[ + _T, aero.PRESSURE_ALTITUDE["maximum_operating"](isqx.usc.FT) +] +VerticalRateFtMin = Annotated[ + _T, aero.VERTICAL_RATE(isqx.usc.FT * isqx.MIN**-1) +] +VerticalRateFtS = Annotated[_T, aero.VERTICAL_RATE(isqx.usc.FT * isqx.S**-1)] +AccelerationKtS = Annotated[_T, isqx.ACCELERATION(isqx.usc.KNOT * isqx.S**-1)] GeometricAltitudeM = Annotated[_T, aero.GEOMETRIC_ALTITUDE(isqx.M)] +WingAreaM2 = Annotated[ + _T, aero.WING_AREA(isqx.M**2) +] # TODO: Wimpress or airbus? +OperatingEmptyWeightKg = Annotated[_T, aero.OPERATING_EMPTY_WEIGHT(isqx.KG)] +MaximumTakeoffWeightKg = Annotated[_T, aero.MAXIMUM_TAKEOFF_WEIGHT(isqx.KG)] ThrustN = Annotated[_T, isqx.FORCE(isqx.N)] MassFlowKgPS = Annotated[_T, isqx.MASS_FLOW_RATE(isqx.KG * isqx.S**-1)] +MassFlowKgPSPEngine = Annotated[ + _T, + ENGINE_TAKEOFF_FUEL_FLOW(isqx.KG * isqx.S**-1 * ENGINE**-1), +] SpecificFuelConsumptionKgPNPS = Annotated[ _T, aero.THRUST_SPECIFIC_FUEL_CONSUMPTION(isqx.KG * isqx.N**-1 * isqx.S**-1), diff --git a/src/aerocore/utils.py b/src/aerocore/utils.py index 53248bb..3b9ade3 100644 --- a/src/aerocore/utils.py +++ b/src/aerocore/utils.py @@ -3,10 +3,10 @@ from __future__ import annotations -from dataclasses import dataclass +from dataclasses import dataclass, fields, is_dataclass, replace from logging import getLogger from pathlib import Path -from typing import Callable, Concatenate, Generic, ParamSpec, TypeVar +from typing import Any, Callable, Concatenate, Generic, ParamSpec, TypeVar logger = getLogger(__name__) @@ -18,6 +18,32 @@ def default_cache_dir() -> Path: return platformdirs.user_cache_path("aerocore") / "data" +def tree_map(function: Callable[[Any], Any], tree: Any) -> Any: + """Apply `function` to every leaf in a small Python tree. + + This is similar to `jax.tree.map`, but does not support custom leaf + predicates, cyclic structures, sets, named tuples, container subclasses, + dataclass fields with `init=False`. + + The behaviour may change in the future. + """ # keeping it super simple for now. + if is_dataclass(tree) and not isinstance(tree, type): + return replace( + tree, + **{ + field.name: tree_map(function, getattr(tree, field.name)) + for field in fields(tree) + }, + ) + if type(tree) is tuple: + return tuple(tree_map(function, value) for value in tree) + if type(tree) is list: + return [tree_map(function, value) for value in tree] + if type(tree) is dict: + return {key: tree_map(function, value) for key, value in tree.items()} + return function(tree) + + # # hooks # diff --git a/tests/conftest.py b/tests/conftest.py index 9f2b8a3..751f6f7 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,6 +1,17 @@ +from pathlib import Path + import pytest @pytest.fixture(scope="session") def anyio_backend() -> str: return "asyncio" + + +@pytest.fixture(scope="session", autouse=True) +def acropole_data_paths() -> tuple[Path, ...]: + import asyncio + + from aerocore.acropole import sync_data + + return asyncio.run(sync_data()) diff --git a/tests/test_acropole.py b/tests/test_acropole.py new file mode 100644 index 0000000..1e2e46b --- /dev/null +++ b/tests/test_acropole.py @@ -0,0 +1,96 @@ +# mypy: disable-error-code="no-untyped-def" +from typing import Any, NamedTuple + +import pytest + +import numpy as np +from aerocore.acropole import ( + AcropoleAircraftDatabase, + AcropoleEngineType, + AcropoleModel, + fuel_flow, + input_features, + load_aircraft_database, + load_model, +) +from aerocore.utils import tree_map + + +class Backend(NamedTuple): + xp: Any + model: AcropoleModel[Any] + + +@pytest.fixture(scope="module") +def database(acropole_data_paths) -> AcropoleAircraftDatabase: + return load_aircraft_database(acropole_data_paths[1]) + + +@pytest.fixture(scope="module") +def model(acropole_data_paths) -> AcropoleModel[Any]: + return load_model(acropole_data_paths[0]) + + +@pytest.fixture(scope="module", params=("numpy", "jax", "torch")) +def backend( + request: pytest.FixtureRequest, + model: AcropoleModel[Any], +) -> Backend: + if request.param == "numpy": + xp = np + elif request.param == "torch": + xp = pytest.importorskip("torch") + else: + xp = pytest.importorskip("jax.numpy") + return Backend( + xp, + tree_map(lambda array: xp.asarray(array, dtype=xp.float32), model), + ) + + +def test_load_aircraft_database(database: AcropoleAircraftDatabase) -> None: + assert database["A320"].representative_engine == "CFM56-5B4/P" + assert database["A320"].trained is True + assert database["A320"].engine_type is AcropoleEngineType.JET + assert database["A320"].engine_count == 2 + assert database["A319"].trained is False + assert database["AT76"].engine_type is AcropoleEngineType.TURBOPROP + + +def test_input_features(database: AcropoleAircraftDatabase) -> None: + features = input_features( + database["A320"], + np.asarray([400.0, 408.0, 420.0]), + np.asarray([1000.0, 1012.0, 1028.0]), + np.asarray([180.0, 180.0, 180.0]), + airspeed=np.asarray([410.0, 416.0, 428.0]), + mass=np.asarray([60000.0, 60000.0, 60000.0]), + elapsed_time=np.asarray([0.0, 4.0, 8.0]), + xp=np, + ) + np.testing.assert_allclose(features[:, 1], [3.0, 3.0, 4.0]) + np.testing.assert_allclose(features[:, 2], [2.0, 2.0, 3.0]) + np.testing.assert_allclose(features[:, 3], [1.5, 1.5, 3.0]) + np.testing.assert_allclose(features[:, 7], [1000.0, 1012.0, 1028.0]) + np.testing.assert_allclose(features[:, 8], [400.0, 408.0, 420.0]) + + +def test_fuel_flow( + backend: Backend, + database: AcropoleAircraftDatabase, +) -> None: + xp, model = backend + actual = fuel_flow( + model=model, + aircraft=database["A320"], + groundspeed=xp.asarray([180.0, 450.0, 250.0], dtype=xp.float32), + altitude=xp.asarray([0.0, 30_000.0, 40_000.0], dtype=xp.float32), + vertical_rate=xp.asarray([3_000.0, 0.0, -2_000.0], dtype=xp.float32), + xp=xp, + ) + np.testing.assert_allclose( + np.asarray(actual), + [1.91229012, 0.75688555, 0.09444639], + rtol=1e-3, + atol=1e-6, + ) diff --git a/tests/test_utils.py b/tests/test_utils.py index 2fcb37f..48158b9 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -1,4 +1,7 @@ +from dataclasses import dataclass + from aerocore import hook +from aerocore.utils import tree_map def test_hook() -> None: @@ -16,3 +19,23 @@ def sub_(original_fn, *args, **kwargs): # type: ignore args = (3.1, 1.3) _ = sub(*args) assert (args, {}) in params + + +@dataclass(frozen=True) +class ExampleTree: + value: int + items: tuple[int, ...] + nested: list[dict[str, int]] + + +def test_tree_map() -> None: + tree = ExampleTree( + value=1, + items=(2, 3), + nested=[{"unchanged-key": 4}], + ) + assert tree_map(lambda value: value + 1, tree) == ExampleTree( + value=2, + items=(3, 4), + nested=[{"unchanged-key": 5}], + ) diff --git a/uv.lock b/uv.lock index 6174e76..beac5a6 100644 --- a/uv.lock +++ b/uv.lock @@ -2,46 +2,88 @@ version = 1 revision = 3 requires-python = ">=3.10" resolution-markers = [ - "python_full_version >= '3.15' and sys_platform == 'win32'", - "python_full_version >= '3.15' and sys_platform == 'emscripten'", - "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.14.*' and sys_platform == 'win32'", - "python_full_version == '3.14.*' and sys_platform == 'emscripten'", - "python_full_version == '3.14.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.13.*' and sys_platform == 'win32'", - "python_full_version == '3.13.*' and sys_platform == 'emscripten'", - "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.12.*' and sys_platform == 'win32'", - "python_full_version == '3.12.*' and sys_platform == 'emscripten'", - "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.11.*' and sys_platform == 'win32'", - "python_full_version == '3.11.*' and sys_platform == 'emscripten'", - "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version < '3.11'", -] + "python_full_version >= '3.15' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and sys_platform != 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", +] +conflicts = [[ + { package = "aerocore", extra = "torch-cpu" }, + { package = "aerocore", extra = "torch-gpu" }, +]] [[package]] name = "aerocore" -version = "0.2.1" +version = "0.2.2" source = { editable = "." } dependencies = [ { name = "isqx" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, ] [package.optional-dependencies] all = [ { name = "httpx", extra = ["http2"] }, - { name = "jax", version = "0.6.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "jax", version = "0.10.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "jax", version = "0.6.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "jax", version = "0.10.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, { name = "matplotlib" }, { name = "platformdirs" }, { name = "polars", extra = ["calamine"] }, { name = "rich" }, { name = "typer" }, - { name = "xarray", version = "2025.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "xarray", version = "2026.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "xarray", version = "2025.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "xarray", version = "2026.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, ] cli = [ { name = "typer" }, @@ -50,12 +92,26 @@ httpx = [ { name = "httpx", extra = ["http2"] }, ] jax = [ - { name = "jax", version = "0.6.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "jax", version = "0.10.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "jax", version = "0.6.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "jax", version = "0.10.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, +] +jax-gpu = [ + { name = "jax", version = "0.6.2", source = { registry = "https://pypi.org/simple" }, extra = ["cuda12"], marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "jax", version = "0.10.1", source = { registry = "https://pypi.org/simple" }, extra = ["cuda13"], marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, ] matplotlib = [ { name = "matplotlib" }, ] +onnx = [ + { name = "onnx" }, +] +onnx-gpu = [ + { name = "onnxruntime-gpu", version = "1.24.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "onnxruntime-gpu", version = "1.27.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, +] +onnxscript = [ + { name = "onnxscript" }, +] platformdirs = [ { name = "platformdirs" }, ] @@ -65,13 +121,21 @@ polars = [ rich = [ { name = "rich" }, ] +torch-cpu = [ + { name = "torch", version = "2.13.0", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version < '3.15' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu') or (python_full_version >= '3.15' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform != 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "torch", version = "2.13.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version >= '3.15' and extra == 'extra-8-aerocore-torch-cpu') or (python_full_version < '3.15' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform != 'darwin' and extra == 'extra-8-aerocore-torch-cpu')" }, +] +torch-gpu = [ + { name = "torch", version = "2.13.0+cu130", source = { registry = "https://download.pytorch.org/whl/cu130" } }, +] xarray = [ - { name = "xarray", version = "2025.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "xarray", version = "2026.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "xarray", version = "2025.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "xarray", version = "2026.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, ] [package.dev-dependencies] dev = [ + { name = "aerocore", extra = ["cli"] }, { name = "anyio" }, { name = "array-api-strict" }, { name = "ipykernel" }, @@ -79,8 +143,8 @@ dev = [ { name = "mypy" }, { name = "pytest" }, { name = "ruff" }, - { name = "typer" }, { name = "types-pytz" }, + { name = "typing-extensions" }, { name = "zensical" }, ] docs = [ @@ -91,6 +155,10 @@ test = [ { name = "anyio" }, { name = "pytest" }, ] +typing = [ + { name = "types-pytz" }, + { name = "typing-extensions" }, +] [package.metadata] requires-dist = [ @@ -98,18 +166,26 @@ requires-dist = [ { name = "httpx", extras = ["http2"], marker = "extra == 'httpx'", specifier = ">=0.28.1" }, { name = "isqx", specifier = ">=0.1.2" }, { name = "jax", marker = "extra == 'jax'", specifier = ">=0.5.0" }, + { name = "jax", extras = ["cuda12"], marker = "python_full_version < '3.11' and extra == 'jax-gpu'", specifier = ">=0.5.0" }, + { name = "jax", extras = ["cuda13"], marker = "python_full_version >= '3.11' and extra == 'jax-gpu'", specifier = ">=0.5.0" }, { name = "matplotlib", marker = "extra == 'matplotlib'", specifier = ">=3.10.0" }, { name = "numpy", specifier = ">=2" }, + { name = "onnx", marker = "extra == 'onnx'", specifier = ">=1.20.0" }, + { name = "onnxruntime-gpu", marker = "extra == 'onnx-gpu'", specifier = ">=1.22.0" }, + { name = "onnxscript", marker = "extra == 'onnxscript'", specifier = ">=0.7.0" }, { name = "platformdirs", marker = "extra == 'platformdirs'", specifier = ">=4" }, { name = "polars", extras = ["calamine"], marker = "extra == 'polars'", specifier = ">=1.18.0" }, { name = "rich", marker = "extra == 'rich'", specifier = ">=14.0.0" }, + { name = "torch", marker = "extra == 'torch-cpu'", specifier = ">=2.7.0", index = "https://download.pytorch.org/whl/cpu", conflict = { package = "aerocore", extra = "torch-cpu" } }, + { name = "torch", marker = "extra == 'torch-gpu'", specifier = ">=2.7.0", index = "https://download.pytorch.org/whl/cu130", conflict = { package = "aerocore", extra = "torch-gpu" } }, { name = "typer", marker = "extra == 'cli'", specifier = ">=0.26" }, { name = "xarray", marker = "extra == 'xarray'", specifier = ">=2024.11.0" }, ] -provides-extras = ["polars", "httpx", "xarray", "jax", "matplotlib", "rich", "cli", "platformdirs", "all"] +provides-extras = ["polars", "httpx", "xarray", "jax", "matplotlib", "rich", "cli", "platformdirs", "all", "onnx", "onnx-gpu", "torch-cpu", "torch-gpu", "jax-gpu", "onnxscript"] [package.metadata.requires-dev] dev = [ + { name = "aerocore", extras = ["cli"] }, { name = "anyio", specifier = ">=4.7.0" }, { name = "array-api-strict", specifier = ">=2.2" }, { name = "ipykernel", specifier = ">=6.29.5" }, @@ -117,18 +193,22 @@ dev = [ { name = "mypy", specifier = ">=1.13.0" }, { name = "pytest", specifier = ">=8.3.4" }, { name = "ruff", specifier = ">=0.8.3" }, - { name = "typer", specifier = ">=0.16.0" }, { name = "types-pytz", specifier = ">=2024.2.0.20241221" }, - { name = "zensical", specifier = ">=0.0.43" }, + { name = "typing-extensions", specifier = ">=4.1.0" }, + { name = "zensical", specifier = ">=0.0.47" }, ] docs = [ { name = "mkdocstrings-python", specifier = ">=2.0.3" }, - { name = "zensical", specifier = ">=0.0.43" }, + { name = "zensical", specifier = ">=0.0.47" }, ] test = [ { name = "anyio", specifier = ">=4.7.0" }, { name = "pytest", specifier = ">=8.3.4" }, ] +typing = [ + { name = "types-pytz", specifier = ">=2024.2.0.20241221" }, + { name = "typing-extensions", specifier = ">=4.1.0" }, +] [[package]] name = "annotated-doc" @@ -144,9 +224,9 @@ name = "anyio" version = "4.13.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "exceptiongroup", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, { name = "idna" }, - { name = "typing-extensions", marker = "python_full_version < '3.13'" }, + { name = "typing-extensions", marker = "python_full_version < '3.13' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/19/14/2c5dd9f512b66549ae92767a9c7b330ae88e1932ca57876909410251fe13/anyio-4.13.0.tar.gz", hash = "sha256:334b70e641fd2221c1505b3890c69882fe4a2df910cba14d97019b90b24439dc", size = 231622, upload-time = "2026-03-24T12:59:09.671Z" } wheels = [ @@ -167,8 +247,8 @@ name = "array-api-strict" version = "2.5" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/23/c3/85c4cc0733555e95e4e42a507b440e12267cb0bd34dac203bdc8e375429f/array_api_strict-2.5.tar.gz", hash = "sha256:7767e597fa70c04c5db640114774d1a481c5f0a1a451a804ea1ccdd2a809e1c5", size = 87344, upload-time = "2026-02-23T10:56:13.316Z" } wheels = [ @@ -238,7 +318,7 @@ name = "cffi" version = "2.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pycparser", marker = "implementation_name != 'PyPy'" }, + { name = "pycparser", marker = "implementation_name != 'PyPy' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" } wheels = [ @@ -320,7 +400,7 @@ name = "click" version = "8.4.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/9b/98/518d8e5081007684232226f475082b30087d0f585e8457db087298259f49/click-8.4.1.tar.gz", hash = "sha256:918b5633eddf6b41c32d4f454bf0de810065c74e3f7dbf8ee5452f8be88d3e96", size = 353007, upload-time = "2026-05-22T04:08:37.769Z" } wheels = [ @@ -350,10 +430,13 @@ name = "contourpy" version = "1.3.2" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version < '3.11'", + "python_full_version < '3.11' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and sys_platform != 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", ] dependencies = [ - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130, upload-time = "2025-04-15T17:47:53.79Z" } wheels = [ @@ -420,24 +503,59 @@ name = "contourpy" version = "1.3.3" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.15' and sys_platform == 'win32'", - "python_full_version >= '3.15' and sys_platform == 'emscripten'", - "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.14.*' and sys_platform == 'win32'", - "python_full_version == '3.14.*' and sys_platform == 'emscripten'", - "python_full_version == '3.14.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.13.*' and sys_platform == 'win32'", - "python_full_version == '3.13.*' and sys_platform == 'emscripten'", - "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.12.*' and sys_platform == 'win32'", - "python_full_version == '3.12.*' and sys_platform == 'emscripten'", - "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.11.*' and sys_platform == 'win32'", - "python_full_version == '3.11.*' and sys_platform == 'emscripten'", - "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.15' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", ] dependencies = [ - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/58/01/1253e6698a07380cd31a736d248a3f2a50a7c88779a1813da27503cadc2a/contourpy-1.3.3.tar.gz", hash = "sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880", size = 13466174, upload-time = "2025-07-26T12:03:12.549Z" } wheels = [ @@ -514,6 +632,91 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/0c/58/bd257695f39d05594ca4ad60df5bcb7e32247f9951fd09a9b8edb82d1daa/contourpy-1.3.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:3d1a3799d62d45c18bafd41c5fa05120b96a28079f2393af559b843d1a966a77", size = 225315, upload-time = "2025-07-26T12:02:58.801Z" }, ] +[[package]] +name = "cuda-bindings" +version = "13.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cuda-pathfinder", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version < '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/21/8464d133752951c154feafb3b65c297e7d80f301183d220bec4c830f1441/cuda_bindings-13.3.1-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:120fcc53d57903df529c3486962c56528cba5b7d6c57c99537320ed9922c8b86", size = 6073403, upload-time = "2026-05-29T23:11:36.22Z" }, + { url = "https://files.pythonhosted.org/packages/a8/1f/5ef51f5fbaa5d4d3201bb3d7555af028ec1aa4416275ccbf73c9e34e3d2d/cuda_bindings-13.3.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9851b0caa8bfd3bc6fa054eaf57bea7c8e9c3a62db2d2621224677f49f3c53d0", size = 6675244, upload-time = "2026-05-29T23:11:38.664Z" }, + { url = "https://files.pythonhosted.org/packages/fc/64/bb17e4d168569ef7be05c44474fe3dc19278d60a69ba228e45a431c86444/cuda_bindings-13.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:c0c4b1a995098c46695c24257a342dc97d6e6d3f3050b944c9f43bd26d734051", size = 5625597, upload-time = "2026-05-29T23:11:40.808Z" }, + { url = "https://files.pythonhosted.org/packages/51/6b/457ca12dad3ee9bfcc9a545cfd6b64b359ba49de40f776f6e028e678f262/cuda_bindings-13.3.1-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c5879712accf6e14bb01aa5e67440eb84998b8d104b509cc7a6dc0b8f656a474", size = 6053539, upload-time = "2026-05-29T23:11:43.19Z" }, + { url = "https://files.pythonhosted.org/packages/95/7a/c5e3c34a409b148f5c0f5a4ea374158f95d488862c1dffedf9aa5c639df9/cuda_bindings-13.3.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:04436a9364059c84b8f9636f359eccda1cf814341f5b670c71d80d2f79dbc708", size = 6674166, upload-time = "2026-05-29T23:11:45.478Z" }, + { url = "https://files.pythonhosted.org/packages/93/f7/0e35987a21914f84068061dcf4b61466ccbce1c62ddc9727596d5ed0c26f/cuda_bindings-13.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:507b0e19e7f934c5e30f30f0244ad70a75812619a7d3a0d742543caae1bd50f1", size = 5664286, upload-time = "2026-05-29T23:11:47.719Z" }, + { 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" }, + { url = "https://files.pythonhosted.org/packages/7c/95/872a0392122f1fb43fcb06869790ef3171f37beee9f7db8f441739113570/cuda_bindings-13.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:b134dd8c5c66ae4c4ad814f7aee88fd215353c077010cbc47e3b55ed35ec9eff", size = 5875099, upload-time = "2026-05-29T23:11:54.635Z" }, + { url = "https://files.pythonhosted.org/packages/cc/6e/2394f8163360f8391f8f1b7e72d300a82724edb81a7b7084c799fbd4c91f/cuda_bindings-13.3.1-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9efb21c1ee64981e184b9e0ba5eb3179e5ba3d4b51665a6cb52b8ef3d01a7cbf", size = 5920504, upload-time = "2026-05-29T23:11:56.883Z" }, + { url = "https://files.pythonhosted.org/packages/34/c2/ef9b6a63f7dc432712a462c816662e662e00d38caa9b861c8c2588195d03/cuda_bindings-13.3.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2732904099e0a4d4db774a5fc6d91ee95fae065b4d2ecabb4968c5fe2406c9d7", size = 6476660, upload-time = "2026-05-29T23:11:59.188Z" }, + { url = "https://files.pythonhosted.org/packages/0c/2f/6a0dd496550c6fafbf6aeb1bf40242eeabb2fd138a43892aabb4be8224c2/cuda_bindings-13.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:18c8c167c8907b8f02531ca810534315c458dabef31f7965095619bf647b9202", size = 5830027, upload-time = "2026-05-29T23:12:01.205Z" }, + { url = "https://files.pythonhosted.org/packages/b1/81/bff68ce829999c1e4209c761bbf903b1c06ec570416ddb25020864ad5907/cuda_bindings-13.3.1-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ab2f74ed65bfef4163ba07a8db16f1085e0729291db12a2423aff84ee8278b8", size = 6013639, upload-time = "2026-05-29T23:12:03.509Z" }, + { url = "https://files.pythonhosted.org/packages/d4/e0/c8a1f0c8f9ffdea4f5fe6dbab89b326cef4d85caf489dad39e209da89416/cuda_bindings-13.3.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:efd4c814d311ec08c981f6dded1dbe7d4b371067ee4f6c14cccec4bde9590f80", size = 6534419, upload-time = "2026-05-29T23:12:05.633Z" }, + { url = "https://files.pythonhosted.org/packages/48/45/2734be44dbc80ac082ec23a86b41c8294992dcb90033645ed1bc50aafe4c/cuda_bindings-13.3.1-cp314-cp314-win_amd64.whl", hash = "sha256:8de12ef60bf40756852cb62bbb40460609269f6ece522903d1cc93d73a3ececb", size = 5961055, upload-time = "2026-05-29T23:12:07.971Z" }, + { url = "https://files.pythonhosted.org/packages/52/b8/83b1f563925b290f2d11a01a77a84013ba56052fe3653a5bef3ccfbb43d6/cuda_bindings-13.3.1-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c3c772dfff49681541d59630c90f858e173ac926b9c593a2b7123f2a1043cc76", size = 5809771, upload-time = "2026-05-29T23:12:10.422Z" }, + { url = "https://files.pythonhosted.org/packages/12/20/e79b4bfe98f075195afb6343d41c498f9dbd2d161d7021d4d28bceb83581/cuda_bindings-13.3.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:36febb7c1079d68a981dbbd8d5a67235b399802b82075c9388624719607e52b9", size = 6358584, upload-time = "2026-05-29T23:12:12.767Z" }, + { url = "https://files.pythonhosted.org/packages/27/2a/b59bcac016ab9985d6b48a5d05b0d698461a159ca03ee11c4abd54da2ac4/cuda_bindings-13.3.1-cp314-cp314t-win_amd64.whl", hash = "sha256:61120b5e4f4a63f67efd7e7396914cb9ef871bb1f0021e990fb70277be240a4d", size = 6740329, upload-time = "2026-05-29T23:12:15.153Z" }, +] + +[[package]] +name = "cuda-pathfinder" +version = "1.5.6" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/53/8fc9b0cdc5b7f62746e6a01b85b6461e5ae27f871010a5fcf8fa6950766d/cuda_pathfinder-1.5.6-py3-none-any.whl", hash = "sha256:7e4c07c117b78ba1fb35dac4c444d21f3677b1b1ff56175c53a8e3025c5b43c0", size = 52972, upload-time = "2026-06-30T00:58:04.34Z" }, +] + +[[package]] +name = "cuda-toolkit" +version = "13.0.3.0" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/c7/a79086a62c98befcdb8349656c6f114e2db3b8b2422f6e25c97a7f2a9a3c/cuda_toolkit-13.0.3.0-py2.py3-none-any.whl", hash = "sha256:d693caaa261214ddd7dbb60d68e71cbed884e68c2be7509778f3051da0b91c3f", size = 2512, upload-time = "2026-04-14T00:50:08.173Z" }, +] + +[package.optional-dependencies] +cublas = [ + { name = "nvidia-cublas", marker = "(python_full_version < '3.11' and platform_machine == 'AMD64' and sys_platform == 'win32') or (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, + { name = "nvidia-cuda-nvrtc", marker = "(python_full_version < '3.11' and platform_machine == 'AMD64' and sys_platform == 'win32') or (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, +] +cudart = [ + { name = "nvidia-cuda-runtime", marker = "(python_full_version < '3.11' and platform_machine == 'AMD64' and sys_platform == 'win32') or (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, +] +cufft = [ + { name = "nvidia-cufft", marker = "(python_full_version < '3.11' and platform_machine == 'AMD64' and sys_platform == 'win32') or (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, + { name = "nvidia-nvjitlink", marker = "(python_full_version < '3.11' and platform_machine == 'AMD64' and sys_platform == 'win32') or (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, +] +cufile = [ + { name = "nvidia-cufile", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, +] +cupti = [ + { name = "nvidia-cuda-cupti", marker = "(python_full_version < '3.11' and platform_machine == 'AMD64' and sys_platform == 'win32') or (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, +] +curand = [ + { name = "nvidia-curand", marker = "(python_full_version < '3.11' and platform_machine == 'AMD64' and sys_platform == 'win32') or (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, +] +cusolver = [ + { name = "nvidia-cublas", marker = "(python_full_version < '3.11' and platform_machine == 'AMD64' and sys_platform == 'win32') or (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, + { name = "nvidia-cusolver", marker = "(python_full_version < '3.11' and platform_machine == 'AMD64' and sys_platform == 'win32') or (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, + { name = "nvidia-cusparse", marker = "(python_full_version < '3.11' and platform_machine == 'AMD64' and sys_platform == 'win32') or (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, + { name = "nvidia-nvjitlink", marker = "(python_full_version < '3.11' and platform_machine == 'AMD64' and sys_platform == 'win32') or (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, +] +cusparse = [ + { name = "nvidia-cusparse", marker = "(python_full_version < '3.11' and platform_machine == 'AMD64' and sys_platform == 'win32') or (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, + { name = "nvidia-nvjitlink", marker = "(python_full_version < '3.11' and platform_machine == 'AMD64' and sys_platform == 'win32') or (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, +] +nvjitlink = [ + { name = "nvidia-nvjitlink", marker = "(python_full_version < '3.11' and platform_machine == 'AMD64' and sys_platform == 'win32') or (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, +] +nvrtc = [ + { name = "nvidia-cuda-nvrtc", marker = "(python_full_version < '3.11' and platform_machine == 'AMD64' and sys_platform == 'win32') or (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, +] +nvtx = [ + { name = "nvidia-nvtx", marker = "(python_full_version < '3.11' and platform_machine == 'AMD64' and sys_platform == 'win32') or (platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, +] + [[package]] name = "cycler" version = "0.12.1" @@ -575,7 +778,7 @@ name = "exceptiongroup" version = "1.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" } wheels = [ @@ -614,6 +817,23 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/3a/51/1d9a72473cc213d5647d8cf7c2393ef995b3453ac5e4b544ba652d1428dd/fastexcel-0.20.2-cp314-cp314t-win_amd64.whl", hash = "sha256:d71e2a1fce006cb8bc1ae06da6ff5e5fe83e6496be5aef01b623b15aa0d0f82d", size = 3271344, upload-time = "2026-05-04T12:28:34.443Z" }, ] +[[package]] +name = "filelock" +version = "3.29.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/35/94/00f2059e4835eace3ae8fde680b932c496f8ec7bdc99168dfa53fb2e6b79/filelock-3.29.7.tar.gz", hash = "sha256:5b481979797ae69e72f0b389d89a80bdd585c260c5b3f1fb9c0a5ba9bb3f195d", size = 71521, upload-time = "2026-07-08T05:46:58.716Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/02/be4a57b60c7149b55b9e3b3c13f609cd8eb5307c751f22bd8fb8d262e75b/filelock-3.29.7-py3-none-any.whl", hash = "sha256:987db6f789a3a2a59f55081801b2b3697cb97e2a736b5f1a9e99b559285fbc51", size = 46036, upload-time = "2026-07-08T05:46:57.53Z" }, +] + +[[package]] +name = "flatbuffers" +version = "25.12.19" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/2d/d2a548598be01649e2d46231d151a6c56d10b964d94043a335ae56ea2d92/flatbuffers-25.12.19-py2.py3-none-any.whl", hash = "sha256:7634f50c427838bb021c2d66a3d1168e9d199b0607e6329399f04846d42e20b4", size = 26661, upload-time = "2025-12-19T23:16:13.622Z" }, +] + [[package]] name = "fonttools" version = "4.63.0" @@ -671,6 +891,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/2c/47/c99d5268f354002ce80f8d029cd9d7d872969da1de8b93d32de4dc56d6f4/fonttools-4.63.0-py3-none-any.whl", hash = "sha256:445af2eab030a16b9171ea8bdda7ebf7d96bda2df88ee182a464252f6e05e20d", size = 1164562, upload-time = "2026-05-14T12:04:29.092Z" }, ] +[[package]] +name = "fsspec" +version = "2026.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/10/a1/ae4e3e5003468d6391d2c77b6fa1cd73bd5d13511d81c642d7b28ac90ed4/fsspec-2026.6.0.tar.gz", hash = "sha256:f5bac145310fe30e16e1471bd6840b2d990d609e872251d7e674241822abf01a", size = 313646, upload-time = "2026-06-16T01:57:28.105Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/22/4222d7ddf3da30f363edaa98e329c2bce6c65497c9cb2810931c8b2c0fbc/fsspec-2026.6.0-py3-none-any.whl", hash = "sha256:02e0b71817df9b2169dc30a16832045764def1191b43dcff5bb85bdee212d2a1", size = 203949, upload-time = "2026-06-16T01:57:26.358Z" }, +] + [[package]] name = "ghp-import" version = "2.1.0" @@ -788,11 +1017,11 @@ name = "ipykernel" version = "7.2.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "appnope", marker = "sys_platform == 'darwin'" }, + { name = "appnope", marker = "sys_platform == 'darwin' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, { name = "comm" }, { name = "debugpy" }, - { name = "ipython", version = "8.39.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "ipython", version = "9.14.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "ipython", version = "8.39.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "ipython", version = "9.14.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, { name = "jupyter-client" }, { name = "jupyter-core" }, { name = "matplotlib-inline" }, @@ -813,20 +1042,23 @@ name = "ipython" version = "8.39.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version < '3.11'", + "python_full_version < '3.11' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and sys_platform != 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", ] dependencies = [ - { name = "colorama", marker = "python_full_version < '3.11' and sys_platform == 'win32'" }, - { 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 = "pexpect", marker = "python_full_version < '3.11' and sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { 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 = "python_full_version < '3.11'" }, + { name = "colorama", marker = "(python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.11' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "decorator", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "exceptiongroup", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "jedi", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "matplotlib-inline", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "pexpect", marker = "(python_full_version < '3.11' and sys_platform != 'emscripten' and sys_platform != 'win32') or (python_full_version >= '3.11' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "prompt-toolkit", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "pygments", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "stack-data", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "traitlets", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "typing-extensions", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/40/18/f8598d287006885e7136451fdea0755af4ebcbfe342836f24deefaed1164/ipython-8.39.0.tar.gz", hash = "sha256:4110ae96012c379b8b6db898a07e186c40a2a1ef5d57a7fa83166047d9da7624", size = 5513971, upload-time = "2026-03-27T10:02:13.94Z" } wheels = [ @@ -838,35 +1070,70 @@ name = "ipython" version = "9.14.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.15' and sys_platform == 'win32'", - "python_full_version >= '3.15' and sys_platform == 'emscripten'", - "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.14.*' and sys_platform == 'win32'", - "python_full_version == '3.14.*' and sys_platform == 'emscripten'", - "python_full_version == '3.14.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.13.*' and sys_platform == 'win32'", - "python_full_version == '3.13.*' and sys_platform == 'emscripten'", - "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.12.*' and sys_platform == 'win32'", - "python_full_version == '3.12.*' and sys_platform == 'emscripten'", - "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.11.*' and sys_platform == 'win32'", - "python_full_version == '3.11.*' and sys_platform == 'emscripten'", - "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.15' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", ] dependencies = [ - { name = "colorama", marker = "python_full_version >= '3.11' and sys_platform == 'win32'" }, - { name = "decorator", 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 = "pexpect", marker = "python_full_version >= '3.11' and sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "prompt-toolkit", marker = "python_full_version >= '3.11'" }, - { name = "psutil", marker = "python_full_version >= '3.11' and sys_platform != 'emscripten'" }, - { 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 = "python_full_version == '3.11.*'" }, + { name = "colorama", marker = "(python_full_version >= '3.11' and sys_platform == 'win32') or (python_full_version < '3.11' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "decorator", marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "ipython-pygments-lexers", marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "jedi", marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "matplotlib-inline", marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "pexpect", marker = "(python_full_version >= '3.11' and sys_platform != 'emscripten' and sys_platform != 'win32') or (python_full_version < '3.11' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "prompt-toolkit", marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "psutil", marker = "(python_full_version >= '3.11' and sys_platform != 'emscripten') or (python_full_version < '3.11' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "pygments", marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "stack-data", marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "traitlets", marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "typing-extensions", marker = "python_full_version == '3.11.*' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/e2/23/3a27530575643c8bb7bfc757a28e2e7ef80092afbf59a2bc5716320b6602/ipython-9.14.1.tar.gz", hash = "sha256:f913bf74df06d458e46ced84ca506c23797590d594b236fe60b14df213291e7b", size = 4433457, upload-time = "2026-06-05T08:12:34.921Z" } wheels = [ @@ -878,7 +1145,7 @@ name = "ipython-pygments-lexers" version = "1.1.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pygments", marker = "python_full_version >= '3.11'" }, + { name = "pygments", marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload-time = "2025-01-17T11:24:34.505Z" } wheels = [ @@ -899,64 +1166,210 @@ name = "jax" version = "0.6.2" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version < '3.11'", + "python_full_version < '3.11' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and sys_platform != 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", ] dependencies = [ - { name = "jaxlib", version = "0.6.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "ml-dtypes", marker = "python_full_version < '3.11'" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "opt-einsum", marker = "python_full_version < '3.11'" }, - { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "jaxlib", version = "0.6.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "ml-dtypes", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "opt-einsum", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/cf/1e/267f59c8fb7f143c3f778c76cb7ef1389db3fd7e4540f04b9f42ca90764d/jax-0.6.2.tar.gz", hash = "sha256:a437d29038cbc8300334119692744704ca7941490867b9665406b7f90665cd96", size = 2334091, upload-time = "2025-06-17T23:10:27.186Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl", hash = "sha256:bb24a82dc60ccf704dcaf6dbd07d04957f68a6c686db19630dd75260d1fb788c", size = 2722396, upload-time = "2025-06-17T23:10:25.293Z" }, ] +[package.optional-dependencies] +cuda12 = [ + { name = "jax-cuda12-plugin", extra = ["with-cuda"], marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "jaxlib", version = "0.6.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, +] + [[package]] name = "jax" version = "0.10.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.15' and sys_platform == 'win32'", - "python_full_version >= '3.15' and sys_platform == 'emscripten'", - "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.14.*' and sys_platform == 'win32'", - "python_full_version == '3.14.*' and sys_platform == 'emscripten'", - "python_full_version == '3.14.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.13.*' and sys_platform == 'win32'", - "python_full_version == '3.13.*' and sys_platform == 'emscripten'", - "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.12.*' and sys_platform == 'win32'", - "python_full_version == '3.12.*' and sys_platform == 'emscripten'", - "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.11.*' and sys_platform == 'win32'", - "python_full_version == '3.11.*' and sys_platform == 'emscripten'", - "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.15' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", ] dependencies = [ - { name = "jaxlib", version = "0.10.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "ml-dtypes", marker = "python_full_version >= '3.11'" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "opt-einsum", marker = "python_full_version >= '3.11'" }, - { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "jaxlib", version = "0.10.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "ml-dtypes", marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "opt-einsum", marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/24/49/b082387119c4a6bc7596296bbdc6bce034628cdd2845ebb27304cbca3624/jax-0.10.1.tar.gz", hash = "sha256:11672410faf8752429eb9a131de203dc488a2a3a012d509baa2b39878008810d", size = 2718178, upload-time = "2026-05-20T14:54:09.441Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/5c/6e/5087e0347188f6970aba1ffbd0018754d23c3f3461e9f21785f2f27a02c2/jax-0.10.1-py3-none-any.whl", hash = "sha256:47f3192c76e9e3358de1b106a8af5e943fccb10510903f25d96ea53652729134", size = 3150973, upload-time = "2026-05-20T14:51:30.066Z" }, ] +[package.optional-dependencies] +cuda13 = [ + { name = "jax-cuda13-plugin", extra = ["with-cuda"], marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "jaxlib", version = "0.10.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, +] + +[[package]] +name = "jax-cuda12-pjrt" +version = "0.6.2" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/8b/096a12d91b1bc76a13cd8e63f2d8eae5ca9b5693b5ee2687e46be3b5d779/jax_cuda12_pjrt-0.6.2-py3-none-manylinux2014_aarch64.whl", hash = "sha256:22faf020d2e8f7ca1e2915633241f7df7678b73c7078f5f0b2f113248337f7de", size = 111228681, upload-time = "2025-06-17T23:11:55.179Z" }, + { url = "https://files.pythonhosted.org/packages/9c/8e/21c21b4335fce1c022c339da5e6b6249c246ad062e924d28fb0eda4bcef0/jax_cuda12_pjrt-0.6.2-py3-none-manylinux2014_x86_64.whl", hash = "sha256:8cd9ead7948ea2c778a508fef5d1159e8b7abf4fccc7037c3fe1dbfcd95012dc", size = 125263999, upload-time = "2025-06-17T23:11:59.986Z" }, +] + +[[package]] +name = "jax-cuda12-plugin" +version = "0.6.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jax-cuda12-pjrt", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/58/29/4b8822ca459da39bda9be7454908ae4e29d88cfb99b480b641cbb063af7a/jax_cuda12_plugin-0.6.2-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:bc5c3a75d05519b4d326e4669d0f7ad0fe0f0acf875f9313d913748ccca5a9ea", size = 15873729, upload-time = "2025-06-17T23:12:05.046Z" }, + { url = "https://files.pythonhosted.org/packages/4d/3d/f543bab6ef7eebb9840d618fb2272bdcc0e990e60aa012f14a3564532823/jax_cuda12_plugin-0.6.2-cp310-cp310-manylinux2014_x86_64.whl", hash = "sha256:1751f88989269b3cdb0dfe4f7b072a6442149818c9bc98c3a395c8acaf910a79", size = 15879965, upload-time = "2025-06-17T23:12:07.323Z" }, + { url = "https://files.pythonhosted.org/packages/9e/99/90f81c660bf662698be17e8b959d8302682c5cd5ce0729c0bfc883d8affe/jax_cuda12_plugin-0.6.2-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:2cd8e279a59a38ba0c978a831e13adeb6ee9e4572fba387c7975ba3ad535dd38", size = 15873970, upload-time = "2025-06-17T23:12:09.492Z" }, + { url = "https://files.pythonhosted.org/packages/ad/00/e733c87a2fb7265c96f48c991a896552c873de949217823d519288724d91/jax_cuda12_plugin-0.6.2-cp311-cp311-manylinux2014_x86_64.whl", hash = "sha256:0896cbb308d95291e205cd89d254029dee3a1df43d66e9831331a9afd2d27870", size = 15879563, upload-time = "2025-06-17T23:12:11.439Z" }, + { url = "https://files.pythonhosted.org/packages/1d/53/6ea0db7230ac3dcb26b732452f4f2e2c6868b75d3603be19cee388fef279/jax_cuda12_plugin-0.6.2-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:6c9b002d13b1fcb9403713eedd3876a227ad1ffbdfb3811b1f9f89af4c25a5f7", size = 15867462, upload-time = "2025-06-17T23:12:14.093Z" }, + { url = "https://files.pythonhosted.org/packages/a5/db/e6643143caf573273eedb991cb1af2bea964b84594a8887802eb0b6ba64a/jax_cuda12_plugin-0.6.2-cp312-cp312-manylinux2014_x86_64.whl", hash = "sha256:febd099f970d350eb8fa5a2c9a2fb4b0ea7b3d6a89df1496663edfa7afe590e5", size = 15876401, upload-time = "2025-06-17T23:12:15.964Z" }, + { url = "https://files.pythonhosted.org/packages/b4/10/74fbae1c1bb9d11b113c62e03c445bdf0aaaa4981bc13d2de8e3f4f503ca/jax_cuda12_plugin-0.6.2-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:773efa8b55a837406c561f0ef02144dda9019181193760ec5419eec9dd2b9aac", size = 15868561, upload-time = "2025-06-17T23:12:18.189Z" }, + { url = "https://files.pythonhosted.org/packages/2b/96/53928ad62ecddbf76f4c413025fdeab5a90adf7fbd970d800162399e504a/jax_cuda12_plugin-0.6.2-cp313-cp313-manylinux2014_x86_64.whl", hash = "sha256:db4c6103c912d8cd1adf94c34d313bb4760ca7f01c897ca7cd62e65f27994199", size = 15876276, upload-time = "2025-06-17T23:12:20.361Z" }, + { url = "https://files.pythonhosted.org/packages/22/29/f1c1790d77ccad3587e6c97045b567006a8050fec151581d4cf883779e25/jax_cuda12_plugin-0.6.2-cp313-cp313t-manylinux2014_aarch64.whl", hash = "sha256:ed5316ca1818db7ef53230ee0a41398d3a60942e361dfb857a952eb4d92fc8d7", size = 15964355, upload-time = "2025-06-17T23:12:22.176Z" }, + { url = "https://files.pythonhosted.org/packages/07/af/c3224aafbc1d2d7654359a5410319bf15361067635bd3616cf5ad3e16af2/jax_cuda12_plugin-0.6.2-cp313-cp313t-manylinux2014_x86_64.whl", hash = "sha256:83345f52f610cdb8e90044566d8e120864150b8090968c8ab6dd8e0bfb9a6a9f", size = 16037754, upload-time = "2025-06-17T23:12:24.066Z" }, +] + +[package.optional-dependencies] +with-cuda = [ + { name = "nvidia-cublas-cu12", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "nvidia-cuda-cupti-cu12", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "nvidia-cuda-nvcc-cu12", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "nvidia-cuda-nvrtc-cu12", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "nvidia-cuda-runtime-cu12", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "nvidia-cudnn-cu12", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "nvidia-cufft-cu12", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "nvidia-cusolver-cu12", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "nvidia-cusparse-cu12", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "nvidia-nccl-cu12", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "nvidia-nvjitlink-cu12", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "nvidia-nvshmem-cu12", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, +] + +[[package]] +name = "jax-cuda13-pjrt" +version = "0.10.1" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8c/8e/57eebc0c4d6d63bad64f7443cbc96d3e3c5535fa4992af58568ad7388cbb/jax_cuda13_pjrt-0.10.1-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:7dd9f518876857e238a9a63abc185b277e9435470cc286b92209ef79d51d03cf", size = 113795506, upload-time = "2026-05-20T14:52:06.61Z" }, + { url = "https://files.pythonhosted.org/packages/8d/74/05adf1f245de3b37518ba1e7e668cdc38ec0291313ab63fc0768089f8baa/jax_cuda13_pjrt-0.10.1-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:af8042c7697fb6faa0cc4851d4f5e0504878ea1f6b6fc067255f449016336a6f", size = 119552553, upload-time = "2026-05-20T14:52:11.087Z" }, +] + +[[package]] +name = "jax-cuda13-plugin" +version = "0.10.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jax-cuda13-pjrt", marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/cc/488c5ffece62d563063f1f026b590064cc34c8803c314d15e7c84f52eee1/jax_cuda13_plugin-0.10.1-cp311-cp311-manylinux_2_27_aarch64.whl", hash = "sha256:309a0727d975aed0d25a1f0af47c9259ce88b74f5e1b8ce12eff03c8573dff55", size = 7261264, upload-time = "2026-05-20T14:52:14.91Z" }, + { url = "https://files.pythonhosted.org/packages/14/ca/34a2d2bf5afc2f0cabfce279bfb1ffd1ffea87babd098a8a1ef7a8941a7c/jax_cuda13_plugin-0.10.1-cp311-cp311-manylinux_2_27_x86_64.whl", hash = "sha256:b77ba9e9b43cb5a56fe84eac904ab20013e6fd538a39828485e852fa4265f2a6", size = 7308740, upload-time = "2026-05-20T14:52:16.548Z" }, + { url = "https://files.pythonhosted.org/packages/88/1e/6f8135ac3f6dbee231392131cb278fabccbceddbc0a1a160a579bfe7b37a/jax_cuda13_plugin-0.10.1-cp312-cp312-manylinux_2_27_aarch64.whl", hash = "sha256:a4f8c2ad46fcf6edbe09b66578ec5fd7f8d189fcdb5d0a2500e473c5eebfc824", size = 7254249, upload-time = "2026-05-20T14:52:18.2Z" }, + { url = "https://files.pythonhosted.org/packages/2f/c2/6f9911b2a7f1f333320b3600118f13b57b43248288f2e4a3b276aa95c85e/jax_cuda13_plugin-0.10.1-cp312-cp312-manylinux_2_27_x86_64.whl", hash = "sha256:6799bf4e59574f5a49638fa4e1b6a43ddea75cc7eb19f726c4f6d94aa1e05cdd", size = 7306406, upload-time = "2026-05-20T14:52:20.056Z" }, + { url = "https://files.pythonhosted.org/packages/47/cf/d6d807cbbb4e61103291a34856b32766b252c96a39897bf4e0143942f030/jax_cuda13_plugin-0.10.1-cp313-cp313-manylinux_2_27_aarch64.whl", hash = "sha256:a31e7859ecebfa0680eca260ea64046d5c54c7596d734897526ebeb89d54e48b", size = 7255426, upload-time = "2026-05-20T14:52:21.663Z" }, + { url = "https://files.pythonhosted.org/packages/80/80/ec043edee9db3debf5074fe5fd0431c6fea3f94d1b9a53458b35cd30544d/jax_cuda13_plugin-0.10.1-cp313-cp313-manylinux_2_27_x86_64.whl", hash = "sha256:9070b1af00ebc7f5d6f20aafb789058f53812afd85e237dce0f1709a52cfd0f8", size = 7306050, upload-time = "2026-05-20T14:52:23.216Z" }, + { url = "https://files.pythonhosted.org/packages/44/94/d480e1fb807cf67c3796200dca01cbe4c75dfa82ce64460b90c944e218cf/jax_cuda13_plugin-0.10.1-cp313-cp313t-manylinux_2_27_aarch64.whl", hash = "sha256:6baea37967bd9759f5bc014d8d6291782332478f746302f46fd08a9009a23304", size = 7268591, upload-time = "2026-05-20T14:52:24.77Z" }, + { url = "https://files.pythonhosted.org/packages/3b/7f/da438722130ca56ec5b15a3318c477418088aaa818480280816e6ce6259d/jax_cuda13_plugin-0.10.1-cp313-cp313t-manylinux_2_27_x86_64.whl", hash = "sha256:699a984d67b040f6dd26bae1b9326d748c62cafee769a9050085f953b42db0e5", size = 7316498, upload-time = "2026-05-20T14:52:26.47Z" }, + { url = "https://files.pythonhosted.org/packages/02/e7/3a0194e0e6b74bf22e7bf4bd495042204aa5eaee278823780fc3aef9acb5/jax_cuda13_plugin-0.10.1-cp314-cp314-manylinux_2_27_aarch64.whl", hash = "sha256:b836b1eb29ae3e64d435def9c74b0ced435c3584cc17a29f3ff52c549274a059", size = 7256172, upload-time = "2026-05-20T14:52:28.037Z" }, + { url = "https://files.pythonhosted.org/packages/c2/0c/63c9e91d038ee0aaef39bed13efb526ed6bf5c4ced8d5ea5dcdd88868c34/jax_cuda13_plugin-0.10.1-cp314-cp314-manylinux_2_27_x86_64.whl", hash = "sha256:a556bd9e68155c7a8a43148fcdd2b582678e2270b86ea1749b1880be0aca7d2e", size = 7306774, upload-time = "2026-05-20T14:52:30.429Z" }, + { url = "https://files.pythonhosted.org/packages/9c/42/537fa75f685b90175c7e10239ec7ad713c759e6057c4d695719feaa1ebf2/jax_cuda13_plugin-0.10.1-cp314-cp314t-manylinux_2_27_aarch64.whl", hash = "sha256:ee4b25a4f00a696b2f45c2a3a4693aeeed4408914c3784496d747e6655172e20", size = 7269049, upload-time = "2026-05-20T14:52:32.302Z" }, + { url = "https://files.pythonhosted.org/packages/f4/c1/a40da5ef96b0d030a22f31c01e3b372e2f7527b85df592ca907d44824576/jax_cuda13_plugin-0.10.1-cp314-cp314t-manylinux_2_27_x86_64.whl", hash = "sha256:24315ca6d00c992125a5bd38471e1c3bd30c9d0f3c26286ca29fd82f29883452", size = 7317313, upload-time = "2026-05-20T14:52:33.894Z" }, +] + +[package.optional-dependencies] +with-cuda = [ + { name = "nvidia-cublas", marker = "(python_full_version >= '3.11' and sys_platform == 'linux') or (python_full_version < '3.11' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform != 'linux' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "nvidia-cuda-cupti", marker = "(python_full_version >= '3.11' and sys_platform == 'linux') or (python_full_version < '3.11' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform != 'linux' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "nvidia-cuda-nvcc", marker = "(python_full_version >= '3.11' and sys_platform == 'linux') or (python_full_version < '3.11' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform != 'linux' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "nvidia-cuda-nvrtc", marker = "(python_full_version >= '3.11' and sys_platform == 'linux') or (python_full_version < '3.11' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform != 'linux' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "nvidia-cuda-runtime", marker = "(python_full_version >= '3.11' and sys_platform == 'linux') or (python_full_version < '3.11' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform != 'linux' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "nvidia-cudnn-cu13", marker = "(python_full_version >= '3.11' and sys_platform == 'linux') or (python_full_version < '3.11' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform != 'linux' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "nvidia-cufft", marker = "(python_full_version >= '3.11' and sys_platform == 'linux') or (python_full_version < '3.11' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform != 'linux' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "nvidia-cusolver", marker = "(python_full_version >= '3.11' and sys_platform == 'linux') or (python_full_version < '3.11' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform != 'linux' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "nvidia-cusparse", marker = "(python_full_version >= '3.11' and sys_platform == 'linux') or (python_full_version < '3.11' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform != 'linux' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "nvidia-nccl-cu13", marker = "(python_full_version >= '3.11' and sys_platform == 'linux') or (python_full_version < '3.11' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform != 'linux' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "nvidia-nvjitlink", marker = "(python_full_version >= '3.11' and sys_platform == 'linux') or (python_full_version < '3.11' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform != 'linux' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "nvidia-nvshmem-cu13", marker = "(python_full_version >= '3.11' and sys_platform == 'linux') or (python_full_version < '3.11' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform != 'linux' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "nvidia-nvvm", marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, +] + [[package]] name = "jaxlib" version = "0.6.2" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version < '3.11'", + "python_full_version < '3.11' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and sys_platform != 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", ] dependencies = [ - { name = "ml-dtypes", marker = "python_full_version < '3.11'" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "ml-dtypes", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/15/c5/41598634c99cbebba46e6777286fb76abc449d33d50aeae5d36128ca8803/jaxlib-0.6.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:da4601b2b5dc8c23d6afb293eacfb9aec4e1d1871cb2f29c5a151d103e73b0f8", size = 54298019, upload-time = "2025-06-17T23:10:36.916Z" }, @@ -984,26 +1397,61 @@ name = "jaxlib" version = "0.10.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.15' and sys_platform == 'win32'", - "python_full_version >= '3.15' and sys_platform == 'emscripten'", - "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.14.*' and sys_platform == 'win32'", - "python_full_version == '3.14.*' and sys_platform == 'emscripten'", - "python_full_version == '3.14.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.13.*' and sys_platform == 'win32'", - "python_full_version == '3.13.*' and sys_platform == 'emscripten'", - "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.12.*' and sys_platform == 'win32'", - "python_full_version == '3.12.*' and sys_platform == 'emscripten'", - "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.11.*' and sys_platform == 'win32'", - "python_full_version == '3.11.*' and sys_platform == 'emscripten'", - "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.15' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", ] dependencies = [ - { name = "ml-dtypes", marker = "python_full_version >= '3.11'" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "ml-dtypes", marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/fb/e9/43253041a0b28f64a99dfa8a6823de415b1b9723dc8eb8718945bb957b1c/jaxlib-0.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ff0c82cb958d180d26687459962e262b6e1c90f239903c8253cc190067124db4", size = 60802893, upload-time = "2026-05-20T14:52:36.047Z" }, @@ -1404,13 +1852,13 @@ name = "matplotlib" version = "3.10.9" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "contourpy", version = "1.3.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "contourpy", version = "1.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "contourpy", version = "1.3.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "contourpy", version = "1.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, { name = "cycler" }, { name = "fonttools" }, { name = "kiwisolver" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, { name = "packaging" }, { name = "pillow" }, { name = "pyparsing" }, @@ -1510,7 +1958,7 @@ version = "1.6.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, - { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, { name = "ghp-import" }, { name = "jinja2" }, { name = "markdown" }, @@ -1581,7 +2029,7 @@ dependencies = [ { name = "griffelib" }, { name = "mkdocs-autorefs" }, { name = "mkdocstrings" }, - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/a4/b4/5fed370d8ebd96e4e399460a7146ae989263f16588b05a6facd6dbd51e60/mkdocstrings_python-2.0.4.tar.gz", hash = "sha256:58c73c5d358e64e9b1673447663f4a2f8a8941e392e225fc0a0c893758cc452f", size = 199219, upload-time = "2026-06-05T08:13:01.819Z" } wheels = [ @@ -1593,8 +2041,8 @@ name = "ml-dtypes" version = "0.5.4" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/0e/4a/c27b42ed9b1c7d13d9ba8b6905dece787d6259152f2309338aed29b2447b/ml_dtypes-0.5.4.tar.gz", hash = "sha256:8ab06a50fb9bf9666dd0fe5dfb4676fa2b0ac0f31ecff72a6c3af8e22c063453", size = 692314, upload-time = "2025-11-17T22:32:31.031Z" } wheels = [ @@ -1634,16 +2082,25 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ad/3f/3d42e9a78fe5edf792a83c074b13b9b770092a4fbf3462872f4303135f09/ml_dtypes-0.5.4-cp314-cp314t-win_arm64.whl", hash = "sha256:11942cbf2cf92157db91e5022633c0d9474d4dfd813a909383bd23ce828a4b7d", size = 168825, upload-time = "2025-11-17T22:32:23.766Z" }, ] +[[package]] +name = "mpmath" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/47/dd32fa426cc72114383ac549964eecb20ecfd886d1e5ccf5340b55b02f57/mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f", size = 508106, upload-time = "2023-03-07T16:47:11.061Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c", size = 536198, upload-time = "2023-03-07T16:47:09.197Z" }, +] + [[package]] name = "mypy" version = "2.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ast-serialize" }, - { name = "librt", marker = "platform_python_implementation != 'PyPy'" }, + { name = "librt", marker = "platform_python_implementation != 'PyPy' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, { name = "mypy-extensions" }, { name = "pathspec" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, + { name = "tomli", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, { name = "typing-extensions" }, ] sdist = { url = "https://files.pythonhosted.org/packages/82/15/cca9d88503549ed6fedeaa1d448cdddd542ee8a490232d732e278036fbf2/mypy-2.1.0.tar.gz", hash = "sha256:81e76ad12c2d804512e9b13240d1588316531bfba07558286078bfbce9613633", size = 3898359, upload-time = "2026-05-11T18:37:36.237Z" } @@ -1711,12 +2168,75 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195, upload-time = "2024-01-21T14:25:17.223Z" }, ] +[[package]] +name = "networkx" +version = "3.4.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and sys_platform != 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", +] +sdist = { url = "https://files.pythonhosted.org/packages/fd/1d/06475e1cd5264c0b870ea2cc6fdb3e37177c1e565c43f56ff17a10e3937f/networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1", size = 2151368, upload-time = "2024-10-21T12:39:38.695Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl", hash = "sha256:df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f", size = 1723263, upload-time = "2024-10-21T12:39:36.247Z" }, +] + +[[package]] +name = "networkx" +version = "3.6.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.15' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", +] +sdist = { url = "https://files.pythonhosted.org/packages/6a/51/63fe664f3908c97be9d2e4f1158eb633317598cfa6e1fc14af5383f17512/networkx-3.6.1.tar.gz", hash = "sha256:26b7c357accc0c8cde558ad486283728b65b6a95d85ee1cd66bafab4c8168509", size = 2517025, upload-time = "2025-12-08T17:02:39.908Z" } +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 = "numpy" version = "2.2.6" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version < '3.11'", + "python_full_version < '3.11' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and sys_platform != 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", ] sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440, upload-time = "2025-05-17T22:38:04.611Z" } wheels = [ @@ -1781,21 +2301,56 @@ name = "numpy" version = "2.4.6" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.15' and sys_platform == 'win32'", - "python_full_version >= '3.15' and sys_platform == 'emscripten'", - "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.14.*' and sys_platform == 'win32'", - "python_full_version == '3.14.*' and sys_platform == 'emscripten'", - "python_full_version == '3.14.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.13.*' and sys_platform == 'win32'", - "python_full_version == '3.13.*' and sys_platform == 'emscripten'", - "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.12.*' and sys_platform == 'win32'", - "python_full_version == '3.12.*' and sys_platform == 'emscripten'", - "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.11.*' and sys_platform == 'win32'", - "python_full_version == '3.11.*' and sys_platform == 'emscripten'", - "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.15' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", ] sdist = { url = "https://files.pythonhosted.org/packages/d0/ad/fed0499ce6a338d2a03ebae59cd15093910c8875328855781952abf6c2fe/numpy-2.4.6.tar.gz", hash = "sha256:f3a3570c4a2a16746ac2c31a7c7c7b0c186b95ce902e33db6f28094ed7387dda", size = 20735807, upload-time = "2026-05-18T23:37:14.07Z" } wheels = [ @@ -1873,43 +2428,571 @@ wheels = [ ] [[package]] -name = "opt-einsum" -version = "3.4.0" +name = "nvidia-cublas" +version = "13.1.1.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8c/b9/2ac072041e899a52f20cf9510850ff58295003aa75525e58343591b0cbfb/opt_einsum-3.4.0.tar.gz", hash = "sha256:96ca72f1b886d148241348783498194c577fa30a8faac108586b14f1ba4473ac", size = 63004, upload-time = "2024-09-26T14:33:24.483Z" } +dependencies = [ + { name = "nvidia-cuda-nvrtc", marker = "(python_full_version >= '3.11' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32') or (python_full_version >= '3.11' and sys_platform == 'darwin' and extra != 'extra-8-aerocore-torch-cpu') or (python_full_version < '3.11' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, +] wheels = [ - { url = "https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl", hash = "sha256:69bb92469f86a1565195ece4ac0323943e83477171b91d24c35afe028a90d7cd", size = 71932, upload-time = "2024-09-26T14:33:23.039Z" }, + { 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" }, + { url = "https://files.pythonhosted.org/packages/45/9e/2f562daf80eb8f7a685fb7bea4fda71f6048e4f359d6fdd1b6e70206cb2f/nvidia_cublas-13.1.1.3-py3-none-win_amd64.whl", hash = "sha256:b6cdce694e47ff6aadf0a69df1cab6628d696f5ff56e8d16af50309d855fa20f", size = 404358158, upload-time = "2026-04-08T18:47:26.987Z" }, ] [[package]] -name = "packaging" -version = "26.2" +name = "nvidia-cublas-cu12" +version = "12.9.2.10" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/f1/e7a6dd94a8d4a5626c03e4e99c87f241ba9e350cd9e6d75123f992427270/packaging-26.2.tar.gz", hash = "sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661", size = 228134, upload-time = "2026-04-24T20:15:23.917Z" } +dependencies = [ + { name = "nvidia-cuda-nvrtc-cu12", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, +] wheels = [ - { url = "https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl", hash = "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e", size = 100195, upload-time = "2026-04-24T20:15:22.081Z" }, + { url = "https://files.pythonhosted.org/packages/f7/a2/c96163a0fff1839c0c9548bbdeae7b853b867009e33b9b9264adc238b1cf/nvidia_cublas_cu12-12.9.2.10-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:5572131a59c3eebeeb1c4c8144f772d49372c20124916e072a0e3fc30df421d5", size = 575012079, upload-time = "2026-04-08T18:51:47.303Z" }, + { url = "https://files.pythonhosted.org/packages/cb/c0/0a517bfe63ccd3b92eb254d264e28fca3c7cab75d07daea315250fb1bf73/nvidia_cublas_cu12-12.9.2.10-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:e4f53a8ca8c5d6e8c492d0d0a3d565ecb59a751b19cfdaa4f6da0ab2104c1702", size = 581240110, upload-time = "2026-04-08T18:52:31.532Z" }, + { url = "https://files.pythonhosted.org/packages/20/e2/fc9a0e985249d873150276d5afb02e39a66817fedbf1a385724393e505ed/nvidia_cublas_cu12-12.9.2.10-py3-none-win_amd64.whl", hash = "sha256:623f43027d40d44ceadf0043f002bd25cf353e8f13ce90b9a87057019f560661", size = 553162896, upload-time = "2026-04-08T18:53:10.035Z" }, ] [[package]] -name = "pandas" -version = "2.3.3" +name = "nvidia-cuda-cccl-cu12" +version = "12.9.27" source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version < '3.11'", +wheels = [ + { url = "https://files.pythonhosted.org/packages/61/7e/82e49956b046bdc506c789235c587d9b3ef58b8bc1782258c1e247229647/nvidia_cuda_cccl_cu12-12.9.27-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d7898b38aa68beaa234d48f0868273702342a196d6e2e9d0ef058dca2390ebea", size = 3152245, upload-time = "2025-05-01T19:32:04.802Z" }, + { url = "https://files.pythonhosted.org/packages/18/2a/d4cd8506d2044e082f8cd921be57392e6a9b5ccd3ffdf050362430a3d5d5/nvidia_cuda_cccl_cu12-12.9.27-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:37869e17ce2e1ecec6eddf1927cca0f8c34e64fd848d40453df559091e2d7117", size = 3152243, upload-time = "2025-05-01T19:32:13.955Z" }, + { url = "https://files.pythonhosted.org/packages/ce/9b/1daf405620c7ac371b76b823c6336dd742673d41a150d9a04eec2c690379/nvidia_cuda_cccl_cu12-12.9.27-py3-none-win_amd64.whl", hash = "sha256:72106f95a9bb3be18472806b4f663ebf0f9248a86d14b4ae3305725b855d9d92", size = 3152175, upload-time = "2025-05-01T19:45:11.372Z" }, +] + +[[package]] +name = "nvidia-cuda-crt" +version = "13.3.73" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fa/41/2089e411507d66458d67208bdd1bc562d492bb6458c3d2aea4603072a219/nvidia_cuda_crt-13.3.73-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:60aacc0b5e1e8b40c62abe4d1ab16440add91b99bd2f17f62dd091586b73d166", size = 157353, upload-time = "2026-06-29T16:42:38.163Z" }, + { url = "https://files.pythonhosted.org/packages/7e/ce/16d76f4b5b3f7460f5ebd17516685495c149c66651ffdd381f90e4d4e65c/nvidia_cuda_crt-13.3.73-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:df14a17ae1c5c3171265411212246654d780f89344ea85344466c6b955247543", size = 157352, upload-time = "2026-06-29T16:43:09.209Z" }, + { url = "https://files.pythonhosted.org/packages/49/b3/6791ffba6f4b8e0d3ed875285aad8078ee407afa464ecd934ae298c205b1/nvidia_cuda_crt-13.3.73-py3-none-win_amd64.whl", hash = "sha256:af04e75148db1f0eea30958f33a9ec5a5a2dc2afa99ca4323f9a93b840602ca5", size = 158286, upload-time = "2026-06-29T17:09:28.621Z" }, +] + +[[package]] +name = "nvidia-cuda-cupti" +version = "13.0.85" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { 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" }, + { url = "https://files.pythonhosted.org/packages/ad/df/b74b10025c1205695c5676373f2edd3e87a7202cc62ead0dfbc373b0f6ea/nvidia_cuda_cupti-13.0.85-py3-none-win_amd64.whl", hash = "sha256:683f58d301548deeefcb8f6fac1b8d907691b9d8b18eccab417f51e362102f00", size = 7736776, upload-time = "2025-09-04T08:38:08.38Z" }, +] + +[[package]] +name = "nvidia-cuda-cupti-cu12" +version = "12.9.79" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b4/78/351b5c8cdbd9a6b4fb0d6ee73fb176dcdc1b6b6ad47c2ffff5ae8ca4a1f7/nvidia_cuda_cupti_cu12-12.9.79-py3-none-manylinux_2_25_aarch64.whl", hash = "sha256:791853b030602c6a11d08b5578edfb957cadea06e9d3b26adbf8d036135a4afe", size = 10077166, upload-time = "2025-06-05T20:01:01.385Z" }, + { url = "https://files.pythonhosted.org/packages/c1/2e/b84e32197e33f39907b455b83395a017e697c07a449a2b15fd07fc1c9981/nvidia_cuda_cupti_cu12-12.9.79-py3-none-manylinux_2_25_x86_64.whl", hash = "sha256:096bcf334f13e1984ba36685ad4c1d6347db214de03dbb6eebb237b41d9d934f", size = 10814997, upload-time = "2025-06-05T20:01:10.168Z" }, + { url = "https://files.pythonhosted.org/packages/3b/b4/298983ab1a83de500f77d0add86d16d63b19d1a82c59f8eaf04f90445703/nvidia_cuda_cupti_cu12-12.9.79-py3-none-win_amd64.whl", hash = "sha256:1848a9380067560d5bee10ed240eecc22991713e672c0515f9c3d9396adf93c8", size = 7730496, upload-time = "2025-06-05T20:11:26.444Z" }, ] + +[[package]] +name = "nvidia-cuda-nvcc" +version = "13.3.73" +source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "python-dateutil", marker = "python_full_version < '3.11'" }, - { name = "pytz", marker = "python_full_version < '3.11'" }, - { name = "tzdata", marker = "python_full_version < '3.11'" }, + { name = "nvidia-cuda-crt", marker = "(python_full_version >= '3.11' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32') or (python_full_version >= '3.11' and sys_platform == 'darwin' and extra != 'extra-8-aerocore-torch-cpu') or (python_full_version < '3.11' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "nvidia-cuda-runtime", marker = "(python_full_version >= '3.11' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32') or (python_full_version >= '3.11' and sys_platform == 'darwin' and extra != 'extra-8-aerocore-torch-cpu') or (python_full_version < '3.11' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "nvidia-nvvm", marker = "(python_full_version >= '3.11' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32') or (python_full_version >= '3.11' and sys_platform == 'darwin' and extra != 'extra-8-aerocore-torch-cpu') or (python_full_version < '3.11' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/33/01/d40b85317f86cf08d853a4f495195c73815fdf205eef3993821720274518/pandas-2.3.3.tar.gz", hash = "sha256:e05e1af93b977f7eafa636d043f9f94c7ee3ac81af99c13508215942e64c993b", size = 4495223, upload-time = "2025-09-29T23:34:51.853Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3d/f7/f425a00df4fcc22b292c6895c6831c0c8ae1d9fac1e024d16f98a9ce8749/pandas-2.3.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:376c6446ae31770764215a6c937f72d917f214b43560603cd60da6408f183b6c", size = 11555763, upload-time = "2025-09-29T23:16:53.287Z" }, - { url = "https://files.pythonhosted.org/packages/13/4f/66d99628ff8ce7857aca52fed8f0066ce209f96be2fede6cef9f84e8d04f/pandas-2.3.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e19d192383eab2f4ceb30b412b22ea30690c9e618f78870357ae1d682912015a", size = 10801217, upload-time = "2025-09-29T23:17:04.522Z" }, - { url = "https://files.pythonhosted.org/packages/1d/03/3fc4a529a7710f890a239cc496fc6d50ad4a0995657dccc1d64695adb9f4/pandas-2.3.3-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5caf26f64126b6c7aec964f74266f435afef1c1b13da3b0636c7518a1fa3e2b1", size = 12148791, upload-time = "2025-09-29T23:17:18.444Z" }, - { url = "https://files.pythonhosted.org/packages/40/a8/4dac1f8f8235e5d25b9955d02ff6f29396191d4e665d71122c3722ca83c5/pandas-2.3.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dd7478f1463441ae4ca7308a70e90b33470fa593429f9d4c578dd00d1fa78838", size = 12769373, upload-time = "2025-09-29T23:17:35.846Z" }, - { url = "https://files.pythonhosted.org/packages/df/91/82cc5169b6b25440a7fc0ef3a694582418d875c8e3ebf796a6d6470aa578/pandas-2.3.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4793891684806ae50d1288c9bae9330293ab4e083ccd1c5e383c34549c6e4250", size = 13200444, upload-time = "2025-09-29T23:17:49.341Z" }, + { url = "https://files.pythonhosted.org/packages/5c/14/9f5cdc994d5431e2f08f62ffe34509e7feabd1f2e18517e2d7720c6ff0fd/nvidia_cuda_nvcc-13.3.73-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:70f250825355d2c3aa6c7a972a0ec00f020bad66d2679e527eb4336301c904aa", size = 39515578, upload-time = "2026-06-29T16:47:40.318Z" }, + { url = "https://files.pythonhosted.org/packages/83/19/e46ef3597ba47a9f8a91ab24533db42a600b659fc418dbe4af0b630bcb41/nvidia_cuda_nvcc-13.3.73-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f483af83166c4fa356a21606076d553b0b4ceaebbd9912e537545080db695bdd", size = 44942138, upload-time = "2026-06-29T16:48:13.615Z" }, + { url = "https://files.pythonhosted.org/packages/79/89/97eb797bb8bdee1d4e74069d072c24b79ae90c012fa3b539f2a7ccecf6cf/nvidia_cuda_nvcc-13.3.73-py3-none-win_amd64.whl", hash = "sha256:3d9da631bcac3dee49d1357b84cd05abe56aa3ccf76b05a7df8a80ef78addcb5", size = 32536529, upload-time = "2026-06-29T17:11:25.455Z" }, +] + +[[package]] +name = "nvidia-cuda-nvcc-cu12" +version = "12.9.86" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/48/b54a06168a2190572a312bfe4ce443687773eb61367ced31e064953dd2f7/nvidia_cuda_nvcc_cu12-12.9.86-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:5d6a0d32fdc7ea39917c20065614ae93add6f577d840233237ff08e9a38f58f0", size = 40546229, upload-time = "2025-06-05T20:01:53.357Z" }, + { url = "https://files.pythonhosted.org/packages/d6/5c/8cc072436787104bbbcbde1f76ab4a0d89e68f7cebc758dd2ad7913a43d0/nvidia_cuda_nvcc_cu12-12.9.86-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:44e1eca4d08926193a558d2434b1bf83d57b4d5743e0c431c0c83d51da1df62b", size = 39411138, upload-time = "2025-06-05T20:01:43.182Z" }, + { url = "https://files.pythonhosted.org/packages/d2/9e/c71c53655a65d7531c89421c282359e2f626838762f1ce6180ea0bbebd29/nvidia_cuda_nvcc_cu12-12.9.86-py3-none-win_amd64.whl", hash = "sha256:8ed7f0b17dea662755395be029376db3b94fed5cbb17c2d35cc866c5b1b84099", size = 34669845, upload-time = "2025-06-05T20:11:56.308Z" }, +] + +[[package]] +name = "nvidia-cuda-nvrtc" +version = "13.0.88" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { 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" }, + { url = "https://files.pythonhosted.org/packages/4a/af/345fedb9f4c76c84ab4fa445b36bd4048a4d9db60e6bc76b4f913ff4b852/nvidia_cuda_nvrtc-13.0.88-py3-none-win_amd64.whl", hash = "sha256:6bcd4e7f8e205cbe644f5a98f2f799bef9556fefc89dd786e79a16312ce49872", size = 76807835, upload-time = "2025-09-04T08:39:15.274Z" }, +] + +[[package]] +name = "nvidia-cuda-nvrtc-cu12" +version = "12.9.86" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b8/85/e4af82cc9202023862090bfca4ea827d533329e925c758f0cde964cb54b7/nvidia_cuda_nvrtc_cu12-12.9.86-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:210cf05005a447e29214e9ce50851e83fc5f4358df8b453155d5e1918094dcb4", size = 89568129, upload-time = "2025-06-05T20:02:41.973Z" }, + { url = "https://files.pythonhosted.org/packages/64/eb/c2295044b8f3b3b08860e2f6a912b702fc92568a167259df5dddb78f325e/nvidia_cuda_nvrtc_cu12-12.9.86-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:096d4de6bda726415dfaf3198d4f5c522b8e70139c97feef5cd2ca6d4cd9cead", size = 44528905, upload-time = "2025-06-05T20:02:29.754Z" }, + { url = "https://files.pythonhosted.org/packages/52/de/823919be3b9d0ccbf1f784035423c5f18f4267fb0123558d58b813c6ec86/nvidia_cuda_nvrtc_cu12-12.9.86-py3-none-win_amd64.whl", hash = "sha256:72972ebdcf504d69462d3bcd67e7b81edd25d0fb85a2c46d3ea3517666636349", size = 76408187, upload-time = "2025-06-05T20:12:27.819Z" }, +] + +[[package]] +name = "nvidia-cuda-runtime" +version = "13.0.96" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { 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" }, + { url = "https://files.pythonhosted.org/packages/b7/94/6b867483bec07da24ffa32736c79fabb94ef3a7af4d787a9d4a974868576/nvidia_cuda_runtime-13.0.96-py3-none-win_amd64.whl", hash = "sha256:f79298c8a098cec150a597c8eba58ecdab96e3bdc4b9bc4f9983635031740492", size = 2927037, upload-time = "2025-10-09T09:04:23.782Z" }, +] + +[[package]] +name = "nvidia-cuda-runtime-cu12" +version = "12.9.79" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bc/e0/0279bd94539fda525e0c8538db29b72a5a8495b0c12173113471d28bce78/nvidia_cuda_runtime_cu12-12.9.79-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:83469a846206f2a733db0c42e223589ab62fd2fabac4432d2f8802de4bded0a4", size = 3515012, upload-time = "2025-06-05T20:00:35.519Z" }, + { url = "https://files.pythonhosted.org/packages/bc/46/a92db19b8309581092a3add7e6fceb4c301a3fd233969856a8cbf042cd3c/nvidia_cuda_runtime_cu12-12.9.79-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:25bba2dfb01d48a9b59ca474a1ac43c6ebf7011f1b0b8cc44f54eb6ac48a96c3", size = 3493179, upload-time = "2025-06-05T20:00:53.735Z" }, + { url = "https://files.pythonhosted.org/packages/59/df/e7c3a360be4f7b93cee39271b792669baeb3846c58a4df6dfcf187a7ffab/nvidia_cuda_runtime_cu12-12.9.79-py3-none-win_amd64.whl", hash = "sha256:8e018af8fa02363876860388bd10ccb89eb9ab8fb0aa749aaf58430a9f7c4891", size = 3591604, upload-time = "2025-06-05T20:11:17.036Z" }, +] + +[[package]] +name = "nvidia-cudnn-cu12" +version = "9.24.0.43" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-cublas-cu12", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/9c/f1/cd42563325fa827f54ff30da05686c747652bdbd4cb5654cea54d7d0ad4f/nvidia_cudnn_cu12-9.24.0.43-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:a42996943f0cd78ddfd61c8bf59361672a19b63e0491aa22a53d6fe63a3f854a", size = 856490582, upload-time = "2026-07-02T16:21:30.924Z" }, + { url = "https://files.pythonhosted.org/packages/10/13/b8887c869cf2471339a24b60d3c28e761facbb534935f572b61423371abb/nvidia_cudnn_cu12-9.24.0.43-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:f424192dd85e7d29f44be18df2dae4c80d32c67a29c0d42f5c283c40cfdf871c", size = 799083985, upload-time = "2026-07-02T16:25:37.467Z" }, + { url = "https://files.pythonhosted.org/packages/29/28/2c9a2a97a8b3fedcf74a14f38fd5edfae12274380a829fdc6b16ce29be4c/nvidia_cudnn_cu12-9.24.0.43-py3-none-win_amd64.whl", hash = "sha256:cbd41a0ab084422c936dc9fb2fc89be5ea9a85bc421c6f23d0243bdfc945fbef", size = 737103728, upload-time = "2026-07-02T16:30:10.901Z" }, +] + +[[package]] +name = "nvidia-cudnn-cu13" +version = "9.20.0.48" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-cublas", marker = "(python_full_version >= '3.11' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32') or (python_full_version >= '3.11' and sys_platform == 'darwin' and extra != 'extra-8-aerocore-torch-cpu') or (python_full_version < '3.11' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, +] +wheels = [ + { 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" }, + { url = "https://files.pythonhosted.org/packages/78/39/21507455b1bca8b5702a9e9fc6ce73735f216f558dac2c9ede58e4d456b8/nvidia_cudnn_cu13-9.20.0.48-py3-none-win_amd64.whl", hash = "sha256:af8139732b99c0118be65ea5aac97f0d46018f8c552889e49d2fb0c6261a4a24", size = 350712614, upload-time = "2026-03-09T19:31:11.398Z" }, +] + +[[package]] +name = "nvidia-cufft" +version = "12.0.0.61" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-nvjitlink", marker = "(python_full_version >= '3.11' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32') or (python_full_version >= '3.11' and sys_platform == 'darwin' and extra != 'extra-8-aerocore-torch-cpu') or (python_full_version < '3.11' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, +] +wheels = [ + { 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" }, + { url = "https://files.pythonhosted.org/packages/85/b2/f8af21a2ed1beed337a6a02c5a28aeb85441f4d578ec3d529543c775ea4b/nvidia_cufft-12.0.0.61-py3-none-win_amd64.whl", hash = "sha256:2abce5b39d2f5ae12730fb7e5db6696533e36c26e2d3e8fd1750bdd2853364eb", size = 213342123, upload-time = "2025-09-04T08:40:51.145Z" }, +] + +[[package]] +name = "nvidia-cufft-cu12" +version = "11.4.1.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-nvjitlink-cu12", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/2b/76445b0af890da61b501fde30650a1a4bd910607261b209cccb5235d3daa/nvidia_cufft_cu12-11.4.1.4-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1a28c9b12260a1aa7a8fd12f5ebd82d027963d635ba82ff39a1acfa7c4c0fbcf", size = 200822453, upload-time = "2025-06-05T20:05:27.889Z" }, + { url = "https://files.pythonhosted.org/packages/95/f4/61e6996dd20481ee834f57a8e9dca28b1869366a135e0d42e2aa8493bdd4/nvidia_cufft_cu12-11.4.1.4-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c67884f2a7d276b4b80eb56a79322a95df592ae5e765cf1243693365ccab4e28", size = 200877592, upload-time = "2025-06-05T20:05:45.862Z" }, + { url = "https://files.pythonhosted.org/packages/20/ee/29955203338515b940bd4f60ffdbc073428f25ef9bfbce44c9a066aedc5c/nvidia_cufft_cu12-11.4.1.4-py3-none-win_amd64.whl", hash = "sha256:8e5bfaac795e93f80611f807d42844e8e27e340e0cde270dcb6c65386d795b80", size = 200067309, upload-time = "2025-06-05T20:13:59.762Z" }, +] + +[[package]] +name = "nvidia-cufile" +version = "1.15.1.6" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { 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" +version = "10.4.0.35" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { 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" }, + { url = "https://files.pythonhosted.org/packages/99/27/72103153b1ffc00e09fdc40ac970235343dcd1ea8bd762e84d2d73219ffa/nvidia_curand-10.4.0.35-py3-none-win_amd64.whl", hash = "sha256:65b1710aa6961d326b411e314b374290904c5ddf41dc3f766ebc3f1d7d4ca69f", size = 55242481, upload-time = "2025-08-04T10:30:41.831Z" }, +] + +[[package]] +name = "nvidia-cusolver" +version = "12.0.4.66" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-cublas", marker = "(python_full_version >= '3.11' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32') or (python_full_version >= '3.11' and sys_platform == 'darwin' and extra != 'extra-8-aerocore-torch-cpu') or (python_full_version < '3.11' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "nvidia-cusparse", marker = "(python_full_version >= '3.11' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32') or (python_full_version >= '3.11' and sys_platform == 'darwin' and extra != 'extra-8-aerocore-torch-cpu') or (python_full_version < '3.11' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "nvidia-nvjitlink", marker = "(python_full_version >= '3.11' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32') or (python_full_version >= '3.11' and sys_platform == 'darwin' and extra != 'extra-8-aerocore-torch-cpu') or (python_full_version < '3.11' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, +] +wheels = [ + { 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" }, + { url = "https://files.pythonhosted.org/packages/99/ef/332a0101260ca78a1daef046bf0b06199e8ed4dac1d2aa698289c358169c/nvidia_cusolver-12.0.4.66-py3-none-win_amd64.whl", hash = "sha256:16515bd33a8e76bb54d024cfa068fa68d30e80fc34b9e1090813ea9362e0cb65", size = 193551444, upload-time = "2025-09-04T08:41:46.813Z" }, +] + +[[package]] +name = "nvidia-cusolver-cu12" +version = "11.7.5.82" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-cublas-cu12", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "nvidia-cusparse-cu12", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "nvidia-nvjitlink-cu12", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/99/686ff9bf3a82a531c62b1a5c614476e8dfa24a9d89067aeedf3592ee4538/nvidia_cusolver_cu12-11.7.5.82-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:62efa83e4ace59a4c734d052bb72158e888aa7b770e1a5f601682f16fe5b4fd2", size = 337869834, upload-time = "2025-06-05T20:06:53.125Z" }, + { url = "https://files.pythonhosted.org/packages/33/40/79b0c64d44d6c166c0964ec1d803d067f4a145cca23e23925fd351d0e642/nvidia_cusolver_cu12-11.7.5.82-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:15da72d1340d29b5b3cf3fd100e3cd53421dde36002eda6ed93811af63c40d88", size = 338117415, upload-time = "2025-06-05T20:07:16.809Z" }, + { url = "https://files.pythonhosted.org/packages/32/5d/feb7f86b809f89b14193beffebe24cf2e4bf7af08372ab8cdd34d19a65a0/nvidia_cusolver_cu12-11.7.5.82-py3-none-win_amd64.whl", hash = "sha256:77666337237716783c6269a658dea310195cddbd80a5b2919b1ba8735cec8efd", size = 326215953, upload-time = "2025-06-05T20:14:41.76Z" }, +] + +[[package]] +name = "nvidia-cusparse" +version = "12.6.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-nvjitlink", marker = "(python_full_version >= '3.11' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32') or (python_full_version >= '3.11' and sys_platform == 'darwin' and extra != 'extra-8-aerocore-torch-cpu') or (python_full_version < '3.11' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, +] +wheels = [ + { 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" }, + { url = "https://files.pythonhosted.org/packages/02/b0/b043d6f3480f102f885cf87fc3ffd3edcb5e23b855025a50e2ef4d059185/nvidia_cusparse-12.6.3.3-py3-none-win_amd64.whl", hash = "sha256:cbcf42feb737bd7ec15b4c0a63e62351886bd3f975027b8815d7f720a2b5ea79", size = 143783033, upload-time = "2025-09-04T08:42:12.391Z" }, +] + +[[package]] +name = "nvidia-cusparse-cu12" +version = "12.5.10.65" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-nvjitlink-cu12", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/5e/6f/8710fbd17cdd1d0fc3fea7d36d5b65ce1933611c31e1861da330206b253a/nvidia_cusparse_cu12-12.5.10.65-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:221c73e7482dd93eda44e65ce567c031c07e2f93f6fa0ecd3ba876a195023e83", size = 366359408, upload-time = "2025-06-05T20:07:42.501Z" }, + { url = "https://files.pythonhosted.org/packages/12/46/b0fd4b04f86577921feb97d8e2cf028afe04f614d17fb5013de9282c9216/nvidia_cusparse_cu12-12.5.10.65-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:73060ce019ac064a057267c585bf1fd5a353734151f87472ff02b2c5c9984e78", size = 366465088, upload-time = "2025-06-05T20:08:20.413Z" }, + { url = "https://files.pythonhosted.org/packages/73/ef/063500c25670fbd1cbb0cd3eb7c8a061585b53adb4dd8bf3492bb49b0df3/nvidia_cusparse_cu12-12.5.10.65-py3-none-win_amd64.whl", hash = "sha256:9e487468a22a1eaf1fbd1d2035936a905feb79c4ce5c2f67626764ee4f90227c", size = 362504719, upload-time = "2025-06-05T20:15:17.947Z" }, +] + +[[package]] +name = "nvidia-cusparselt-cu13" +version = "0.8.1" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { 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" }, + { url = "https://files.pythonhosted.org/packages/31/83/f3647ce26916c94a6ca4ff1810623e2c405cff2dea6e78d29516b2514df9/nvidia_cusparselt_cu13-0.8.1-py3-none-win_amd64.whl", hash = "sha256:dccbd362f91a7b9024d1f55ee9f548ac065027ff15d8c8b0db889ab3a8f31215", size = 156885108, upload-time = "2025-09-05T18:51:35.958Z" }, +] + +[[package]] +name = "nvidia-nccl-cu12" +version = "2.30.7" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/8c/554bb020501d6c04ad8127d83f728137f8f9123f991666efbdcf9095a221/nvidia_nccl_cu12-2.30.7-py3-none-manylinux_2_18_aarch64.whl", hash = "sha256:03ecd776fd1d58fd2c9a0a687dcf8db9ecd0057382dba646fa3d65786d4a9ea1", size = 303277471, upload-time = "2026-06-09T03:24:16.327Z" }, + { url = "https://files.pythonhosted.org/packages/50/32/e7ffa9c324ae260e5dbb4af2cd557bf7a8d155c8ac7b79a785fe1796fb92/nvidia_nccl_cu12-2.30.7-py3-none-manylinux_2_18_x86_64.whl", hash = "sha256:8ce1b8213f61f2bfac132e6df890af6450b77cbd140c6ce4e98cb0c2d8e678c9", size = 303361239, upload-time = "2026-06-09T03:24:53.816Z" }, +] + +[[package]] +name = "nvidia-nccl-cu13" +version = "2.29.7" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { 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" +version = "13.0.88" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { 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" }, + { url = "https://files.pythonhosted.org/packages/e4/01/07530b0e37546231052e30234540289c42eaffa486f1a34a87fed340157b/nvidia_nvjitlink-13.0.88-py3-none-win_amd64.whl", hash = "sha256:634e96e3da9ef845ae744097a1f289238ecf946ce0b82e93cdce14b9782e682f", size = 36035115, upload-time = "2025-09-04T08:43:03.001Z" }, +] + +[[package]] +name = "nvidia-nvjitlink-cu12" +version = "12.9.86" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/0c/c75bbfb967457a0b7670b8ad267bfc4fffdf341c074e0a80db06c24ccfd4/nvidia_nvjitlink_cu12-12.9.86-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:e3f1171dbdc83c5932a45f0f4c99180a70de9bd2718c1ab77d14104f6d7147f9", size = 39748338, upload-time = "2025-06-05T20:10:25.613Z" }, + { url = "https://files.pythonhosted.org/packages/97/bc/2dcba8e70cf3115b400fef54f213bcd6715a3195eba000f8330f11e40c45/nvidia_nvjitlink_cu12-12.9.86-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:994a05ef08ef4b0b299829cde613a424382aff7efb08a7172c1fa616cc3af2ca", size = 39514880, upload-time = "2025-06-05T20:10:04.89Z" }, + { url = "https://files.pythonhosted.org/packages/dd/7e/2eecb277d8a98184d881fb98a738363fd4f14577a4d2d7f8264266e82623/nvidia_nvjitlink_cu12-12.9.86-py3-none-win_amd64.whl", hash = "sha256:cc6fcec260ca843c10e34c936921a1c426b351753587fdd638e8cff7b16bb9db", size = 35584936, upload-time = "2025-06-05T20:16:08.525Z" }, +] + +[[package]] +name = "nvidia-nvshmem-cu12" +version = "3.7.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nvidia-cuda-cccl-cu12", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/d8/9a/a60b98b629e3b7c4ef6385b08c0e169f2048382c75476f377da54b83a8ca/nvidia_nvshmem_cu12-3.7.1-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7de83f2aa2b58570b4058543fd3c3e992c19f96571380d46ec9b00e0062c6015", size = 229879072, upload-time = "2026-06-30T19:25:39.671Z" }, + { url = "https://files.pythonhosted.org/packages/61/a2/d1d065914f1860782171c6bd2e5eabcbe4488c66352b468569a6b69d4bf6/nvidia_nvshmem_cu12-3.7.1-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:faca8717c321f088d3c17490fbfc682bac214986e80b97e232c5ae94f900c45c", size = 230087166, upload-time = "2026-06-30T19:26:24.652Z" }, +] + +[[package]] +name = "nvidia-nvshmem-cu13" +version = "3.4.5" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { 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" }, + { url = "https://files.pythonhosted.org/packages/d2/50/0e2220f8620a177de994211186ffc5bfa9f2ce1e1282797f8f90096f9f88/nvidia_nvtx-13.0.85-py3-none-win_amd64.whl", hash = "sha256:d66ea44254dd3c6eacc300047af6e1288d2269dd072b417e0adffbf479e18519", size = 137066, upload-time = "2025-09-04T08:39:25.649Z" }, +] + +[[package]] +name = "nvidia-nvvm" +version = "13.3.73" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f3/e7/ff646aa6015c7e6d12aad234e68925c87b6681d8d18c3ac40535994a3b0d/nvidia_nvvm-13.3.73-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:0e28e0858a3475e11ac67d35301cd5bf82666a1c0dc4ec4e80ceaf3a5fd1dea8", size = 69250424, upload-time = "2026-06-29T17:08:07.453Z" }, + { url = "https://files.pythonhosted.org/packages/2f/05/35754a7105563fd9b496e5ee8e1acd986aef8258760c3cbccf419aee861a/nvidia_nvvm-13.3.73-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e2bcdd5783b5481445f1f0e7170cb836cc0d72999839ba850bbba6dc97b76bb8", size = 66984478, upload-time = "2026-06-29T17:07:43.765Z" }, + { url = "https://files.pythonhosted.org/packages/ad/6b/d5756f485012b920475cbc01457c1b9a7d0485bfb04b92598c5e1ef3e9ab/nvidia_nvvm-13.3.73-py3-none-win_amd64.whl", hash = "sha256:b5c91dfa59ee4cee90b2dfb19c6203f31c914b9c9b5ca10726c2da7cf8ed401d", size = 59981103, upload-time = "2026-06-29T17:21:43.334Z" }, +] + +[[package]] +name = "onnx" +version = "1.22.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ml-dtypes" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "protobuf" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/04/19/8ea73a64b368b75fe339771a20a02bc61ea1f551484c9e3d9d0bfbd0450f/onnx-1.22.0.tar.gz", hash = "sha256:ef40c0aaf0b643857ea9306fc7eddce17eaf9fb0407e4801f1fc5758443a38e0", size = 12024721, upload-time = "2026-06-15T12:50:05.354Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/04/471f234e2716c83f17a26e1b50cd64c39428373e91dd018aafb3d499c108/onnx-1.22.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:6d0ffffd63a4ecc21ddaeddd5bf02099cb701aa4243f2de00122726869065ca4", size = 20167110, upload-time = "2026-06-15T12:48:59.152Z" }, + { url = "https://files.pythonhosted.org/packages/99/40/540a2fe3c49ce1709ff2015de20d9a351264fb442f8998f92cf0ba7e279e/onnx-1.22.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:33ce94119bbb7f05d9caea4ea7549f5185a54369f6bbc9f70171bd5ee6935bbc", size = 18892738, upload-time = "2026-06-15T12:49:02.139Z" }, + { url = "https://files.pythonhosted.org/packages/f8/0c/f41d5b89c38fb2ec410ab23c24fa110af786093b140644f7f953e436743b/onnx-1.22.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:87a3077958f66f9a26dec10077ac28326d9cec2cbe1f0b040947243449754573", size = 19110354, upload-time = "2026-06-15T12:49:05.031Z" }, + { url = "https://files.pythonhosted.org/packages/11/8e/9f41d132855e93c2808cdd4afab1b5af67bd5e82e4a4fa9248006e4df87e/onnx-1.22.0-cp310-cp310-win32.whl", hash = "sha256:8a5eccce2d5fc6c5046928a9aa7cdd9750ea4a586f8de341d3d40d820c35fdec", size = 17083595, upload-time = "2026-06-15T12:49:08.599Z" }, + { url = "https://files.pythonhosted.org/packages/e8/52/86caff81786a5428485795c79175ae2b12a630795bcb267b84e5f9e98450/onnx-1.22.0-cp310-cp310-win_amd64.whl", hash = "sha256:5c1c0408a9d4b4df33851672e5fc7590b96301ee123396d608f9ab6f045ab06b", size = 17215270, upload-time = "2026-06-15T12:49:11.483Z" }, + { url = "https://files.pythonhosted.org/packages/0c/55/30825c02c92a0380ce84c3feeeec95d329fa77548ba58cb10ad4bbfd83c6/onnx-1.22.0-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:2d8f229a553fa440fe623ed7b36fca5e7762da3af871c3f8f8ce451df73e2914", size = 20167891, upload-time = "2026-06-15T12:49:14.212Z" }, + { url = "https://files.pythonhosted.org/packages/4b/24/cd4ab52ecaf41c3fbed674772ccbfe39041cb257b8471a47a37e48bff3f8/onnx-1.22.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a1a89a7cb9ba13d78f009bdec448ec82a98972589734f157022a2bff7a5973a6", size = 18892720, upload-time = "2026-06-15T12:49:16.904Z" }, + { url = "https://files.pythonhosted.org/packages/2b/a0/c9d9d56ceadb1c0a90a7cbec5a0510520ab6538938944fa84548e4b5b054/onnx-1.22.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1d0a2bdb15eb2b3cb65c438f3423d9620d14fdce32f92380e6bb1b2e09568ef5", size = 19110720, upload-time = "2026-06-15T12:49:19.812Z" }, + { url = "https://files.pythonhosted.org/packages/0a/6e/e43e5a68d9cadde55df75310027f87127333a77e5ddcea14c73e96a10cac/onnx-1.22.0-cp311-cp311-win32.whl", hash = "sha256:239958534464612fbcb6ed23d5228aaa925b39b8773f58726809ffdccb4edd1c", size = 17083746, upload-time = "2026-06-15T12:49:22.935Z" }, + { url = "https://files.pythonhosted.org/packages/54/57/cc0a9f2cf4522e42829d089927b4b75924d32f50dca237482e7b741df003/onnx-1.22.0-cp311-cp311-win_amd64.whl", hash = "sha256:8561a2c00041c07e08db0c228593b5b4694100398685f348532af7dbb84189da", size = 17215684, upload-time = "2026-06-15T12:49:26.084Z" }, + { url = "https://files.pythonhosted.org/packages/c9/99/0f049f9eaa06c8383060c5f0a338e3a6caac8822e6e326c9162f05abf95a/onnx-1.22.0-cp311-cp311-win_arm64.whl", hash = "sha256:8907b9b9389893bc0dc6314cc00ee1e3a69844e48d689eacc6a0340411a7da58", size = 17210398, upload-time = "2026-06-15T12:49:29.091Z" }, + { url = "https://files.pythonhosted.org/packages/ee/6a/481561f1093834376ed493e4ca42a73e5be0d50031f2969c86593bdc7c96/onnx-1.22.0-cp312-abi3-macosx_12_0_universal2.whl", hash = "sha256:596fbf0490947533c1c1045ba860851dc9fb77471023dac9a71ba5b42ceab103", size = 20167081, upload-time = "2026-06-15T12:49:32.078Z" }, + { url = "https://files.pythonhosted.org/packages/84/55/b34fc2aa30aa54b4a775402d24c4082242c720283a274fe976ac8eb94480/onnx-1.22.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ae5a563f281cd9d2845622cecf6c092a57e4ee1b138f66fdbbdd4200567a5e16", size = 18889249, upload-time = "2026-06-15T12:49:34.7Z" }, + { url = "https://files.pythonhosted.org/packages/09/a6/bd32357e6cc1ecb473afd78193d7231724f284435d2db25696ecfaaa1503/onnx-1.22.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:955e02e1f6d385b53d52f9cd7b9cdf5caf417c300bcfe3c64c6d542be763845b", size = 19106514, upload-time = "2026-06-15T12:49:37.424Z" }, + { url = "https://files.pythonhosted.org/packages/5a/9d/3af461ac6c714b8b369cb71499659932f4f12cfb066250b62f7567c3d530/onnx-1.22.0-cp312-abi3-pyemscripten_2025_0_wasm32.whl", hash = "sha256:82e9f27fc1223cb06d68a56bed6f9d3caf3d0dad1b61bce45006d529b15bd94c", size = 16966387, upload-time = "2026-06-15T12:49:40.918Z" }, + { url = "https://files.pythonhosted.org/packages/d0/f0/68195b5e5a53e333faf2660f5352ee43738d0e42fc5216cc6b1871a9fbfb/onnx-1.22.0-cp312-abi3-win32.whl", hash = "sha256:cc8b66b312f8f03a53e268afb67180a2d97dd12cc79e2b61361c6c0073448016", size = 17081568, upload-time = "2026-06-15T12:49:43.398Z" }, + { url = "https://files.pythonhosted.org/packages/13/a8/734725bb703c5fabb687f79c79e51249475212b3eb37771ac4a4ac9b487f/onnx-1.22.0-cp312-abi3-win_amd64.whl", hash = "sha256:72ccebab3bac07215c204ce8848d42e78eaaa666badbf72d25cd359b9f269e3a", size = 17213290, upload-time = "2026-06-15T12:49:45.933Z" }, + { url = "https://files.pythonhosted.org/packages/bd/2a/8ce48d8ae26a8761ad4e5dc771961b155c5c3c7c8540ec7f2f2d71b69af0/onnx-1.22.0-cp312-abi3-win_arm64.whl", hash = "sha256:f3c120dcdb70ad738f3c061b32798f408ea299eb69f84dd69ab4a6bf3c2ec01f", size = 17207030, upload-time = "2026-06-15T12:49:48.635Z" }, + { url = "https://files.pythonhosted.org/packages/f3/13/47323b97846387848efb1044ded11bb94b83526f3d1fbdb37c6480d4520f/onnx-1.22.0-cp314-cp314t-macosx_12_0_universal2.whl", hash = "sha256:19e45e4af88e3fe3261458d4b8cc461957ae2782a358a3560503569bf3b23b72", size = 20176465, upload-time = "2026-06-15T12:49:51.311Z" }, + { url = "https://files.pythonhosted.org/packages/13/0c/d3b8a7e7eee123938586c608bb9894b5723f2342b9450c0eec59fbec7099/onnx-1.22.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c21a0e59fd967a95b358e4a6e756d1f1eec2d304a83480f329f66e30d2bf0223", size = 18894028, upload-time = "2026-06-15T12:49:54.451Z" }, + { url = "https://files.pythonhosted.org/packages/b8/8a/da2a97ab46fe6e0cd9beb3ac14603a22f5be492f9ca347faf8233a07bb33/onnx-1.22.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2632406b8f523ef2e2873c363f90b20a3d88c0fbcfac757d3addffccf8f452c2", size = 19110420, upload-time = "2026-06-15T12:49:57.665Z" }, + { url = "https://files.pythonhosted.org/packages/b9/a3/ce984063017518307ebfaa545782fc400e593dc2d7fdf4f23ce4be1ed197/onnx-1.22.0-cp314-cp314t-win_amd64.whl", hash = "sha256:a3a39fc4643867aecb33417fdddb11e308ee79d2d4a584b9d50cc7aec2091b13", size = 17237547, upload-time = "2026-06-15T12:50:00.382Z" }, + { url = "https://files.pythonhosted.org/packages/00/50/257a880384a1dd502d543b0067945074d63cd17d0840e958355bc8197da8/onnx-1.22.0-cp314-cp314t-win_arm64.whl", hash = "sha256:8e268cdc0547e3949799ffd4a44451dc2b9080b57d0824a2db680b6ec65506f0", size = 17231391, upload-time = "2026-06-15T12:50:03.047Z" }, +] + +[[package]] +name = "onnx-ir" +version = "0.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ml-dtypes" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "onnx" }, + { name = "sympy" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/35/e6/672fefb2f108d077f58181a7babf4c0f8d1182a30353ffc9c79c63afc5ee/onnx_ir-0.2.1.tar.gz", hash = "sha256:8b8b10a93f43e65962104de6070c43c5dacb0e3cdfefc7c8059dd83c9db64f35", size = 144279, upload-time = "2026-04-20T20:21:47.735Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8c/aa/f7a53321c60b9ad9ee184b6018292ed6b5389947592a2c8c09c736bb7f9e/onnx_ir-0.2.1-py3-none-any.whl", hash = "sha256:c7285da889312f91882de2092e298a9eeeefbfc1d1951c49d983992967eb09a7", size = 166792, upload-time = "2026-04-20T20:21:46.357Z" }, +] + +[[package]] +name = "onnxruntime-gpu" +version = "1.24.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and sys_platform != 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", +] +dependencies = [ + { name = "flatbuffers", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "packaging", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "protobuf", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "sympy", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/28/f4/c8050f3f4916ab6c75432724f0ba51c1548dc1c3d66d40c0f8a9611e370f/onnxruntime_gpu-1.24.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ac922633819e1cdc81c9b3a28b5e37d788805307bbaa708a01a3d7150e345625", size = 252750845, upload-time = "2026-03-05T16:35:33.604Z" }, + { url = "https://files.pythonhosted.org/packages/07/b7/81e8936354651915192a362a1718253c6d03da6b902a95237aa392b1d260/onnxruntime_gpu-1.24.3-cp311-cp311-win_amd64.whl", hash = "sha256:0fe6ece3042db149f36f4991cbebd19a690b7ffd82af89450a261b47f4704a37", size = 207192429, upload-time = "2026-03-05T16:39:57.015Z" }, + { url = "https://files.pythonhosted.org/packages/24/fa/58ceca812214c9c1a286407c376e42e0b7de3e2c6e14b61cdf3caf6d6d9c/onnxruntime_gpu-1.24.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:537bdd6d95006a9200ae81f2e73ba9e621e723fdf0deb5901e2e62fb2cccf876", size = 252756089, upload-time = "2026-03-05T16:35:46.004Z" }, + { url = "https://files.pythonhosted.org/packages/3c/07/2f36920b513bd8939e25591153e37d9cfda94115bd119f2874da0750fce2/onnxruntime_gpu-1.24.3-cp312-cp312-win_amd64.whl", hash = "sha256:d72065b3ab5fdaef74d8b6b8f39b7ce20d89731610e3e63cb40e997d3dce177e", size = 207197001, upload-time = "2026-03-05T16:40:05.691Z" }, + { url = "https://files.pythonhosted.org/packages/49/57/9e6206dac76e08f028d2ae95f2ab1b3a7c3317fb6c0374a530aad48dab5c/onnxruntime_gpu-1.24.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3242a70010934e5bb0aeaa9dde4c25c6c2da577b55c6308c0caa828ba3b7be23", size = 252753349, upload-time = "2026-03-05T16:35:58.09Z" }, + { url = "https://files.pythonhosted.org/packages/4e/ae/f0be395602c13a3a8d22fa6632133550a64536c58bc3623abbba5d0a575e/onnxruntime_gpu-1.24.3-cp313-cp313-win_amd64.whl", hash = "sha256:a423b164dbc26cb7f8736367b11698c2a7294748d3c144c39542ecac28d225c9", size = 207197331, upload-time = "2026-03-05T16:40:14.944Z" }, + { url = "https://files.pythonhosted.org/packages/b4/af/a64c9789769d8d7fabc6d35dcce2f2897b2d9e0fe113044efc2903f7cd07/onnxruntime_gpu-1.24.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9696d54974a1313ef0d87f4cbd04f9abfd13839194638d52bb5967a15615341d", size = 252762923, upload-time = "2026-03-05T16:36:10.043Z" }, + { url = "https://files.pythonhosted.org/packages/c1/bb/1cf7dffac2fb01e8de9f0882438165f7543f0aab57f86d1f587e6faa8528/onnxruntime_gpu-1.24.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8ca744f40b33380bc9136988213e574c927d2b919ed42149977e006b138f74f", size = 252754914, upload-time = "2026-03-05T16:36:30.739Z" }, + { url = "https://files.pythonhosted.org/packages/cf/39/3949d56103bd9cd9381de59b060f9bce8dc2c7363f465bf207ebd0c7a5d0/onnxruntime_gpu-1.24.3-cp314-cp314-win_amd64.whl", hash = "sha256:c60c44e2b388720e6670a948b52626f3d089e960ef7da66e4fa6b2b33a11116f", size = 209599131, upload-time = "2026-03-05T16:40:24.074Z" }, + { url = "https://files.pythonhosted.org/packages/f3/60/51bfbcf2d0540dbfa426a73a9b80046b71a63de7303d16c0f2682c8edfd2/onnxruntime_gpu-1.24.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:29048407a2398361d93de5537c2d2079d79d720337a0743d4a2cc28db981e776", size = 252764115, upload-time = "2026-03-05T16:36:44.681Z" }, +] + +[[package]] +name = "onnxruntime-gpu" +version = "1.27.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.15' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", +] +dependencies = [ + { name = "flatbuffers", marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "packaging", marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "protobuf", marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/89/d5/372193dd3fddfd1fbeb0bf39aa41a27d1b12e4877570cb746635047d68a9/onnxruntime_gpu-1.27.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:404fb845dc06a04a28df5a2c6d5967bcf3f534e7df0b98507ff81686a1b49594", size = 220287841, upload-time = "2026-06-18T18:27:13.823Z" }, + { url = "https://files.pythonhosted.org/packages/e6/fd/f754a292136deebe4fba28443374f6c5f6dcb6a125270755dd54473dce06/onnxruntime_gpu-1.27.0-cp311-cp311-win_amd64.whl", hash = "sha256:c68799b35fc4818e6c1d50f5270681bf5ab8a652ac118e11a987b23f488e18dd", size = 213618726, upload-time = "2026-06-15T22:42:50.855Z" }, + { url = "https://files.pythonhosted.org/packages/23/9b/2f31fa1d95dbe4e16522d76ec4d6db7f05ae7fb2c59f40bac414203aa0f8/onnxruntime_gpu-1.27.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b2b8d6afabf3c23c2c698639a16388816dc7298f388a9ddddf504b283990ea01", size = 220305746, upload-time = "2026-06-18T18:27:22.319Z" }, + { url = "https://files.pythonhosted.org/packages/91/65/cf76bd5b261a295f2257a39d9cd89876e5544531bc97f45732d9cb9ddff2/onnxruntime_gpu-1.27.0-cp312-cp312-win_amd64.whl", hash = "sha256:9f92c12578433cffa6017ec843f4b4c500b9ebaf65f6c4497ddec01af5cd5396", size = 213631079, upload-time = "2026-06-15T22:43:01.35Z" }, + { url = "https://files.pythonhosted.org/packages/8f/8d/6509743801131f1d3791f638ae31edef7701e93c7a4523d74115247dd7d1/onnxruntime_gpu-1.27.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7e6eb554d35706ee154b583dd32e4167a93aa55d3670f59754f43860fd649b92", size = 220304092, upload-time = "2026-06-18T18:27:31.18Z" }, + { url = "https://files.pythonhosted.org/packages/ac/86/8865182eba89cde187163daacfa7f1eb64958616cd080dfb3482be4c8a36/onnxruntime_gpu-1.27.0-cp313-cp313-win_amd64.whl", hash = "sha256:ac352199fb6ac3e366b45a690bb47c9b1c92b1be0e3958149dd1a30285832b9f", size = 213623636, upload-time = "2026-06-15T22:43:10.548Z" }, + { url = "https://files.pythonhosted.org/packages/cf/e6/16f5ba0f91bd8db5b2881ef1ec57d532c8f297b31b6a95ceab606f471c0a/onnxruntime_gpu-1.27.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b5652761f14bc74729ffbc8fdc01767e541e163459f2e10aa65af61d5db64c8", size = 220331411, upload-time = "2026-06-18T18:27:39.738Z" }, + { url = "https://files.pythonhosted.org/packages/d7/97/5584057e355e5d8de3ae5cdd81e946ad2c9d8253626614eac805750645af/onnxruntime_gpu-1.27.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:209caede76604509fb7451178f56daa5292a933478864aaff87c6c29d1257593", size = 220303692, upload-time = "2026-06-18T18:27:48.183Z" }, + { url = "https://files.pythonhosted.org/packages/93/7f/6446c80d38ee2c8ec82365f44f1a842993f497da9ebf46a6b37c2ef4d2b7/onnxruntime_gpu-1.27.0-cp314-cp314-win_amd64.whl", hash = "sha256:986b94d513b052dc06b93c5a424f072f07f40d66be40ce2d6320d76d84fa4919", size = 214270425, upload-time = "2026-06-15T22:43:20.017Z" }, + { url = "https://files.pythonhosted.org/packages/83/06/e1b690df1c70772d76464c5d8b2d11b436ade1cf93a061303cdf9d72b3bf/onnxruntime_gpu-1.27.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:42696d6137d6974325a67c88a65dd41625e49bf076da79c658514b498b297142", size = 220327139, upload-time = "2026-06-18T18:27:59.096Z" }, +] + +[[package]] +name = "onnxscript" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ml-dtypes" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "onnx" }, + { name = "onnx-ir" }, + { name = "packaging" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c4/3a/4d79bce3f460e0df7fed54a92ce80827f25da66511da368bb00783ad8d20/onnxscript-0.7.1.tar.gz", hash = "sha256:309fb86484b11fa4ded90dba580e0d63f1a0827588e521cecaf2eeddb46d6e86", size = 618160, upload-time = "2026-06-29T23:33:21.526Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dd/bd/a0c8e737b6afda10e42a597787d53d5b66e00268df6f59184701eeae37d9/onnxscript-0.7.1-py3-none-any.whl", hash = "sha256:544763b7fdef49940cdd9412ff5135cbae96d59ac6bc1921457f21280f40f4b7", size = 721970, upload-time = "2026-06-29T23:33:23.298Z" }, +] + +[[package]] +name = "opt-einsum" +version = "3.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8c/b9/2ac072041e899a52f20cf9510850ff58295003aa75525e58343591b0cbfb/opt_einsum-3.4.0.tar.gz", hash = "sha256:96ca72f1b886d148241348783498194c577fa30a8faac108586b14f1ba4473ac", size = 63004, upload-time = "2024-09-26T14:33:24.483Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl", hash = "sha256:69bb92469f86a1565195ece4ac0323943e83477171b91d24c35afe028a90d7cd", size = 71932, upload-time = "2024-09-26T14:33:23.039Z" }, +] + +[[package]] +name = "packaging" +version = "26.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/f1/e7a6dd94a8d4a5626c03e4e99c87f241ba9e350cd9e6d75123f992427270/packaging-26.2.tar.gz", hash = "sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661", size = 228134, upload-time = "2026-04-24T20:15:23.917Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl", hash = "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e", size = 100195, upload-time = "2026-04-24T20:15:22.081Z" }, +] + +[[package]] +name = "pandas" +version = "2.3.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and sys_platform != 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", +] +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "python-dateutil", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "pytz", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "tzdata", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/33/01/d40b85317f86cf08d853a4f495195c73815fdf205eef3993821720274518/pandas-2.3.3.tar.gz", hash = "sha256:e05e1af93b977f7eafa636d043f9f94c7ee3ac81af99c13508215942e64c993b", size = 4495223, upload-time = "2025-09-29T23:34:51.853Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/f7/f425a00df4fcc22b292c6895c6831c0c8ae1d9fac1e024d16f98a9ce8749/pandas-2.3.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:376c6446ae31770764215a6c937f72d917f214b43560603cd60da6408f183b6c", size = 11555763, upload-time = "2025-09-29T23:16:53.287Z" }, + { url = "https://files.pythonhosted.org/packages/13/4f/66d99628ff8ce7857aca52fed8f0066ce209f96be2fede6cef9f84e8d04f/pandas-2.3.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e19d192383eab2f4ceb30b412b22ea30690c9e618f78870357ae1d682912015a", size = 10801217, upload-time = "2025-09-29T23:17:04.522Z" }, + { url = "https://files.pythonhosted.org/packages/1d/03/3fc4a529a7710f890a239cc496fc6d50ad4a0995657dccc1d64695adb9f4/pandas-2.3.3-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5caf26f64126b6c7aec964f74266f435afef1c1b13da3b0636c7518a1fa3e2b1", size = 12148791, upload-time = "2025-09-29T23:17:18.444Z" }, + { url = "https://files.pythonhosted.org/packages/40/a8/4dac1f8f8235e5d25b9955d02ff6f29396191d4e665d71122c3722ca83c5/pandas-2.3.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dd7478f1463441ae4ca7308a70e90b33470fa593429f9d4c578dd00d1fa78838", size = 12769373, upload-time = "2025-09-29T23:17:35.846Z" }, + { url = "https://files.pythonhosted.org/packages/df/91/82cc5169b6b25440a7fc0ef3a694582418d875c8e3ebf796a6d6470aa578/pandas-2.3.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4793891684806ae50d1288c9bae9330293ab4e083ccd1c5e383c34549c6e4250", size = 13200444, upload-time = "2025-09-29T23:17:49.341Z" }, { url = "https://files.pythonhosted.org/packages/10/ae/89b3283800ab58f7af2952704078555fa60c807fff764395bb57ea0b0dbd/pandas-2.3.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:28083c648d9a99a5dd035ec125d42439c6c1c525098c58af0fc38dd1a7a1b3d4", size = 13858459, upload-time = "2025-09-29T23:18:03.722Z" }, { url = "https://files.pythonhosted.org/packages/85/72/530900610650f54a35a19476eca5104f38555afccda1aa11a92ee14cb21d/pandas-2.3.3-cp310-cp310-win_amd64.whl", hash = "sha256:503cf027cf9940d2ceaa1a93cfb5f8c8c7e6e90720a2850378f0b3f3b1e06826", size = 11346086, upload-time = "2025-09-29T23:18:18.505Z" }, { url = "https://files.pythonhosted.org/packages/c1/fa/7ac648108144a095b4fb6aa3de1954689f7af60a14cf25583f4960ecb878/pandas-2.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:602b8615ebcc4a0c1751e71840428ddebeb142ec02c786e8ad6b1ce3c8dec523", size = 11578790, upload-time = "2025-09-29T23:18:30.065Z" }, @@ -1959,26 +3042,61 @@ name = "pandas" version = "3.0.3" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.15' and sys_platform == 'win32'", - "python_full_version >= '3.15' and sys_platform == 'emscripten'", - "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.14.*' and sys_platform == 'win32'", - "python_full_version == '3.14.*' and sys_platform == 'emscripten'", - "python_full_version == '3.14.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.13.*' and sys_platform == 'win32'", - "python_full_version == '3.13.*' and sys_platform == 'emscripten'", - "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.12.*' and sys_platform == 'win32'", - "python_full_version == '3.12.*' and sys_platform == 'emscripten'", - "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.11.*' and sys_platform == 'win32'", - "python_full_version == '3.11.*' and sys_platform == 'emscripten'", - "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.15' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", ] dependencies = [ - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "python-dateutil", marker = "python_full_version >= '3.11'" }, - { name = "tzdata", marker = "(python_full_version >= '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.11' and sys_platform == 'win32')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "python-dateutil", marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "tzdata", marker = "(python_full_version >= '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.11' and sys_platform == 'win32') or (sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/f8/87/4341c6252d1c47b08768c3d25ac487362bf403f0313ddae4a2a26c9b1b4c/pandas-3.0.3.tar.gz", hash = "sha256:696a4a00a2a2a35d4e5deb3fc946641b96c944f02230e4f76137fe35d806c4fc", size = 4651414, upload-time = "2026-05-11T18:54:29.21Z" } wheels = [ @@ -2054,7 +3172,7 @@ name = "pexpect" version = "4.9.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "ptyprocess", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'emscripten' and sys_platform != 'win32')" }, + { name = "ptyprocess", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (sys_platform != 'emscripten' and sys_platform != 'win32') or (sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload-time = "2023-11-25T09:07:26.339Z" } wheels = [ @@ -2222,6 +3340,21 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl", hash = "sha256:9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955", size = 391431, upload-time = "2025-08-27T15:23:59.498Z" }, ] +[[package]] +name = "protobuf" +version = "7.35.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/da/01/9ef0afd7999eb9badb3a768b4aedd78c86d4c65cfaf1958ab276199e76b4/protobuf-7.35.1.tar.gz", hash = "sha256:ce115a26fe0c39a2c29973d914d327e516a6455464489fe3cd1e51a1b354f81a", size = 458717, upload-time = "2026-06-11T21:55:40.257Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/03/8aeeb7458d22546bf64b5250ca1daeb5ff757d900e8e4a7476c6f0db843e/protobuf-7.35.1-cp310-abi3-macosx_10_9_universal2.whl", hash = "sha256:24f857477359a85c0c235261b8ba905fd51b2562f4a64ca1df5473f29850cbf6", size = 433226, upload-time = "2026-06-11T21:55:31.719Z" }, + { url = "https://files.pythonhosted.org/packages/37/4b/dfb89eb0e652a1ff073c39a59fb5e3a83cfe9b57a2c83fa6d78270101767/protobuf-7.35.1-cp310-abi3-manylinux2014_aarch64.whl", hash = "sha256:11d6b0ec246892d85215b0a13ca6e0233cf5284b68f0ac02646427f4ff88a799", size = 328847, upload-time = "2026-06-11T21:55:34.035Z" }, + { url = "https://files.pythonhosted.org/packages/0f/58/dc12f2cd484951524af6e3382c785869b9b3fb5e52ee95ae23add53ee8f9/protobuf-7.35.1-cp310-abi3-manylinux2014_s390x.whl", hash = "sha256:b73f9489a4b8b1c9cb1f8ed951c736392592edb24b9d6819f36d2e10b171d5b4", size = 344030, upload-time = "2026-06-11T21:55:34.941Z" }, + { url = "https://files.pythonhosted.org/packages/e4/be/5b3cfe508bfab6761414ff944e3366eb13be4fd71efcd69450f89ba39f43/protobuf-7.35.1-cp310-abi3-manylinux2014_x86_64.whl", hash = "sha256:74758715c53d7158fb76caf4f0cfdacc5329a4b1bb994f865d6cf302d413a1c4", size = 327130, upload-time = "2026-06-11T21:55:35.921Z" }, + { url = "https://files.pythonhosted.org/packages/d8/bc/6d6c7ba8709c85f8f2c390b2b118d6fb08a783676a572271851bf45a7d22/protobuf-7.35.1-cp310-abi3-win32.whl", hash = "sha256:353652e4efd0bca5b5fc2656abf8307ef351f0cf938c9eba09f0e09c20a25c30", size = 428945, upload-time = "2026-06-11T21:55:37.034Z" }, + { url = "https://files.pythonhosted.org/packages/0a/19/8d0cb6f20a1ef7b18f1c8986ad5783f22f84cce39c6ce9a6e645ea55192e/protobuf-7.35.1-cp310-abi3-win_amd64.whl", hash = "sha256:230a75ddfc2de4806e56696ce9640c1cdfdb6543b7cfce98d42a4c0a0e7bdb87", size = 439996, upload-time = "2026-06-11T21:55:38.123Z" }, + { url = "https://files.pythonhosted.org/packages/19/c7/5f7c636ec43e0c545e28d1f1db71990108306f7bdcb89f069ba97e428e7f/protobuf-7.35.1-py3-none-any.whl", hash = "sha256:4bc97768d8fe4ad6743c8a19403e314511ed9f6d13205b687e52421c023ac1b9", size = 171659, upload-time = "2026-06-11T21:55:39.155Z" }, +] + [[package]] name = "psutil" version = "7.2.2" @@ -2313,13 +3446,13 @@ name = "pytest" version = "9.0.3" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "exceptiongroup", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, { name = "iniconfig" }, { name = "packaging" }, { name = "pluggy" }, { name = "pygments" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, + { name = "tomli", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/7d/0d/549bd94f1a0a402dc8cf64563a117c0f3765662e2e668477624baeec44d5/pytest-9.0.3.tar.gz", hash = "sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c", size = 1572165, upload-time = "2026-04-07T17:16:18.027Z" } wheels = [ @@ -2428,7 +3561,7 @@ name = "pyzmq" version = "27.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "cffi", marker = "implementation_name == 'pypy'" }, + { name = "cffi", marker = "implementation_name == 'pypy' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/04/0b/3c9baedbdf613ecaa7aa07027780b8867f57b6293b6ee50de316c9f3222b/pyzmq-27.1.0.tar.gz", hash = "sha256:ac0765e3d44455adb6ddbf4417dcce460fc40a05978c08efdf2948072f6db540", size = 281750, upload-time = "2025-09-08T23:10:18.157Z" } wheels = [ @@ -2539,10 +3672,13 @@ name = "scipy" version = "1.15.3" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version < '3.11'", + "python_full_version < '3.11' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and sys_platform != 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", ] dependencies = [ - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/0f/37/6964b830433e654ec7485e45a00fc9a27cf868d622838f6b6d9c5ec0d532/scipy-1.15.3.tar.gz", hash = "sha256:eae3cf522bc7df64b42cad3925c876e1b0b6c35c1337c93e12c0f366f55b0eaf", size = 59419214, upload-time = "2025-05-08T16:13:05.955Z" } wheels = [ @@ -2598,24 +3734,59 @@ name = "scipy" version = "1.17.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.15' and sys_platform == 'win32'", - "python_full_version >= '3.15' and sys_platform == 'emscripten'", - "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.14.*' and sys_platform == 'win32'", - "python_full_version == '3.14.*' and sys_platform == 'emscripten'", - "python_full_version == '3.14.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.13.*' and sys_platform == 'win32'", - "python_full_version == '3.13.*' and sys_platform == 'emscripten'", - "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.12.*' and sys_platform == 'win32'", - "python_full_version == '3.12.*' and sys_platform == 'emscripten'", - "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.11.*' and sys_platform == 'win32'", - "python_full_version == '3.11.*' and sys_platform == 'emscripten'", - "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.15' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", ] dependencies = [ - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/7a/97/5a3609c4f8d58b039179648e62dd220f89864f56f7357f5d4f45c29eb2cc/scipy-1.17.1.tar.gz", hash = "sha256:95d8e012d8cb8816c226aef832200b1d45109ed4464303e997c5b13122b297c0", size = 30573822, upload-time = "2026-02-23T00:26:24.851Z" } wheels = [ @@ -2681,6 +3852,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/07/39/338d9219c4e87f3e708f18857ecd24d22a0c3094752393319553096b98af/scipy-1.17.1-cp314-cp314t-win_arm64.whl", hash = "sha256:200e1050faffacc162be6a486a984a0497866ec54149a01270adc8a59b7c7d21", size = 25489165, upload-time = "2026-02-23T00:22:29.563Z" }, ] +[[package]] +name = "setuptools" +version = "81.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0d/1c/73e719955c59b8e424d015ab450f51c0af856ae46ea2da83eba51cc88de1/setuptools-81.0.0.tar.gz", hash = "sha256:487b53915f52501f0a79ccfd0c02c165ffe06631443a886740b91af4b7a5845a", size = 1198299, upload-time = "2026-02-06T21:10:39.601Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/e3/c164c88b2e5ce7b24d667b9bd83589cf4f3520d97cad01534cd3c4f55fdb/setuptools-81.0.0-py3-none-any.whl", hash = "sha256:fdd925d5c5d9f62e4b74b30d6dd7828ce236fd6ed998a08d81de62ce5a6310d6", size = 1062021, upload-time = "2026-02-06T21:10:37.175Z" }, +] + [[package]] name = "shellingham" version = "1.5.4" @@ -2713,6 +3893,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload-time = "2023-09-30T13:58:03.53Z" }, ] +[[package]] +name = "sympy" +version = "1.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mpmath" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/83/d3/803453b36afefb7c2bb238361cd4ae6125a569b4db67cd9e79846ba2d68c/sympy-1.14.0.tar.gz", hash = "sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517", size = 7793921, upload-time = "2025-04-27T18:05:01.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl", hash = "sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5", size = 6299353, upload-time = "2025-04-27T18:04:59.103Z" }, +] + [[package]] name = "tomli" version = "2.4.1" @@ -2767,6 +3959,167 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/7b/61/cceae43728b7de99d9b847560c262873a1f6c98202171fd5ed62640b494b/tomli-2.4.1-py3-none-any.whl", hash = "sha256:0d85819802132122da43cb86656f8d1f8c6587d54ae7dcaf30e90533028b49fe", size = 14583, upload-time = "2026-03-25T20:22:03.012Z" }, ] +[[package]] +name = "torch" +version = "2.13.0" +source = { registry = "https://download.pytorch.org/whl/cpu" } +resolution-markers = [ + "python_full_version == '3.14.*' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version < '3.11' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "filelock", marker = "python_full_version < '3.15' and sys_platform == 'darwin'" }, + { name = "fsspec", marker = "python_full_version < '3.15' and sys_platform == 'darwin'" }, + { name = "jinja2", marker = "python_full_version < '3.15' and sys_platform == 'darwin'" }, + { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu') or (python_full_version >= '3.11' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform != 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "networkx", version = "3.6.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and python_full_version < '3.15' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu') or (python_full_version < '3.11' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (python_full_version >= '3.15' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform != 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "setuptools", marker = "python_full_version < '3.15' and sys_platform == 'darwin'" }, + { name = "sympy", marker = "python_full_version < '3.15' and sys_platform == 'darwin'" }, + { name = "typing-extensions", marker = "python_full_version < '3.15' and sys_platform == 'darwin'" }, +] +wheels = [ + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:94f0de129916f77b8dc2c7a8eff644cfeddfe59e39c9f55e9f6e17543410281d", upload-time = "2026-07-08T12:26:07Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:e76f9bcecc52b8ff711239a2f7547d5353df95878ab232f0773c1d95928b92f8", upload-time = "2026-07-08T12:26:13Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:2fe228aba290d14b9f31b049be550dbd469c3fd3013d7a19705b30454da97027", upload-time = "2026-07-08T12:26:18Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:33449899ce5496c1b84b4853179d94fd102028ae1407314d9fb956bb79e70d09", upload-time = "2026-07-08T12:26:23Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:d849b390e07d8d333ce8ecaf91b273c656c598379a19c9acf1318a883f6b391c", upload-time = "2026-07-08T12:26:28Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:c28def70706c2f9ecc752574766e8ae4da9b810ab6676b611166761a78a9f1e1", upload-time = "2026-07-08T12:26:33Z" }, +] + +[[package]] +name = "torch" +version = "2.13.0+cpu" +source = { registry = "https://download.pytorch.org/whl/cpu" } +resolution-markers = [ + "python_full_version >= '3.15' and sys_platform == 'win32'", + "python_full_version >= '3.15' and sys_platform == 'emscripten'", + "python_full_version >= '3.15' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.14.*' and sys_platform == 'win32'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten'", + "python_full_version == '3.14.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten'", + "python_full_version == '3.13.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten'", + "python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.15' and sys_platform == 'darwin'", + "python_full_version < '3.11' and sys_platform != 'darwin'", +] +dependencies = [ + { name = "filelock", marker = "python_full_version >= '3.15' or sys_platform != 'darwin'" }, + { name = "fsspec", marker = "python_full_version >= '3.15' or sys_platform != 'darwin'" }, + { name = "jinja2", marker = "python_full_version >= '3.15' or sys_platform != 'darwin'" }, + { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and sys_platform != 'darwin' and extra == 'extra-8-aerocore-torch-cpu') or (python_full_version >= '3.11' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "networkx", version = "3.6.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and sys_platform != 'darwin' and extra == 'extra-8-aerocore-torch-cpu') or (python_full_version >= '3.15' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu') or (python_full_version < '3.15' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu') or (sys_platform != 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "setuptools", marker = "python_full_version >= '3.15' or sys_platform != 'darwin'" }, + { name = "sympy", marker = "python_full_version >= '3.15' or sys_platform != 'darwin'" }, + { name = "typing-extensions", marker = "python_full_version >= '3.15' or sys_platform != 'darwin'" }, +] +wheels = [ + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0%2Bcpu-cp310-cp310-linux_s390x.whl", upload-time = "2026-07-08T11:15:29Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0%2Bcpu-cp310-cp310-manylinux_2_28_aarch64.whl", upload-time = "2026-07-08T11:15:29Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0%2Bcpu-cp310-cp310-manylinux_2_28_x86_64.whl", upload-time = "2026-07-08T11:15:29Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0%2Bcpu-cp310-cp310-win_amd64.whl", upload-time = "2026-07-08T11:15:29Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0%2Bcpu-cp311-cp311-linux_s390x.whl", upload-time = "2026-07-08T11:15:29Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0%2Bcpu-cp311-cp311-manylinux_2_28_aarch64.whl", upload-time = "2026-07-08T11:15:32Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0%2Bcpu-cp311-cp311-manylinux_2_28_x86_64.whl", upload-time = "2026-07-08T11:15:32Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0%2Bcpu-cp311-cp311-win_amd64.whl", upload-time = "2026-07-08T11:15:33Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0%2Bcpu-cp311-cp311-win_arm64.whl", upload-time = "2026-07-08T11:15:33Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0%2Bcpu-cp312-cp312-linux_s390x.whl", upload-time = "2026-07-08T11:15:33Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0%2Bcpu-cp312-cp312-manylinux_2_28_aarch64.whl", upload-time = "2026-07-08T11:15:35Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl", upload-time = "2026-07-08T11:15:36Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0%2Bcpu-cp312-cp312-win_amd64.whl", upload-time = "2026-07-08T11:15:36Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0%2Bcpu-cp312-cp312-win_arm64.whl", upload-time = "2026-07-08T11:15:37Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0%2Bcpu-cp313-cp313-linux_s390x.whl", upload-time = "2026-07-08T11:15:37Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0%2Bcpu-cp313-cp313-manylinux_2_28_aarch64.whl", upload-time = "2026-07-08T11:15:39Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0%2Bcpu-cp313-cp313-manylinux_2_28_x86_64.whl", upload-time = "2026-07-08T11:15:39Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0%2Bcpu-cp313-cp313-win_amd64.whl", upload-time = "2026-07-08T11:15:39Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0%2Bcpu-cp313-cp313-win_arm64.whl", upload-time = "2026-07-08T11:15:40Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0%2Bcpu-cp314-cp314-linux_s390x.whl", upload-time = "2026-07-08T11:15:40Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0%2Bcpu-cp314-cp314-manylinux_2_28_aarch64.whl", upload-time = "2026-07-08T11:15:42Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0%2Bcpu-cp314-cp314-manylinux_2_28_x86_64.whl", upload-time = "2026-07-08T11:15:42Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0%2Bcpu-cp314-cp314-win_amd64.whl", upload-time = "2026-07-08T11:15:43Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0%2Bcpu-cp314-cp314t-linux_s390x.whl", upload-time = "2026-07-08T11:15:43Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0%2Bcpu-cp314-cp314t-manylinux_2_28_aarch64.whl", upload-time = "2026-07-08T11:15:44Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0%2Bcpu-cp314-cp314t-manylinux_2_28_x86_64.whl", upload-time = "2026-07-08T11:15:46Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0%2Bcpu-cp314-cp314t-win_amd64.whl", upload-time = "2026-07-08T11:15:46Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0%2Bcpu-cp315-cp315-manylinux_2_28_aarch64.whl", upload-time = "2026-07-08T11:15:47Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0%2Bcpu-cp315-cp315-manylinux_2_28_x86_64.whl", upload-time = "2026-07-08T11:15:47Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0%2Bcpu-cp315-cp315t-manylinux_2_28_aarch64.whl", upload-time = "2026-07-08T11:15:48Z" }, + { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.13.0%2Bcpu-cp315-cp315t-manylinux_2_28_x86_64.whl", upload-time = "2026-07-08T11:15:49Z" }, +] + +[[package]] +name = "torch" +version = "2.13.0+cu130" +source = { registry = "https://download.pytorch.org/whl/cu130" } +resolution-markers = [ + "python_full_version >= '3.15' and sys_platform == 'win32'", + "python_full_version >= '3.15' and sys_platform == 'emscripten'", + "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.14.*' and sys_platform == 'win32'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten'", + "python_full_version == '3.14.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten'", + "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten'", + "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version < '3.11'", +] +dependencies = [ + { name = "cuda-bindings", marker = "python_full_version < '3.15' and sys_platform == 'linux'" }, + { name = "cuda-toolkit", extra = ["cublas", "cudart", "cufft", "cufile", "cupti", "curand", "cusolver", "cusparse", "nvjitlink", "nvrtc", "nvtx"], marker = "(sys_platform == 'linux' and extra == 'extra-8-aerocore-torch-gpu') or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "filelock" }, + { name = "fsspec" }, + { name = "jinja2" }, + { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and extra == 'extra-8-aerocore-torch-gpu') or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "networkx", version = "3.6.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and extra == 'extra-8-aerocore-torch-gpu') or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { 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" }, + { name = "sympy" }, + { name = "triton", marker = "python_full_version < '3.15' and sys_platform == 'linux'" }, + { name = "typing-extensions" }, +] +wheels = [ + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.13.0%2Bcu130-cp310-cp310-manylinux_2_28_aarch64.whl", upload-time = "2026-07-08T11:18:45Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.13.0%2Bcu130-cp310-cp310-manylinux_2_28_x86_64.whl", upload-time = "2026-07-08T11:18:49Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.13.0%2Bcu130-cp310-cp310-win_amd64.whl", upload-time = "2026-07-08T11:18:52Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.13.0%2Bcu130-cp311-cp311-manylinux_2_28_aarch64.whl", upload-time = "2026-07-08T11:18:55Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.13.0%2Bcu130-cp311-cp311-manylinux_2_28_x86_64.whl", upload-time = "2026-07-08T11:18:55Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.13.0%2Bcu130-cp311-cp311-win_amd64.whl", upload-time = "2026-07-08T11:19:00Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.13.0%2Bcu130-cp312-cp312-manylinux_2_28_aarch64.whl", upload-time = "2026-07-08T11:19:01Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.13.0%2Bcu130-cp312-cp312-manylinux_2_28_x86_64.whl", upload-time = "2026-07-08T11:19:05Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.13.0%2Bcu130-cp312-cp312-win_amd64.whl", upload-time = "2026-07-08T11:19:07Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.13.0%2Bcu130-cp313-cp313-manylinux_2_28_aarch64.whl", upload-time = "2026-07-08T11:19:11Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.13.0%2Bcu130-cp313-cp313-manylinux_2_28_x86_64.whl", upload-time = "2026-07-08T11:19:18Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.13.0%2Bcu130-cp313-cp313-win_amd64.whl", upload-time = "2026-07-08T11:19:21Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.13.0%2Bcu130-cp314-cp314-manylinux_2_28_aarch64.whl", upload-time = "2026-07-08T11:19:30Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.13.0%2Bcu130-cp314-cp314-manylinux_2_28_x86_64.whl", upload-time = "2026-07-08T11:19:35Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.13.0%2Bcu130-cp314-cp314-win_amd64.whl", upload-time = "2026-07-08T11:19:40Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.13.0%2Bcu130-cp314-cp314t-manylinux_2_28_aarch64.whl", upload-time = "2026-07-08T11:19:43Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.13.0%2Bcu130-cp314-cp314t-manylinux_2_28_x86_64.whl", upload-time = "2026-07-08T11:19:47Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.13.0%2Bcu130-cp314-cp314t-win_amd64.whl", upload-time = "2026-07-08T11:19:51Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.13.0%2Bcu130-cp315-cp315-manylinux_2_28_aarch64.whl", upload-time = "2026-07-08T11:19:54Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.13.0%2Bcu130-cp315-cp315-manylinux_2_28_x86_64.whl", upload-time = "2026-07-08T11:20:00Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.13.0%2Bcu130-cp315-cp315t-manylinux_2_28_aarch64.whl", upload-time = "2026-07-08T11:20:04Z" }, + { url = "https://download-r2.pytorch.org/whl/cu130/torch-2.13.0%2Bcu130-cp315-cp315t-manylinux_2_28_x86_64.whl", upload-time = "2026-07-08T11:20:04Z" }, +] + [[package]] name = "tornado" version = "6.5.7" @@ -2793,13 +4146,32 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/96/8d/1080ee4c231f361b6ce4470d556c8c435b67c7e0753aaa641497ee92f88b/traitlets-5.15.1-py3-none-any.whl", hash = "sha256:770a53705f84b81ac107e83a1b3328ff2dae16094d8fc3cfc004e4b22dfd8e92", size = 85858, upload-time = "2026-06-03T12:26:04.395Z" }, ] +[[package]] +name = "triton" +version = "3.7.1" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/ea/629cc37436ca5df93ce98956d09cd2ca1498bfee8ef4972d2fe48b9f958c/triton-3.7.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3daf64305d6cea88d3334c65ebc9bcd0c64c9564a977084366aa768d57cbcf64", size = 184551013, upload-time = "2026-06-17T20:03:37.551Z" }, + { url = "https://files.pythonhosted.org/packages/15/76/c79c34311625227a288df3e483fc5cdf3d596624cbd4b4758c4cbdc14af3/triton-3.7.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ee89fbf782ec2ad50391dd1cf26cbea4f4467154c37f4773026da8fc31c0f58e", size = 197596267, upload-time = "2026-06-17T19:53:06.898Z" }, + { url = "https://files.pythonhosted.org/packages/7b/f9/19d842d06a08559534fa1eaab6ca551b1bcf40f06620bddec1babaa2772d/triton-3.7.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d4a0e1cd4c4a76370ed74a8432a53cea28716827d19e40ffc732233e35ceb3f6", size = 184664887, upload-time = "2026-06-17T20:03:42.913Z" }, + { url = "https://files.pythonhosted.org/packages/cd/5e/fce69606f7f240297f163e25539906732b199530d486ce67ae319877e821/triton-3.7.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6744957e9fd610a29680ec2346057d0c86948ed3812468670719f391e94b44a5", size = 197701306, upload-time = "2026-06-17T19:53:13.673Z" }, + { url = "https://files.pythonhosted.org/packages/94/fa/f856e24deb462d5f18bd4b5a746957862ab9b6ee5834bda60605ec348366/triton-3.7.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9497f2e696ee368862a181a90b2dcc03ca978cc4f602abd67c7d81022a6988e1", size = 184692359, upload-time = "2026-06-17T20:03:48.288Z" }, + { url = "https://files.pythonhosted.org/packages/c4/6f/fb96d15db6f36d6eae4cafb998c2e0353bf59d7c4ea1662d7497f269134a/triton-3.7.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7e40869937a68206ec70d7f25bb7ec6433cb083f9135e1f36dbd318dc449a728", size = 197719725, upload-time = "2026-06-17T19:53:20.419Z" }, + { url = "https://files.pythonhosted.org/packages/00/42/c5089d4d9327fcd1e862c599cc2927f39418f84dd11a84cb2ccff9d4787a/triton-3.7.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cdbfc09d9ec58bc5e68321525653220de7515c199e7a8097a97c85e62b52cd0a", size = 184694629, upload-time = "2026-06-17T20:03:53.444Z" }, + { url = "https://files.pythonhosted.org/packages/07/42/2c3ac59253ae8892b6f307875263dd23dc875cdf732d3aea40d6d41fb7cb/triton-3.7.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:58c0e131da05134a2a4788ccbcc0c1105cf0f54c8e98f19e34cd465396dc15eb", size = 197729241, upload-time = "2026-06-17T19:53:27.801Z" }, + { url = "https://files.pythonhosted.org/packages/40/71/e01aa7ad573883ed9456f130226babdec70b005e098c4d6226a6238e761b/triton-3.7.1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fe4ea396a06171f1f1f58cbd39c70b09294398f7dd7c620939bab54ad6f934fa", size = 184705764, upload-time = "2026-06-17T20:03:59.064Z" }, + { url = "https://files.pythonhosted.org/packages/a4/09/5683146fda6a2b569deb78ccfd8fbfea8bfe55f726b081c0a6bb18dd6f28/triton-3.7.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2020153b08280415ec0da6607834e79166442147e78e144df06b508c75b186d2", size = 197729537, upload-time = "2026-06-17T19:53:35.516Z" }, + { url = "https://files.pythonhosted.org/packages/e9/f8/448220c3092019f9fdfab39ec47985968181d67da34b44f6a7f6280a5cbb/triton-3.7.1-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c58e4c61f0c73b5dba3b5d19b4a7093c32f90dc18b2a7f121a7c16ccd31107b7", size = 184814760, upload-time = "2026-06-17T20:04:04.984Z" }, + { url = "https://files.pythonhosted.org/packages/f0/ac/229b7d4589d2e5937310e72c6d46e89599d16a4a12b479ffa1499fee8eb8/triton-3.7.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:10ba85fa2cca4a2fbdeb36bf1cb082f2c252bda55bf9fccd74f65ec5bc647e68", size = 197824404, upload-time = "2026-06-17T19:53:42.772Z" }, +] + [[package]] name = "typer" version = "0.26.7" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "annotated-doc" }, - { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, { name = "rich" }, { name = "shellingham" }, ] @@ -2881,12 +4253,15 @@ name = "xarray" version = "2025.6.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version < '3.11'", + "python_full_version < '3.11' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and sys_platform != 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version < '3.11' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", ] dependencies = [ - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "packaging", marker = "python_full_version < '3.11'" }, - { name = "pandas", version = "2.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "packaging", marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "pandas", version = "2.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/19/ec/e50d833518f10b0c24feb184b209bb6856f25b919ba8c1f89678b930b1cd/xarray-2025.6.1.tar.gz", hash = "sha256:a84f3f07544634a130d7dc615ae44175419f4c77957a7255161ed99c69c7c8b0", size = 3003185, upload-time = "2025-06-12T03:04:09.099Z" } wheels = [ @@ -2898,26 +4273,61 @@ name = "xarray" version = "2026.4.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.15' and sys_platform == 'win32'", - "python_full_version >= '3.15' and sys_platform == 'emscripten'", - "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.14.*' and sys_platform == 'win32'", - "python_full_version == '3.14.*' and sys_platform == 'emscripten'", - "python_full_version == '3.14.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.13.*' and sys_platform == 'win32'", - "python_full_version == '3.13.*' and sys_platform == 'emscripten'", - "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.12.*' and sys_platform == 'win32'", - "python_full_version == '3.12.*' and sys_platform == 'emscripten'", - "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.11.*' and sys_platform == 'win32'", - "python_full_version == '3.11.*' and sys_platform == 'emscripten'", - "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.15' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'darwin' and extra == 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.14.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform == 'emscripten' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", + "python_full_version == '3.11.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-8-aerocore-torch-cpu' and extra != 'extra-8-aerocore-torch-gpu'", ] dependencies = [ - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "packaging", marker = "python_full_version >= '3.11'" }, - { name = "pandas", version = "3.0.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "packaging", marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, + { name = "pandas", version = "3.0.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' or (extra == 'extra-8-aerocore-torch-cpu' and extra == 'extra-8-aerocore-torch-gpu')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/4b/a6/6fe936a798a3a38a79c7422d1a31afd2e9a14690fcb0ccff96bc01f04bf2/xarray-2026.4.0.tar.gz", hash = "sha256:c4ac9a01a945d90d5b1628e2af045099a9d4943536d4f2ee3ae963c3b222d15b", size = 3132311, upload-time = "2026-04-13T19:45:36.688Z" } wheels = [ @@ -2926,7 +4336,7 @@ wheels = [ [[package]] name = "zensical" -version = "0.0.45" +version = "0.0.47" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, @@ -2938,18 +4348,18 @@ dependencies = [ { name = "pyyaml" }, { name = "tomli" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f3/d1/ecb1889fd2208b2d577e6ff952d9bee201302eec7966b5b61cc64adfd8f5/zensical-0.0.45.tar.gz", hash = "sha256:315bce4ab0470338dd3588add38fb325f840856c375722e6802bd58a06446266", size = 3935947, upload-time = "2026-06-09T11:23:32.349Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ad/fd/6b84115e3bbe6b76ebb1265e8ff2161c0bc88dcd6499eaf29c61a66421e9/zensical-0.0.45-cp310-abi3-macosx_10_12_x86_64.whl", hash = "sha256:c4cb2e11132f02ae824e246e016e073458e12e9de1eaf86fd39f01890d41204c", size = 12698844, upload-time = "2026-06-09T11:22:56.537Z" }, - { url = "https://files.pythonhosted.org/packages/e2/dc/4ddf05d77c1455c32cb26da71f2a19d355927a45a3db5b26fb258a07ce8f/zensical-0.0.45-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:799a01de2102b5f731744ad31bdbc464d0c07d484e67ba148f6923679afa6ce6", size = 12571590, upload-time = "2026-06-09T11:23:00.192Z" }, - { url = "https://files.pythonhosted.org/packages/4c/53/60c6cc7b2ce8b1a83eb87bff3f7289447995552fd9a30ca76ffba22ca9d5/zensical-0.0.45-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6201e79ea8a64bd3ced3f05ef4b1529da0e675d67b1395987c0ba942e4e10dc4", size = 12939590, upload-time = "2026-06-09T11:23:02.721Z" }, - { url = "https://files.pythonhosted.org/packages/9f/1e/e9217ed75dba323a6f9a4eee28eb40416eff99932cd0ee6c394bf07b9ead/zensical-0.0.45-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:854aaf500e4a3ce64adea1faa7a1820c7cf9a4f66be1043e4e9ba727fe9cf2b5", size = 12911669, upload-time = "2026-06-09T11:23:05.407Z" }, - { url = "https://files.pythonhosted.org/packages/71/3c/6fc9fe2334bb4460a8a8d732e23a30d2ddc2ecf63c2eb3487d9e7405e70d/zensical-0.0.45-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a80c57fd50fc60415914388286ac10a7d8b6f70b8ca7235597d09fb12c3171b0", size = 13267643, upload-time = "2026-06-09T11:23:07.915Z" }, - { url = "https://files.pythonhosted.org/packages/be/f9/5696114af4ede5f1bd01e641a4ff24ee8ca49810bfaa28e5be12d930c0ef/zensical-0.0.45-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58c3510f69e08b6ed8bb9596fc9393e4687f90394aa0ef2d6118b1375ad97be5", size = 12972147, upload-time = "2026-06-09T11:23:12.069Z" }, - { url = "https://files.pythonhosted.org/packages/a3/9e/5c6acde480c43f8c993b13260925df8db31d51ab8a9977618e9efdd98d45/zensical-0.0.45-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:01c484bb2ee85e98e21e24b397ff52ffc31101f7485935eee5d3afa6cca6cc08", size = 13117360, upload-time = "2026-06-09T11:23:15.155Z" }, - { url = "https://files.pythonhosted.org/packages/3d/31/ea21f102049b35a8fe5218c5331857a15eeb60deb1bb21823a4c0701e274/zensical-0.0.45-cp310-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:3654b708830303759e866a58a60c483cd2a1c56a44acdaae5bbb341a3f40ebce", size = 13185593, upload-time = "2026-06-09T11:23:18.166Z" }, - { url = "https://files.pythonhosted.org/packages/b4/97/6ded39fe27fa8a292d17d9af713b018e4919315233b60fa4b4b0aca737a6/zensical-0.0.45-cp310-abi3-musllinux_1_2_i686.whl", hash = "sha256:c4da1c37eca1474b487def0ef40d7ac2aff31a9d7a029cb7479ef7c354437361", size = 13326882, upload-time = "2026-06-09T11:23:21.027Z" }, - { url = "https://files.pythonhosted.org/packages/79/80/075975032a9e20f319c0134f8ca659d295ee4908f15ab212702a2728247f/zensical-0.0.45-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f8a1966c186feebd3b795f9d420000bfd582e16eefdd9bc7a286d878faabae52", size = 13253961, upload-time = "2026-06-09T11:23:23.99Z" }, - { url = "https://files.pythonhosted.org/packages/3f/6a/0eab0eb311af6a07cde15ca58d5d720cbfa02cd509e4c7fb5fa20cda0b46/zensical-0.0.45-cp310-abi3-win32.whl", hash = "sha256:a1dd63a5efb8d0e5f2fadf862f02771a279dc5cbe9a982700194650065758f01", size = 12257083, upload-time = "2026-06-09T11:23:26.769Z" }, - { url = "https://files.pythonhosted.org/packages/1f/cd/b117e749c60b1d1e16b8450db1355f69f38376f783b8c6c8815202988933/zensical-0.0.45-cp310-abi3-win_amd64.whl", hash = "sha256:1f2c0e69839ce4274bde34d18139d3b0d96bbf02b245ada46243590c9eedebc1", size = 12498335, upload-time = "2026-06-09T11:23:29.702Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/d7/99/53171a5211359a95b0d6caad9a1c960b002a4bf82eacdd3cdbde225db25f/zensical-0.0.47.tar.gz", hash = "sha256:324f783b22cd0deed0d0f3b69e28d5380b47238a1ef0f25913b88014af2bade2", size = 3976587, upload-time = "2026-07-05T15:51:25.488Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/7c/5848aad6a5b566f5a3cebc77ab787793daec622b79295de243da7b8efae6/zensical-0.0.47-cp310-abi3-macosx_10_12_x86_64.whl", hash = "sha256:4162fb8b62f38e6d9b75688c1fb87e18a1cffef5eee51d2c18b79334b548e973", size = 12789282, upload-time = "2026-07-05T15:50:45.118Z" }, + { url = "https://files.pythonhosted.org/packages/ce/08/c2a056ae22eba7063985cc89554ab8e54efb11af8e26f6d606e5bd300ae8/zensical-0.0.47-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:cdc2d84f38da809a28402eda5f2b6dbb150e14427f296c5b521e0dfc6a2e8a39", size = 12661193, upload-time = "2026-07-05T15:50:49.138Z" }, + { url = "https://files.pythonhosted.org/packages/dc/2b/30dc3262e99bc72e9a6529487fbfca58cf4f81cebfac59ef8e8d757d90eb/zensical-0.0.47-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97ed2b21aba5f788fc39d1597d00938d602b4d2724ed599a1dab7548fe4f0025", size = 13044347, upload-time = "2026-07-05T15:50:52.429Z" }, + { url = "https://files.pythonhosted.org/packages/4d/80/296ff21b686cda47c4a3f94c35bf62472291501c34e4f06dfd107cb237da/zensical-0.0.47-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6f6b2de477c45284201e92301f997415f45f78493bd20f479ea9a1c86bbbbcca", size = 13006494, upload-time = "2026-07-05T15:50:55.376Z" }, + { url = "https://files.pythonhosted.org/packages/2d/4e/5aeba02363db89c625cd41c76d2a6e40b07d6a75d869d970ace7accd2bfa/zensical-0.0.47-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2ee29ff819372eaab02ca0f14ac82e804332d898c57c56ffd4d89674f3e5ff71", size = 13379253, upload-time = "2026-07-05T15:50:58.743Z" }, + { url = "https://files.pythonhosted.org/packages/fd/dc/e72a1449544aeffa3dbe878c6340bcec98ba4eebabe7a592414064b0ae8d/zensical-0.0.47-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bd94937c48a2e42b5b65b32c5075849937f23cebccaf250d249efa27266e0be", size = 13103356, upload-time = "2026-07-05T15:51:02.247Z" }, + { url = "https://files.pythonhosted.org/packages/48/eb/7fb956915cc59ee9f2ddf36ec5b16e8e858823217611e1d766816a661651/zensical-0.0.47-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:4702605b991bece11494a9bb318d5ba7229f00e5adcc9e6010acd58e9719686b", size = 13220897, upload-time = "2026-07-05T15:51:05.919Z" }, + { url = "https://files.pythonhosted.org/packages/57/6b/944954d60bf1d61de2a7fa2732d0fb2d5deee64567db6088cdd2b5f76973/zensical-0.0.47-cp310-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:77f08ffcc3da9ca2f972330e501927aa7e8e445bfa7b758107edc645acda266e", size = 13280476, upload-time = "2026-07-05T15:51:09.352Z" }, + { url = "https://files.pythonhosted.org/packages/ce/80/4aece9b99eb5809b04fc6577fc50e877c998917293dfd58b5b229616b92b/zensical-0.0.47-cp310-abi3-musllinux_1_2_i686.whl", hash = "sha256:319cf370ecc6d87da69c935c5acd6e1959dd48954766e9f954319bdb0bec5d36", size = 13439392, upload-time = "2026-07-05T15:51:12.564Z" }, + { url = "https://files.pythonhosted.org/packages/41/10/5cbffe680605b4fa7c0d6326f07a6adc86854f8b9d61bb1b29bb482d40eb/zensical-0.0.47-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:59656bf604a8b03eede4ce1a847640bab1129ab86dec2e39e5bd4b808b1802d2", size = 13386534, upload-time = "2026-07-05T15:51:15.892Z" }, + { url = "https://files.pythonhosted.org/packages/d5/06/79c7726b0388da40a96cc01113d872d639da1d8a5f96b5265e46e8472ceb/zensical-0.0.47-cp310-abi3-win32.whl", hash = "sha256:81a13a8bacadedada4847eed4aaa4a3f4ef0e5b78dbb2a2022bc6fb7e7dc9464", size = 12356060, upload-time = "2026-07-05T15:51:19.167Z" }, + { url = "https://files.pythonhosted.org/packages/f9/7a/7daaeadfdf7dc2941c8b931f9c6c83396d1da45634cec1a28f8d85a57708/zensical-0.0.47-cp310-abi3-win_amd64.whl", hash = "sha256:944a309be69b11daa8bba46c61fb74f32a98b637f3e7c11135e7cc2a5eccbe32", size = 12601932, upload-time = "2026-07-05T15:51:22.485Z" }, ]