diff --git a/.all-contributorsrc b/.all-contributorsrc
index c2651c64..b33d332f 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -27,7 +27,8 @@
"tool",
"test",
"bug",
- "platform"
+ "platform",
+ "review"
]
},
{
@@ -37,7 +38,8 @@
"profile": "https://github.com/mdhaber",
"contributions": [
"code",
- "ideas"
+ "ideas",
+ "test"
]
},
{
@@ -47,7 +49,8 @@
"profile": "https://github.com/j-bowhay",
"contributions": [
"code",
- "review"
+ "review",
+ "tool"
]
},
{
@@ -90,14 +93,20 @@
]
},
{
- "login": "rgommers",
- "name": "Ralf Gommers",
- "avatar_url": "https://avatars.githubusercontent.com/u/98330?v=4",
- "profile": "https://github.com/rgommers/",
+ "login": "crusaderky",
+ "name": "Guido Imperiale",
+ "avatar_url": "https://avatars.githubusercontent.com/u/6213168?v=4",
+ "profile": "https://github.com/crusaderky",
"contributions": [
+ "code",
+ "doc",
+ "tool",
+ "test",
+ "example",
+ "bug",
"ideas",
- "infra",
- "review"
+ "review",
+ "maintenance"
]
},
{
@@ -155,6 +164,17 @@
"code"
]
},
+ {
+ "login": "rgommers",
+ "name": "Ralf Gommers",
+ "avatar_url": "https://avatars.githubusercontent.com/u/98330?v=4",
+ "profile": "https://github.com/rgommers/",
+ "contributions": [
+ "ideas",
+ "infra",
+ "review"
+ ]
+ },
{
"login": "ogrisel",
"name": "Olivier Grisel",
@@ -164,19 +184,6 @@
"code"
]
},
- {
- "login": "crusaderky",
- "name": "Guido Imperiale",
- "avatar_url": "https://avatars.githubusercontent.com/u/6213168?v=4",
- "profile": "https://github.com/crusaderky",
- "contributions": [
- "code",
- "doc",
- "tool",
- "test",
- "example"
- ]
- },
{
"login": "ev-br",
"name": "Evgeni Burovski",
@@ -195,6 +202,53 @@
"contributions": [
"review"
]
+ },
+ {
+ "login": "kotlinisland",
+ "name": "kotlinisland",
+ "avatar_url": "https://avatars.githubusercontent.com/u/65446343?v=4",
+ "profile": "https://github.com/KotlinIsland",
+ "contributions": [
+ "review"
+ ]
+ },
+ {
+ "login": "detachhead",
+ "name": "detachhead",
+ "avatar_url": "https://avatars.githubusercontent.com/u/57028336?v=4",
+ "profile": "https://github.com/DetachHead",
+ "contributions": [
+ "review"
+ ]
+ },
+ {
+ "login": "NeilGirdhar",
+ "name": "Neil Girdhar",
+ "avatar_url": "https://avatars.githubusercontent.com/u/730137?v=4",
+ "profile": "https://github.com/NeilGirdhar",
+ "contributions": [
+ "code",
+ "test"
+ ]
+ },
+ {
+ "login": "lithomas1",
+ "name": "Thomas Li",
+ "avatar_url": "https://avatars.githubusercontent.com/u/47963215?v=4",
+ "profile": "https://github.com/lithomas1",
+ "contributions": [
+ "bug",
+ "tool"
+ ]
+ },
+ {
+ "login": "pearu",
+ "name": "Pearu Peterson",
+ "avatar_url": "https://avatars.githubusercontent.com/u/402156?v=4",
+ "profile": "https://github.com/pearu",
+ "contributions": [
+ "review"
+ ]
}
]
}
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 00000000..46f23570
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,14 @@
+root = true
+
+[*.{py,md}]
+indent_style = space
+end_of_line = lf
+trim_trailing_whitespace = true
+insert_final_newline = true
+
+[*.py]
+max_line_length = 88
+indent_size = 4
+
+[*.md]
+max_line_length = 80
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
deleted file mode 100644
index 6c4b3695..00000000
--- a/.github/dependabot.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-version: 2
-updates:
- # Maintain dependencies for GitHub Actions
- - package-ecosystem: "github-actions"
- directory: "/"
- schedule:
- interval: "weekly"
- groups:
- actions:
- patterns:
- - "*"
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 00000000..014064f0
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,5 @@
+
diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml
index 18fd21ee..c57eeb4d 100644
--- a/.github/workflows/cd.yml
+++ b/.github/workflows/cd.yml
@@ -1,5 +1,8 @@
name: CD
+permissions:
+ contents: read
+
on:
workflow_dispatch:
pull_request:
@@ -14,11 +17,11 @@ jobs:
dist:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
- - uses: hynek/build-and-inspect-python-package@v2
+ - uses: hynek/build-and-inspect-python-package@b5076c307dc91924a82ad150cdd1533b444d3310 # v2.12.0
publish:
needs: [dist]
@@ -31,14 +34,14 @@ jobs:
if: github.event_name == 'release' && github.event.action == 'published'
steps:
- - uses: actions/download-artifact@v4
+ - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: Packages
path: dist
- name: Generate artifact attestation for sdist and wheel
- uses: actions/attest-build-provenance@v2.1.0
+ uses: actions/attest-build-provenance@db473fddc028af60658334401dc6fa3ffd8669fd # v2.3.0
with:
subject-path: "dist/*"
- - uses: pypa/gh-action-pypi-publish@release/v1
+ - uses: pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc # v1.12.4
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index fac3ebe8..ebe75372 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,5 +1,8 @@
name: CI
+permissions:
+ contents: read
+
on:
workflow_dispatch:
pull_request:
@@ -21,18 +24,18 @@ jobs:
name: Format
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
- - uses: actions/setup-python@v5
+ - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
with:
- python-version: "3.x"
- - uses: pre-commit/action@v3.0.1
+ python-version: "3.13.3"
+ - uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1
with:
extra_args: --hook-stage manual --all-files
- - uses: prefix-dev/setup-pixi@v0.8.1
+ - uses: prefix-dev/setup-pixi@19eac09b398e3d0c747adc7921926a6d802df4da # v0.8.8
with:
- pixi-version: v0.39.0
+ pixi-version: v0.42.1
cache: true
environments: lint
- name: Run Pylint, Mypy & Pyright
@@ -42,30 +45,42 @@ jobs:
pixi run -e lint pyright
checks:
- name: Check ${{ matrix.environment }}
+ name: Test ${{ matrix.environment }}
runs-on: ${{ matrix.runs-on }}
needs: [pre-commit-and-lint]
strategy:
fail-fast: false
matrix:
- environment: [ci-py310, ci-py313, ci-backends]
+ environment:
+ - tests-py310
+ - tests-py313
+ - tests-numpy1
+ - tests-backends
+ - tests-nogil
runs-on: [ubuntu-latest]
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
- - uses: prefix-dev/setup-pixi@v0.8.1
+ - uses: prefix-dev/setup-pixi@19eac09b398e3d0c747adc7921926a6d802df4da # v0.8.8
with:
- pixi-version: v0.39.0
+ pixi-version: v0.42.1
cache: true
environments: ${{ matrix.environment }}
- name: Test package
+ # Save some time; also at the moment of writing coverage crashes on python 3.13t
+ if: ${{ matrix.environment != 'tests-nogil' }}
run: pixi run -e ${{ matrix.environment }} tests-ci
+ - name: Test free-threading
+ if: ${{ matrix.environment == 'tests-nogil' }}
+ run: pixi run -e tests-nogil tests --parallel-threads=4
+
- name: Upload coverage report
- uses: codecov/codecov-action@v5.1.2
+ if: ${{ matrix.environment != 'tests-nogil' }}
+ uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
with:
token: ${{ secrets.CODECOV_TOKEN }}
diff --git a/.github/workflows/dependabot-auto-merge.yml b/.github/workflows/dependabot-auto-merge.yml
deleted file mode 100644
index bd29e25b..00000000
--- a/.github/workflows/dependabot-auto-merge.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-# https://docs.github.com/en/code-security/dependabot/working-with-dependabot/automating-dependabot-with-github-actions#approve-a-pull-request
-name: Dependabot auto-merge
-on: pull_request
-
-permissions:
- contents: write
- pull-requests: write
-
-jobs:
- dependabot:
- runs-on: ubuntu-latest
- if: github.actor == 'dependabot[bot]'
- steps:
- - name: Dependabot metadata
- id: metadata
- uses: dependabot/fetch-metadata@v2
- with:
- github-token: "${{ secrets.GITHUB_TOKEN }}"
- - name: Enable auto-merge for Dependabot PRs
- run: gh pr merge --auto --merge "$PR_URL"
- env:
- PR_URL: ${{github.event.pull_request.html_url}}
- GH_TOKEN: ${{secrets.GITHUB_TOKEN}}
diff --git a/.github/workflows/docs-build.yml b/.github/workflows/docs-build.yml
index b1bfac51..e9da16ec 100644
--- a/.github/workflows/docs-build.yml
+++ b/.github/workflows/docs-build.yml
@@ -1,21 +1,24 @@
name: Docs Build
+permissions:
+ contents: read
+
on: [push, pull_request]
jobs:
docs-build:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
- - uses: prefix-dev/setup-pixi@v0.8.1
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ - uses: prefix-dev/setup-pixi@19eac09b398e3d0c747adc7921926a6d802df4da # v0.8.8
with:
- pixi-version: v0.39.0
+ pixi-version: v0.42.1
cache: true
environments: docs
- name: Build Docs
run: pixi run -e docs docs
- name: Upload Artifact
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: docs-build
path: docs/build/
diff --git a/.github/workflows/docs-deploy.yml b/.github/workflows/docs-deploy.yml
index 65f1286c..25b46467 100644
--- a/.github/workflows/docs-deploy.yml
+++ b/.github/workflows/docs-deploy.yml
@@ -1,5 +1,8 @@
name: Docs Deploy
+permissions:
+ contents: write # needed for the deploy step
+
on:
workflow_run:
workflows: ["Docs Build"]
@@ -14,9 +17,9 @@ jobs:
environment:
name: docs-deploy
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Download Artifact
- uses: dawidd6/action-download-artifact@v7
+ uses: dawidd6/action-download-artifact@4c1e823582f43b179e2cbb49c3eade4e41f992e2 # v10
with:
workflow: docs-build.yml
name: docs-build
@@ -26,7 +29,7 @@ jobs:
# See
# https://github.com/JamesIves/github-pages-deploy-action/tree/dev#using-an-ssh-deploy-key-
- name: Deploy
- uses: JamesIves/github-pages-deploy-action@v4
+ uses: JamesIves/github-pages-deploy-action@6c2d9db40f9296374acc17b90404b6e8864128c8 # v4.7.3
with:
folder: docs/build/
ssh-key: ${{ secrets.DEPLOY_KEY }}
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 655be69a..7be7a1ca 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -76,7 +76,6 @@ repos:
- repo: https://github.com/python-jsonschema/check-jsonschema
rev: "0.30.0"
hooks:
- - id: check-dependabot
- id: check-github-workflows
- repo: https://github.com/numpy/numpydoc
diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md
index 042541ab..cc93de44 100644
--- a/CONTRIBUTORS.md
+++ b/CONTRIBUTORS.md
@@ -9,16 +9,16 @@ This project exists thanks to the following contributors
diff --git a/README.md b/README.md
index 3165e70d..54f9d3a7 100644
--- a/README.md
+++ b/README.md
@@ -4,12 +4,14 @@
[![docs - here!][docs-badge]][docs-link]
[](https://pixi.sh)
[](#contributors)
-[](https://scientific-python.org/specs/)
+[](https://typing.python.org/)
[](https://codecov.io/github/data-apis/array-api-extra)
[![PyPI version][pypi-version]][pypi-link]
[![Conda-Forge][conda-badge]][conda-link]
[![PyPI platforms][pypi-platforms]][pypi-link]
+[](https://jacobtomlinson.dev/effver)
+[](https://scientific-python.org/specs/spec-0008/)
@@ -32,10 +34,25 @@ Extra array functions built on top of the array API standard.
Used by:
-- [SciPy](https://github.com/scipy/scipy) - Fundamental algorithms for
+- [SciPy](https://github.com/scipy/scipy) β Fundamental algorithms for
scientific computing.
+- [scikit-learn](https://github.com/scikit-learn/scikit-learn)Β β Machine
+ Learning in Python.
- _your library? Let us know!_
+## Installation
+
+See https://data-apis.org/array-api-extra/#installation.
+
+## Versioning
+
+This project uses [EffVer](https://jacobtomlinson.dev/effver/). TL;DR:
+
+- To bump from version `x.y.z` to `x.(y+1).0` of array-api-extra, expect that
+ you may need to put in some work.
+- To bump from version `x.y.z` to `x.y.(z+1)`, any work needed on your side
+ should be minimal. Please open an issue if this is not the case!
+
## Contributors
This project exists thanks to the following contributors
@@ -47,16 +64,16 @@ This project exists thanks to the following contributors
diff --git a/RELEASING.md b/RELEASING.md
index a9640cb4..564fc682 100644
--- a/RELEASING.md
+++ b/RELEASING.md
@@ -1,8 +1,8 @@
1. Update the version in `src/array_api_extra/__init__.py`
-2. Update the lockfile with `pixi update` and `pixi install`
+2. Update the lockfile with `pixi update && pixi install`
3. Push your changes
4. Cut a release via the GitHub GUI
5. Update the version to `{next micro version}.dev0`
-6. Update the lockfile
+6. `pixi clean cache --pypi && pixi update && pixi install`
7. Push your changes
8. Merge the automated PR to conda-forge/array-api-extra-feedstock
diff --git a/codecov.yml b/codecov.yml
index 1a517b3a..dc9b47cd 100644
--- a/codecov.yml
+++ b/codecov.yml
@@ -1,4 +1,9 @@
comment: false
+github_checks:
+ annotations: false
ignore:
- "src/array_api_extra/_lib/_compat"
- "src/array_api_extra/_lib/_typing"
+coverage:
+ status:
+ project: off
diff --git a/docs/api-lazy.md b/docs/api-lazy.md
new file mode 100644
index 00000000..abea5cbb
--- /dev/null
+++ b/docs/api-lazy.md
@@ -0,0 +1,15 @@
+# Tools for lazy backends
+
+These additional functions are meant to be used to support compatibility with
+lazy backends, e.g. Dask or JAX:
+
+```{eval-rst}
+.. currentmodule:: array_api_extra
+.. autosummary::
+ :nosignatures:
+ :toctree: generated
+
+ lazy_apply
+ testing.lazy_xp_function
+ testing.patch_lazy_xp_functions
+```
diff --git a/docs/api-reference.md b/docs/api-reference.md
index e2c115c6..38d0d26e 100644
--- a/docs/api-reference.md
+++ b/docs/api-reference.md
@@ -6,13 +6,18 @@
:nosignatures:
:toctree: generated
+ apply_where
at
atleast_nd
+ broadcast_shapes
cov
create_diagonal
+ default_dtype
expand_dims
+ isclose
kron
nunique
+ one_hot
pad
setdiff1d
sinc
diff --git a/docs/conf.py b/docs/conf.py
index 79000c96..e2cab35b 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -4,6 +4,8 @@
from typing import Any
project = "array-api-extra"
+copyright = "Consortium for Python Data API Standards"
+author = "Consortium for Python Data API Standards"
version = release = importlib.metadata.version("array_api_extra")
extensions = [
@@ -53,6 +55,9 @@
intersphinx_mapping = {
"python": ("https://docs.python.org/3", None),
+ "array-api": ("https://data-apis.org/array-api/draft", None),
+ "dask": ("https://docs.dask.org/en/stable", None),
+ "numpy": ("https://numpy.org/doc/stable", None),
"jax": ("https://jax.readthedocs.io/en/latest", None),
}
diff --git a/docs/contributing.md b/docs/contributing.md
index 221021d0..83db0de4 100644
--- a/docs/contributing.md
+++ b/docs/contributing.md
@@ -6,11 +6,14 @@ converting code to consume the standard.
Thanks to [all contributors](contributors.md) so far!
-## How to contribute a function
+## How to contribute a new function
- [Open an issue](https://github.com/data-apis/array-api-extra/issues/new) to
- propose the new function.
-- Add the implementation of your function to `src/array_api_extra/_funcs.py`.
+ propose the new function. You may want to wait for initial feedback on the
+ issue before diving into an implementation. Feel free to skip this step if
+ there is already an open issue for the function.
+- Add the implementation of your function to
+ `src/array_api_extra/_lib/_funcs.py`.
- Ensure that your function includes type annotations and a
[numpydoc-style docstring](https://numpydoc.readthedocs.io/en/latest/format.html).
- Add your function to `__all__` at the top of the file.
@@ -20,6 +23,33 @@ Thanks to [all contributors](contributors.md) so far!
- Add your function to `docs/api-reference.md`.
- [Make a PR!](https://github.com/data-apis/array-api-extra/pulls)
+## How to add delegation to a function
+
+See [the tracker for adding delegation][delegation-tracker].
+
+[delegation-tracker]: https://github.com/data-apis/array-api-extra/issues/100
+
+- If you would like to discuss the task before diving into the implementation,
+ click on the three dots next to the function on the tracker issue, and choose
+ "Convert to sub-issue".
+- Create a function in `src/array_api_extra/_delegation.py` with a signature
+ matching the function in `src/array_api_extra/_lib/_funcs.py`, and move the
+ docstring to the new function. Leave a one-line docstring in `_funcs.py`,
+ pointing to `_delegation.py` to see the full docstring.
+- Also move the initial `array_namespace` call and any input validation over to
+ the new function.
+- Add delegation to backends using the `if _delegate` pattern. See
+ `src/array_api_extra/_lib/_backends.py` for the full list of backends we have
+ worked with so far.
+- After all delegation layers, return the result from the implementation in
+ `_funcs`.
+- Simplify the signature in `_funcs.py` to remove impossible arguments now that
+ it is only called internally via `_delegation`. For example, the `xp`
+ parameter can be changed from type `ModuleType | None` to `ModuleType`.
+- Don't worry if you are not sure how to do some of the above steps or think you
+ might have done something wrong -
+ [make a PR!](https://github.com/data-apis/array-api-extra/pulls)
+
## Development workflow
If you are an experienced contributor to Python packages, feel free to develop
@@ -76,7 +106,7 @@ pixi run pre-commit-install
- To run the lint suite:
```
-pixi run lint
+pixi run -e lint lint
```
- To enter an interactive Python prompt:
@@ -88,10 +118,10 @@ pixi run ipython
- To run individual parts of the lint suite separately:
```
-pixi run pre-commit
-pixi run pylint
-pixi run mypy
-pixi run pyright
+pixi run -e lint pre-commit
+pixi run -e lint pylint
+pixi run -e lint mypy
+pixi run -e lint pyright
```
Alternative environments are available with a subset of the dependencies and
@@ -100,5 +130,14 @@ tasks available in the `dev` environment:
```
pixi shell -e docs
pixi shell -e tests
+pixi shell -e tests-backends
pixi shell -e lint
```
+
+If you run on a host with CUDA hardware, you can enable extra tests:
+
+```
+pixi shell -e dev-cuda
+pixi shell -e tests-cuda
+pixi run -e tests-cuda tests
+```
diff --git a/docs/index.md b/docs/index.md
index c1998cdd..59615583 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -5,6 +5,7 @@
:hidden:
self
api-reference.md
+api-lazy.md
contributing.md
contributors.md
```
@@ -22,8 +23,10 @@ themselves.
It is currently used by:
-- [SciPy](https://github.com/scipy/scipy) - Fundamental algorithms for
+- [SciPy](https://github.com/scipy/scipy) β Fundamental algorithms for
scientific computing.
+- [scikit-learn](https://github.com/scikit-learn/scikit-learn) β Machine
+ Learning in Python.
- _your library? Let us know!_
(installation)=
@@ -112,7 +115,16 @@ See [an example of this in SciPy][scipy-vendor-example].
```
[scipy-vendor-example]:
-https://github.com/scipy/scipy/blob/main/scipy/_lib/_array_api_compat_vendor.py
+ https://github.com/scipy/scipy/blob/main/scipy/_lib/_array_api_compat_vendor.py
+
+## Versioning
+
+This project uses [EffVer](https://jacobtomlinson.dev/effver/). TL;DR:
+
+- To bump from version `x.y.z` to `x.(y+1).0` of array-api-extra, expect that
+ you may need to put in some work.
+- To bump from version `x.y.z` to `x.y.(z+1)`, any work needed on your side
+ should be minimal. Please open an issue if this is not the case!
(usage)=
@@ -175,7 +187,7 @@ increase performance.
In particular, the following kinds of function are also in-scope:
- Functions which implement
- [array API standard extension](https://data-apis.org/array-api/2023.12/extensions/index.html)
+ [array API standard extension](https://data-apis.org/array-api/latest/extensions/index.html)
functions in terms of functions from the base standard.
- Functions which add functionality (e.g. extra parameters) to functions from
the standard.
diff --git a/docs/requirements.txt b/docs/requirements.txt
deleted file mode 100644
index 77237968..00000000
--- a/docs/requirements.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-furo>=2023.08.17
-myst_parser>=0.13
-sphinx>=7.0
-sphinx_autodoc_typehints
-sphinx_copybutton
diff --git a/pixi.lock b/pixi.lock
index 438cf49e..115a6c0f 100644
--- a/pixi.lock
+++ b/pixi.lock
@@ -1,6 +1,6 @@
version: 6
environments:
- ci-backends:
+ default:
channels:
- url: https://prefix.dev/conda-forge/
indexes:
@@ -8,940 +8,403 @@ environments:
packages:
linux-64:
- conda: https://prefix.dev/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2
- - conda: https://prefix.dev/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.10.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/aws-c-auth-0.8.0-h205f482_16.conda
- - conda: https://prefix.dev/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda
- - conda: https://prefix.dev/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda
- - conda: https://prefix.dev/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda
- - conda: https://prefix.dev/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda
- - conda: https://prefix.dev/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda
- - conda: https://prefix.dev/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda
- - conda: https://prefix.dev/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda
- - conda: https://prefix.dev/conda-forge/linux-64/aws-crt-cpp-0.29.8-h8570fcd_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h7001638_5.conda
- - conda: https://prefix.dev/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/bokeh-3.6.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.50.0-hee588c1_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/python-3.13.3-hf636f53_101_cp313.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.13-7_cp313.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - pypi: ./
+ osx-64:
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libsqlite-3.50.0-hdb6dae5_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/python-3.13.3-h534c281_101_cp313.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.13-7_cp313.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - pypi: ./
+ osx-arm64:
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.50.0-h3f77e49_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/python-3.13.3-h81fe080_101_cp313.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.13-7_cp313.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - pypi: ./
+ win-64:
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.50.0-h67fdade_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda
+ - conda: https://prefix.dev/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/python-3.13.3-h261c0b1_101_cp313.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.13-7_cp313.conda
+ - conda: https://prefix.dev/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/vc-14.3-h2b53caa_26.conda
+ - conda: https://prefix.dev/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda
+ - pypi: ./
+ dev:
+ channels:
+ - url: https://prefix.dev/conda-forge/
+ indexes:
+ - https://pypi.org/simple
+ packages:
+ linux-64:
+ - conda: https://prefix.dev/conda-forge/linux-64/_openmp_mutex-4.5-3_kmp_llvm.conda
+ - conda: https://prefix.dev/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/astroid-3.3.10-py310hff52083_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.29.4-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/brotli-python-1.1.0-py310hf71b8c6_2.conda
- conda: https://prefix.dev/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda
- - conda: https://prefix.dev/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/cffi-1.17.1-py310h8deb56e_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.0-pyhd8ed1ab_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/contourpy-1.3.1-py310h3788b33_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/coverage-7.6.10-py310h89163eb_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/cpython-3.10.16-py310hd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/cytoolz-1.0.1-py310ha75aee5_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/dask-2024.12.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/dask-core-2024.12.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/dask-expr-1.1.21-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/distributed-2024.12.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda
- - conda: https://prefix.dev/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/coverage-7.8.2-py310h89163eb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cpython-3.10.17-py310hd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dill-0.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/furo-2024.8.6-pyhd8ed1ab_2.conda
- conda: https://prefix.dev/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/gmpy2-2.1.5-py310he8512ff_3.conda
- - conda: https://prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/gmpy2-2.2.1-py310he8512ff_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/icu-75.1-he02047a_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda
- conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/jax-0.4.35-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/jaxlib-0.4.35-cpu_py310h430587c_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libarrow-18.1.0-h9d9f30d_8_cpu.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_8_cpu.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_8_cpu.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_8_cpu.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libblas-3.9.0-26_linux64_mkl.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libcblas-3.9.0-26_linux64_mkl.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libev-4.33-hd590300_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2
- - conda: https://prefix.dev/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ipython-8.37.0-pyh8f84b5b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/isort-6.0.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/jaxlib-0.6.0-cpu_py310hc96afab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libabseil-20250127.1-cxx17_hbbce691_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libblas-3.9.0-31_hfdb39a5_mkl.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcblas-3.9.0-31_h372d94f_mkl.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgrpc-1.71.0-h8e591d7_1.conda
- conda: https://prefix.dev/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/liblapack-3.9.0-26_linux64_mkl.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libllvm14-14.0.6-hcd5def8_4.conda
- - conda: https://prefix.dev/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/liblapack-3.9.0-31_hc41d3b0_mkl.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda
- conda: https://prefix.dev/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_8_cpu.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libtorch-2.5.1-cpu_mkl_ha4c6a95_109.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libre2-11-2024.07.02-hba17884_3.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.50.0-hee588c1_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libtorch-2.7.0-cpu_mkl_hf6ddc5a_100.conda
- conda: https://prefix.dev/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libuv-1.51.0-hb9d3cd8_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/llvm-openmp-19.1.6-h024ca30_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/llvmlite-0.43.0-py310h1a6248f_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/llvm-openmp-20.1.6-h024ca30_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/llvmlite-0.44.0-py310h1a6248f_1.conda
- conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/linux-64/lz4-4.3.3-py310h80b8a69_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/linux-64/markupsafe-3.0.2-py310h89163eb_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mdit-py-plugins-0.4.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda
- conda: https://prefix.dev/conda-forge/linux-64/ml_dtypes-0.5.1-py310h5eaa309_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda
- conda: https://prefix.dev/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda
- conda: https://prefix.dev/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/msgpack-python-1.1.0-py310h3788b33_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/ncurses-6.5-h2d0b736_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/mypy-1.16.0-py310ha75aee5_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/myst-parser-4.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda
- conda: https://prefix.dev/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/numba-0.60.0-py310h5dc88bb_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/numpy-2.0.2-py310hd6e36ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/opt-einsum-3.4.0-hd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/nodejs-22.13.0-hf235a45_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/nodejs-wheel-22.16.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/numba-0.61.2-py310h699fe88_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/numpy-2.2.6-py310hefbff90_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda
- conda: https://prefix.dev/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/pandas-2.2.3-py310h5eaa309_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/optree-0.16.0-py310h3788b33_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/pillow-11.1.0-py310h7e6dc6c_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/psutil-6.1.1-py310ha75aee5_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda
- - conda: https://prefix.dev/conda-forge/linux-64/pyarrow-18.1.0-py310hff52083_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/pyarrow-core-18.1.0-py310hac404ae_0_cpu.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda
+ - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/psutil-7.0.0-py310ha75aee5_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyhc790b64_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyh217bc35_3.conda
- conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pylint-3.3.7-pyhe01879c_0.conda
- conda: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/python-3.10.16-he725a3c_1_cpython.conda
- - conda: https://prefix.dev/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/python_abi-3.10-5_cp310.conda
- - conda: https://prefix.dev/conda-forge/linux-64/pytorch-2.5.1-cpu_mkl_py310_h1c118fa_109.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/pyyaml-6.0.2-py310ha75aee5_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8228510_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/s2n-1.5.10-hb5b8611_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/scipy-1.15.1-py310hfa6ec8c_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.8.0-pyhff2d567_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/sleef-3.7-h1b44611_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/sparse-0.15.4-pyh267e887_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/python-3.10.17-hd6af730_0_cpython.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.10-7_cp310.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/pytorch-2.7.0-cpu_mkl_py310_h8ec2884_100.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/pyyaml-6.0.2-py310h89163eb_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/re2-2024.07.02-h9925aae_3.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/scipy-1.15.2-py310h1d65ade_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/sleef-3.8-h1b44611_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sparse-0.17.0-pyhcf101f3_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-autodoc-typehints-3.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-basic-ng-1.0.0b2-pyhd8ed1ab_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-copybutton-0.5.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sympy-1.14.0-pyh2585a3b_105.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda
- conda: https://prefix.dev/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tblib-3.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda
- conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_1.conda
- conda: https://prefix.dev/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/tornado-6.4.2-py310ha75aee5_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/xyzservices-2024.9.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/ukkonen-1.0.1-py310h3788b33_5.conda
+ - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/zstandard-0.23.0-py310ha39cb0e_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda
- - pypi: .
- osx-arm64:
- - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.10.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-auth-0.8.0-hfc2798a_16.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/aws-crt-cpp-0.29.8-h23176ea_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h794939a_5.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/bokeh-3.6.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/brotli-python-1.1.0-py310hb4ad77e_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/cffi-1.17.1-py310h497396d_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.0-pyhd8ed1ab_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/contourpy-1.3.1-py310h7f4e7e6_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/coverage-7.6.10-py310hc74094e_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/cpython-3.10.16-py310hd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/cytoolz-1.0.1-py310h078409c_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/dask-2024.12.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/dask-core-2024.12.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/dask-expr-1.1.21-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/distributed-2024.12.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/gmpy2-2.1.5-py310h805dbd7_3.conda
- - conda: https://prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/jax-0.4.35-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/jaxlib-0.4.35-cpu_py310h604521f_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-18.1.0-hf3eb8e5_8_cpu.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_8_cpu.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_8_cpu.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_8_cpu.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2
- - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libllvm14-14.0.6-hd1a9a77_4.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_8_cpu.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libtorch-2.5.1-cpu_generic_h266890c_9.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/llvmlite-0.43.0-py310h9fcfb1b_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/osx-arm64/lz4-4.3.3-py310hedecf87_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/markupsafe-3.0.2-py310hc74094e_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/ml_dtypes-0.5.1-py310h5936506_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda
- - conda: https://prefix.dev/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/msgpack-python-1.1.0-py310h7306fd8_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/osx-arm64/numba-0.60.0-py310h0628f0e_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/numpy-2.0.2-py310h530be0a_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/opt-einsum-3.4.0-hd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/pandas-2.2.3-py310hfd37619_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/pillow-11.1.0-py310h61efb56_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/psutil-6.1.1-py310h078409c_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/pyarrow-18.1.0-py310hb6292c7_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/pyarrow-core-18.1.0-py310hc17921c_0_cpu.conda
- - conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/python-3.10.16-h870587a_1_cpython.conda
- - conda: https://prefix.dev/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/python_abi-3.10-5_cp310.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/pytorch-2.5.1-cpu_generic_py310_h3256795_9.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/pyyaml-6.0.2-py310h493c2e1_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/scipy-1.15.1-py310hd50a768_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.8.0-pyhff2d567_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/sleef-3.7-h8391f65_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/sparse-0.15.4-pyh267e887_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda
- - conda: https://prefix.dev/conda-forge/noarch/tblib-3.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/tornado-6.4.2-py310h078409c_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/xyzservices-2024.9.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/zstandard-0.23.0-py310h2665a74_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda
- - pypi: .
- win-64:
- - conda: https://prefix.dev/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.10.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/aws-c-auth-0.8.0-hd11252f_16.conda
- - conda: https://prefix.dev/conda-forge/win-64/aws-c-cal-0.8.1-h099ea23_3.conda
- - conda: https://prefix.dev/conda-forge/win-64/aws-c-common-0.10.6-h2466b09_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/aws-c-compression-0.3.0-h099ea23_5.conda
- - conda: https://prefix.dev/conda-forge/win-64/aws-c-event-stream-0.5.0-h85d8506_11.conda
- - conda: https://prefix.dev/conda-forge/win-64/aws-c-http-0.9.2-h3888f84_4.conda
- - conda: https://prefix.dev/conda-forge/win-64/aws-c-io-0.15.3-hc5a9e45_5.conda
- - conda: https://prefix.dev/conda-forge/win-64/aws-c-mqtt-0.11.0-h2c94728_12.conda
- - conda: https://prefix.dev/conda-forge/win-64/aws-c-s3-0.7.7-h6a38c86_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/aws-c-sdkutils-0.2.2-h099ea23_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/aws-checksums-0.2.2-h099ea23_4.conda
- - conda: https://prefix.dev/conda-forge/win-64/aws-crt-cpp-0.29.8-h703467b_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/aws-sdk-cpp-1.11.458-h41fbdec_5.conda
- - conda: https://prefix.dev/conda-forge/noarch/bokeh-3.6.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/brotli-python-1.1.0-py310h9e98ed7_2.conda
- - conda: https://prefix.dev/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda
- - conda: https://prefix.dev/conda-forge/win-64/c-ares-1.34.4-h2466b09_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/ca-certificates-2024.12.14-h56e8100_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/cffi-1.17.1-py310ha8f682b_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/click-8.1.8-pyh7428d3b_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.0-pyhd8ed1ab_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/contourpy-1.3.1-py310hc19bc0b_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/coverage-7.6.10-py310h38315fa_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/cytoolz-1.0.1-py310ha8f682b_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/dask-2024.12.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/dask-core-2024.12.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/dask-expr-1.1.21-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/distributed-2024.12.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/freetype-2.12.1-hdaf720e_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda
- - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/lcms2-2.16-h67d730c_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/win-64/libabseil-20240722.0-cxx17_h4eb7d71_4.conda
- - conda: https://prefix.dev/conda-forge/win-64/libarrow-18.1.0-hb928929_8_cpu.conda
- - conda: https://prefix.dev/conda-forge/win-64/libarrow-acero-18.1.0-h7d8d6a5_8_cpu.conda
- - conda: https://prefix.dev/conda-forge/win-64/libarrow-dataset-18.1.0-h7d8d6a5_8_cpu.conda
- - conda: https://prefix.dev/conda-forge/win-64/libarrow-substrait-18.1.0-h3dbecdf_8_cpu.conda
- - conda: https://prefix.dev/conda-forge/win-64/libblas-3.9.0-26_win64_mkl.conda
- - conda: https://prefix.dev/conda-forge/win-64/libbrotlicommon-1.1.0-h2466b09_2.conda
- - conda: https://prefix.dev/conda-forge/win-64/libbrotlidec-1.1.0-h2466b09_2.conda
- - conda: https://prefix.dev/conda-forge/win-64/libbrotlienc-1.1.0-h2466b09_2.conda
- - conda: https://prefix.dev/conda-forge/win-64/libcblas-3.9.0-26_win64_mkl.conda
- - conda: https://prefix.dev/conda-forge/win-64/libcrc32c-1.1.2-h0e60522_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/win-64/libcurl-8.11.1-h88aaa65_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libdeflate-1.23-h9062f6e_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libevent-2.1.12-h3671451_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2
- - conda: https://prefix.dev/conda-forge/win-64/libgcc-14.2.0-h1383e82_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/libgomp-14.2.0-h1383e82_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/libgoogle-cloud-2.33.0-h95c5cb2_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/libgoogle-cloud-storage-2.33.0-he5eb982_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/libgrpc-1.67.1-h0ac93cb_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda
- - conda: https://prefix.dev/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda
- - conda: https://prefix.dev/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/liblapack-3.9.0-26_win64_mkl.conda
- - conda: https://prefix.dev/conda-forge/win-64/liblzma-5.6.3-h2466b09_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/libparquet-18.1.0-ha850022_8_cpu.conda
- - conda: https://prefix.dev/conda-forge/win-64/libpng-1.6.45-had7236b_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libprotobuf-5.28.3-h8309712_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/libre2-11-2024.07.02-h4eb7d71_2.conda
- - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.47.2-h67fdade_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libssh2-1.11.1-he619c9f_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libthrift-0.21.0-hbe90ef8_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libtiff-4.7.0-h797046b_3.conda
- - conda: https://prefix.dev/conda-forge/win-64/libutf8proc-2.9.0-h2466b09_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_8.conda
- - conda: https://prefix.dev/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libxml2-2.13.5-he286e8c_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda
- - conda: https://prefix.dev/conda-forge/win-64/llvmlite-0.43.0-py310h0288bfe_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/win-64/lz4-4.3.3-py310hd8baafb_2.conda
- - conda: https://prefix.dev/conda-forge/win-64/lz4-c-1.10.0-h2466b09_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/markupsafe-3.0.2-py310h38315fa_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda
- - conda: https://prefix.dev/conda-forge/win-64/msgpack-python-1.1.0-py310hc19bc0b_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/numba-0.60.0-py310h7793332_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/numpy-2.0.2-py310h1ec8c79_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/openjpeg-2.5.3-h4d64b90_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/openssl-3.4.0-ha4e3fda_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/orc-2.0.3-haf104fe_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda
- - conda: https://prefix.dev/conda-forge/win-64/pandas-2.2.3-py310hb4db72f_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/pillow-11.1.0-py310h9595edc_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/psutil-6.1.1-py310ha8f682b_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda
- - conda: https://prefix.dev/conda-forge/win-64/pyarrow-18.1.0-py310h5588dad_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/pyarrow-core-18.1.0-py310h399dd74_0_cpu.conda
- - conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/python-3.10.16-h37870fc_1_cpython.conda
- - conda: https://prefix.dev/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/python_abi-3.10-5_cp310.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/pyyaml-6.0.2-py310ha8f682b_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/re2-2024.07.02-haf4117d_2.conda
- - conda: https://prefix.dev/conda-forge/win-64/scipy-1.15.1-py310h164493e_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/snappy-1.2.1-h500f7fa_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/sparse-0.15.4-pyh267e887_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tblib-3.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/tk-8.6.13-h5226925_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/tornado-6.4.2-py310ha8f682b_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/vc-14.3-ha32ba9b_23.conda
- - conda: https://prefix.dev/conda-forge/win-64/vc14_runtime-14.42.34433-he29a5d6_23.conda
- - conda: https://prefix.dev/conda-forge/win-64/vs2015_runtime-14.42.34433-hdffcdeb_23.conda
- - conda: https://prefix.dev/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda
- - conda: https://prefix.dev/conda-forge/win-64/xorg-libxau-1.0.12-h0e40799_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/xorg-libxdmcp-1.1.5-h0e40799_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/xyzservices-2024.9.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/zstandard-0.23.0-py310he5e10e1_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda
- - pypi: .
- ci-py310:
- channels:
- - url: https://prefix.dev/conda-forge/
- indexes:
- - https://pypi.org/simple
- packages:
- linux-64:
- - conda: https://prefix.dev/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2
- - conda: https://prefix.dev/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.10.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda
- - conda: https://prefix.dev/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/coverage-7.6.10-py310h89163eb_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2
- - conda: https://prefix.dev/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda
- - conda: https://prefix.dev/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/ncurses-6.5-h2d0b736_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/numpy-2.2.1-py310h5851e9f_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/python-3.10.16-he725a3c_1_cpython.conda
- - conda: https://prefix.dev/conda-forge/linux-64/python_abi-3.10-5_cp310.conda
- - conda: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8228510_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda
- - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda
- - pypi: .
- osx-arm64:
- - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.10.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/coverage-7.6.10-py310hc74094e_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2
- - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/numpy-2.2.1-py310ha1ddda0_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/python-3.10.16-h870587a_1_cpython.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/python_abi-3.10-5_cp310.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda
- - pypi: .
- win-64:
- - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.10.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda
- - conda: https://prefix.dev/conda-forge/win-64/ca-certificates-2024.12.14-h56e8100_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/coverage-7.6.10-py310h38315fa_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda
- - conda: https://prefix.dev/conda-forge/win-64/libblas-3.9.0-26_win64_mkl.conda
- - conda: https://prefix.dev/conda-forge/win-64/libcblas-3.9.0-26_win64_mkl.conda
- - conda: https://prefix.dev/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2
- - conda: https://prefix.dev/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda
- - conda: https://prefix.dev/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda
- - conda: https://prefix.dev/conda-forge/win-64/liblapack-3.9.0-26_win64_mkl.conda
- - conda: https://prefix.dev/conda-forge/win-64/liblzma-5.6.3-h2466b09_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.47.2-h67fdade_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_8.conda
- - conda: https://prefix.dev/conda-forge/win-64/libxml2-2.13.5-he286e8c_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda
- - conda: https://prefix.dev/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda
- - conda: https://prefix.dev/conda-forge/win-64/numpy-2.2.1-py310hb9d903e_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/openssl-3.4.0-ha4e3fda_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/python-3.10.16-h37870fc_1_cpython.conda
- - conda: https://prefix.dev/conda-forge/win-64/python_abi-3.10-5_cp310.conda
- - conda: https://prefix.dev/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/tk-8.6.13-h5226925_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/vc-14.3-ha32ba9b_23.conda
- - conda: https://prefix.dev/conda-forge/win-64/vc14_runtime-14.42.34433-he29a5d6_23.conda
- - conda: https://prefix.dev/conda-forge/win-64/vs2015_runtime-14.42.34433-hdffcdeb_23.conda
- - pypi: .
- ci-py313:
- channels:
- - url: https://prefix.dev/conda-forge/
- indexes:
- - https://pypi.org/simple
- packages:
- linux-64:
- - conda: https://prefix.dev/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2
- - conda: https://prefix.dev/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.10.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda
- - conda: https://prefix.dev/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/coverage-7.6.10-py313h8060acc_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2
- - conda: https://prefix.dev/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda
- - conda: https://prefix.dev/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libmpdec-4.0.0-h4bc722e_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/ncurses-6.5-h2d0b736_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/numpy-2.2.1-py313hb30382a_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/python-3.13.1-ha99a958_105_cp313.conda
- - conda: https://prefix.dev/conda-forge/linux-64/python_abi-3.13-5_cp313.conda
- - conda: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8228510_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda
- - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda
- - pypi: .
- osx-arm64:
- - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.10.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/coverage-7.6.10-py313ha9b7d5b_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2
- - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libmpdec-4.0.0-h99b78c6_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/numpy-2.2.1-py313ha4a2180_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/python-3.13.1-h4f43103_105_cp313.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/python_abi-3.13-5_cp313.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda
- - pypi: .
- win-64:
- - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.10.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda
- - conda: https://prefix.dev/conda-forge/win-64/ca-certificates-2024.12.14-h56e8100_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/coverage-7.6.10-py313hb4c8b1a_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda
- - conda: https://prefix.dev/conda-forge/win-64/libblas-3.9.0-26_win64_mkl.conda
- - conda: https://prefix.dev/conda-forge/win-64/libcblas-3.9.0-26_win64_mkl.conda
- - conda: https://prefix.dev/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2
- - conda: https://prefix.dev/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda
- - conda: https://prefix.dev/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda
- - conda: https://prefix.dev/conda-forge/win-64/liblapack-3.9.0-26_win64_mkl.conda
- - conda: https://prefix.dev/conda-forge/win-64/liblzma-5.6.3-h2466b09_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.47.2-h67fdade_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_8.conda
- - conda: https://prefix.dev/conda-forge/win-64/libxml2-2.13.5-he286e8c_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda
- - conda: https://prefix.dev/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda
- - conda: https://prefix.dev/conda-forge/win-64/numpy-2.2.1-py313hd65a2fa_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/openssl-3.4.0-ha4e3fda_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/python-3.13.1-h071d269_105_cp313.conda
- - conda: https://prefix.dev/conda-forge/win-64/python_abi-3.13-5_cp313.conda
- - conda: https://prefix.dev/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/tk-8.6.13-h5226925_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/vc-14.3-ha32ba9b_23.conda
- - conda: https://prefix.dev/conda-forge/win-64/vc14_runtime-14.42.34433-he29a5d6_23.conda
- - conda: https://prefix.dev/conda-forge/win-64/vs2015_runtime-14.42.34433-hdffcdeb_23.conda
- - pypi: .
- default:
- channels:
- - url: https://prefix.dev/conda-forge/
- indexes:
- - https://pypi.org/simple
- packages:
- linux-64:
- - conda: https://prefix.dev/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2
- - conda: https://prefix.dev/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.10.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda
- - conda: https://prefix.dev/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2
- - conda: https://prefix.dev/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libmpdec-4.0.0-h4bc722e_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/ncurses-6.5-h2d0b736_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/python-3.13.1-ha99a958_105_cp313.conda
- - conda: https://prefix.dev/conda-forge/linux-64/python_abi-3.13-5_cp313.conda
- - conda: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8228510_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda
- - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda
- - pypi: .
- osx-arm64:
- - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.10.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2
- - conda: https://prefix.dev/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libmpdec-4.0.0-h99b78c6_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/python-3.13.1-h4f43103_105_cp313.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/python_abi-3.13-5_cp313.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda
- - pypi: .
- win-64:
- - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.10.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda
- - conda: https://prefix.dev/conda-forge/win-64/ca-certificates-2024.12.14-h56e8100_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2
- - conda: https://prefix.dev/conda-forge/win-64/liblzma-5.6.3-h2466b09_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.47.2-h67fdade_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda
- - conda: https://prefix.dev/conda-forge/win-64/openssl-3.4.0-ha4e3fda_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/python-3.13.1-h071d269_105_cp313.conda
- - conda: https://prefix.dev/conda-forge/win-64/python_abi-3.13-5_cp313.conda
- - conda: https://prefix.dev/conda-forge/win-64/tk-8.6.13-h5226925_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/vc-14.3-ha32ba9b_23.conda
- - conda: https://prefix.dev/conda-forge/win-64/vc14_runtime-14.42.34433-he29a5d6_23.conda
- - conda: https://prefix.dev/conda-forge/win-64/vs2015_runtime-14.42.34433-hdffcdeb_23.conda
- - pypi: .
- dev:
- channels:
- - url: https://prefix.dev/conda-forge/
- indexes:
- - https://pypi.org/simple
- packages:
- linux-64:
- - conda: https://prefix.dev/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2
- - conda: https://prefix.dev/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/zstandard-0.23.0-py310ha75aee5_2.conda
+ - pypi: ./
+ osx-64:
- conda: https://prefix.dev/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.10.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/astroid-3.3.8-py313h78bf25f_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/astroid-3.3.10-py310h2ec42d9_0.conda
- conda: https://prefix.dev/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/basedmypy-2.9.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.23.2-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/basedtyping-0.1.10-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/brotli-python-1.1.0-py313h46c70d0_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda
- - conda: https://prefix.dev/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/cffi-1.17.1-py313hfab6e84_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.29.4-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/brotli-python-1.1.0-py310h53e7c6a_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/c-ares-1.34.5-hf13058a_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/cffi-1.17.1-py310hfce808e_0.conda
- conda: https://prefix.dev/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/coverage-7.6.10-py313h8060acc_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/dill-0.3.9-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/coverage-7.8.2-py310h8e2f543_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cpython-3.10.17-py310hd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dill-0.4.0-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.5.1-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/furo-2024.8.6-pyhd8ed1ab_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/icu-75.1-he02047a_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/identify-2.6.5-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/gmp-6.3.0-hf036a51_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/gmpy2-2.2.1-py310he278d95_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda
- conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/ipython-8.31.0-pyh707e725_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/isort-5.13.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ipython-8.37.0-pyh8f84b5b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/isort-6.0.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/jaxlib-0.6.0-cpu_py310h22b337c_0.conda
- conda: https://prefix.dev/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2
- - conda: https://prefix.dev/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda
- - conda: https://prefix.dev/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libmpdec-4.0.0-h4bc722e_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libabseil-20250127.1-cxx17_h0e468a2_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libblas-3.9.0-20_osx64_mkl.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libcblas-3.9.0-20_osx64_mkl.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libcxx-20.1.6-hf95d169_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libgrpc-1.71.0-h7d722e6_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libhwloc-2.11.2-default_h4cdd727_1001.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/liblapack-3.9.0-20_osx64_mkl.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libprotobuf-5.29.3-h1c7185b_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libre2-11-2024.07.02-h08ce7b7_3.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libsqlite-3.50.0-hdb6dae5_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libtorch-2.7.0-cpu_mkl_h3891332_100.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libuv-1.51.0-h4cb831e_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/llvm-openmp-20.1.6-ha54dae1_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/llvmlite-0.44.0-py310hb13c577_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
- conda: https://prefix.dev/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/markupsafe-3.0.2-py313h8060acc_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/markupsafe-3.0.2-py310h8e2f543_1.conda
- conda: https://prefix.dev/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/mdit-py-plugins-0.4.2-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/myst-parser-4.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/ncurses-6.5-h2d0b736_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/mkl-2023.2.0-h54c2260_50500.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/ml_dtypes-0.5.1-py310h96a9d13_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/mpc-1.3.1-h9d8efa1_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/mpfr-4.2.1-haed47dc_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/mypy-1.16.0-py310hbb8c376_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/myst-parser-4.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda
- conda: https://prefix.dev/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/nodejs-22.12.0-hf235a45_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/nodejs-wheel-22.13.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/numpy-2.2.1-py313hb30382a_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/nodejs-22.13.0-hffbc63d_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/nodejs-wheel-22.16.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/numba-0.61.2-py310h6fcc139_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/numpy-2.2.6-py310h07c5b4d_0.conda
- conda: https://prefix.dev/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/optree-0.16.0-py310hf166250_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
- conda: https://prefix.dev/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda
- - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/psutil-7.0.0-py310hbb8c376_0.conda
- conda: https://prefix.dev/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyhc790b64_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyh217bc35_3.conda
- conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda
- conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/pylint-3.3.3-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pylint-3.3.7-pyhe01879c_0.conda
- conda: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/python-3.13.1-ha99a958_105_cp313.conda
- - conda: https://prefix.dev/conda-forge/linux-64/python_abi-3.13-5_cp313.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/pyyaml-6.0.2-py313h536fd9c_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8228510_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/python-3.10.17-h93e8a92_0_cpython.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.10-7_cp310.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/pytorch-2.7.0-cpu_mkl_py310_h73f974a_100.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/pyyaml-6.0.2-py310h8e2f543_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/re2-2024.07.02-hf8a452e_3.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda
- conda: https://prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.8.0-pyhff2d567_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/scipy-1.15.2-py310hef62574_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/sleef-3.8-hfe0d17b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sparse-0.17.0-pyhcf101f3_0.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/sphinx-autodoc-typehints-3.0.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/sphinx-basic-ng-1.0.0b2-pyhd8ed1ab_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-autodoc-typehints-3.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-basic-ng-1.0.0b2-pyhd8ed1ab_3.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinx-copybutton-0.5.2-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda
@@ -950,122 +413,163 @@ environments:
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sympy-1.14.0-pyh2585a3b_105.conda
- conda: https://prefix.dev/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/tbb-2021.13.0-hb890de9_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda
- conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/ukkonen-1.0.1-py313h33d0bda_5.conda
- - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/virtualenv-20.28.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/ukkonen-1.0.1-py310hfa8da69_5.conda
+ - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2
- - conda: https://prefix.dev/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/zstandard-0.23.0-py313h80202fe_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda
- - pypi: .
+ - conda: https://prefix.dev/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/zstandard-0.23.0-py310hbb8c376_2.conda
+ - pypi: ./
osx-arm64:
- conda: https://prefix.dev/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.10.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/astroid-3.3.8-py313h8f79df9_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/astroid-3.3.10-py310hbe9552e_0.conda
- conda: https://prefix.dev/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/basedmypy-2.9.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.23.2-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/basedtyping-0.1.10-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/brotli-python-1.1.0-py313h3579c5c_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.29.4-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/brotli-python-1.1.0-py310hb4ad77e_2.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/cffi-1.17.1-py313hc845a76_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/c-ares-1.34.5-h5505292_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/cffi-1.17.1-py310h497396d_0.conda
- conda: https://prefix.dev/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/coverage-7.6.10-py313ha9b7d5b_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/dill-0.3.9-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/coverage-7.8.2-py310hc74094e_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cpython-3.10.17-py310hd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dill-0.4.0-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.5.1-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/furo-2024.8.6-pyhd8ed1ab_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/gmpy2-2.2.1-py310h805dbd7_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/identify-2.6.5-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda
- conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/ipython-8.31.0-pyh707e725_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/isort-5.13.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ipython-8.37.0-pyh8f84b5b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/isort-6.0.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/jaxlib-0.6.0-cpu_py310h2c532f2_0.conda
- conda: https://prefix.dev/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2
- - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libmpdec-4.0.0-h99b78c6_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libabseil-20250127.1-cxx17_h07bc746_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-20.1.6-ha82da77_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libgrpc-1.71.0-h857da87_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libprotobuf-5.29.3-hccd9074_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libre2-11-2024.07.02-hd41c47c_3.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.50.0-h3f77e49_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libtorch-2.7.0-cpu_generic_h4059bed_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libuv-1.51.0-h5505292_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/llvm-openmp-20.1.6-hdb05f8b_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/llvmlite-0.44.0-py310hed9eb73_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
- conda: https://prefix.dev/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/markupsafe-3.0.2-py313ha9b7d5b_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/markupsafe-3.0.2-py310hc74094e_1.conda
- conda: https://prefix.dev/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/mdit-py-plugins-0.4.2-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/myst-parser-4.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/ml_dtypes-0.5.1-py310h5936506_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/mypy-1.16.0-py310h078409c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/myst-parser-4.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda
- conda: https://prefix.dev/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/nodejs-22.12.0-h02a13b7_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/nodejs-wheel-22.13.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/numpy-2.2.1-py313ha4a2180_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/nodejs-22.13.0-h02a13b7_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/nodejs-wheel-22.16.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/osx-arm64/numba-0.61.2-py310h75d646b_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/numpy-2.2.6-py310h4d83441_0.conda
- conda: https://prefix.dev/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/optree-0.16.0-py310h7f4e7e6_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
- conda: https://prefix.dev/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda
- - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/psutil-7.0.0-py310h078409c_0.conda
- conda: https://prefix.dev/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyhc790b64_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyh217bc35_3.conda
- conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda
- conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/pylint-3.3.3-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pylint-3.3.7-pyhe01879c_0.conda
- conda: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/python-3.13.1-h4f43103_105_cp313.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/python_abi-3.13-5_cp313.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/pyyaml-6.0.2-py313h20a7fcf_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/python-3.10.17-h6cefb37_0_cpython.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.10-7_cp310.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/pytorch-2.7.0-cpu_generic_py310_h10edff7_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/pyyaml-6.0.2-py310hc74094e_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_3.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda
- conda: https://prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.8.0-pyhff2d567_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/scipy-1.15.2-py310h32ab4ed_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/sleef-3.8-h8391f65_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sparse-0.17.0-pyhcf101f3_0.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/sphinx-autodoc-typehints-3.0.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/sphinx-basic-ng-1.0.0b2-pyhd8ed1ab_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-autodoc-typehints-3.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-basic-ng-1.0.0b2-pyhd8ed1ab_3.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinx-copybutton-0.5.2-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda
@@ -1074,117 +578,143 @@ environments:
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sympy-1.14.0-pyh2585a3b_105.conda
- conda: https://prefix.dev/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda
- conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/ukkonen-1.0.1-py313hf9c7212_5.conda
- - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/virtualenv-20.28.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/ukkonen-1.0.1-py310h7306fd8_5.conda
+ - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/zstandard-0.23.0-py313hf2da073_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda
- - pypi: .
+ - conda: https://prefix.dev/conda-forge/osx-arm64/zstandard-0.23.0-py310h078409c_2.conda
+ - pypi: ./
win-64:
- conda: https://prefix.dev/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.10.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/astroid-3.3.8-py313hfa70ccb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/astroid-3.3.10-py310h5588dad_0.conda
- conda: https://prefix.dev/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/basedmypy-2.9.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.23.2-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/basedtyping-0.1.10-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/brotli-python-1.1.0-py313h5813708_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.29.4-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/brotli-python-1.1.0-py310h9e98ed7_2.conda
- conda: https://prefix.dev/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda
- - conda: https://prefix.dev/conda-forge/win-64/ca-certificates-2024.12.14-h56e8100_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/cffi-1.17.1-py313ha7868ed_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/cffi-1.17.1-py310ha8f682b_0.conda
- conda: https://prefix.dev/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh7428d3b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/coverage-7.6.10-py313hb4c8b1a_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/dill-0.3.9-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/coverage-7.8.2-py310h38315fa_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dill-0.4.0-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.5.1-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/furo-2024.8.6-pyhd8ed1ab_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/identify-2.6.5-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda
- conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda
- - conda: https://prefix.dev/conda-forge/noarch/ipython-8.31.0-pyh7428d3b_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/isort-5.13.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ipython-8.37.0-pyha7b4d00_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/isort-6.0.1-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libblas-3.9.0-26_win64_mkl.conda
- - conda: https://prefix.dev/conda-forge/win-64/libcblas-3.9.0-26_win64_mkl.conda
- - conda: https://prefix.dev/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libabseil-20250127.1-cxx17_h4eb7d71_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda
- conda: https://prefix.dev/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda
- - conda: https://prefix.dev/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda
- - conda: https://prefix.dev/conda-forge/win-64/liblapack-3.9.0-26_win64_mkl.conda
- - conda: https://prefix.dev/conda-forge/win-64/liblzma-5.6.3-h2466b09_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.47.2-h67fdade_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_8.conda
- - conda: https://prefix.dev/conda-forge/win-64/libxml2-2.13.5-he286e8c_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libprotobuf-5.29.3-he9d8c4a_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.50.0-h67fdade_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libtorch-2.7.0-cpu_mkl_hf54a72f_100.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libuv-1.51.0-h2466b09_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda
- conda: https://prefix.dev/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda
+ - conda: https://prefix.dev/conda-forge/win-64/llvmlite-0.44.0-py310h0288bfe_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
- conda: https://prefix.dev/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/markupsafe-3.0.2-py313hb4c8b1a_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/markupsafe-3.0.2-py310h38315fa_1.conda
- conda: https://prefix.dev/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/mdit-py-plugins-0.4.2-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda
- - conda: https://prefix.dev/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/myst-parser-4.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/mypy-1.16.0-py310ha8f682b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/myst-parser-4.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda
- conda: https://prefix.dev/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/nodejs-22.12.0-hfeaa22a_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/nodejs-wheel-22.13.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/numpy-2.2.1-py313hd65a2fa_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/nodejs-22.13.0-hfeaa22a_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/nodejs-wheel-22.16.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/numba-0.61.2-py310h7793332_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/numpy-2.2.6-py310h4987827_0.conda
- conda: https://prefix.dev/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/openssl-3.4.0-ha4e3fda_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda
+ - conda: https://prefix.dev/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/optree-0.16.0-py310hc19bc0b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
- conda: https://prefix.dev/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda
- - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/psutil-7.0.0-py310ha8f682b_0.conda
- conda: https://prefix.dev/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyhc790b64_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyh6a1d191_3.conda
- conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda
- conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/pylint-3.3.3-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pylint-3.3.7-pyhe01879c_0.conda
- conda: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/python-3.13.1-h071d269_105_cp313.conda
- - conda: https://prefix.dev/conda-forge/win-64/python_abi-3.13-5_cp313.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/pyyaml-6.0.2-py313ha7868ed_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/python-3.10.17-h8c5b53a_0_cpython.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.10-7_cp310.conda
+ - conda: https://prefix.dev/conda-forge/win-64/pytorch-2.7.0-cpu_mkl_py310_h8e04999_100.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/pyyaml-6.0.2-py310h38315fa_2.conda
- conda: https://prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.8.0-pyhff2d567_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/sleef-3.8-h7e360cc_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sparse-0.17.0-pyhcf101f3_0.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/sphinx-autodoc-typehints-3.0.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/sphinx-basic-ng-1.0.0b2-pyhd8ed1ab_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-autodoc-typehints-3.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-basic-ng-1.0.0b2-pyhd8ed1ab_3.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinx-copybutton-0.5.2-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda
@@ -1193,92 +723,229 @@ environments:
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sympy-1.14.0-pyh04b8f61_5.conda
- conda: https://prefix.dev/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda
- conda: https://prefix.dev/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/tk-8.6.13-h5226925_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda
- conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
- conda: https://prefix.dev/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/ukkonen-1.0.1-py313h1ec8472_5.conda
- - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/vc-14.3-ha32ba9b_23.conda
- - conda: https://prefix.dev/conda-forge/win-64/vc14_runtime-14.42.34433-he29a5d6_23.conda
- - conda: https://prefix.dev/conda-forge/noarch/virtualenv-20.28.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/vs2015_runtime-14.42.34433-hdffcdeb_23.conda
+ - conda: https://prefix.dev/conda-forge/win-64/ukkonen-1.0.1-py310hc19bc0b_5.conda
+ - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/vc-14.3-h2b53caa_26.conda
+ - conda: https://prefix.dev/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda
+ - conda: https://prefix.dev/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda
- conda: https://prefix.dev/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda
- conda: https://prefix.dev/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2
- - conda: https://prefix.dev/conda-forge/win-64/zstandard-0.23.0-py313h574b89f_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda
- - pypi: .
- docs:
+ - conda: https://prefix.dev/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/zstandard-0.23.0-py310ha8f682b_2.conda
+ - pypi: ./
+ dev-cuda:
channels:
- url: https://prefix.dev/conda-forge/
indexes:
- https://pypi.org/simple
packages:
linux-64:
- - conda: https://prefix.dev/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2
- - conda: https://prefix.dev/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2
+ - conda: https://prefix.dev/conda-forge/linux-64/_openmp_mutex-4.5-3_kmp_llvm.conda
- conda: https://prefix.dev/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.10.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/brotli-python-1.1.0-py313h46c70d0_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/astroid-3.3.10-py310hff52083_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.29.4-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/brotli-python-1.1.0-py310hf71b8c6_2.conda
- conda: https://prefix.dev/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda
- - conda: https://prefix.dev/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/cffi-1.17.1-py313hfab6e84_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/cffi-1.17.1-py310h8deb56e_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/coverage-7.8.2-py310h89163eb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cpython-3.10.17-py310hd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cuda-cccl_linux-64-12.9.27-ha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cuda-crt-dev_linux-64-12.9.41-ha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/cuda-crt-tools-12.9.41-ha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/cuda-cudart-12.9.37-h5888daf_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-dev_linux-64-12.9.37-h3f2d84a_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-static_linux-64-12.9.37-h3f2d84a_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cuda-cudart_linux-64-12.9.37-h3f2d84a_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/cuda-cuobjdump-12.9.26-hbd13f7d_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/cuda-cupti-12.9.19-h9ab20c4_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/cuda-cupti-dev-12.9.19-h9ab20c4_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/cuda-nvcc-tools-12.9.41-he02047a_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/cuda-nvdisasm-12.9.19-hbd13f7d_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/cuda-nvrtc-12.9.41-h5888daf_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/cuda-nvtx-12.9.19-h5888daf_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/cuda-nvvm-tools-12.9.41-he02047a_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cuda-version-12.9-h4f385c5_3.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/cudnn-9.10.1.4-h7646684_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/cupy-13.4.1-py310hab14140_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/cupy-core-13.4.1-py310h4564b94_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dill-0.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/fastrlock-0.8.3-py310h8c668a6_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.5.1-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/furo-2024.8.6-pyhd8ed1ab_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/gmpy2-2.2.1-py310he8512ff_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/icu-75.1-he02047a_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2
- - conda: https://prefix.dev/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libmpdec-4.0.0-h4bc722e_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ipython-8.37.0-pyh8f84b5b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/isort-6.0.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/jaxlib-0.6.0-cuda126py310hec873cc_200.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libabseil-20250127.1-cxx17_hbbce691_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libblas-3.9.0-31_hfdb39a5_mkl.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcap-2.75-h39aace5_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcblas-3.9.0-31_h372d94f_mkl.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcublas-12.9.0.13-h9ab20c4_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcublas-dev-12.9.0.13-h9ab20c4_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcudnn-9.10.1.4-h4840ae0_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcudnn-dev-9.10.1.4-hcd2ec93_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcudss-0.5.0.16-h14340ca_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcufft-11.4.0.6-h5888daf_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcufft-dev-11.4.0.6-h5888daf_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcufile-1.14.0.30-h628e99a_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcurand-10.3.10.19-h9ab20c4_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcurand-dev-10.3.10.19-h9ab20c4_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcusolver-11.7.4.40-h9ab20c4_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcusolver-dev-11.7.4.40-h9ab20c4_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcusparse-12.5.9.5-h5888daf_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcusparse-dev-12.5.9.5-h5888daf_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgcrypt-lib-1.11.1-hb9d3cd8_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgpg-error-1.55-h3f2d84a_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgrpc-1.71.0-h8e591d7_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/liblapack-3.9.0-31_hc41d3b0_mkl.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libmagma-2.9.0-h19665d7_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libnl-3.11.0-hb9d3cd8_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libnvjitlink-12.9.41-h5888daf_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libre2-11-2024.07.02-hba17884_3.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.50.0-hee588c1_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libsystemd0-257.6-h4e0b6ca_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libtorch-2.7.0-cuda126_mkl_h99b69db_300.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libudev1-257.6-hbe16f8c_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libuv-1.51.0-hb9d3cd8_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/llvm-openmp-20.1.6-h024ca30_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/llvmlite-0.44.0-py310h1a6248f_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda
- conda: https://prefix.dev/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/markupsafe-3.0.2-py313h8060acc_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/markupsafe-3.0.2-py310h89163eb_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/mdit-py-plugins-0.4.2-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/myst-parser-4.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/ncurses-6.5-h2d0b736_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/ml_dtypes-0.5.1-py310h5eaa309_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/mypy-1.16.0-py310ha75aee5_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/myst-parser-4.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/nccl-2.27.3.1-h9b8ff78_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/nodejs-22.13.0-hf235a45_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/nodejs-wheel-22.16.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/numba-0.61.2-py310h699fe88_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/numpy-2.2.6-py310hefbff90_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/optree-0.16.0-py310h3788b33_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda
+ - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/psutil-7.0.0-py310ha75aee5_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyhc790b64_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyh217bc35_3.conda
- conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda
- conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pylint-3.3.7-pyhe01879c_0.conda
- conda: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda
- - conda: https://prefix.dev/conda-forge/linux-64/python-3.13.1-ha99a958_105_cp313.conda
- - conda: https://prefix.dev/conda-forge/linux-64/python_abi-3.13-5_cp313.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/pyyaml-6.0.2-py313h536fd9c_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8228510_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/python-3.10.17-hd6af730_0_cpython.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.10-7_cp310.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/pytorch-2.7.0-cuda126_mkl_py310_h5ee0071_300.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/pyyaml-6.0.2-py310h89163eb_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/rdma-core-57.0-h5888daf_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/re2-2024.07.02-h9925aae_3.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda
- conda: https://prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/scipy-1.15.2-py310h1d65ade_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/sleef-3.8-h1b44611_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sparse-0.17.0-pyhcf101f3_0.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/sphinx-autodoc-typehints-3.0.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/sphinx-basic-ng-1.0.0b2-pyhd8ed1ab_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-autodoc-typehints-3.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-basic-ng-1.0.0b2-pyhd8ed1ab_3.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinx-copybutton-0.5.2-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda
@@ -1286,63 +953,333 @@ environments:
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda
+ - conda: https://prefix.dev/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sympy-1.14.0-pyh2585a3b_105.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/triton-3.3.0-cuda126py310h05ca3d0_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/ukkonen-1.0.1-py310h3788b33_5.conda
+ - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2
- - conda: https://prefix.dev/conda-forge/linux-64/zstandard-0.23.0-py313h80202fe_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda
- - pypi: .
+ - conda: https://prefix.dev/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/zstandard-0.23.0-py310ha75aee5_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda
+ - pypi: ./
+ osx-64:
+ - conda: https://prefix.dev/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/astroid-3.3.10-py310h2ec42d9_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.29.4-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/brotli-python-1.1.0-py310h53e7c6a_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/c-ares-1.34.5-hf13058a_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/cffi-1.17.1-py310hfce808e_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/coverage-7.8.2-py310h8e2f543_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cpython-3.10.17-py310hd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dill-0.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/furo-2024.8.6-pyhd8ed1ab_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/gmp-6.3.0-hf036a51_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/gmpy2-2.2.1-py310he278d95_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ipython-8.37.0-pyh8f84b5b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/isort-6.0.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/jaxlib-0.6.0-cpu_py310h22b337c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libabseil-20250127.1-cxx17_h0e468a2_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libblas-3.9.0-20_osx64_mkl.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libcblas-3.9.0-20_osx64_mkl.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libcxx-20.1.6-hf95d169_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libgrpc-1.71.0-h7d722e6_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libhwloc-2.11.2-default_h4cdd727_1001.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/liblapack-3.9.0-20_osx64_mkl.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libprotobuf-5.29.3-h1c7185b_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libre2-11-2024.07.02-h08ce7b7_3.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libsqlite-3.50.0-hdb6dae5_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libtorch-2.7.0-cpu_mkl_h3891332_100.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libuv-1.51.0-h4cb831e_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/llvm-openmp-20.1.6-ha54dae1_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/llvmlite-0.44.0-py310hb13c577_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/markupsafe-3.0.2-py310h8e2f543_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mdit-py-plugins-0.4.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/mkl-2023.2.0-h54c2260_50500.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/ml_dtypes-0.5.1-py310h96a9d13_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/mpc-1.3.1-h9d8efa1_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/mpfr-4.2.1-haed47dc_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/mypy-1.16.0-py310hbb8c376_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/myst-parser-4.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/nodejs-22.13.0-hffbc63d_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/nodejs-wheel-22.16.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/numba-0.61.2-py310h6fcc139_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/numpy-2.2.6-py310h07c5b4d_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/optree-0.16.0-py310hf166250_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda
+ - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/psutil-7.0.0-py310hbb8c376_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyhc790b64_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyh217bc35_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pylint-3.3.7-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/python-3.10.17-h93e8a92_0_cpython.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.10-7_cp310.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/pytorch-2.7.0-cpu_mkl_py310_h73f974a_100.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/pyyaml-6.0.2-py310h8e2f543_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/re2-2024.07.02-hf8a452e_3.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/scipy-1.15.2-py310hef62574_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/sleef-3.8-hfe0d17b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sparse-0.17.0-pyhcf101f3_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-autodoc-typehints-3.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-basic-ng-1.0.0b2-pyhd8ed1ab_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-copybutton-0.5.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sympy-1.14.0-pyh2585a3b_105.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/tbb-2021.13.0-hb890de9_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/ukkonen-1.0.1-py310hfa8da69_5.conda
+ - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/zstandard-0.23.0-py310hbb8c376_2.conda
+ - pypi: ./
osx-arm64:
- conda: https://prefix.dev/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.10.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/brotli-python-1.1.0-py313h3579c5c_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/astroid-3.3.10-py310hbe9552e_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.29.4-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/brotli-python-1.1.0-py310hb4ad77e_2.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/cffi-1.17.1-py313hc845a76_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/c-ares-1.34.5-h5505292_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/cffi-1.17.1-py310h497396d_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/coverage-7.8.2-py310hc74094e_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cpython-3.10.17-py310hd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dill-0.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.5.1-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/furo-2024.8.6-pyhd8ed1ab_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/gmpy2-2.2.1-py310h805dbd7_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2
- - conda: https://prefix.dev/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libmpdec-4.0.0-h99b78c6_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ipython-8.37.0-pyh8f84b5b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/isort-6.0.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/jaxlib-0.6.0-cpu_py310h2c532f2_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libabseil-20250127.1-cxx17_h07bc746_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-20.1.6-ha82da77_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libgrpc-1.71.0-h857da87_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libprotobuf-5.29.3-hccd9074_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libre2-11-2024.07.02-hd41c47c_3.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.50.0-h3f77e49_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libtorch-2.7.0-cpu_generic_h4059bed_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libuv-1.51.0-h5505292_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/llvm-openmp-20.1.6-hdb05f8b_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/llvmlite-0.44.0-py310hed9eb73_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
- conda: https://prefix.dev/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/markupsafe-3.0.2-py313ha9b7d5b_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/markupsafe-3.0.2-py310hc74094e_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/mdit-py-plugins-0.4.2-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/myst-parser-4.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/ml_dtypes-0.5.1-py310h5936506_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/mypy-1.16.0-py310h078409c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/myst-parser-4.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/nodejs-22.13.0-h02a13b7_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/nodejs-wheel-22.16.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/osx-arm64/numba-0.61.2-py310h75d646b_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/numpy-2.2.6-py310h4d83441_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/optree-0.16.0-py310h7f4e7e6_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda
+ - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/psutil-7.0.0-py310h078409c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyhc790b64_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyh217bc35_3.conda
- conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda
- conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pylint-3.3.7-pyhe01879c_0.conda
- conda: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/python-3.13.1-h4f43103_105_cp313.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/python_abi-3.13-5_cp313.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/pyyaml-6.0.2-py313h20a7fcf_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/python-3.10.17-h6cefb37_0_cpython.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.10-7_cp310.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/pytorch-2.7.0-cpu_generic_py310_h10edff7_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/pyyaml-6.0.2-py310hc74094e_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_3.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda
- conda: https://prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/scipy-1.15.2-py310h32ab4ed_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/sleef-3.8-h8391f65_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sparse-0.17.0-pyhcf101f3_0.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/sphinx-autodoc-typehints-3.0.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/sphinx-basic-ng-1.0.0b2-pyhd8ed1ab_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-autodoc-typehints-3.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-basic-ng-1.0.0b2-pyhd8ed1ab_3.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinx-copybutton-0.5.2-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda
@@ -1350,60 +1287,168 @@ environments:
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sympy-1.14.0-pyh2585a3b_105.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/ukkonen-1.0.1-py310h7306fd8_5.conda
+ - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2
- - conda: https://prefix.dev/conda-forge/osx-arm64/zstandard-0.23.0-py313hf2da073_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda
- - pypi: .
+ - conda: https://prefix.dev/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/zstandard-0.23.0-py310h078409c_2.conda
+ - pypi: ./
win-64:
+ - conda: https://prefix.dev/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda
- conda: https://prefix.dev/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.10.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/brotli-python-1.1.0-py313h5813708_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/astroid-3.3.10-py310h5588dad_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.29.4-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/brotli-python-1.1.0-py310h9e98ed7_2.conda
- conda: https://prefix.dev/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda
- - conda: https://prefix.dev/conda-forge/win-64/ca-certificates-2024.12.14-h56e8100_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/cffi-1.17.1-py313ha7868ed_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/cffi-1.17.1-py310ha8f682b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh7428d3b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/coverage-7.8.2-py310h38315fa_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cuda-cccl_win-64-12.9.27-h57928b3_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/cuda-cudart-12.9.37-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-dev_win-64-12.9.37-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-static_win-64-12.9.37-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cuda-cudart_win-64-12.9.37-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/cuda-cupti-12.9.19-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/cuda-nvrtc-12.9.41-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cuda-version-12.9-h4f385c5_3.conda
+ - conda: https://prefix.dev/conda-forge/win-64/cudnn-9.10.1.4-h1361d0a_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/cupy-13.4.1-py310h1203e13_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/cupy-core-13.4.1-py310h9d4bcf3_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dill-0.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/fastrlock-0.8.3-py310h9a06e79_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.5.1-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/furo-2024.8.6-pyhd8ed1ab_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2
- - conda: https://prefix.dev/conda-forge/win-64/liblzma-5.6.3-h2466b09_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.47.2-h67fdade_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ipython-8.37.0-pyha7b4d00_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/isort-6.0.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libabseil-20250127.1-cxx17_h4eb7d71_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libcublas-12.9.0.13-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libcudnn-9.10.1.4-hffc9a7f_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libcudnn-dev-9.10.1.4-hffc9a7f_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libcudss-0.5.0.16-hffc9a7f_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libcufft-11.4.0.6-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libcurand-10.3.10.19-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libcusolver-11.7.4.40-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libcusparse-12.5.9.5-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libmagma-2.9.0-he50f1ff_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libnvjitlink-12.9.41-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libprotobuf-5.29.3-he9d8c4a_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.50.0-h67fdade_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libtorch-2.7.0-cuda126_mkl_h09c782d_300.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libuv-1.51.0-h2466b09_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda
- conda: https://prefix.dev/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda
+ - conda: https://prefix.dev/conda-forge/win-64/llvmlite-0.44.0-py310h0288bfe_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
- conda: https://prefix.dev/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/markupsafe-3.0.2-py313hb4c8b1a_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/markupsafe-3.0.2-py310h38315fa_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/mdit-py-plugins-0.4.2-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/myst-parser-4.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/openssl-3.4.0-ha4e3fda_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda
+ - conda: https://prefix.dev/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/mypy-1.16.0-py310ha8f682b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/myst-parser-4.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/nodejs-22.13.0-hfeaa22a_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/nodejs-wheel-22.16.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/numba-0.61.2-py310h7793332_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/numpy-2.2.6-py310h4987827_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/optree-0.16.0-py310hc19bc0b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda
+ - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/psutil-7.0.0-py310ha8f682b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyhc790b64_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyh6a1d191_3.conda
- conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda
- conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pylint-3.3.7-pyhe01879c_0.conda
- conda: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda
- - conda: https://prefix.dev/conda-forge/win-64/python-3.13.1-h071d269_105_cp313.conda
- - conda: https://prefix.dev/conda-forge/win-64/python_abi-3.13-5_cp313.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/pyyaml-6.0.2-py313ha7868ed_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/python-3.10.17-h8c5b53a_0_cpython.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.10-7_cp310.conda
+ - conda: https://prefix.dev/conda-forge/win-64/pytorch-2.7.0-cuda126_mkl_py310_h61b71b3_300.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/pyyaml-6.0.2-py310h38315fa_2.conda
- conda: https://prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/sleef-3.8-h7e360cc_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sparse-0.17.0-pyhcf101f3_0.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/sphinx-autodoc-typehints-3.0.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/sphinx-basic-ng-1.0.0b2-pyhd8ed1ab_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-autodoc-typehints-3.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-basic-ng-1.0.0b2-pyhd8ed1ab_3.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinx-copybutton-0.5.2-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda
@@ -1411,20 +1456,33 @@ environments:
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/tk-8.6.13-h5226925_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sympy-1.14.0-pyh04b8f61_5.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda
+ - conda: https://prefix.dev/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
- conda: https://prefix.dev/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/vc-14.3-ha32ba9b_23.conda
- - conda: https://prefix.dev/conda-forge/win-64/vc14_runtime-14.42.34433-he29a5d6_23.conda
- - conda: https://prefix.dev/conda-forge/win-64/vs2015_runtime-14.42.34433-hdffcdeb_23.conda
+ - conda: https://prefix.dev/conda-forge/win-64/ukkonen-1.0.1-py310hc19bc0b_5.conda
+ - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/vc-14.3-h2b53caa_26.conda
+ - conda: https://prefix.dev/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda
+ - conda: https://prefix.dev/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda
+ - conda: https://prefix.dev/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda
- conda: https://prefix.dev/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2
- - conda: https://prefix.dev/conda-forge/win-64/zstandard-0.23.0-py313h574b89f_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda
- - pypi: .
- lint:
+ - conda: https://prefix.dev/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/zstandard-0.23.0-py310ha8f682b_2.conda
+ - pypi: ./
+ docs:
channels:
- url: https://prefix.dev/conda-forge/
indexes:
@@ -1434,300 +1492,362 @@ environments:
- conda: https://prefix.dev/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2
- conda: https://prefix.dev/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2
- conda: https://prefix.dev/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.10.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/astroid-3.3.8-py313h78bf25f_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/basedmypy-2.9.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.23.2-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/basedtyping-0.1.10-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/brotli-python-1.1.0-py313h46c70d0_2.conda
- conda: https://prefix.dev/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda
- - conda: https://prefix.dev/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/cffi-1.17.1-py313hfab6e84_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/dill-0.3.9-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/icu-75.1-he02047a_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/identify-2.6.5-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/furo-2024.8.6-pyhd8ed1ab_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda
- conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/isort-5.13.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2
- - conda: https://prefix.dev/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda
- - conda: https://prefix.dev/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libmpdec-4.0.0-h4bc722e_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.50.0-hee588c1_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda
- conda: https://prefix.dev/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/linux-64/markupsafe-3.0.2-py313h8060acc_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/ncurses-6.5-h2d0b736_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/nodejs-22.12.0-hf235a45_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/nodejs-wheel-22.13.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/numpy-2.2.1-py313hb30382a_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mdit-py-plugins-0.4.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/myst-parser-4.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/numpy-2.3.0-py313h17eae1a_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda
- conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/pylint-3.3.3-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/python-3.13.1-ha99a958_105_cp313.conda
- - conda: https://prefix.dev/conda-forge/linux-64/python_abi-3.13-5_cp313.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/pyyaml-6.0.2-py313h536fd9c_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8228510_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/python-3.13.3-hf636f53_101_cp313.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.13-7_cp313.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/pyyaml-6.0.2-py313h8060acc_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda
- conda: https://prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.8.0-pyhff2d567_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-autodoc-typehints-3.2.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-basic-ng-1.0.0b2-pyhd8ed1ab_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-copybutton-0.5.2-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda
- conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/ukkonen-1.0.1-py313h33d0bda_5.conda
- - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/virtualenv-20.28.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2
- - conda: https://prefix.dev/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/zstandard-0.23.0-py313h80202fe_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda
- - pypi: .
+ - conda: https://prefix.dev/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/zstandard-0.23.0-py313h536fd9c_2.conda
+ - pypi: ./
+ osx-64:
+ - conda: https://prefix.dev/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/brotli-python-1.1.0-py313h9ea2907_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/cffi-1.17.1-py313h49682b3_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/furo-2024.8.6-pyhd8ed1ab_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libcxx-20.1.6-hf95d169_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libsqlite-3.50.0-hdb6dae5_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/llvm-openmp-20.1.6-ha54dae1_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/markupsafe-3.0.2-py313h717bdf5_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mdit-py-plugins-0.4.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/myst-parser-4.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/numpy-2.3.0-py313hc518a0f_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/python-3.13.3-h534c281_101_cp313.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.13-7_cp313.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/pyyaml-6.0.2-py313h717bdf5_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-autodoc-typehints-3.2.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-basic-ng-1.0.0b2-pyhd8ed1ab_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-copybutton-0.5.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/zstandard-0.23.0-py313h63b0ddb_2.conda
+ - pypi: ./
osx-arm64:
- conda: https://prefix.dev/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.10.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/astroid-3.3.8-py313h8f79df9_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/basedmypy-2.9.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.23.2-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/basedtyping-0.1.10-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/brotli-python-1.1.0-py313h3579c5c_2.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/cffi-1.17.1-py313hc845a76_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/dill-0.3.9-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/identify-2.6.5-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/furo-2024.8.6-pyhd8ed1ab_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda
- conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/isort-5.13.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2
- - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libmpdec-4.0.0-h99b78c6_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-20.1.6-ha82da77_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.50.0-h3f77e49_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/llvm-openmp-20.1.6-hdb05f8b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/markupsafe-3.0.2-py313ha9b7d5b_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/nodejs-22.12.0-h02a13b7_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/nodejs-wheel-22.13.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/numpy-2.2.1-py313ha4a2180_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mdit-py-plugins-0.4.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/myst-parser-4.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/numpy-2.3.0-py313h41a2e72_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda
- conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/pylint-3.3.3-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/python-3.13.1-h4f43103_105_cp313.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/python_abi-3.13-5_cp313.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/pyyaml-6.0.2-py313h20a7fcf_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/python-3.13.3-h81fe080_101_cp313.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.13-7_cp313.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/pyyaml-6.0.2-py313ha9b7d5b_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda
- conda: https://prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.8.0-pyhff2d567_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-autodoc-typehints-3.2.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-basic-ng-1.0.0b2-pyhd8ed1ab_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-copybutton-0.5.2-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda
- conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/ukkonen-1.0.1-py313hf9c7212_5.conda
- - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/virtualenv-20.28.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2
- - conda: https://prefix.dev/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/zstandard-0.23.0-py313hf2da073_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda
- - pypi: .
+ - conda: https://prefix.dev/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/zstandard-0.23.0-py313h90d716c_2.conda
+ - pypi: ./
win-64:
- conda: https://prefix.dev/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.10.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/astroid-3.3.8-py313hfa70ccb_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/basedmypy-2.9.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.23.2-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/basedtyping-0.1.10-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda
- conda: https://prefix.dev/conda-forge/win-64/brotli-python-1.1.0-py313h5813708_2.conda
- conda: https://prefix.dev/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda
- - conda: https://prefix.dev/conda-forge/win-64/ca-certificates-2024.12.14-h56e8100_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/win-64/cffi-1.17.1-py313ha7868ed_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh7428d3b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/dill-0.3.9-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/identify-2.6.5-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/furo-2024.8.6-pyhd8ed1ab_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda
- conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda
- - conda: https://prefix.dev/conda-forge/noarch/isort-5.13.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libblas-3.9.0-26_win64_mkl.conda
- - conda: https://prefix.dev/conda-forge/win-64/libcblas-3.9.0-26_win64_mkl.conda
- - conda: https://prefix.dev/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda
- conda: https://prefix.dev/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda
- - conda: https://prefix.dev/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda
- - conda: https://prefix.dev/conda-forge/win-64/liblapack-3.9.0-26_win64_mkl.conda
- - conda: https://prefix.dev/conda-forge/win-64/liblzma-5.6.3-h2466b09_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda
- conda: https://prefix.dev/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.47.2-h67fdade_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_8.conda
- - conda: https://prefix.dev/conda-forge/win-64/libxml2-2.13.5-he286e8c_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.50.0-h67fdade_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda
- conda: https://prefix.dev/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/win-64/markupsafe-3.0.2-py313hb4c8b1a_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mdit-py-plugins-0.4.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda
- - conda: https://prefix.dev/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/nodejs-22.12.0-hfeaa22a_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/nodejs-wheel-22.13.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/numpy-2.2.1-py313hd65a2fa_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/openssl-3.4.0-ha4e3fda_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/myst-parser-4.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/numpy-2.3.0-py313hefb8edb_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda
- conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/pylint-3.3.3-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/python-3.13.1-h071d269_105_cp313.conda
- - conda: https://prefix.dev/conda-forge/win-64/python_abi-3.13-5_cp313.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/pyyaml-6.0.2-py313ha7868ed_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/python-3.13.3-h261c0b1_101_cp313.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.13-7_cp313.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/pyyaml-6.0.2-py313hb4c8b1a_2.conda
- conda: https://prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.8.0-pyhff2d567_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-autodoc-typehints-3.2.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-basic-ng-1.0.0b2-pyhd8ed1ab_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-copybutton-0.5.2-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda
- conda: https://prefix.dev/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/tk-8.6.13-h5226925_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda
- conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
- conda: https://prefix.dev/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/ukkonen-1.0.1-py313h1ec8472_5.conda
- - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/vc-14.3-ha32ba9b_23.conda
- - conda: https://prefix.dev/conda-forge/win-64/vc14_runtime-14.42.34433-he29a5d6_23.conda
- - conda: https://prefix.dev/conda-forge/noarch/virtualenv-20.28.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/vs2015_runtime-14.42.34433-hdffcdeb_23.conda
+ - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/vc-14.3-h2b53caa_26.conda
+ - conda: https://prefix.dev/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda
+ - conda: https://prefix.dev/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda
- conda: https://prefix.dev/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda
- conda: https://prefix.dev/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2
- - conda: https://prefix.dev/conda-forge/win-64/zstandard-0.23.0-py313h574b89f_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda
- - pypi: .
- tests:
+ - conda: https://prefix.dev/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/zstandard-0.23.0-py313ha7868ed_2.conda
+ - pypi: ./
+ lint:
channels:
- url: https://prefix.dev/conda-forge/
indexes:
@@ -1736,127 +1856,643 @@ environments:
linux-64:
- conda: https://prefix.dev/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2
- conda: https://prefix.dev/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.10.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/astroid-3.3.10-py313h78bf25f_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.29.4-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/brotli-python-1.1.0-py313h46c70d0_2.conda
- conda: https://prefix.dev/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda
- - conda: https://prefix.dev/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/coverage-7.6.10-py313h8060acc_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/cffi-1.17.1-py313hfab6e84_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dill-0.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/icu-75.1-he02047a_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/isort-6.0.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.50.0-hee588c1_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libuv-1.51.0-hb9d3cd8_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/linux-64/markupsafe-3.0.2-py313h8060acc_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/mypy-1.16.0-py313h536fd9c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/nodejs-22.13.0-hf235a45_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/nodejs-wheel-22.16.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/numpy-2.3.0-py313h17eae1a_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/psutil-7.0.0-py313h536fd9c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pylint-3.3.7-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/python-3.13.3-hf636f53_101_cp313.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.13-7_cp313.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/pyyaml-6.0.2-py313h8060acc_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/ukkonen-1.0.1-py313h33d0bda_5.conda
+ - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/zstandard-0.23.0-py313h536fd9c_2.conda
+ - pypi: ./
+ osx-64:
+ - conda: https://prefix.dev/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/astroid-3.3.10-py313habf4b1d_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.29.4-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/brotli-python-1.1.0-py313h9ea2907_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/cffi-1.17.1-py313h49682b3_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dill-0.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/isort-6.0.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libcxx-20.1.6-hf95d169_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libsqlite-3.50.0-hdb6dae5_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libuv-1.51.0-h4cb831e_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/llvm-openmp-20.1.6-ha54dae1_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/osx-64/markupsafe-3.0.2-py313h717bdf5_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/mypy-1.16.0-py313h63b0ddb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/nodejs-22.13.0-hffbc63d_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/nodejs-wheel-22.16.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/numpy-2.3.0-py313hc518a0f_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/psutil-7.0.0-py313h63b0ddb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pylint-3.3.7-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/python-3.13.3-h534c281_101_cp313.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.13-7_cp313.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/pyyaml-6.0.2-py313h717bdf5_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/ukkonen-1.0.1-py313h0c4e38b_5.conda
+ - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/zstandard-0.23.0-py313h63b0ddb_2.conda
+ - pypi: ./
+ osx-arm64:
+ - conda: https://prefix.dev/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/astroid-3.3.10-py313h8f79df9_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.29.4-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/brotli-python-1.1.0-py313h3579c5c_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/cffi-1.17.1-py313hc845a76_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dill-0.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/isort-6.0.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-20.1.6-ha82da77_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.50.0-h3f77e49_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libuv-1.51.0-h5505292_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/llvm-openmp-20.1.6-hdb05f8b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/osx-arm64/markupsafe-3.0.2-py313ha9b7d5b_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/mypy-1.16.0-py313h90d716c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/nodejs-22.13.0-h02a13b7_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/nodejs-wheel-22.16.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/numpy-2.3.0-py313h41a2e72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/psutil-7.0.0-py313h90d716c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pylint-3.3.7-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/python-3.13.3-h81fe080_101_cp313.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.13-7_cp313.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/pyyaml-6.0.2-py313ha9b7d5b_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/ukkonen-1.0.1-py313hf9c7212_5.conda
+ - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/zstandard-0.23.0-py313h90d716c_2.conda
+ - pypi: ./
+ win-64:
+ - conda: https://prefix.dev/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/astroid-3.3.10-py313hfa70ccb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.29.4-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/brotli-python-1.1.0-py313h5813708_2.conda
+ - conda: https://prefix.dev/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/cffi-1.17.1-py313ha7868ed_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh7428d3b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dill-0.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda
+ - conda: https://prefix.dev/conda-forge/noarch/isort-6.0.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.50.0-h67fdade_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/win-64/markupsafe-3.0.2-py313hb4c8b1a_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda
+ - conda: https://prefix.dev/conda-forge/win-64/mypy-1.16.0-py313ha7868ed_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/nodejs-22.13.0-hfeaa22a_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/nodejs-wheel-22.16.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/numpy-2.3.0-py313hefb8edb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/psutil-7.0.0-py313ha7868ed_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pylint-3.3.7-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/python-3.13.3-h261c0b1_101_cp313.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.13-7_cp313.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/pyyaml-6.0.2-py313hb4c8b1a_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda
+ - conda: https://prefix.dev/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/ukkonen-1.0.1-py313h1ec8472_5.conda
+ - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/vc-14.3-h2b53caa_26.conda
+ - conda: https://prefix.dev/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda
+ - conda: https://prefix.dev/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda
+ - conda: https://prefix.dev/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda
+ - conda: https://prefix.dev/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/zstandard-0.23.0-py313ha7868ed_2.conda
+ - pypi: ./
+ tests:
+ channels:
+ - url: https://prefix.dev/conda-forge/
+ indexes:
+ - https://pypi.org/simple
+ packages:
+ linux-64:
+ - conda: https://prefix.dev/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2
+ - conda: https://prefix.dev/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/coverage-7.8.2-py313h8060acc_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
- conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2
- - conda: https://prefix.dev/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda
- - conda: https://prefix.dev/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libmpdec-4.0.0-h4bc722e_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.50.0-hee588c1_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda
- conda: https://prefix.dev/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/ncurses-6.5-h2d0b736_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/numpy-2.2.1-py313hb30382a_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/python-3.13.1-ha99a958_105_cp313.conda
- - conda: https://prefix.dev/conda-forge/linux-64/python_abi-3.13-5_cp313.conda
- - conda: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8228510_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/numpy-2.3.0-py313h17eae1a_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/python-3.13.3-hf636f53_101_cp313.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.13-7_cp313.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda
- conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda
- - pypi: .
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - pypi: ./
+ osx-64:
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/coverage-7.8.2-py313h717bdf5_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libcxx-20.1.6-hf95d169_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libsqlite-3.50.0-hdb6dae5_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/llvm-openmp-20.1.6-ha54dae1_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/numpy-2.3.0-py313hc518a0f_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/python-3.13.3-h534c281_101_cp313.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.13-7_cp313.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - pypi: ./
osx-arm64:
- - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.10.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
- conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/coverage-7.6.10-py313ha9b7d5b_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/coverage-7.8.2-py313ha9b7d5b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
- conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2
- - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libmpdec-4.0.0-h99b78c6_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-20.1.6-ha82da77_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.50.0-h3f77e49_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/numpy-2.2.1-py313ha4a2180_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/python-3.13.1-h4f43103_105_cp313.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/python_abi-3.13-5_cp313.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/llvm-openmp-20.1.6-hdb05f8b_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/numpy-2.3.0-py313h41a2e72_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/python-3.13.3-h81fe080_101_cp313.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.13-7_cp313.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda
- conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda
- - pypi: .
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - pypi: ./
win-64:
- - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.10.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
- conda: https://prefix.dev/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda
- - conda: https://prefix.dev/conda-forge/win-64/ca-certificates-2024.12.14-h56e8100_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh7428d3b_0.conda
- conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/coverage-7.6.10-py313hb4c8b1a_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/coverage-7.8.2-py313hb4c8b1a_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
- conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda
- - conda: https://prefix.dev/conda-forge/win-64/libblas-3.9.0-26_win64_mkl.conda
- - conda: https://prefix.dev/conda-forge/win-64/libcblas-3.9.0-26_win64_mkl.conda
- - conda: https://prefix.dev/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2
+ - conda: https://prefix.dev/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda
- conda: https://prefix.dev/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda
- - conda: https://prefix.dev/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda
- - conda: https://prefix.dev/conda-forge/win-64/liblapack-3.9.0-26_win64_mkl.conda
- - conda: https://prefix.dev/conda-forge/win-64/liblzma-5.6.3-h2466b09_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda
- conda: https://prefix.dev/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.47.2-h67fdade_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_8.conda
- - conda: https://prefix.dev/conda-forge/win-64/libxml2-2.13.5-he286e8c_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.50.0-h67fdade_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda
- conda: https://prefix.dev/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda
- conda: https://prefix.dev/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda
- - conda: https://prefix.dev/conda-forge/win-64/numpy-2.2.1-py313hd65a2fa_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/openssl-3.4.0-ha4e3fda_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/python-3.13.1-h071d269_105_cp313.conda
- - conda: https://prefix.dev/conda-forge/win-64/python_abi-3.13-5_cp313.conda
+ - conda: https://prefix.dev/conda-forge/win-64/numpy-2.3.0-py313hefb8edb_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/python-3.13.3-h261c0b1_101_cp313.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.13-7_cp313.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/tk-8.6.13-h5226925_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda
- conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
- conda: https://prefix.dev/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/vc-14.3-ha32ba9b_23.conda
- - conda: https://prefix.dev/conda-forge/win-64/vc14_runtime-14.42.34433-he29a5d6_23.conda
- - conda: https://prefix.dev/conda-forge/win-64/vs2015_runtime-14.42.34433-hdffcdeb_23.conda
- - pypi: .
+ - conda: https://prefix.dev/conda-forge/win-64/vc-14.3-h2b53caa_26.conda
+ - conda: https://prefix.dev/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda
+ - pypi: ./
tests-backends:
channels:
- url: https://prefix.dev/conda-forge/
@@ -1864,1474 +2500,1892 @@ environments:
- https://pypi.org/simple
packages:
linux-64:
- - conda: https://prefix.dev/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2
- - conda: https://prefix.dev/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.10.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/aws-c-auth-0.8.0-h205f482_16.conda
- - conda: https://prefix.dev/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda
- - conda: https://prefix.dev/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda
- - conda: https://prefix.dev/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda
- - conda: https://prefix.dev/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda
- - conda: https://prefix.dev/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda
- - conda: https://prefix.dev/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda
- - conda: https://prefix.dev/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda
- - conda: https://prefix.dev/conda-forge/linux-64/aws-crt-cpp-0.29.8-h8570fcd_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h7001638_5.conda
- - conda: https://prefix.dev/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/bokeh-3.6.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/brotli-python-1.1.0-py310hf71b8c6_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/_openmp_mutex-4.5-3_kmp_llvm.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda
- - conda: https://prefix.dev/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/cffi-1.17.1-py310h8deb56e_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.0-pyhd8ed1ab_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/contourpy-1.3.1-py310h3788b33_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/coverage-7.6.10-py310h89163eb_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/cpython-3.10.16-py310hd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/cuda-cccl_linux-64-12.6.77-ha770c72_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-dev_linux-64-12.6.77-h3f2d84a_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-static_linux-64-12.6.77-h3f2d84a_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/cuda-cudart_linux-64-12.6.77-h3f2d84a_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/cuda-nvrtc-12.6.85-hbd13f7d_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/cuda-version-12.6-h7480c83_3.conda
- - conda: https://prefix.dev/conda-forge/linux-64/cupy-13.3.0-py310h1b77274_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/cupy-core-13.3.0-py310h8de46e0_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/cytoolz-1.0.1-py310ha75aee5_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/dask-2024.12.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/dask-core-2024.12.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/dask-expr-1.1.21-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/distributed-2024.12.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/fastrlock-0.8.3-py310h8c668a6_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda
- - conda: https://prefix.dev/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/coverage-7.8.2-py310h89163eb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cpython-3.10.17-py310hd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.5.1-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/gmpy2-2.1.5-py310he8512ff_3.conda
- - conda: https://prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/gmpy2-2.2.1-py310he8512ff_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/icu-75.1-he02047a_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda
- conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/jax-0.4.35-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/jaxlib-0.4.35-cpu_py310h430587c_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libarrow-18.1.0-h9d9f30d_8_cpu.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_8_cpu.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_8_cpu.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_8_cpu.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libblas-3.9.0-26_linux64_mkl.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libcblas-3.9.0-26_linux64_mkl.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/linux-64/libcublas-12.6.4.1-hbd13f7d_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libcufft-11.3.0.4-hbd13f7d_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libcurand-10.3.7.77-hbd13f7d_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libcusolver-11.7.1.2-hbd13f7d_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libcusparse-12.5.4.2-hbd13f7d_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libev-4.33-hd590300_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2
- - conda: https://prefix.dev/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/jaxlib-0.6.0-cpu_py310hc96afab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libabseil-20250127.1-cxx17_hbbce691_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libblas-3.9.0-31_hfdb39a5_mkl.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcblas-3.9.0-31_h372d94f_mkl.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgrpc-1.71.0-h8e591d7_1.conda
- conda: https://prefix.dev/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/liblapack-3.9.0-26_linux64_mkl.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libllvm14-14.0.6-hcd5def8_4.conda
- - conda: https://prefix.dev/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/liblapack-3.9.0-31_hc41d3b0_mkl.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda
- conda: https://prefix.dev/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libnvjitlink-12.6.85-hbd13f7d_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_8_cpu.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libtorch-2.5.1-cpu_mkl_ha4c6a95_109.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libre2-11-2024.07.02-hba17884_3.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.50.0-hee588c1_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libtorch-2.7.0-cpu_mkl_hf6ddc5a_100.conda
- conda: https://prefix.dev/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libuv-1.51.0-hb9d3cd8_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/llvm-openmp-19.1.6-h024ca30_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/llvmlite-0.43.0-py310h1a6248f_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/llvm-openmp-20.1.6-h024ca30_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/llvmlite-0.44.0-py310h1a6248f_1.conda
- conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/linux-64/lz4-4.3.3-py310h80b8a69_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda
- conda: https://prefix.dev/conda-forge/linux-64/markupsafe-3.0.2-py310h89163eb_1.conda
- conda: https://prefix.dev/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda
- conda: https://prefix.dev/conda-forge/linux-64/ml_dtypes-0.5.1-py310h5eaa309_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda
- conda: https://prefix.dev/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda
- conda: https://prefix.dev/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/msgpack-python-1.1.0-py310h3788b33_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/ncurses-6.5-h2d0b736_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda
- conda: https://prefix.dev/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/numba-0.60.0-py310h5dc88bb_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/numpy-2.0.2-py310hd6e36ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/opt-einsum-3.4.0-hd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/numba-0.61.2-py310h699fe88_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/numpy-2.2.6-py310hefbff90_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda
- conda: https://prefix.dev/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/pandas-2.2.3-py310h5eaa309_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/optree-0.16.0-py310h3788b33_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
- conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/pillow-11.1.0-py310h7e6dc6c_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/psutil-6.1.1-py310ha75aee5_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda
- - conda: https://prefix.dev/conda-forge/linux-64/pyarrow-18.1.0-py310hff52083_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/pyarrow-core-18.1.0-py310hac404ae_0_cpu.conda
- - conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/python-3.10.16-he725a3c_1_cpython.conda
- - conda: https://prefix.dev/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/python_abi-3.10-5_cp310.conda
- - conda: https://prefix.dev/conda-forge/linux-64/pytorch-2.5.1-cpu_mkl_py310_h1c118fa_109.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/pyyaml-6.0.2-py310ha75aee5_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8228510_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/s2n-1.5.10-hb5b8611_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/scipy-1.15.1-py310hfa6ec8c_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.8.0-pyhff2d567_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/sleef-3.7-h1b44611_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/sparse-0.15.4-pyh267e887_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyhc790b64_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyh217bc35_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/python-3.10.17-hd6af730_0_cpython.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.10-7_cp310.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/pytorch-2.7.0-cpu_mkl_py310_h8ec2884_100.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/pyyaml-6.0.2-py310h89163eb_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/re2-2024.07.02-h9925aae_3.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/scipy-1.15.2-py310h1d65ade_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/sleef-3.8-h1b44611_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sparse-0.17.0-pyhcf101f3_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sympy-1.14.0-pyh2585a3b_105.conda
- conda: https://prefix.dev/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tblib-3.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda
- conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/tornado-6.4.2-py310ha75aee5_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/xyzservices-2024.9.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/zstandard-0.23.0-py310ha39cb0e_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda
- - pypi: .
+ - conda: https://prefix.dev/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda
+ - pypi: ./
+ osx-64:
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/c-ares-1.34.5-hf13058a_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/coverage-7.8.2-py310h8e2f543_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cpython-3.10.17-py310hd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/gmp-6.3.0-hf036a51_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/gmpy2-2.2.1-py310he278d95_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/jaxlib-0.6.0-cpu_py310h22b337c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libabseil-20250127.1-cxx17_h0e468a2_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libblas-3.9.0-20_osx64_mkl.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libcblas-3.9.0-20_osx64_mkl.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libcxx-20.1.6-hf95d169_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libgrpc-1.71.0-h7d722e6_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libhwloc-2.11.2-default_h4cdd727_1001.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/liblapack-3.9.0-20_osx64_mkl.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libprotobuf-5.29.3-h1c7185b_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libre2-11-2024.07.02-h08ce7b7_3.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libsqlite-3.50.0-hdb6dae5_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libtorch-2.7.0-cpu_mkl_h3891332_100.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libuv-1.51.0-h4cb831e_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/llvm-openmp-20.1.6-ha54dae1_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/llvmlite-0.44.0-py310hb13c577_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/osx-64/markupsafe-3.0.2-py310h8e2f543_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/mkl-2023.2.0-h54c2260_50500.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/ml_dtypes-0.5.1-py310h96a9d13_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/mpc-1.3.1-h9d8efa1_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/mpfr-4.2.1-haed47dc_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/numba-0.61.2-py310h6fcc139_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/numpy-2.2.6-py310h07c5b4d_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/optree-0.16.0-py310hf166250_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyhc790b64_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyh217bc35_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/python-3.10.17-h93e8a92_0_cpython.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.10-7_cp310.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/pytorch-2.7.0-cpu_mkl_py310_h73f974a_100.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/pyyaml-6.0.2-py310h8e2f543_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/re2-2024.07.02-hf8a452e_3.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/scipy-1.15.2-py310hef62574_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/sleef-3.8-hfe0d17b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sparse-0.17.0-pyhcf101f3_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sympy-1.14.0-pyh2585a3b_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/tbb-2021.13.0-hb890de9_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda
+ - pypi: ./
osx-arm64:
- - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.10.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-auth-0.8.0-hfc2798a_16.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/aws-crt-cpp-0.29.8-h23176ea_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h794939a_5.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/bokeh-3.6.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/brotli-python-1.1.0-py310hb4ad77e_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/cffi-1.17.1-py310h497396d_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.0-pyhd8ed1ab_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/c-ares-1.34.5-h5505292_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/contourpy-1.3.1-py310h7f4e7e6_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/coverage-7.6.10-py310hc74094e_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/cpython-3.10.16-py310hd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/cytoolz-1.0.1-py310h078409c_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/dask-2024.12.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/dask-core-2024.12.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/dask-expr-1.1.21-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/distributed-2024.12.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/coverage-7.8.2-py310hc74094e_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cpython-3.10.17-py310hd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.5.1-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/gmpy2-2.1.5-py310h805dbd7_3.conda
- - conda: https://prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/gmpy2-2.2.1-py310h805dbd7_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda
- conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/jax-0.4.35-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/jaxlib-0.4.35-cpu_py310h604521f_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-18.1.0-hf3eb8e5_8_cpu.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_8_cpu.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_8_cpu.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_8_cpu.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2
- - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libllvm14-14.0.6-hd1a9a77_4.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_8_cpu.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libtorch-2.5.1-cpu_generic_h266890c_9.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/jaxlib-0.6.0-cpu_py310h2c532f2_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libabseil-20250127.1-cxx17_h07bc746_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-20.1.6-ha82da77_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libgrpc-1.71.0-h857da87_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libprotobuf-5.29.3-hccd9074_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libre2-11-2024.07.02-hd41c47c_3.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.50.0-h3f77e49_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libtorch-2.7.0-cpu_generic_h4059bed_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libuv-1.51.0-h5505292_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/llvmlite-0.43.0-py310h9fcfb1b_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/llvm-openmp-20.1.6-hdb05f8b_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/llvmlite-0.44.0-py310hed9eb73_1.conda
- conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/osx-arm64/lz4-4.3.3-py310hedecf87_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/markupsafe-3.0.2-py310hc74094e_1.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/ml_dtypes-0.5.1-py310h5936506_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda
- conda: https://prefix.dev/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/msgpack-python-1.1.0-py310h7306fd8_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda
- conda: https://prefix.dev/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda
- conda: https://prefix.dev/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/osx-arm64/numba-0.60.0-py310h0628f0e_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/numpy-2.0.2-py310h530be0a_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/opt-einsum-3.4.0-hd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/numba-0.61.2-py310h75d646b_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/numpy-2.2.6-py310h4d83441_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda
- conda: https://prefix.dev/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/pandas-2.2.3-py310hfd37619_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/optree-0.16.0-py310h7f4e7e6_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
- conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/pillow-11.1.0-py310h61efb56_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/psutil-6.1.1-py310h078409c_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/pyarrow-18.1.0-py310hb6292c7_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/pyarrow-core-18.1.0-py310hc17921c_0_cpu.conda
- - conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/python-3.10.16-h870587a_1_cpython.conda
- - conda: https://prefix.dev/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/python_abi-3.10-5_cp310.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/pytorch-2.5.1-cpu_generic_py310_h3256795_9.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/pyyaml-6.0.2-py310h493c2e1_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/scipy-1.15.1-py310hd50a768_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.8.0-pyhff2d567_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/sleef-3.7-h8391f65_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/sparse-0.15.4-pyh267e887_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda
- - conda: https://prefix.dev/conda-forge/noarch/tblib-3.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyhc790b64_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyh217bc35_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/python-3.10.17-h6cefb37_0_cpython.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.10-7_cp310.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/pytorch-2.7.0-cpu_generic_py310_h10edff7_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/pyyaml-6.0.2-py310hc74094e_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_3.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/scipy-1.15.2-py310h32ab4ed_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/sleef-3.8-h8391f65_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sparse-0.17.0-pyhcf101f3_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sympy-1.14.0-pyh2585a3b_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda
- conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/tornado-6.4.2-py310h078409c_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/xyzservices-2024.9.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/zstandard-0.23.0-py310h2665a74_1.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda
- - pypi: .
+ - conda: https://prefix.dev/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda
+ - pypi: ./
win-64:
- - conda: https://prefix.dev/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.10.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/aws-c-auth-0.8.0-hd11252f_16.conda
- - conda: https://prefix.dev/conda-forge/win-64/aws-c-cal-0.8.1-h099ea23_3.conda
- - conda: https://prefix.dev/conda-forge/win-64/aws-c-common-0.10.6-h2466b09_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/aws-c-compression-0.3.0-h099ea23_5.conda
- - conda: https://prefix.dev/conda-forge/win-64/aws-c-event-stream-0.5.0-h85d8506_11.conda
- - conda: https://prefix.dev/conda-forge/win-64/aws-c-http-0.9.2-h3888f84_4.conda
- - conda: https://prefix.dev/conda-forge/win-64/aws-c-io-0.15.3-hc5a9e45_5.conda
- - conda: https://prefix.dev/conda-forge/win-64/aws-c-mqtt-0.11.0-h2c94728_12.conda
- - conda: https://prefix.dev/conda-forge/win-64/aws-c-s3-0.7.7-h6a38c86_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/aws-c-sdkutils-0.2.2-h099ea23_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/aws-checksums-0.2.2-h099ea23_4.conda
- - conda: https://prefix.dev/conda-forge/win-64/aws-crt-cpp-0.29.8-h703467b_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/aws-sdk-cpp-1.11.458-h41fbdec_5.conda
- - conda: https://prefix.dev/conda-forge/noarch/bokeh-3.6.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/brotli-python-1.1.0-py310h9e98ed7_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
- conda: https://prefix.dev/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda
- - conda: https://prefix.dev/conda-forge/win-64/c-ares-1.34.4-h2466b09_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/ca-certificates-2024.12.14-h56e8100_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/cffi-1.17.1-py310ha8f682b_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/click-8.1.8-pyh7428d3b_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.0-pyhd8ed1ab_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh7428d3b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda
- conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/contourpy-1.3.1-py310hc19bc0b_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/coverage-7.6.10-py310h38315fa_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/cuda-cccl_win-64-12.6.77-h57928b3_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-dev_win-64-12.6.77-he0c23c2_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-static_win-64-12.6.77-he0c23c2_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/cuda-cudart_win-64-12.6.77-he0c23c2_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/cuda-nvrtc-12.6.85-he0c23c2_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/cuda-version-12.6-h7480c83_3.conda
- - conda: https://prefix.dev/conda-forge/win-64/cupy-13.3.0-py310h619d0c7_2.conda
- - conda: https://prefix.dev/conda-forge/win-64/cupy-core-13.3.0-py310h441eff7_2.conda
- - conda: https://prefix.dev/conda-forge/win-64/cytoolz-1.0.1-py310ha8f682b_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/dask-2024.12.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/dask-core-2024.12.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/dask-expr-1.1.21-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/distributed-2024.12.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/fastrlock-0.8.3-py310h9a06e79_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/freetype-2.12.1-hdaf720e_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/coverage-7.8.2-py310h38315fa_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda
- conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda
- - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/lcms2-2.16-h67d730c_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/win-64/libabseil-20240722.0-cxx17_h4eb7d71_4.conda
- - conda: https://prefix.dev/conda-forge/win-64/libarrow-18.1.0-hb928929_8_cpu.conda
- - conda: https://prefix.dev/conda-forge/win-64/libarrow-acero-18.1.0-h7d8d6a5_8_cpu.conda
- - conda: https://prefix.dev/conda-forge/win-64/libarrow-dataset-18.1.0-h7d8d6a5_8_cpu.conda
- - conda: https://prefix.dev/conda-forge/win-64/libarrow-substrait-18.1.0-h3dbecdf_8_cpu.conda
- - conda: https://prefix.dev/conda-forge/win-64/libblas-3.9.0-26_win64_mkl.conda
- - conda: https://prefix.dev/conda-forge/win-64/libbrotlicommon-1.1.0-h2466b09_2.conda
- - conda: https://prefix.dev/conda-forge/win-64/libbrotlidec-1.1.0-h2466b09_2.conda
- - conda: https://prefix.dev/conda-forge/win-64/libbrotlienc-1.1.0-h2466b09_2.conda
- - conda: https://prefix.dev/conda-forge/win-64/libcblas-3.9.0-26_win64_mkl.conda
- - conda: https://prefix.dev/conda-forge/win-64/libcrc32c-1.1.2-h0e60522_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/win-64/libcublas-12.6.4.1-he0c23c2_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libcufft-11.3.0.4-he0c23c2_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libcurand-10.3.7.77-he0c23c2_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libcurl-8.11.1-h88aaa65_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libcusolver-11.7.1.2-he0c23c2_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libcusparse-12.5.4.2-he0c23c2_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libdeflate-1.23-h9062f6e_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libevent-2.1.12-h3671451_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2
- - conda: https://prefix.dev/conda-forge/win-64/libgcc-14.2.0-h1383e82_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/libgomp-14.2.0-h1383e82_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/libgoogle-cloud-2.33.0-h95c5cb2_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/libgoogle-cloud-storage-2.33.0-he5eb982_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/libgrpc-1.67.1-h0ac93cb_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libabseil-20250127.1-cxx17_h4eb7d71_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda
- conda: https://prefix.dev/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda
- - conda: https://prefix.dev/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda
- - conda: https://prefix.dev/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/liblapack-3.9.0-26_win64_mkl.conda
- - conda: https://prefix.dev/conda-forge/win-64/liblzma-5.6.3-h2466b09_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/libnvjitlink-12.6.85-he0c23c2_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libparquet-18.1.0-ha850022_8_cpu.conda
- - conda: https://prefix.dev/conda-forge/win-64/libpng-1.6.45-had7236b_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libprotobuf-5.28.3-h8309712_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/libre2-11-2024.07.02-h4eb7d71_2.conda
- - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.47.2-h67fdade_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libssh2-1.11.1-he619c9f_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libthrift-0.21.0-hbe90ef8_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libtiff-4.7.0-h797046b_3.conda
- - conda: https://prefix.dev/conda-forge/win-64/libutf8proc-2.9.0-h2466b09_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_8.conda
- - conda: https://prefix.dev/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/libxml2-2.13.5-he286e8c_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libprotobuf-5.29.3-he9d8c4a_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.50.0-h67fdade_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libtorch-2.7.0-cpu_mkl_hf54a72f_100.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libuv-1.51.0-h2466b09_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda
- conda: https://prefix.dev/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda
- - conda: https://prefix.dev/conda-forge/win-64/llvmlite-0.43.0-py310h0288bfe_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/llvmlite-0.44.0-py310h0288bfe_1.conda
- conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/win-64/lz4-4.3.3-py310hd8baafb_2.conda
- - conda: https://prefix.dev/conda-forge/win-64/lz4-c-1.10.0-h2466b09_1.conda
- conda: https://prefix.dev/conda-forge/win-64/markupsafe-3.0.2-py310h38315fa_1.conda
- conda: https://prefix.dev/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda
- - conda: https://prefix.dev/conda-forge/win-64/msgpack-python-1.1.0-py310hc19bc0b_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/numba-0.60.0-py310h7793332_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/numpy-2.0.2-py310h1ec8c79_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/openjpeg-2.5.3-h4d64b90_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/openssl-3.4.0-ha4e3fda_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/orc-2.0.3-haf104fe_2.conda
- - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda
- - conda: https://prefix.dev/conda-forge/win-64/pandas-2.2.3-py310hb4db72f_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda
+ - conda: https://prefix.dev/conda-forge/win-64/numba-0.61.2-py310h7793332_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/numpy-2.2.6-py310h4987827_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/optree-0.16.0-py310hc19bc0b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
- conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/pillow-11.1.0-py310h9595edc_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/psutil-6.1.1-py310ha8f682b_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda
- - conda: https://prefix.dev/conda-forge/win-64/pyarrow-18.1.0-py310h5588dad_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/pyarrow-core-18.1.0-py310h399dd74_0_cpu.conda
- - conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/python-3.10.16-h37870fc_1_cpython.conda
- - conda: https://prefix.dev/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/python_abi-3.10-5_cp310.conda
- - conda: https://prefix.dev/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/pyyaml-6.0.2-py310ha8f682b_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/re2-2024.07.02-haf4117d_2.conda
- - conda: https://prefix.dev/conda-forge/win-64/scipy-1.15.1-py310h164493e_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/snappy-1.2.1-h500f7fa_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/sparse-0.15.4-pyh267e887_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyhc790b64_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyh6a1d191_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/python-3.10.17-h8c5b53a_0_cpython.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.10-7_cp310.conda
+ - conda: https://prefix.dev/conda-forge/win-64/pytorch-2.7.0-cpu_mkl_py310_h8e04999_100.conda
+ - conda: https://prefix.dev/conda-forge/win-64/pyyaml-6.0.2-py310h38315fa_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/sleef-3.8-h7e360cc_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sparse-0.17.0-pyhcf101f3_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sympy-1.14.0-pyh04b8f61_5.conda
- conda: https://prefix.dev/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/tblib-3.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/tk-8.6.13-h5226925_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda
- conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
- conda: https://prefix.dev/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/tornado-6.4.2-py310ha8f682b_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
- conda: https://prefix.dev/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/vc-14.3-ha32ba9b_23.conda
- - conda: https://prefix.dev/conda-forge/win-64/vc14_runtime-14.42.34433-he29a5d6_23.conda
- - conda: https://prefix.dev/conda-forge/win-64/vs2015_runtime-14.42.34433-hdffcdeb_23.conda
- - conda: https://prefix.dev/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda
- - conda: https://prefix.dev/conda-forge/win-64/xorg-libxau-1.0.12-h0e40799_0.conda
- - conda: https://prefix.dev/conda-forge/win-64/xorg-libxdmcp-1.1.5-h0e40799_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/xyzservices-2024.9.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/vc-14.3-h2b53caa_26.conda
+ - conda: https://prefix.dev/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda
+ - conda: https://prefix.dev/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda
- conda: https://prefix.dev/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/zstandard-0.23.0-py310he5e10e1_1.conda
- - conda: https://prefix.dev/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda
- - pypi: .
-packages:
-- conda: https://prefix.dev/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2
- sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726
- md5: d7c89558ba9fa0495403155b64376d81
- license: None
- purls: []
- size: 2562
- timestamp: 1578324546067
-- conda: https://prefix.dev/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2
- build_number: 16
- sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22
- md5: 73aaf86a425cc6e73fcf236a5a46396d
- depends:
- - _libgcc_mutex 0.1 conda_forge
- - libgomp >=7.5.0
- constrains:
- - openmp_impl 9999
- license: BSD-3-Clause
- license_family: BSD
- purls: []
- size: 23621
- timestamp: 1650670423406
-- conda: https://prefix.dev/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2
- build_number: 2
- sha256: 84a66275da3a66e3f3e70e9d8f10496d807d01a9e4ec16cd2274cc5e28c478fc
- md5: 562b26ba2e19059551a811e72ab7f793
- depends:
- - _libgcc_mutex 0.1 conda_forge
- - llvm-openmp >=9.0.1
- license: BSD-3-Clause
- license_family: BSD
- purls: []
- size: 5744
- timestamp: 1650742457817
-- conda: https://prefix.dev/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda
- build_number: 8
- sha256: 1a62cd1f215fe0902e7004089693a78347a30ad687781dfda2289cab000e652d
- md5: 37e16618af5c4851a3f3d66dd0e11141
- depends:
- - libgomp >=7.5.0
- - libwinpthread >=12.0.0.r2.ggc561118da
- constrains:
- - openmp_impl 9999
- - msys2-conda-epoch <0.0a0
- license: BSD-3-Clause
- license_family: BSD
- purls: []
- size: 49468
- timestamp: 1718213032772
-- conda: https://prefix.dev/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda
- sha256: 6c4456a138919dae9edd3ac1a74b6fbe5fd66c05675f54df2f8ab8c8d0cc6cea
- md5: 1fd9696649f65fd6611fcdb4ffec738a
- depends:
- - python >=3.10
- license: BSD-3-Clause
- license_family: BSD
- purls:
- - pkg:pypi/alabaster?source=hash-mapping
- size: 18684
- timestamp: 1733750512696
-- conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.10.0-pyhd8ed1ab_0.conda
- sha256: c98308dcf035a413a635317c69b48143cdf4c5895853457062780395e5ea4633
- md5: e399bc184553ca13cb068d272a995f48
- depends:
- - python >=3.9
- license: MIT
- license_family: MIT
- purls:
- - pkg:pypi/array-api-compat?source=hash-mapping
- size: 38442
- timestamp: 1735201429468
-- pypi: .
- name: array-api-extra
- version: 0.6.0
- sha256: 4ec1183114a670b9c9b9b351826c962ad92ab470b1914a163e4a5ed02d0e04a0
- requires_dist:
- - array-api-compat>=1.10.0,<2
- - furo>=2023.8.17 ; extra == 'docs'
- - myst-parser>=0.13 ; extra == 'docs'
- - sphinx-autodoc-typehints ; extra == 'docs'
- - sphinx-copybutton ; extra == 'docs'
- - sphinx>=7.0 ; extra == 'docs'
- - array-api-strict ; extra == 'tests'
- - numpy ; extra == 'tests'
- - pytest-cov>=3 ; extra == 'tests'
- - pytest>=6 ; extra == 'tests'
- requires_python: '>=3.10'
- editable: true
-- conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_1.conda
- sha256: 79bf4d2b5f55c816f832cd7180e66ca527b55a8353a3014fe3084690a8c7f6aa
- md5: 02e7a32986412d3aaf97095d17120757
- depends:
- - numpy
- - python >=3.9
- license: BSD-3-Clause
- license_family: BSD
- purls:
- - pkg:pypi/array-api-strict?source=hash-mapping
- size: 53675
- timestamp: 1734907462139
-- conda: https://prefix.dev/conda-forge/linux-64/astroid-3.3.8-py313h78bf25f_0.conda
- sha256: 9e7d23a86025997b0ea08c0e261210c332105fc725c762c2a4b70f18bf343dcf
- md5: cd3ab05349bc9be61760883382598624
- depends:
- - python >=3.13,<3.14.0a0
- - python_abi 3.13.* *_cp313
- license: LGPL-2.1-or-later
- license_family: LGPL
- purls:
- - pkg:pypi/astroid?source=hash-mapping
- size: 514724
- timestamp: 1735074295
-- conda: https://prefix.dev/conda-forge/osx-arm64/astroid-3.3.8-py313h8f79df9_0.conda
- sha256: 74ebe427be3bd85285cad5ccfe68a056ea522fe5799883f6993bf20ec6540459
- md5: b89181b74780c6835f81b3bced884400
- depends:
- - python >=3.13,<3.14.0a0
- - python >=3.13,<3.14.0a0 *_cp313
- - python_abi 3.13.* *_cp313
- license: LGPL-2.1-or-later
- license_family: LGPL
- purls:
- - pkg:pypi/astroid?source=hash-mapping
- size: 517558
- timestamp: 1735074383017
-- conda: https://prefix.dev/conda-forge/win-64/astroid-3.3.8-py313hfa70ccb_0.conda
- sha256: d6e1e1f83accc04030212501b0bc24e074b84887840ad9857f639e4085cfcb81
- md5: 833fc63fbd750ceb3e5d79c38995c2b3
- depends:
- - python >=3.13,<3.14.0a0
- - python_abi 3.13.* *_cp313
- license: LGPL-2.1-or-later
- license_family: LGPL
- purls:
- - pkg:pypi/astroid?source=hash-mapping
- size: 516023
- timestamp: 1735074328935
-- conda: https://prefix.dev/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda
- sha256: 93b14414b3b3ed91e286e1cbe4e7a60c4e1b1c730b0814d1e452a8ac4b9af593
- md5: 8f587de4bcf981e26228f268df374a9b
- depends:
- - python >=3.9
- constrains:
- - astroid >=2,<4
- license: Apache-2.0
- license_family: Apache
- purls:
- - pkg:pypi/asttokens?source=hash-mapping
- size: 28206
- timestamp: 1733250564754
-- conda: https://prefix.dev/conda-forge/linux-64/aws-c-auth-0.8.0-h205f482_16.conda
- sha256: 0695c285b70385913dc7dce05888d3ad1378247b65273bdab509494a2f8f0eea
- md5: b0815d37ab812ade9c07239da7c3c369
- depends:
- - __glibc >=2.17,<3.0.a0
- - aws-c-cal >=0.8.1,<0.8.2.0a0
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - aws-c-http >=0.9.2,<0.9.3.0a0
- - aws-c-io >=0.15.3,<0.15.4.0a0
- - aws-c-sdkutils >=0.2.2,<0.2.3.0a0
- - libgcc >=13
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 107478
- timestamp: 1736592747413
-- conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-auth-0.8.0-hfc2798a_16.conda
- sha256: cdcd932332311db1b614289101b61e32cbae2478ba2bf85763aaf5a5cc7db6f6
- md5: 1e9a41d5296f50c08ae511d61fddef85
- depends:
- - __osx >=11.0
- - aws-c-cal >=0.8.1,<0.8.2.0a0
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - aws-c-http >=0.9.2,<0.9.3.0a0
- - aws-c-io >=0.15.3,<0.15.4.0a0
- - aws-c-sdkutils >=0.2.2,<0.2.3.0a0
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 92547
- timestamp: 1736592866387
-- conda: https://prefix.dev/conda-forge/win-64/aws-c-auth-0.8.0-hd11252f_16.conda
- sha256: 7b071c929ce10670bcc0b62674cf32cddd82540520efb86e9401a7ec38d77378
- md5: 77b180b437094a263f059f91463c73b7
- depends:
- - aws-c-cal >=0.8.1,<0.8.2.0a0
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - aws-c-http >=0.9.2,<0.9.3.0a0
- - aws-c-io >=0.15.3,<0.15.4.0a0
- - aws-c-sdkutils >=0.2.2,<0.2.3.0a0
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 102957
- timestamp: 1736592944745
-- conda: https://prefix.dev/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda
- sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8
- md5: 55a8561fdbbbd34f50f57d9be12ed084
- depends:
- - __glibc >=2.17,<3.0.a0
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - libgcc >=13
- - openssl >=3.3.1,<4.0a0
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 47601
- timestamp: 1733991564405
-- conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda
- sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4
- md5: 8b0ce61384e5a33d2b301a64f3d22ac5
- depends:
- - __osx >=11.0
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - openssl >=3.3.1,<4.0a0
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 39925
- timestamp: 1733991649383
-- conda: https://prefix.dev/conda-forge/win-64/aws-c-cal-0.8.1-h099ea23_3.conda
- sha256: e345717c4cbef8472b3f4f90b75d326ad66a84574bfb02740a860d8de6414c44
- md5: 767b18a469cf18d7476cab915f9fe207
- depends:
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - openssl >=3.3.1,<4.0a0
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 47436
- timestamp: 1733991914197
-- conda: https://prefix.dev/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda
- sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257
- md5: d7d4680337a14001b0e043e96529409b
- depends:
- - __glibc >=2.17,<3.0.a0
- - libgcc >=13
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 236574
- timestamp: 1733975453350
-- conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda
- sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a
- md5: 145e5b4c9702ed279d7d68aaf096f77d
- depends:
- - __osx >=11.0
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 221863
- timestamp: 1733975576886
-- conda: https://prefix.dev/conda-forge/win-64/aws-c-common-0.10.6-h2466b09_0.conda
- sha256: 348af25291f2b4106d8453fddb8dcbfed452067bddfa0eeadd24f1c710617a4a
- md5: 44a7e180f2054340401499de93ae39ba
- depends:
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 235514
- timestamp: 1733975788721
-- conda: https://prefix.dev/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda
- sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b
- md5: 3f4c1197462a6df2be6dc8241828fe93
- depends:
- - __glibc >=2.17,<3.0.a0
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - libgcc >=13
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 19086
- timestamp: 1733991637424
-- conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda
- sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09
- md5: a8b6c17732d14ed49d0e9b59c43186bc
- depends:
- - __osx >=11.0
- - aws-c-common >=0.10.6,<0.10.7.0a0
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 18068
- timestamp: 1733991869211
-- conda: https://prefix.dev/conda-forge/win-64/aws-c-compression-0.3.0-h099ea23_5.conda
- sha256: f30956b5c450e0a21adc3d523fdbe2d0dcc79125b135f5ccc4497d97f8733891
- md5: b4303abff1423285a2e5063d796e1614
- depends:
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 22364
- timestamp: 1733991973284
-- conda: https://prefix.dev/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda
- sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02
- md5: 9b3fb60fe57925a92f399bc3fc42eccf
- depends:
- - __glibc >=2.17,<3.0.a0
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - aws-c-io >=0.15.3,<0.15.4.0a0
- - aws-checksums >=0.2.2,<0.2.3.0a0
- - libgcc >=13
- - libstdcxx >=13
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 54003
- timestamp: 1734024480949
-- conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda
- sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d
- md5: ba41238f8e653998d7d2f42e3a8db054
- depends:
- - __osx >=11.0
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - aws-c-io >=0.15.3,<0.15.4.0a0
- - aws-checksums >=0.2.2,<0.2.3.0a0
- - libcxx >=18
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 47078
- timestamp: 1734024749727
-- conda: https://prefix.dev/conda-forge/win-64/aws-c-event-stream-0.5.0-h85d8506_11.conda
- sha256: bd7d3849ae0a12e170d4d442f7d2db7de98827d8d3505d0a60d12b1170b1ab0d
- md5: a32c029b7e933cf93c5066b186560e62
- depends:
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - aws-c-io >=0.15.3,<0.15.4.0a0
- - aws-checksums >=0.2.2,<0.2.3.0a0
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 54426
- timestamp: 1734024881523
-- conda: https://prefix.dev/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda
- sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99
- md5: 5ce4df662d32d3123ea8da15571b6f51
- depends:
- - __glibc >=2.17,<3.0.a0
- - aws-c-cal >=0.8.1,<0.8.2.0a0
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - aws-c-compression >=0.3.0,<0.3.1.0a0
- - aws-c-io >=0.15.3,<0.15.4.0a0
- - libgcc >=13
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 197731
- timestamp: 1734008380764
-- conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda
- sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76
- md5: 495c93a4f08b17deb3c04894512330e6
- depends:
- - __osx >=11.0
- - aws-c-cal >=0.8.1,<0.8.2.0a0
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - aws-c-compression >=0.3.0,<0.3.1.0a0
- - aws-c-io >=0.15.3,<0.15.4.0a0
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 152983
- timestamp: 1734008451473
-- conda: https://prefix.dev/conda-forge/win-64/aws-c-http-0.9.2-h3888f84_4.conda
- sha256: ce0cedbe65e36f6e6dc9a8e07336f9c6ceecb09f0ed8eebdd01d74d261b59d16
- md5: 4e7cf9b498fcc5dee5abcdf24e64a96d
- depends:
- - aws-c-cal >=0.8.1,<0.8.2.0a0
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - aws-c-compression >=0.3.0,<0.3.1.0a0
- - aws-c-io >=0.15.3,<0.15.4.0a0
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 182269
- timestamp: 1734008780813
-- conda: https://prefix.dev/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda
- sha256: 5920009b1c6f9a2bc131a36725251894e4b4773fce29c4b1065d4213ae337abe
- md5: 80dd9f0ddf935290d1dc00ec75ff3023
- depends:
- - __glibc >=2.17,<3.0.a0
- - aws-c-cal >=0.8.1,<0.8.2.0a0
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - libgcc >=13
- - s2n >=1.5.10,<1.5.11.0a0
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 157864
- timestamp: 1734433578570
-- conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_5.conda
- sha256: c0a1a2b0750225ac3dc07fd258c88c2be866bf8ac67ba3d50bb4ecec852ff8ee
- md5: 4c5ff4134e76426a75b8c548984fa933
- depends:
- - __osx >=11.0
- - aws-c-cal >=0.8.1,<0.8.2.0a0
- - aws-c-common >=0.10.6,<0.10.7.0a0
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 135729
- timestamp: 1734433832730
-- conda: https://prefix.dev/conda-forge/win-64/aws-c-io-0.15.3-hc5a9e45_5.conda
- sha256: 9c024c891af60321e6415e1c8b218e8d6d254dfecbe365489d24b79f5eecbc77
- md5: 8f76c566c8eb5e175228987f67b0f91b
- depends:
- - aws-c-cal >=0.8.1,<0.8.2.0a0
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 159852
- timestamp: 1734433737353
-- conda: https://prefix.dev/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda
- sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a
- md5: 96c3e0221fa2da97619ee82faa341a73
- depends:
- - __glibc >=2.17,<3.0.a0
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - aws-c-http >=0.9.2,<0.9.3.0a0
- - aws-c-io >=0.15.3,<0.15.4.0a0
- - libgcc >=13
- license: Apache-2.0
- license_family: Apache
+ - conda: https://prefix.dev/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda
+ - pypi: ./
+ tests-cuda:
+ channels:
+ - url: https://prefix.dev/conda-forge/
+ indexes:
+ - https://pypi.org/simple
+ packages:
+ linux-64:
+ - conda: https://prefix.dev/conda-forge/linux-64/_openmp_mutex-4.5-3_kmp_llvm.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/coverage-7.8.2-py310h89163eb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cpython-3.10.17-py310hd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cuda-cccl_linux-64-12.9.27-ha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cuda-crt-dev_linux-64-12.9.41-ha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/cuda-crt-tools-12.9.41-ha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/cuda-cudart-12.9.37-h5888daf_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-dev_linux-64-12.9.37-h3f2d84a_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-static_linux-64-12.9.37-h3f2d84a_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cuda-cudart_linux-64-12.9.37-h3f2d84a_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/cuda-cuobjdump-12.9.26-hbd13f7d_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/cuda-cupti-12.9.19-h9ab20c4_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/cuda-cupti-dev-12.9.19-h9ab20c4_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/cuda-nvcc-tools-12.9.41-he02047a_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/cuda-nvdisasm-12.9.19-hbd13f7d_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/cuda-nvrtc-12.9.41-h5888daf_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/cuda-nvtx-12.9.19-h5888daf_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/cuda-nvvm-tools-12.9.41-he02047a_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cuda-version-12.9-h4f385c5_3.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/cudnn-9.10.1.4-h7646684_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/cupy-13.4.1-py310hab14140_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/cupy-core-13.4.1-py310h4564b94_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/fastrlock-0.8.3-py310h8c668a6_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/gmpy2-2.2.1-py310he8512ff_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/icu-75.1-he02047a_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/jaxlib-0.6.0-cuda126py310hec873cc_200.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libabseil-20250127.1-cxx17_hbbce691_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libblas-3.9.0-31_hfdb39a5_mkl.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcap-2.75-h39aace5_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcblas-3.9.0-31_h372d94f_mkl.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcublas-12.9.0.13-h9ab20c4_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcublas-dev-12.9.0.13-h9ab20c4_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcudnn-9.10.1.4-h4840ae0_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcudnn-dev-9.10.1.4-hcd2ec93_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcudss-0.5.0.16-h14340ca_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcufft-11.4.0.6-h5888daf_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcufft-dev-11.4.0.6-h5888daf_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcufile-1.14.0.30-h628e99a_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcurand-10.3.10.19-h9ab20c4_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcurand-dev-10.3.10.19-h9ab20c4_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcusolver-11.7.4.40-h9ab20c4_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcusolver-dev-11.7.4.40-h9ab20c4_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcusparse-12.5.9.5-h5888daf_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcusparse-dev-12.5.9.5-h5888daf_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgcrypt-lib-1.11.1-hb9d3cd8_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgpg-error-1.55-h3f2d84a_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgrpc-1.71.0-h8e591d7_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/liblapack-3.9.0-31_hc41d3b0_mkl.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libmagma-2.9.0-h19665d7_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libnl-3.11.0-hb9d3cd8_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libnvjitlink-12.9.41-h5888daf_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libre2-11-2024.07.02-hba17884_3.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.50.0-hee588c1_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libsystemd0-257.6-h4e0b6ca_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libtorch-2.7.0-cuda126_mkl_h99b69db_300.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libudev1-257.6-hbe16f8c_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libuv-1.51.0-hb9d3cd8_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/llvm-openmp-20.1.6-h024ca30_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/llvmlite-0.44.0-py310h1a6248f_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/markupsafe-3.0.2-py310h89163eb_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/ml_dtypes-0.5.1-py310h5eaa309_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/nccl-2.27.3.1-h9b8ff78_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/numba-0.61.2-py310h699fe88_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/numpy-2.2.6-py310hefbff90_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/optree-0.16.0-py310h3788b33_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyhc790b64_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyh217bc35_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/python-3.10.17-hd6af730_0_cpython.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.10-7_cp310.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/pytorch-2.7.0-cuda126_mkl_py310_h5ee0071_300.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/pyyaml-6.0.2-py310h89163eb_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/rdma-core-57.0-h5888daf_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/re2-2024.07.02-h9925aae_3.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/scipy-1.15.2-py310h1d65ade_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/sleef-3.8-h1b44611_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sparse-0.17.0-pyhcf101f3_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sympy-1.14.0-pyh2585a3b_105.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/triton-3.3.0-cuda126py310h05ca3d0_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda
+ - pypi: ./
+ osx-64:
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/c-ares-1.34.5-hf13058a_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/coverage-7.8.2-py310h8e2f543_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cpython-3.10.17-py310hd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/gmp-6.3.0-hf036a51_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/gmpy2-2.2.1-py310he278d95_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/jaxlib-0.6.0-cpu_py310h22b337c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libabseil-20250127.1-cxx17_h0e468a2_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libblas-3.9.0-20_osx64_mkl.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libcblas-3.9.0-20_osx64_mkl.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libcxx-20.1.6-hf95d169_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libgrpc-1.71.0-h7d722e6_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libhwloc-2.11.2-default_h4cdd727_1001.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/liblapack-3.9.0-20_osx64_mkl.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libprotobuf-5.29.3-h1c7185b_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libre2-11-2024.07.02-h08ce7b7_3.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libsqlite-3.50.0-hdb6dae5_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libtorch-2.7.0-cpu_mkl_h3891332_100.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libuv-1.51.0-h4cb831e_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/llvm-openmp-20.1.6-ha54dae1_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/llvmlite-0.44.0-py310hb13c577_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/osx-64/markupsafe-3.0.2-py310h8e2f543_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/mkl-2023.2.0-h54c2260_50500.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/ml_dtypes-0.5.1-py310h96a9d13_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/mpc-1.3.1-h9d8efa1_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/mpfr-4.2.1-haed47dc_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/numba-0.61.2-py310h6fcc139_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/numpy-2.2.6-py310h07c5b4d_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/optree-0.16.0-py310hf166250_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyhc790b64_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyh217bc35_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/python-3.10.17-h93e8a92_0_cpython.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.10-7_cp310.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/pytorch-2.7.0-cpu_mkl_py310_h73f974a_100.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/pyyaml-6.0.2-py310h8e2f543_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/re2-2024.07.02-hf8a452e_3.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/scipy-1.15.2-py310hef62574_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/sleef-3.8-hfe0d17b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sparse-0.17.0-pyhcf101f3_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sympy-1.14.0-pyh2585a3b_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/tbb-2021.13.0-hb890de9_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda
+ - pypi: ./
+ osx-arm64:
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/c-ares-1.34.5-h5505292_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/coverage-7.8.2-py310hc74094e_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cpython-3.10.17-py310hd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/gmpy2-2.2.1-py310h805dbd7_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/jaxlib-0.6.0-cpu_py310h2c532f2_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libabseil-20250127.1-cxx17_h07bc746_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-20.1.6-ha82da77_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libgrpc-1.71.0-h857da87_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libprotobuf-5.29.3-hccd9074_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libre2-11-2024.07.02-hd41c47c_3.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.50.0-h3f77e49_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libtorch-2.7.0-cpu_generic_h4059bed_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libuv-1.51.0-h5505292_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/llvm-openmp-20.1.6-hdb05f8b_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/llvmlite-0.44.0-py310hed9eb73_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/osx-arm64/markupsafe-3.0.2-py310hc74094e_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/ml_dtypes-0.5.1-py310h5936506_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/osx-arm64/numba-0.61.2-py310h75d646b_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/numpy-2.2.6-py310h4d83441_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/optree-0.16.0-py310h7f4e7e6_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyhc790b64_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyh217bc35_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/python-3.10.17-h6cefb37_0_cpython.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.10-7_cp310.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/pytorch-2.7.0-cpu_generic_py310_h10edff7_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/pyyaml-6.0.2-py310hc74094e_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_3.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/scipy-1.15.2-py310h32ab4ed_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/sleef-3.8-h8391f65_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sparse-0.17.0-pyhcf101f3_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sympy-1.14.0-pyh2585a3b_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda
+ - pypi: ./
+ win-64:
+ - conda: https://prefix.dev/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh7428d3b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/coverage-7.8.2-py310h38315fa_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cuda-cccl_win-64-12.9.27-h57928b3_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/cuda-cudart-12.9.37-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-dev_win-64-12.9.37-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-static_win-64-12.9.37-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cuda-cudart_win-64-12.9.37-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/cuda-cupti-12.9.19-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/cuda-nvrtc-12.9.41-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cuda-version-12.9-h4f385c5_3.conda
+ - conda: https://prefix.dev/conda-forge/win-64/cudnn-9.10.1.4-h1361d0a_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/cupy-13.4.1-py310h1203e13_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/cupy-core-13.4.1-py310h9d4bcf3_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/fastrlock-0.8.3-py310h9a06e79_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda
+ - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libabseil-20250127.1-cxx17_h4eb7d71_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libcublas-12.9.0.13-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libcudnn-9.10.1.4-hffc9a7f_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libcudnn-dev-9.10.1.4-hffc9a7f_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libcudss-0.5.0.16-hffc9a7f_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libcufft-11.4.0.6-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libcurand-10.3.10.19-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libcusolver-11.7.4.40-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libcusparse-12.5.9.5-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libmagma-2.9.0-he50f1ff_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libnvjitlink-12.9.41-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libprotobuf-5.29.3-he9d8c4a_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.50.0-h67fdade_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libtorch-2.7.0-cuda126_mkl_h09c782d_300.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libuv-1.51.0-h2466b09_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda
+ - conda: https://prefix.dev/conda-forge/win-64/llvmlite-0.44.0-py310h0288bfe_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/win-64/markupsafe-3.0.2-py310h38315fa_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda
+ - conda: https://prefix.dev/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda
+ - conda: https://prefix.dev/conda-forge/win-64/numba-0.61.2-py310h7793332_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/numpy-2.2.6-py310h4987827_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/optree-0.16.0-py310hc19bc0b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyhc790b64_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyh6a1d191_3.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/python-3.10.17-h8c5b53a_0_cpython.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.10-7_cp310.conda
+ - conda: https://prefix.dev/conda-forge/win-64/pytorch-2.7.0-cuda126_mkl_py310_h61b71b3_300.conda
+ - conda: https://prefix.dev/conda-forge/win-64/pyyaml-6.0.2-py310h38315fa_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/sleef-3.8-h7e360cc_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sparse-0.17.0-pyhcf101f3_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sympy-1.14.0-pyh04b8f61_5.conda
+ - conda: https://prefix.dev/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/vc-14.3-h2b53caa_26.conda
+ - conda: https://prefix.dev/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda
+ - conda: https://prefix.dev/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda
+ - conda: https://prefix.dev/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda
+ - pypi: ./
+ tests-nogil:
+ channels:
+ - url: https://prefix.dev/conda-forge/
+ indexes:
+ - https://pypi.org/simple
+ packages:
+ linux-64:
+ - conda: https://prefix.dev/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2
+ - conda: https://prefix.dev/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/coverage-7.8.2-pyhe1237c8_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cpython-3.13.3-py313hd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.135.4-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.50.1-hee588c1_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/numpy-2.3.0-py313h103f029_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-run-parallel-0.4.4-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/python-3.13.3-h4724d56_1_cp313t.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python-freethreading-3.13.3-h92d6c8b_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.13-7_cp313t.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pyyaml-6.0.2-pyhe1237c8_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda
+ - pypi: ./
+ osx-64:
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/coverage-7.8.2-pyhe1237c8_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cpython-3.13.3-py313hd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.135.4-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libcxx-20.1.6-hf95d169_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libsqlite-3.50.1-hdb6dae5_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/llvm-openmp-20.1.6-ha54dae1_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/numpy-2.3.0-py313h6699f8c_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-run-parallel-0.4.4-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/python-3.13.3-h2267d90_1_cp313t.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python-freethreading-3.13.3-h92d6c8b_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.13-7_cp313t.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pyyaml-6.0.2-pyhe1237c8_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda
+ - pypi: ./
+ osx-arm64:
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/coverage-7.8.2-pyhe1237c8_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cpython-3.13.3-py313hd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.135.4-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-20.1.6-ha82da77_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.50.1-h3f77e49_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/llvm-openmp-20.1.6-hdb05f8b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/numpy-2.3.0-py313h991d4a7_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-run-parallel-0.4.4-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/python-3.13.3-hfd29fff_1_cp313t.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python-freethreading-3.13.3-h92d6c8b_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.13-7_cp313t.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pyyaml-6.0.2-pyhe1237c8_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda
+ - pypi: ./
+ win-64:
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh7428d3b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/coverage-7.8.2-pyhe1237c8_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/cpython-3.13.3-py313hd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.5.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.135.4-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.50.1-h67fdade_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda
+ - conda: https://prefix.dev/conda-forge/win-64/numpy-2.3.0-py313hd96daed_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-run-parallel-0.4.4-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/python-3.13.3-hd7c436d_1_cp313t.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python-freethreading-3.13.3-h92d6c8b_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.13-7_cp313t.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pyyaml-6.0.2-pyhe1237c8_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/vc-14.3-h2b53caa_26.conda
+ - conda: https://prefix.dev/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda
+ - conda: https://prefix.dev/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda
+ - conda: https://prefix.dev/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda
+ - pypi: ./
+ tests-numpy1:
+ channels:
+ - url: https://prefix.dev/conda-forge/
+ indexes:
+ - https://pypi.org/simple
+ packages:
+ linux-64:
+ - conda: https://prefix.dev/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2
+ - conda: https://prefix.dev/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/coverage-7.8.2-py310h89163eb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.50.0-hee588c1_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/numpy-1.22.0-py310h454958d_1.tar.bz2
+ - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/python-3.10.17-hd6af730_0_cpython.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.10-7_cp310.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - pypi: ./
+ osx-64:
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/coverage-7.8.2-py310h8e2f543_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libcxx-20.1.6-hf95d169_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libsqlite-3.50.0-hdb6dae5_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/llvm-openmp-20.1.6-ha54dae1_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/numpy-1.22.0-py310hfbbbacf_1.tar.bz2
+ - conda: https://prefix.dev/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/python-3.10.17-h93e8a92_0_cpython.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.10-7_cp310.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - pypi: ./
+ osx-arm64:
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/coverage-7.8.2-py310hc74094e_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-20.1.6-ha82da77_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.50.0-h3f77e49_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/llvm-openmp-20.1.6-hdb05f8b_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/numpy-1.22.0-py310h567df17_1.tar.bz2
+ - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/python-3.10.17-h6cefb37_0_cpython.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.10-7_cp310.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - pypi: ./
+ win-64:
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh7428d3b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/coverage-7.8.2-py310h38315fa_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.50.0-h67fdade_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda
+ - conda: https://prefix.dev/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda
+ - conda: https://prefix.dev/conda-forge/win-64/numpy-1.22.0-py310hcae7c84_1.tar.bz2
+ - conda: https://prefix.dev/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/python-3.10.17-h8c5b53a_0_cpython.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.10-7_cp310.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/vc-14.3-h2b53caa_26.conda
+ - conda: https://prefix.dev/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda
+ - conda: https://prefix.dev/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda
+ - pypi: ./
+ tests-py310:
+ channels:
+ - url: https://prefix.dev/conda-forge/
+ indexes:
+ - https://pypi.org/simple
+ packages:
+ linux-64:
+ - conda: https://prefix.dev/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2
+ - conda: https://prefix.dev/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/coverage-7.8.2-py310h89163eb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.50.0-hee588c1_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/numpy-2.2.6-py310hefbff90_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/python-3.10.17-hd6af730_0_cpython.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.10-7_cp310.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - pypi: ./
+ osx-64:
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/coverage-7.8.2-py310h8e2f543_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libcxx-20.1.6-hf95d169_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libsqlite-3.50.0-hdb6dae5_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/llvm-openmp-20.1.6-ha54dae1_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/numpy-2.2.6-py310h07c5b4d_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/python-3.10.17-h93e8a92_0_cpython.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.10-7_cp310.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - pypi: ./
+ osx-arm64:
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/coverage-7.8.2-py310hc74094e_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-20.1.6-ha82da77_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.50.0-h3f77e49_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/llvm-openmp-20.1.6-hdb05f8b_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/numpy-2.2.6-py310h4d83441_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/python-3.10.17-h6cefb37_0_cpython.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.10-7_cp310.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - pypi: ./
+ win-64:
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh7428d3b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/coverage-7.8.2-py310h38315fa_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.50.0-h67fdade_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda
+ - conda: https://prefix.dev/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda
+ - conda: https://prefix.dev/conda-forge/win-64/numpy-2.2.6-py310h4987827_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/python-3.10.17-h8c5b53a_0_cpython.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.10-7_cp310.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/vc-14.3-h2b53caa_26.conda
+ - conda: https://prefix.dev/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda
+ - pypi: ./
+ tests-py313:
+ channels:
+ - url: https://prefix.dev/conda-forge/
+ indexes:
+ - https://pypi.org/simple
+ packages:
+ linux-64:
+ - conda: https://prefix.dev/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2
+ - conda: https://prefix.dev/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/coverage-7.8.2-py313h8060acc_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.50.0-hee588c1_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/numpy-2.3.0-py313h17eae1a_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/python-3.13.3-hf636f53_101_cp313.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.13-7_cp313.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - pypi: ./
+ osx-64:
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/coverage-7.8.2-py313h717bdf5_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libcxx-20.1.6-hf95d169_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libsqlite-3.50.0-hdb6dae5_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/llvm-openmp-20.1.6-ha54dae1_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/numpy-2.3.0-py313hc518a0f_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/python-3.13.3-h534c281_101_cp313.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.13-7_cp313.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - pypi: ./
+ osx-arm64:
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/coverage-7.8.2-py313ha9b7d5b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-20.1.6-ha82da77_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.50.0-h3f77e49_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/llvm-openmp-20.1.6-hdb05f8b_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/numpy-2.3.0-py313h41a2e72_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/python-3.13.3-h81fe080_101_cp313.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.13-7_cp313.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - pypi: ./
+ win-64:
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh7428d3b_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/coverage-7.8.2-py313hb4c8b1a_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda
+ - conda: https://prefix.dev/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.50.0-h67fdade_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda
+ - conda: https://prefix.dev/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda
+ - conda: https://prefix.dev/conda-forge/win-64/numpy-2.3.0-py313hefb8edb_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/python-3.13.3-h261c0b1_101_cp313.conda
+ - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.13-7_cp313.conda
+ - conda: https://prefix.dev/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda
+ - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda
+ - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ - conda: https://prefix.dev/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda
+ - conda: https://prefix.dev/conda-forge/win-64/vc-14.3-h2b53caa_26.conda
+ - conda: https://prefix.dev/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda
+ - pypi: ./
+packages:
+- conda: https://prefix.dev/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2
+ sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726
+ md5: d7c89558ba9fa0495403155b64376d81
+ license: None
purls: []
- size: 194672
- timestamp: 1734025626798
-- conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda
- sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd
- md5: c072045a6206f88015d02fcba1705ea1
+ size: 2562
+ timestamp: 1578324546067
+- conda: https://prefix.dev/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2
+ build_number: 16
+ sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22
+ md5: 73aaf86a425cc6e73fcf236a5a46396d
depends:
- - __osx >=11.0
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - aws-c-http >=0.9.2,<0.9.3.0a0
- - aws-c-io >=0.15.3,<0.15.4.0a0
- license: Apache-2.0
- license_family: Apache
+ - _libgcc_mutex 0.1 conda_forge
+ - libgomp >=7.5.0
+ constrains:
+ - openmp_impl 9999
+ license: BSD-3-Clause
+ license_family: BSD
purls: []
- size: 134371
- timestamp: 1734025379525
-- conda: https://prefix.dev/conda-forge/win-64/aws-c-mqtt-0.11.0-h2c94728_12.conda
- sha256: bfe3e2c5de01e285e67ac8119de58a11e594d202b3ebcfaa55ffd138a3b28279
- md5: bad2afca289f8854d431acdcc8f1cea8
+ size: 23621
+ timestamp: 1650670423406
+- conda: https://prefix.dev/conda-forge/linux-64/_openmp_mutex-4.5-3_kmp_llvm.conda
+ build_number: 3
+ sha256: cec7343e76c9da6a42c7e7cba53391daa6b46155054ef61a5ef522ea27c5a058
+ md5: ee5c2118262e30b972bc0b4db8ef0ba5
depends:
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - aws-c-http >=0.9.2,<0.9.3.0a0
- - aws-c-io >=0.15.3,<0.15.4.0a0
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- license: Apache-2.0
- license_family: Apache
+ - llvm-openmp >=9.0.1
+ license: BSD-3-Clause
+ license_family: BSD
purls: []
- size: 186987
- timestamp: 1734025825190
-- conda: https://prefix.dev/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda
- sha256: c2f205a7bf64c5f40eea373b3a0a7c363c9aa9246a13dd7f3d9c6a4434c4fe2d
- md5: 947c82025693bebd557f782bb5d6b469
+ size: 7649
+ timestamp: 1741390353130
+- conda: https://prefix.dev/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda
+ build_number: 8
+ sha256: 1a62cd1f215fe0902e7004089693a78347a30ad687781dfda2289cab000e652d
+ md5: 37e16618af5c4851a3f3d66dd0e11141
depends:
- - __glibc >=2.17,<3.0.a0
- - aws-c-auth >=0.8.0,<0.8.1.0a0
- - aws-c-cal >=0.8.1,<0.8.2.0a0
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - aws-c-http >=0.9.2,<0.9.3.0a0
- - aws-c-io >=0.15.3,<0.15.4.0a0
- - aws-checksums >=0.2.2,<0.2.3.0a0
- - libgcc >=13
- - openssl >=3.4.0,<4.0a0
- license: Apache-2.0
- license_family: Apache
+ - libgomp >=7.5.0
+ - libwinpthread >=12.0.0.r2.ggc561118da
+ constrains:
+ - openmp_impl 9999
+ - msys2-conda-epoch <0.0a0
+ license: BSD-3-Clause
+ license_family: BSD
purls: []
- size: 114156
- timestamp: 1734146123386
-- conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-s3-0.7.7-h1be5864_0.conda
- sha256: 22966164d63808689fffd35945f57756c95337327e28099b5d77b29fc6a56ecc
- md5: a37bba7acb62dd70492ee01eacca3b8f
+ size: 49468
+ timestamp: 1718213032772
+- conda: https://prefix.dev/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda
+ sha256: 6c4456a138919dae9edd3ac1a74b6fbe5fd66c05675f54df2f8ab8c8d0cc6cea
+ md5: 1fd9696649f65fd6611fcdb4ffec738a
depends:
- - __osx >=11.0
- - aws-c-auth >=0.8.0,<0.8.1.0a0
- - aws-c-cal >=0.8.1,<0.8.2.0a0
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - aws-c-http >=0.9.2,<0.9.3.0a0
- - aws-c-io >=0.15.3,<0.15.4.0a0
- - aws-checksums >=0.2.2,<0.2.3.0a0
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 97598
- timestamp: 1734146239038
-- conda: https://prefix.dev/conda-forge/win-64/aws-c-s3-0.7.7-h6a38c86_0.conda
- sha256: 6698400778ddf56c3dabd44b8fbe567242bb82d50957fb35794ecaea40b0d74a
- md5: 1263ee7d4211e4e0e1e3a313c4118601
- depends:
- - aws-c-auth >=0.8.0,<0.8.1.0a0
- - aws-c-cal >=0.8.1,<0.8.2.0a0
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - aws-c-http >=0.9.2,<0.9.3.0a0
- - aws-c-io >=0.15.3,<0.15.4.0a0
- - aws-checksums >=0.2.2,<0.2.3.0a0
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 109362
- timestamp: 1734146367350
-- conda: https://prefix.dev/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda
- sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc
- md5: dcd498d493818b776a77fbc242fbf8e4
+ - python >=3.10
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/alabaster?source=hash-mapping
+ size: 18684
+ timestamp: 1733750512696
+- conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda
+ sha256: 259b8e21ee0ce8f2cdcee9df7ba9b7e53d1b4aa2d252946acf5108e03d5d7b5e
+ md5: b656a1f58a53e7b6f5d4588d9b19e7b0
depends:
- - __glibc >=2.17,<3.0.a0
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - libgcc >=13
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 55911
- timestamp: 1736535960724
-- conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda
- sha256: ea4f0f1e99056293c69615f581a997d65ba7e229e296e402e0d8ef750648a5b5
- md5: e7b5498ac7b7ab921a907be38f3a8080
+ - python >=3.10
+ - python
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/array-api-compat?source=hash-mapping
+ size: 45821
+ timestamp: 1747403732947
+- pypi: ./
+ name: array-api-extra
+ version: 0.8.1.dev0
+ sha256: 8236f595888133a239f0b7b6a6ee07a83c143c6bb09bb8b26ffff0309336f27b
+ requires_dist:
+ - array-api-compat>=1.12.0,<2
+ requires_python: '>=3.10'
+ editable: true
+- conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda
+ sha256: fda42d9e952c4c39354e31d43f1b7e7708a2e66c386074cd995097fe98be9150
+ md5: 11107d0aeb8c590a34fee0894909816b
depends:
- - __osx >=11.0
- - aws-c-common >=0.10.6,<0.10.7.0a0
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 49872
- timestamp: 1736536152332
-- conda: https://prefix.dev/conda-forge/win-64/aws-c-sdkutils-0.2.2-h099ea23_0.conda
- sha256: af9cc0696b9fb60e7d0738b140b3d93efcf7f354e56c3034f459fc1651d53921
- md5: 6292ef653d6002edc721d2dc9356aa57
+ - numpy
+ - python >=3.9
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/array-api-strict?source=hash-mapping
+ size: 56647
+ timestamp: 1742521671631
+- conda: https://prefix.dev/conda-forge/linux-64/astroid-3.3.10-py310hff52083_0.conda
+ sha256: 8fc36a19f99ce069add5036b7956c993d17e6fdffe6d89094269ee44d5258376
+ md5: 23d30197602d01c464d5ffec91091289
depends:
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 55109
- timestamp: 1736536467087
-- conda: https://prefix.dev/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda
- sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8
- md5: 74e8c3e4df4ceae34aa2959df4b28101
+ - python >=3.10,<3.11.0a0
+ - python_abi 3.10.* *_cp310
+ - typing_extensions >=4
+ license: LGPL-2.1-or-later
+ license_family: LGPL
+ purls:
+ - pkg:pypi/astroid?source=hash-mapping
+ size: 399426
+ timestamp: 1746997117686
+- conda: https://prefix.dev/conda-forge/linux-64/astroid-3.3.10-py313h78bf25f_0.conda
+ sha256: 55a8e20bf15529a4399ea72a861062bafb91c78f7169a403d2193f4c26d7e9e2
+ md5: 835a23d7a82ea1f2e31059cf78e9b822
depends:
- - __glibc >=2.17,<3.0.a0
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - libgcc >=13
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 72762
- timestamp: 1733994347547
-- conda: https://prefix.dev/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda
- sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c
- md5: e70e88a357a3749b67679c0788c5b08a
+ - python >=3.13,<3.14.0a0
+ - python_abi 3.13.* *_cp313
+ license: LGPL-2.1-or-later
+ license_family: LGPL
+ purls:
+ - pkg:pypi/astroid?source=hash-mapping
+ size: 516021
+ timestamp: 1746997156884
+- conda: https://prefix.dev/conda-forge/osx-64/astroid-3.3.10-py310h2ec42d9_0.conda
+ sha256: 7c817ac7b097e831e34d33aee0e48a99f1120c35f954b0d793ce72be054e07a8
+ md5: ac5c0afc13d04ace807ac20dd6b49f0e
depends:
- - __osx >=11.0
- - aws-c-common >=0.10.6,<0.10.7.0a0
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 70186
- timestamp: 1733994496998
-- conda: https://prefix.dev/conda-forge/win-64/aws-checksums-0.2.2-h099ea23_4.conda
- sha256: 577e62dbf1750219cfb017d36c9022f40d7dc287b597fd7dec1ca04cade0108c
- md5: 5a8ce497f17cf1e6ae745f122b6a2bc3
+ - python >=3.10,<3.11.0a0
+ - python_abi 3.10.* *_cp310
+ - typing_extensions >=4
+ license: LGPL-2.1-or-later
+ license_family: LGPL
+ purls:
+ - pkg:pypi/astroid?source=hash-mapping
+ size: 400124
+ timestamp: 1746997273517
+- conda: https://prefix.dev/conda-forge/osx-64/astroid-3.3.10-py313habf4b1d_0.conda
+ sha256: 8d61bde73692f7af9757b91acfe80f6043a97e3054286a0bc1f88614e1832a78
+ md5: b7671700076df47240739204b2d52156
depends:
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 91909
- timestamp: 1733994821424
-- conda: https://prefix.dev/conda-forge/linux-64/aws-crt-cpp-0.29.8-h8570fcd_1.conda
- sha256: ff8f08bc615d3ef6d970df80988200b3ecee76ecfa4885109cd82b30176cfda9
- md5: f21296b496cca1c1fa426b9a3b676e79
+ - python >=3.13,<3.14.0a0
+ - python_abi 3.13.* *_cp313
+ license: LGPL-2.1-or-later
+ license_family: LGPL
+ purls:
+ - pkg:pypi/astroid?source=hash-mapping
+ size: 516449
+ timestamp: 1746997188640
+- conda: https://prefix.dev/conda-forge/osx-arm64/astroid-3.3.10-py310hbe9552e_0.conda
+ sha256: 973b9a94a827b34c74e7ad87f5acae6121352b28f56b4e4810c3158fbb9a0847
+ md5: 9895259a8e2a63de82b34c6022c88c3d
depends:
- - __glibc >=2.17,<3.0.a0
- - aws-c-auth >=0.8.0,<0.8.1.0a0
- - aws-c-cal >=0.8.1,<0.8.2.0a0
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - aws-c-event-stream >=0.5.0,<0.5.1.0a0
- - aws-c-http >=0.9.2,<0.9.3.0a0
- - aws-c-io >=0.15.3,<0.15.4.0a0
- - aws-c-mqtt >=0.11.0,<0.11.1.0a0
- - aws-c-s3 >=0.7.7,<0.7.8.0a0
- - aws-c-sdkutils >=0.2.2,<0.2.3.0a0
- - libgcc >=13
- - libstdcxx >=13
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 354328
- timestamp: 1736598991291
-- conda: https://prefix.dev/conda-forge/osx-arm64/aws-crt-cpp-0.29.8-h23176ea_1.conda
- sha256: db6a31078bb82fb12044d7706239c003568273729f7ba4971c1479b7926ada82
- md5: 31fdd3ffb00f5472196fa95ef08087b7
+ - python >=3.10,<3.11.0a0
+ - python >=3.10,<3.11.0a0 *_cpython
+ - python_abi 3.10.* *_cp310
+ - typing_extensions >=4
+ license: LGPL-2.1-or-later
+ license_family: LGPL
+ purls:
+ - pkg:pypi/astroid?source=hash-mapping
+ size: 400635
+ timestamp: 1746997297552
+- conda: https://prefix.dev/conda-forge/osx-arm64/astroid-3.3.10-py313h8f79df9_0.conda
+ sha256: 825dbf7908e0ee914e761bea1624fab79dd2514d0e8aaa7652f17393097fcd99
+ md5: 113ea185954aefd81c37fbebb7551283
depends:
- - __osx >=11.0
- - aws-c-auth >=0.8.0,<0.8.1.0a0
- - aws-c-cal >=0.8.1,<0.8.2.0a0
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - aws-c-event-stream >=0.5.0,<0.5.1.0a0
- - aws-c-http >=0.9.2,<0.9.3.0a0
- - aws-c-io >=0.15.3,<0.15.4.0a0
- - aws-c-mqtt >=0.11.0,<0.11.1.0a0
- - aws-c-s3 >=0.7.7,<0.7.8.0a0
- - aws-c-sdkutils >=0.2.2,<0.2.3.0a0
- - libcxx >=18
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 236269
- timestamp: 1736599024242
-- conda: https://prefix.dev/conda-forge/win-64/aws-crt-cpp-0.29.8-h703467b_1.conda
- sha256: 26bf5f5c644d5ff00783dd06d493bfdb9c6c20b9e82f200dbc3ae60754ef1e7f
- md5: b1d3b02bde39ffe4ffa61ce87d86abc2
- depends:
- - aws-c-auth >=0.8.0,<0.8.1.0a0
- - aws-c-cal >=0.8.1,<0.8.2.0a0
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - aws-c-event-stream >=0.5.0,<0.5.1.0a0
- - aws-c-http >=0.9.2,<0.9.3.0a0
- - aws-c-io >=0.15.3,<0.15.4.0a0
- - aws-c-mqtt >=0.11.0,<0.11.1.0a0
- - aws-c-s3 >=0.7.7,<0.7.8.0a0
- - aws-c-sdkutils >=0.2.2,<0.2.3.0a0
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 262760
- timestamp: 1736599347130
-- conda: https://prefix.dev/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h7001638_5.conda
- sha256: 849524b09865e84d6926aa814944cf71511aa4a00fffc5ad174c286d5dfac5f0
- md5: fc01d77a7f383b2915f276c73b7d0934
+ - python >=3.13,<3.14.0a0
+ - python >=3.13,<3.14.0a0 *_cp313
+ - python_abi 3.13.* *_cp313
+ license: LGPL-2.1-or-later
+ license_family: LGPL
+ purls:
+ - pkg:pypi/astroid?source=hash-mapping
+ size: 517274
+ timestamp: 1746997294787
+- conda: https://prefix.dev/conda-forge/win-64/astroid-3.3.10-py310h5588dad_0.conda
+ sha256: 9b1d89a07594eea4b095e36df447fd2f64e4e492256b7b91388378e51996517c
+ md5: 6eb388b714751d500899de8cb4b4f0fe
depends:
- - __glibc >=2.17,<3.0.a0
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - aws-c-event-stream >=0.5.0,<0.5.1.0a0
- - aws-checksums >=0.2.2,<0.2.3.0a0
- - aws-crt-cpp >=0.29.8,<0.29.9.0a0
- - libcurl >=8.11.1,<9.0a0
- - libgcc >=13
- - libstdcxx >=13
- - libzlib >=1.3.1,<2.0a0
- - openssl >=3.4.0,<4.0a0
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 3088636
- timestamp: 1736598504343
-- conda: https://prefix.dev/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h794939a_5.conda
- sha256: 2b1e7d5a45e82604bfdb6de63c53cf0e9495f596cfd90e644a1e67910de7f91c
- md5: a2374b4182bf5b2d08b2903393d0c487
+ - python >=3.10,<3.11.0a0
+ - python_abi 3.10.* *_cp310
+ - typing_extensions >=4
+ license: LGPL-2.1-or-later
+ license_family: LGPL
+ purls:
+ - pkg:pypi/astroid?source=hash-mapping
+ size: 398834
+ timestamp: 1746997190828
+- conda: https://prefix.dev/conda-forge/win-64/astroid-3.3.10-py313hfa70ccb_0.conda
+ sha256: f32b9bfdb515db963ed5e6b3c92d499c8537c6c2070810c533cf3bdeb5325b5f
+ md5: 94ccfd2c342d01a5d9f574fdbdddbfd2
depends:
- - __osx >=11.0
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - aws-c-event-stream >=0.5.0,<0.5.1.0a0
- - aws-checksums >=0.2.2,<0.2.3.0a0
- - aws-crt-cpp >=0.29.8,<0.29.9.0a0
- - libcurl >=8.11.1,<9.0a0
- - libcxx >=18
- - libzlib >=1.3.1,<2.0a0
- - openssl >=3.4.0,<4.0a0
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 2824168
- timestamp: 1736598935034
-- conda: https://prefix.dev/conda-forge/win-64/aws-sdk-cpp-1.11.458-h41fbdec_5.conda
- sha256: 97abee16a2171ae38934102a8056b3b2656cb7d711ae4563624fab1d47d77f22
- md5: ce1338d55e45416282f8b3921a2b2a54
+ - python >=3.13,<3.14.0a0
+ - python_abi 3.13.* *_cp313
+ license: LGPL-2.1-or-later
+ license_family: LGPL
+ purls:
+ - pkg:pypi/astroid?source=hash-mapping
+ size: 516241
+ timestamp: 1746997224346
+- conda: https://prefix.dev/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda
+ sha256: 93b14414b3b3ed91e286e1cbe4e7a60c4e1b1c730b0814d1e452a8ac4b9af593
+ md5: 8f587de4bcf981e26228f268df374a9b
depends:
- - aws-c-common >=0.10.6,<0.10.7.0a0
- - aws-c-event-stream >=0.5.0,<0.5.1.0a0
- - aws-checksums >=0.2.2,<0.2.3.0a0
- - aws-crt-cpp >=0.29.8,<0.29.9.0a0
- - libzlib >=1.3.1,<2.0a0
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
+ - python >=3.9
+ constrains:
+ - astroid >=2,<4
license: Apache-2.0
license_family: Apache
+ purls:
+ - pkg:pypi/asttokens?source=hash-mapping
+ size: 28206
+ timestamp: 1733250564754
+- conda: https://prefix.dev/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2
+ sha256: 82c13b1772c21fc4a17441734de471d3aabf82b61db9b11f4a1bd04a9c4ac324
+ md5: d9c69a24ad678ffce24c6543a0176b00
+ depends:
+ - libgcc-ng >=12
+ license: GPL-2.0-or-later
+ license_family: GPL
purls: []
- size: 2948912
- timestamp: 1736599399277
-- conda: https://prefix.dev/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda
- sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a
- md5: 0a8838771cc2e985cd295e01ae83baf1
- depends:
- - __glibc >=2.17,<3.0.a0
- - libcurl >=8.10.1,<9.0a0
- - libgcc >=13
- - libstdcxx >=13
- - openssl >=3.3.2,<4.0a0
- license: MIT
- license_family: MIT
- purls: []
- size: 345117
- timestamp: 1728053909574
-- conda: https://prefix.dev/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda
- sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e
- md5: f093a11dcf3cdcca010b20a818fcc6dc
- depends:
- - __osx >=11.0
- - libcurl >=8.10.1,<9.0a0
- - libcxx >=17
- - openssl >=3.3.2,<4.0a0
- license: MIT
- license_family: MIT
- purls: []
- size: 294299
- timestamp: 1728054014060
-- conda: https://prefix.dev/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda
- sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de
- md5: 73f73f60854f325a55f1d31459f2ab73
- depends:
- - __glibc >=2.17,<3.0.a0
- - azure-core-cpp >=1.14.0,<1.14.1.0a0
- - libgcc >=13
- - libstdcxx >=13
- - openssl >=3.3.2,<4.0a0
- license: MIT
- license_family: MIT
- purls: []
- size: 232351
- timestamp: 1728486729511
-- conda: https://prefix.dev/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda
- sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a
- md5: d7b71593a937459f2d4b67e1a4727dc2
- depends:
- - __osx >=11.0
- - azure-core-cpp >=1.14.0,<1.14.1.0a0
- - libcxx >=17
- - openssl >=3.3.2,<4.0a0
- license: MIT
- license_family: MIT
- purls: []
- size: 166907
- timestamp: 1728486882502
-- conda: https://prefix.dev/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda
- sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394
- md5: 7eb66060455c7a47d9dcdbfa9f46579b
- depends:
- - __glibc >=2.17,<3.0.a0
- - azure-core-cpp >=1.14.0,<1.14.1.0a0
- - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0
- - libgcc >=13
- - libstdcxx >=13
- license: MIT
- license_family: MIT
- purls: []
- size: 549342
- timestamp: 1728578123088
-- conda: https://prefix.dev/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda
- sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590
- md5: 704238ef05d46144dae2e6b5853df8bc
- depends:
- - __osx >=11.0
- - azure-core-cpp >=1.14.0,<1.14.1.0a0
- - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0
- - libcxx >=17
- license: MIT
- license_family: MIT
- purls: []
- size: 438636
- timestamp: 1728578216193
-- conda: https://prefix.dev/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda
- sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba
- md5: 13de36be8de3ae3f05ba127631599213
- depends:
- - __glibc >=2.17,<3.0.a0
- - azure-core-cpp >=1.14.0,<1.14.1.0a0
- - libgcc >=13
- - libstdcxx >=13
- - libxml2 >=2.12.7,<3.0a0
- - openssl >=3.3.2,<4.0a0
- license: MIT
- license_family: MIT
- purls: []
- size: 149312
- timestamp: 1728563338704
-- conda: https://prefix.dev/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda
- sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585
- md5: 7a187cd7b1445afc80253bb186a607cc
- depends:
- - __osx >=11.0
- - azure-core-cpp >=1.14.0,<1.14.1.0a0
- - libcxx >=17
- - libxml2 >=2.12.7,<3.0a0
- - openssl >=3.3.2,<4.0a0
- license: MIT
- license_family: MIT
- purls: []
- size: 121278
- timestamp: 1728563418777
-- conda: https://prefix.dev/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda
- sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2
- md5: 7c1980f89dd41b097549782121a73490
- depends:
- - __glibc >=2.17,<3.0.a0
- - azure-core-cpp >=1.14.0,<1.14.1.0a0
- - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0
- - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0
- - libgcc >=13
- - libstdcxx >=13
- license: MIT
- license_family: MIT
- purls: []
- size: 287366
- timestamp: 1728729530295
-- conda: https://prefix.dev/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda
- sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d
- md5: c49fbc5233fcbaa86391162ff1adef38
+ size: 71042
+ timestamp: 1660065501192
+- conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda
+ sha256: 99c53ffbcb5dc58084faf18587b215f9ac8ced36bbfb55fa807c00967e419019
+ md5: a10d11958cadc13fdb43df75f8b1903f
depends:
- - __osx >=11.0
- - azure-core-cpp >=1.14.0,<1.14.1.0a0
- - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0
- - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0
- - libcxx >=17
+ - python >=3.9
license: MIT
license_family: MIT
- purls: []
- size: 196032
- timestamp: 1728729672889
-- conda: https://prefix.dev/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda
- sha256: f6205d3a62e87447e06e98d911559be0208d824976d77ab092796c9176611fcb
- md5: 3e23f7db93ec14c80525257d8affac28
+ purls:
+ - pkg:pypi/attrs?source=hash-mapping
+ size: 57181
+ timestamp: 1741918625732
+- conda: https://prefix.dev/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda
+ sha256: 1c656a35800b7f57f7371605bc6507c8d3ad60fbaaec65876fce7f73df1fc8ac
+ md5: 0a01c169f0ab0f91b26e77a3301fbfe4
depends:
- python >=3.9
- pytz >=2015.7
license: BSD-3-Clause
license_family: BSD
purls:
- - pkg:pypi/babel?source=hash-mapping
- size: 6551057
- timestamp: 1733236466015
-- conda: https://prefix.dev/conda-forge/noarch/basedmypy-2.9.1-pyhd8ed1ab_0.conda
- sha256: fd98c651dc13618bfc427b548c109b6526603fcf1dca197bdb561a2a5a956622
- md5: ad268761b26971fa1e3c2629f4e5db56
+ - pkg:pypi/babel?source=compressed-mapping
+ size: 6938256
+ timestamp: 1738490268466
+- conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.29.4-pyhe01879c_0.conda
+ sha256: 06dceddeb8547cac92a48d1adc0d06201f14a3649757327670f01345ecd99c63
+ md5: b130c91f9371a7f8c3709d7b95be8709
depends:
- - basedtyping >=0.0.3
- - mypy_extensions >=1.0.0
- python >=3.9
- - tomli >=1.1.0
- - typing-extensions >=4.1.0
- license: BSD-3-Clause AND Apache-2.0
- purls:
- - pkg:pypi/basedmypy?source=hash-mapping
- size: 1850703
- timestamp: 1736398661625
-- conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.23.2-pyhd8ed1ab_0.conda
- sha256: c66b5e90af123465f3b34dca54e839aeb2ef443018a008bf5b460a4549d807cc
- md5: 9e92cdee91e7ab02b4bddd7883087f4c
- depends:
- nodejs-wheel >=20.13.1
- - python >=3.9
+ - python
license: MIT AND Apache-2.0
purls:
- pkg:pypi/basedpyright?source=hash-mapping
- size: 7535687
- timestamp: 1736098739733
-- conda: https://prefix.dev/conda-forge/noarch/basedtyping-0.1.10-pyhd8ed1ab_1.conda
- sha256: 73badfd807775e6e171de10ab752fd4706fe9360f6fd0cfabd509c670d12951b
- md5: 234a48e49c3913330665c444824e6533
- depends:
- - mypy_extensions >=1.0.0
- - python >=3.9,<4.0.0
- - tomli >=1.1.0
- - typing-extensions >=4.1.0
- license: MIT
- license_family: MIT
- purls:
- - pkg:pypi/basedtyping?source=hash-mapping
- size: 22725
- timestamp: 1735032220353
-- conda: https://prefix.dev/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda
- sha256: fca842ab7be052eea1037ebee17ac25cc79c626382dd2187b5c6e007b9d9f65f
- md5: d48f7e9fdec44baf6d1da416fe402b04
+ size: 8225473
+ timestamp: 1749712419694
+- conda: https://prefix.dev/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda
+ sha256: ddb0df12fd30b2d36272f5daf6b6251c7625d6a99414d7ea930005bbaecad06d
+ md5: 9f07c4fc992adb2d6c30da7fab3959a7
depends:
- python >=3.9
- soupsieve >=1.2
+ - typing-extensions
license: MIT
license_family: MIT
purls:
- - pkg:pypi/beautifulsoup4?source=hash-mapping
- size: 118042
- timestamp: 1733230951790
-- conda: https://prefix.dev/conda-forge/noarch/bokeh-3.6.2-pyhd8ed1ab_1.conda
- sha256: 66d2649b8b8f1ec58c83a9ff948aed4a3a86465ca6ccda686741797cae54b264
- md5: 976ff24762f1f991b08f7a7a41875086
- depends:
- - contourpy >=1.2
- - jinja2 >=2.9
- - numpy >=1.16
- - packaging >=16.8
- - pandas >=1.2
- - pillow >=7.1.0
- - python >=3.10
- - pyyaml >=3.10
- - tornado >=6.2
- - xyzservices >=2021.09.1
- license: BSD-3-Clause
- license_family: BSD
- purls:
- - pkg:pypi/bokeh?source=hash-mapping
- size: 4838239
- timestamp: 1733754831166
+ - pkg:pypi/beautifulsoup4?source=compressed-mapping
+ size: 146613
+ timestamp: 1744783307123
- conda: https://prefix.dev/conda-forge/linux-64/brotli-python-1.1.0-py310hf71b8c6_2.conda
sha256: 14f1e89d3888d560a553f40ac5ba83e4435a107552fa5b2b2029a7472554c1ef
md5: bf502c169c71e3c6ac0d6175addfacc2
@@ -3366,6 +4420,38 @@ packages:
- pkg:pypi/brotli?source=hash-mapping
size: 350424
timestamp: 1725267803672
+- conda: https://prefix.dev/conda-forge/osx-64/brotli-python-1.1.0-py310h53e7c6a_2.conda
+ sha256: acb9164da7426b7ce5b619fdec0b58703ef442436f11f3f8e3ee4ac3169d525b
+ md5: c64cd414df458e3c8342f2c602fc34e6
+ depends:
+ - __osx >=10.13
+ - libcxx >=17
+ - python >=3.10,<3.11.0a0
+ - python_abi 3.10.* *_cp310
+ constrains:
+ - libbrotlicommon 1.1.0 h00291cd_2
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/brotli?source=hash-mapping
+ size: 362793
+ timestamp: 1725268121746
+- conda: https://prefix.dev/conda-forge/osx-64/brotli-python-1.1.0-py313h9ea2907_2.conda
+ sha256: a8ff547af4de5d2d6cb84543a73f924dbbd60029920dbadc27298ea0b48f28bc
+ md5: 38ab121f341a1d8613c3898f36efecab
+ depends:
+ - __osx >=10.13
+ - libcxx >=17
+ - python >=3.13.0rc1,<3.14.0a0
+ - python_abi 3.13.* *_cp313
+ constrains:
+ - libbrotlicommon 1.1.0 h00291cd_2
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/brotli?source=hash-mapping
+ size: 363156
+ timestamp: 1725268004102
- conda: https://prefix.dev/conda-forge/osx-arm64/brotli-python-1.1.0-py310hb4ad77e_2.conda
sha256: a824cc3da3975a2812fac81a53902c07c5cf47d9dd344b783ff4401894de851f
md5: 3117b40143698e1afd17bca69f04e2d9
@@ -3445,6 +4531,16 @@ packages:
purls: []
size: 252783
timestamp: 1720974456583
+- conda: https://prefix.dev/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda
+ sha256: cad153608b81fb24fc8c509357daa9ae4e49dfc535b2cb49b91e23dbd68fc3c5
+ md5: 7ed4301d437b59045be7e051a0308211
+ depends:
+ - __osx >=10.13
+ license: bzip2-1.0.6
+ license_family: BSD
+ purls: []
+ size: 134188
+ timestamp: 1720974491916
- conda: https://prefix.dev/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda
sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91
md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab
@@ -3467,70 +4563,65 @@ packages:
purls: []
size: 54927
timestamp: 1720974860185
-- conda: https://prefix.dev/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda
- sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320
- md5: e2775acf57efd5af15b8e3d1d74d72d3
+- conda: https://prefix.dev/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda
+ sha256: f8003bef369f57396593ccd03d08a8e21966157269426f71e943f96e4b579aeb
+ md5: f7f0d6cc2dc986d42ac2689ec88192be
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=13
license: MIT
license_family: MIT
purls: []
- size: 206085
- timestamp: 1734208189009
-- conda: https://prefix.dev/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda
- sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f
- md5: c1c999a38a4303b29d75c636eaa13cf9
+ size: 206884
+ timestamp: 1744127994291
+- conda: https://prefix.dev/conda-forge/osx-64/c-ares-1.34.5-hf13058a_0.conda
+ sha256: b37f5dacfe1c59e0a207c1d65489b760dff9ddb97b8df7126ceda01692ba6e97
+ md5: eafe5d9f1a8c514afe41e6e833f66dfd
depends:
- - __osx >=11.0
+ - __osx >=10.13
license: MIT
license_family: MIT
purls: []
- size: 179496
- timestamp: 1734208291879
-- conda: https://prefix.dev/conda-forge/win-64/c-ares-1.34.4-h2466b09_0.conda
- sha256: f364f7de63a7c35a62c8d90383dd7747b46fa6b9c35c16c99154a8c45685c86b
- md5: d387e6f147273d548f068f49a4291aef
+ size: 184824
+ timestamp: 1744128064511
+- conda: https://prefix.dev/conda-forge/osx-arm64/c-ares-1.34.5-h5505292_0.conda
+ sha256: b4bb55d0806e41ffef94d0e3f3c97531f322b3cb0ca1f7cdf8e47f62538b7a2b
+ md5: f8cd1beb98240c7edb1a95883360ccfa
depends:
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
+ - __osx >=11.0
license: MIT
license_family: MIT
purls: []
- size: 193862
- timestamp: 1734208384429
-- conda: https://prefix.dev/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda
- sha256: 1afd7274cbc9a334d6d0bc62fa760acc7afdaceb0b91a8df370ec01fd75dc7dd
- md5: 720523eb0d6a9b0f6120c16b2aa4e7de
- license: ISC
- purls: []
- size: 157088
- timestamp: 1734208393264
-- conda: https://prefix.dev/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda
- sha256: 256be633fd0882ccc1a7a32bc278547e1703f85082c0789a87a603ee3ab8fb82
- md5: 7cb381a6783d91902638e4ed1ebd478e
+ size: 179696
+ timestamp: 1744128058734
+- conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda
+ sha256: 1454f3f53a3b828d3cb68a3440cb0fa9f1cc0e3c8c26e9e023773dc19d88cc06
+ md5: 23c7fd5062b48d8294fc7f61bf157fba
+ depends:
+ - __win
license: ISC
purls: []
- size: 157091
- timestamp: 1734208344343
-- conda: https://prefix.dev/conda-forge/win-64/ca-certificates-2024.12.14-h56e8100_0.conda
- sha256: 424d82db36cd26234bc4772426170efd60e888c2aed0099a257a95e131683a5e
- md5: cb2eaeb88549ddb27af533eccf9a45c1
+ size: 152945
+ timestamp: 1745653639656
+- conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda
+ sha256: 2a70ed95ace8a3f8a29e6cd1476a943df294a7111dfb3e152e3478c4c889b7ac
+ md5: 95db94f75ba080a22eb623590993167b
+ depends:
+ - __unix
license: ISC
purls: []
- size: 157422
- timestamp: 1734208404685
-- conda: https://prefix.dev/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda
- sha256: 048c16a9cbcb1fbad02083414d3bc7c1d0eea4b39aee6aa6bf8d1d5089ca8bad
- md5: 6feb87357ecd66733be3279f16a8c400
+ size: 152283
+ timestamp: 1745653616541
+- conda: https://prefix.dev/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda
+ sha256: 52aa837642fd851b3f7ad3b1f66afc5366d133c1d452323f786b0378a391915c
+ md5: c33eeaaa33f45031be34cda513df39b6
depends:
- python >=3.9
license: ISC
purls:
- pkg:pypi/certifi?source=hash-mapping
- size: 161642
- timestamp: 1734380604767
+ size: 157200
+ timestamp: 1746569627830
- conda: https://prefix.dev/conda-forge/linux-64/cffi-1.17.1-py310h8deb56e_0.conda
sha256: 1b389293670268ab80c3b8735bc61bc71366862953e000efbb82204d00e41b6c
md5: 1fc24a3196ad5ede2a68148be61894f4
@@ -3563,6 +4654,36 @@ packages:
- pkg:pypi/cffi?source=hash-mapping
size: 295514
timestamp: 1725560706794
+- conda: https://prefix.dev/conda-forge/osx-64/cffi-1.17.1-py310hfce808e_0.conda
+ sha256: a9a98a09031c4b5304ca04d29f9b35329e40a915e8e9c6431daee97c1b606d36
+ md5: eefa80a0b01ffccf57c7c865bc6acfc4
+ depends:
+ - __osx >=10.13
+ - libffi >=3.4,<4.0a0
+ - pycparser
+ - python >=3.10,<3.11.0a0
+ - python_abi 3.10.* *_cp310
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/cffi?source=hash-mapping
+ size: 229844
+ timestamp: 1725560765436
+- conda: https://prefix.dev/conda-forge/osx-64/cffi-1.17.1-py313h49682b3_0.conda
+ sha256: 660c8f8488f78c500a1bb4a803c31403104b1ee2cabf1476a222a3b8abf5a4d7
+ md5: 98afc301e6601a3480f9e0b9f8867ee0
+ depends:
+ - __osx >=10.13
+ - libffi >=3.4,<4.0a0
+ - pycparser
+ - python >=3.13.0rc1,<3.14.0a0
+ - python_abi 3.13.* *_cp313
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/cffi?source=hash-mapping
+ size: 284540
+ timestamp: 1725560667915
- conda: https://prefix.dev/conda-forge/osx-arm64/cffi-1.17.1-py310h497396d_0.conda
sha256: 2cd81f5f8bb45f7625c232905e5f50f4f50a0cef651ec7143c6cf7d8d87bebcb
md5: 61ed55c277b0bdb5e6e67771f9e5b63e
@@ -3638,53 +4759,53 @@ packages:
- pkg:pypi/cfgv?source=hash-mapping
size: 12973
timestamp: 1734267180483
-- conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda
- sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b
- md5: e83a31202d1c0a000fce3e9cf3825875
+- conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda
+ sha256: 535ae5dcda8022e31c6dc063eb344c80804c537a5a04afba43a845fa6fa130f5
+ md5: 40fe4284b8b5835a9073a645139f35af
depends:
- python >=3.9
license: MIT
license_family: MIT
purls:
- - pkg:pypi/charset-normalizer?source=hash-mapping
- size: 47438
- timestamp: 1735929811779
-- conda: https://prefix.dev/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda
- sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab
- md5: f22f4d4970e09d68a10b922cbb0408d3
+ - pkg:pypi/charset-normalizer?source=compressed-mapping
+ size: 50481
+ timestamp: 1746214981991
+- conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda
+ sha256: 8aee789c82d8fdd997840c952a586db63c6890b00e88c4fb6e80a38edd5f51c0
+ md5: 94b550b8d3a614dbd326af798c7dfb40
depends:
- __unix
- - python >=3.9
+ - python >=3.10
license: BSD-3-Clause
license_family: BSD
purls:
- - pkg:pypi/click?source=hash-mapping
- size: 84705
- timestamp: 1734858922844
-- conda: https://prefix.dev/conda-forge/noarch/click-8.1.8-pyh7428d3b_0.conda
- sha256: c889ed359ae47eead4ffe8927b7206b22c55e67d6e74a9044c23736919d61e8d
- md5: 90e5571556f7a45db92ee51cb8f97af6
+ - pkg:pypi/click?source=compressed-mapping
+ size: 87749
+ timestamp: 1747811451319
+- conda: https://prefix.dev/conda-forge/noarch/click-8.2.1-pyh7428d3b_0.conda
+ sha256: 20c2d8ea3d800485245b586a28985cba281dd6761113a49d7576f6db92a0a891
+ md5: 3a59475037bc09da916e4062c5cad771
depends:
- __win
- colorama
- - python >=3.9
+ - python >=3.10
license: BSD-3-Clause
license_family: BSD
purls:
- - pkg:pypi/click?source=hash-mapping
- size: 85169
- timestamp: 1734858972635
-- conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.0-pyhd8ed1ab_2.conda
- sha256: 918151ad25558a37721055a02c0357ce9a2f51f07da1b238608e48ef17d35260
- md5: 1f76b7e2b3ab88def5aa2f158322c7e6
+ - pkg:pypi/click?source=compressed-mapping
+ size: 88117
+ timestamp: 1747811467132
+- conda: https://prefix.dev/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda
+ sha256: 21ecead7268241007bf65691610cd7314da68c1f88113092af690203b5780db5
+ md5: 364ba6c9fb03886ac979b482f39ebb92
depends:
- python >=3.9
license: BSD-3-Clause
license_family: BSD
purls:
- pkg:pypi/cloudpickle?source=hash-mapping
- size: 25975
- timestamp: 1735328713686
+ size: 25870
+ timestamp: 1736947650712
- conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287
md5: 962b9857ee8e7018c22f2776ffa0b2d7
@@ -3696,60 +4817,55 @@ packages:
- pkg:pypi/colorama?source=hash-mapping
size: 27011
timestamp: 1733218222191
-- conda: https://prefix.dev/conda-forge/linux-64/contourpy-1.3.1-py310h3788b33_0.conda
- sha256: 1b18ebb72fb20b9ece47c582c6112b1d4f0f7deebaa056eada99e1f994e8a81f
- md5: f993b13665fc2bb262b30217c815d137
+- conda: https://prefix.dev/conda-forge/linux-64/coverage-7.8.2-py310h89163eb_0.conda
+ sha256: 1e89236cd1ea9bbfcefa62a7225486301f18711e59e44dd802825ec53630c777
+ md5: 5ca8ab35287adc83b2d1996e5c2ac14c
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=13
- - libstdcxx >=13
- - numpy >=1.23
- python >=3.10,<3.11.0a0
- python_abi 3.10.* *_cp310
- license: BSD-3-Clause
- license_family: BSD
+ - tomli
+ license: Apache-2.0
+ license_family: APACHE
purls:
- - pkg:pypi/contourpy?source=hash-mapping
- size: 260973
- timestamp: 1731428528301
-- conda: https://prefix.dev/conda-forge/osx-arm64/contourpy-1.3.1-py310h7f4e7e6_0.conda
- sha256: 3a9cce7ee94d3a9e9cb230a70359945573c01650fd954dc19da58474074334e4
- md5: f32dcaa4434bc4cd66437945c66cec22
+ - pkg:pypi/coverage?source=hash-mapping
+ size: 299964
+ timestamp: 1748048883049
+- conda: https://prefix.dev/conda-forge/linux-64/coverage-7.8.2-py313h8060acc_0.conda
+ sha256: e6ab723429c2466024f8b1ecfa78457c3fbddf74127358dd115db9e263745534
+ md5: b278629953bd3424060870fca744de4a
depends:
- - __osx >=11.0
- - libcxx >=18
- - numpy >=1.23
- - python >=3.10,<3.11.0a0
- - python >=3.10,<3.11.0a0 *_cpython
- - python_abi 3.10.* *_cp310
- license: BSD-3-Clause
- license_family: BSD
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - python >=3.13,<3.14.0a0
+ - python_abi 3.13.* *_cp313
+ - tomli
+ license: Apache-2.0
+ license_family: APACHE
purls:
- - pkg:pypi/contourpy?source=hash-mapping
- size: 230775
- timestamp: 1731428811312
-- conda: https://prefix.dev/conda-forge/win-64/contourpy-1.3.1-py310hc19bc0b_0.conda
- sha256: b9e50ead1c1a7a7c0bff5b1e72436016037b0187cecba7f626c9feffe5b3deaf
- md5: 741bcc6a07e77d3102aa23c580cad4f0
+ - pkg:pypi/coverage?source=hash-mapping
+ size: 379067
+ timestamp: 1748048940298
+- conda: https://prefix.dev/conda-forge/noarch/coverage-7.8.2-pyhe1237c8_0.conda
+ sha256: a88f65a8e79045454be5c714bfa08530d1bf96fd8ce2d3dee7d3cda58a08d7e3
+ md5: 6d1d4aee3c89b52b8a46ee28854e7c20
depends:
- - numpy >=1.23
- - python >=3.10,<3.11.0a0
- - python_abi 3.10.* *_cp310
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- license: BSD-3-Clause
- license_family: BSD
+ - python >=3.9
+ - tomli
+ track_features:
+ - coverage_no_compile
+ license: Apache-2.0
+ license_family: APACHE
purls:
- - pkg:pypi/contourpy?source=hash-mapping
- size: 199849
- timestamp: 1731429286097
-- conda: https://prefix.dev/conda-forge/linux-64/coverage-7.6.10-py310h89163eb_0.conda
- sha256: 41336a050be9faa75b5785af036a756acd95adf2319cf258fe1836e2bf55221b
- md5: f9bf6ea6ddf8349750f1b455f603b0ae
+ - pkg:pypi/coverage?source=hash-mapping
+ size: 168830
+ timestamp: 1748048870605
+- conda: https://prefix.dev/conda-forge/osx-64/coverage-7.8.2-py310h8e2f543_0.conda
+ sha256: 45882f723c09ec059000f54ac3e2329b94057ecf909ea068d63913a11620dbe4
+ md5: f07a792c442b3b3aa890175a990814d4
depends:
- - __glibc >=2.17,<3.0.a0
- - libgcc >=13
+ - __osx >=10.13
- python >=3.10,<3.11.0a0
- python_abi 3.10.* *_cp310
- tomli
@@ -3757,14 +4873,13 @@ packages:
license_family: APACHE
purls:
- pkg:pypi/coverage?source=hash-mapping
- size: 294613
- timestamp: 1735245270240
-- conda: https://prefix.dev/conda-forge/linux-64/coverage-7.6.10-py313h8060acc_0.conda
- sha256: 707b9be598f4c8c724258ec078163282225d11c680b3c28cbf4e5baf578d1bc3
- md5: b76045c1b72b2db6e936bc1226a42c99
+ size: 299007
+ timestamp: 1748048918229
+- conda: https://prefix.dev/conda-forge/osx-64/coverage-7.8.2-py313h717bdf5_0.conda
+ sha256: 592d26da3b148157b2156d56c30951ad9f54339e7ebccfa551a057a75d494f09
+ md5: 73eb83ea3d00f06bf78e242cca5e8e44
depends:
- - __glibc >=2.17,<3.0.a0
- - libgcc >=13
+ - __osx >=10.13
- python >=3.13,<3.14.0a0
- python_abi 3.13.* *_cp313
- tomli
@@ -3772,11 +4887,11 @@ packages:
license_family: APACHE
purls:
- pkg:pypi/coverage?source=hash-mapping
- size: 373128
- timestamp: 1735245465985
-- conda: https://prefix.dev/conda-forge/osx-arm64/coverage-7.6.10-py310hc74094e_0.conda
- sha256: d77f7967add0155a4ed887933c01339b9f776b918452a0c2df8b74c74dde33af
- md5: 2c599a597c9d1aaf693f9236fcee9f54
+ size: 379534
+ timestamp: 1748048908923
+- conda: https://prefix.dev/conda-forge/osx-arm64/coverage-7.8.2-py310hc74094e_0.conda
+ sha256: 3e744844cdd208d8bc6e82b44621112a24903a4b6839c48b3fa174c247907994
+ md5: c7df9e51db55aadfdc74d2d1221226cc
depends:
- __osx >=11.0
- python >=3.10,<3.11.0a0
@@ -3787,11 +4902,11 @@ packages:
license_family: APACHE
purls:
- pkg:pypi/coverage?source=hash-mapping
- size: 293981
- timestamp: 1735245343917
-- conda: https://prefix.dev/conda-forge/osx-arm64/coverage-7.6.10-py313ha9b7d5b_0.conda
- sha256: 276f3b2591bb78ded4d579014c9e7c17b08d31657cbd925e20e860ca81ffa5ce
- md5: 3cfcb6a0e061db97eb8ca9b603251956
+ size: 299867
+ timestamp: 1748048905979
+- conda: https://prefix.dev/conda-forge/osx-arm64/coverage-7.8.2-py313ha9b7d5b_0.conda
+ sha256: 0bb5ab5b8bf10113d54fd28b4b50971910d3e6ec5ff04d1234c372d4ac173dfb
+ md5: 03a6198981fb10c021d9cbe0d5083231
depends:
- __osx >=11.0
- python >=3.13,<3.14.0a0
@@ -3802,11 +4917,11 @@ packages:
license_family: APACHE
purls:
- pkg:pypi/coverage?source=hash-mapping
- size: 371467
- timestamp: 1735245368381
-- conda: https://prefix.dev/conda-forge/win-64/coverage-7.6.10-py310h38315fa_0.conda
- sha256: 187b0afc6fad0078667b1ade42e02623945c884b70554039cd30c5b92ebf46a6
- md5: 17a5805f88d2bce1e213b73201ef1007
+ size: 378632
+ timestamp: 1748048935444
+- conda: https://prefix.dev/conda-forge/win-64/coverage-7.8.2-py310h38315fa_0.conda
+ sha256: 561e5fd17f164928948107550856347ba4ed5c16b50c363bf8fbd0c1f2310893
+ md5: 5e09090744ab0b70b2882bc415c0d5ad
depends:
- python >=3.10,<3.11.0a0
- python_abi 3.10.* *_cp310
@@ -3818,11 +4933,11 @@ packages:
license_family: APACHE
purls:
- pkg:pypi/coverage?source=hash-mapping
- size: 320275
- timestamp: 1735245663229
-- conda: https://prefix.dev/conda-forge/win-64/coverage-7.6.10-py313hb4c8b1a_0.conda
- sha256: 45317af859608460dd44f4c7a6d9fae0b97ade50f8938dc1f1bc39df836029da
- md5: b256188abee8e72deaa8be324cc27153
+ size: 326471
+ timestamp: 1748049113421
+- conda: https://prefix.dev/conda-forge/win-64/coverage-7.8.2-py313hb4c8b1a_0.conda
+ sha256: ad085fc5cf307db3c41d37b6b6557d591b9f3f7d91821076b60b798441920981
+ md5: 7d009fc0977890626693c4a74ee03501
depends:
- python >=3.13,<3.14.0a0
- python_abi 3.13.* *_cp313
@@ -3834,139 +4949,328 @@ packages:
license_family: APACHE
purls:
- pkg:pypi/coverage?source=hash-mapping
- size: 398427
- timestamp: 1735245578974
-- conda: https://prefix.dev/conda-forge/noarch/cpython-3.10.16-py310hd8ed1ab_1.conda
+ size: 404932
+ timestamp: 1748049058593
+- conda: https://prefix.dev/conda-forge/noarch/cpython-3.10.17-py310hd8ed1ab_0.conda
noarch: generic
- sha256: 522b5ff2c5b1ebe0050ad15cd76a1e14696752eead790ab28e29977d7a8a99e6
- md5: 5c7fe189f8761cd08a69924554c1ffab
+ sha256: 6944d47f2bf3c443d5af855ee0c77156da1b90c6f0e79cedc3b934bcd2794d64
+ md5: e2b81369f0473107784f8b7da8e6a8e9
depends:
- - python 3.10.16.*
+ - python >=3.10,<3.11.0a0
- python_abi * *_cp310
license: Python-2.0
purls: []
- size: 48888
- timestamp: 1733407928192
-- conda: https://prefix.dev/conda-forge/noarch/cuda-cccl_linux-64-12.6.77-ha770c72_0.conda
- sha256: 00a7de1d084896758dc2d24b1faf4bf59e596790b22a3a08bf163a810bbacde8
- md5: 365a924cf93535157d61debac807e9e4
+ size: 50554
+ timestamp: 1744323109983
+- conda: https://prefix.dev/conda-forge/noarch/cpython-3.13.3-py313hd8ed1ab_1.conda
+ noarch: generic
+ sha256: 02147913b77a10f32b3aa6940af4003c86c3323401caae44da8f5f7f68650453
+ md5: 6ba9ba47b91b7758cb963d0f0eaf3422
+ depends:
+ - python >=3.13,<3.14.0a0
+ - python_abi * *_cp313t
+ license: Python-2.0
+ purls: []
+ size: 47939
+ timestamp: 1744663487710
+- conda: https://prefix.dev/conda-forge/noarch/cuda-cccl_linux-64-12.9.27-ha770c72_0.conda
+ sha256: 2ee3b9564ca326226e5cda41d11b251482df8e7c757e333d28ec75213c75d126
+ md5: 87ff6381e33b76e5b9b179a2cdd005ec
+ depends:
+ - cuda-version >=12.9,<12.10.0a0
+ license: LicenseRef-NVIDIA-End-User-License-Agreement
+ purls: []
+ size: 1150650
+ timestamp: 1746189825236
+- conda: https://prefix.dev/conda-forge/noarch/cuda-cccl_win-64-12.9.27-h57928b3_0.conda
+ sha256: 681eb1d9afd596e04329a82b04734c0e37c6ecb94b3380f3a378d61983e2a8cc
+ md5: 8f897dca7111f3bb4ded97ba6947b186
+ depends:
+ - cuda-version >=12.9,<12.10.0a0
+ license: LicenseRef-NVIDIA-End-User-License-Agreement
+ purls: []
+ size: 1139649
+ timestamp: 1746189858434
+- conda: https://prefix.dev/conda-forge/noarch/cuda-crt-dev_linux-64-12.9.41-ha770c72_0.conda
+ sha256: 54e00942d92e21c35adcd2c55af7987719a48b01975abcefe0f936f3e2995e17
+ md5: 1b8184d441b383f0b1cf36005598fc05
+ depends:
+ - cuda-version >=12.9,<12.10.0a0
+ license: LicenseRef-NVIDIA-End-User-License-Agreement
+ purls: []
+ size: 93781
+ timestamp: 1746198278062
+- conda: https://prefix.dev/conda-forge/linux-64/cuda-crt-tools-12.9.41-ha770c72_0.conda
+ sha256: e291e3468396ab2dc9fc17607754fed19eac6cdcb3a5f30cf9063c18916ec491
+ md5: 452ec0ccbf67954a0a03c4ec0b1fa7a5
depends:
- - cuda-version >=12.6,<12.7.0a0
+ - cuda-version >=12.9,<12.10.0a0
license: LicenseRef-NVIDIA-End-User-License-Agreement
purls: []
- size: 1067930
- timestamp: 1727807050610
-- conda: https://prefix.dev/conda-forge/noarch/cuda-cccl_win-64-12.6.77-h57928b3_0.conda
- sha256: 8edb86dda336cb5ba5650c1251e792580e5d76543187beb003352e1f6e9b617e
- md5: 1ae84321073896156e5e4e5f95a1de4d
+ size: 28214
+ timestamp: 1746198287537
+- conda: https://prefix.dev/conda-forge/linux-64/cuda-cudart-12.9.37-h5888daf_0.conda
+ sha256: 5bf59a9cb7d581339daa291e2cb8d541a6c2bf264ae71dc516fa38720bc11ab4
+ md5: d874c87fba16e4ddf005f7e191da0775
depends:
- - cuda-version >=12.6,<12.7.0a0
+ - __glibc >=2.17,<3.0.a0
+ - cuda-cudart_linux-64 12.9.37 h3f2d84a_0
+ - cuda-version >=12.9,<12.10.0a0
+ - libgcc >=13
+ - libstdcxx >=13
+ license: LicenseRef-NVIDIA-End-User-License-Agreement
+ purls: []
+ size: 23165
+ timestamp: 1746194366557
+- conda: https://prefix.dev/conda-forge/win-64/cuda-cudart-12.9.37-he0c23c2_0.conda
+ sha256: acd1b2a93fe7882e791d0c559e8a08bf98f485541f82094b0951d716ce788fb5
+ md5: 8f6e143e039cf11351ea4959e24a7709
+ depends:
+ - cuda-cudart_win-64 12.9.37 he0c23c2_0
+ - cuda-version >=12.9,<12.10.0a0
+ - ucrt >=10.0.20348.0
+ - vc >=14.2,<15
+ - vc14_runtime >=14.29.30139
license: LicenseRef-NVIDIA-End-User-License-Agreement
purls: []
- size: 1068812
- timestamp: 1727807189161
-- conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-dev_linux-64-12.6.77-h3f2d84a_0.conda
- sha256: 60847bd8c74b02ca17d68d742fe545db84a18bf808344eb99929f32f79bffcf9
- md5: f967e2449b6c066f6d09497fff12d803
+ size: 169984
+ timestamp: 1746194845751
+- conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-dev_linux-64-12.9.37-h3f2d84a_0.conda
+ sha256: 369bf15b6ab428279620fa9a806db6e6adb7987c6137654054b07a192b8a8252
+ md5: 9ae200ef917b953d39c60d45ba78bebb
depends:
- cuda-cccl_linux-64
- cuda-cudart-static_linux-64
- cuda-cudart_linux-64
- - cuda-version >=12.6,<12.7.0a0
+ - cuda-version >=12.9,<12.10.0a0
license: LicenseRef-NVIDIA-End-User-License-Agreement
purls: []
- size: 365370
- timestamp: 1727810466552
-- conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-dev_win-64-12.6.77-he0c23c2_0.conda
- sha256: 6abee18760437c55f41b310980a597bda95cba7277a160a288b25d2faf55257d
- md5: 3f9a064a676b3f44da9ea34ae854acb9
+ size: 388621
+ timestamp: 1746194374721
+- conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-dev_win-64-12.9.37-he0c23c2_0.conda
+ sha256: 0a95913e231cc13a0bba0d92d409acb1a152b1776e2786c520029ca3ba692831
+ md5: 72ee3e25a338296c6950b218bed4f7e8
depends:
- cuda-cccl_win-64
- cuda-cudart-static_win-64
- cuda-cudart_win-64
- - cuda-version >=12.6,<12.7.0a0
+ - cuda-version >=12.9,<12.10.0a0
+ license: LicenseRef-NVIDIA-End-User-License-Agreement
+ purls: []
+ size: 1189935
+ timestamp: 1746194862026
+- conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-static_linux-64-12.9.37-h3f2d84a_0.conda
+ sha256: 47f9c7f8c946b9e6e2c7c616d9c59acf59ea96cf64f1e0a5c090f63b456ab1fc
+ md5: bc0e5f61bfea338148d265fe9bbbacae
+ depends:
+ - cuda-version >=12.9,<12.10.0a0
+ license: LicenseRef-NVIDIA-End-User-License-Agreement
+ purls: []
+ size: 1148263
+ timestamp: 1746194340428
+- conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-static_win-64-12.9.37-he0c23c2_0.conda
+ sha256: 2b2c0168971ef5b5df4b9a19b2651b4b7b3c481c652188c92df10e4effc3c2b6
+ md5: 690c41b0a951e9c309e9977e5d439e59
+ depends:
+ - cuda-version >=12.9,<12.10.0a0
+ license: LicenseRef-NVIDIA-End-User-License-Agreement
+ purls: []
+ size: 354543
+ timestamp: 1746194418295
+- conda: https://prefix.dev/conda-forge/noarch/cuda-cudart_linux-64-12.9.37-h3f2d84a_0.conda
+ sha256: 5d3da5b258785cb7aa593363518d11e7b5580373d612faba43a72c9c9db941f9
+ md5: 05c9f71dede6cfae29dfc1141128e717
+ depends:
+ - cuda-version >=12.9,<12.10.0a0
+ license: LicenseRef-NVIDIA-End-User-License-Agreement
+ purls: []
+ size: 197833
+ timestamp: 1746194349673
+- conda: https://prefix.dev/conda-forge/noarch/cuda-cudart_win-64-12.9.37-he0c23c2_0.conda
+ sha256: 8e13960315e60e8bb477ceb0ec0f49cc5416fac426921af9f7231641261be37e
+ md5: f6859fa854794d05f770a7497f04c15d
+ depends:
+ - cuda-version >=12.9,<12.10.0a0
+ license: LicenseRef-NVIDIA-End-User-License-Agreement
+ purls: []
+ size: 23230
+ timestamp: 1746194434599
+- conda: https://prefix.dev/conda-forge/linux-64/cuda-cuobjdump-12.9.26-hbd13f7d_0.conda
+ sha256: 873d7f722904b104cbc31402380c0749cecf83e8ee270e4277e97975c4170793
+ md5: 9f83ac9b3dcc0401bb19a546af50bd47
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - cuda-nvdisasm
+ - cuda-version >=12.9,<12.10.0a0
+ - libgcc >=13
+ - libstdcxx >=13
+ license: LicenseRef-NVIDIA-End-User-License-Agreement
+ purls: []
+ size: 244544
+ timestamp: 1746193903455
+- conda: https://prefix.dev/conda-forge/linux-64/cuda-cupti-12.9.19-h9ab20c4_0.conda
+ sha256: 19ca76b00200608775c97579ac0be54e767a86dd6b614d0b001d1bad8007f1fb
+ md5: 2ccc05e957d8f6a9e3d5d35b0847f0b2
+ depends:
+ - __glibc >=2.28,<3.0.a0
+ - cuda-version >=12.9,<12.10.0a0
+ - libgcc >=13
+ - libstdcxx >=13
license: LicenseRef-NVIDIA-End-User-License-Agreement
purls: []
- size: 795994
- timestamp: 1727810947677
-- conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-static_linux-64-12.6.77-h3f2d84a_0.conda
- sha256: aefed29499bdbe5d0c65ca44ef596929cf34cc3014f0ae225cdd45a0e66f2660
- md5: 3ad8eacbf716ddbca1b5292a3668c821
+ size: 1844732
+ timestamp: 1746192697291
+- conda: https://prefix.dev/conda-forge/win-64/cuda-cupti-12.9.19-he0c23c2_0.conda
+ sha256: 8a1201431007a9499fc13d7cf7216f9ed749d225e12228a7e60a1403abe91165
+ md5: ae69973065b5cedc747e4958c8128268
depends:
- - cuda-version >=12.6,<12.7.0a0
+ - cuda-version >=12.9,<12.10.0a0
+ - ucrt >=10.0.20348.0
+ - vc >=14.2,<15
+ - vc14_runtime >=14.29.30139
license: LicenseRef-NVIDIA-End-User-License-Agreement
purls: []
- size: 762328
- timestamp: 1727810443982
-- conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-static_win-64-12.6.77-he0c23c2_0.conda
- sha256: a36d2216dfe3cfbd5687a511fa9596683b5028598b2a348a14f735a25f996c2f
- md5: f5f6db5c5e308919544cb5d394d05766
+ size: 3695760
+ timestamp: 1746193095945
+- conda: https://prefix.dev/conda-forge/linux-64/cuda-cupti-dev-12.9.19-h9ab20c4_0.conda
+ sha256: 611ec4743bfc27cf21d5529611a384a6621a9600a8d036299fab198625465b51
+ md5: 359a97d37351c1f1795155508a5337fc
depends:
- - cuda-version >=12.6,<12.7.0a0
+ - __glibc >=2.28,<3.0.a0
+ - cuda-cupti 12.9.19 h9ab20c4_0
+ - cuda-version >=12.9,<12.10.0a0
+ - libgcc >=13
+ - libstdcxx >=13
+ constrains:
+ - cuda-cupti-static >=12.9.19
license: LicenseRef-NVIDIA-End-User-License-Agreement
purls: []
- size: 342006
- timestamp: 1727810565776
-- conda: https://prefix.dev/conda-forge/noarch/cuda-cudart_linux-64-12.6.77-h3f2d84a_0.conda
- sha256: cf8433afa236108dba2a94ea5d4f605c50f0e297ee54eb6cb37175fd84ced907
- md5: 314908ad05e2c4833475a7d93f4149ca
+ size: 4614575
+ timestamp: 1746192761574
+- conda: https://prefix.dev/conda-forge/linux-64/cuda-nvcc-tools-12.9.41-he02047a_0.conda
+ sha256: e8784400792235d24e1e743a2678885ca631ec81dbf392a7c56511abe5efceec
+ md5: a53cbad5c98447d550b1740d0001cdc4
depends:
- - cuda-version >=12.6,<12.7.0a0
+ - __glibc >=2.17,<3.0.a0
+ - cuda-crt-tools 12.9.41 ha770c72_0
+ - cuda-nvvm-tools 12.9.41 he02047a_0
+ - cuda-version >=12.9,<12.10.0a0
+ - libgcc >=12
+ - libstdcxx >=12
+ constrains:
+ - gcc_impl_linux-64 >=6,<15.0a0
license: LicenseRef-NVIDIA-End-User-License-Agreement
purls: []
- size: 188616
- timestamp: 1727810451690
-- conda: https://prefix.dev/conda-forge/noarch/cuda-cudart_win-64-12.6.77-he0c23c2_0.conda
- sha256: 5fbfedab5162ea1e778c84f588bce42b7a72b7fb714d2ddf3c22757ffb5d11ad
- md5: 334451d538c5fe66d81cfe8947930f8e
+ size: 27425139
+ timestamp: 1746198424385
+- conda: https://prefix.dev/conda-forge/linux-64/cuda-nvdisasm-12.9.19-hbd13f7d_0.conda
+ sha256: d3846331680396c3adf9adee7f0db9fbfb39b20c06c4235fc687489cced8b9b7
+ md5: 8138274dcbaab5489b3e43b33d7825e9
depends:
- - cuda-version >=12.6,<12.7.0a0
+ - __glibc >=2.17,<3.0.a0
+ - cuda-version >=12.9,<12.10.0a0
+ - libgcc >=13
+ - libstdcxx >=13
license: LicenseRef-NVIDIA-End-User-License-Agreement
purls: []
- size: 22586
- timestamp: 1727810570341
-- conda: https://prefix.dev/conda-forge/linux-64/cuda-nvrtc-12.6.85-hbd13f7d_0.conda
- sha256: 3ddec2c3b68cea5edba728ffc61a2257300d401d428b9d60aca7363c0c0d4ad5
- md5: 9d9909844a0133153d54b6f07283da8c
+ size: 5517513
+ timestamp: 1746189877059
+- conda: https://prefix.dev/conda-forge/linux-64/cuda-nvrtc-12.9.41-h5888daf_0.conda
+ sha256: 67d17fe3ca19ad30d3f5c885da1b509c2372ba865e6ace4074ddd3a4d89ff525
+ md5: 57ea71a617e163f0b36512a5c9edd0bc
depends:
- __glibc >=2.17,<3.0.a0
- - cuda-version >=12.6,<12.7.0a0
+ - cuda-version >=12.9,<12.10.0a0
- libgcc >=13
- libstdcxx >=13
license: LicenseRef-NVIDIA-End-User-License-Agreement
purls: []
- size: 18138390
- timestamp: 1732133174552
-- conda: https://prefix.dev/conda-forge/win-64/cuda-nvrtc-12.6.85-he0c23c2_0.conda
- sha256: 251e79afc2adecd30863fb763523ac8ef2d62490ae3fbcb4d60673e4fcdd454f
- md5: f08894d09aac69d2144815c4a36e66e6
+ size: 67173643
+ timestamp: 1746190515836
+- conda: https://prefix.dev/conda-forge/win-64/cuda-nvrtc-12.9.41-he0c23c2_0.conda
+ sha256: d5cc6d54217feb2a5bbe57c8ee2259f40274e8ddae1c02f74ed728aedcd29a24
+ md5: 70d0ea61cc98e2e8c77e6d7812738980
depends:
- - cuda-version >=12.6,<12.7.0a0
+ - cuda-version >=12.9,<12.10.0a0
- ucrt >=10.0.20348.0
- vc >=14.2,<15
- vc14_runtime >=14.29.30139
license: LicenseRef-NVIDIA-End-User-License-Agreement
purls: []
- size: 30648689
- timestamp: 1732133462356
-- conda: https://prefix.dev/conda-forge/noarch/cuda-version-12.6-h7480c83_3.conda
- sha256: fd9104d73199040285b6a6ad56322b38af04828fabbac1f5a268a83509358425
- md5: 1c8b99e65a4423b1e4ac2e4c76fb0978
+ size: 58558185
+ timestamp: 1746190988918
+- conda: https://prefix.dev/conda-forge/linux-64/cuda-nvtx-12.9.19-h5888daf_0.conda
+ sha256: cccfc520ef222303de0fc94dd951b6c356d25f46eee450b17d853078afb6956c
+ md5: eeba52bd19d561f6b0be3bfcf4e292af
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - cuda-version >=12.9,<12.10.0a0
+ - libgcc >=13
+ - libstdcxx >=13
+ license: LicenseRef-NVIDIA-End-User-License-Agreement
+ purls: []
+ size: 29222
+ timestamp: 1746195676216
+- conda: https://prefix.dev/conda-forge/linux-64/cuda-nvvm-tools-12.9.41-he02047a_0.conda
+ sha256: c0da297dc963cd4d1d333815189c4a60360a7bcb8d3905fb37c208326bda1dc4
+ md5: e3310ca76e355bdb2b9589edc8fd6083
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - cuda-version >=12.9,<12.10.0a0
+ - libgcc >=12
+ - libstdcxx >=12
+ license: LicenseRef-NVIDIA-End-User-License-Agreement
+ purls: []
+ size: 24248207
+ timestamp: 1746198369570
+- conda: https://prefix.dev/conda-forge/noarch/cuda-version-12.9-h4f385c5_3.conda
+ sha256: 5f5f428031933f117ff9f7fcc650e6ea1b3fef5936cf84aa24af79167513b656
+ md5: b6d5d7f1c171cbd228ea06b556cfa859
constrains:
- - cudatoolkit 12.6|12.6.*
+ - cudatoolkit 12.9|12.9.*
- __cuda >=12
license: LicenseRef-NVIDIA-End-User-License-Agreement
purls: []
- size: 20940
- timestamp: 1722603990914
-- conda: https://prefix.dev/conda-forge/linux-64/cupy-13.3.0-py310h1b77274_2.conda
- sha256: 70e709d551f6e361f30db07095ee1ad100a88856576f1c756fe5b70db85ff2b6
- md5: 39e67291f815da99637a734876dfc77e
+ size: 21578
+ timestamp: 1746134436166
+- conda: https://prefix.dev/conda-forge/linux-64/cudnn-9.10.1.4-h7646684_0.conda
+ sha256: 746cfa7c0e9b9eba3429465cf9a70786a63da2f4b2c322c33d74b5ff2db6d8ae
+ md5: 5aa5b04b995ebe10fe44de6fe93b1850
+ depends:
+ - __glibc >=2.28,<3.0.a0
+ - cuda-version >=12,<13.0a0
+ - libcudnn-dev 9.10.1.4 hcd2ec93_0
+ - libgcc >=13
+ - libstdcxx >=13
+ constrains:
+ - cudnn-jit <0a
+ license: LicenseRef-cuDNN-Software-License-Agreement
+ purls: []
+ size: 19516
+ timestamp: 1747774432049
+- conda: https://prefix.dev/conda-forge/win-64/cudnn-9.10.1.4-h1361d0a_0.conda
+ sha256: 55d225f9012cd145c5ccb9a1d72b9070d303b9657b8fd4c12fa5071e5ed118fa
+ md5: faf9d123cfd4cd6d6b18484380cdbfb6
+ depends:
+ - cuda-version >=12,<13.0a0
+ - libcudnn-dev 9.10.1.4 hffc9a7f_0
+ - ucrt >=10.0.20348.0
+ - vc >=14.2,<15
+ - vc14_runtime >=14.29.30139
+ constrains:
+ - cudnn-jit <0a
+ license: LicenseRef-cuDNN-Software-License-Agreement
+ purls: []
+ size: 19810
+ timestamp: 1747775009811
+- conda: https://prefix.dev/conda-forge/linux-64/cupy-13.4.1-py310hab14140_0.conda
+ sha256: 749753ed431dd905fee25d42172bcc16d40572bd52a0e544a764ca926bd5c4ac
+ md5: 269c1cc23a17c99d23135b463e2f873b
depends:
- cuda-cudart-dev_linux-64
- cuda-nvrtc
- - cuda-version >=12.0,<13.0a0
- - cupy-core 13.3.0 py310h8de46e0_2
+ - cuda-version >=12,<13.0a0
+ - cupy-core 13.4.1 py310h4564b94_0
- libcublas
- libcufft
- libcurand
@@ -3977,16 +5281,16 @@ packages:
license: MIT
license_family: MIT
purls: []
- size: 354997
- timestamp: 1729280132792
-- conda: https://prefix.dev/conda-forge/win-64/cupy-13.3.0-py310h619d0c7_2.conda
- sha256: f133dd2957f4ee4fbc7510d5c5130d31cba4b3b0f3f35aed597938f7ecca06db
- md5: 7fa52b4cdd45b5485b6a20762884b332
+ size: 357383
+ timestamp: 1742852920546
+- conda: https://prefix.dev/conda-forge/win-64/cupy-13.4.1-py310h1203e13_0.conda
+ sha256: 964c00d98ef123b9896ed1c3c7a5d7c18bec7b3556e40670c946e1406de64f04
+ md5: be251d593614521df6d62eb77c81228b
depends:
- cuda-cudart-dev_win-64
- cuda-nvrtc
- - cuda-version >=12.0,<13.0a0
- - cupy-core 13.3.0 py310h441eff7_2
+ - cuda-version >=12,<13.0a0
+ - cupy-core 13.4.1 py310h9d4bcf3_0
- libcublas
- libcufft
- libcurand
@@ -3997,140 +5301,72 @@ packages:
license: MIT
license_family: MIT
purls: []
- size: 356161
- timestamp: 1729280925723
-- conda: https://prefix.dev/conda-forge/linux-64/cupy-core-13.3.0-py310h8de46e0_2.conda
- sha256: 45f452ba11cd88c3375493b2b9d75bb412320b30d1871f4d817608cf8ec97497
- md5: 9f9f87f2744573abc3e371960374eea0
+ size: 358032
+ timestamp: 1742855900356
+- conda: https://prefix.dev/conda-forge/linux-64/cupy-core-13.4.1-py310h4564b94_0.conda
+ sha256: aba3e57cf20ab7ffa78f20b0074777dd69d54db49733f693005aac58dc066638
+ md5: f04798b42b2a7ae5fc9524b32b27260b
depends:
- __glibc >=2.17,<3.0.a0
- - fastrlock >=0.8.2,<0.9.0a0
- - libgcc >=12
- - libstdcxx >=12
+ - fastrlock >=0.8.3,<0.9.0a0
+ - libgcc >=13
+ - libstdcxx >=13
- numpy >=1.22,<3.0.0a0
- python >=3.10,<3.11.0a0
- python_abi 3.10.* *_cp310
constrains:
- - cuda-version >=12.0,<13
- - nccl >=2.23.4.1,<3.0a0
- - libcublas >=12,<13.0a0
- - libcusparse >=12,<13.0a0
+ - cutensor >=2.2.0.0,<3.0a0
+ - cuda-version >=12,<13.0a0
- libcufft >=11,<12.0a0
+ - nccl >=2.26.2.1,<3.0a0
+ - libcusolver >=11,<12.0a0
- cuda-nvrtc >=12,<13.0a0
- - cupy >=13.3.0,<13.4.0a0
- libcurand >=10,<11.0a0
- - cutensor >=2.0.2.5,<3.0a0
- - __cuda >=12.0
- - libcusolver >=11,<12.0a0
+ - libcublas >=12,<13.0a0
- optuna ~=3.0
- scipy ~=1.7
- license: MIT
- license_family: MIT
- purls:
- - pkg:pypi/cupy?source=hash-mapping
- size: 40844715
- timestamp: 1729280030931
-- conda: https://prefix.dev/conda-forge/win-64/cupy-core-13.3.0-py310h441eff7_2.conda
- sha256: 26065fb5dce29c4d430278022525abbae705254800adfcac4ec0de21f813a14f
- md5: a218cde313af1846053c79d53b7fa0e3
- depends:
- - fastrlock >=0.8.2,<0.9.0a0
- - numpy >=1.22,<3.0.0a0
- - python >=3.10,<3.11.0a0
- - python_abi 3.10.* *_cp310
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- constrains:
- - cutensor >=2.0.2.5,<3.0a0
- - scipy ~=1.7
- __cuda >=12.0
- - optuna ~=3.0
- - libcublas >=12,<13.0a0
- - libcurand >=10,<11.0a0
- - cupy >=13.3.0,<13.4.0a0
- - libcusolver >=11,<12.0a0
- - cuda-nvrtc >=12,<13.0a0
- - cuda-version >=12.0,<13
- - libcufft >=11,<12.0a0
- libcusparse >=12,<13.0a0
+ - cupy >=13.4.1,<13.5.0a0
license: MIT
- license_family: MIT
- purls:
- - pkg:pypi/cupy?source=hash-mapping
- size: 38806181
- timestamp: 1729280848364
-- conda: https://prefix.dev/conda-forge/linux-64/cytoolz-1.0.1-py310ha75aee5_0.conda
- sha256: b427689dfc24a6a297363122ce10d502ea00ddb3c43af6cff175ff563cc94eea
- md5: d0be1adaa04a03aed745f3d02afb59ce
- depends:
- - __glibc >=2.17,<3.0.a0
- - libgcc >=13
- - python >=3.10,<3.11.0a0
- - python_abi 3.10.* *_cp310
- - toolz >=0.10.0
- license: BSD-3-Clause
- license_family: BSD
- purls:
- - pkg:pypi/cytoolz?source=hash-mapping
- size: 367939
- timestamp: 1734107352663
-- conda: https://prefix.dev/conda-forge/osx-arm64/cytoolz-1.0.1-py310h078409c_0.conda
- sha256: 2e9fa448ccdff423659f94dfc3feb1ff5a5dad4411f77bd3bcfe834c0f90538a
- md5: cc727be997fbe103b6e750b53bd78edd
- depends:
- - __osx >=11.0
- - python >=3.10,<3.11.0a0
- - python >=3.10,<3.11.0a0 *_cpython
- - python_abi 3.10.* *_cp310
- - toolz >=0.10.0
- license: BSD-3-Clause
- license_family: BSD
+ license_family: MIT
purls:
- - pkg:pypi/cytoolz?source=hash-mapping
- size: 313656
- timestamp: 1734107486887
-- conda: https://prefix.dev/conda-forge/win-64/cytoolz-1.0.1-py310ha8f682b_0.conda
- sha256: 670800d13b6cd64b8f53756b28254b47cfc177606dcd42094696582335ed0f02
- md5: ed2af2a0262d44f753738588640b8534
+ - pkg:pypi/cupy?source=hash-mapping
+ size: 49005347
+ timestamp: 1742852826187
+- conda: https://prefix.dev/conda-forge/win-64/cupy-core-13.4.1-py310h9d4bcf3_0.conda
+ sha256: d43d870ec3d1986c3c1df4baf9594c75ce839a4735537d08ed3c998a9998b126
+ md5: 8c7ce1cbc691230fea46990cdbc00f24
depends:
+ - fastrlock >=0.8.3,<0.9.0a0
+ - numpy >=1.22,<3.0.0a0
- python >=3.10,<3.11.0a0
- python_abi 3.10.* *_cp310
- - toolz >=0.10.0
- ucrt >=10.0.20348.0
- vc >=14.2,<15
- vc14_runtime >=14.29.30139
- license: BSD-3-Clause
- license_family: BSD
- purls:
- - pkg:pypi/cytoolz?source=hash-mapping
- size: 295487
- timestamp: 1734107690341
-- conda: https://prefix.dev/conda-forge/noarch/dask-2024.12.1-pyhd8ed1ab_0.conda
- sha256: 4caae23bb33892998bee07024ddf1eec346400556c7bb7d45d1cee148af060d1
- md5: f3134df9565c4d4415ff0e61f3aa28d0
- depends:
- - bokeh >=3.1.0
- - cytoolz >=0.11.0
- - dask-core >=2024.12.1,<2024.12.2.0a0
- - dask-expr >=1.1,<1.2
- - distributed >=2024.12.1,<2024.12.2.0a0
- - jinja2 >=2.10.3
- - lz4 >=4.3.2
- - numpy >=1.24
- - pandas >=2.0
- - pyarrow >=14.0.1
- - python >=3.10
constrains:
- - openssl !=1.1.1e
- license: BSD-3-Clause
- license_family: BSD
- purls: []
- size: 7590
- timestamp: 1734476244327
-- conda: https://prefix.dev/conda-forge/noarch/dask-core-2024.12.1-pyhd8ed1ab_0.conda
- sha256: a2dfdb73143ddc75ee7ca25b0a8c714ecaedafb45c6a4684883b7648924e2ea3
- md5: 48060c395f1e87a80330c0adaad332f7
+ - libcurand >=10,<11.0a0
+ - cupy >=13.4.1,<13.5.0a0
+ - cuda-version >=12,<13.0a0
+ - scipy ~=1.7
+ - optuna ~=3.0
+ - cutensor >=2.2.0.0,<3.0a0
+ - libcusparse >=12,<13.0a0
+ - libcublas >=12,<13.0a0
+ - libcufft >=11,<12.0a0
+ - __cuda >=12.0
+ - libcusolver >=11,<12.0a0
+ - cuda-nvrtc >=12,<13.0a0
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/cupy?source=hash-mapping
+ size: 47176970
+ timestamp: 1742855784158
+- conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda
+ sha256: 993fe9ff727441c57fab9969c61eb04eeca2ca82cce432804798f258177ab419
+ md5: 8f0ef561cd615a17df3256742a3457c4
depends:
- click >=8.1
- cloudpickle >=3.0.0
@@ -4145,44 +5381,30 @@ packages:
license_family: BSD
purls:
- pkg:pypi/dask?source=hash-mapping
- size: 906359
- timestamp: 1734468020040
-- conda: https://prefix.dev/conda-forge/noarch/dask-expr-1.1.21-pyhd8ed1ab_0.conda
- sha256: 5aceb0fb2ba39a3fa30f5b8fe7b0d9d832aacdc76dd2b01bd88d92893eabc50f
- md5: e72a014dbbd35545dcfba4de9c92fb1d
- depends:
- - dask-core 2024.12.1
- - pandas >=2
- - pyarrow >=14.0.1
- - python >=3.10
- license: BSD-3-Clause
- license_family: BSD
- purls:
- - pkg:pypi/dask-expr?source=hash-mapping
- size: 185833
- timestamp: 1734473200411
-- conda: https://prefix.dev/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda
- sha256: 84e5120c97502a3785e8c3241c3bf51f64b4d445f13b4d2445db00d9816fe479
- md5: d622d8d7ee8868870f9cbe259f381181
+ size: 993940
+ timestamp: 1747771723761
+- conda: https://prefix.dev/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda
+ sha256: c17c6b9937c08ad63cb20a26f403a3234088e57d4455600974a0ce865cb14017
+ md5: 9ce473d1d1be1cc3810856a48b3fab32
depends:
- python >=3.9
license: BSD-2-Clause
license_family: BSD
purls:
- - pkg:pypi/decorator?source=hash-mapping
- size: 14068
- timestamp: 1733236549190
-- conda: https://prefix.dev/conda-forge/noarch/dill-0.3.9-pyhd8ed1ab_1.conda
- sha256: 499be2f8e4397a46249e8e500535795704af27e56360ae0c964904140b41454a
- md5: 5e11310fca410e9f31381157079dee55
+ - pkg:pypi/decorator?source=compressed-mapping
+ size: 14129
+ timestamp: 1740385067843
+- conda: https://prefix.dev/conda-forge/noarch/dill-0.4.0-pyhd8ed1ab_0.conda
+ sha256: 43dca52c96fde0c4845aaff02bcc92f25e1c2e5266ddefc2eac1a3de0960a3b1
+ md5: 885745570573eb6a08e021841928297a
depends:
- python >=3.9
license: BSD-3-Clause
license_family: BSD
purls:
- pkg:pypi/dill?source=hash-mapping
- size: 89973
- timestamp: 1733249646688
+ size: 90864
+ timestamp: 1744798629464
- conda: https://prefix.dev/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda
sha256: 0e160c21776bd881b79ce70053e59736f51036784fa43a50da10a04f0c1b9c45
md5: 8d88f4a2242e6b96f9ecff9a6a05b2f1
@@ -4194,35 +5416,6 @@ packages:
- pkg:pypi/distlib?source=hash-mapping
size: 274151
timestamp: 1733238487461
-- conda: https://prefix.dev/conda-forge/noarch/distributed-2024.12.1-pyhd8ed1ab_0.conda
- sha256: 0cdd52fd0654428eb5bc6f460747ac484d07cca8434e361078f20e2c3258bb1e
- md5: 58df114d7649ddb3f68c9b9adc6fbabe
- depends:
- - click >=8.0
- - cloudpickle >=3.0.0
- - cytoolz >=0.11.2
- - dask-core >=2024.12.1,<2024.12.2.0a0
- - jinja2 >=2.10.3
- - locket >=1.0.0
- - msgpack-python >=1.0.2
- - packaging >=20.0
- - psutil >=5.8.0
- - python >=3.10
- - pyyaml >=5.4.1
- - sortedcontainers >=2.0.5
- - tblib >=1.6.0
- - toolz >=0.11.2
- - tornado >=6.2.0
- - urllib3 >=1.26.5
- - zict >=3.0.0
- constrains:
- - openssl !=1.1.1e
- license: BSD-3-Clause
- license_family: BSD
- purls:
- - pkg:pypi/distributed?source=hash-mapping
- size: 803908
- timestamp: 1734473202885
- conda: https://prefix.dev/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda
sha256: fa5966bb1718bbf6967a85075e30e4547901410cc7cb7b16daf68942e9a94823
md5: 24c1ca34138ee57de72a943237cde4cc
@@ -4233,27 +5426,28 @@ packages:
- pkg:pypi/docutils?source=hash-mapping
size: 402700
timestamp: 1733217860944
-- conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda
- sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701
- md5: a16662747cdeb9abbac74d0057cc976e
+- conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda
+ sha256: ce61f4f99401a4bd455b89909153b40b9c823276aefcbb06f2044618696009ca
+ md5: 72e42d28960d875c7654614f8b50939a
depends:
- python >=3.9
+ - typing_extensions >=4.6.0
license: MIT and PSF-2.0
purls:
- - pkg:pypi/exceptiongroup?source=hash-mapping
- size: 20486
- timestamp: 1733208916977
-- conda: https://prefix.dev/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda
- sha256: 28d25ea375ebab4bf7479228f8430db20986187b04999136ff5c722ebd32eb60
- md5: ef8b5fca76806159fc25b4f48d8737eb
+ - pkg:pypi/exceptiongroup?source=compressed-mapping
+ size: 21284
+ timestamp: 1746947398083
+- conda: https://prefix.dev/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda
+ sha256: 7510dd93b9848c6257c43fdf9ad22adf62e7aa6da5f12a6a757aed83bcfedf05
+ md5: 81d30c08f9a3e556e8ca9e124b044d14
depends:
- python >=3.9
license: MIT
license_family: MIT
purls:
- pkg:pypi/executing?source=hash-mapping
- size: 28348
- timestamp: 1733569440265
+ size: 29652
+ timestamp: 1745502200340
- conda: https://prefix.dev/conda-forge/linux-64/fastrlock-0.8.3-py310h8c668a6_1.conda
sha256: 25c6927ff29307a937ab3d549665adfd69070c4eccc850b6dc7fb401fd4f118c
md5: 4c9c2d9a2754460d342a84703b64c96b
@@ -4266,7 +5460,8 @@ packages:
- python_abi 3.10.* *_cp310
license: MIT
license_family: MIT
- purls: []
+ purls:
+ - pkg:pypi/fastrlock?source=hash-mapping
size: 40945
timestamp: 1734873426861
- conda: https://prefix.dev/conda-forge/win-64/fastrlock-0.8.3-py310h9a06e79_1.conda
@@ -4283,64 +5478,31 @@ packages:
- python_abi 3.10.* *_cp310
license: MIT
license_family: MIT
- purls: []
+ purls:
+ - pkg:pypi/fastrlock?source=hash-mapping
size: 36203
timestamp: 1734873436406
-- conda: https://prefix.dev/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda
- sha256: 18dca6e2194732df7ebf824abaefe999e4765ebe8e8a061269406ab88fc418b9
- md5: d692e9ba6f92dc51484bf3477e36ce7c
+- conda: https://prefix.dev/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda
+ sha256: de7b6d4c4f865609ae88db6fa03c8b7544c2452a1aa5451eb7700aad16824570
+ md5: 4547b39256e296bb758166893e909a7c
depends:
- python >=3.9
license: Unlicense
purls:
- pkg:pypi/filelock?source=hash-mapping
- size: 17441
- timestamp: 1733240909987
-- conda: https://prefix.dev/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda
- sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6
- md5: 9ae35c3d96db2c94ce0cef86efdfa2cb
- depends:
- - libgcc-ng >=12
- - libpng >=1.6.39,<1.7.0a0
- - libzlib >=1.2.13,<2.0.0a0
- license: GPL-2.0-only OR FTL
- purls: []
- size: 634972
- timestamp: 1694615932610
-- conda: https://prefix.dev/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda
- sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9
- md5: e6085e516a3e304ce41a8ee08b9b89ad
- depends:
- - libpng >=1.6.39,<1.7.0a0
- - libzlib >=1.2.13,<2.0.0a0
- license: GPL-2.0-only OR FTL
- purls: []
- size: 596430
- timestamp: 1694616332835
-- conda: https://prefix.dev/conda-forge/win-64/freetype-2.12.1-hdaf720e_2.conda
- sha256: 2c53ee8879e05e149a9e525481d36adfd660a6abda26fd731376fa64ff03e728
- md5: 3761b23693f768dc75a8fd0a73ca053f
- depends:
- - libpng >=1.6.39,<1.7.0a0
- - libzlib >=1.2.13,<2.0.0a0
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- license: GPL-2.0-only OR FTL
- purls: []
- size: 510306
- timestamp: 1694616398888
-- conda: https://prefix.dev/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda
- sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817
- md5: e041ad4c43ab5e10c74587f95378ebc7
+ size: 17887
+ timestamp: 1741969612334
+- conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.5.1-pyhd8ed1ab_0.conda
+ sha256: cd6ae92ae5aa91a7e58cf39f1442d4821279f43f1c9499d15f45558d4793d1e0
+ md5: 2d2c9ef879a7e64e2dc657b09272c2b6
depends:
- python >=3.9
license: BSD-3-Clause
license_family: BSD
purls:
- pkg:pypi/fsspec?source=hash-mapping
- size: 137756
- timestamp: 1734650349242
+ size: 145521
+ timestamp: 1748101667956
- conda: https://prefix.dev/conda-forge/noarch/furo-2024.8.6-pyhd8ed1ab_2.conda
sha256: 3d6e42c5c22ea3c3b8d35b6582f544bc5fc08df37c394f5a30d6644b626a7be6
md5: a4ffdb4a5370e427f0ad980df69bbdbc
@@ -4356,53 +5518,6 @@ packages:
- pkg:pypi/furo?source=hash-mapping
size: 82395
timestamp: 1735043817924
-- conda: https://prefix.dev/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda
- sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a
- md5: d411fc29e338efb48c5fd4576d71d881
- depends:
- - __glibc >=2.17,<3.0.a0
- - libgcc >=13
- - libstdcxx >=13
- license: BSD-3-Clause
- license_family: BSD
- purls: []
- size: 119654
- timestamp: 1726600001928
-- conda: https://prefix.dev/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda
- sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20
- md5: 57a511a5905caa37540eb914dfcbf1fb
- depends:
- - __osx >=11.0
- - libcxx >=17
- license: BSD-3-Clause
- license_family: BSD
- purls: []
- size: 82090
- timestamp: 1726600145480
-- conda: https://prefix.dev/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda
- sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2
- md5: ff862eebdfeb2fd048ae9dc92510baca
- depends:
- - gflags >=2.2.2,<2.3.0a0
- - libgcc-ng >=12
- - libstdcxx-ng >=12
- license: BSD-3-Clause
- license_family: BSD
- purls: []
- size: 143452
- timestamp: 1718284177264
-- conda: https://prefix.dev/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda
- sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602
- md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1
- depends:
- - __osx >=11.0
- - gflags >=2.2.2,<2.3.0a0
- - libcxx >=16
- license: BSD-3-Clause
- license_family: BSD
- purls: []
- size: 112215
- timestamp: 1718284365403
- conda: https://prefix.dev/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda
sha256: 309cf4f04fec0c31b6771a5809a1909b4b3154a2208f52351e1ada006f4c750c
md5: c94a5994ef49749880a8139cf9afcbe1
@@ -4413,6 +5528,16 @@ packages:
purls: []
size: 460055
timestamp: 1718980856608
+- conda: https://prefix.dev/conda-forge/osx-64/gmp-6.3.0-hf036a51_2.conda
+ sha256: 75aa5e7a875afdcf4903b7dc98577672a3dc17b528ac217b915f9528f93c85fc
+ md5: 427101d13f19c4974552a4e5b072eef1
+ depends:
+ - __osx >=10.13
+ - libcxx >=16
+ license: GPL-2.0-or-later OR LGPL-3.0-or-later
+ purls: []
+ size: 428919
+ timestamp: 1718981041839
- conda: https://prefix.dev/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda
sha256: 76e222e072d61c840f64a44e0580c2503562b009090f55aa45053bf1ccb385dd
md5: eed7278dfbab727b56f2c0b64330814b
@@ -4423,9 +5548,9 @@ packages:
purls: []
size: 365188
timestamp: 1718981343258
-- conda: https://prefix.dev/conda-forge/linux-64/gmpy2-2.1.5-py310he8512ff_3.conda
- sha256: 18866d66175a957fd5a61125bb618b160c77c8d08d0d9d5be991e9f77c19b288
- md5: 832c93fd1bee415d2833b023f5ebb2dc
+- conda: https://prefix.dev/conda-forge/linux-64/gmpy2-2.2.1-py310he8512ff_0.conda
+ sha256: ea27ef97976eb0d709e4ef296f8ce83d7775ea56833cdbef107b42ef39867276
+ md5: 2086c92c9e98a12acfc287412c18f2e8
depends:
- __glibc >=2.17,<3.0.a0
- gmp >=6.3.0,<7.0a0
@@ -4438,11 +5563,27 @@ packages:
license_family: LGPL
purls:
- pkg:pypi/gmpy2?source=hash-mapping
- size: 202700
- timestamp: 1733462653858
-- conda: https://prefix.dev/conda-forge/osx-arm64/gmpy2-2.1.5-py310h805dbd7_3.conda
- sha256: e287abe2518728097e1278e550d7a7c0e8033f0eab1ac408b73449b263ebd82d
- md5: 2bf8b309e18059ee570ff14976f855c1
+ size: 203183
+ timestamp: 1745509500381
+- conda: https://prefix.dev/conda-forge/osx-64/gmpy2-2.2.1-py310he278d95_0.conda
+ sha256: 60354b6307ea3b13aedf3c85f7f584ed4c5451321f025bf49a87ff68cc9a81fc
+ md5: b1bd6eefdfda6a1e5ddf1602b9aa4268
+ depends:
+ - __osx >=10.13
+ - gmp >=6.3.0,<7.0a0
+ - mpc >=1.3.1,<2.0a0
+ - mpfr >=4.2.1,<5.0a0
+ - python >=3.10,<3.11.0a0
+ - python_abi 3.10.* *_cp310
+ license: LGPL-3.0-or-later
+ license_family: LGPL
+ purls:
+ - pkg:pypi/gmpy2?source=hash-mapping
+ size: 163934
+ timestamp: 1745509581773
+- conda: https://prefix.dev/conda-forge/osx-arm64/gmpy2-2.2.1-py310h805dbd7_0.conda
+ sha256: d7431b9f4b9908e3b041e8636a958fb3d705a7fb89c3a760c76518bab8b74293
+ md5: 79fdfce72a057c4d47dbe77eefeb86cc
depends:
- __osx >=11.0
- gmp >=6.3.0,<7.0a0
@@ -4455,43 +5596,75 @@ packages:
license_family: LGPL
purls:
- pkg:pypi/gmpy2?source=hash-mapping
- size: 146398
- timestamp: 1733462796032
-- conda: https://prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda
- sha256: 843ddad410c370672a8250470697027618f104153612439076d4d7b91eeb7b5c
- md5: 825927dc7b0f287ef8d4d0011bb113b1
- depends:
- - hpack >=4.0,<5
- - hyperframe >=6.0,<7
+ size: 157240
+ timestamp: 1745509674112
+- conda: https://prefix.dev/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda
+ sha256: 0aa1cdc67a9fe75ea95b5644b734a756200d6ec9d0dff66530aec3d1c1e9df75
+ md5: b4754fb1bdcb70c8fd54f918301582c6
+ depends:
+ - hpack >=4.1,<5
+ - hyperframe >=6.1,<7
- python >=3.9
license: MIT
license_family: MIT
purls:
- pkg:pypi/h2?source=hash-mapping
- size: 52000
- timestamp: 1733298867359
-- conda: https://prefix.dev/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda
- sha256: ec89b7e5b8aa2f0219f666084446e1fb7b54545861e9caa892acb24d125761b5
- md5: 2aa5ff7fa34a81b9196532c84c10d865
+ size: 53888
+ timestamp: 1738578623567
+- conda: https://prefix.dev/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda
+ sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba
+ md5: 0a802cb9888dd14eeefc611f05c40b6e
depends:
- python >=3.9
license: MIT
license_family: MIT
purls:
- pkg:pypi/hpack?source=hash-mapping
- size: 29412
- timestamp: 1733299296857
-- conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda
- sha256: e91c6ef09d076e1d9a02819cd00fa7ee18ecf30cdd667605c853980216584d1b
- md5: 566e75c90c1d0c8c459eb0ad9833dc7a
+ size: 30731
+ timestamp: 1737618390337
+- conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda
+ sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8
+ md5: 8e6923fc12f1fe8f8c4e5c9f343256ac
depends:
- python >=3.9
license: MIT
license_family: MIT
purls:
- pkg:pypi/hyperframe?source=hash-mapping
- size: 17239
- timestamp: 1733298862681
+ size: 17397
+ timestamp: 1737618427549
+- conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.133.2-pyha770c72_0.conda
+ sha256: afa727980a25c431f8a2dffe775f675e5872df67f198125da64c39c8139a3431
+ md5: 7555726ed5f19364dea0e9f6219bc0e5
+ depends:
+ - attrs >=22.2.0
+ - click >=7.0
+ - exceptiongroup >=1.0.0
+ - python >=3.9
+ - setuptools
+ - sortedcontainers >=2.1.0,<3.0.0
+ license: MPL-2.0
+ license_family: MOZILLA
+ purls:
+ - pkg:pypi/hypothesis?source=hash-mapping
+ size: 363329
+ timestamp: 1748926459156
+- conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.135.4-pyha770c72_0.conda
+ sha256: d53f9f6722817f8c60d6043e06c219acb9785830b39e6d4a6b60ac830572296b
+ md5: dde3b6dbdf86b3351f8c1db027dafad6
+ depends:
+ - attrs >=22.2.0
+ - click >=7.0
+ - exceptiongroup >=1.0.0
+ - python >=3.9
+ - setuptools
+ - sortedcontainers >=2.1.0,<3.0.0
+ license: MPL-2.0
+ license_family: MOZILLA
+ purls:
+ - pkg:pypi/hypothesis?source=hash-mapping
+ size: 367768
+ timestamp: 1749461444685
- conda: https://prefix.dev/conda-forge/linux-64/icu-75.1-he02047a_0.conda
sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e
md5: 8b189310083baabfb622af68fd9d3ae3
@@ -4504,6 +5677,16 @@ packages:
purls: []
size: 12129203
timestamp: 1720853576813
+- conda: https://prefix.dev/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda
+ sha256: 2e64307532f482a0929412976c8450c719d558ba20c0962832132fd0d07ba7a7
+ md5: d68d48a3060eb5abdc1cdc8e2a3a5966
+ depends:
+ - __osx >=10.13
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 11761697
+ timestamp: 1720853679409
- conda: https://prefix.dev/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda
sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620
md5: 5eb22c1d7b3fc4abb50d92d621583137
@@ -4514,18 +5697,18 @@ packages:
purls: []
size: 11857802
timestamp: 1720853997952
-- conda: https://prefix.dev/conda-forge/noarch/identify-2.6.5-pyhd8ed1ab_0.conda
- sha256: e8ea11b8e39a98a9c34efb5c21c3fca718e31e1f41fd9ae5f6918b8eb402da59
- md5: c1b0f663ff141265d1be1242259063f0
+- conda: https://prefix.dev/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda
+ sha256: 4debbae49a183d61f0747a5f594fca2bf5121e8508a52116f50ccd0eb2f7bb55
+ md5: 84463b10c1eb198541cd54125c7efe90
depends:
- python >=3.9
- ukkonen
license: MIT
license_family: MIT
purls:
- - pkg:pypi/identify?source=hash-mapping
- size: 78415
- timestamp: 1736026672643
+ - pkg:pypi/identify?source=compressed-mapping
+ size: 78926
+ timestamp: 1748049754416
- conda: https://prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda
sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87
md5: 39a4f67be3286c86d696df570b1201b7
@@ -4548,18 +5731,19 @@ packages:
- pkg:pypi/imagesize?source=hash-mapping
size: 10164
timestamp: 1656939625410
-- conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda
- sha256: 13766b88fc5b23581530d3a0287c0c58ad82f60401afefab283bf158d2be55a9
- md5: 315607a3030ad5d5227e76e0733798ff
+- conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda
+ sha256: c18ab120a0613ada4391b15981d86ff777b5690ca461ea7e9e49531e8f374745
+ md5: 63ccfdc3a3ce25b027b8767eb722fca8
depends:
- python >=3.9
- - zipp >=0.5
+ - zipp >=3.20
+ - python
license: Apache-2.0
license_family: APACHE
purls:
- - pkg:pypi/importlib-metadata?source=hash-mapping
- size: 28623
- timestamp: 1733223207185
+ - pkg:pypi/importlib-metadata?source=compressed-mapping
+ size: 34641
+ timestamp: 1747934053147
- conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda
sha256: 0ec8f4d02053cd03b0f3e63168316530949484f80e16f5e2fb199a1d117a89ca
md5: 6837f3eff7dcea42ecd714ce1ac2b108
@@ -4579,16 +5763,16 @@ packages:
purls: []
size: 1852356
timestamp: 1723739573141
-- conda: https://prefix.dev/conda-forge/noarch/ipython-8.31.0-pyh707e725_0.conda
- sha256: e10d1172ebf950f8f087f0d9310d215f5ddb8f3ad247bfa58ab5a909b3cabbdc
- md5: 1d7fcd803dfa936a6c3bd051b293241c
+- conda: https://prefix.dev/conda-forge/noarch/ipython-8.37.0-pyh8f84b5b_0.conda
+ sha256: e43fa762183b49c3c3b811d41259e94bb14b7bff4a239b747ef4e1c6bbe2702d
+ md5: 177cfa19fe3d74c87a8889286dc64090
depends:
- __unix
+ - pexpect >4.3
- decorator
- exceptiongroup
- jedi >=0.16
- matplotlib-inline
- - pexpect >4.3
- pickleshare
- prompt-toolkit >=3.0.41,<3.1.0
- pygments >=2.4.0
@@ -4596,15 +5780,16 @@ packages:
- stack_data
- traitlets >=5.13.0
- typing_extensions >=4.6
+ - python
license: BSD-3-Clause
license_family: BSD
purls:
- pkg:pypi/ipython?source=hash-mapping
- size: 600761
- timestamp: 1734788248334
-- conda: https://prefix.dev/conda-forge/noarch/ipython-8.31.0-pyh7428d3b_0.conda
- sha256: bce70d36099dbb2c0a4b9cb7c3f2a8742db94a63aea329a75688d6b93ae07ebb
- md5: 749ce640fcb691daa2579344cca50f6e
+ size: 639160
+ timestamp: 1748711175284
+- conda: https://prefix.dev/conda-forge/noarch/ipython-8.37.0-pyha7b4d00_0.conda
+ sha256: 4812e69a1c9d6d43746fa7e8efaf9127d257508249e7192e68cd163511a751ee
+ md5: 2ffea44095ca39b38b67599e8091bca3
depends:
- __win
- colorama
@@ -4619,1281 +5804,1017 @@ packages:
- stack_data
- traitlets >=5.13.0
- typing_extensions >=4.6
+ - python
license: BSD-3-Clause
license_family: BSD
purls:
- pkg:pypi/ipython?source=hash-mapping
- size: 601358
- timestamp: 1734788456856
-- conda: https://prefix.dev/conda-forge/noarch/isort-5.13.2-pyhd8ed1ab_1.conda
- sha256: 6ebf6e83c2d449760ad5c5cc344711d6404f9e3cf6952811b8678aca5a4ab01f
- md5: ef7dc847f19fe4859d5aaa33385bf509
+ size: 638940
+ timestamp: 1748711254071
+- conda: https://prefix.dev/conda-forge/noarch/isort-6.0.1-pyhd8ed1ab_1.conda
+ sha256: e1d0e81e3c3da5d7854f9f57ffb89d8f4505bb64a2f05bb01d78eff24344a105
+ md5: c25d1a27b791dab1797832aafd6a3e9a
depends:
- python >=3.9,<4.0
- - setuptools
license: MIT
license_family: MIT
purls:
- pkg:pypi/isort?source=hash-mapping
- size: 73545
- timestamp: 1733236278052
-- conda: https://prefix.dev/conda-forge/noarch/jax-0.4.35-pyhd8ed1ab_1.conda
- sha256: 665e96d8a8144f33ea9733746ee3a9c913dd5fa460fb2095592f935cab0753a8
- md5: 8fe7d2b5328189557c539e8a82af00e9
+ size: 75118
+ timestamp: 1746190379093
+- conda: https://prefix.dev/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda
+ sha256: 573a5582dfba84a8f67c351b6218cb9579cb8d0f6d4b4186a806852111d4a6f1
+ md5: bd364feb12c744cf5c60e1e5b586171b
depends:
- importlib-metadata >=4.6
- - jaxlib >=0.4.34,<=0.4.35
- - ml_dtypes >=0.4.0
- - numpy >=1.24
- - opt-einsum
+ - jaxlib >=0.6.0,<=0.6.0
+ - ml_dtypes >=0.5.0
+ - numpy >=1.25
+ - opt_einsum
- python >=3.10
- - scipy >=1.10
+ - scipy >=1.11.1
constrains:
- - cudnn >=9.2.1.18
+ - cudnn >=9.8,<10.0
license: Apache-2.0
license_family: APACHE
purls:
- pkg:pypi/jax?source=hash-mapping
- size: 1430482
- timestamp: 1733731330348
-- conda: https://prefix.dev/conda-forge/linux-64/jaxlib-0.4.35-cpu_py310h430587c_0.conda
- sha256: 5b62a246c89cd7f945aee8e3e9a30c7da33cebace23567b8ba25316ff65925b8
- md5: ab1fcddcb6dd3a5d38379c2478486153
+ size: 1538293
+ timestamp: 1748688029463
+- conda: https://prefix.dev/conda-forge/linux-64/jaxlib-0.6.0-cpu_py310hc96afab_0.conda
+ sha256: c54f8e339df547924c468e7632981f553cd764f75002e171900d9df187898e4b
+ md5: e4e56540b3315f1ac79440a1465f5182
depends:
- __glibc >=2.17,<3.0.a0
- libabseil * cxx17*
- - libabseil >=20240722.0,<20240723.0a0
+ - libabseil >=20250127.1,<20250128.0a0
- libgcc >=13
- - libgrpc >=1.67.1,<1.68.0a0
+ - libgrpc >=1.71.0,<1.72.0a0
- libstdcxx >=13
- libzlib >=1.3.1,<2.0a0
- ml_dtypes >=0.2.0
- numpy >=1.19,<3
- - openssl >=3.4.0,<4.0a0
+ - openssl >=3.5.0,<4.0a0
- python >=3.10,<3.11.0a0
- python_abi 3.10.* *_cp310
- scipy >=1.9
constrains:
- - jax >=0.4.35
+ - jax >=0.6.0
license: Apache-2.0
license_family: APACHE
purls:
- pkg:pypi/jaxlib?source=hash-mapping
- size: 58074734
- timestamp: 1733953456717
-- conda: https://prefix.dev/conda-forge/osx-arm64/jaxlib-0.4.35-cpu_py310h604521f_0.conda
- sha256: 2ce46bea8bb00296197ab797e40ecdcbc5c644ad8f9b4138105a7545f49bda11
- md5: e4262fb94e8b250726bd302056a88cbc
+ size: 60603285
+ timestamp: 1748663385056
+- conda: https://prefix.dev/conda-forge/linux-64/jaxlib-0.6.0-cuda126py310hec873cc_200.conda
+ sha256: 5a52619f5e6d40d5c8e8223a5ec113d5bb097456656bc5668ab24df6b75f69ae
+ md5: 1b39986ae9b1bcfddc720ef10bb67420
depends:
- - __osx >=11.0
+ - __cuda
+ - __glibc >=2.17,<3.0.a0
+ - cuda-cudart >=12.6.77,<13.0a0
+ - cuda-cupti >=12.6.80,<13.0a0
+ - cuda-cupti-dev
+ - cuda-nvcc-tools
+ - cuda-nvtx >=12.6.77,<13.0a0
+ - cuda-version >=12.6,<13
+ - cudnn >=9.10.1.4,<10.0a0
- libabseil * cxx17*
- - libabseil >=20240722.0,<20240723.0a0
- - libcxx >=17
- - libgrpc >=1.67.1,<1.68.0a0
+ - libabseil >=20250127.1,<20250128.0a0
+ - libcublas >=12.6.4.1,<13.0a0
+ - libcublas-dev
+ - libcufft >=11.3.0.4,<12.0a0
+ - libcufft-dev
+ - libcurand >=10.3.7.77,<11.0a0
+ - libcurand-dev
+ - libcusolver >=11.7.1.2,<12.0a0
+ - libcusolver-dev
+ - libcusparse >=12.5.4.2,<13.0a0
+ - libcusparse-dev
+ - libgcc >=13
+ - libgrpc >=1.71.0,<1.72.0a0
+ - libstdcxx >=13
- libzlib >=1.3.1,<2.0a0
- ml_dtypes >=0.2.0
+ - nccl >=2.26.6.1,<3.0a0
- numpy >=1.19,<3
- - openssl >=3.4.0,<4.0a0
+ - openssl >=3.5.0,<4.0a0
- python >=3.10,<3.11.0a0
- - python >=3.10,<3.11.0a0 *_cpython
- python_abi 3.10.* *_cp310
- scipy >=1.9
constrains:
- - jax >=0.4.35
+ - jax >=0.6.0
license: Apache-2.0
license_family: APACHE
purls:
+ - pkg:pypi/jax-cuda12-pjrt?source=hash-mapping
+ - pkg:pypi/jax-cuda12-plugin?source=hash-mapping
- pkg:pypi/jaxlib?source=hash-mapping
- size: 45461434
- timestamp: 1733950221343
-- conda: https://prefix.dev/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda
- sha256: 92c4d217e2dc68983f724aa983cca5464dcb929c566627b26a2511159667dba8
- md5: a4f4c5dc9b80bc50e0d3dc4e6e8f1bd9
- depends:
- - parso >=0.8.3,<0.9.0
- - python >=3.9
- license: Apache-2.0 AND MIT
- purls:
- - pkg:pypi/jedi?source=hash-mapping
- size: 843646
- timestamp: 1733300981994
-- conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda
- sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3
- md5: 2752a6ed44105bfb18c9bef1177d9dcd
- depends:
- - markupsafe >=2.0
- - python >=3.9
- license: BSD-3-Clause
- license_family: BSD
- purls:
- - pkg:pypi/jinja2?source=hash-mapping
- size: 112561
- timestamp: 1734824044952
-- conda: https://prefix.dev/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2
- sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb
- md5: 30186d27e2c9fa62b45fb1476b7200e3
- depends:
- - libgcc-ng >=10.3.0
- license: LGPL-2.1-or-later
- purls: []
- size: 117831
- timestamp: 1646151697040
-- conda: https://prefix.dev/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda
- sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238
- md5: 3f43953b7d3fb3aaa1d0d0723d91e368
- depends:
- - keyutils >=1.6.1,<2.0a0
- - libedit >=3.1.20191231,<3.2.0a0
- - libedit >=3.1.20191231,<4.0a0
- - libgcc-ng >=12
- - libstdcxx-ng >=12
- - openssl >=3.3.1,<4.0a0
- license: MIT
- license_family: MIT
- purls: []
- size: 1370023
- timestamp: 1719463201255
-- conda: https://prefix.dev/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda
- sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b
- md5: c6dc8a0fdec13a0565936655c33069a1
- depends:
- - __osx >=11.0
- - libcxx >=16
- - libedit >=3.1.20191231,<3.2.0a0
- - libedit >=3.1.20191231,<4.0a0
- - openssl >=3.3.1,<4.0a0
- license: MIT
- license_family: MIT
- purls: []
- size: 1155530
- timestamp: 1719463474401
-- conda: https://prefix.dev/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda
- sha256: 18e8b3430d7d232dad132f574268f56b3eb1a19431d6d5de8c53c29e6c18fa81
- md5: 31aec030344e962fbd7dbbbbd68e60a9
- depends:
- - openssl >=3.3.1,<4.0a0
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- license: MIT
- license_family: MIT
- purls: []
- size: 712034
- timestamp: 1719463874284
-- conda: https://prefix.dev/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda
- sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041
- md5: 51bb7010fc86f70eee639b4bb7a894f5
- depends:
- - libgcc-ng >=12
- - libjpeg-turbo >=3.0.0,<4.0a0
- - libtiff >=4.6.0,<4.8.0a0
- license: MIT
- license_family: MIT
- purls: []
- size: 245247
- timestamp: 1701647787198
-- conda: https://prefix.dev/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda
- sha256: 151e0c84feb7e0747fabcc85006b8973b22f5abbc3af76a9add0b0ef0320ebe4
- md5: 66f6c134e76fe13cce8a9ea5814b5dd5
- depends:
- - libjpeg-turbo >=3.0.0,<4.0a0
- - libtiff >=4.6.0,<4.8.0a0
- license: MIT
- license_family: MIT
- purls: []
- size: 211959
- timestamp: 1701647962657
-- conda: https://prefix.dev/conda-forge/win-64/lcms2-2.16-h67d730c_0.conda
- sha256: f9fd9e80e46358a57d9bb97b1e37a03da4022143b019aa3c4476d8a7795de290
- md5: d3592435917b62a8becff3a60db674f6
- depends:
- - libjpeg-turbo >=3.0.0,<4.0a0
- - libtiff >=4.6.0,<4.8.0a0
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- license: MIT
- license_family: MIT
- purls: []
- size: 507632
- timestamp: 1701648249706
-- conda: https://prefix.dev/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda
- sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe
- md5: 048b02e3962f066da18efe3a21b77672
- depends:
- - __glibc >=2.17,<3.0.a0
- constrains:
- - binutils_impl_linux-64 2.43
- license: GPL-3.0-only
- license_family: GPL
- purls: []
- size: 669211
- timestamp: 1729655358674
-- conda: https://prefix.dev/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2
- sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12
- md5: 76bbff344f0134279f225174e9064c8f
- depends:
- - libgcc-ng >=12
- - libstdcxx-ng >=12
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 281798
- timestamp: 1657977462600
-- conda: https://prefix.dev/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2
- sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958
- md5: de462d5aacda3b30721b512c5da4e742
- depends:
- - libcxx >=13.0.1
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 215721
- timestamp: 1657977558796
-- conda: https://prefix.dev/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2
- sha256: f4f39d7f6a2f9b407f8fb567a6c25755270421731d70f0ff331f5de4fa367488
- md5: 1900cb3cab5055833cfddb0ba233b074
- depends:
- - vc >=14.2,<15
- - vs2015_runtime >=14.29.30037
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 194365
- timestamp: 1657977692274
-- conda: https://prefix.dev/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda
- sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4
- md5: 488f260ccda0afaf08acb286db439c2f
- depends:
- - __glibc >=2.17,<3.0.a0
- - libgcc >=13
- - libstdcxx >=13
- constrains:
- - libabseil-static =20240722.0=cxx17*
- - abseil-cpp =20240722.0
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 1311599
- timestamp: 1736008414161
-- conda: https://prefix.dev/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda
- sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770
- md5: c2d95bd7aa8d564a9bd7eca5e571a5b3
- depends:
- - __osx >=11.0
- - libcxx >=18
- constrains:
- - libabseil-static =20240722.0=cxx17*
- - abseil-cpp =20240722.0
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 1178260
- timestamp: 1736008642885
-- conda: https://prefix.dev/conda-forge/win-64/libabseil-20240722.0-cxx17_h4eb7d71_4.conda
- sha256: 846eacff96d36060fe5f7b351e4df6fafae56bf34cc6426497f12b5c13f317cf
- md5: c57ee7f404d1aa84deb3e15852bec6fa
- depends:
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- constrains:
- - abseil-cpp =20240722.0
- - libabseil-static =20240722.0=cxx17*
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 1784929
- timestamp: 1736008778245
-- conda: https://prefix.dev/conda-forge/linux-64/libarrow-18.1.0-h9d9f30d_8_cpu.conda
- build_number: 8
- sha256: f6c72ce82d145cb94a1131b68547b88056fb48158a382f9ce763286fce53ee65
- md5: 1c9caae53b14a385b59e87687adad2d6
+ size: 146820753
+ timestamp: 1748663708635
+- conda: https://prefix.dev/conda-forge/osx-64/jaxlib-0.6.0-cpu_py310h22b337c_0.conda
+ sha256: 1ea4b15f45eeecd939270d93675f7b7361c9a6cd7a830d361920855a10573b59
+ md5: 25c084b06a0c200d1cc095b59f24a757
depends:
- - __glibc >=2.17,<3.0.a0
- - aws-crt-cpp >=0.29.8,<0.29.9.0a0
- - aws-sdk-cpp >=1.11.458,<1.11.459.0a0
- - azure-core-cpp >=1.14.0,<1.14.1.0a0
- - azure-identity-cpp >=1.10.0,<1.10.1.0a0
- - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0
- - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0
- - bzip2 >=1.0.8,<2.0a0
- - gflags >=2.2.2,<2.3.0a0
- - glog >=0.7.1,<0.8.0a0
+ - __osx >=10.15
- libabseil * cxx17*
- - libabseil >=20240722.0,<20240723.0a0
- - libbrotlidec >=1.1.0,<1.2.0a0
- - libbrotlienc >=1.1.0,<1.2.0a0
- - libgcc >=13
- - libgoogle-cloud >=2.33.0,<2.34.0a0
- - libgoogle-cloud-storage >=2.33.0,<2.34.0a0
- - libre2-11 >=2024.7.2
- - libstdcxx >=13
- - libutf8proc >=2.9.0,<2.10.0a0
+ - libabseil >=20250127.1,<20250128.0a0
+ - libcxx >=18
+ - libgrpc >=1.71.0,<1.72.0a0
- libzlib >=1.3.1,<2.0a0
- - lz4-c >=1.10.0,<1.11.0a0
- - orc >=2.0.3,<2.0.4.0a0
- - re2
- - snappy >=1.2.1,<1.3.0a0
- - zstd >=1.5.6,<1.6.0a0
+ - ml_dtypes >=0.2.0
+ - numpy >=1.19,<3
+ - openssl >=3.5.0,<4.0a0
+ - python >=3.10,<3.11.0a0
+ - python_abi 3.10.* *_cp310
+ - scipy >=1.9
constrains:
- - arrow-cpp <0.0a0
- - parquet-cpp <0.0a0
- - apache-arrow-proc =*=cpu
+ - jax >=0.6.0
license: Apache-2.0
license_family: APACHE
- purls: []
- size: 8801586
- timestamp: 1736610546493
-- conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-18.1.0-hf3eb8e5_8_cpu.conda
- build_number: 8
- sha256: 766e46b45520773db93ee1a91951cc135a85544bba738e7b378d31f16097753f
- md5: fdc79871e6c243b819497337215416d9
+ purls:
+ - pkg:pypi/jaxlib?source=hash-mapping
+ size: 62834580
+ timestamp: 1748654408664
+- conda: https://prefix.dev/conda-forge/osx-arm64/jaxlib-0.6.0-cpu_py310h2c532f2_0.conda
+ sha256: a35d81d3ac366fcff2d5cba19ae5452b9aa8fd87ea4ace34a737f2fa88a85826
+ md5: 1ab7fe4ca08fb32518bdeea813ef6bef
depends:
- __osx >=11.0
- - aws-crt-cpp >=0.29.8,<0.29.9.0a0
- - aws-sdk-cpp >=1.11.458,<1.11.459.0a0
- - azure-core-cpp >=1.14.0,<1.14.1.0a0
- - azure-identity-cpp >=1.10.0,<1.10.1.0a0
- - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0
- - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0
- - bzip2 >=1.0.8,<2.0a0
- - glog >=0.7.1,<0.8.0a0
- libabseil * cxx17*
- - libabseil >=20240722.0,<20240723.0a0
- - libbrotlidec >=1.1.0,<1.2.0a0
- - libbrotlienc >=1.1.0,<1.2.0a0
+ - libabseil >=20250127.1,<20250128.0a0
- libcxx >=18
- - libgoogle-cloud >=2.33.0,<2.34.0a0
- - libgoogle-cloud-storage >=2.33.0,<2.34.0a0
- - libre2-11 >=2024.7.2
- - libutf8proc >=2.9.0,<2.10.0a0
+ - libgrpc >=1.71.0,<1.72.0a0
- libzlib >=1.3.1,<2.0a0
- - lz4-c >=1.10.0,<1.11.0a0
- - orc >=2.0.3,<2.0.4.0a0
- - re2
- - snappy >=1.2.1,<1.3.0a0
- - zstd >=1.5.6,<1.6.0a0
+ - ml_dtypes >=0.2.0
+ - numpy >=1.19,<3
+ - openssl >=3.5.0,<4.0a0
+ - python >=3.10,<3.11.0a0
+ - python >=3.10,<3.11.0a0 *_cpython
+ - python_abi 3.10.* *_cp310
+ - scipy >=1.9
constrains:
- - arrow-cpp <0.0a0
- - parquet-cpp <0.0a0
- - apache-arrow-proc =*=cpu
+ - jax >=0.6.0
license: Apache-2.0
license_family: APACHE
- purls: []
- size: 5497383
- timestamp: 1736608604724
-- conda: https://prefix.dev/conda-forge/win-64/libarrow-18.1.0-hb928929_8_cpu.conda
- build_number: 8
- sha256: 9323e933e603b15bca2231ccda45849a80e7cf415c2872c194286e84e4a09290
- md5: 8d18b506794c1e583998a6d54054145b
+ purls:
+ - pkg:pypi/jaxlib?source=hash-mapping
+ size: 51702562
+ timestamp: 1748652584379
+- conda: https://prefix.dev/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda
+ sha256: 92c4d217e2dc68983f724aa983cca5464dcb929c566627b26a2511159667dba8
+ md5: a4f4c5dc9b80bc50e0d3dc4e6e8f1bd9
+ depends:
+ - parso >=0.8.3,<0.9.0
+ - python >=3.9
+ license: Apache-2.0 AND MIT
+ purls:
+ - pkg:pypi/jedi?source=hash-mapping
+ size: 843646
+ timestamp: 1733300981994
+- conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda
+ sha256: f1ac18b11637ddadc05642e8185a851c7fab5998c6f5470d716812fae943b2af
+ md5: 446bd6c8cb26050d528881df495ce646
depends:
- - aws-crt-cpp >=0.29.8,<0.29.9.0a0
- - aws-sdk-cpp >=1.11.458,<1.11.459.0a0
- - bzip2 >=1.0.8,<2.0a0
- - libabseil * cxx17*
- - libabseil >=20240722.0,<20240723.0a0
- - libbrotlidec >=1.1.0,<1.2.0a0
- - libbrotlienc >=1.1.0,<1.2.0a0
- - libcrc32c >=1.1.2,<1.2.0a0
- - libcurl >=8.11.1,<9.0a0
- - libgoogle-cloud >=2.33.0,<2.34.0a0
- - libgoogle-cloud-storage >=2.33.0,<2.34.0a0
- - libre2-11 >=2024.7.2
- - libutf8proc >=2.9.0,<2.10.0a0
- - libzlib >=1.3.1,<2.0a0
- - lz4-c >=1.10.0,<1.11.0a0
- - orc >=2.0.3,<2.0.4.0a0
- - re2
- - snappy >=1.2.1,<1.3.0a0
- - ucrt >=10.0.20348.0
- - vc >=14.3,<15
- - vc14_runtime >=14.42.34433
- - zstd >=1.5.6,<1.6.0a0
+ - markupsafe >=2.0
+ - python >=3.9
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/jinja2?source=compressed-mapping
+ size: 112714
+ timestamp: 1741263433881
+- conda: https://prefix.dev/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda
+ sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472
+ md5: 01f8d123c96816249efd255a31ad7712
+ depends:
+ - __glibc >=2.17,<3.0.a0
constrains:
- - arrow-cpp <0.0a0
- - parquet-cpp <0.0a0
- - apache-arrow-proc =*=cpu
- license: Apache-2.0
- license_family: APACHE
+ - binutils_impl_linux-64 2.43
+ license: GPL-3.0-only
+ license_family: GPL
purls: []
- size: 5248568
- timestamp: 1736611659169
-- conda: https://prefix.dev/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_8_cpu.conda
- build_number: 8
- sha256: 126a6e78199311d99e38b9d633ce3e0290795ac68ce3ee8a9b91436c85c4095d
- md5: 544759904898499f634f8f88a9907f88
+ size: 671240
+ timestamp: 1740155456116
+- conda: https://prefix.dev/conda-forge/linux-64/libabseil-20250127.1-cxx17_hbbce691_0.conda
+ sha256: 65d5ca837c3ee67b9d769125c21dc857194d7f6181bb0e7bd98ae58597b457d0
+ md5: 00290e549c5c8a32cc271020acc9ec6b
depends:
- __glibc >=2.17,<3.0.a0
- - libarrow 18.1.0 h9d9f30d_8_cpu
- libgcc >=13
- libstdcxx >=13
+ constrains:
+ - abseil-cpp =20250127.1
+ - libabseil-static =20250127.1=cxx17*
license: Apache-2.0
- license_family: APACHE
+ license_family: Apache
purls: []
- size: 611558
- timestamp: 1736610592458
-- conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-acero-18.1.0-hf07054f_8_cpu.conda
- build_number: 8
- sha256: 29196dc6b2e4488f98bd8950de6333efe5d1a9d0cc62e186694946766185475e
- md5: 8db96829f8e427167f450c7467a1ba44
+ size: 1325007
+ timestamp: 1742369558286
+- conda: https://prefix.dev/conda-forge/osx-64/libabseil-20250127.1-cxx17_h0e468a2_0.conda
+ sha256: 8c43a7daa4df04f66d08e6a6cd2f004fc84500bf8c0c75dc9ee633b34c2a01be
+ md5: b2004ae68003d2ef310b49847b911e4b
depends:
- - __osx >=11.0
- - libarrow 18.1.0 hf3eb8e5_8_cpu
+ - __osx >=10.13
- libcxx >=18
+ constrains:
+ - libabseil-static =20250127.1=cxx17*
+ - abseil-cpp =20250127.1
license: Apache-2.0
- license_family: APACHE
- purls: []
- size: 484442
- timestamp: 1736608695654
-- conda: https://prefix.dev/conda-forge/win-64/libarrow-acero-18.1.0-h7d8d6a5_8_cpu.conda
- build_number: 8
- sha256: 43470dc8369d6ffab8699780c744ee75d04989641c0dc60afcf68db0213c4d5c
- md5: 7e11f505623fda50814299f0c066b7e9
- depends:
- - libarrow 18.1.0 hb928929_8_cpu
- - ucrt >=10.0.20348.0
- - vc >=14.3,<15
- - vc14_runtime >=14.42.34433
- license: Apache-2.0
- license_family: APACHE
- purls: []
- size: 446853
- timestamp: 1736611713691
-- conda: https://prefix.dev/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_8_cpu.conda
- build_number: 8
- sha256: fe50edf030b5ccbadec2bf8f90d4cdf32d63ec52ba26233fc2c8bfbe43df3b15
- md5: 894a5ed78728b77c997fefeee222ac4d
- depends:
- - __glibc >=2.17,<3.0.a0
- - libarrow 18.1.0 h9d9f30d_8_cpu
- - libarrow-acero 18.1.0 hcb10f89_8_cpu
- - libgcc >=13
- - libparquet 18.1.0 h081d1f1_8_cpu
- - libstdcxx >=13
- license: Apache-2.0
- license_family: APACHE
+ license_family: Apache
purls: []
- size: 588032
- timestamp: 1736610711976
-- conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-dataset-18.1.0-hf07054f_8_cpu.conda
- build_number: 8
- sha256: bff2d39e418eadab8c522a536449ac90f070dd8e83e2bd5e67a9c3eb8ecf712f
- md5: 7b3736f49b3ba299b7799aeb448cb830
+ size: 1177855
+ timestamp: 1742369859708
+- conda: https://prefix.dev/conda-forge/osx-arm64/libabseil-20250127.1-cxx17_h07bc746_0.conda
+ sha256: 9884f855bdfd5cddac209df90bdddae8b3a6d8accfd2d3f52bc9db2f9ebb69c9
+ md5: 26aabb99a8c2806d8f617fd135f2fc6f
depends:
- __osx >=11.0
- - libarrow 18.1.0 hf3eb8e5_8_cpu
- - libarrow-acero 18.1.0 hf07054f_8_cpu
- libcxx >=18
- - libparquet 18.1.0 h636d7b7_8_cpu
+ constrains:
+ - abseil-cpp =20250127.1
+ - libabseil-static =20250127.1=cxx17*
license: Apache-2.0
- license_family: APACHE
+ license_family: Apache
purls: []
- size: 491001
- timestamp: 1736609758514
-- conda: https://prefix.dev/conda-forge/win-64/libarrow-dataset-18.1.0-h7d8d6a5_8_cpu.conda
- build_number: 8
- sha256: 34cd6707c28efbf5cabef6e57e19e0aedcb670ec559e95885704872c7b42077c
- md5: b93e516a5a780f722e9ed9b3d12c9213
+ size: 1192962
+ timestamp: 1742369814061
+- conda: https://prefix.dev/conda-forge/win-64/libabseil-20250127.1-cxx17_h4eb7d71_0.conda
+ sha256: 61ece8d3768604eae2c7c869a5c032a61fbfb8eb86cc85dc39cc2de48d3827b4
+ md5: 9619870922c18fa283a3ee703a14cfcc
depends:
- - libarrow 18.1.0 hb928929_8_cpu
- - libarrow-acero 18.1.0 h7d8d6a5_8_cpu
- - libparquet 18.1.0 ha850022_8_cpu
- ucrt >=10.0.20348.0
- - vc >=14.3,<15
- - vc14_runtime >=14.42.34433
- license: Apache-2.0
- license_family: APACHE
- purls: []
- size: 434392
- timestamp: 1736611904846
-- conda: https://prefix.dev/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_8_cpu.conda
- build_number: 8
- sha256: dca372e27724904577315b8db3793e027a5c152a485e505e630a57b15634cd85
- md5: 46eaf81238da6f3ffab1f3ffdcee382e
- depends:
- - __glibc >=2.17,<3.0.a0
- - libabseil * cxx17*
- - libabseil >=20240722.0,<20240723.0a0
- - libarrow 18.1.0 h9d9f30d_8_cpu
- - libarrow-acero 18.1.0 hcb10f89_8_cpu
- - libarrow-dataset 18.1.0 hcb10f89_8_cpu
- - libgcc >=13
- - libprotobuf >=5.28.3,<5.28.4.0a0
- - libstdcxx >=13
+ - vc >=14.2,<15
+ - vc14_runtime >=14.29.30139
+ constrains:
+ - libabseil-static =20250127.1=cxx17*
+ - abseil-cpp =20250127.1
license: Apache-2.0
- license_family: APACHE
+ license_family: Apache
purls: []
- size: 521707
- timestamp: 1736610765240
-- conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4239455_8_cpu.conda
- build_number: 8
- sha256: ae52d926ebfc8edb0728824f2918a825d39bd85a4ef27fe2b73656cfecdd7c69
- md5: f67eb19d22ba355cced8c86073ad49b1
+ size: 1836732
+ timestamp: 1742370096247
+- conda: https://prefix.dev/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda
+ build_number: 31
+ sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5
+ md5: 728dbebd0f7a20337218beacffd37916
depends:
- - __osx >=11.0
- - libabseil * cxx17*
- - libabseil >=20240722.0,<20240723.0a0
- - libarrow 18.1.0 hf3eb8e5_8_cpu
- - libarrow-acero 18.1.0 hf07054f_8_cpu
- - libarrow-dataset 18.1.0 hf07054f_8_cpu
- - libcxx >=18
- - libprotobuf >=5.28.3,<5.28.4.0a0
- license: Apache-2.0
- license_family: APACHE
+ - libopenblas >=0.3.29,<0.3.30.0a0
+ - libopenblas >=0.3.29,<1.0a0
+ constrains:
+ - liblapacke =3.9.0=31*_openblas
+ - liblapack =3.9.0=31*_openblas
+ - blas =2.131=openblas
+ - mkl <2025
+ - libcblas =3.9.0=31*_openblas
+ license: BSD-3-Clause
+ license_family: BSD
purls: []
- size: 452161
- timestamp: 1736609917123
-- conda: https://prefix.dev/conda-forge/win-64/libarrow-substrait-18.1.0-h3dbecdf_8_cpu.conda
- build_number: 8
- sha256: 4ddb7ac8c2f7caf9a357696c0ab448884480d4cd7d72516dc9b63b0833c5abb2
- md5: f4b70d99b8e7e1334735a215205b686b
+ size: 16859
+ timestamp: 1740087969120
+- conda: https://prefix.dev/conda-forge/linux-64/libblas-3.9.0-31_hfdb39a5_mkl.conda
+ build_number: 31
+ sha256: 862289f2cfb84bb6001d0e3569e908b8c42d66b881bd5b03f730a3924628b978
+ md5: bdf4a57254e8248222cb631db4393ff1
depends:
- - libabseil * cxx17*
- - libabseil >=20240722.0,<20240723.0a0
- - libarrow 18.1.0 hb928929_8_cpu
- - libarrow-acero 18.1.0 h7d8d6a5_8_cpu
- - libarrow-dataset 18.1.0 h7d8d6a5_8_cpu
- - libprotobuf >=5.28.3,<5.28.4.0a0
- - ucrt >=10.0.20348.0
- - vc >=14.3,<15
- - vc14_runtime >=14.42.34433
- license: Apache-2.0
- license_family: APACHE
+ - mkl >=2024.2.2,<2025.0a0
+ constrains:
+ - liblapack =3.9.0=31*_mkl
+ - liblapacke =3.9.0=31*_mkl
+ - blas =2.131=mkl
+ - libcblas =3.9.0=31*_mkl
+ track_features:
+ - blas_mkl
+ license: BSD-3-Clause
+ license_family: BSD
purls: []
- size: 364597
- timestamp: 1736611987931
-- conda: https://prefix.dev/conda-forge/linux-64/libblas-3.9.0-26_linux64_mkl.conda
- build_number: 26
- sha256: 11cc33993e1865e6caa3e05f117effb3f7cbacc632e5adc572ffd36b4fa47241
- md5: 60463d3ec26e0860bfc7fc1547e005ef
+ size: 17259
+ timestamp: 1740087718283
+- conda: https://prefix.dev/conda-forge/osx-64/libblas-3.9.0-20_osx64_mkl.conda
+ build_number: 20
+ sha256: 808742b95f44dcc7c546e5c3bb7ed378b08aeaef3ee451d31dfe26cdf76d109f
+ md5: 160fdc97a51d66d51dc782fb67d35205
depends:
- - mkl >=2024.2.2,<2025.0a0
+ - mkl >=2023.2.0,<2024.0a0
constrains:
- - liblapack 3.9.0 26_linux64_mkl
- blas * mkl
- - libcblas 3.9.0 26_linux64_mkl
- - liblapacke 3.9.0 26_linux64_mkl
+ - libcblas 3.9.0 20_osx64_mkl
+ - liblapack 3.9.0 20_osx64_mkl
+ - liblapacke 3.9.0 20_osx64_mkl
track_features:
- blas_mkl
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 16766
- timestamp: 1734432542498
-- conda: https://prefix.dev/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda
- build_number: 26
- sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c
- md5: ac52800af2e0c0e7dac770b435ce768a
+ size: 15075
+ timestamp: 1700568635315
+- conda: https://prefix.dev/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda
+ build_number: 31
+ sha256: 2192f9cfa72a1a6127eb1c57a9662eb1b44c6506f2b7517cf021f1262d2bf56d
+ md5: a8c1c9f95d1c46d67028a6146c1ea77c
depends:
- - libopenblas >=0.3.28,<0.3.29.0a0
- - libopenblas >=0.3.28,<1.0a0
+ - libopenblas >=0.3.29,<0.3.30.0a0
+ - libopenblas >=0.3.29,<1.0a0
constrains:
- - libcblas 3.9.0 26_linux64_openblas
- - liblapack 3.9.0 26_linux64_openblas
- - liblapacke 3.9.0 26_linux64_openblas
- - blas * openblas
+ - libcblas =3.9.0=31*_openblas
+ - liblapacke =3.9.0=31*_openblas
+ - blas =2.131=openblas
+ - mkl <2025
+ - liblapack =3.9.0=31*_openblas
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 16393
- timestamp: 1734432564346
-- conda: https://prefix.dev/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda
- build_number: 26
- sha256: 597f9c3779caa979c8c6abbb3ba8c7191b84e1a910d6b0d10e5faf35284c450c
- md5: 21be102c9ae80a67ba7de23b129aa7f6
+ size: 17105
+ timestamp: 1740087945188
+- conda: https://prefix.dev/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda
+ build_number: 31
+ sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f
+ md5: 39b053da5e7035c6592102280aa7612a
depends:
- - libopenblas >=0.3.28,<0.3.29.0a0
- - libopenblas >=0.3.28,<1.0a0
+ - libopenblas >=0.3.29,<0.3.30.0a0
+ - libopenblas >=0.3.29,<1.0a0
constrains:
- - liblapack 3.9.0 26_osxarm64_openblas
- - liblapacke 3.9.0 26_osxarm64_openblas
- - libcblas 3.9.0 26_osxarm64_openblas
- - blas * openblas
+ - liblapacke =3.9.0=31*_openblas
+ - libcblas =3.9.0=31*_openblas
+ - blas =2.131=openblas
+ - mkl <2025
+ - liblapack =3.9.0=31*_openblas
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 16714
- timestamp: 1734433054681
-- conda: https://prefix.dev/conda-forge/win-64/libblas-3.9.0-26_win64_mkl.conda
- build_number: 26
- sha256: d631993a5cf5b8d3201f881084fce7ff6a26cd49883e189bf582cd0b7975c80a
- md5: ecfe732dbad1be001826fdb7e5e891b5
+ size: 17123
+ timestamp: 1740088119350
+- conda: https://prefix.dev/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda
+ build_number: 31
+ sha256: 7bb4d5b591e98fe607279520ee78e3571a297b5720aa789a2536041ad5540de8
+ md5: d05563c577fe2f37693a554b3f271e8f
depends:
- mkl 2024.2.2 h66d3029_15
constrains:
- - liblapacke 3.9.0 26_win64_mkl
- - liblapack 3.9.0 26_win64_mkl
- - blas * mkl
- - libcblas 3.9.0 26_win64_mkl
+ - libcblas =3.9.0=31*_mkl
+ - blas =2.131=mkl
+ - liblapacke =3.9.0=31*_mkl
+ - liblapack =3.9.0=31*_mkl
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 3733122
- timestamp: 1734432745507
-- conda: https://prefix.dev/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda
- sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3
- md5: 41b599ed2b02abcfdd84302bff174b23
- depends:
- - __glibc >=2.17,<3.0.a0
- - libgcc >=13
- license: MIT
- license_family: MIT
- purls: []
- size: 68851
- timestamp: 1725267660471
-- conda: https://prefix.dev/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda
- sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5
- md5: d0bf1dff146b799b319ea0434b93f779
- depends:
- - __osx >=11.0
- license: MIT
- license_family: MIT
- purls: []
- size: 68426
- timestamp: 1725267943211
-- conda: https://prefix.dev/conda-forge/win-64/libbrotlicommon-1.1.0-h2466b09_2.conda
- sha256: 33e8851c6cc8e2d93059792cd65445bfe6be47e4782f826f01593898ec95764c
- md5: f7dc9a8f21d74eab46456df301da2972
- depends:
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- license: MIT
- license_family: MIT
- purls: []
- size: 70526
- timestamp: 1725268159739
-- conda: https://prefix.dev/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda
- sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf
- md5: 9566f0bd264fbd463002e759b8a82401
- depends:
- - __glibc >=2.17,<3.0.a0
- - libbrotlicommon 1.1.0 hb9d3cd8_2
- - libgcc >=13
- license: MIT
- license_family: MIT
- purls: []
- size: 32696
- timestamp: 1725267669305
-- conda: https://prefix.dev/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda
- sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264
- md5: 55e66e68ce55523a6811633dd1ac74e2
- depends:
- - __osx >=11.0
- - libbrotlicommon 1.1.0 hd74edd7_2
- license: MIT
- license_family: MIT
- purls: []
- size: 28378
- timestamp: 1725267980316
-- conda: https://prefix.dev/conda-forge/win-64/libbrotlidec-1.1.0-h2466b09_2.conda
- sha256: 234fc92f4c4f1cf22f6464b2b15bfc872fa583c74bf3ab9539ff38892c43612f
- md5: 9bae75ce723fa34e98e239d21d752a7e
- depends:
- - libbrotlicommon 1.1.0 h2466b09_2
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- license: MIT
- license_family: MIT
- purls: []
- size: 32685
- timestamp: 1725268208844
-- conda: https://prefix.dev/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda
- sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29
- md5: 06f70867945ea6a84d35836af780f1de
+ size: 3733728
+ timestamp: 1740088452830
+- conda: https://prefix.dev/conda-forge/linux-64/libcap-2.75-h39aace5_0.conda
+ sha256: 9c84448305e7c9cc44ccec7757cf5afcb5a021f4579aa750a1fa6ea398783950
+ md5: c44c16d6976d2aebbd65894d7741e67e
depends:
- __glibc >=2.17,<3.0.a0
- - libbrotlicommon 1.1.0 hb9d3cd8_2
+ - attr >=2.5.1,<2.6.0a0
- libgcc >=13
- license: MIT
- license_family: MIT
- purls: []
- size: 281750
- timestamp: 1725267679782
-- conda: https://prefix.dev/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda
- sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7
- md5: 4f3a434504c67b2c42565c0b85c1885c
- depends:
- - __osx >=11.0
- - libbrotlicommon 1.1.0 hd74edd7_2
- license: MIT
- license_family: MIT
- purls: []
- size: 279644
- timestamp: 1725268003553
-- conda: https://prefix.dev/conda-forge/win-64/libbrotlienc-1.1.0-h2466b09_2.conda
- sha256: 3d0dd7ef505962f107b7ea8f894e0b3dd01bf46852b362c8a7fc136b039bc9e1
- md5: 85741a24d97954a991e55e34bc55990b
- depends:
- - libbrotlicommon 1.1.0 h2466b09_2
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- license: MIT
- license_family: MIT
- purls: []
- size: 245929
- timestamp: 1725268238259
-- conda: https://prefix.dev/conda-forge/linux-64/libcblas-3.9.0-26_linux64_mkl.conda
- build_number: 26
- sha256: 23866eb509e5896b8fcf647e9cef8f0923d5bb378c0dd14b44b94abe1b24c4d7
- md5: 760c109bfe25518d6f9af51d7af8b9f3
- depends:
- - libblas 3.9.0 26_linux64_mkl
- constrains:
- - liblapack 3.9.0 26_linux64_mkl
- - blas * mkl
- - liblapacke 3.9.0 26_linux64_mkl
- track_features:
- - blas_mkl
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 16269
- timestamp: 1734432548754
-- conda: https://prefix.dev/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda
- build_number: 26
- sha256: 9c74e536c9bc868e356ffd43f81c2cb398aec84b40fcadc312315b164a5500ee
- md5: ebcc5f37a435aa3c19640533c82f8d76
+ size: 120375
+ timestamp: 1741176638215
+- conda: https://prefix.dev/conda-forge/linux-64/libcblas-3.9.0-31_h372d94f_mkl.conda
+ build_number: 31
+ sha256: 2ee3ab2b6eeb59f2d3c6f933fa0db28f1b56f0bc543ed2c0f6ec04060e4b6ec0
+ md5: 2a06a6c16b45bd3d10002927ca204b67
depends:
- - libblas 3.9.0 26_linux64_openblas
+ - libblas 3.9.0 31_hfdb39a5_mkl
constrains:
- - liblapack 3.9.0 26_linux64_openblas
- - liblapacke 3.9.0 26_linux64_openblas
- - blas * openblas
+ - liblapack =3.9.0=31*_mkl
+ - liblapacke =3.9.0=31*_mkl
+ - blas =2.131=mkl
+ track_features:
+ - blas_mkl
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 16336
- timestamp: 1734432570482
-- conda: https://prefix.dev/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda
- build_number: 26
- sha256: 27a29ef6b2fd2179bc3a0bb9db351f078ba140ca10485dca147c399639f84c93
- md5: a0e9980fe12d42f6d0c0ec009f67e948
+ size: 16724
+ timestamp: 1740087727554
+- conda: https://prefix.dev/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda
+ build_number: 31
+ sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d
+ md5: abb32c727da370c481a1c206f5159ce9
depends:
- - libblas 3.9.0 26_osxarm64_openblas
+ - libblas 3.9.0 31_h59b9bed_openblas
constrains:
- - liblapack 3.9.0 26_osxarm64_openblas
- - liblapacke 3.9.0 26_osxarm64_openblas
- - blas * openblas
+ - liblapacke =3.9.0=31*_openblas
+ - liblapack =3.9.0=31*_openblas
+ - blas =2.131=openblas
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 16628
- timestamp: 1734433061517
-- conda: https://prefix.dev/conda-forge/win-64/libcblas-3.9.0-26_win64_mkl.conda
- build_number: 26
- sha256: 66699c4f84fd36b67a34a7ac59fb86e73ee0c5b3c3502441041c8dd51f0a7d49
- md5: 652f3adcb9d329050a325416edb14246
+ size: 16796
+ timestamp: 1740087984429
+- conda: https://prefix.dev/conda-forge/osx-64/libcblas-3.9.0-20_osx64_mkl.conda
+ build_number: 20
+ sha256: a35e3c8f0efee2bee8926cbbf23dcb36c9cfe3100690af3b86f933bab26c4eeb
+ md5: 51089a4865eb4aec2bc5c7468bd07f9f
depends:
- - libblas 3.9.0 26_win64_mkl
+ - libblas 3.9.0 20_osx64_mkl
constrains:
- - liblapacke 3.9.0 26_win64_mkl
- - liblapack 3.9.0 26_win64_mkl
- blas * mkl
+ - liblapack 3.9.0 20_osx64_mkl
+ - liblapacke 3.9.0 20_osx64_mkl
+ track_features:
+ - blas_mkl
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 3732146
- timestamp: 1734432785653
-- conda: https://prefix.dev/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2
- sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5
- md5: c965a5aa0d5c1c37ffc62dff36e28400
+ size: 14694
+ timestamp: 1700568672081
+- conda: https://prefix.dev/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda
+ build_number: 31
+ sha256: a64b24e195f7790722e1557ff5ed9ecceaaf85559b182d0d03fa61c1fd60326c
+ md5: c655cc2b0c48ec454f7a4db92415d012
depends:
- - libgcc-ng >=9.4.0
- - libstdcxx-ng >=9.4.0
+ - libblas 3.9.0 31_h7f60823_openblas
+ constrains:
+ - liblapacke =3.9.0=31*_openblas
+ - blas =2.131=openblas
+ - liblapack =3.9.0=31*_openblas
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 20440
- timestamp: 1633683576494
-- conda: https://prefix.dev/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2
- sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929
- md5: 32bd82a6a625ea6ce090a81c3d34edeb
+ size: 17006
+ timestamp: 1740087955460
+- conda: https://prefix.dev/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda
+ build_number: 31
+ sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5
+ md5: 7353c2bf0e90834cb70545671996d871
depends:
- - libcxx >=11.1.0
+ - libblas 3.9.0 31_h10e41b3_openblas
+ constrains:
+ - liblapacke =3.9.0=31*_openblas
+ - blas =2.131=openblas
+ - liblapack =3.9.0=31*_openblas
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 18765
- timestamp: 1633683992603
-- conda: https://prefix.dev/conda-forge/win-64/libcrc32c-1.1.2-h0e60522_0.tar.bz2
- sha256: 75e60fbe436ba8a11c170c89af5213e8bec0418f88b7771ab7e3d9710b70c54e
- md5: cd4cc2d0c610c8cb5419ccc979f2d6ce
+ size: 17032
+ timestamp: 1740088127097
+- conda: https://prefix.dev/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda
+ build_number: 31
+ sha256: 609f455b099919bd4d15d4a733f493dc789e02da73fe4474f1cca73afafb95b8
+ md5: 43c100b94ad2607382b0cf0f3a6b0bf3
depends:
- - vc >=14.1,<15.0a0
- - vs2015_runtime >=14.16.27012
+ - libblas 3.9.0 31_h641d27c_mkl
+ constrains:
+ - blas =2.131=mkl
+ - liblapacke =3.9.0=31*_mkl
+ - liblapack =3.9.0=31*_mkl
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 25694
- timestamp: 1633684287072
-- conda: https://prefix.dev/conda-forge/linux-64/libcublas-12.6.4.1-hbd13f7d_0.conda
- sha256: 99ac5f733effaabf30db0f9bf69f8969597834251cbe2ecff4b682806c0ad97b
- md5: c7124adbde472a7052dc42e3fc8310db
+ size: 3733549
+ timestamp: 1740088502127
+- conda: https://prefix.dev/conda-forge/linux-64/libcublas-12.9.0.13-h9ab20c4_0.conda
+ sha256: 18dc7b16b5ab5f397222566b20c450ade1a16f1f2639991cbfe91eef6960ad62
+ md5: 9c1477b1793b43fd128dffd240286e98
depends:
- - __glibc >=2.17,<3.0.a0
+ - __glibc >=2.28,<3.0.a0
- cuda-nvrtc
- - cuda-version >=12.6,<12.7.0a0
+ - cuda-version >=12.9,<12.10.0a0
- libgcc >=13
- libstdcxx >=13
license: LicenseRef-NVIDIA-End-User-License-Agreement
purls: []
- size: 267981139
- timestamp: 1732133541796
-- conda: https://prefix.dev/conda-forge/win-64/libcublas-12.6.4.1-he0c23c2_0.conda
- sha256: 1638aee3474fabdee03cf02383d1b3be4a5257a427909692adad9cab454a5ff6
- md5: 6ec858b74ad405f09d11ea4ab6251499
+ size: 467452297
+ timestamp: 1746202246998
+- conda: https://prefix.dev/conda-forge/win-64/libcublas-12.9.0.13-he0c23c2_0.conda
+ sha256: b7f848c3f0b8545b5290d081efa1410b8a628c5dc3d1ff964dcf2d30525ec7db
+ md5: 161e703ccf3e27f5c98b0b572f461a80
depends:
- cuda-nvrtc
- - cuda-version >=12.6,<12.7.0a0
+ - cuda-version >=12.9,<12.10.0a0
- ucrt >=10.0.20348.0
- vc >=14.2,<15
- vc14_runtime >=14.29.30139
license: LicenseRef-NVIDIA-End-User-License-Agreement
purls: []
- size: 301165909
- timestamp: 1732133805459
-- conda: https://prefix.dev/conda-forge/linux-64/libcufft-11.3.0.4-hbd13f7d_0.conda
- sha256: fc64a2611a15db7baef61efee2059f090b8f866d06b8f65808c8d2ee191cf7db
- md5: a296940fa2e0448d066d03bf6b586772
+ size: 460843310
+ timestamp: 1746202450501
+- conda: https://prefix.dev/conda-forge/linux-64/libcublas-dev-12.9.0.13-h9ab20c4_0.conda
+ sha256: 2ace6dd4b60212b3870dfefc63010c77cb486da06aadc46a4426ab340f032689
+ md5: fdf825f59f01293b8e335e536296478e
depends:
- - __glibc >=2.17,<3.0.a0
- - cuda-version >=12.6,<12.7.0a0
+ - __glibc >=2.28,<3.0.a0
+ - cuda-crt-dev_linux-64
+ - cuda-cudart-dev_linux-64
+ - cuda-version >=12.9,<12.10.0a0
+ - libcublas 12.9.0.13 h9ab20c4_0
- libgcc >=13
- libstdcxx >=13
+ constrains:
+ - libcublas-static >=12.9.0.13
license: LicenseRef-NVIDIA-End-User-License-Agreement
purls: []
- size: 163772747
- timestamp: 1727808246058
-- conda: https://prefix.dev/conda-forge/win-64/libcufft-11.3.0.4-he0c23c2_0.conda
- sha256: a72d075612577d3e2c52df0072b73dc29244ddcfde92ea91b7ccfbe847840117
- md5: 6c008913bfc99685ebda59c47dc69200
+ size: 91998
+ timestamp: 1746203009003
+- conda: https://prefix.dev/conda-forge/linux-64/libcudnn-9.10.1.4-h4840ae0_0.conda
+ sha256: 5f21148b7bdfbcf5e40b4debaccd6d36b8a75405fdef1c66d75059a12d43bd0e
+ md5: c19f7281266ca77da5458d2ccf17ba82
+ depends:
+ - __glibc >=2.28,<3.0.a0
+ - cuda-nvrtc
+ - cuda-version >=12,<13.0a0
+ - libcublas
+ - libgcc >=13
+ - libstdcxx >=13
+ - libzlib >=1.3.1,<2.0a0
+ constrains:
+ - libcudnn-jit <0a
+ license: LicenseRef-cuDNN-Software-License-Agreement
+ purls: []
+ size: 527020675
+ timestamp: 1747773945760
+- conda: https://prefix.dev/conda-forge/win-64/libcudnn-9.10.1.4-hffc9a7f_0.conda
+ sha256: 26d399ecad571797b2600b0c6c955a6ce2f3372d71cca0c148c5867a4a52a377
+ md5: 5f3f28dcfb3f8c8cc6f826079923377f
depends:
- - cuda-version >=12.6,<12.7.0a0
+ - cuda-nvrtc
+ - cuda-version >=12,<13.0a0
+ - libcublas
- ucrt >=10.0.20348.0
- vc >=14.2,<15
- vc14_runtime >=14.29.30139
- license: LicenseRef-NVIDIA-End-User-License-Agreement
+ constrains:
+ - libcudnn-jit <0a
+ license: LicenseRef-cuDNN-Software-License-Agreement
purls: []
- size: 163447085
- timestamp: 1727808389092
-- conda: https://prefix.dev/conda-forge/linux-64/libcurand-10.3.7.77-hbd13f7d_0.conda
- sha256: 58ee962804a9df475638e0e83f1116bfbf00a5e4681ed180eb872990d49d7902
- md5: d8b8a1e6e6205447289cd09212c914ac
+ size: 509841043
+ timestamp: 1747774328068
+- conda: https://prefix.dev/conda-forge/linux-64/libcudnn-dev-9.10.1.4-hcd2ec93_0.conda
+ sha256: 34fb3c9fa9b67a18fd0b4d28518fdacf11dbed3ad3fbf24aec341d1b8490d3c0
+ md5: bce8ec010b35f2c1e5db441f3f396754
depends:
- - __glibc >=2.17,<3.0.a0
- - cuda-version >=12.6,<12.7.0a0
+ - __glibc >=2.28,<3.0.a0
+ - cuda-version >=12,<13.0a0
+ - libcudnn 9.10.1.4 h4840ae0_0
- libgcc >=13
- libstdcxx >=13
- license: LicenseRef-NVIDIA-End-User-License-Agreement
+ constrains:
+ - libcudnn-jit-dev <0a
+ license: LicenseRef-cuDNN-Software-License-Agreement
purls: []
- size: 41790488
- timestamp: 1727807993172
-- conda: https://prefix.dev/conda-forge/win-64/libcurand-10.3.7.77-he0c23c2_0.conda
- sha256: f912ca0d687859b66c7ee8cf3ee7ce470df755e324c3170a8aa7a416b528b011
- md5: 45fed84e6ddab8bfcd93b194fae9626a
+ size: 44217
+ timestamp: 1747774406255
+- conda: https://prefix.dev/conda-forge/win-64/libcudnn-dev-9.10.1.4-hffc9a7f_0.conda
+ sha256: 66ea382c3fa5b3a5fa448166865b154a7d6d263f981243a96ddb045278a75bb2
+ md5: 81ae4771239f63d4f0aebad63de544f6
depends:
- - cuda-version >=12.6,<12.7.0a0
+ - cuda-version >=12,<13.0a0
+ - libcudnn 9.10.1.4 hffc9a7f_0
- ucrt >=10.0.20348.0
- vc >=14.2,<15
- vc14_runtime >=14.29.30139
- license: LicenseRef-NVIDIA-End-User-License-Agreement
+ constrains:
+ - libcudnn-jit-dev <0a
+ license: LicenseRef-cuDNN-Software-License-Agreement
purls: []
- size: 43727889
- timestamp: 1727808369048
-- conda: https://prefix.dev/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda
- sha256: 3cd4075b2a7b5562e46c8ec626f6f9ca57aeecaa94ff7df57eca26daa94c9906
- md5: 2b3e0081006dc21e8bf53a91c83a055c
+ size: 154532
+ timestamp: 1747774979086
+- conda: https://prefix.dev/conda-forge/linux-64/libcudss-0.5.0.16-h14340ca_1.conda
+ sha256: 0fb14ae71efe11429c24b2fa7d82e718fb52f4cf9cad9379dd7c0302e4294373
+ md5: 290a26e7caf9bcbdde629db6612e212e
depends:
- __glibc >=2.17,<3.0.a0
- - krb5 >=1.21.3,<1.22.0a0
+ - _openmp_mutex >=4.5
+ - cuda-version >=12,<13.0a0
+ - libcublas
- libgcc >=13
- - libnghttp2 >=1.64.0,<2.0a0
- - libssh2 >=1.11.1,<2.0a0
- - libzlib >=1.3.1,<2.0a0
- - openssl >=3.4.0,<4.0a0
- - zstd >=1.5.6,<1.6.0a0
- license: curl
- license_family: MIT
- purls: []
- size: 423011
- timestamp: 1733999897624
-- conda: https://prefix.dev/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda
- sha256: f47c35938144c23278987c7d12096f6a42d7c850ffc277222b032073412383b6
- md5: 46d7524cabfdd199bffe63f8f19a552b
- depends:
- - __osx >=11.0
- - krb5 >=1.21.3,<1.22.0a0
- - libnghttp2 >=1.64.0,<2.0a0
- - libssh2 >=1.11.1,<2.0a0
- - libzlib >=1.3.1,<2.0a0
- - openssl >=3.4.0,<4.0a0
- - zstd >=1.5.6,<1.6.0a0
- license: curl
- license_family: MIT
+ - libstdcxx >=13
+ constrains:
+ - libcudss-commlayer-nccl 0.5.0.16 hb92ee24_1
+ - libcudss-commlayer-mpi 0.5.0.16 h2f16e9f_1
+ license: LicenseRef-NVIDIA-End-User-License-Agreement
purls: []
- size: 385098
- timestamp: 1734000160270
-- conda: https://prefix.dev/conda-forge/win-64/libcurl-8.11.1-h88aaa65_0.conda
- sha256: 1a67f01da0e35296c6d1fdf6baddc45ad3cc2114132ff4638052eb7cf258aab2
- md5: 071d3f18dba5a6a13c6bb70cdb42678f
+ size: 32293521
+ timestamp: 1739909124258
+- conda: https://prefix.dev/conda-forge/win-64/libcudss-0.5.0.16-hffc9a7f_1.conda
+ sha256: e9b2439171033751da85d1a9d2f78c67050ee73e17c39b86c48bd726801c19ad
+ md5: 25da1ea60c3d524e7380ff75865e4597
depends:
- - krb5 >=1.21.3,<1.22.0a0
- - libssh2 >=1.11.1,<2.0a0
- - libzlib >=1.3.1,<2.0a0
+ - _openmp_mutex >=4.5
+ - cuda-version >=12,<13.0a0
+ - libcublas
- ucrt >=10.0.20348.0
- vc >=14.2,<15
- vc14_runtime >=14.29.30139
- license: curl
- license_family: MIT
+ constrains:
+ - libcudss-commlayer-nccl 0.5.0.16 1
+ - libcudss-commlayer-mpi 0.5.0.16 1
+ license: LicenseRef-NVIDIA-End-User-License-Agreement
purls: []
- size: 349553
- timestamp: 1734000095720
-- conda: https://prefix.dev/conda-forge/linux-64/libcusolver-11.7.1.2-hbd13f7d_0.conda
- sha256: 3de5457807dd30f9509863324cfbe9d74d20f477dfeb5ed7de68bbb3da4064bd
- md5: 035db50d5e949de81e015df72a834e79
+ size: 31520993
+ timestamp: 1739909536696
+- conda: https://prefix.dev/conda-forge/linux-64/libcufft-11.4.0.6-h5888daf_0.conda
+ sha256: 09689f760978a77d18bc393ce749b539e1fcc870c0e41f666993be26b0296314
+ md5: 498af0c40a20ee97db04d51269f2fd87
depends:
- __glibc >=2.17,<3.0.a0
- - cuda-version >=12.6,<12.7.0a0
- - libcublas >=12.6.3.3,<12.7.0a0
- - libcusparse >=12.5.4.2,<12.6.0a0
+ - cuda-version >=12.9,<12.10.0a0
- libgcc >=13
- - libnvjitlink >=12.6.77,<12.7.0a0
- libstdcxx >=13
license: LicenseRef-NVIDIA-End-User-License-Agreement
purls: []
- size: 100482680
- timestamp: 1727816156921
-- conda: https://prefix.dev/conda-forge/win-64/libcusolver-11.7.1.2-he0c23c2_0.conda
- sha256: 6e9b812f95fb9498eabeb336136f5655cd7f5802b6f94284719f6c05d64d46a9
- md5: 4a5afb2e1c3ec09bfd891b57ef2eb98b
+ size: 161845949
+ timestamp: 1746193474688
+- conda: https://prefix.dev/conda-forge/win-64/libcufft-11.4.0.6-he0c23c2_0.conda
+ sha256: eaea9b163e6558fa84379380e6cc29645ac20096c915e1bd8fa7824409a482fd
+ md5: 07cc55823a34c221560fdf202eceee97
depends:
- - cuda-version >=12.6,<12.7.0a0
- - libcublas >=12.6.3.3,<12.7.0a0
- - libcusparse >=12.5.4.2,<12.6.0a0
- - libnvjitlink >=12.6.77,<12.7.0a0
+ - cuda-version >=12.9,<12.10.0a0
- ucrt >=10.0.20348.0
- vc >=14.2,<15
- vc14_runtime >=14.29.30139
license: LicenseRef-NVIDIA-End-User-License-Agreement
purls: []
- size: 95730312
- timestamp: 1727816713108
-- conda: https://prefix.dev/conda-forge/linux-64/libcusparse-12.5.4.2-hbd13f7d_0.conda
- sha256: 9db5d983d102c20f2cecc494ea22d84c44df37d373982815fc2eb669bf0bd376
- md5: 8186e9de34f321aa34965c1cb72c0c26
+ size: 161768682
+ timestamp: 1746193623262
+- conda: https://prefix.dev/conda-forge/linux-64/libcufft-dev-11.4.0.6-h5888daf_0.conda
+ sha256: 4966ea4478e602583f8af1ee68e549abd77e9c014302f3ccc11e0cf6b6174275
+ md5: 67dc1b5160e2fd24446b8355f3a0f175
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - cuda-version >=12.9,<12.10.0a0
+ - libcufft 11.4.0.6 h5888daf_0
+ - libgcc >=13
+ - libstdcxx >=13
+ constrains:
+ - libcufft-static >=11.4.0.6
+ license: LicenseRef-NVIDIA-End-User-License-Agreement
+ purls: []
+ size: 34188
+ timestamp: 1746193845048
+- conda: https://prefix.dev/conda-forge/linux-64/libcufile-1.14.0.30-h628e99a_0.conda
+ sha256: 59807deae0844774301acc8d03d78dbaae8718ab69faca7d203dc689be06d952
+ md5: 248bb7bf66da6f601ee99fd24892380c
depends:
- __glibc >=2.17,<3.0.a0
- - cuda-version >=12.6,<12.7.0a0
+ - cuda-version >=12.9,<12.10.0a0
+ - libgcc >=13
+ - libstdcxx >=13
+ - rdma-core >=55.0
+ license: LicenseRef-NVIDIA-End-User-License-Agreement
+ purls: []
+ size: 971139
+ timestamp: 1746193260621
+- conda: https://prefix.dev/conda-forge/linux-64/libcurand-10.3.10.19-h9ab20c4_0.conda
+ sha256: c4576976b8b5ceb060b32d24fc08db5253606256c3c99b42ace343e9be2229db
+ md5: c745bc0dd1f066e6752c8b2909216b62
+ depends:
+ - __glibc >=2.28,<3.0.a0
+ - cuda-version >=12.9,<12.10.0a0
- libgcc >=13
- - libnvjitlink >=12.6.77,<12.7.0a0
- libstdcxx >=13
license: LicenseRef-NVIDIA-End-User-License-Agreement
purls: []
- size: 124403455
- timestamp: 1727811455861
-- conda: https://prefix.dev/conda-forge/win-64/libcusparse-12.5.4.2-he0c23c2_0.conda
- sha256: d3f5924397f12cca678807d8507af073803a7db25cf1658ce09a8f47692a59a1
- md5: 22144b496a855eae2ccbf754ff37b690
+ size: 46161381
+ timestamp: 1746193213392
+- conda: https://prefix.dev/conda-forge/win-64/libcurand-10.3.10.19-he0c23c2_0.conda
+ sha256: 3d3bddf1126f257a90b6e17b336b2a13c9dfa23e8c480b9d155803debcfa5c8a
+ md5: 3f2c7b49414e5b761333aea772d93da4
depends:
- - cuda-version >=12.6,<12.7.0a0
- - libnvjitlink >=12.6.77,<12.7.0a0
+ - cuda-version >=12.9,<12.10.0a0
- ucrt >=10.0.20348.0
- vc >=14.2,<15
- vc14_runtime >=14.29.30139
license: LicenseRef-NVIDIA-End-User-License-Agreement
purls: []
- size: 122556064
- timestamp: 1727811617684
-- conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda
- sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5
- md5: 5b3e1610ff8bd5443476b91d618f5b77
- depends:
- - __osx >=11.0
- license: Apache-2.0 WITH LLVM-exception
- license_family: Apache
- purls: []
- size: 523505
- timestamp: 1736877862502
-- conda: https://prefix.dev/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda
- sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66
- md5: 8dfae1d2e74767e9ce36d5fa0d8605db
+ size: 49031195
+ timestamp: 1746193674828
+- conda: https://prefix.dev/conda-forge/linux-64/libcurand-dev-10.3.10.19-h9ab20c4_0.conda
+ sha256: 1d59e844f3a79c19040efc1f15f23e33bb6b13df19bb63714e9b34515fc9d8fc
+ md5: 9a7e41b2c3cf57f6a3a1aeac35ebebc0
depends:
- - __glibc >=2.17,<3.0.a0
+ - __glibc >=2.28,<3.0.a0
+ - cuda-version >=12.9,<12.10.0a0
+ - libcurand 10.3.10.19 h9ab20c4_0
- libgcc >=13
- license: MIT
- license_family: MIT
+ - libstdcxx >=13
+ constrains:
+ - libcurand-static >=10.3.10.19
+ license: LicenseRef-NVIDIA-End-User-License-Agreement
purls: []
- size: 72255
- timestamp: 1734373823254
-- conda: https://prefix.dev/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda
- sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53
- md5: 1d8b9588be14e71df38c525767a1ac30
+ size: 253530
+ timestamp: 1746193336357
+- conda: https://prefix.dev/conda-forge/linux-64/libcusolver-11.7.4.40-h9ab20c4_0.conda
+ sha256: 4148415e990c51e5e396ea24869415de3996527f92b0e4dc625aa6bcccd50f87
+ md5: 9b693f50985ce248765108972099fe55
depends:
- - __osx >=11.0
- license: MIT
- license_family: MIT
+ - __glibc >=2.28,<3.0.a0
+ - cuda-version >=12.9,<12.10.0a0
+ - libcublas >=12.9.0.13,<12.10.0a0
+ - libcusparse >=12.5.9.5,<12.6.0a0
+ - libgcc >=13
+ - libnvjitlink >=12.9.41,<12.10.0a0
+ - libstdcxx >=13
+ license: LicenseRef-NVIDIA-End-User-License-Agreement
purls: []
- size: 54132
- timestamp: 1734373971372
-- conda: https://prefix.dev/conda-forge/win-64/libdeflate-1.23-h9062f6e_0.conda
- sha256: 96c47725a8258159295996ea2758fa0ff9bea330e72b59641642e16be8427ce8
- md5: a9624935147a25b06013099d3038e467
+ size: 201753979
+ timestamp: 1746205898951
+- conda: https://prefix.dev/conda-forge/win-64/libcusolver-11.7.4.40-he0c23c2_0.conda
+ sha256: 8ddd01ef415015fd06db545cdb0135b0d6d3948c0226f40a1bdab3041ef784f3
+ md5: b0457807333ee83cc13e8ca0565ef77f
depends:
+ - cuda-version >=12.9,<12.10.0a0
+ - libcublas >=12.9.0.13,<12.10.0a0
+ - libcusparse >=12.5.9.5,<12.6.0a0
+ - libnvjitlink >=12.9.41,<12.10.0a0
- ucrt >=10.0.20348.0
- vc >=14.2,<15
- vc14_runtime >=14.29.30139
- license: MIT
- license_family: MIT
+ license: LicenseRef-NVIDIA-End-User-License-Agreement
purls: []
- size: 155723
- timestamp: 1734374084110
-- conda: https://prefix.dev/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda
- sha256: 4d0d69ddf9cc7d724a1ccf3a9852e44c8aea9825692582bac2c4e8d21ec95ccd
- md5: 8247f80f3dc464d9322e85007e307fe8
+ size: 195025257
+ timestamp: 1746206188378
+- conda: https://prefix.dev/conda-forge/linux-64/libcusolver-dev-11.7.4.40-h9ab20c4_0.conda
+ sha256: d6811f35727a6cedc4f6dec20584bcd775fe1cdb367b8cf3e7fd01d2c4439313
+ md5: 416a81027b133a2cff0585e31d9dcafe
depends:
- - ncurses
- - __glibc >=2.17,<3.0.a0
+ - __glibc >=2.28,<3.0.a0
+ - cuda-version >=12.9,<12.10.0a0
+ - libcusolver 11.7.4.40 h9ab20c4_0
- libgcc >=13
- - ncurses >=6.5,<7.0a0
- license: BSD-2-Clause
- license_family: BSD
+ - libstdcxx >=13
+ constrains:
+ - libcusolver-static >=11.7.4.40
+ license: LicenseRef-NVIDIA-End-User-License-Agreement
purls: []
- size: 134657
- timestamp: 1736191912705
-- conda: https://prefix.dev/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda
- sha256: fb934d7a03279ec8eae4bf1913ac9058fcf6fed35290d8ffa6e04157f396a3b1
- md5: af89aa84ffb5ee551ce0c137b951a3b5
+ size: 60998
+ timestamp: 1746206190695
+- conda: https://prefix.dev/conda-forge/linux-64/libcusparse-12.5.9.5-h5888daf_0.conda
+ sha256: 2ae08171a1d207af2046951177f09f771a4ca76e757b8ce4020fa559524800d2
+ md5: 2b89788a46b00abd59ffab688868c321
depends:
- - ncurses
- - __osx >=11.0
- - ncurses >=6.5,<7.0a0
- license: BSD-2-Clause
- license_family: BSD
+ - __glibc >=2.17,<3.0.a0
+ - cuda-version >=12.9,<12.10.0a0
+ - libgcc >=13
+ - libnvjitlink >=12.9.41,<12.10.0a0
+ - libstdcxx >=13
+ license: LicenseRef-NVIDIA-End-User-License-Agreement
purls: []
- size: 107634
- timestamp: 1736192034117
-- conda: https://prefix.dev/conda-forge/linux-64/libev-4.33-hd590300_2.conda
- sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4
- md5: 172bf1cd1ff8629f2b1179945ed45055
+ size: 208851709
+ timestamp: 1746195989263
+- conda: https://prefix.dev/conda-forge/win-64/libcusparse-12.5.9.5-he0c23c2_0.conda
+ sha256: 06cc8cfe8936fda61858f935034adcd98537db2fd18ad3d2c8112691b4056061
+ md5: 89431cf7c2ee58bfac9b5a13c68bb62c
depends:
- - libgcc-ng >=12
- license: BSD-2-Clause
- license_family: BSD
- purls: []
- size: 112766
- timestamp: 1702146165126
-- conda: https://prefix.dev/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda
- sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f
- md5: 36d33e440c31857372a72137f78bacf5
- license: BSD-2-Clause
- license_family: BSD
+ - cuda-version >=12.9,<12.10.0a0
+ - libnvjitlink >=12.9.41,<12.10.0a0
+ - ucrt >=10.0.20348.0
+ - vc >=14.2,<15
+ - vc14_runtime >=14.29.30139
+ license: LicenseRef-NVIDIA-End-User-License-Agreement
purls: []
- size: 107458
- timestamp: 1702146414478
-- conda: https://prefix.dev/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda
- sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131
- md5: a1cfcc585f0c42bf8d5546bb1dfb668d
+ size: 206419763
+ timestamp: 1746196437283
+- conda: https://prefix.dev/conda-forge/linux-64/libcusparse-dev-12.5.9.5-h5888daf_0.conda
+ sha256: 82aef570f27ec0770477b841e16e70db352db7253425818c60d91dddf34f16f2
+ md5: 7580baba0294656dda948344452e51c0
depends:
- - libgcc-ng >=12
- - openssl >=3.1.1,<4.0a0
- license: BSD-3-Clause
- license_family: BSD
+ - __glibc >=2.17,<3.0.a0
+ - cuda-version >=12.9,<12.10.0a0
+ - libcusparse 12.5.9.5 h5888daf_0
+ - libgcc >=13
+ - libnvjitlink >=12.9.41,<12.10.0a0
+ - libstdcxx >=13
+ constrains:
+ - libcusparse-static >=12.5.9.5
+ license: LicenseRef-NVIDIA-End-User-License-Agreement
purls: []
- size: 427426
- timestamp: 1685725977222
-- conda: https://prefix.dev/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda
- sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7
- md5: 1a109764bff3bdc7bdd84088347d71dc
+ size: 52753
+ timestamp: 1746196334627
+- conda: https://prefix.dev/conda-forge/osx-64/libcxx-20.1.6-hf95d169_0.conda
+ sha256: fbc7a8ef613669f3133bb2b0bc5b36f4c51987bb74769b018377fac96610863b
+ md5: 460934df319a215557816480e9ea78cf
depends:
- - openssl >=3.1.1,<4.0a0
- license: BSD-3-Clause
- license_family: BSD
+ - __osx >=10.13
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
purls: []
- size: 368167
- timestamp: 1685726248899
-- conda: https://prefix.dev/conda-forge/win-64/libevent-2.1.12-h3671451_1.conda
- sha256: af03882afb7a7135288becf340c2f0cf8aa8221138a9a7b108aaeb308a486da1
- md5: 25efbd786caceef438be46da78a7b5ef
+ size: 561657
+ timestamp: 1748495006359
+- conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-20.1.6-ha82da77_0.conda
+ sha256: b74ec832ec05571f8747c9bd5f96b93d76489909b4f6f37d99d576dc955f21e9
+ md5: 95c1830841844ef54e07efed1654b47f
depends:
- - openssl >=3.1.1,<4.0a0
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- license: BSD-3-Clause
- license_family: BSD
+ - __osx >=11.0
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
purls: []
- size: 410555
- timestamp: 1685726568668
-- conda: https://prefix.dev/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda
- sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26
- md5: db833e03127376d461e1e13e76f09b6c
+ size: 567539
+ timestamp: 1748495055530
+- conda: https://prefix.dev/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda
+ sha256: 33ab03438aee65d6aa667cf7d90c91e5e7d734c19a67aa4c7040742c0a13d505
+ md5: db0bfbe7dd197b68ad5f30333bae6ce0
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=13
constrains:
- - expat 2.6.4.*
+ - expat 2.7.0.*
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 74427
+ timestamp: 1743431794976
+- conda: https://prefix.dev/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda
+ sha256: 976f2e23ad2bb2b8e92c99bfa2ead3ad557b17a129b170f7e2dfcf233193dd7e
+ md5: 026d0a1056ba2a3dbbea6d4b08188676
+ depends:
+ - __osx >=10.13
+ constrains:
+ - expat 2.7.0.*
license: MIT
license_family: MIT
purls: []
- size: 73304
- timestamp: 1730967041968
-- conda: https://prefix.dev/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda
- sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745
- md5: 38d2656dd914feb0cab8c629370768bf
+ size: 71894
+ timestamp: 1743431912423
+- conda: https://prefix.dev/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda
+ sha256: ee550e44765a7bbcb2a0216c063dcd53ac914a7be5386dd0554bd06e6be61840
+ md5: 6934bbb74380e045741eb8637641a65b
depends:
- __osx >=11.0
constrains:
- - expat 2.6.4.*
+ - expat 2.7.0.*
license: MIT
license_family: MIT
purls: []
- size: 64693
- timestamp: 1730967175868
-- conda: https://prefix.dev/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda
- sha256: 0c0447bf20d1013d5603499de93a16b6faa92d7ead870d96305c0f065b6a5a12
- md5: eb383771c680aa792feb529eaf9df82f
+ size: 65714
+ timestamp: 1743431789879
+- conda: https://prefix.dev/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda
+ sha256: 1a227c094a4e06bd54e8c2f3ec40c17ff99dcf3037d812294f842210aa66dbeb
+ md5: b6f5352fdb525662f4169a0431d2dd7a
depends:
- ucrt >=10.0.20348.0
- vc >=14.2,<15
- vc14_runtime >=14.29.30139
constrains:
- - expat 2.6.4.*
+ - expat 2.7.0.*
license: MIT
license_family: MIT
purls: []
- size: 139068
- timestamp: 1730967442102
-- conda: https://prefix.dev/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2
- sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e
- md5: d645c6d2ac96843a2bfaccd2d62b3ac3
+ size: 140896
+ timestamp: 1743432122520
+- conda: https://prefix.dev/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda
+ sha256: 764432d32db45466e87f10621db5b74363a9f847d2b8b1f9743746cd160f06ab
+ md5: ede4673863426c0883c0063d853bbd85
depends:
- - libgcc-ng >=9.4.0
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
license: MIT
license_family: MIT
purls: []
- size: 58292
- timestamp: 1636488182923
-- conda: https://prefix.dev/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2
- sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca
- md5: 086914b672be056eb70fd4285b6783b6
+ size: 57433
+ timestamp: 1743434498161
+- conda: https://prefix.dev/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda
+ sha256: 6394b1bc67c64a21a5cc73d1736d1d4193a64515152e861785c44d2cfc49edf3
+ md5: 4ca9ea59839a9ca8df84170fab4ceb41
+ depends:
+ - __osx >=10.13
license: MIT
license_family: MIT
purls: []
- size: 39020
- timestamp: 1636488587153
-- conda: https://prefix.dev/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2
- sha256: 1951ab740f80660e9bc07d2ed3aefb874d78c107264fd810f24a1a6211d4b1a5
- md5: 2c96d1b6915b408893f9472569dee135
+ size: 51216
+ timestamp: 1743434595269
+- conda: https://prefix.dev/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda
+ sha256: c6a530924a9b14e193ea9adfe92843de2a806d1b7dbfd341546ece9653129e60
+ md5: c215a60c2935b517dcda8cad4705734d
depends:
- - vc >=14.1,<15.0a0
- - vs2015_runtime >=14.16.27012
+ - __osx >=11.0
license: MIT
license_family: MIT
purls: []
- size: 42063
- timestamp: 1636489106777
-- conda: https://prefix.dev/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda
- sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569
- md5: 3cb76c3f10d3bc7f1105b2fc9db984df
+ size: 39839
+ timestamp: 1743434670405
+- conda: https://prefix.dev/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda
+ sha256: d3b0b8812eab553d3464bbd68204f007f1ebadf96ce30eb0cbc5159f72e353f5
+ md5: 85d8fa5e55ed8f93f874b3b23ed54ec6
depends:
- - _libgcc_mutex 0.1 conda_forge
+ - ucrt >=10.0.20348.0
+ - vc >=14.2,<15
+ - vc14_runtime >=14.29.30139
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 44978
+ timestamp: 1743435053850
+- conda: https://prefix.dev/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda
+ sha256: 0024f9ab34c09629621aefd8603ef77bf9d708129b0dd79029e502c39ffc2195
+ md5: ea8ac52380885ed41c1baa8f1d6d2b93
+ depends:
+ - __glibc >=2.17,<3.0.a0
- _openmp_mutex >=4.5
constrains:
- - libgomp 14.2.0 h77fa898_1
- - libgcc-ng ==14.2.0=*_1
+ - libgcc-ng ==15.1.0=*_2
+ - libgomp 15.1.0 h767d61c_2
license: GPL-3.0-only WITH GCC-exception-3.1
license_family: GPL
purls: []
- size: 848745
- timestamp: 1729027721139
-- conda: https://prefix.dev/conda-forge/win-64/libgcc-14.2.0-h1383e82_1.conda
- sha256: ef840e797714440bb10b69446d815966fff41fdac79f79c4e19c475d81cd375d
- md5: 75fdd34824997a0f9950a703b15d8ac5
+ size: 829108
+ timestamp: 1746642191935
+- conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda
+ sha256: 0ab5421a89f090f3aa33841036bb3af4ed85e1f91315b528a9d75fab9aad51ae
+ md5: ddca86c7040dd0e73b2b69bd7833d225
depends:
- - _openmp_mutex >=4.5
- - libwinpthread >=12.0.0.r4.gg4f2fc60ca
+ - libgcc 15.1.0 h767d61c_2
+ license: GPL-3.0-only WITH GCC-exception-3.1
+ license_family: GPL
+ purls: []
+ size: 34586
+ timestamp: 1746642200749
+- conda: https://prefix.dev/conda-forge/linux-64/libgcrypt-lib-1.11.1-hb9d3cd8_0.conda
+ sha256: dc9c7d7a6c0e6639deee6fde2efdc7e119e7739a6b229fa5f9049a449bae6109
+ md5: 8504a291085c9fb809b66cabd5834307
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - libgpg-error >=1.55,<2.0a0
+ license: LGPL-2.1-or-later
+ purls: []
+ size: 590353
+ timestamp: 1747060639058
+- conda: https://prefix.dev/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda
+ sha256: 914daa4f632b786827ea71b5e07cd00d25fc6e67789db2f830dc481eec660342
+ md5: f92e6e0a3c0c0c85561ef61aa59d555d
+ depends:
+ - libgfortran5 15.1.0 hcea5267_2
constrains:
- - libgcc-ng ==14.2.0=*_1
- - libgomp 14.2.0 h1383e82_1
- - msys2-conda-epoch <0.0a0
+ - libgfortran-ng ==15.1.0=*_2
license: GPL-3.0-only WITH GCC-exception-3.1
license_family: GPL
purls: []
- size: 666386
- timestamp: 1729089506769
-- conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda
- sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7
- md5: e39480b9ca41323497b05492a63bc35b
+ size: 34541
+ timestamp: 1746642233221
+- conda: https://prefix.dev/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda
+ sha256: 984040aa98dedcfbe1cf59befd73740e30d368b96cbfa17c002297e67fa5af23
+ md5: 6b27baf030f5d6603713c7e72d3f6b9a
depends:
- - libgcc 14.2.0 h77fa898_1
+ - libgfortran5 14.2.0 h58528f3_105
license: GPL-3.0-only WITH GCC-exception-3.1
license_family: GPL
purls: []
- size: 54142
- timestamp: 1729027726517
-- conda: https://prefix.dev/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda
- sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977
- md5: f1fd30127802683586f768875127a987
+ size: 155635
+ timestamp: 1743911593527
+- conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda
+ sha256: 6ca48762c330d1cdbdaa450f197ccc16ffb7181af50d112b4ccf390223d916a1
+ md5: ad35937216e65cfeecd828979ee5e9e6
depends:
- - libgfortran5 14.2.0 hd5240d6_1
- constrains:
- - libgfortran-ng ==14.2.0=*_1
+ - libgfortran5 14.2.0 h2c44a93_105
license: GPL-3.0-only WITH GCC-exception-3.1
license_family: GPL
purls: []
- size: 53997
- timestamp: 1729027752995
-- conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda
- sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b
- md5: 4a55d9e169114b2b90d3ec4604cd7bbf
+ size: 155474
+ timestamp: 1743913530958
+- conda: https://prefix.dev/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda
+ sha256: be23750f3ca1a5cb3ada858c4f633effe777487d1ea35fddca04c0965c073350
+ md5: 01de444988ed960031dbe84cf4f9b1fc
depends:
- - libgfortran5 13.2.0 hf226fd6_3
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=15.1.0
+ constrains:
+ - libgfortran 15.1.0
license: GPL-3.0-only WITH GCC-exception-3.1
license_family: GPL
purls: []
- size: 110233
- timestamp: 1707330749033
-- conda: https://prefix.dev/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda
- sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d
- md5: 9822b874ea29af082e5d36098d25427d
+ size: 1569986
+ timestamp: 1746642212331
+- conda: https://prefix.dev/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda
+ sha256: 02fc48106e1ca65cf7de15f58ec567f866f6e8e9dcced157d0cff89f0768bb59
+ md5: 94560312ff3c78225bed62ab59854c31
depends:
- - libgcc >=14.2.0
+ - llvm-openmp >=8.0.0
constrains:
- libgfortran 14.2.0
license: GPL-3.0-only WITH GCC-exception-3.1
license_family: GPL
purls: []
- size: 1462645
- timestamp: 1729027735353
-- conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda
- sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a
- md5: 66ac81d54e95c534ae488726c1f698ea
+ size: 1224385
+ timestamp: 1743911552203
+- conda: https://prefix.dev/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda
+ sha256: de09987e1080f71e2285deec45ccb949c2620a672b375029534fbb878e471b22
+ md5: 06f35a3b1479ec55036e1c9872f97f2c
depends:
- llvm-openmp >=8.0.0
constrains:
- - libgfortran 5.0.0 13_2_0_*_3
+ - libgfortran 14.2.0
license: GPL-3.0-only WITH GCC-exception-3.1
license_family: GPL
purls: []
- size: 997381
- timestamp: 1707330687590
-- conda: https://prefix.dev/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda
- sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63
- md5: cc3573974587f12dda90d96e3e55a702
+ size: 806283
+ timestamp: 1743913488925
+- conda: https://prefix.dev/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda
+ sha256: 05fff3dc7e80579bc28de13b511baec281c4343d703c406aefd54389959154fb
+ md5: fbe7d535ff9d3a168c148e07358cd5b1
depends:
- - _libgcc_mutex 0.1 conda_forge
+ - __glibc >=2.17,<3.0.a0
license: GPL-3.0-only WITH GCC-exception-3.1
license_family: GPL
purls: []
- size: 460992
- timestamp: 1729027639220
-- conda: https://prefix.dev/conda-forge/win-64/libgomp-14.2.0-h1383e82_1.conda
- sha256: d8739b834608f35775209b032f0c2be752ef187863c7ec847afcebe2f681be4e
- md5: 9e2d4d1214df6f21cba12f6eff4972f9
+ size: 452635
+ timestamp: 1746642113092
+- conda: https://prefix.dev/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda
+ sha256: 4316316097ce5fde2608b6fccd18709cf647dce52e230f5ac66f5c524dfad791
+ md5: 5fbacaa9b41e294a6966602205b99747
depends:
- libwinpthread >=12.0.0.r4.gg4f2fc60ca
constrains:
@@ -5901,183 +6822,84 @@ packages:
license: GPL-3.0-only WITH GCC-exception-3.1
license_family: GPL
purls: []
- size: 524249
- timestamp: 1729089441747
-- conda: https://prefix.dev/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda
- sha256: ae48ee93e2c226bf682f1e389c2fd51ae7bf77c2ce4b3aee069764f4be1c63f2
- md5: 61829a8dd5f4e2327e707572065bae41
+ size: 540903
+ timestamp: 1746656563815
+- conda: https://prefix.dev/conda-forge/linux-64/libgpg-error-1.55-h3f2d84a_0.conda
+ sha256: 697334de4786a1067ea86853e520c64dd72b11a05137f5b318d8a444007b5e60
+ md5: 2bd47db5807daade8500ed7ca4c512a4
depends:
- - __glibc >=2.17,<3.0.a0
- - libabseil * cxx17*
- - libabseil >=20240722.0,<20240723.0a0
- - libcurl >=8.11.1,<9.0a0
- - libgcc >=13
- - libgrpc >=1.67.1,<1.68.0a0
- - libprotobuf >=5.28.3,<5.28.4.0a0
- libstdcxx >=13
- - openssl >=3.4.0,<4.0a0
- constrains:
- - libgoogle-cloud 2.33.0 *_1
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 1254656
- timestamp: 1735648569457
-- conda: https://prefix.dev/conda-forge/osx-arm64/libgoogle-cloud-2.33.0-hdbe95d5_1.conda
- sha256: ce95aca02451694a4154c7770b6addf4fb859abf17912de6ec947da8469a56ce
- md5: 91de1fbab8610974c0094c266bc63435
- depends:
- - __osx >=11.0
- - libabseil * cxx17*
- - libabseil >=20240722.0,<20240723.0a0
- - libcurl >=8.11.1,<9.0a0
- - libcxx >=18
- - libgrpc >=1.67.1,<1.68.0a0
- - libprotobuf >=5.28.3,<5.28.4.0a0
- - openssl >=3.4.0,<4.0a0
- constrains:
- - libgoogle-cloud 2.33.0 *_1
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 877594
- timestamp: 1735648230965
-- conda: https://prefix.dev/conda-forge/win-64/libgoogle-cloud-2.33.0-h95c5cb2_1.conda
- sha256: ff10a5e71ae42c2e29849468b2fe6785bc9bcb1e61db0a40158c6638c28fee90
- md5: 3c63396fe52bd0649c72fec64b92f641
- depends:
- - libabseil * cxx17*
- - libabseil >=20240722.0,<20240723.0a0
- - libcurl >=8.11.1,<9.0a0
- - libgrpc >=1.67.1,<1.68.0a0
- - libprotobuf >=5.28.3,<5.28.4.0a0
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- constrains:
- - libgoogle-cloud 2.33.0 *_1
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 14439
- timestamp: 1735649066152
-- conda: https://prefix.dev/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda
- sha256: 41022523320ca8633a6c615710823e596efadb50f06d724e1a0c81e27994f257
- md5: b0cfb5044685a7a9fa43ae669124f0a0
- depends:
+ - libgcc >=13
- __glibc >=2.17,<3.0.a0
- - libabseil
- - libcrc32c >=1.1.2,<1.2.0a0
- - libcurl
- libgcc >=13
- - libgoogle-cloud 2.33.0 h2b5623c_1
- - libstdcxx >=13
- - libzlib >=1.3.1,<2.0a0
- - openssl
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 784357
- timestamp: 1735648759177
-- conda: https://prefix.dev/conda-forge/osx-arm64/libgoogle-cloud-storage-2.33.0-h7081f7f_1.conda
- sha256: c0524a22064bc17f5c037da09ba54cc9e767741ef645178e499750c44bec2531
- md5: af8e51382464d4cc2d0054977c40a732
- depends:
- - __osx >=11.0
- - libabseil
- - libcrc32c >=1.1.2,<1.2.0a0
- - libcurl
- - libcxx >=18
- - libgoogle-cloud 2.33.0 hdbe95d5_1
- - libzlib >=1.3.1,<2.0a0
- - openssl
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 526963
- timestamp: 1735649222088
-- conda: https://prefix.dev/conda-forge/win-64/libgoogle-cloud-storage-2.33.0-he5eb982_1.conda
- sha256: 76a916fba00a4bb395b85e7c2563d5ba325b04febb4f0e0066884ff39c54ec62
- md5: 6ae574bba5f1294487936e5d5f0f4c11
- depends:
- - libabseil
- - libcrc32c >=1.1.2,<1.2.0a0
- - libcurl
- - libgoogle-cloud 2.33.0 h95c5cb2_1
- - libzlib >=1.3.1,<2.0a0
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- license: Apache-2.0
- license_family: Apache
+ license: LGPL-2.1-only
purls: []
- size: 14336
- timestamp: 1735649423845
-- conda: https://prefix.dev/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda
- sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e
- md5: 0c6497a760b99a926c7c12b74951a39c
+ size: 312184
+ timestamp: 1745575272035
+- conda: https://prefix.dev/conda-forge/linux-64/libgrpc-1.71.0-h8e591d7_1.conda
+ sha256: 37267300b25f292a6024d7fd9331085fe4943897940263c3a41d6493283b2a18
+ md5: c3cfd72cbb14113abee7bbd86f44ad69
depends:
- __glibc >=2.17,<3.0.a0
- - c-ares >=1.34.4,<2.0a0
+ - c-ares >=1.34.5,<2.0a0
- libabseil * cxx17*
- - libabseil >=20240722.0,<20240723.0a0
+ - libabseil >=20250127.1,<20250128.0a0
- libgcc >=13
- - libprotobuf >=5.28.3,<5.28.4.0a0
+ - libprotobuf >=5.29.3,<5.29.4.0a0
- libre2-11 >=2024.7.2
- libstdcxx >=13
- libzlib >=1.3.1,<2.0a0
- - openssl >=3.4.0,<4.0a0
+ - openssl >=3.5.0,<4.0a0
- re2
constrains:
- - grpc-cpp =1.67.1
+ - grpc-cpp =1.71.0
license: Apache-2.0
license_family: APACHE
purls: []
- size: 7792251
- timestamp: 1735584856826
-- conda: https://prefix.dev/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda
- sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6
- md5: 8a3cba079d6ac985e7d73c76a678fbb4
+ size: 7920187
+ timestamp: 1745229332239
+- conda: https://prefix.dev/conda-forge/osx-64/libgrpc-1.71.0-h7d722e6_1.conda
+ sha256: 304649f99f6cde43cf4fb95cc2892b5955aa31bf3d8b74f707a8ca1347c06b88
+ md5: 460e0c0ac50927c2974e41aab9272c6b
depends:
- - __osx >=11.0
- - c-ares >=1.34.4,<2.0a0
+ - __osx >=10.14
+ - c-ares >=1.34.5,<2.0a0
- libabseil * cxx17*
- - libabseil >=20240722.0,<20240723.0a0
+ - libabseil >=20250127.1,<20250128.0a0
- libcxx >=18
- - libprotobuf >=5.28.3,<5.28.4.0a0
+ - libprotobuf >=5.29.3,<5.29.4.0a0
- libre2-11 >=2024.7.2
- libzlib >=1.3.1,<2.0a0
- - openssl >=3.4.0,<4.0a0
+ - openssl >=3.5.0,<4.0a0
- re2
constrains:
- - grpc-cpp =1.67.1
+ - grpc-cpp =1.71.0
license: Apache-2.0
license_family: APACHE
purls: []
- size: 5311706
- timestamp: 1735585137716
-- conda: https://prefix.dev/conda-forge/win-64/libgrpc-1.67.1-h0ac93cb_1.conda
- sha256: 4bf4b455fc8c56ac84001d394f93465c0cd42e78d8053a7c99668bba681b0973
- md5: d41dfb3f07ea2f3687e9a2d7db31c506
+ size: 5510897
+ timestamp: 1745201273719
+- conda: https://prefix.dev/conda-forge/osx-arm64/libgrpc-1.71.0-h857da87_1.conda
+ sha256: 082668830025c2a2842165724b44d4f742688353932a6705cd61aa4ecb9aa173
+ md5: 59fe16787c94d3dc92f2dfa533de97c6
depends:
- - c-ares >=1.34.4,<2.0a0
+ - __osx >=11.0
+ - c-ares >=1.34.5,<2.0a0
- libabseil * cxx17*
- - libabseil >=20240722.0,<20240723.0a0
- - libprotobuf >=5.28.3,<5.28.4.0a0
+ - libabseil >=20250127.1,<20250128.0a0
+ - libcxx >=18
+ - libprotobuf >=5.29.3,<5.29.4.0a0
- libre2-11 >=2024.7.2
- libzlib >=1.3.1,<2.0a0
- - openssl >=3.4.0,<4.0a0
+ - openssl >=3.5.0,<4.0a0
- re2
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
constrains:
- - grpc-cpp =1.67.1
+ - grpc-cpp =1.71.0
license: Apache-2.0
license_family: APACHE
purls: []
- size: 17282979
- timestamp: 1735632501670
+ size: 4908484
+ timestamp: 1745191611284
- conda: https://prefix.dev/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda
sha256: d14c016482e1409ae1c50109a9ff933460a50940d2682e745ab1c172b5282a69
md5: 804ca9e91bcaea0824a341d55b1684f2
@@ -6085,18 +6907,30 @@ packages:
- __glibc >=2.17,<3.0.a0
- libgcc >=13
- libstdcxx >=13
- - libxml2 >=2.13.4,<3.0a0
+ - libxml2 >=2.13.4,<2.14.0a0
license: BSD-3-Clause
license_family: BSD
purls: []
size: 2423200
timestamp: 1731374922090
+- conda: https://prefix.dev/conda-forge/osx-64/libhwloc-2.11.2-default_h4cdd727_1001.conda
+ sha256: 989917281abf762b7e7a2b5968db2b6b0e89f46e704042ab8ec61a66951e0e0b
+ md5: 52bbb10ac083c563d00df035c94f9a63
+ depends:
+ - __osx >=10.13
+ - libcxx >=18
+ - libxml2 >=2.13.4,<2.14.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 2359326
+ timestamp: 1731375067281
- conda: https://prefix.dev/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda
sha256: 850e255997f538d5fb6ed651321141155a33bb781d43d326fc4ff62114dd2842
md5: b87a0ac5ab6495d8225db5dc72dd21cd
depends:
- libwinpthread >=12.0.0.r4.gg4f2fc60ca
- - libxml2 >=2.13.4,<3.0a0
+ - libxml2 >=2.13.4,<2.14.0a0
- ucrt >=10.0.20348.0
- vc >=14.2,<15
- vc14_runtime >=14.29.30139
@@ -6105,202 +6939,296 @@ packages:
purls: []
size: 2390021
timestamp: 1731375651179
-- conda: https://prefix.dev/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda
- sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9
- md5: d66573916ffcf376178462f1b61c941e
+- conda: https://prefix.dev/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda
+ sha256: 18a4afe14f731bfb9cf388659994263904d20111e42f841e9eea1bb6f91f4ab4
+ md5: e796ff8ddc598affdf7c173d6145f087
depends:
- - libgcc-ng >=12
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
license: LGPL-2.1-only
purls: []
- size: 705775
- timestamp: 1702682170569
-- conda: https://prefix.dev/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda
- sha256: bc7de5097b97bcafcf7deaaed505f7ce02f648aac8eccc0d5a47cc599a1d0304
- md5: 69bda57310071cf6d2b86caf11573d2d
+ size: 713084
+ timestamp: 1740128065462
+- conda: https://prefix.dev/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda
+ sha256: c2a9c65a245c7bcb8c17c94dd716dad2d42b7c98e0c17cc5553a5c60242c4dda
+ md5: 6283140d7b2b55b6b095af939b71b13f
+ depends:
+ - __osx >=10.13
license: LGPL-2.1-only
purls: []
- size: 676469
- timestamp: 1702682458114
-- conda: https://prefix.dev/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda
- sha256: 5f844dd19b046d43174ad80c6ea75b5d504020e3b63cfbc4ace97b8730d35c7b
- md5: e1eb10b1cca179f2baa3601e4efc8712
+ size: 669052
+ timestamp: 1740128415026
+- conda: https://prefix.dev/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda
+ sha256: ea5ed2b362b6dbc4ba7188eb4eaf576146e3dfc6f4395e9f0db76ad77465f786
+ md5: 21fc5dba2cbcd8e5e26ff976a312122c
depends:
- ucrt >=10.0.20348.0
- vc >=14.2,<15
- vc14_runtime >=14.29.30139
license: LGPL-2.1-only
purls: []
- size: 636146
- timestamp: 1702682547199
-- conda: https://prefix.dev/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda
- sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f
- md5: ea25936bb4080d843790b586850f82b8
+ size: 638142
+ timestamp: 1740128665984
+- conda: https://prefix.dev/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda
+ build_number: 31
+ sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3
+ md5: 452b98eafe050ecff932f0ec832dd03f
depends:
- - libgcc-ng >=12
- constrains:
- - jpeg <0.0.0a
- license: IJG AND BSD-3-Clause AND Zlib
- purls: []
- size: 618575
- timestamp: 1694474974816
-- conda: https://prefix.dev/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda
- sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993
- md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1
+ - libblas 3.9.0 31_h59b9bed_openblas
constrains:
- - jpeg <0.0.0a
- license: IJG AND BSD-3-Clause AND Zlib
+ - libcblas =3.9.0=31*_openblas
+ - liblapacke =3.9.0=31*_openblas
+ - blas =2.131=openblas
+ license: BSD-3-Clause
+ license_family: BSD
purls: []
- size: 547541
- timestamp: 1694475104253
-- conda: https://prefix.dev/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda
- sha256: 4e7808e3098b4b4ed7e287f63bb24f9045cc4d95bfd39f0db870fc2837d74dff
- md5: 3f1b948619c45b1ca714d60c7389092c
+ size: 16790
+ timestamp: 1740087997375
+- conda: https://prefix.dev/conda-forge/linux-64/liblapack-3.9.0-31_hc41d3b0_mkl.conda
+ build_number: 31
+ sha256: a2d20845d916ac8fba09376cd791136a9b4547afb2131bc315178adfc87bb4ca
+ md5: 10d012ddd7cc1c7ff9093d4974a34e53
depends:
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
+ - libblas 3.9.0 31_hfdb39a5_mkl
constrains:
- - jpeg <0.0.0a
- license: IJG AND BSD-3-Clause AND Zlib
+ - liblapacke =3.9.0=31*_mkl
+ - blas =2.131=mkl
+ - libcblas =3.9.0=31*_mkl
+ track_features:
+ - blas_mkl
+ license: BSD-3-Clause
+ license_family: BSD
purls: []
- size: 822966
- timestamp: 1694475223854
-- conda: https://prefix.dev/conda-forge/linux-64/liblapack-3.9.0-26_linux64_mkl.conda
- build_number: 26
- sha256: 4ab8f00c325e1aacb6edc881b39c7c294adafc9d485cdde82979d1617fcd1e6f
- md5: 84112111a50db59ca64153e0054fa73e
+ size: 16760
+ timestamp: 1740087736615
+- conda: https://prefix.dev/conda-forge/osx-64/liblapack-3.9.0-20_osx64_mkl.conda
+ build_number: 20
+ sha256: fdccac604746f9620fefaee313707aa2f500f73e51f8e3a4b690d5d4c90ce3dc
+ md5: 58f08e12ad487fac4a08f90ff0b87aec
depends:
- - libblas 3.9.0 26_linux64_mkl
+ - libblas 3.9.0 20_osx64_mkl
constrains:
- blas * mkl
- - libcblas 3.9.0 26_linux64_mkl
- - liblapacke 3.9.0 26_linux64_mkl
+ - libcblas 3.9.0 20_osx64_mkl
+ - liblapacke 3.9.0 20_osx64_mkl
track_features:
- blas_mkl
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 16302
- timestamp: 1734432554916
-- conda: https://prefix.dev/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda
- build_number: 26
- sha256: b76458c36331376911e0f98fa68109e02f4d5e5ebfffa79587ac69cef748bba1
- md5: 3792604c43695d6a273bc5faaac47d48
+ size: 14699
+ timestamp: 1700568690313
+- conda: https://prefix.dev/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda
+ build_number: 31
+ sha256: 2d5642b07b56037ab735e5d64309dd905d5acb207a1b2ab1692f811b55a64825
+ md5: d0f3bc17e0acef003cb9d9195a205888
depends:
- - libblas 3.9.0 26_linux64_openblas
+ - libblas 3.9.0 31_h7f60823_openblas
constrains:
- - libcblas 3.9.0 26_linux64_openblas
- - liblapacke 3.9.0 26_linux64_openblas
- - blas * openblas
+ - libcblas =3.9.0=31*_openblas
+ - blas =2.131=openblas
+ - liblapacke =3.9.0=31*_openblas
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 16338
- timestamp: 1734432576650
-- conda: https://prefix.dev/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda
- build_number: 26
- sha256: dd6d9a21e672aee4332f019c8229ce70cf5eaf6c2f4cbd1443b105fb66c00dc5
- md5: cebad79038a75cfd28fa90d147a2d34d
+ size: 17033
+ timestamp: 1740087965941
+- conda: https://prefix.dev/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda
+ build_number: 31
+ sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5
+ md5: ff57a55a2cbce171ef5707fb463caf19
depends:
- - libblas 3.9.0 26_osxarm64_openblas
+ - libblas 3.9.0 31_h10e41b3_openblas
constrains:
- - liblapacke 3.9.0 26_osxarm64_openblas
- - libcblas 3.9.0 26_osxarm64_openblas
- - blas * openblas
+ - liblapacke =3.9.0=31*_openblas
+ - libcblas =3.9.0=31*_openblas
+ - blas =2.131=openblas
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 16624
- timestamp: 1734433068120
-- conda: https://prefix.dev/conda-forge/win-64/liblapack-3.9.0-26_win64_mkl.conda
- build_number: 26
- sha256: 6701bd162d105531b75d05acf82b4ad9fbc5a24ffbccf8c66efa9e72c386b33c
- md5: 0a717f5fda7279b77bcce671b324408a
+ size: 17033
+ timestamp: 1740088134988
+- conda: https://prefix.dev/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda
+ build_number: 31
+ sha256: 9415e807aa6f8968322bbd756aab8f487379d809c74266d37c697b8d85c534ad
+ md5: 40b47ee720a185289760960fc6185750
depends:
- - libblas 3.9.0 26_win64_mkl
+ - libblas 3.9.0 31_h641d27c_mkl
constrains:
- - liblapacke 3.9.0 26_win64_mkl
- - blas * mkl
- - libcblas 3.9.0 26_win64_mkl
+ - libcblas =3.9.0=31*_mkl
+ - blas =2.131=mkl
+ - liblapacke =3.9.0=31*_mkl
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 3732160
- timestamp: 1734432822278
-- conda: https://prefix.dev/conda-forge/linux-64/libllvm14-14.0.6-hcd5def8_4.conda
- sha256: 225cc7c3b20ac1db1bdb37fa18c95bf8aecef4388e984ab2f7540a9f4382106a
- md5: 73301c133ded2bf71906aa2104edae8b
- depends:
- - libgcc-ng >=12
- - libstdcxx-ng >=12
- - libzlib >=1.2.13,<2.0.0a0
- license: Apache-2.0 WITH LLVM-exception
- license_family: Apache
- purls: []
- size: 31484415
- timestamp: 1690557554081
-- conda: https://prefix.dev/conda-forge/osx-arm64/libllvm14-14.0.6-hd1a9a77_4.conda
- sha256: 6f603914fe8633a615f0d2f1383978eb279eeb552079a78449c9fbb43f22a349
- md5: 9f3dce5d26ea56a9000cd74c034582bd
+ size: 3732648
+ timestamp: 1740088548986
+- conda: https://prefix.dev/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda
+ sha256: eeff241bddc8f1b87567dd6507c9f441f7f472c27f0860a07628260c000ef27c
+ md5: a76fd702c93cd2dfd89eff30a5fd45a8
depends:
- - libcxx >=15
- - libzlib >=1.2.13,<2.0.0a0
- license: Apache-2.0 WITH LLVM-exception
- license_family: Apache
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ constrains:
+ - xz 5.8.1.*
+ - xz ==5.8.1=*_1
+ license: 0BSD
purls: []
- size: 20571387
- timestamp: 1690559110016
-- conda: https://prefix.dev/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda
- sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6
- md5: 2ecf2f1c7e4e21fcfe6423a51a992d84
+ size: 112845
+ timestamp: 1746531470399
+- conda: https://prefix.dev/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda
+ sha256: f2591c0069447bbe28d4d696b7fcb0c5bd0b4ac582769b89addbcf26fb3430d8
+ md5: 1a580f7796c7bf6393fddb8bbbde58dc
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=13
+ constrains:
+ - xz 5.8.1.*
+ license: 0BSD
+ purls: []
+ size: 112894
+ timestamp: 1749230047870
+- conda: https://prefix.dev/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda
+ sha256: 20a4c5291f3e338548013623bb1dc8ee2fba5dbac8f77acaddd730ed2a7d29b6
+ md5: f87e8821e0e38a4140a7ed4f52530053
+ depends:
+ - __osx >=10.13
+ constrains:
+ - xz 5.8.1.*
+ - xz ==5.8.1=*_1
+ license: 0BSD
+ purls: []
+ size: 104814
+ timestamp: 1746531577001
+- conda: https://prefix.dev/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda
+ sha256: 7e22fd1bdb8bf4c2be93de2d4e718db5c548aa082af47a7430eb23192de6bb36
+ md5: 8468beea04b9065b9807fc8b9cdc5894
+ depends:
+ - __osx >=10.13
+ constrains:
+ - xz 5.8.1.*
+ license: 0BSD
+ purls: []
+ size: 104826
+ timestamp: 1749230155443
+- conda: https://prefix.dev/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda
+ sha256: 5ab62c179229640c34491a7de806ad4ab7bec47ea2b5fc2136e3b8cf5ef26a57
+ md5: 4e8ef3d79c97c9021b34d682c24c2044
+ depends:
+ - __osx >=11.0
+ constrains:
+ - xz 5.8.1.*
+ - xz ==5.8.1=*_1
license: 0BSD
purls: []
- size: 111132
- timestamp: 1733407410083
-- conda: https://prefix.dev/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda
- sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1
- md5: b2553114a7f5e20ccd02378a77d836aa
+ size: 92218
+ timestamp: 1746531818330
+- conda: https://prefix.dev/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda
+ sha256: 0cb92a9e026e7bd4842f410a5c5c665c89b2eb97794ffddba519a626b8ce7285
+ md5: d6df911d4564d77c4374b02552cb17d1
depends:
- __osx >=11.0
+ constrains:
+ - xz 5.8.1.*
+ license: 0BSD
+ purls: []
+ size: 92286
+ timestamp: 1749230283517
+- conda: https://prefix.dev/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda
+ sha256: adbf6c7bde70536ada734a81b8b5aa23654f2b95445204404622e0cc40e921a0
+ md5: 14a1042c163181e143a7522dfb8ad6ab
+ depends:
+ - ucrt >=10.0.20348.0
+ - vc >=14.2,<15
+ - vc14_runtime >=14.29.30139
+ constrains:
+ - xz 5.8.1.*
+ - xz ==5.8.1=*_1
license: 0BSD
purls: []
- size: 99129
- timestamp: 1733407496073
-- conda: https://prefix.dev/conda-forge/win-64/liblzma-5.6.3-h2466b09_1.conda
- sha256: 24d04bd55adfa44c421c99ce169df38cb1ad2bba5f43151bc847fc802496a1fa
- md5: 015b9c0bd1eef60729ab577a38aaf0b5
+ size: 104699
+ timestamp: 1746531718026
+- conda: https://prefix.dev/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda
+ sha256: 55764956eb9179b98de7cc0e55696f2eff8f7b83fc3ebff5e696ca358bca28cc
+ md5: c15148b2e18da456f5108ccb5e411446
depends:
- ucrt >=10.0.20348.0
- vc >=14.2,<15
- vc14_runtime >=14.29.30139
+ constrains:
+ - xz 5.8.1.*
license: 0BSD
purls: []
- size: 104332
- timestamp: 1733407872569
-- conda: https://prefix.dev/conda-forge/linux-64/libmpdec-4.0.0-h4bc722e_0.conda
- sha256: d02d1d3304ecaf5c728e515eb7416517a0b118200cd5eacbe829c432d1664070
- md5: aeb98fdeb2e8f25d43ef71fbacbeec80
+ size: 104935
+ timestamp: 1749230611612
+- conda: https://prefix.dev/conda-forge/linux-64/libmagma-2.9.0-h19665d7_1.conda
+ sha256: 13d50a4f7da02e6acce4b5b6df82072c0f447a2c5ba1f4a3190dfec3a9174965
+ md5: 38b3447782263c96b0c0a7b92c97575e
depends:
- __glibc >=2.17,<3.0.a0
- - libgcc-ng >=12
+ - _openmp_mutex >=4.5
+ - cuda-cudart >=12.6.77,<13.0a0
+ - cuda-version >=12.6,<13
+ - libblas >=3.9.0,<4.0a0
+ - libcublas >=12.6.4.1,<13.0a0
+ - libcusparse >=12.5.4.2,<13.0a0
+ - libgcc >=13
+ - liblapack >=3.9.0,<4.0a0
+ - libstdcxx >=13
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 371275523
+ timestamp: 1739994057566
+- conda: https://prefix.dev/conda-forge/win-64/libmagma-2.9.0-he50f1ff_0.conda
+ sha256: 60d6ac89e236cdf97646e00149e730234129b3d2163bd4557fafb12364cb462f
+ md5: 0211327857a2b13f0562de396f1e5d21
+ depends:
+ - cuda-cudart >=12.6.77,<13.0a0
+ - cuda-version >=12.6,<13
+ - libblas >=3.9.0,<4.0a0
+ - libcublas >=12.6.4.1,<13.0a0
+ - libcusparse >=12.5.4.2,<13.0a0
+ - liblapack >=3.9.0,<4.0a0
+ - ucrt >=10.0.20348.0
+ - vc >=14.2,<15
+ - vc14_runtime >=14.29.30139
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 272011663
+ timestamp: 1739907162922
+- conda: https://prefix.dev/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda
+ sha256: 3aa92d4074d4063f2a162cd8ecb45dccac93e543e565c01a787e16a43501f7ee
+ md5: c7e925f37e3b40d893459e625f6a53f1
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ license: BSD-2-Clause
+ license_family: BSD
+ purls: []
+ size: 91183
+ timestamp: 1748393666725
+- conda: https://prefix.dev/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda
+ sha256: 98299c73c7a93cd4f5ff8bb7f43cd80389f08b5a27a296d806bdef7841cc9b9e
+ md5: 18b81186a6adb43f000ad19ed7b70381
+ depends:
+ - __osx >=10.13
license: BSD-2-Clause
license_family: BSD
purls: []
- size: 89991
- timestamp: 1723817448345
-- conda: https://prefix.dev/conda-forge/osx-arm64/libmpdec-4.0.0-h99b78c6_0.conda
- sha256: f7917de9117d3a5fe12a39e185c7ce424f8d5010a6f97b4333e8a1dcb2889d16
- md5: 7476305c35dd9acef48da8f754eedb40
+ size: 77667
+ timestamp: 1748393757154
+- conda: https://prefix.dev/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda
+ sha256: 0a1875fc1642324ebd6c4ac864604f3f18f57fbcf558a8264f6ced028a3c75b2
+ md5: 85ccccb47823dd9f7a99d2c7f530342f
depends:
- __osx >=11.0
license: BSD-2-Clause
license_family: BSD
purls: []
- size: 69263
- timestamp: 1723817629767
+ size: 71829
+ timestamp: 1748393749336
- conda: https://prefix.dev/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda
sha256: fc529fc82c7caf51202cc5cec5bb1c2e8d90edbac6d0a4602c966366efe3c7bf
md5: 74860100b2029e2523cf480804c76b9b
@@ -6313,39 +7241,17 @@ packages:
purls: []
size: 88657
timestamp: 1723861474602
-- conda: https://prefix.dev/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda
- sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975
- md5: 19e57602824042dfd0446292ef90488b
+- conda: https://prefix.dev/conda-forge/linux-64/libnl-3.11.0-hb9d3cd8_0.conda
+ sha256: ba7c5d294e3d80f08ac5a39564217702d1a752e352e486210faff794ac5001b4
+ md5: db63358239cbe1ff86242406d440e44a
depends:
- __glibc >=2.17,<3.0.a0
- - c-ares >=1.32.3,<2.0a0
- - libev >=4.33,<4.34.0a0
- - libev >=4.33,<5.0a0
- libgcc >=13
- - libstdcxx >=13
- - libzlib >=1.3.1,<2.0a0
- - openssl >=3.3.2,<4.0a0
- license: MIT
- license_family: MIT
- purls: []
- size: 647599
- timestamp: 1729571887612
-- conda: https://prefix.dev/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda
- sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f
- md5: 3408c02539cee5f1141f9f11450b6a51
- depends:
- - __osx >=11.0
- - c-ares >=1.34.2,<2.0a0
- - libcxx >=17
- - libev >=4.33,<4.34.0a0
- - libev >=4.33,<5.0a0
- - libzlib >=1.3.1,<2.0a0
- - openssl >=3.3.2,<4.0a0
- license: MIT
- license_family: MIT
+ license: LGPL-2.1-or-later
+ license_family: LGPL
purls: []
- size: 566719
- timestamp: 1729572385640
+ size: 741323
+ timestamp: 1731846827427
- conda: https://prefix.dev/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda
sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6
md5: 30fd6e37fe21f86f4bd26d6ee73eeec7
@@ -6356,175 +7262,124 @@ packages:
purls: []
size: 33408
timestamp: 1697359010159
-- conda: https://prefix.dev/conda-forge/linux-64/libnvjitlink-12.6.85-hbd13f7d_0.conda
- sha256: f8af058f7ba2e436f6bbeaabe273a6e88d6193028572769c8402bbee2bdfa95d
- md5: dca2d62b3812922e6976f76c0a401918
+- conda: https://prefix.dev/conda-forge/linux-64/libnvjitlink-12.9.41-h5888daf_0.conda
+ sha256: 363335da59cb71e6576087c98b13e7e13289b8c05b140b09de2e5e9bd06e675b
+ md5: fa47324d7e1e78492c2f17f0ce67e906
depends:
- __glibc >=2.17,<3.0.a0
- - cuda-version >=12,<12.7.0a0
+ - cuda-version >=12,<12.10.0a0
- libgcc >=13
- libstdcxx >=13
license: LicenseRef-NVIDIA-End-User-License-Agreement
purls: []
- size: 15590703
- timestamp: 1732133239776
-- conda: https://prefix.dev/conda-forge/win-64/libnvjitlink-12.6.85-he0c23c2_0.conda
- sha256: fd1646332a5aebb43b0e9ae786c57097e0a3c0201cc249983f155530228b1494
- md5: 5066f88e4f76924ce7bd8362dad10c18
+ size: 30491008
+ timestamp: 1746190924588
+- conda: https://prefix.dev/conda-forge/win-64/libnvjitlink-12.9.41-he0c23c2_0.conda
+ sha256: 931701772a6fea462951581e220dda20ffee026f49ad07bb57b7b672de449776
+ md5: 3df78fae3cd40acb9a0e9db8031c5568
depends:
- - cuda-version >=12,<12.7.0a0
+ - cuda-version >=12,<12.10.0a0
- ucrt >=10.0.20348.0
- vc >=14.2,<15
- vc14_runtime >=14.29.30139
license: LicenseRef-NVIDIA-End-User-License-Agreement
purls: []
- size: 13122932
- timestamp: 1732133470361
-- conda: https://prefix.dev/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda
- sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe
- md5: 62857b389e42b36b686331bec0922050
+ size: 27352070
+ timestamp: 1746191228948
+- conda: https://prefix.dev/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda
+ sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4
+ md5: 0a4d0252248ef9a0f88f2ba8b8a08e12
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=14
- libgfortran
- libgfortran5 >=14.2.0
constrains:
- - openblas >=0.3.28,<0.3.29.0a0
+ - openblas >=0.3.29,<0.3.30.0a0
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 5578513
- timestamp: 1730772671118
-- conda: https://prefix.dev/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda
- sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373
- md5: 40803a48d947c8639da6704e9a44d3ce
+ size: 5919288
+ timestamp: 1739825731827
+- conda: https://prefix.dev/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda
+ sha256: fbb413923f91cb80a4d23725816499b921dd87454121efcde107abc7772c937a
+ md5: a30dc52b2a8b6300f17eaabd2f940d41
depends:
- - __osx >=11.0
- - libgfortran 5.*
+ - __osx >=10.13
+ - libgfortran >=5
- libgfortran5 >=13.2.0
- llvm-openmp >=18.1.8
constrains:
- - openblas >=0.3.28,<0.3.29.0a0
+ - openblas >=0.3.29,<0.3.30.0a0
license: BSD-3-Clause
- license_family: BSD
- purls: []
- size: 4165774
- timestamp: 1730772154295
-- conda: https://prefix.dev/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_8_cpu.conda
- build_number: 8
- sha256: 2c6d900d4e9dd3c4000886d76d3f8a099e904667ebc6935b49428e6e9b766481
- md5: a9fa0ef309406c84b46db3a28efd761e
- depends:
- - __glibc >=2.17,<3.0.a0
- - libarrow 18.1.0 h9d9f30d_8_cpu
- - libgcc >=13
- - libstdcxx >=13
- - libthrift >=0.21.0,<0.21.1.0a0
- - openssl >=3.4.0,<4.0a0
- license: Apache-2.0
- license_family: APACHE
- purls: []
- size: 1207011
- timestamp: 1736610684584
-- conda: https://prefix.dev/conda-forge/osx-arm64/libparquet-18.1.0-h636d7b7_8_cpu.conda
- build_number: 8
- sha256: 4991519ef4264abc7160e9faaf8ff01d4731bf1497076bef1895d6c366f796eb
- md5: b8bd275a49877fdec62ff787818a869d
- depends:
- - __osx >=11.0
- - libarrow 18.1.0 hf3eb8e5_8_cpu
- - libcxx >=18
- - libthrift >=0.21.0,<0.21.1.0a0
- - openssl >=3.4.0,<4.0a0
- license: Apache-2.0
- license_family: APACHE
- purls: []
- size: 873593
- timestamp: 1736609701839
-- conda: https://prefix.dev/conda-forge/win-64/libparquet-18.1.0-ha850022_8_cpu.conda
- build_number: 8
- sha256: 3292cd6efa06a20362fdb212e64783f8c8df4fe4687ed01a4c4ad3f8843cbb92
- md5: fc609e4314b53f0980a6f09862bc92a2
- depends:
- - libarrow 18.1.0 hb928929_8_cpu
- - libthrift >=0.21.0,<0.21.1.0a0
- - openssl >=3.4.0,<4.0a0
- - ucrt >=10.0.20348.0
- - vc >=14.3,<15
- - vc14_runtime >=14.42.34433
- license: Apache-2.0
- license_family: APACHE
- purls: []
- size: 812306
- timestamp: 1736611863777
-- conda: https://prefix.dev/conda-forge/linux-64/libpng-1.6.45-h943b412_0.conda
- sha256: b8f5b5ba9a14dedf7c97c01300de492b1b52b68eacbc3249a13fdbfa82349a2f
- md5: 85cbdaacad93808395ac295b5667d25b
- depends:
- - __glibc >=2.17,<3.0.a0
- - libgcc >=13
- - libzlib >=1.3.1,<2.0a0
- license: zlib-acknowledgement
+ license_family: BSD
purls: []
- size: 289426
- timestamp: 1736339058310
-- conda: https://prefix.dev/conda-forge/osx-arm64/libpng-1.6.45-h3783ad8_0.conda
- sha256: ddcc81c049b32fb5eb3ac1f9a6d3a589c08325c8ec6f89eb912208b19330d68c
- md5: d554c806d065b1763cb9e1cb1d25741d
+ size: 6170847
+ timestamp: 1739826107594
+- conda: https://prefix.dev/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda
+ sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343
+ md5: 0cd1148c68f09027ee0b0f0179f77c30
depends:
- __osx >=11.0
- - libzlib >=1.3.1,<2.0a0
- license: zlib-acknowledgement
- purls: []
- size: 263151
- timestamp: 1736339184358
-- conda: https://prefix.dev/conda-forge/win-64/libpng-1.6.45-had7236b_0.conda
- sha256: e39c4f1bc8fee08f6a2eb4a88174d14c3a99dbb4850c98f3a87eb83b4dabbfca
- md5: 41fb9e522ec6e0b34a6f23c98b07e1cf
- depends:
- - libzlib >=1.3.1,<2.0a0
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- license: zlib-acknowledgement
+ - libgfortran >=5
+ - libgfortran5 >=13.2.0
+ - llvm-openmp >=18.1.8
+ constrains:
+ - openblas >=0.3.29,<0.3.30.0a0
+ license: BSD-3-Clause
+ license_family: BSD
purls: []
- size: 348982
- timestamp: 1736339314098
-- conda: https://prefix.dev/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda
- sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493
- md5: d8703f1ffe5a06356f06467f1d0b9464
+ size: 4168442
+ timestamp: 1739825514918
+- conda: https://prefix.dev/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_1.conda
+ sha256: 691af28446345674c6b3fb864d0e1a1574b6cc2f788e0f036d73a6b05dcf81cf
+ md5: edb86556cf4a0c133e7932a1597ff236
depends:
- __glibc >=2.17,<3.0.a0
- libabseil * cxx17*
- - libabseil >=20240722.0,<20240723.0a0
+ - libabseil >=20250127.1,<20250128.0a0
- libgcc >=13
- libstdcxx >=13
- libzlib >=1.3.1,<2.0a0
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 2960815
- timestamp: 1735577210663
-- conda: https://prefix.dev/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda
- sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7
- md5: bdbfea4cf45ae36652c6bbcc2e7ebe91
+ size: 3358788
+ timestamp: 1745159546868
+- conda: https://prefix.dev/conda-forge/osx-64/libprotobuf-5.29.3-h1c7185b_1.conda
+ sha256: cc4dd61aa257c4b4a9451ddf9a5148e4640fea0df416737c1086724ca09641f6
+ md5: 7c7d8218221568e544986713881d36ee
+ depends:
+ - __osx >=10.14
+ - libabseil * cxx17*
+ - libabseil >=20250127.1,<20250128.0a0
+ - libcxx >=18
+ - libzlib >=1.3.1,<2.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 2840883
+ timestamp: 1745159228883
+- conda: https://prefix.dev/conda-forge/osx-arm64/libprotobuf-5.29.3-hccd9074_1.conda
+ sha256: 6e5b49bfa09bfc1aa0d69113be435d40ace0d01592b7b22cac696928cee6be03
+ md5: f7951fdf76556f91bc146384ede7de40
depends:
- __osx >=11.0
- libabseil * cxx17*
- - libabseil >=20240722.0,<20240723.0a0
+ - libabseil >=20250127.1,<20250128.0a0
- libcxx >=18
- libzlib >=1.3.1,<2.0a0
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 2271580
- timestamp: 1735576361997
-- conda: https://prefix.dev/conda-forge/win-64/libprotobuf-5.28.3-h8309712_1.conda
- sha256: 78c1b917d50c0317579bd9a5714a6d544d69786fd3228a4201dc4e8710ef6348
- md5: 3be9f2fb7dce19d66d5cf1003a34b0e1
+ size: 2613087
+ timestamp: 1745158781377
+- conda: https://prefix.dev/conda-forge/win-64/libprotobuf-5.29.3-he9d8c4a_1.conda
+ sha256: 101b6cd0bde3ea29a161c9d36beda20851c0426e115d845555222e75d620d33e
+ md5: d1d3b80a1a04251bd75439b630e874be
depends:
- libabseil * cxx17*
- - libabseil >=20240722.0,<20240723.0a0
+ - libabseil >=20250127.1,<20250128.0a0
- libzlib >=1.3.1,<2.0a0
- ucrt >=10.0.20348.0
- vc >=14.2,<15
@@ -6532,15 +7387,15 @@ packages:
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 6172959
- timestamp: 1735577517299
-- conda: https://prefix.dev/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda
- sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7
- md5: b2fede24428726dd867611664fb372e8
+ size: 6898266
+ timestamp: 1745160248538
+- conda: https://prefix.dev/conda-forge/linux-64/libre2-11-2024.07.02-hba17884_3.conda
+ sha256: 392ec1e49370eb03270ffd4cc8d727f8e03e1e3a92b12f10c53f396ae4554668
+ md5: 545e93a513c10603327c76c15485e946
depends:
- __glibc >=2.17,<3.0.a0
- libabseil * cxx17*
- - libabseil >=20240722.0,<20240723.0a0
+ - libabseil >=20250127.0,<20250128.0a0
- libgcc >=13
- libstdcxx >=13
constrains:
@@ -6548,311 +7403,360 @@ packages:
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 209793
- timestamp: 1735541054068
-- conda: https://prefix.dev/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda
- sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96
- md5: 6b1e3624d3488016ca4f1ca0c412efaa
+ size: 210073
+ timestamp: 1741121121238
+- conda: https://prefix.dev/conda-forge/osx-64/libre2-11-2024.07.02-h08ce7b7_3.conda
+ sha256: 2bdf91b94486a06bdcc2aedcae4f0b9280301b0bb39e3168e29767c0c7b8bd85
+ md5: 93ff94e5535b7051133b980d2ab1c858
depends:
- - __osx >=11.0
+ - __osx >=10.14
- libabseil * cxx17*
- - libabseil >=20240722.0,<20240723.0a0
+ - libabseil >=20250127.0,<20250128.0a0
- libcxx >=18
constrains:
- re2 2024.07.02.*
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 167155
- timestamp: 1735541067807
-- conda: https://prefix.dev/conda-forge/win-64/libre2-11-2024.07.02-h4eb7d71_2.conda
- sha256: f5bcc036ea1946444dc3adc772dfb045ff9e6d3486e924133ad7d018de651738
- md5: 67612b1af5350b6dcf289db63ec3e685
+ size: 179620
+ timestamp: 1741121212954
+- conda: https://prefix.dev/conda-forge/osx-arm64/libre2-11-2024.07.02-hd41c47c_3.conda
+ sha256: 038db1da2b9f353df6532af224c20d985228d3408d2af25aa34974f6dbee76e1
+ md5: 1466284c71c62f7a9c4fa08ed8940f20
depends:
+ - __osx >=11.0
- libabseil * cxx17*
- - libabseil >=20240722.0,<20240723.0a0
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
+ - libabseil >=20250127.0,<20250128.0a0
+ - libcxx >=18
constrains:
- re2 2024.07.02.*
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 260655
- timestamp: 1735541391655
-- conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda
- sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352
- md5: b58da17db24b6e08bcbf8fed2fb8c915
+ size: 167268
+ timestamp: 1741121355716
+- conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.50.0-hee588c1_0.conda
+ sha256: b3dcd409c96121c011387bdf7f4b5758d876feeb9d8e3cfc32285b286931d0a7
+ md5: 71888e92098d0f8c41b09a671ad289bc
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=13
- libzlib >=1.3.1,<2.0a0
license: Unlicense
purls: []
- size: 873551
- timestamp: 1733761824646
-- conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda
- sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4
- md5: 122d6f29470f1a991e85608e77e56a8a
+ size: 918995
+ timestamp: 1748549888459
+- conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.50.1-hee588c1_0.conda
+ sha256: cd15ab1b9f0d53507e7ad7a01e52f6756ab3080bf623ab0e438973b6e4dba3c0
+ md5: 96a7e36bff29f1d0ddf5b771e0da373a
depends:
- - __osx >=11.0
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
- libzlib >=1.3.1,<2.0a0
license: Unlicense
purls: []
- size: 850553
- timestamp: 1733762057506
-- conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.47.2-h67fdade_0.conda
- sha256: ecfc0182c3b2e63c870581be1fa0e4dbdfec70d2011cb4f5bde416ece26c41df
- md5: ff00095330e0d35a16bd3bdbd1a2d3e7
+ size: 919819
+ timestamp: 1749232795476
+- conda: https://prefix.dev/conda-forge/osx-64/libsqlite-3.50.0-hdb6dae5_0.conda
+ sha256: e88ea982455060b96fdab3d360b947389248bf2139e3b17576e4c72e139526fc
+ md5: caf16742f7e16475603cd9981ef36195
depends:
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
+ - __osx >=10.13
+ - libzlib >=1.3.1,<2.0a0
license: Unlicense
purls: []
- size: 891292
- timestamp: 1733762116902
-- conda: https://prefix.dev/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda
- sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9
- md5: be2de152d8073ef1c01b7728475f2fe7
+ size: 979930
+ timestamp: 1748549977346
+- conda: https://prefix.dev/conda-forge/osx-64/libsqlite-3.50.1-hdb6dae5_0.conda
+ sha256: 619fbc556a621beafc7ec712f16648ee30bf2d029b6d7aea2c84839fbb2b4e14
+ md5: 00116248e7b4025ae01632472b300d29
depends:
- - __glibc >=2.17,<3.0.a0
- - libgcc >=13
+ - __osx >=10.13
- libzlib >=1.3.1,<2.0a0
- - openssl >=3.4.0,<4.0a0
- license: BSD-3-Clause
- license_family: BSD
+ license: Unlicense
purls: []
- size: 304278
- timestamp: 1732349402869
-- conda: https://prefix.dev/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda
- sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9
- md5: ddc7194676c285513706e5fc64f214d7
+ size: 979974
+ timestamp: 1749232778874
+- conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.50.0-h3f77e49_0.conda
+ sha256: 80bbe9c53d4bf2e842eccdd089653d0659972deba7057cda3ebaebaf43198f79
+ md5: cda0ec640bc4698d0813a8fb459aee58
depends:
+ - __osx >=11.0
- libzlib >=1.3.1,<2.0a0
- - openssl >=3.4.0,<4.0a0
- license: BSD-3-Clause
- license_family: BSD
+ license: Unlicense
purls: []
- size: 279028
- timestamp: 1732349599461
-- conda: https://prefix.dev/conda-forge/win-64/libssh2-1.11.1-he619c9f_0.conda
- sha256: 4b3256bd2b4e4b3183005d3bd8826d651eccd1a4740b70625afa2b7e7123d191
- md5: af0cbf037dd614c34399b3b3e568c557
+ size: 901545
+ timestamp: 1748550158812
+- conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.50.1-h3f77e49_0.conda
+ sha256: f39e22a00396c048dcfcb5d8c9dbedb2d69f06edcd8dba98b87f263eeb6d2049
+ md5: 73df23998b27dd6774d03db626d031d3
depends:
+ - __osx >=11.0
- libzlib >=1.3.1,<2.0a0
- - openssl >=3.4.0,<4.0a0
+ license: Unlicense
+ purls: []
+ size: 901258
+ timestamp: 1749232800279
+- conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.50.0-h67fdade_0.conda
+ sha256: 92546e3ea213ee7b11385b22ea4e7c69bbde1c25586288765b37bc5e96b20dd9
+ md5: 92b11b0b2120d563caa1629928122cee
+ depends:
- ucrt >=10.0.20348.0
- vc >=14.2,<15
- vc14_runtime >=14.29.30139
- license: BSD-3-Clause
- license_family: BSD
+ license: Unlicense
+ purls: []
+ size: 1082124
+ timestamp: 1748550277035
+- conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.50.1-h67fdade_0.conda
+ sha256: 0dda5b3f21ad2c7e823f21b0e173194347fbfccb73a06ddc9366da1877020bda
+ md5: 0e11a893eeeb46510520fd3fdd9c346a
+ depends:
+ - ucrt >=10.0.20348.0
+ - vc >=14.2,<15
+ - vc14_runtime >=14.29.30139
+ license: Unlicense
purls: []
- size: 291889
- timestamp: 1732349796504
-- conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda
- sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462
- md5: 234a5554c53625688d51062645337328
+ size: 1082758
+ timestamp: 1749233212790
+- conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda
+ sha256: 6ae3d153e78f6069d503d9309f2cac6de5b93d067fc6433160a4c05226a5dad4
+ md5: 1cb1c67961f6dd257eae9e9691b341aa
depends:
- - libgcc 14.2.0 h77fa898_1
+ - __glibc >=2.17,<3.0.a0
+ - libgcc 15.1.0 h767d61c_2
license: GPL-3.0-only WITH GCC-exception-3.1
license_family: GPL
purls: []
- size: 3893695
- timestamp: 1729027746910
-- conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda
- sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8
- md5: 8371ac6457591af2cf6159439c1fd051
+ size: 3902355
+ timestamp: 1746642227493
+- conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda
+ sha256: 11bea86e11de7d6bce87589197a383344df3fa0a3552dab7e931785ff1159a5b
+ md5: 9d2072af184b5caa29492bf2344597bb
depends:
- - libstdcxx 14.2.0 hc0a3c3a_1
+ - libstdcxx 15.1.0 h8f9b012_2
license: GPL-3.0-only WITH GCC-exception-3.1
license_family: GPL
purls: []
- size: 54105
- timestamp: 1729027780628
-- conda: https://prefix.dev/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda
- sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0
- md5: dcb95c0a98ba9ff737f7ae482aef7833
+ size: 34647
+ timestamp: 1746642266826
+- conda: https://prefix.dev/conda-forge/linux-64/libsystemd0-257.6-h4e0b6ca_0.conda
+ sha256: 139b89421a651c004aba9c5e351e61674d98723f3f19d45cdbcde1fd6e8a59df
+ md5: 071409970083d0f99ab7b569352771c9
depends:
- __glibc >=2.17,<3.0.a0
- - libevent >=2.1.12,<2.1.13.0a0
+ - libcap >=2.75,<2.76.0a0
- libgcc >=13
- - libstdcxx >=13
- - libzlib >=1.3.1,<2.0a0
- - openssl >=3.3.2,<4.0a0
- license: Apache-2.0
- license_family: APACHE
- purls: []
- size: 425773
- timestamp: 1727205853307
-- conda: https://prefix.dev/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda
- sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad
- md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7
- depends:
- - __osx >=11.0
- - libcxx >=17
- - libevent >=2.1.12,<2.1.13.0a0
- - libzlib >=1.3.1,<2.0a0
- - openssl >=3.3.2,<4.0a0
- license: Apache-2.0
- license_family: APACHE
- purls: []
- size: 324342
- timestamp: 1727206096912
-- conda: https://prefix.dev/conda-forge/win-64/libthrift-0.21.0-hbe90ef8_0.conda
- sha256: 81ca4873ba09055c307f8777fb7d967b5c26291f38095785ae52caed75946488
- md5: 7699570e1f97de7001a7107aabf2d677
- depends:
- - libevent >=2.1.12,<2.1.13.0a0
- - libzlib >=1.3.1,<2.0a0
- - openssl >=3.3.2,<4.0a0
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- license: Apache-2.0
- license_family: APACHE
+ - libgcrypt-lib >=1.11.1,<2.0a0
+ - liblzma >=5.8.1,<6.0a0
+ - lz4-c >=1.10.0,<1.11.0a0
+ - zstd >=1.5.7,<1.6.0a0
+ license: LGPL-2.1-or-later
purls: []
- size: 633857
- timestamp: 1727206429954
-- conda: https://prefix.dev/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda
- sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002
- md5: 0ea6510969e1296cc19966fad481f6de
+ size: 489524
+ timestamp: 1748886391854
+- conda: https://prefix.dev/conda-forge/linux-64/libtorch-2.7.0-cpu_mkl_hf6ddc5a_100.conda
+ sha256: 7b6178464b02d65c4af92086c71b79e5c2b7fc1500c1547334a4755e6e92d8a9
+ md5: 6bdda0b10852c6d03b030bab7ec251f0
depends:
- __glibc >=2.17,<3.0.a0
- - lerc >=4.0.0,<5.0a0
- - libdeflate >=1.23,<1.24.0a0
+ - _openmp_mutex * *_llvm
+ - _openmp_mutex >=4.5
+ - libabseil * cxx17*
+ - libabseil >=20250127.1,<20250128.0a0
+ - libblas * *mkl
+ - libcblas >=3.9.0,<4.0a0
- libgcc >=13
- - libjpeg-turbo >=3.0.0,<4.0a0
- - liblzma >=5.6.3,<6.0a0
+ - libprotobuf >=5.29.3,<5.29.4.0a0
- libstdcxx >=13
- - libwebp-base >=1.4.0,<2.0a0
- - libzlib >=1.3.1,<2.0a0
- - zstd >=1.5.6,<1.6.0a0
- license: HPND
- purls: []
- size: 428173
- timestamp: 1734398813264
-- conda: https://prefix.dev/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda
- sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae
- md5: a5d084a957563e614ec0c0196d890654
- depends:
- - __osx >=11.0
- - lerc >=4.0.0,<5.0a0
- - libcxx >=18
- - libdeflate >=1.23,<1.24.0a0
- - libjpeg-turbo >=3.0.0,<4.0a0
- - liblzma >=5.6.3,<6.0a0
- - libwebp-base >=1.4.0,<2.0a0
+ - libuv >=1.50.0,<2.0a0
- libzlib >=1.3.1,<2.0a0
- - zstd >=1.5.6,<1.6.0a0
- license: HPND
- purls: []
- size: 370600
- timestamp: 1734398863052
-- conda: https://prefix.dev/conda-forge/win-64/libtiff-4.7.0-h797046b_3.conda
- sha256: c363a8baba4ce12b8f01f0ab74fe8b0dc83facd89c6604f4a191084923682768
- md5: defed79ff7a9164ad40320e3f116a138
- depends:
- - lerc >=4.0.0,<5.0a0
- - libdeflate >=1.23,<1.24.0a0
- - libjpeg-turbo >=3.0.0,<4.0a0
- - liblzma >=5.6.3,<6.0a0
- - libzlib >=1.3.1,<2.0a0
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- - zstd >=1.5.6,<1.6.0a0
- license: HPND
+ - llvm-openmp >=20.1.4
+ - mkl >=2024.2.2,<2025.0a0
+ - sleef >=3.8,<4.0a0
+ constrains:
+ - pytorch-gpu <0.0a0
+ - pytorch 2.7.0 cpu_mkl_*_100
+ - pytorch-cpu 2.7.0
+ license: BSD-3-Clause
+ license_family: BSD
purls: []
- size: 978878
- timestamp: 1734399004259
-- conda: https://prefix.dev/conda-forge/linux-64/libtorch-2.5.1-cpu_mkl_ha4c6a95_109.conda
- sha256: 021dd776fc6482b31bcc27330d262f9a7df54bc3d199e9af2dfcc513d0320d2c
- md5: 01be7598624eb315ee63c807dfe3f242
+ size: 55565925
+ timestamp: 1746256872466
+- conda: https://prefix.dev/conda-forge/linux-64/libtorch-2.7.0-cuda126_mkl_h99b69db_300.conda
+ sha256: b4e8c062ddc343be1ff84346ef4f90b258a87d67e747e50a3644a81d1978eb40
+ md5: 67d004faec95b8fff704681eae9ccf40
depends:
- __glibc >=2.17,<3.0.a0
+ - _openmp_mutex * *_llvm
- _openmp_mutex >=4.5
+ - cuda-cudart >=12.6.77,<13.0a0
+ - cuda-cupti >=12.6.80,<13.0a0
+ - cuda-nvrtc >=12.6.85,<13.0a0
+ - cuda-nvtx >=12.6.77,<13.0a0
+ - cuda-version >=12.6,<13
+ - cudnn >=9.8.0.87,<10.0a0
- libabseil * cxx17*
- - libabseil >=20240722.0,<20240723.0a0
+ - libabseil >=20250127.1,<20250128.0a0
- libblas * *mkl
- libcblas >=3.9.0,<4.0a0
+ - libcublas >=12.6.4.1,<13.0a0
+ - libcudss >=0.5.0.16,<0.5.1.0a0
+ - libcufft >=11.3.0.4,<12.0a0
+ - libcufile >=1.11.1.6,<2.0a0
+ - libcurand >=10.3.7.77,<11.0a0
+ - libcusolver >=11.7.1.2,<12.0a0
+ - libcusparse >=12.5.4.2,<13.0a0
- libgcc >=13
- - libprotobuf >=5.28.3,<5.28.4.0a0
+ - libmagma >=2.9.0,<2.9.1.0a0
+ - libprotobuf >=5.29.3,<5.29.4.0a0
- libstdcxx >=13
- - libuv >=1.49.2,<2.0a0
+ - libuv >=1.50.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - llvm-openmp >=20.1.4
- mkl >=2024.2.2,<2025.0a0
- - sleef >=3.7,<4.0a0
+ - nccl >=2.26.5.1,<3.0a0
+ - sleef >=3.8,<4.0a0
+ constrains:
+ - pytorch-gpu 2.7.0
+ - pytorch-cpu <0.0a0
+ - pytorch 2.7.0 cuda126_mkl_*_300
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 594396124
+ timestamp: 1746283375271
+- conda: https://prefix.dev/conda-forge/osx-64/libtorch-2.7.0-cpu_mkl_h3891332_100.conda
+ sha256: 94e8d82cd43b605d97ce3559ff25cee12e001297b30b0f3402af08e6e38bed6b
+ md5: 8b8a69d33167d5ae45719259c098116c
+ depends:
+ - __osx >=10.15
+ - libabseil * cxx17*
+ - libabseil >=20250127.1,<20250128.0a0
+ - libblas * *mkl
+ - libcblas >=3.9.0,<4.0a0
+ - libcxx >=18
+ - libprotobuf >=5.29.3,<5.29.4.0a0
+ - libuv >=1.50.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - llvm-openmp >=18.1.8
+ - mkl >=2023.2.0,<2024.0a0
+ - numpy >=1.19,<3
+ - python_abi 3.10.* *_cp310
+ - sleef >=3.8,<4.0a0
constrains:
- - pytorch-cpu ==2.5.1
- - pytorch-gpu ==99999999
- - pytorch 2.5.1 cpu_mkl_*_109
+ - pytorch 2.7.0 cpu_mkl_*_100
+ - pytorch-cpu 2.7.0
+ - pytorch-gpu <0.0a0
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 53428361
- timestamp: 1736828519709
-- conda: https://prefix.dev/conda-forge/osx-arm64/libtorch-2.5.1-cpu_generic_h266890c_9.conda
- sha256: bf5e9ce558b516988a41e1fbc73b368ef03b6f89a6b34edbde3203e131fcd455
- md5: ad9069009d26de3551e1053fa77a6355
+ size: 48281858
+ timestamp: 1746268926088
+- conda: https://prefix.dev/conda-forge/osx-arm64/libtorch-2.7.0-cpu_generic_h4059bed_0.conda
+ sha256: fdc1dd29a68071e7b1e33179e6325611767a9d9fdb59942575e13144720bb706
+ md5: 2abb3817ba2bd358556b17ed8d71309c
depends:
- __osx >=11.0
- libabseil * cxx17*
- - libabseil >=20240722.0,<20240723.0a0
+ - libabseil >=20250127.1,<20250128.0a0
- libblas >=3.9.0,<4.0a0
- libcblas >=3.9.0,<4.0a0
- libcxx >=18
- liblapack >=3.9.0,<4.0a0
- - libprotobuf >=5.28.3,<5.28.4.0a0
- - libuv >=1.49.2,<2.0a0
+ - libprotobuf >=5.29.3,<5.29.4.0a0
+ - libuv >=1.50.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
- llvm-openmp >=18.1.8
- numpy >=1.19,<3
- python >=3.10,<3.11.0a0 *_cpython
- python_abi 3.10.* *_cp310
- - sleef >=3.7,<4.0a0
+ - sleef >=3.8,<4.0a0
constrains:
- - pytorch-cpu ==2.5.1
- - pytorch 2.5.1 cpu_generic_*_9
- openblas * openmp_*
- - pytorch-gpu ==99999999
+ - pytorch 2.7.0 cpu_generic_*_0
+ - pytorch-cpu 2.7.0
+ - pytorch-gpu <0.0a0
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 28341435
- timestamp: 1736896460239
-- conda: https://prefix.dev/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda
- sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928
- md5: 1e936bd23d737aac62a18e9a1e7f8b18
- depends:
- - __glibc >=2.17,<3.0.a0
- - libgcc >=13
- license: MIT
- license_family: MIT
- purls: []
- size: 81500
- timestamp: 1732868419835
-- conda: https://prefix.dev/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda
- sha256: ea88f06e97ef8fa2490f7594f8885bb542577226edf8abba3144302d951a53c2
- md5: f777470d31c78cd0abe1903a2fda436f
+ size: 29595513
+ timestamp: 1746265450806
+- conda: https://prefix.dev/conda-forge/win-64/libtorch-2.7.0-cpu_mkl_hf54a72f_100.conda
+ sha256: 4b91a35b9ad625edc3937390553b89d8b9753c751ea3c4ab4ce73dc41289fc8f
+ md5: 37f0167f6b4ffad067ff2483b164d26f
depends:
- - __osx >=11.0
- license: MIT
- license_family: MIT
+ - intel-openmp <2025
+ - libabseil * cxx17*
+ - libabseil >=20250127.1,<20250128.0a0
+ - libblas * *mkl
+ - libcblas >=3.9.0,<4.0a0
+ - libprotobuf >=5.29.3,<5.29.4.0a0
+ - libuv >=1.50.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - mkl >=2024.2.2,<2025.0a0
+ - sleef >=3.8,<4.0a0
+ - ucrt >=10.0.20348.0
+ - vc >=14.2,<15
+ - vc14_runtime >=14.29.30139
+ constrains:
+ - pytorch-gpu <0.0a0
+ - pytorch-cpu 2.7.0
+ - pytorch 2.7.0 cpu_mkl_*_100
+ license: BSD-3-Clause
+ license_family: BSD
purls: []
- size: 83000
- timestamp: 1732868631531
-- conda: https://prefix.dev/conda-forge/win-64/libutf8proc-2.9.0-h2466b09_1.conda
- sha256: 19386d93341d8fa3800033a7555ab00b9fef1db1dbd0a50b6e547b532860b603
- md5: 6f35a14d54f6fe4d013005cf56031842
+ size: 34549984
+ timestamp: 1746259799213
+- conda: https://prefix.dev/conda-forge/win-64/libtorch-2.7.0-cuda126_mkl_h09c782d_300.conda
+ sha256: 2122539decf5bdb763e51e77a252c969b489ddf5ef409d5db9b21e41762561e8
+ md5: f20f7d4c96b418ba8efeffb0cfed74f1
depends:
+ - cuda-cudart >=12.6.77,<13.0a0
+ - cuda-cupti >=12.6.80,<13.0a0
+ - cuda-nvrtc >=12.6.85,<13.0a0
+ - cuda-version >=12.6,<13
+ - cudnn >=9.10.1.4,<10.0a0
+ - intel-openmp <2025
+ - libabseil * cxx17*
+ - libabseil >=20250127.1,<20250128.0a0
+ - libblas * *mkl
+ - libcblas >=3.9.0,<4.0a0
+ - libcublas >=12.6.4.1,<13.0a0
+ - libcudss >=0.5.0.16,<0.5.1.0a0
+ - libcufft >=11.3.0.4,<12.0a0
+ - libcurand >=10.3.7.77,<11.0a0
+ - libcusolver >=11.7.1.2,<12.0a0
+ - libcusparse >=12.5.4.2,<13.0a0
+ - libmagma >=2.9.0,<2.9.1.0a0
+ - libprotobuf >=5.29.3,<5.29.4.0a0
+ - libuv >=1.51.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - mkl >=2024.2.2,<2025.0a0
+ - sleef >=3.8,<4.0a0
- ucrt >=10.0.20348.0
- vc >=14.2,<15
- vc14_runtime >=14.29.30139
- license: MIT
- license_family: MIT
+ constrains:
+ - pytorch-gpu 2.7.0
+ - pytorch 2.7.0 cuda126_mkl_*_300
+ - pytorch-cpu <0.0a0
+ license: BSD-3-Clause
+ license_family: BSD
purls: []
- size: 84392
- timestamp: 1732868780863
+ size: 496633602
+ timestamp: 1748500552425
+- conda: https://prefix.dev/conda-forge/linux-64/libudev1-257.6-hbe16f8c_0.conda
+ sha256: 742369b1203547dee69917c2af0c2bac6d1c1921203deaf7ef52c3283ec5c14a
+ md5: 2ddf4d040b58018f8ba3dfd464837827
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libcap >=2.75,<2.76.0a0
+ - libgcc >=13
+ license: LGPL-2.1-or-later
+ purls: []
+ size: 144531
+ timestamp: 1748886400306
- conda: https://prefix.dev/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda
sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18
md5: 40b61aab5c7ba9ff276c41cfffe6b80b
@@ -6863,69 +7767,52 @@ packages:
purls: []
size: 33601
timestamp: 1680112270483
-- conda: https://prefix.dev/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda
- sha256: a35cd81cd1a9add11024097da83cc06b0aae83186fe4124b77710876f37d8f31
- md5: 070e3c9ddab77e38799d5c30b109c633
+- conda: https://prefix.dev/conda-forge/linux-64/libuv-1.51.0-hb9d3cd8_0.conda
+ sha256: 770ca175d64323976c9fe4303042126b2b01c1bd54c8c96cafeaba81bdb481b8
+ md5: 1349c022c92c5efd3fd705a79a5804d8
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=13
license: MIT
license_family: MIT
purls: []
- size: 884647
- timestamp: 1729322566955
-- conda: https://prefix.dev/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda
- sha256: 0e5176af1e788ad5006cf261c4ea5a288a935fda48993b0240ddd2e562dc3d02
- md5: 4bc348e3a1a74d20a3f9beb866d75e0a
+ size: 890145
+ timestamp: 1748304699136
+- conda: https://prefix.dev/conda-forge/osx-64/libuv-1.51.0-h4cb831e_0.conda
+ sha256: 2c820c8e26d680f74035f58c3d46593461bb8aeefa00faafa5ca39d8a51c87fa
+ md5: 8afd5432c2e6776d145d94f4ea4d4db5
depends:
- __osx >=11.0
license: MIT
license_family: MIT
purls: []
- size: 410500
- timestamp: 1729322654121
-- conda: https://prefix.dev/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda
- sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf
- md5: 63f790534398730f59e1b899c3644d4a
- depends:
- - __glibc >=2.17,<3.0.a0
- - libgcc >=13
- constrains:
- - libwebp 1.5.0
- license: BSD-3-Clause
- license_family: BSD
- purls: []
- size: 429973
- timestamp: 1734777489810
-- conda: https://prefix.dev/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda
- sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a
- md5: 569466afeb84f90d5bb88c11cc23d746
+ size: 420355
+ timestamp: 1748304826637
+- conda: https://prefix.dev/conda-forge/osx-arm64/libuv-1.51.0-h5505292_0.conda
+ sha256: 41c1230a3f4e0d265e5053c671f112a16be4405b9047d3da5581e03e9d53de65
+ md5: 230a885fe67a3e945a4586b944b6020a
depends:
- __osx >=11.0
- constrains:
- - libwebp 1.5.0
- license: BSD-3-Clause
- license_family: BSD
+ license: MIT
+ license_family: MIT
purls: []
- size: 290013
- timestamp: 1734777593617
-- conda: https://prefix.dev/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda
- sha256: 1d75274614e83a5750b8b94f7bad2fc0564c2312ff407e697d99152ed095576f
- md5: 33f7313967072c6e6d8f865f5493c7ae
+ size: 420654
+ timestamp: 1748304893204
+- conda: https://prefix.dev/conda-forge/win-64/libuv-1.51.0-h2466b09_0.conda
+ sha256: b03ca3d0cfbf8b3911757411a10fbbaa7edae62bb81972ae44360e7ac347aac2
+ md5: 9756651456477241b0226fb0ee051c58
depends:
- ucrt >=10.0.20348.0
- vc >=14.2,<15
- vc14_runtime >=14.29.30139
- constrains:
- - libwebp 1.5.0
- license: BSD-3-Clause
- license_family: BSD
+ license: MIT
+ license_family: MIT
purls: []
- size: 273661
- timestamp: 1734777665516
-- conda: https://prefix.dev/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_8.conda
- sha256: 6d5e158813ab8d553fbb0fedd0abe7bf92970b0be3a9ddf12da0f6cbad78f506
- md5: 03cccbba200ee0523bde1f3dad60b1f3
+ size: 293576
+ timestamp: 1748305181284
+- conda: https://prefix.dev/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda
+ sha256: 373f2973b8a358528b22be5e8d84322c165b4c5577d24d94fd67ad1bb0a0f261
+ md5: 08bfa5da6e242025304b206d152479ef
depends:
- ucrt
constrains:
@@ -6933,50 +7820,8 @@ packages:
- msys2-conda-epoch <0.0a0
license: MIT AND BSD-3-Clause-Clear
purls: []
- size: 35433
- timestamp: 1724681489463
-- conda: https://prefix.dev/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda
- sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa
- md5: 92ed62436b625154323d40d5f2f11dd7
- depends:
- - __glibc >=2.17,<3.0.a0
- - libgcc >=13
- - pthread-stubs
- - xorg-libxau >=1.0.11,<2.0a0
- - xorg-libxdmcp
- license: MIT
- license_family: MIT
- purls: []
- size: 395888
- timestamp: 1727278577118
-- conda: https://prefix.dev/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda
- sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71
- md5: af523aae2eca6dfa1c8eec693f5b9a79
- depends:
- - __osx >=11.0
- - pthread-stubs
- - xorg-libxau >=1.0.11,<2.0a0
- - xorg-libxdmcp
- license: MIT
- license_family: MIT
- purls: []
- size: 323658
- timestamp: 1727278733917
-- conda: https://prefix.dev/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda
- sha256: 08dec73df0e161c96765468847298a420933a36bc4f09b50e062df8793290737
- md5: a69bbf778a462da324489976c84cfc8c
- depends:
- - libgcc >=13
- - libwinpthread >=12.0.0.r4.gg4f2fc60ca
- - pthread-stubs
- - ucrt >=10.0.20348.0
- - xorg-libxau >=1.0.11,<2.0a0
- - xorg-libxdmcp
- license: MIT
- license_family: MIT
- purls: []
- size: 1208687
- timestamp: 1727279378819
+ size: 35794
+ timestamp: 1737099561703
- conda: https://prefix.dev/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda
sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c
md5: 5aa797f8787fe7a17d1b0821485b5adc
@@ -6986,41 +7831,40 @@ packages:
purls: []
size: 100393
timestamp: 1702724383534
-- conda: https://prefix.dev/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda
- sha256: 306e18aa647d8208ad2cd0e62d84933222b2fbe93d2d53cd5283d2256b1d54de
- md5: f5b05674697ae7d2c5932766695945e1
+- conda: https://prefix.dev/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda
+ sha256: b0b3a96791fa8bb4ec030295e8c8bf2d3278f33c0f9ad540e73b5e538e6268e7
+ md5: 14dbe05b929e329dbaa6f2d0aa19466d
depends:
- __glibc >=2.17,<3.0.a0
+ - icu >=75.1,<76.0a0
- libgcc >=13
- - libiconv >=1.17,<2.0a0
- - liblzma >=5.6.3,<6.0a0
+ - libiconv >=1.18,<2.0a0
+ - liblzma >=5.8.1,<6.0a0
- libzlib >=1.3.1,<2.0a0
- constrains:
- - icu <0.0a0
license: MIT
license_family: MIT
purls: []
- size: 689993
- timestamp: 1733443678322
-- conda: https://prefix.dev/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda
- sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544
- md5: 3dc3cff0eca1640a6acbbfab2f78139e
+ size: 690864
+ timestamp: 1746634244154
+- conda: https://prefix.dev/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda
+ sha256: 4b29663164d7beb9a9066ddcb8578fc67fe0e9b40f7553ea6255cd6619d24205
+ md5: e42a93a31cbc6826620144343d42f472
depends:
- - __osx >=11.0
+ - __osx >=10.13
- icu >=75.1,<76.0a0
- - libiconv >=1.17,<2.0a0
- - liblzma >=5.6.3,<6.0a0
+ - libiconv >=1.18,<2.0a0
+ - liblzma >=5.8.1,<6.0a0
- libzlib >=1.3.1,<2.0a0
license: MIT
license_family: MIT
purls: []
- size: 582898
- timestamp: 1733443841584
-- conda: https://prefix.dev/conda-forge/win-64/libxml2-2.13.5-he286e8c_1.conda
- sha256: 084dd4dde342f13c43ee418d153ac5b2610f95be029073a15fa9dda22b130d06
- md5: 77eaa84f90fc90643c5a0be0aa9bdd1b
+ size: 609197
+ timestamp: 1746634704204
+- conda: https://prefix.dev/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda
+ sha256: 473b8a53c8df714d676ab41711551c8d250f8d799f2db5cb7cb2b177a0ce13f6
+ md5: 833c2dbc1a5020007b520b044c713ed3
depends:
- - libiconv >=1.17,<2.0a0
+ - libiconv >=1.18,<2.0a0
- libzlib >=1.3.1,<2.0a0
- ucrt >=10.0.20348.0
- vc >=14.2,<15
@@ -7028,8 +7872,8 @@ packages:
license: MIT
license_family: MIT
purls: []
- size: 1612294
- timestamp: 1733443909984
+ size: 1513627
+ timestamp: 1746634633560
- conda: https://prefix.dev/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda
sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4
md5: edb0dca6bc32e4f4789199455a1dbeb8
@@ -7043,6 +7887,18 @@ packages:
purls: []
size: 60963
timestamp: 1727963148474
+- conda: https://prefix.dev/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda
+ sha256: 8412f96504fc5993a63edf1e211d042a1fd5b1d51dedec755d2058948fcced09
+ md5: 003a54a4e32b02f7355b50a837e699da
+ depends:
+ - __osx >=10.13
+ constrains:
+ - zlib 1.3.1 *_2
+ license: Zlib
+ license_family: Other
+ purls: []
+ size: 57133
+ timestamp: 1727963183990
- conda: https://prefix.dev/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda
sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b
md5: 369964e85dc26bfe78f41399b366c435
@@ -7069,37 +7925,48 @@ packages:
purls: []
size: 55476
timestamp: 1727963768015
-- conda: https://prefix.dev/conda-forge/linux-64/llvm-openmp-19.1.6-h024ca30_0.conda
- sha256: 9e385c2a8169d951cf153221fb7fbb3dc8f1e5ac77371edee7329f8721dbe1ae
- md5: 96e42ccbd3c067c1713ff5f2d2169247
+- conda: https://prefix.dev/conda-forge/linux-64/llvm-openmp-20.1.6-h024ca30_0.conda
+ sha256: 43ad6a0772c0fc554d2712ae00ea788a391a40c494e9c04ec13f4aea17c95ffc
+ md5: e4ece7ed81e43ae97a3b58ac4230c3c5
depends:
- __glibc >=2.17,<3.0.a0
constrains:
- - openmp 19.1.6|19.1.6.*
+ - openmp 20.1.6|20.1.6.*
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: APACHE
+ purls: []
+ size: 3200539
+ timestamp: 1748570362219
+- conda: https://prefix.dev/conda-forge/osx-64/llvm-openmp-20.1.6-ha54dae1_0.conda
+ sha256: 75aa1b58b86a17aaa3b7882fe994d8f72440aa938d2d3c84e434b4104cfca096
+ md5: c55751d61e1f8be539e0e4beffad3e5a
+ depends:
+ - __osx >=10.13
+ constrains:
+ - openmp 20.1.6|20.1.6.*
license: Apache-2.0 WITH LLVM-exception
license_family: APACHE
purls: []
- size: 3201572
- timestamp: 1734520399290
-- conda: https://prefix.dev/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda
- sha256: a0f3e9139ab16f0a67b9d2bbabc15b78977168f4a5b5503fed4962dcb9a96102
- md5: 34fdeffa0555a1a56f38839415cc066c
+ size: 306551
+ timestamp: 1748570208344
+- conda: https://prefix.dev/conda-forge/osx-arm64/llvm-openmp-20.1.6-hdb05f8b_0.conda
+ sha256: 99c8aa89a77870d6ee16d62b858be67e30f2ad4fe13555570c7660cc38f9557b
+ md5: 7a3b28d59940a28e761e0a623241a832
depends:
- __osx >=11.0
constrains:
- - openmp 19.1.6|19.1.6.*
+ - openmp 20.1.6|20.1.6.*
license: Apache-2.0 WITH LLVM-exception
license_family: APACHE
purls: []
- size: 281251
- timestamp: 1734520462311
-- conda: https://prefix.dev/conda-forge/linux-64/llvmlite-0.43.0-py310h1a6248f_1.conda
- sha256: 071ce1a0fed522a19990b1cb49cba01d5b03f0e851a1ea0c364622267e32bca1
- md5: 8153f0ba820cca5bae3101d1bc178d95
+ size: 282698
+ timestamp: 1748570308073
+- conda: https://prefix.dev/conda-forge/linux-64/llvmlite-0.44.0-py310h1a6248f_1.conda
+ sha256: 47fd93916c73f4f6c3f3c26de517614984537299f8f3c8a4b58933cb28bf4af2
+ md5: 7ea40d06d6a4a970a449728a806e3308
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=13
- - libllvm14 >=14.0.6,<14.1.0a0
- libstdcxx >=13
- libzlib >=1.3.1,<2.0a0
- python >=3.10,<3.11.0a0
@@ -7108,15 +7975,29 @@ packages:
license_family: BSD
purls:
- pkg:pypi/llvmlite?source=hash-mapping
- size: 3379851
- timestamp: 1725305141536
-- conda: https://prefix.dev/conda-forge/osx-arm64/llvmlite-0.43.0-py310h9fcfb1b_1.conda
- sha256: e14de4383b9b7ddbe80c0033d74583d57f90817f0916ed10d4daa7cc0b07500f
- md5: 68a060bfb18c7de4537dfb79cb2a90a7
+ size: 29942580
+ timestamp: 1742815898450
+- conda: https://prefix.dev/conda-forge/osx-64/llvmlite-0.44.0-py310hb13c577_1.conda
+ sha256: d34e67936fda16b0be09aa8acd58df7c0a4188f4d842f9bb24d8ae3b487999f0
+ md5: d9a5a6efa4bc628db29abec5fd09f635
+ depends:
+ - __osx >=10.13
+ - libcxx >=18
+ - libzlib >=1.3.1,<2.0a0
+ - python >=3.10,<3.11.0a0
+ - python_abi 3.10.* *_cp310
+ license: BSD-2-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/llvmlite?source=hash-mapping
+ size: 20303138
+ timestamp: 1742816109710
+- conda: https://prefix.dev/conda-forge/osx-arm64/llvmlite-0.44.0-py310hed9eb73_1.conda
+ sha256: c36e73663ba57b03d6808fddea29c8786d3bf00832439d433f498f8af1860501
+ md5: b0c5d2ee9ca37e5c14c4c1f9f54a97af
depends:
- __osx >=11.0
- - libcxx >=17
- - libllvm14 >=14.0.6,<14.1.0a0
+ - libcxx >=18
- libzlib >=1.3.1,<2.0a0
- python >=3.10,<3.11.0a0
- python >=3.10,<3.11.0a0 *_cpython
@@ -7125,11 +8006,11 @@ packages:
license_family: BSD
purls:
- pkg:pypi/llvmlite?source=hash-mapping
- size: 305736
- timestamp: 1725305540839
-- conda: https://prefix.dev/conda-forge/win-64/llvmlite-0.43.0-py310h0288bfe_1.conda
- sha256: 3eed3f0b475d698ff947b8d97b4d8e73fd047ee80b416f5c6c052d74afd25971
- md5: f8adf34c61cc1e8f532f7d7f5c04c34f
+ size: 18830971
+ timestamp: 1742816251145
+- conda: https://prefix.dev/conda-forge/win-64/llvmlite-0.44.0-py310h0288bfe_1.conda
+ sha256: 219e58bc1fc6d68ad0b5bdaef0a1b504533f5ee0622b69c6911719a94ef9d159
+ md5: 0bd0344c6c2455b3c14031248146f876
depends:
- libzlib >=1.3.1,<2.0a0
- python >=3.10,<3.11.0a0
@@ -7137,13 +8018,12 @@ packages:
- ucrt >=10.0.20348.0
- vc >=14.2,<15
- vc14_runtime >=14.29.30139
- - vs2015_runtime
license: BSD-2-Clause
license_family: BSD
purls:
- pkg:pypi/llvmlite?source=hash-mapping
- size: 17050042
- timestamp: 1725305419951
+ size: 18033378
+ timestamp: 1742816086477
- conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
sha256: 9afe0b5cfa418e8bdb30d8917c5a6cec10372b037924916f1f85b9f4899a67a6
md5: 91e27ef3d05cc772ce627e51cff111c4
@@ -7154,88 +8034,19 @@ packages:
purls:
- pkg:pypi/locket?source=hash-mapping
size: 8250
- timestamp: 1650660473123
-- conda: https://prefix.dev/conda-forge/linux-64/lz4-4.3.3-py310h80b8a69_2.conda
- sha256: 7a1807e906846b633e0e2aeba720edf4f98df8d6bb886ddcc091fa0e3a622139
- md5: 2b8aa03bc9deca99d7e5d26ce27bb93d
- depends:
- - __glibc >=2.17,<3.0.a0
- - libgcc >=13
- - lz4-c >=1.10.0,<1.11.0a0
- - python >=3.10,<3.11.0a0
- - python_abi 3.10.* *_cp310
- license: BSD-3-Clause
- license_family: BSD
- purls:
- - pkg:pypi/lz4?source=hash-mapping
- size: 37364
- timestamp: 1733474410247
-- conda: https://prefix.dev/conda-forge/osx-arm64/lz4-4.3.3-py310hedecf87_2.conda
- sha256: 821f9c9c433c208b02ba74c13c29bbe6905424df4d0719fda21cda7772a63f3a
- md5: 20b4807d8bc4dede3533bb43f340d46e
- depends:
- - __osx >=11.0
- - lz4-c >=1.10.0,<1.11.0a0
- - python >=3.10,<3.11.0a0
- - python >=3.10,<3.11.0a0 *_cpython
- - python_abi 3.10.* *_cp310
- license: BSD-3-Clause
- license_family: BSD
- purls:
- - pkg:pypi/lz4?source=hash-mapping
- size: 102597
- timestamp: 1733474460262
-- conda: https://prefix.dev/conda-forge/win-64/lz4-4.3.3-py310hd8baafb_2.conda
- sha256: 778a895ab9909274dc57b7bc16cbf8f1e3980bccb7bb0111f16e3aec6b1c39d8
- md5: 3546f20f09fb9d3f5eaf764f87fb79f0
- depends:
- - lz4-c >=1.10.0,<1.11.0a0
- - python >=3.10,<3.11.0a0
- - python_abi 3.10.* *_cp310
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- license: BSD-3-Clause
- license_family: BSD
- purls:
- - pkg:pypi/lz4?source=hash-mapping
- size: 39891
- timestamp: 1733474751459
-- conda: https://prefix.dev/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda
- sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346
- md5: 9de5350a85c4a20c685259b889aa6393
- depends:
- - __glibc >=2.17,<3.0.a0
- - libgcc >=13
- - libstdcxx >=13
- license: BSD-2-Clause
- license_family: BSD
- purls: []
- size: 167055
- timestamp: 1733741040117
-- conda: https://prefix.dev/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda
- sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652
- md5: 01511afc6cc1909c5303cf31be17b44f
- depends:
- - __osx >=11.0
- - libcxx >=18
- license: BSD-2-Clause
- license_family: BSD
- purls: []
- size: 148824
- timestamp: 1733741047892
-- conda: https://prefix.dev/conda-forge/win-64/lz4-c-1.10.0-h2466b09_1.conda
- sha256: 632cf3bdaf7a7aeb846de310b6044d90917728c73c77f138f08aa9438fc4d6b5
- md5: 0b69331897a92fac3d8923549d48d092
+ timestamp: 1650660473123
+- conda: https://prefix.dev/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda
+ sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346
+ md5: 9de5350a85c4a20c685259b889aa6393
depends:
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - libstdcxx >=13
license: BSD-2-Clause
license_family: BSD
purls: []
- size: 139891
- timestamp: 1733741168264
+ size: 167055
+ timestamp: 1733741040117
- conda: https://prefix.dev/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda
sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a
md5: fee3164ac23dfca50cfcc8b85ddefb81
@@ -7280,6 +8091,36 @@ packages:
- pkg:pypi/markupsafe?source=hash-mapping
size: 24856
timestamp: 1733219782830
+- conda: https://prefix.dev/conda-forge/osx-64/markupsafe-3.0.2-py310h8e2f543_1.conda
+ sha256: c3f9a8738211c82e831117f2c5161dc940295aa251ec0f7ed466bced6f861360
+ md5: 946e287b30b11071874906e8b87b437c
+ depends:
+ - __osx >=10.13
+ - python >=3.10,<3.11.0a0
+ - python_abi 3.10.* *_cp310
+ constrains:
+ - jinja2 >=3.0.0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/markupsafe?source=hash-mapping
+ size: 22219
+ timestamp: 1733219861095
+- conda: https://prefix.dev/conda-forge/osx-64/markupsafe-3.0.2-py313h717bdf5_1.conda
+ sha256: 297242943522a907c270bc2f191d16142707d970541b9a093640801b767d7aa7
+ md5: a6fbde71416d6eb9898fcabf505a85c5
+ depends:
+ - __osx >=10.13
+ - python >=3.13,<3.14.0a0
+ - python_abi 3.13.* *_cp313
+ constrains:
+ - jinja2 >=3.0.0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/markupsafe?source=hash-mapping
+ size: 24363
+ timestamp: 1733219815199
- conda: https://prefix.dev/conda-forge/osx-arm64/markupsafe-3.0.2-py310hc74094e_1.conda
sha256: d907e2b7264ae060c0b79ad4accd7b79a59d43ca75c3ba107e534cd0d58115b5
md5: f6483697076f2711e6a54031a54314b6
@@ -7405,6 +8246,17 @@ packages:
purls: []
size: 124718448
timestamp: 1730231808335
+- conda: https://prefix.dev/conda-forge/osx-64/mkl-2023.2.0-h54c2260_50500.conda
+ sha256: de76dac5ab3bd22d4a73d50ce9fbe6a80d258c448ee71c5fa748010ca9331c39
+ md5: 0a342ccdc79e4fcd359245ac51941e7b
+ depends:
+ - llvm-openmp >=16.0.6
+ - tbb 2021.*
+ license: LicenseRef-ProprietaryIntel
+ license_family: Proprietary
+ purls: []
+ size: 119572546
+ timestamp: 1698350694044
- conda: https://prefix.dev/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda
sha256: 20e52b0389586d0b914a49cd286c5ccc9c47949bed60ca6df004d1d295f2edbd
md5: 302dff2807f2927b3e9e0d19d60121de
@@ -7431,6 +8283,20 @@ packages:
- pkg:pypi/ml-dtypes?source=hash-mapping
size: 283388
timestamp: 1736538961486
+- conda: https://prefix.dev/conda-forge/osx-64/ml_dtypes-0.5.1-py310h96a9d13_0.conda
+ sha256: e863943f050090f711f7c321c35d8bca5a127501c62d447734e770f99deec68c
+ md5: 57cdcd8632eb473b3fa80e5588d88c0c
+ depends:
+ - __osx >=10.13
+ - libcxx >=18
+ - numpy >=1.19,<3
+ - python >=3.10,<3.11.0a0
+ - python_abi 3.10.* *_cp310
+ license: MPL-2.0 AND Apache-2.0
+ purls:
+ - pkg:pypi/ml-dtypes?source=hash-mapping
+ size: 219977
+ timestamp: 1736539028850
- conda: https://prefix.dev/conda-forge/osx-arm64/ml_dtypes-0.5.1-py310h5936506_0.conda
sha256: a75c01da122fc1043e32adba9094922afc5f758ddaea47f5e56e0c111123294b
md5: 23c80623fc06fa0fa60237b14674cc69
@@ -7459,6 +8325,18 @@ packages:
purls: []
size: 116777
timestamp: 1725629179524
+- conda: https://prefix.dev/conda-forge/osx-64/mpc-1.3.1-h9d8efa1_1.conda
+ sha256: dcf91571da6c2f0db96d43a1b639047def05a0e1b6436d42c9129ab14af47b10
+ md5: 0520855aaae268ea413d6bc913f1384c
+ depends:
+ - __osx >=10.13
+ - gmp >=6.3.0,<7.0a0
+ - mpfr >=4.2.1,<5.0a0
+ license: LGPL-3.0-or-later
+ license_family: LGPL
+ purls: []
+ size: 107774
+ timestamp: 1725629348601
- conda: https://prefix.dev/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda
sha256: 2700899ad03302a1751dbf2bca135407e470dd83ac897ab91dd8675d4300f158
md5: a5635df796b71f6ca400fc7026f50701
@@ -7483,6 +8361,17 @@ packages:
purls: []
size: 634751
timestamp: 1725746740014
+- conda: https://prefix.dev/conda-forge/osx-64/mpfr-4.2.1-haed47dc_3.conda
+ sha256: dddb6721dff05b8dfb654c532725330231fcb81ff1e27d885ee0cdcc9fccf1c4
+ md5: d511e58aaaabfc23136880d9956fa7a6
+ depends:
+ - __osx >=10.13
+ - gmp >=6.3.0,<7.0a0
+ license: LGPL-3.0-only
+ license_family: LGPL
+ purls: []
+ size: 373396
+ timestamp: 1725746891597
- conda: https://prefix.dev/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda
sha256: 4463e4e2aba7668e37a1b8532859191b4477a6f3602a5d6b4d64ad4c4baaeac5
md5: 4e4ea852d54cc2b869842de5044662fb
@@ -7505,65 +8394,168 @@ packages:
- pkg:pypi/mpmath?source=hash-mapping
size: 439705
timestamp: 1733302781386
-- conda: https://prefix.dev/conda-forge/linux-64/msgpack-python-1.1.0-py310h3788b33_0.conda
- sha256: 73ca5f0c7d0727a57dcc3c402823ce3aa159ca075210be83078fcc485971e259
- md5: 6b586fb03d84e5bfbb1a8a3d9e2c9b60
+- conda: https://prefix.dev/conda-forge/linux-64/mypy-1.16.0-py310ha75aee5_0.conda
+ sha256: 5cbdfd2064073710b6d4c8a03b187e361c0227e3351744cf541ff9633d9da379
+ md5: a61944eed39e4d3aebe2878d8e0439d9
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=13
- - libstdcxx >=13
+ - mypy_extensions >=1.0.0
+ - pathspec >=0.9.0
+ - psutil >=4.0
- python >=3.10,<3.11.0a0
- python_abi 3.10.* *_cp310
- license: Apache-2.0
- license_family: Apache
+ - tomli >=1.1.0
+ - typing_extensions >=4.6.0
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/mypy?source=hash-mapping
+ size: 18162508
+ timestamp: 1748547897549
+- conda: https://prefix.dev/conda-forge/linux-64/mypy-1.16.0-py313h536fd9c_0.conda
+ sha256: 542234e8707c1784acd744d6234d36ce3b5943acf998a2d453feff319266676e
+ md5: 3ffbe69221d685e9afa221ef0e2a71c6
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - mypy_extensions >=1.0.0
+ - pathspec >=0.9.0
+ - psutil >=4.0
+ - python >=3.13,<3.14.0a0
+ - python_abi 3.13.* *_cp313
+ - typing_extensions >=4.6.0
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/mypy?source=hash-mapping
+ size: 17269093
+ timestamp: 1748547494947
+- conda: https://prefix.dev/conda-forge/osx-64/mypy-1.16.0-py310hbb8c376_0.conda
+ sha256: d272291c6e59725d88826cb140768e0bd6047f17ffe094ca054f51e9153f1a2c
+ md5: f23ad57327906f61b85a0ce6b1a26194
+ depends:
+ - __osx >=10.13
+ - mypy_extensions >=1.0.0
+ - pathspec >=0.9.0
+ - psutil >=4.0
+ - python >=3.10,<3.11.0a0
+ - python_abi 3.10.* *_cp310
+ - tomli >=1.1.0
+ - typing_extensions >=4.6.0
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/mypy?source=hash-mapping
+ size: 11951514
+ timestamp: 1748547572039
+- conda: https://prefix.dev/conda-forge/osx-64/mypy-1.16.0-py313h63b0ddb_0.conda
+ sha256: 83ba7f072c565ebdb7f0753078951d7e06c52f9f60511ca8481255406caadc5d
+ md5: ec5f77fa3f5136668cbcb6bcbfb1ef83
+ depends:
+ - __osx >=10.13
+ - mypy_extensions >=1.0.0
+ - pathspec >=0.9.0
+ - psutil >=4.0
+ - python >=3.13,<3.14.0a0
+ - python_abi 3.13.* *_cp313
+ - typing_extensions >=4.6.0
+ license: MIT
+ license_family: MIT
purls:
- - pkg:pypi/msgpack?source=hash-mapping
- size: 98083
- timestamp: 1725975111763
-- conda: https://prefix.dev/conda-forge/osx-arm64/msgpack-python-1.1.0-py310h7306fd8_0.conda
- sha256: 4736de9b2a239b202749881c8fa690dc5c882198cc2a2a8460567f0b9994e98e
- md5: 85b4e3f64bf1fdc6f7d210a7c34037f9
+ - pkg:pypi/mypy?source=hash-mapping
+ size: 11232466
+ timestamp: 1748547240219
+- conda: https://prefix.dev/conda-forge/osx-arm64/mypy-1.16.0-py310h078409c_0.conda
+ sha256: e8c4d987cc13ced8bca9128ac325fe09f14ffbcedf14e295d25b1328b9d829dc
+ md5: 1ad2eb08347327aa09a0331526089939
depends:
- __osx >=11.0
- - libcxx >=17
+ - mypy_extensions >=1.0.0
+ - pathspec >=0.9.0
+ - psutil >=4.0
- python >=3.10,<3.11.0a0
- python >=3.10,<3.11.0a0 *_cpython
- python_abi 3.10.* *_cp310
- license: Apache-2.0
- license_family: Apache
+ - tomli >=1.1.0
+ - typing_extensions >=4.6.0
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/mypy?source=hash-mapping
+ size: 9302149
+ timestamp: 1748547424712
+- conda: https://prefix.dev/conda-forge/osx-arm64/mypy-1.16.0-py313h90d716c_0.conda
+ sha256: a37d65ad2e837bc86eff91a0bf15ea86d6d64d7bb52dbf2720334314563cae50
+ md5: 4946c89919f258c1aad6000225b729a6
+ depends:
+ - __osx >=11.0
+ - mypy_extensions >=1.0.0
+ - pathspec >=0.9.0
+ - psutil >=4.0
+ - python >=3.13,<3.14.0a0
+ - python >=3.13,<3.14.0a0 *_cp313
+ - python_abi 3.13.* *_cp313
+ - typing_extensions >=4.6.0
+ license: MIT
+ license_family: MIT
purls:
- - pkg:pypi/msgpack?source=hash-mapping
- size: 84604
- timestamp: 1725975212736
-- conda: https://prefix.dev/conda-forge/win-64/msgpack-python-1.1.0-py310hc19bc0b_0.conda
- sha256: db5c3d5e2d28ba0e4e1633f6d52079f0e397bdb60a6f58a2fa942e88071182d2
- md5: 2cfcbd596afd76879de4824c2c24f4a2
+ - pkg:pypi/mypy?source=compressed-mapping
+ size: 10453519
+ timestamp: 1748547483049
+- conda: https://prefix.dev/conda-forge/win-64/mypy-1.16.0-py310ha8f682b_0.conda
+ sha256: 240740e6e003851f79494e3d53abda4799854b874dfeaee01318def43fe16a12
+ md5: 4c1035de8a27a8684c821547428bd614
depends:
+ - mypy_extensions >=1.0.0
+ - pathspec >=0.9.0
+ - psutil >=4.0
- python >=3.10,<3.11.0a0
- python_abi 3.10.* *_cp310
+ - tomli >=1.1.0
+ - typing_extensions >=4.6.0
- ucrt >=10.0.20348.0
- vc >=14.2,<15
- vc14_runtime >=14.29.30139
- license: Apache-2.0
- license_family: Apache
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/mypy?source=hash-mapping
+ size: 9675989
+ timestamp: 1748547662848
+- conda: https://prefix.dev/conda-forge/win-64/mypy-1.16.0-py313ha7868ed_0.conda
+ sha256: 96f238306b14960b379570a209a864f448869b0c19a52b7ac5ac37d07c8ae797
+ md5: ae82bb456e3d670e21deac8b067fdc45
+ depends:
+ - mypy_extensions >=1.0.0
+ - pathspec >=0.9.0
+ - psutil >=4.0
+ - python >=3.13,<3.14.0a0
+ - python_abi 3.13.* *_cp313
+ - typing_extensions >=4.6.0
+ - ucrt >=10.0.20348.0
+ - vc >=14.2,<15
+ - vc14_runtime >=14.29.30139
+ license: MIT
+ license_family: MIT
purls:
- - pkg:pypi/msgpack?source=hash-mapping
- size: 82057
- timestamp: 1725975615063
-- conda: https://prefix.dev/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda
- sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe
- md5: 29097e7ea634a45cc5386b95cac6568f
+ - pkg:pypi/mypy?source=hash-mapping
+ size: 8496738
+ timestamp: 1748547465206
+- conda: https://prefix.dev/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda
+ sha256: 6ed158e4e5dd8f6a10ad9e525631e35cee8557718f83de7a4e3966b1f772c4b1
+ md5: e9c622e0d00fa24a6292279af3ab6d06
depends:
- python >=3.9
license: MIT
license_family: MIT
purls:
- pkg:pypi/mypy-extensions?source=hash-mapping
- size: 10854
- timestamp: 1733230986902
-- conda: https://prefix.dev/conda-forge/noarch/myst-parser-4.0.0-pyhd8ed1ab_1.conda
- sha256: 9d93483bf59b4d550577b40e2bc3f39e81fdcb34533f03a6da05b0adad34526e
- md5: fbc398f13e5f5a90f9065eaa5d91a28f
+ size: 11766
+ timestamp: 1745776666688
+- conda: https://prefix.dev/conda-forge/noarch/myst-parser-4.0.1-pyhd8ed1ab_0.conda
+ sha256: f035d0ea623f63247f0f944eb080eaa2a45fb5b7fda8947f4ac94d381ef3bf33
+ md5: b528795158847039003033ee0db20e9b
depends:
- docutils >=0.19,<0.22
- jinja2
@@ -7576,27 +8568,49 @@ packages:
license_family: MIT
purls:
- pkg:pypi/myst-parser?source=hash-mapping
- size: 72901
- timestamp: 1734472043484
-- conda: https://prefix.dev/conda-forge/linux-64/ncurses-6.5-h2d0b736_2.conda
- sha256: 17fe6afd8a00446010220d52256bd222b1e4fcb93bd587e7784b03219f3dc358
- md5: 04b34b9a40cdc48cfdab261ab176ff74
+ size: 73074
+ timestamp: 1739381945342
+- conda: https://prefix.dev/conda-forge/linux-64/nccl-2.27.3.1-h9b8ff78_0.conda
+ sha256: f52860f0e0888b98e71085a6247007154d828ff574ba719450b1c7a0f87fe169
+ md5: 9541fcbc65e0ac6c99e045ef4e9b2d40
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - cuda-version >=12,<13.0a0
+ - libgcc >=13
+ - libstdcxx >=13
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 213637256
+ timestamp: 1748900545315
+- conda: https://prefix.dev/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda
+ sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586
+ md5: 47e340acb35de30501a76c7c799c41d7
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=13
license: X11 AND BSD-3-Clause
purls: []
- size: 894452
- timestamp: 1736683239706
-- conda: https://prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_2.conda
- sha256: b45c73348ec9841d5c893acc2e97adff24127548fe8c786109d03c41ed564e91
- md5: f6f7c5b7d0983be186c46c4f6f8f9af8
+ size: 891641
+ timestamp: 1738195959188
+- conda: https://prefix.dev/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda
+ sha256: ea4a5d27ded18443749aefa49dc79f6356da8506d508b5296f60b8d51e0c4bd9
+ md5: ced34dd9929f491ca6dab6a2927aff25
+ depends:
+ - __osx >=10.13
+ license: X11 AND BSD-3-Clause
+ purls: []
+ size: 822259
+ timestamp: 1738196181298
+- conda: https://prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda
+ sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733
+ md5: 068d497125e4bf8a66bf707254fff5ae
depends:
- __osx >=11.0
license: X11 AND BSD-3-Clause
purls: []
- size: 796754
- timestamp: 1736683572099
+ size: 797030
+ timestamp: 1738196177597
- conda: https://prefix.dev/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda
sha256: 39625cd0c9747fa5c46a9a90683b8997d8b9649881b3dc88336b13b7bdd60117
md5: fd40bf7f7f4bc4b647dc8512053d9873
@@ -7610,7 +8624,8 @@ packages:
- pandas >=2.0
license: BSD-3-Clause
license_family: BSD
- purls: []
+ purls:
+ - pkg:pypi/networkx?source=hash-mapping
size: 1265008
timestamp: 1731521053408
- conda: https://prefix.dev/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda
@@ -7625,50 +8640,66 @@ packages:
- pkg:pypi/nodeenv?source=hash-mapping
size: 34574
timestamp: 1734112236147
-- conda: https://prefix.dev/conda-forge/linux-64/nodejs-22.12.0-hf235a45_0.conda
- sha256: 1a519b80bc3d5afddeccb593711df2e60ac48ecf3e903f7bdc279f64f7210fc4
- md5: 30458a23bf5568d2bc0e1fed6a4e2b12
+- conda: https://prefix.dev/conda-forge/linux-64/nodejs-22.13.0-hf235a45_0.conda
+ sha256: 925ea8839d6f26d0eb4204675b98a862803a9a9657fd36a4a22c4c29a479a911
+ md5: 1f9efd96347aa008bd2c735d7d88fc75
depends:
- __glibc >=2.28,<3.0.a0
- icu >=75.1,<76.0a0
- libgcc >=13
- libstdcxx >=13
- - libuv >=1.49.2,<2.0a0
+ - libuv >=1.50.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - openssl >=3.4.1,<4.0a0
+ - zlib
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 21691794
+ timestamp: 1741809786920
+- conda: https://prefix.dev/conda-forge/osx-64/nodejs-22.13.0-hffbc63d_0.conda
+ sha256: 24afdefa36b68ec1a8159891ed458a7c79b81b35953b9028de142ce640b578b0
+ md5: 74b4d1661ede30e27fdafb0ddb49e13d
+ depends:
+ - __osx >=10.15
+ - icu >=75.1,<76.0a0
+ - libcxx >=18
+ - libuv >=1.50.0,<2.0a0
- libzlib >=1.3.1,<2.0a0
- openssl >=3.4.0,<4.0a0
- zlib
license: MIT
license_family: MIT
purls: []
- size: 21796933
- timestamp: 1734113054756
-- conda: https://prefix.dev/conda-forge/osx-arm64/nodejs-22.12.0-h02a13b7_0.conda
- sha256: 0d6f31cf19a3671aa7a6473392447801b4231ec832c8526b9a975b5c01930343
- md5: 293e451c0590d9029036f58aa109bc5d
+ size: 15878764
+ timestamp: 1737395834264
+- conda: https://prefix.dev/conda-forge/osx-arm64/nodejs-22.13.0-h02a13b7_0.conda
+ sha256: d390651526630468e385a74474bb3f17849861182257c161bbca8fca7734d578
+ md5: 93cd91b998422ebf2dace6c13c1842ce
depends:
- __osx >=11.0
- icu >=75.1,<76.0a0
- libcxx >=18
- - libuv >=1.49.2,<2.0a0
+ - libuv >=1.50.0,<2.0a0
- libzlib >=1.3.1,<2.0a0
- openssl >=3.4.0,<4.0a0
- zlib
license: MIT
license_family: MIT
purls: []
- size: 15429539
- timestamp: 1734125056499
-- conda: https://prefix.dev/conda-forge/win-64/nodejs-22.12.0-hfeaa22a_0.conda
- sha256: 43d728b5d56ffeea5e95308218d7045acabcd318ced6ad4f2e89f295666aadda
- md5: 4e1fa4ec4147ec961f75a3b6f7a558af
+ size: 15490642
+ timestamp: 1737401388520
+- conda: https://prefix.dev/conda-forge/win-64/nodejs-22.13.0-hfeaa22a_0.conda
+ sha256: 2e72f510715960a0579a2a5452104d20044e8ba74742b87899e24c11cb72d578
+ md5: bd7dde69cfd032aec6ba645297315aff
license: MIT
license_family: MIT
purls: []
- size: 26256775
- timestamp: 1734108943224
-- conda: https://prefix.dev/conda-forge/noarch/nodejs-wheel-22.13.0-pyhd8ed1ab_0.conda
- sha256: 6c36ec2f56105bd6bfe572b8ce7b6b4eb770a2c3db3655d99ead99c5a8b1a5d7
- md5: 17efc155ae707cdc9fe2970ebd74ee01
+ size: 26232097
+ timestamp: 1737384238153
+- conda: https://prefix.dev/conda-forge/noarch/nodejs-wheel-22.16.0-pyhd8ed1ab_0.conda
+ sha256: ea240f50fd4a497a7f0490ca7bb3d158f246a9ba7d7dc503fb2562c681b7154d
+ md5: c5e4d28510f79893789933366c63521c
depends:
- nodejs
- python >=3.9
@@ -7676,8 +8707,8 @@ packages:
license_family: MIT
purls:
- pkg:pypi/nodejs-wheel-binaries?source=hash-mapping
- size: 11810
- timestamp: 1736400170073
+ size: 12413
+ timestamp: 1747937965724
- conda: https://prefix.dev/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2
sha256: d38542a151a90417065c1a234866f97fd1ea82a81de75ecb725955ab78f88b4b
md5: 9a66894dfd07c4510beb6b3f9672ccc0
@@ -7688,86 +8719,132 @@ packages:
purls: []
size: 3843
timestamp: 1582593857545
-- conda: https://prefix.dev/conda-forge/linux-64/numba-0.60.0-py310h5dc88bb_0.conda
- sha256: c76c5baa087c2be3374bdb5eee37caf0c70f390c02a48aeb5e4337b600e5e319
- md5: 73e2e2c0ffad216572ce01952ff0099c
+- conda: https://prefix.dev/conda-forge/linux-64/numba-0.61.2-py310h699fe88_0.conda
+ sha256: b8865af0c38ec64ebd807ba1a18606053e3c85cc8c735f1266304d265dbed517
+ md5: 824facdcc7be56254cbc63fa28cb06aa
depends:
+ - __glibc >=2.17,<3.0.a0
- _openmp_mutex >=4.5
- - libgcc-ng >=12
- - libstdcxx-ng >=12
- - llvmlite >=0.43.0,<0.44.0a0
+ - libgcc >=13
+ - libstdcxx >=13
+ - llvmlite >=0.44.0,<0.45.0a0
- numpy >=1.19,<3
- - numpy >=1.22.3,<2.1
+ - numpy >=1.24
- python >=3.10,<3.11.0a0
- python_abi 3.10.* *_cp310
constrains:
+ - cuda-python >=11.6
- cuda-version >=11.2
+ - cudatoolkit >=11.2
+ - libopenblas !=0.3.6
+ - tbb >=2021.6.0
+ - scipy >=1.0
+ license: BSD-2-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/numba?source=hash-mapping
+ size: 4444694
+ timestamp: 1744232279110
+- conda: https://prefix.dev/conda-forge/osx-64/numba-0.61.2-py310h6fcc139_0.conda
+ sha256: 64c829d675d1d4d79636a4144ca29810dcb7139767afade188f10d853fce1fbd
+ md5: 8eceec4ebbb19edabab5210aa6b277e3
+ depends:
+ - __osx >=10.13
+ - libcxx >=18
+ - llvm-openmp >=18.1.8
+ - llvm-openmp >=20.1.2
+ - llvmlite >=0.44.0,<0.45.0a0
+ - numpy >=1.19,<3
+ - numpy >=1.24
+ - python >=3.10,<3.11.0a0
+ - python_abi 3.10.* *_cp310
+ constrains:
- libopenblas !=0.3.6
+ - cudatoolkit >=11.2
- scipy >=1.0
+ - cuda-version >=11.2
- tbb >=2021.6.0
- cuda-python >=11.6
- - cudatoolkit >=11.2
license: BSD-2-Clause
license_family: BSD
purls:
- pkg:pypi/numba?source=hash-mapping
- size: 4376821
- timestamp: 1718888164099
-- conda: https://prefix.dev/conda-forge/osx-arm64/numba-0.60.0-py310h0628f0e_0.conda
- sha256: e2f17dfeaa7723df84b744108c3cf17fb68d12dff46d91612612a1a820ca6910
- md5: 830470caad249f1877e622820dca4e2a
+ size: 4482764
+ timestamp: 1744232296473
+- conda: https://prefix.dev/conda-forge/osx-arm64/numba-0.61.2-py310h75d646b_0.conda
+ sha256: b2bb72b26aec4b35db68b035783f42fdbbade845cc57783123914880dc1e123d
+ md5: 3add5d4a818767cf20bb22275d74a70b
depends:
- __osx >=11.0
- - libcxx >=16
- - llvm-openmp >=16.0.6
- - llvm-openmp >=18.1.7
- - llvmlite >=0.43.0,<0.44.0a0
+ - libcxx >=18
+ - llvm-openmp >=18.1.8
+ - llvm-openmp >=20.1.2
+ - llvmlite >=0.44.0,<0.45.0a0
- numpy >=1.19,<3
- - numpy >=1.22.3,<2.1
+ - numpy >=1.24
- python >=3.10,<3.11.0a0
- python >=3.10,<3.11.0a0 *_cpython
- python_abi 3.10.* *_cp310
constrains:
- - cuda-python >=11.6
+ - libopenblas >=0.3.18,!=0.3.20
- scipy >=1.0
- - tbb >=2021.6.0
- cuda-version >=11.2
+ - tbb >=2021.6.0
+ - cuda-python >=11.6
- cudatoolkit >=11.2
- - libopenblas >=0.3.18, !=0.3.20
license: BSD-2-Clause
license_family: BSD
purls:
- pkg:pypi/numba?source=hash-mapping
- size: 4357036
- timestamp: 1718888347041
-- conda: https://prefix.dev/conda-forge/win-64/numba-0.60.0-py310h7793332_0.conda
- sha256: 65cbc4fd3e29bb98f68fc694640546f37929c4766def46796579d7488ef9b714
- md5: 7bf58dbea05720f25c5b1fe99cac026c
+ size: 4490438
+ timestamp: 1744232500611
+- conda: https://prefix.dev/conda-forge/win-64/numba-0.61.2-py310h7793332_0.conda
+ sha256: 9648e97e73c106bb8ddd50f27669959389490b64b4ac33e049641011d2239f22
+ md5: b8e2ae572d1d4a2d4686aee8cc66b9f3
depends:
- - llvmlite >=0.43.0,<0.44.0a0
+ - llvmlite >=0.44.0,<0.45.0a0
- numpy >=1.19,<3
- - numpy >=1.22.3,<2.1
+ - numpy >=1.24
- python >=3.10,<3.11.0a0
- python_abi 3.10.* *_cp310
- ucrt >=10.0.20348.0
- vc >=14.2,<15
- vc14_runtime >=14.29.30139
constrains:
- - cudatoolkit >=11.2
- - cuda-python >=11.6
- - scipy >=1.0
- - cuda-version >=11.2
- libopenblas !=0.3.6
- tbb >=2021.6.0
+ - scipy >=1.0
+ - cuda-python >=11.6
+ - cuda-version >=11.2
+ - cudatoolkit >=11.2
license: BSD-2-Clause
license_family: BSD
purls:
- pkg:pypi/numba?source=hash-mapping
- size: 4370592
- timestamp: 1718888808848
-- conda: https://prefix.dev/conda-forge/linux-64/numpy-2.0.2-py310hd6e36ab_1.conda
- sha256: e62a7ea73120834e711becbd5c844ac5aba5b5a3a689a5335a1a0221214c43f2
- md5: 57358466a280269a77f9539010a9d888
+ size: 4463619
+ timestamp: 1744232662364
+- conda: https://prefix.dev/conda-forge/linux-64/numpy-1.22.0-py310h454958d_1.tar.bz2
+ sha256: 8f5a9c1feed1d6062a6d731a62e9fadc52e801789125e8d1a2cea6966aedd411
+ md5: 607c66f0cce2986515a8fe9e136b2b57
+ depends:
+ - libblas >=3.8.0,<4.0a0
+ - libcblas >=3.8.0,<4.0a0
+ - libgcc-ng >=9.4.0
+ - liblapack >=3.8.0,<4.0a0
+ - libstdcxx-ng >=9.4.0
+ - python >=3.10,<3.11.0a0
+ - python_abi 3.10.* *_cp310
+ constrains:
+ - numpy-base <0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/numpy?source=hash-mapping
+ size: 20333181
+ timestamp: 1642632736818
+- conda: https://prefix.dev/conda-forge/linux-64/numpy-2.2.6-py310hefbff90_0.conda
+ sha256: 0ba94a61f91d67413e60fa8daa85627a8f299b5054b0eff8f93d26da83ec755e
+ md5: b0cea2c364bf65cd19e023040eeab05d
depends:
- __glibc >=2.17,<3.0.a0
- libblas >=3.9.0,<4.0a0
@@ -7783,11 +8860,11 @@ packages:
license_family: BSD
purls:
- pkg:pypi/numpy?source=hash-mapping
- size: 7767225
- timestamp: 1732314820024
-- conda: https://prefix.dev/conda-forge/linux-64/numpy-2.2.1-py310h5851e9f_0.conda
- sha256: 40d29714ef11d22f5c452ff856e03f47d9824c1ee1bf19f46c4a473dcd1b7cd8
- md5: d38cb65becc66134ed42a02e6155e8e0
+ size: 7893263
+ timestamp: 1747545075833
+- conda: https://prefix.dev/conda-forge/linux-64/numpy-2.3.0-py313h103f029_0.conda
+ sha256: a646e7e284dff94e1ef2dc816a5a61ac069907ea97192159da32ee190c56f64a
+ md5: d24d95f39ffa3c70827df0183b01df04
depends:
- __glibc >=2.17,<3.0.a0
- libblas >=3.9.0,<4.0a0
@@ -7795,19 +8872,19 @@ packages:
- libgcc >=13
- liblapack >=3.9.0,<4.0a0
- libstdcxx >=13
- - python >=3.10,<3.11.0a0
- - python_abi 3.10.* *_cp310
+ - python >=3.13,<3.14.0a0
+ - python_abi 3.13.* *_cp313t
constrains:
- numpy-base <0a0
license: BSD-3-Clause
license_family: BSD
purls:
- pkg:pypi/numpy?source=hash-mapping
- size: 7912254
- timestamp: 1734904849824
-- conda: https://prefix.dev/conda-forge/linux-64/numpy-2.2.1-py313hb30382a_0.conda
- sha256: 53c5baea29d111126b6dbe969ac1c36d481740f0f91babe6cfd121b8d9d8e67f
- md5: bacc73d89e22828efedf31fdc4b54b4e
+ size: 8503297
+ timestamp: 1749430966275
+- conda: https://prefix.dev/conda-forge/linux-64/numpy-2.3.0-py313h17eae1a_0.conda
+ sha256: 8b88ade24df5229c5d76c5ef09568ae4630b1095982e94648fbbeb18f475aa61
+ md5: db18a34466bef0863e9301b518a75e8f
depends:
- __glibc >=2.17,<3.0.a0
- libblas >=3.9.0,<4.0a0
@@ -7822,18 +8899,92 @@ packages:
license: BSD-3-Clause
license_family: BSD
purls:
+ - pkg:pypi/numpy?source=compressed-mapping
+ size: 8545037
+ timestamp: 1749430954481
+- conda: https://prefix.dev/conda-forge/osx-64/numpy-1.22.0-py310hfbbbacf_1.tar.bz2
+ sha256: 314f87226d04969a8cf6444a547b8437c5a45869acedb0d9adca9d18b0b0db80
+ md5: 6c533068089d17205d21055ed717831e
+ depends:
+ - libblas >=3.8.0,<4.0a0
+ - libcblas >=3.8.0,<4.0a0
+ - libcxx >=11.1.0
+ - liblapack >=3.8.0,<4.0a0
+ - python >=3.10,<3.11.0a0
+ - python_abi 3.10.* *_cp310
+ constrains:
+ - numpy-base <0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
- pkg:pypi/numpy?source=hash-mapping
- size: 8478406
- timestamp: 1734904713763
-- conda: https://prefix.dev/conda-forge/osx-arm64/numpy-2.0.2-py310h530be0a_1.conda
- sha256: 54fcdfc53cfc55538dc4c3e8f47af421e697a4ce66ef051c98f50413137a6689
- md5: 0200a832a125f14d5a20cc0512ebc575
+ size: 6861771
+ timestamp: 1642633197594
+- conda: https://prefix.dev/conda-forge/osx-64/numpy-2.2.6-py310h07c5b4d_0.conda
+ sha256: f1851c5726ff1a4de246e385ba442d749a68ef39316c834933ee9b980dbe62df
+ md5: d79253493dcc76b95221588b98e1eb3c
depends:
- - __osx >=11.0
+ - __osx >=10.13
+ - libblas >=3.9.0,<4.0a0
+ - libcblas >=3.9.0,<4.0a0
+ - libcxx >=18
+ - liblapack >=3.9.0,<4.0a0
+ - python >=3.10,<3.11.0a0
+ - python_abi 3.10.* *_cp310
+ constrains:
+ - numpy-base <0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/numpy?source=hash-mapping
+ size: 6988856
+ timestamp: 1747545137089
+- conda: https://prefix.dev/conda-forge/osx-64/numpy-2.3.0-py313h6699f8c_0.conda
+ sha256: b7af1f24ee3600d8e8892f9bca8c40d08792714764eaf80926c8fbe18919f92d
+ md5: dc2afb3c85fbcec2294eef844540c4b5
+ depends:
+ - __osx >=10.13
+ - libblas >=3.9.0,<4.0a0
+ - libcblas >=3.9.0,<4.0a0
+ - libcxx >=18
+ - liblapack >=3.9.0,<4.0a0
+ - python >=3.13,<3.14.0a0
+ - python_abi 3.13.* *_cp313t
+ constrains:
+ - numpy-base <0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/numpy?source=hash-mapping
+ size: 7738014
+ timestamp: 1749431078203
+- conda: https://prefix.dev/conda-forge/osx-64/numpy-2.3.0-py313hc518a0f_0.conda
+ sha256: 6e751f573b6aa727b83bdcb6534c9a4ffe05bcb56a659eb3f1418d28794213cc
+ md5: 9ff00ee247ea2b114a56de1a31a5d5af
+ depends:
+ - __osx >=10.13
- libblas >=3.9.0,<4.0a0
- libcblas >=3.9.0,<4.0a0
- libcxx >=18
- liblapack >=3.9.0,<4.0a0
+ - python >=3.13,<3.14.0a0
+ - python_abi 3.13.* *_cp313
+ constrains:
+ - numpy-base <0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/numpy?source=compressed-mapping
+ size: 7634474
+ timestamp: 1749431208151
+- conda: https://prefix.dev/conda-forge/osx-arm64/numpy-1.22.0-py310h567df17_1.tar.bz2
+ sha256: 985e83cdda1fb1d0c3ff813381c258818696985d10fd4ccab2b719ea8fdc8652
+ md5: 6ecd7326570ae2fb65fa4d8427f64213
+ depends:
+ - libblas >=3.9.0,<4.0a0
+ - libcblas >=3.9.0,<4.0a0
+ - libcxx >=11.1.0
+ - liblapack >=3.9.0,<4.0a0
- python >=3.10,<3.11.0a0
- python >=3.10,<3.11.0a0 *_cpython
- python_abi 3.10.* *_cp310
@@ -7843,11 +8994,11 @@ packages:
license_family: BSD
purls:
- pkg:pypi/numpy?source=hash-mapping
- size: 5754771
- timestamp: 1732314704107
-- conda: https://prefix.dev/conda-forge/osx-arm64/numpy-2.2.1-py310ha1ddda0_0.conda
- sha256: 256d88d6620977edcda48b617217257e42ceb9b72d3a55297d1c92e455fe0ccb
- md5: ba32b5714d7cac97145b2d015d30c9b8
+ size: 6291591
+ timestamp: 1642632976128
+- conda: https://prefix.dev/conda-forge/osx-arm64/numpy-2.2.6-py310h4d83441_0.conda
+ sha256: 87704bcd5f4a4f88eaf2a97f07e9825803b58a8003a209b91e89669317523faf
+ md5: f4bd8ac423d04b3c444b96f2463d3519
depends:
- __osx >=11.0
- libblas >=3.9.0,<4.0a0
@@ -7862,12 +9013,32 @@ packages:
license: BSD-3-Clause
license_family: BSD
purls:
- - pkg:pypi/numpy?source=hash-mapping
- size: 5929029
- timestamp: 1734904776467
-- conda: https://prefix.dev/conda-forge/osx-arm64/numpy-2.2.1-py313ha4a2180_0.conda
- sha256: c6dafb68d407bd4f34a8e178fe37be0c0c6533e6408a066d2cfcdccd6eb63402
- md5: 186189cd83b1b95e73a805a268bc7a98
+ - pkg:pypi/numpy?source=hash-mapping
+ size: 5841650
+ timestamp: 1747545043441
+- conda: https://prefix.dev/conda-forge/osx-arm64/numpy-2.3.0-py313h41a2e72_0.conda
+ sha256: d473005786a27cf4e1430d45a99a61626c2fbf61eb25b4d021cee8d217b973d2
+ md5: 0dc3aa075f3e64bdda6e779e2cbf5aa9
+ depends:
+ - __osx >=11.0
+ - libblas >=3.9.0,<4.0a0
+ - libcblas >=3.9.0,<4.0a0
+ - libcxx >=18
+ - liblapack >=3.9.0,<4.0a0
+ - python >=3.13,<3.14.0a0
+ - python >=3.13,<3.14.0a0 *_cp313
+ - python_abi 3.13.* *_cp313
+ constrains:
+ - numpy-base <0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/numpy?source=compressed-mapping
+ size: 6525213
+ timestamp: 1749430964570
+- conda: https://prefix.dev/conda-forge/osx-arm64/numpy-2.3.0-py313h991d4a7_0.conda
+ sha256: 0dea09495c653c75e2ffda698a5be0aca81667b9f663d9631a95c00eddd88969
+ md5: 0d2ceb567a45d4dfe3eb9f2accb982ea
depends:
- __osx >=11.0
- libblas >=3.9.0,<4.0a0
@@ -7875,19 +9046,38 @@ packages:
- libcxx >=18
- liblapack >=3.9.0,<4.0a0
- python >=3.13,<3.14.0a0
- - python >=3.13,<3.14.0a0 *_cp313
- - python_abi 3.13.* *_cp313
+ - python >=3.13,<3.14.0a0 *_cp313t
+ - python_abi 3.13.* *_cp313t
+ constrains:
+ - numpy-base <0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/numpy?source=hash-mapping
+ size: 8127568
+ timestamp: 1749431087698
+- conda: https://prefix.dev/conda-forge/win-64/numpy-1.22.0-py310hcae7c84_1.tar.bz2
+ sha256: c327b5bcc96e9f06147c03eecba689eb3cfe2478d8e68f17b471b273ee60cf45
+ md5: 07f52c684a2387799426a532170152b6
+ depends:
+ - libblas >=3.8.0,<4.0a0
+ - libcblas >=3.8.0,<4.0a0
+ - liblapack >=3.8.0,<4.0a0
+ - python >=3.10,<3.11.0a0
+ - python_abi 3.10.* *_cp310
+ - vc >=14.1,<15
+ - vs2015_runtime >=14.16.27033
constrains:
- numpy-base <0a0
license: BSD-3-Clause
license_family: BSD
purls:
- pkg:pypi/numpy?source=hash-mapping
- size: 6513050
- timestamp: 1734904817005
-- conda: https://prefix.dev/conda-forge/win-64/numpy-2.0.2-py310h1ec8c79_1.conda
- sha256: 2537e8dadd1656d49f55b7f2422bef745a60a308fcf879f2d74dc8338aecb4bb
- md5: 4f2239328935b02e9024e25dc21840c3
+ size: 6171270
+ timestamp: 1642633334774
+- conda: https://prefix.dev/conda-forge/win-64/numpy-2.2.6-py310h4987827_0.conda
+ sha256: 6f628e51763b86a535a723664e3aa1e38cb7147a2697f80b75c1980c1ed52f3e
+ md5: d2596785ac2cf5bab04e2ee9e5d04041
depends:
- libblas >=3.9.0,<4.0a0
- libcblas >=3.9.0,<4.0a0
@@ -7903,17 +9093,17 @@ packages:
license_family: BSD
purls:
- pkg:pypi/numpy?source=hash-mapping
- size: 6372921
- timestamp: 1732315310731
-- conda: https://prefix.dev/conda-forge/win-64/numpy-2.2.1-py310hb9d903e_0.conda
- sha256: 942ec24291d65e00e718765016b1f6b6be9bc5f09137dc14c21e047b94a09d30
- md5: 25361f25ec68789cea29b14b412970e8
+ size: 6596153
+ timestamp: 1747545352390
+- conda: https://prefix.dev/conda-forge/win-64/numpy-2.3.0-py313hd96daed_0.conda
+ sha256: 4e720b130b947705c3149256f5ee3391c77d4f8e089d0780fc956116b61789a9
+ md5: 87b9d2d5ec66618019cd7ff8d856cce1
depends:
- libblas >=3.9.0,<4.0a0
- libcblas >=3.9.0,<4.0a0
- liblapack >=3.9.0,<4.0a0
- - python >=3.10,<3.11.0a0
- - python_abi 3.10.* *_cp310
+ - python >=3.13,<3.14.0a0
+ - python_abi 3.13.* *_cp313t
- ucrt >=10.0.20348.0
- vc >=14.2,<15
- vc14_runtime >=14.29.30139
@@ -7923,11 +9113,11 @@ packages:
license_family: BSD
purls:
- pkg:pypi/numpy?source=hash-mapping
- size: 6420026
- timestamp: 1734905273023
-- conda: https://prefix.dev/conda-forge/win-64/numpy-2.2.1-py313hd65a2fa_0.conda
- sha256: a49b54335d97b674bc09dacce0b232cf748e730500dcc45172f8dd9db3c0fb99
- md5: 80b2f22cec897016e76261aea177fde8
+ size: 6763262
+ timestamp: 1749431105515
+- conda: https://prefix.dev/conda-forge/win-64/numpy-2.3.0-py313hefb8edb_0.conda
+ sha256: b2d8af00021061b43fc43f24ad7f135ff3641bc642e25dab0a175126facb749b
+ md5: 34a477d1a0c5396c6d82d6f7765ca339
depends:
- libblas >=3.9.0,<4.0a0
- libcblas >=3.9.0,<4.0a0
@@ -7943,8 +9133,8 @@ packages:
license_family: BSD
purls:
- pkg:pypi/numpy?source=hash-mapping
- size: 7147174
- timestamp: 1734905243335
+ size: 6646194
+ timestamp: 1749431079208
- conda: https://prefix.dev/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda
sha256: d836860163b027622cb59b96b92824dd75196a37d599e8ae69733b31769989a9
md5: 5af206d64d18d6c8dfb3122b4d9e643b
@@ -7959,76 +9149,43 @@ packages:
- pkg:pypi/numpydoc?source=hash-mapping
size: 58041
timestamp: 1733650959971
-- conda: https://prefix.dev/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda
- sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39
- md5: 9e5816bc95d285c115a3ebc2f8563564
+- conda: https://prefix.dev/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda
+ sha256: b4491077c494dbf0b5eaa6d87738c22f2154e9277e5293175ec187634bd808a0
+ md5: de356753cfdbffcde5bb1e86e3aa6cd0
depends:
- __glibc >=2.17,<3.0.a0
+ - ca-certificates
- libgcc >=13
- - libpng >=1.6.44,<1.7.0a0
- - libstdcxx >=13
- - libtiff >=4.7.0,<4.8.0a0
- - libzlib >=1.3.1,<2.0a0
- license: BSD-2-Clause
- license_family: BSD
- purls: []
- size: 342988
- timestamp: 1733816638720
-- conda: https://prefix.dev/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda
- sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7
- md5: 4b71d78648dbcf68ce8bf22bb07ff838
- depends:
- - __osx >=11.0
- - libcxx >=18
- - libpng >=1.6.44,<1.7.0a0
- - libtiff >=4.7.0,<4.8.0a0
- - libzlib >=1.3.1,<2.0a0
- license: BSD-2-Clause
- license_family: BSD
- purls: []
- size: 319362
- timestamp: 1733816781741
-- conda: https://prefix.dev/conda-forge/win-64/openjpeg-2.5.3-h4d64b90_0.conda
- sha256: 410175815df192f57a07c29a6b3fdd4231937173face9e63f0830c1234272ce3
- md5: fc050366dd0b8313eb797ed1ffef3a29
- depends:
- - libpng >=1.6.44,<1.7.0a0
- - libtiff >=4.7.0,<4.8.0a0
- - libzlib >=1.3.1,<2.0a0
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- license: BSD-2-Clause
- license_family: BSD
+ license: Apache-2.0
+ license_family: Apache
purls: []
- size: 240148
- timestamp: 1733817010335
-- conda: https://prefix.dev/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda
- sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f
- md5: 4ce6875f75469b2757a65e10a5d05e31
+ size: 3117410
+ timestamp: 1746223723843
+- conda: https://prefix.dev/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda
+ sha256: bcac94cb82a458b4e3164da8d9bced08cc8c3da2bc3bd7330711a3689c1464a5
+ md5: 919faa07b9647beb99a0e7404596a465
depends:
- - __glibc >=2.17,<3.0.a0
+ - __osx >=10.13
- ca-certificates
- - libgcc >=13
license: Apache-2.0
license_family: Apache
purls: []
- size: 2937158
- timestamp: 1736086387286
-- conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda
- sha256: 97772762abc70b3a537683ca9fc3ff3d6099eb64e4aba3b9c99e6fce48422d21
- md5: 22f971393637480bda8c679f374d8861
+ size: 2739181
+ timestamp: 1746224401118
+- conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda
+ sha256: 73d366c1597a10bcd5f3604b5f0734b31c23225536e03782c6a13f9be9d01bff
+ md5: 5c7aef00ef60738a14e0e612cfc5bcde
depends:
- __osx >=11.0
- ca-certificates
license: Apache-2.0
license_family: Apache
purls: []
- size: 2936415
- timestamp: 1736086108693
-- conda: https://prefix.dev/conda-forge/win-64/openssl-3.4.0-ha4e3fda_1.conda
- sha256: 519a06eaab7c878fbebb8cab98ea4a4465eafb1e9ed8c6ce67226068a80a92f0
- md5: fb45308ba8bfe1abf1f4a27bad24a743
+ size: 3064197
+ timestamp: 1746223530698
+- conda: https://prefix.dev/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda
+ sha256: 02846553d2a4c9bde850c60824d0f02803eb9c9b674d5c1a8cce25bc387e748f
+ md5: 72c07e46b6766bb057018a9a74861b89
depends:
- ca-certificates
- ucrt >=10.0.20348.0
@@ -8037,18 +9194,8 @@ packages:
license: Apache-2.0
license_family: Apache
purls: []
- size: 8462960
- timestamp: 1736088436984
-- conda: https://prefix.dev/conda-forge/noarch/opt-einsum-3.4.0-hd8ed1ab_1.conda
- sha256: 8db3d841c72f184de69e1237b900a2d79c742e30e8378973814543bf987b6bc6
- md5: b94f689d8b1ce7dd212946e0331037ad
- depends:
- - opt_einsum >=3.4.0,<3.4.1.0a0
- license: MIT
- license_family: MIT
- purls: []
- size: 6558
- timestamp: 1733688054327
+ size: 9025176
+ timestamp: 1746227349882
- conda: https://prefix.dev/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda
sha256: af71aabb2bfa4b2c89b7b06403e5cec23b418452cae9f9772bd7ac3f9ea1ff44
md5: 52919815cd35c4e1a0298af658ccda04
@@ -8060,130 +9207,81 @@ packages:
- pkg:pypi/opt-einsum?source=hash-mapping
size: 62479
timestamp: 1733688053334
-- conda: https://prefix.dev/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda
- sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc
- md5: 4f6f9f3f80354ad185e276c120eac3f0
+- conda: https://prefix.dev/conda-forge/linux-64/optree-0.16.0-py310h3788b33_0.conda
+ sha256: 2eb98b1fad8b992a1ac2952ac47df9dc599429f560e8455a5adcef93e4905a66
+ md5: c42fe1b7bda3187b30867a432609b367
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=13
- - libprotobuf >=5.28.3,<5.28.4.0a0
- libstdcxx >=13
- - libzlib >=1.3.1,<2.0a0
- - lz4-c >=1.10.0,<1.11.0a0
- - snappy >=1.2.1,<1.3.0a0
- - tzdata
- - zstd >=1.5.6,<1.6.0a0
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 1188881
- timestamp: 1735630209320
-- conda: https://prefix.dev/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda
- sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4
- md5: 24b1897c0d24afbb70704ba998793b78
- depends:
- - __osx >=11.0
- - libcxx >=18
- - libprotobuf >=5.28.3,<5.28.4.0a0
- - libzlib >=1.3.1,<2.0a0
- - lz4-c >=1.10.0,<1.11.0a0
- - snappy >=1.2.1,<1.3.0a0
- - tzdata
- - zstd >=1.5.6,<1.6.0a0
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 438520
- timestamp: 1735630624140
-- conda: https://prefix.dev/conda-forge/win-64/orc-2.0.3-haf104fe_2.conda
- sha256: 35522ebcdd10f9d8600cbffa99efd59053bf2148965cfbb4575680e61c1d41dd
- md5: c8abacd8bdb242c9ba9c9a6c7ec09b01
- depends:
- - libprotobuf >=5.28.3,<5.28.4.0a0
- - libzlib >=1.3.1,<2.0a0
- - lz4-c >=1.10.0,<1.11.0a0
- - snappy >=1.2.1,<1.3.0a0
- - tzdata
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- - zstd >=1.5.6,<1.6.0a0
+ - python >=3.10,<3.11.0a0
+ - python_abi 3.10.* *_cp310
+ - typing-extensions >=4.6
license: Apache-2.0
license_family: Apache
- purls: []
- size: 902551
- timestamp: 1735630416110
-- conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda
- sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1
- md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa
- depends:
- - python >=3.8
- license: Apache-2.0
- license_family: APACHE
purls:
- - pkg:pypi/packaging?source=hash-mapping
- size: 60164
- timestamp: 1733203368787
-- conda: https://prefix.dev/conda-forge/linux-64/pandas-2.2.3-py310h5eaa309_1.conda
- sha256: d772223fd1ca882717ec6db55a13a6be9439c64ca3532231855ce7834599b8a5
- md5: e67778e1cac3bca3b3300f6164f7ffb9
+ - pkg:pypi/optree?source=hash-mapping
+ size: 395411
+ timestamp: 1748442630038
+- conda: https://prefix.dev/conda-forge/osx-64/optree-0.16.0-py310hf166250_0.conda
+ sha256: 6dd1469d569036de8ca56e4a5b5ac6ffd6f7606024e0c94fcafca4f0ce6e222e
+ md5: 5c98e1a3b71360716384e5e10a4f3531
depends:
- - __glibc >=2.17,<3.0.a0
- - libgcc >=13
- - libstdcxx >=13
- - numpy >=1.19,<3
- - numpy >=1.22.4
+ - __osx >=10.13
+ - libcxx >=18
- python >=3.10,<3.11.0a0
- - python-dateutil >=2.8.1
- - python-tzdata >=2022a
- python_abi 3.10.* *_cp310
- - pytz >=2020.1,<2024.2
- license: BSD-3-Clause
- license_family: BSD
+ - typing-extensions >=4.6
+ license: Apache-2.0
+ license_family: Apache
purls:
- - pkg:pypi/pandas?source=hash-mapping
- size: 13014228
- timestamp: 1726878893275
-- conda: https://prefix.dev/conda-forge/osx-arm64/pandas-2.2.3-py310hfd37619_1.conda
- sha256: f4e4c0016c56089d22850e16c44c7e912d6368fd43374a92d8de6a1da9a85b47
- md5: 7bc53f11058c93444968c99f1600f73c
+ - pkg:pypi/optree?source=hash-mapping
+ size: 370104
+ timestamp: 1748442823730
+- conda: https://prefix.dev/conda-forge/osx-arm64/optree-0.16.0-py310h7f4e7e6_0.conda
+ sha256: 20e4b2b80e65d7ab73ac3b118499695d35e2777fd0dc09723ddcc51c524a7d36
+ md5: 48aaf98eb6f234ec4be6d688b6dddde9
depends:
- __osx >=11.0
- - libcxx >=17
- - numpy >=1.19,<3
- - numpy >=1.22.4
+ - libcxx >=18
- python >=3.10,<3.11.0a0
- python >=3.10,<3.11.0a0 *_cpython
- - python-dateutil >=2.8.1
- - python-tzdata >=2022a
- python_abi 3.10.* *_cp310
- - pytz >=2020.1,<2024.2
- license: BSD-3-Clause
- license_family: BSD
+ - typing-extensions >=4.6
+ license: Apache-2.0
+ license_family: Apache
purls:
- - pkg:pypi/pandas?source=hash-mapping
- size: 12024352
- timestamp: 1726878958127
-- conda: https://prefix.dev/conda-forge/win-64/pandas-2.2.3-py310hb4db72f_1.conda
- sha256: 1fa40b4a351f1eb7a878d1f25f6bec71664699cd4a39c8ed5e2221f53ecca0c4
- md5: 565b3f19282642a23e5ff9bbfb01569c
+ - pkg:pypi/optree?source=hash-mapping
+ size: 355168
+ timestamp: 1748442791043
+- conda: https://prefix.dev/conda-forge/win-64/optree-0.16.0-py310hc19bc0b_0.conda
+ sha256: 08d66d6d6a1883e41bfb32388c5fefd306b9fcf6ff7ffcd66ad3263e3b234a20
+ md5: 44824e69682284c0cdcd9d48c1712001
depends:
- - numpy >=1.19,<3
- - numpy >=1.22.4
- python >=3.10,<3.11.0a0
- - python-dateutil >=2.8.1
- - python-tzdata >=2022a
- python_abi 3.10.* *_cp310
- - pytz >=2020.1,<2024.2
+ - typing-extensions >=4.6
- ucrt >=10.0.20348.0
- vc >=14.2,<15
- vc14_runtime >=14.29.30139
- license: BSD-3-Clause
- license_family: BSD
+ license: Apache-2.0
+ license_family: Apache
+ purls:
+ - pkg:pypi/optree?source=hash-mapping
+ size: 321199
+ timestamp: 1748443097166
+- conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda
+ sha256: 289861ed0c13a15d7bbb408796af4de72c2fe67e2bcb0de98f4c3fce259d7991
+ md5: 58335b26c38bf4a20f399384c33cbcf9
+ depends:
+ - python >=3.8
+ - python
+ license: Apache-2.0
+ license_family: APACHE
purls:
- - pkg:pypi/pandas?source=hash-mapping
- size: 11810567
- timestamp: 1726879420659
+ - pkg:pypi/packaging?source=compressed-mapping
+ size: 62477
+ timestamp: 1745345660407
- conda: https://prefix.dev/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda
sha256: 17131120c10401a99205fc6fe436e7903c0fa092f1b3e80452927ab377239bcc
md5: 5c092057b6badd30f75b06244ecd01c9
@@ -8208,6 +9306,17 @@ packages:
- pkg:pypi/partd?source=hash-mapping
size: 20884
timestamp: 1715026639309
+- conda: https://prefix.dev/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda
+ sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee
+ md5: 617f15191456cc6a13db418a275435e5
+ depends:
+ - python >=3.9
+ license: MPL-2.0
+ license_family: MOZILLA
+ purls:
+ - pkg:pypi/pathspec?source=hash-mapping
+ size: 41075
+ timestamp: 1733233471940
- conda: https://prefix.dev/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda
sha256: 202af1de83b585d36445dc1fda94266697341994d1a3328fabde4989e1b3d07a
md5: d0d408b1f18883a944376da5cf8101ea
@@ -8216,7 +9325,7 @@ packages:
- python >=3.9
license: ISC
purls:
- - pkg:pypi/pexpect?source=hash-mapping
+ - pkg:pypi/pexpect?source=compressed-mapping
size: 53561
timestamp: 1733302019362
- conda: https://prefix.dev/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda
@@ -8230,98 +9339,32 @@ packages:
- pkg:pypi/pickleshare?source=hash-mapping
size: 11748
timestamp: 1733327448200
-- conda: https://prefix.dev/conda-forge/linux-64/pillow-11.1.0-py310h7e6dc6c_0.conda
- sha256: e11d694b7c12b6a76624e8c3e48892924668a97ec26f353ce37b0648bd12ad87
- md5: 14d300b9e1504748e70cc6499a7b4d25
- depends:
- - __glibc >=2.17,<3.0.a0
- - freetype >=2.12.1,<3.0a0
- - lcms2 >=2.16,<3.0a0
- - libgcc >=13
- - libjpeg-turbo >=3.0.0,<4.0a0
- - libtiff >=4.7.0,<4.8.0a0
- - libwebp-base >=1.5.0,<2.0a0
- - libxcb >=1.17.0,<2.0a0
- - libzlib >=1.3.1,<2.0a0
- - openjpeg >=2.5.3,<3.0a0
- - python >=3.10,<3.11.0a0
- - python_abi 3.10.* *_cp310
- - tk >=8.6.13,<8.7.0a0
- license: HPND
- purls:
- - pkg:pypi/pillow?source=hash-mapping
- size: 42419230
- timestamp: 1735929858736
-- conda: https://prefix.dev/conda-forge/osx-arm64/pillow-11.1.0-py310h61efb56_0.conda
- sha256: 7eb1bf423326ae0d372504cab421994f248e882daab6750ed5ea5df4fbb9858f
- md5: 72579fcac27a82e99c2c115c6718dd06
- depends:
- - __osx >=11.0
- - freetype >=2.12.1,<3.0a0
- - lcms2 >=2.16,<3.0a0
- - libjpeg-turbo >=3.0.0,<4.0a0
- - libtiff >=4.7.0,<4.8.0a0
- - libwebp-base >=1.5.0,<2.0a0
- - libxcb >=1.17.0,<2.0a0
- - libzlib >=1.3.1,<2.0a0
- - openjpeg >=2.5.3,<3.0a0
- - python >=3.10,<3.11.0a0
- - python >=3.10,<3.11.0a0 *_cpython
- - python_abi 3.10.* *_cp310
- - tk >=8.6.13,<8.7.0a0
- license: HPND
- purls:
- - pkg:pypi/pillow?source=hash-mapping
- size: 41772845
- timestamp: 1735929952853
-- conda: https://prefix.dev/conda-forge/win-64/pillow-11.1.0-py310h9595edc_0.conda
- sha256: a4cf9c10ecdc2ad2bbedce6eb76ba7d193e8be66f4424cfbbabfe53668b0d8bb
- md5: 67a38507ac20bd85226fe6dd7ed87462
- depends:
- - freetype >=2.12.1,<3.0a0
- - lcms2 >=2.16,<3.0a0
- - libjpeg-turbo >=3.0.0,<4.0a0
- - libtiff >=4.7.0,<4.8.0a0
- - libwebp-base >=1.5.0,<2.0a0
- - libxcb >=1.17.0,<2.0a0
- - libzlib >=1.3.1,<2.0a0
- - openjpeg >=2.5.3,<3.0a0
- - python >=3.10,<3.11.0a0
- - python_abi 3.10.* *_cp310
- - tk >=8.6.13,<8.7.0a0
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- license: HPND
- purls:
- - pkg:pypi/pillow?source=hash-mapping
- size: 41777634
- timestamp: 1735930357220
-- conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda
- sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27
- md5: 577852c7e53901ddccc7e6a9959ddebe
+- conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda
+ sha256: 0f48999a28019c329cd3f6fd2f01f09fc32cc832f7d6bbe38087ddac858feaa3
+ md5: 424844562f5d337077b445ec6b1398a7
depends:
- python >=3.9
+ - python
license: MIT
license_family: MIT
purls:
- pkg:pypi/platformdirs?source=hash-mapping
- size: 20448
- timestamp: 1733232756001
-- conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda
- sha256: 122433fc5318816b8c69283aaf267c73d87aa2d09ce39f64c9805c9a3b264819
- md5: e9dcbce5f45f9ee500e728ae58b605b6
+ size: 23531
+ timestamp: 1746710438805
+- conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda
+ sha256: a8eb555eef5063bbb7ba06a379fa7ea714f57d9741fe0efdb9442dbbc2cccbcc
+ md5: 7da7ccd349dbf6487a7778579d2bb971
depends:
- python >=3.9
license: MIT
license_family: MIT
purls:
- - pkg:pypi/pluggy?source=hash-mapping
- size: 23595
- timestamp: 1733222855563
-- conda: https://prefix.dev/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_1.conda
- sha256: 3cfe4c777f1bb3f869cefd732357c7c657df7f0bba5c11cd64ced21e0b0a2b5b
- md5: d0ea6ed474bf7f6db88fc85e6dc809b1
+ - pkg:pypi/pluggy?source=compressed-mapping
+ size: 24246
+ timestamp: 1747339794916
+- conda: https://prefix.dev/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda
+ sha256: d0bd8cce5f31ae940934feedec107480c00f67e881bf7db9d50c6fc0216a2ee0
+ md5: 17e487cc8b5507cd3abc09398cf27949
depends:
- cfgv >=2.0.0
- identify >=1.0.0
@@ -8333,39 +9376,79 @@ packages:
license_family: MIT
purls:
- pkg:pypi/pre-commit?source=hash-mapping
- size: 193591
- timestamp: 1734267205422
-- conda: https://prefix.dev/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda
- sha256: 79fb7d1eeb490d4cc1b79f781bb59fe302ae38cf0a30907ecde75a7d399796cc
- md5: 368d4aa48358439e07a97ae237491785
+ size: 195854
+ timestamp: 1742475656293
+- conda: https://prefix.dev/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda
+ sha256: ebc1bb62ac612af6d40667da266ff723662394c0ca78935340a5b5c14831227b
+ md5: d17ae9db4dc594267181bd199bf9a551
depends:
- python >=3.9
- wcwidth
constrains:
- - prompt_toolkit 3.0.48
+ - prompt_toolkit 3.0.51
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/prompt-toolkit?source=compressed-mapping
+ size: 271841
+ timestamp: 1744724188108
+- conda: https://prefix.dev/conda-forge/linux-64/psutil-7.0.0-py310ha75aee5_0.conda
+ sha256: 31e46270c73cac2b24a7f3462ca03eb39f21cbfdb713b0d41eb61c00867eabe9
+ md5: da7d592394ff9084a23f62a1186451a2
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - python >=3.10,<3.11.0a0
+ - python_abi 3.10.* *_cp310
license: BSD-3-Clause
license_family: BSD
purls:
- - pkg:pypi/prompt-toolkit?source=hash-mapping
- size: 269848
- timestamp: 1733302634979
-- conda: https://prefix.dev/conda-forge/linux-64/psutil-6.1.1-py310ha75aee5_0.conda
- sha256: a643a57e5338fb3a154c5d57fdc72d80170cf7868f20acbbeedde014195f0d92
- md5: 00838ea1d4e87b1e6e2552bba98cc899
+ - pkg:pypi/psutil?source=compressed-mapping
+ size: 354476
+ timestamp: 1740663252954
+- conda: https://prefix.dev/conda-forge/linux-64/psutil-7.0.0-py313h536fd9c_0.conda
+ sha256: 1b39f0ce5a345779d70c885664d77b5f8ef49f7378829bd7286a7fb98b7ea852
+ md5: 8f315d1fce04a046c1b93fa6e536661d
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=13
+ - python >=3.13,<3.14.0a0
+ - python_abi 3.13.* *_cp313
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/psutil?source=hash-mapping
+ size: 475101
+ timestamp: 1740663284505
+- conda: https://prefix.dev/conda-forge/osx-64/psutil-7.0.0-py310hbb8c376_0.conda
+ sha256: 614c230961fab2ed8f7087fa81ae0cb5c6a6b3b9aea6d7d021dfad38c0aa349c
+ md5: c1d3e75575208aa864c8f0ae1ed6842e
+ depends:
+ - __osx >=10.13
- python >=3.10,<3.11.0a0
- python_abi 3.10.* *_cp310
license: BSD-3-Clause
license_family: BSD
purls:
- pkg:pypi/psutil?source=hash-mapping
- size: 368620
- timestamp: 1735327493685
-- conda: https://prefix.dev/conda-forge/osx-arm64/psutil-6.1.1-py310h078409c_0.conda
- sha256: a8a418b53bfe69a31def05121555934901d3c805c91cef0badc8de4a493f89dd
- md5: e10b828242dd64d38a8970c112093bbb
+ size: 360590
+ timestamp: 1740663319060
+- conda: https://prefix.dev/conda-forge/osx-64/psutil-7.0.0-py313h63b0ddb_0.conda
+ sha256: b117f61eaf3d5fb640d773c3021f222c833a69c2ac123d7f4b028b3e5d638dd4
+ md5: 2c8969aaee2cf24bc8931f5fc36cccfd
+ depends:
+ - __osx >=10.13
+ - python >=3.13,<3.14.0a0
+ - python_abi 3.13.* *_cp313
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/psutil?source=hash-mapping
+ size: 482494
+ timestamp: 1740663492867
+- conda: https://prefix.dev/conda-forge/osx-arm64/psutil-7.0.0-py310h078409c_0.conda
+ sha256: c4aa4d0e144691383a88214ef02cc67909fccd5885601bafc9eaaf8bbe1c2877
+ md5: 0079de80b6bf6e1c5c9ea067dce6bb05
depends:
- __osx >=11.0
- python >=3.10,<3.11.0a0
@@ -8375,11 +9458,25 @@ packages:
license_family: BSD
purls:
- pkg:pypi/psutil?source=hash-mapping
- size: 376278
- timestamp: 1735327563376
-- conda: https://prefix.dev/conda-forge/win-64/psutil-6.1.1-py310ha8f682b_0.conda
- sha256: 88ed52584b3d838ec10c10ad445823bb9b52a0002071e79c9bb63433ff934026
- md5: e7da623f94edbf9c66f816bee03432a2
+ size: 363458
+ timestamp: 1740663509903
+- conda: https://prefix.dev/conda-forge/osx-arm64/psutil-7.0.0-py313h90d716c_0.conda
+ sha256: a3d8376cf24ee336f63d3e6639485b68c592cf5ed3e1501ac430081be055acf9
+ md5: 21105780750e89c761d1c72dc5304930
+ depends:
+ - __osx >=11.0
+ - python >=3.13,<3.14.0a0
+ - python >=3.13,<3.14.0a0 *_cp313
+ - python_abi 3.13.* *_cp313
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/psutil?source=hash-mapping
+ size: 484139
+ timestamp: 1740663381126
+- conda: https://prefix.dev/conda-forge/win-64/psutil-7.0.0-py310ha8f682b_0.conda
+ sha256: 61c016c40848168bc565ceb8f3a78ad2d9288ffbe4236bcec312ef554f1caef2
+ md5: ec78bb694e0ea34958e8f479e723499e
depends:
- python >=3.10,<3.11.0a0
- python_abi 3.10.* *_cp310
@@ -8390,41 +9487,23 @@ packages:
license_family: BSD
purls:
- pkg:pypi/psutil?source=hash-mapping
- size: 386297
- timestamp: 1735327974109
-- conda: https://prefix.dev/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda
- sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973
- md5: b3c17d95b5a10c6e64a21fa17573e70e
- depends:
- - __glibc >=2.17,<3.0.a0
- - libgcc >=13
- license: MIT
- license_family: MIT
- purls: []
- size: 8252
- timestamp: 1726802366959
-- conda: https://prefix.dev/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda
- sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3
- md5: 415816daf82e0b23a736a069a75e9da7
- depends:
- - __osx >=11.0
- license: MIT
- license_family: MIT
- purls: []
- size: 8381
- timestamp: 1726802424786
-- conda: https://prefix.dev/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda
- sha256: 7e446bafb4d692792310ed022fe284e848c6a868c861655a92435af7368bae7b
- md5: 3c8f2573569bb816483e5cf57efbbe29
+ size: 369926
+ timestamp: 1740663706146
+- conda: https://prefix.dev/conda-forge/win-64/psutil-7.0.0-py313ha7868ed_0.conda
+ sha256: d8e5d86e939d5f308c7922835a94458afb29d81c90b5d43c43a5537c9c7adbc1
+ md5: 3cdf99cf98b01856af9f26c5d8036353
depends:
- - libgcc >=13
- - libwinpthread >=12.0.0.r4.gg4f2fc60ca
+ - python >=3.13,<3.14.0a0
+ - python_abi 3.13.* *_cp313
- ucrt >=10.0.20348.0
- license: MIT
- license_family: MIT
- purls: []
- size: 9389
- timestamp: 1726802555076
+ - vc >=14.2,<15
+ - vc14_runtime >=14.29.30139
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/psutil?source=hash-mapping
+ size: 491314
+ timestamp: 1740663777370
- conda: https://prefix.dev/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda
sha256: a7713dfe30faf17508ec359e0bc7e0983f5d94682492469bd462cdaae9c64d83
md5: 7d9daffbb8d8e0af0f769dbbcd173a54
@@ -8446,114 +9525,48 @@ packages:
- pkg:pypi/pure-eval?source=hash-mapping
size: 16668
timestamp: 1733569518868
-- conda: https://prefix.dev/conda-forge/linux-64/pyarrow-18.1.0-py310hff52083_0.conda
- sha256: 2cc58382b4f03b7b13cde2478f274393679a90b2b9ae53ede5e1d8d6fca8b725
- md5: b1bf2dce4ffc87e1d551d725e8f57e07
- depends:
- - libarrow-acero 18.1.0.*
- - libarrow-dataset 18.1.0.*
- - libarrow-substrait 18.1.0.*
- - libparquet 18.1.0.*
- - pyarrow-core 18.1.0 *_0_*
- - python >=3.10,<3.11.0a0
- - python_abi 3.10.* *_cp310
- license: Apache-2.0
- license_family: APACHE
- purls: []
- size: 25169
- timestamp: 1732610724262
-- conda: https://prefix.dev/conda-forge/osx-arm64/pyarrow-18.1.0-py310hb6292c7_0.conda
- sha256: 5b7af521c075b706c9ec4df7f68e368daa015b4e0790c8b1deddca3ffaed5475
- md5: 753691b585ec3e968cc803aa599e204c
- depends:
- - libarrow-acero 18.1.0.*
- - libarrow-dataset 18.1.0.*
- - libarrow-substrait 18.1.0.*
- - libparquet 18.1.0.*
- - pyarrow-core 18.1.0 *_0_*
- - python >=3.10,<3.11.0a0
- - python_abi 3.10.* *_cp310
- license: Apache-2.0
- license_family: APACHE
- purls: []
- size: 25411
- timestamp: 1732611138365
-- conda: https://prefix.dev/conda-forge/win-64/pyarrow-18.1.0-py310h5588dad_0.conda
- sha256: 3ac8f4f39ee66a4c478e3d8f622c026075dd093c8d3576e34ad2f0d0f3bde2e4
- md5: 0a9a667f2223be8615637cc24d0049d8
- depends:
- - libarrow-acero 18.1.0.*
- - libarrow-dataset 18.1.0.*
- - libarrow-substrait 18.1.0.*
- - libparquet 18.1.0.*
- - pyarrow-core 18.1.0 *_0_*
- - python >=3.10,<3.11.0a0
- - python_abi 3.10.* *_cp310
- license: Apache-2.0
- license_family: APACHE
- purls: []
- size: 25680
- timestamp: 1732652490895
-- conda: https://prefix.dev/conda-forge/linux-64/pyarrow-core-18.1.0-py310hac404ae_0_cpu.conda
- sha256: 48981393e1b392ecdad11a5f17a8a1e0325a53c1007a3e37d5ad85db0a354678
- md5: 9a961ac46dd84a82ab3f3fa31833f062
+- conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyhc790b64_3.conda
+ sha256: d429f6f255fbe49f09b9ae1377aa8cbc4d9285b8b220c17ae2ad9c4894c91317
+ md5: 1594696beebf1ecb6d29a1136f859a74
depends:
- - __glibc >=2.17,<3.0.a0
- - libarrow 18.1.0.* *cpu
- - libgcc >=13
- - libstdcxx >=13
- - libzlib >=1.3.1,<2.0a0
- - python >=3.10,<3.11.0a0
- - python_abi 3.10.* *_cp310
+ - pybind11-global 2.13.6 *_3
+ - python >=3.9
constrains:
- - numpy >=1.21,<3
- - apache-arrow-proc =*=cpu
- license: Apache-2.0
- license_family: APACHE
+ - pybind11-abi ==4
+ license: BSD-3-Clause
+ license_family: BSD
purls:
- - pkg:pypi/pyarrow?source=hash-mapping
- size: 4544985
- timestamp: 1732610569678
-- conda: https://prefix.dev/conda-forge/osx-arm64/pyarrow-core-18.1.0-py310hc17921c_0_cpu.conda
- sha256: 6ad8406767ea99b8540577587a22855ddc1c98940b10c5b209d7f2959a88b91d
- md5: 71e33ee4b08ae1087a039e116e158fb6
+ - pkg:pypi/pybind11?source=hash-mapping
+ size: 186821
+ timestamp: 1747935138653
+- conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyh217bc35_3.conda
+ sha256: c044cfcbe6ef0062d0960e9f9f0de5f8818cec84ed901219ff9994b9a9e57237
+ md5: 730a5284e26d6bdb73332dafb26aec82
depends:
- - __osx >=11.0
- - libarrow 18.1.0.* *cpu
- - libcxx >=18
- - libzlib >=1.3.1,<2.0a0
- - python >=3.10,<3.11.0a0
- - python >=3.10,<3.11.0a0 *_cpython
- - python_abi 3.10.* *_cp310
+ - __unix
+ - python >=3.9
constrains:
- - numpy >=1.21,<3
- - apache-arrow-proc =*=cpu
- license: Apache-2.0
- license_family: APACHE
+ - pybind11-abi ==4
+ license: BSD-3-Clause
+ license_family: BSD
purls:
- - pkg:pypi/pyarrow?source=hash-mapping
- size: 3881631
- timestamp: 1732611103866
-- conda: https://prefix.dev/conda-forge/win-64/pyarrow-core-18.1.0-py310h399dd74_0_cpu.conda
- sha256: 4e2c58e5123c3c63e32710ed8809347866d9f8e90b76427ccfa8c92cae673bdb
- md5: 45d9ee9d0b92d4fbbbfe7db44d84d2fe
+ - pkg:pypi/pybind11-global?source=hash-mapping
+ size: 180116
+ timestamp: 1747934418811
+- conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyh6a1d191_3.conda
+ sha256: 91ef6a928e7e0e691246037566bbec6db2cf17fa5d76f626102323a95dbb4f08
+ md5: 2e9cbcb18272d66bc0d3b0dc4ff24935
depends:
- - libarrow 18.1.0.* *cpu
- - libzlib >=1.3.1,<2.0a0
- - python >=3.10,<3.11.0a0
- - python_abi 3.10.* *_cp310
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
+ - __win
+ - python >=3.9
constrains:
- - apache-arrow-proc =*=cpu
- - numpy >=1.21,<3
- license: Apache-2.0
- license_family: APACHE
+ - pybind11-abi ==4
+ license: BSD-3-Clause
+ license_family: BSD
purls:
- - pkg:pypi/pyarrow?source=hash-mapping
- size: 3425932
- timestamp: 1732651827572
+ - pkg:pypi/pybind11-global?source=hash-mapping
+ size: 182238
+ timestamp: 1747934667819
- conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda
sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6
md5: 12c566707c80111f9799308d9e265aef
@@ -8576,26 +9589,27 @@ packages:
- pkg:pypi/pygments?source=hash-mapping
size: 888600
timestamp: 1736243563082
-- conda: https://prefix.dev/conda-forge/noarch/pylint-3.3.3-pyhd8ed1ab_0.conda
- sha256: a8192c823bfb6cdc57d2e12a8748ac1acb588c960c53e71c763f6359c5602e46
- md5: 5842a1fa3b9b4f9fe7069b9ca5ed068d
+- conda: https://prefix.dev/conda-forge/noarch/pylint-3.3.7-pyhe01879c_0.conda
+ sha256: 6a1dc262763220c9dc046400d8655ebe58ad4d81e872be7264af5137f906e220
+ md5: fad6b90165dcf39e3ac79de5dbc030a8
depends:
- astroid >=3.3.8,<3.4.0-dev0
- colorama >=0.4.5
- - dill >=0.3.7
- - isort >=4.2.5,<6,!=5.13.0
+ - isort >=4.2.5,<7,!=5.13.0
- mccabe >=0.6,<0.8
- platformdirs >=2.2.0
- python >=3.9
- tomli >=1.1.0
- tomlkit >=0.10.1
- typing_extensions >=3.10.0
+ - dill >=0.3.7
+ - python
license: GPL-2.0-or-later
license_family: GPL
purls:
- pkg:pypi/pylint?source=hash-mapping
- size: 353049
- timestamp: 1735081352860
+ size: 380752
+ timestamp: 1746387959153
- conda: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda
sha256: d016e04b0e12063fbee4a2d5fbb9b39a8d191b5a0042f0b8459188aedeabb0ca
md5: e2fd202833c4a981ce8a65974fe4abd1
@@ -8621,15 +9635,16 @@ packages:
- pkg:pypi/pysocks?source=hash-mapping
size: 21085
timestamp: 1733217331982
-- conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda
- sha256: 75245ca9d0cbd6d38bb45ec02430189a9d4c21c055c5259739d738a2298d61b3
- md5: 799ed216dc6af62520f32aa39bc1c2bb
- depends:
- - colorama
- - exceptiongroup >=1.0.0rc8
- - iniconfig
- - packaging
- - pluggy <2,>=1.5
+- conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.0-pyhd8ed1ab_0.conda
+ sha256: f8c5a65ff4216f7c0a9be1708be1ee1446ad678da5a01eeb2437551156e32a06
+ md5: 516d31f063ce7e49ced17f105b63a1f1
+ depends:
+ - colorama >=0.4
+ - exceptiongroup >=1
+ - iniconfig >=1
+ - packaging >=20
+ - pluggy >=1.5,<2
+ - pygments >=2.7.2
- python >=3.9
- tomli >=1
constrains:
@@ -8637,12 +9652,12 @@ packages:
license: MIT
license_family: MIT
purls:
- - pkg:pypi/pytest?source=hash-mapping
- size: 259195
- timestamp: 1733217599806
-- conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda
- sha256: 09acac1974e10a639415be4be326dd21fa6d66ca51a01fb71532263fba6dccf6
- md5: 79963c319d1be62c8fd3e34555816e01
+ - pkg:pypi/pytest?source=compressed-mapping
+ size: 275014
+ timestamp: 1748907618871
+- conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda
+ sha256: 3a9fc07be76bc67aef355b78816b5117bfe686e7d8c6f28b45a1f89afe104761
+ md5: ce978e1b9ed8b8d49164e90a5cdc94cd
depends:
- coverage >=7.5
- pytest >=4.6
@@ -8651,75 +9666,189 @@ packages:
license: MIT
license_family: MIT
purls:
- - pkg:pypi/pytest-cov?source=hash-mapping
- size: 26256
- timestamp: 1733223113491
-- conda: https://prefix.dev/conda-forge/linux-64/python-3.10.16-he725a3c_1_cpython.conda
+ - pkg:pypi/pytest-cov?source=compressed-mapping
+ size: 28216
+ timestamp: 1749778064293
+- conda: https://prefix.dev/conda-forge/noarch/pytest-run-parallel-0.4.4-pyhd8ed1ab_0.conda
+ sha256: 63490d2de6a759fb8c52702a950a4dff5c71b225b8931eeabf01fb841cb939f0
+ md5: 8e06da4a4c29963150f5cc140e7c90fb
+ depends:
+ - pytest >=6.2.0
+ - python >=3.9
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/pytest-run-parallel?source=hash-mapping
+ size: 17822
+ timestamp: 1749628808758
+- conda: https://prefix.dev/conda-forge/linux-64/python-3.10.17-hd6af730_0_cpython.conda
+ sha256: 0ae32507817402bfad08fbf0f4a9b5ae26859d5390b98bc939da85fd0bd4239f
+ md5: 7bb89638dae9ce1b8e051d0b721e83c2
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - bzip2 >=1.0.8,<2.0a0
+ - ld_impl_linux-64 >=2.36.1
+ - libexpat >=2.7.0,<3.0a0
+ - libffi >=3.4,<4.0a0
+ - libgcc >=13
+ - liblzma >=5.8.1,<6.0a0
+ - libnsl >=2.0.1,<2.1.0a0
+ - libsqlite >=3.49.1,<4.0a0
+ - libuuid >=2.38.1,<3.0a0
+ - libxcrypt >=4.4.36
+ - libzlib >=1.3.1,<2.0a0
+ - ncurses >=6.5,<7.0a0
+ - openssl >=3.5.0,<4.0a0
+ - readline >=8.2,<9.0a0
+ - tk >=8.6.13,<8.7.0a0
+ - tzdata
+ constrains:
+ - python_abi 3.10.* *_cp310
+ license: Python-2.0
+ purls: []
+ size: 25058210
+ timestamp: 1744324903492
+- conda: https://prefix.dev/conda-forge/linux-64/python-3.13.3-h4724d56_1_cp313t.conda
build_number: 1
- sha256: 3f90a2d5062a73cd2dd8a0027718aee1db93f7975b9cfe529e2c9aeec2db262e
- md5: b887811a901b3aa622a92caf03bc8917
+ sha256: 0a754546c765d8b0301637012d6a4265f9167e60ebc15d47f9a414b1769096dc
+ md5: 8193603fe48ace3d8801cfb246f44491
depends:
- __glibc >=2.17,<3.0.a0
- bzip2 >=1.0.8,<2.0a0
- ld_impl_linux-64 >=2.36.1
- - libffi >=3.4,<4.0a0
+ - libexpat >=2.7.0,<3.0a0
+ - libffi >=3.4.6,<3.5.0a0
- libgcc >=13
- - liblzma >=5.6.3,<6.0a0
- - libnsl >=2.0.1,<2.1.0a0
- - libsqlite >=3.47.0,<4.0a0
+ - liblzma >=5.8.1,<6.0a0
+ - libmpdec >=4.0.0,<5.0a0
+ - libsqlite >=3.49.1,<4.0a0
- libuuid >=2.38.1,<3.0a0
- - libxcrypt >=4.4.36
- libzlib >=1.3.1,<2.0a0
- ncurses >=6.5,<7.0a0
- - openssl >=3.4.0,<4.0a0
+ - openssl >=3.5.0,<4.0a0
+ - python_abi 3.13.* *_cp313t
- readline >=8.2,<9.0a0
- tk >=8.6.13,<8.7.0a0
- tzdata
- constrains:
- - python_abi 3.10.* *_cp310
+ track_features:
+ - py_freethreading
license: Python-2.0
purls: []
- size: 25199631
- timestamp: 1733409331823
-- conda: https://prefix.dev/conda-forge/linux-64/python-3.13.1-ha99a958_105_cp313.conda
- build_number: 105
- sha256: d3eb7d0820cf0189103bba1e60e242ffc15fd2f727640ac3a10394b27adf3cca
- md5: 34945787453ee52a8f8271c1d19af1e8
+ size: 41651821
+ timestamp: 1744665599069
+ python_site_packages_path: lib/python3.13t/site-packages
+- conda: https://prefix.dev/conda-forge/linux-64/python-3.13.3-hf636f53_101_cp313.conda
+ build_number: 101
+ sha256: eecb11ea60f8143deeb301eab2e04d04f7acb83659bb20fdfeacd431a5f31168
+ md5: 10622e12d649154af0bd76bcf33a7c5c
depends:
- __glibc >=2.17,<3.0.a0
- bzip2 >=1.0.8,<2.0a0
- ld_impl_linux-64 >=2.36.1
- - libexpat >=2.6.4,<3.0a0
- - libffi >=3.4,<4.0a0
+ - libexpat >=2.7.0,<3.0a0
+ - libffi >=3.4.6,<3.5.0a0
- libgcc >=13
- - liblzma >=5.6.3,<6.0a0
+ - liblzma >=5.8.1,<6.0a0
- libmpdec >=4.0.0,<5.0a0
- - libsqlite >=3.47.2,<4.0a0
+ - libsqlite >=3.49.1,<4.0a0
- libuuid >=2.38.1,<3.0a0
- libzlib >=1.3.1,<2.0a0
- ncurses >=6.5,<7.0a0
- - openssl >=3.4.0,<4.0a0
+ - openssl >=3.5.0,<4.0a0
- python_abi 3.13.* *_cp313
- readline >=8.2,<9.0a0
- tk >=8.6.13,<8.7.0a0
- tzdata
license: Python-2.0
purls: []
- size: 33169840
- timestamp: 1736763984540
-- conda: https://prefix.dev/conda-forge/osx-arm64/python-3.10.16-h870587a_1_cpython.conda
+ size: 33268245
+ timestamp: 1744665022734
+ python_site_packages_path: lib/python3.13/site-packages
+- conda: https://prefix.dev/conda-forge/osx-64/python-3.10.17-h93e8a92_0_cpython.conda
+ sha256: de7b0090aba3e2336bdceb8cbec2de799de6e0e309439f9ecf44196bd16406e3
+ md5: 94c16bc611cce843a2b25df2ca08a532
+ depends:
+ - __osx >=10.13
+ - bzip2 >=1.0.8,<2.0a0
+ - libexpat >=2.7.0,<3.0a0
+ - libffi >=3.4,<4.0a0
+ - liblzma >=5.8.1,<6.0a0
+ - libsqlite >=3.49.1,<4.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - ncurses >=6.5,<7.0a0
+ - openssl >=3.5.0,<4.0a0
+ - readline >=8.2,<9.0a0
+ - tk >=8.6.13,<8.7.0a0
+ - tzdata
+ constrains:
+ - python_abi 3.10.* *_cp310
+ license: Python-2.0
+ purls: []
+ size: 12898620
+ timestamp: 1744323796398
+- conda: https://prefix.dev/conda-forge/osx-64/python-3.13.3-h2267d90_1_cp313t.conda
build_number: 1
- sha256: cd617b15712c4f9316b22c75459311ed106ccb0659c0bf36e281a9162b4e2d95
- md5: 11ce777f54d8a4b821d7f5f159eda36c
+ sha256: a0eb5bfae3e58f46ea6de09bf51e19f9c611e9bb1d63751065f5b48e55a8a0bd
+ md5: 3a0f325506b25cf554c55795520635ba
+ depends:
+ - __osx >=10.13
+ - bzip2 >=1.0.8,<2.0a0
+ - libexpat >=2.7.0,<3.0a0
+ - libffi >=3.4.6,<3.5.0a0
+ - liblzma >=5.8.1,<6.0a0
+ - libmpdec >=4.0.0,<5.0a0
+ - libsqlite >=3.49.1,<4.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - ncurses >=6.5,<7.0a0
+ - openssl >=3.5.0,<4.0a0
+ - python_abi 3.13.* *_cp313t
+ - readline >=8.2,<9.0a0
+ - tk >=8.6.13,<8.7.0a0
+ - tzdata
+ track_features:
+ - py_freethreading
+ license: Python-2.0
+ purls: []
+ size: 15799189
+ timestamp: 1744664727737
+ python_site_packages_path: lib/python3.13t/site-packages
+- conda: https://prefix.dev/conda-forge/osx-64/python-3.13.3-h534c281_101_cp313.conda
+ build_number: 101
+ sha256: fe70f145472820922a01279165b96717815dcd4f346ad9a2f2338045d8818930
+ md5: ebcc7c42561d8d8b01477020b63218c0
+ depends:
+ - __osx >=10.13
+ - bzip2 >=1.0.8,<2.0a0
+ - libexpat >=2.7.0,<3.0a0
+ - libffi >=3.4.6,<3.5.0a0
+ - liblzma >=5.8.1,<6.0a0
+ - libmpdec >=4.0.0,<5.0a0
+ - libsqlite >=3.49.1,<4.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - ncurses >=6.5,<7.0a0
+ - openssl >=3.5.0,<4.0a0
+ - python_abi 3.13.* *_cp313
+ - readline >=8.2,<9.0a0
+ - tk >=8.6.13,<8.7.0a0
+ - tzdata
+ license: Python-2.0
+ purls: []
+ size: 13875464
+ timestamp: 1744664784298
+ python_site_packages_path: lib/python3.13/site-packages
+- conda: https://prefix.dev/conda-forge/osx-arm64/python-3.10.17-h6cefb37_0_cpython.conda
+ sha256: 62941aa93c59a69e56a56387ba7a8f0ae564273e00db72a4ce8e0b277d672e8f
+ md5: d181061519c02589c2c4203476730c25
depends:
- __osx >=11.0
- bzip2 >=1.0.8,<2.0a0
+ - libexpat >=2.7.0,<3.0a0
- libffi >=3.4,<4.0a0
- - liblzma >=5.6.3,<6.0a0
- - libsqlite >=3.47.0,<4.0a0
+ - liblzma >=5.8.1,<6.0a0
+ - libsqlite >=3.49.1,<4.0a0
- libzlib >=1.3.1,<2.0a0
- ncurses >=6.5,<7.0a0
- - openssl >=3.4.0,<4.0a0
+ - openssl >=3.5.0,<4.0a0
- readline >=8.2,<9.0a0
- tk >=8.6.13,<8.7.0a0
- tzdata
@@ -8727,42 +9856,69 @@ packages:
- python_abi 3.10.* *_cp310
license: Python-2.0
purls: []
- size: 12372048
- timestamp: 1733408850559
-- conda: https://prefix.dev/conda-forge/osx-arm64/python-3.13.1-h4f43103_105_cp313.conda
- build_number: 105
- sha256: 7d27cc8ef214abbdf7dd8a5d473e744f4bd9beb7293214a73c58e4895c2830b8
- md5: 11d916b508764b7d881dd5c75d222d6e
+ size: 11477490
+ timestamp: 1744324062010
+- conda: https://prefix.dev/conda-forge/osx-arm64/python-3.13.3-h81fe080_101_cp313.conda
+ build_number: 101
+ sha256: f96468ab1e6f27bda92157bfc7f272d1fbf2ba2f85697bdc5bb106bccba1befb
+ md5: b3240ae8c42a3230e0b7f831e1c72e9f
depends:
- __osx >=11.0
- bzip2 >=1.0.8,<2.0a0
- - libexpat >=2.6.4,<3.0a0
- - libffi >=3.4,<4.0a0
- - liblzma >=5.6.3,<6.0a0
+ - libexpat >=2.7.0,<3.0a0
+ - libffi >=3.4.6,<3.5.0a0
+ - liblzma >=5.8.1,<6.0a0
- libmpdec >=4.0.0,<5.0a0
- - libsqlite >=3.47.2,<4.0a0
+ - libsqlite >=3.49.1,<4.0a0
- libzlib >=1.3.1,<2.0a0
- ncurses >=6.5,<7.0a0
- - openssl >=3.4.0,<4.0a0
+ - openssl >=3.5.0,<4.0a0
- python_abi 3.13.* *_cp313
- readline >=8.2,<9.0a0
- tk >=8.6.13,<8.7.0a0
- tzdata
license: Python-2.0
purls: []
- size: 12919840
- timestamp: 1736761931666
-- conda: https://prefix.dev/conda-forge/win-64/python-3.10.16-h37870fc_1_cpython.conda
+ size: 12136505
+ timestamp: 1744663807953
+ python_site_packages_path: lib/python3.13/site-packages
+- conda: https://prefix.dev/conda-forge/osx-arm64/python-3.13.3-hfd29fff_1_cp313t.conda
build_number: 1
- sha256: 3392db6a7a90864d3fd1ce281859a49e27ee68121b63eece2ae6f1dbb2a8aaf1
- md5: 5c292a7bd9c32a256ba7939b3e6dee03
+ sha256: 28a0fa63d5557bb1a8818b86cefc10333253e0cd159db2a6f2a130340185d6cf
+ md5: 8463aa08925f217800fc11136ee748e5
+ depends:
+ - __osx >=11.0
+ - bzip2 >=1.0.8,<2.0a0
+ - libexpat >=2.7.0,<3.0a0
+ - libffi >=3.4.6,<3.5.0a0
+ - liblzma >=5.8.1,<6.0a0
+ - libmpdec >=4.0.0,<5.0a0
+ - libsqlite >=3.49.1,<4.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - ncurses >=6.5,<7.0a0
+ - openssl >=3.5.0,<4.0a0
+ - python_abi 3.13.* *_cp313t
+ - readline >=8.2,<9.0a0
+ - tk >=8.6.13,<8.7.0a0
+ - tzdata
+ track_features:
+ - py_freethreading
+ license: Python-2.0
+ purls: []
+ size: 14836789
+ timestamp: 1744663662894
+ python_site_packages_path: lib/python3.13t/site-packages
+- conda: https://prefix.dev/conda-forge/win-64/python-3.10.17-h8c5b53a_0_cpython.conda
+ sha256: 071303a9bcbba4d79ab1ca61f34ec9f4ad65bc15d897828f5006ef9507094557
+ md5: 0c59918f056ab2e9c7bb45970d32b2ea
depends:
- bzip2 >=1.0.8,<2.0a0
+ - libexpat >=2.7.0,<3.0a0
- libffi >=3.4,<4.0a0
- - liblzma >=5.6.3,<6.0a0
- - libsqlite >=3.47.0,<4.0a0
+ - liblzma >=5.8.1,<6.0a0
+ - libsqlite >=3.49.1,<4.0a0
- libzlib >=1.3.1,<2.0a0
- - openssl >=3.4.0,<4.0a0
+ - openssl >=3.5.0,<4.0a0
- tk >=8.6.13,<8.7.0a0
- tzdata
- ucrt >=10.0.20348.0
@@ -8772,21 +9928,21 @@ packages:
- python_abi 3.10.* *_cp310
license: Python-2.0
purls: []
- size: 16061214
- timestamp: 1733408154785
-- conda: https://prefix.dev/conda-forge/win-64/python-3.13.1-h071d269_105_cp313.conda
- build_number: 105
- sha256: de3bb832ff3982c993c6af15e6c45bb647159f25329caceed6f73fd4769c7628
- md5: 3ddb0531ecfb2e7274d471203e053d78
+ size: 16005181
+ timestamp: 1744323366041
+- conda: https://prefix.dev/conda-forge/win-64/python-3.13.3-h261c0b1_101_cp313.conda
+ build_number: 101
+ sha256: 25cf0113c0e4fa42d31b0ff85349990dc454f1237638ba4642b009b451352cdf
+ md5: 4784d7aecc8996babe9681d017c81b8a
depends:
- bzip2 >=1.0.8,<2.0a0
- - libexpat >=2.6.4,<3.0a0
- - libffi >=3.4,<4.0a0
- - liblzma >=5.6.3,<6.0a0
+ - libexpat >=2.7.0,<3.0a0
+ - libffi >=3.4.6,<3.5.0a0
+ - liblzma >=5.8.1,<6.0a0
- libmpdec >=4.0.0,<5.0a0
- - libsqlite >=3.47.2,<4.0a0
+ - libsqlite >=3.49.1,<4.0a0
- libzlib >=1.3.1,<2.0a0
- - openssl >=3.4.0,<4.0a0
+ - openssl >=3.5.0,<4.0a0
- python_abi 3.13.* *_cp313
- tk >=8.6.13,<8.7.0a0
- tzdata
@@ -8795,194 +9951,361 @@ packages:
- vc14_runtime >=14.29.30139
license: Python-2.0
purls: []
- size: 16778758
- timestamp: 1736761341620
-- conda: https://prefix.dev/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda
- sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79
- md5: 5ba79d7c71f03c678c8ead841f347d6e
- depends:
- - python >=3.9
- - six >=1.5
- license: Apache-2.0
- license_family: APACHE
- purls:
- - pkg:pypi/python-dateutil?source=hash-mapping
- size: 222505
- timestamp: 1733215763718
-- conda: https://prefix.dev/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda
- sha256: 57c9a02ec25926fb48edca59b9ede107823e5d5c473b94a0e05cc0b9a193a642
- md5: c0def296b2f6d2dd7b030c2a7f66bb1f
+ size: 16614435
+ timestamp: 1744663103022
+ python_site_packages_path: Lib/site-packages
+- conda: https://prefix.dev/conda-forge/win-64/python-3.13.3-hd7c436d_1_cp313t.conda
+ build_number: 1
+ sha256: 0145db5ded3f15e7bba8873f232c26622df00acda070e9e43b14c6b72c3f3fc1
+ md5: bac978c337c76f61eab2f3eb187d6a78
depends:
- - python >=3.9
- license: Apache-2.0
- license_family: APACHE
- purls:
- - pkg:pypi/tzdata?source=hash-mapping
- size: 142235
- timestamp: 1733235414217
-- conda: https://prefix.dev/conda-forge/linux-64/python_abi-3.10-5_cp310.conda
- build_number: 5
- sha256: 074d2f0b31f0333b7e553042b17ea54714b74263f8adda9a68a4bd8c7e219971
- md5: 2921c34715e74b3587b4cff4d36844f9
- constrains:
- - python 3.10.* *_cpython
- license: BSD-3-Clause
- license_family: BSD
+ - bzip2 >=1.0.8,<2.0a0
+ - libexpat >=2.7.0,<3.0a0
+ - libffi >=3.4.6,<3.5.0a0
+ - liblzma >=5.8.1,<6.0a0
+ - libmpdec >=4.0.0,<5.0a0
+ - libsqlite >=3.49.1,<4.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - openssl >=3.5.0,<4.0a0
+ - python_abi 3.13.* *_cp313t
+ - tk >=8.6.13,<8.7.0a0
+ - tzdata
+ - ucrt >=10.0.20348.0
+ - vc >=14.2,<15
+ - vc14_runtime >=14.29.30139
+ track_features:
+ - py_freethreading
+ license: Python-2.0
purls: []
- size: 6227
- timestamp: 1723823165457
-- conda: https://prefix.dev/conda-forge/linux-64/python_abi-3.13-5_cp313.conda
- build_number: 5
- sha256: 438225b241c5f9bddae6f0178a97f5870a89ecf927dfca54753e689907331442
- md5: 381bbd2a92c863f640a55b6ff3c35161
- constrains:
- - python 3.13.* *_cp313
- license: BSD-3-Clause
- license_family: BSD
+ size: 16618325
+ timestamp: 1744663415142
+ python_site_packages_path: Lib/site-packages
+- conda: https://prefix.dev/conda-forge/noarch/python-freethreading-3.13.3-h92d6c8b_1.conda
+ sha256: f5ce208db07f3e910e47ad054e62cd431f8e46e32596bd5431b0b2da99ff0786
+ md5: 4fa25290aec662a01642ba4b3c0ff5c1
+ depends:
+ - cpython 3.13.3.*
+ - python_abi * *_cp313t
+ license: Python-2.0
purls: []
- size: 6217
- timestamp: 1723823393322
-- conda: https://prefix.dev/conda-forge/osx-arm64/python_abi-3.10-5_cp310.conda
- build_number: 5
- sha256: 15a1e37da3e52c9250eac103858aad494ce23501d72fb78f5a2126046c9a9e2d
- md5: e33836c9096802b29d28981765becbee
+ size: 47968
+ timestamp: 1744663562078
+- conda: https://prefix.dev/conda-forge/noarch/python_abi-3.10-7_cp310.conda
+ build_number: 7
+ sha256: 1316c66889313d9caebcfa5d5e9e6af25f8ba09396fc1bc196a08a3febbbabb8
+ md5: 44e871cba2b162368476a84b8d040b6c
constrains:
- python 3.10.* *_cpython
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 6324
- timestamp: 1723823147856
-- conda: https://prefix.dev/conda-forge/osx-arm64/python_abi-3.13-5_cp313.conda
- build_number: 5
- sha256: 4437198eae80310f40b23ae2f8a9e0a7e5c2b9ae411a8621eb03d87273666199
- md5: b8e82d0a5c1664638f87f63cc5d241fb
+ size: 6974
+ timestamp: 1745258864549
+- conda: https://prefix.dev/conda-forge/noarch/python_abi-3.13-7_cp313.conda
+ build_number: 7
+ sha256: 0595134584589064f56e67d3de1d8fcbb673a972946bce25fb593fb092fdcd97
+ md5: e84b44e6300f1703cb25d29120c5b1d8
constrains:
- python 3.13.* *_cp313
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 6322
- timestamp: 1723823058879
-- conda: https://prefix.dev/conda-forge/win-64/python_abi-3.10-5_cp310.conda
- build_number: 5
- sha256: 0671bea4d5c5b8618ee7e2b1117d5a90901348ac459db57b654007f1644fa087
- md5: 3c510f4c4383f5fbdb12fdd971b30d49
+ size: 6988
+ timestamp: 1745258852285
+- conda: https://prefix.dev/conda-forge/noarch/python_abi-3.13-7_cp313t.conda
+ build_number: 7
+ sha256: fa1705748ea982e20fbd29f9958b368e7c170835d780b500f7f4c3f5cf55fe6e
+ md5: df81edcc11a1176315e8226acab83eec
constrains:
- - python 3.10.* *_cpython
+ - python 3.13.* *_cp313t
+ track_features:
+ - freethreading
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 6715
- timestamp: 1723823141288
-- conda: https://prefix.dev/conda-forge/win-64/python_abi-3.13-5_cp313.conda
- build_number: 5
- sha256: 0c12cc1b84962444002c699ed21e815fb9f686f950d734332a1b74d07db97756
- md5: 44b4fe6f22b57103afb2299935c8b68e
+ size: 7018
+ timestamp: 1745258869977
+- conda: https://prefix.dev/conda-forge/linux-64/pytorch-2.7.0-cpu_mkl_py310_h8ec2884_100.conda
+ sha256: a91d20ad4a3246ce8e8b90c3498b145b85c30226e3e37e505012d725541b9872
+ md5: 80db30658f13a31389c00b26bb494555
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - _openmp_mutex * *_llvm
+ - _openmp_mutex >=4.5
+ - filelock
+ - fsspec
+ - jinja2
+ - libabseil * cxx17*
+ - libabseil >=20250127.1,<20250128.0a0
+ - libblas * *mkl
+ - libcblas >=3.9.0,<4.0a0
+ - libgcc >=13
+ - libprotobuf >=5.29.3,<5.29.4.0a0
+ - libstdcxx >=13
+ - libtorch 2.7.0 cpu_mkl_hf6ddc5a_100
+ - libuv >=1.50.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - llvm-openmp >=20.1.4
+ - mkl >=2024.2.2,<2025.0a0
+ - networkx
+ - numpy >=1.19,<3
+ - optree >=0.13.0
+ - pybind11
+ - python >=3.10,<3.11.0a0
+ - python_abi 3.10.* *_cp310
+ - setuptools <76
+ - sleef >=3.8,<4.0a0
+ - sympy >=1.13.3
+ - typing_extensions >=4.10.0
constrains:
- - python 3.13.* *_cp313
+ - pytorch-gpu <0.0a0
+ - pytorch-cpu 2.7.0
license: BSD-3-Clause
license_family: BSD
- purls: []
- size: 6716
- timestamp: 1723823166911
-- conda: https://prefix.dev/conda-forge/linux-64/pytorch-2.5.1-cpu_mkl_py310_h1c118fa_109.conda
- sha256: c1fcbc00995e84ce54a48301b57c90101b99e6f230873765efdf70d8e52282db
- md5: 7ae3aba3aed36993e7700b7c9e2b8cfb
+ purls:
+ - pkg:pypi/torch?source=hash-mapping
+ size: 25184622
+ timestamp: 1746261093140
+- conda: https://prefix.dev/conda-forge/linux-64/pytorch-2.7.0-cuda126_mkl_py310_h5ee0071_300.conda
+ sha256: f74b4688640b2fba6cb91600179fa33e01824cb6fd0602b085ffd827f8599b30
+ md5: 0bd3d9ab462afde912c99a0694352c46
depends:
+ - __cuda
- __glibc >=2.17,<3.0.a0
+ - _openmp_mutex * *_llvm
- _openmp_mutex >=4.5
+ - cuda-cudart >=12.6.77,<13.0a0
+ - cuda-cupti >=12.6.80,<13.0a0
+ - cuda-nvrtc >=12.6.85,<13.0a0
+ - cuda-nvtx >=12.6.77,<13.0a0
+ - cuda-version >=12.6,<13
+ - cudnn >=9.8.0.87,<10.0a0
- filelock
- fsspec
- jinja2
- libabseil * cxx17*
- - libabseil >=20240722.0,<20240723.0a0
+ - libabseil >=20250127.1,<20250128.0a0
- libblas * *mkl
- libcblas >=3.9.0,<4.0a0
+ - libcublas >=12.6.4.1,<13.0a0
+ - libcudss >=0.5.0.16,<0.5.1.0a0
+ - libcufft >=11.3.0.4,<12.0a0
+ - libcufile >=1.11.1.6,<2.0a0
+ - libcurand >=10.3.7.77,<11.0a0
+ - libcusolver >=11.7.1.2,<12.0a0
+ - libcusparse >=12.5.4.2,<13.0a0
- libgcc >=13
- - libprotobuf >=5.28.3,<5.28.4.0a0
+ - libmagma >=2.9.0,<2.9.1.0a0
+ - libprotobuf >=5.29.3,<5.29.4.0a0
- libstdcxx >=13
- - libtorch 2.5.1.*
- - libuv >=1.49.2,<2.0a0
+ - libtorch 2.7.0 cuda126_mkl_h99b69db_300
+ - libuv >=1.50.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - llvm-openmp >=20.1.4
- mkl >=2024.2.2,<2025.0a0
+ - nccl >=2.26.5.1,<3.0a0
- networkx
- numpy >=1.19,<3
+ - optree >=0.13.0
+ - pybind11
- python >=3.10,<3.11.0a0
- python_abi 3.10.* *_cp310
- - setuptools
- - sleef >=3.7,<4.0a0
- - sympy >=1.13.1,!=1.13.2
- - typing_extensions
+ - setuptools <76
+ - sleef >=3.8,<4.0a0
+ - sympy >=1.13.3
+ - triton 3.3.0.*
+ - typing_extensions >=4.10.0
+ constrains:
+ - pytorch-gpu 2.7.0
+ - pytorch-cpu <0.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/torch?source=hash-mapping
+ size: 25336738
+ timestamp: 1746288474204
+- conda: https://prefix.dev/conda-forge/osx-64/pytorch-2.7.0-cpu_mkl_py310_h73f974a_100.conda
+ sha256: 7129e7f362516b7a844a495157668229da9ccb3ecaff56ce1ec7931e8aa7006a
+ md5: 351c882df9b738faf77754caa54208d7
+ depends:
+ - __osx >=10.15
+ - filelock
+ - fsspec
+ - jinja2
+ - libabseil * cxx17*
+ - libabseil >=20250127.1,<20250128.0a0
+ - libblas * *mkl
+ - libcblas >=3.9.0,<4.0a0
+ - libcxx >=18
+ - libprotobuf >=5.29.3,<5.29.4.0a0
+ - libtorch 2.7.0.* *_100
+ - libuv >=1.50.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - llvm-openmp >=18.1.8
+ - mkl >=2023.2.0,<2024.0a0
+ - networkx
+ - numpy >=1.19,<3
+ - optree >=0.13.0
+ - pybind11
+ - python >=3.10,<3.11.0a0
+ - python_abi 3.10.* *_cp310
+ - setuptools <76
+ - sleef >=3.8,<4.0a0
+ - sympy >=1.13.3
+ - typing_extensions >=4.10.0
constrains:
- - pytorch-cpu ==2.5.1
- - pytorch-gpu ==99999999
+ - pytorch-cpu 2.7.0
+ - pytorch-gpu <0.0a0
license: BSD-3-Clause
license_family: BSD
purls:
- pkg:pypi/torch?source=hash-mapping
- size: 34033082
- timestamp: 1736831182336
-- conda: https://prefix.dev/conda-forge/osx-arm64/pytorch-2.5.1-cpu_generic_py310_h3256795_9.conda
- sha256: c2f85319da078b86e81523b6a92c5761342123ed5b7bf8828082e34eab59cbc4
- md5: 5472d797227aa217036da7ec899358c5
+ size: 24622267
+ timestamp: 1746269297667
+- conda: https://prefix.dev/conda-forge/osx-arm64/pytorch-2.7.0-cpu_generic_py310_h10edff7_0.conda
+ sha256: d4739279f4d39ee181dec4529fee20e6162f9bf80ad337b607aa520ebb78af4e
+ md5: 21aa1504881dd42be1db42b7a77ffeda
depends:
- __osx >=11.0
- filelock
- fsspec
- jinja2
- libabseil * cxx17*
- - libabseil >=20240722.0,<20240723.0a0
+ - libabseil >=20250127.1,<20250128.0a0
- libcblas >=3.9.0,<4.0a0
- libcxx >=18
- liblapack >=3.9.0,<4.0a0
- - libprotobuf >=5.28.3,<5.28.4.0a0
- - libtorch 2.5.1.*
- - libuv >=1.49.2,<2.0a0
+ - libprotobuf >=5.29.3,<5.29.4.0a0
+ - libtorch 2.7.0.* *_0
+ - libuv >=1.50.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
- llvm-openmp >=18.1.8
- networkx
- nomkl
- numpy >=1.19,<3
+ - optree >=0.13.0
+ - pybind11
- python >=3.10,<3.11.0a0
- python >=3.10,<3.11.0a0 *_cpython
- python_abi 3.10.* *_cp310
- - setuptools
- - sleef >=3.7,<4.0a0
- - sympy >=1.13.1,!=1.13.2
- - typing_extensions
+ - setuptools <76
+ - sleef >=3.8,<4.0a0
+ - sympy >=1.13.3
+ - typing_extensions >=4.10.0
constrains:
- - pytorch-cpu ==2.5.1
- - pytorch-gpu ==99999999
+ - pytorch-cpu 2.7.0
+ - pytorch-gpu <0.0a0
license: BSD-3-Clause
license_family: BSD
purls:
- pkg:pypi/torch?source=hash-mapping
- size: 22861302
- timestamp: 1736897435420
-- conda: https://prefix.dev/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda
- sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41
- md5: 3eeeeb9e4827ace8c0c1419c85d590ad
+ size: 24398193
+ timestamp: 1746265761920
+- conda: https://prefix.dev/conda-forge/win-64/pytorch-2.7.0-cpu_mkl_py310_h8e04999_100.conda
+ sha256: 1e98b88b73b274ce0d33830cdf5e55f743c3e3b287372a90f194d01d882edc7c
+ md5: b188fb29bb1cf567fc22d632d6e02fe0
depends:
- - python >=3.7
- license: MIT
- license_family: MIT
+ - filelock
+ - fsspec
+ - intel-openmp <2025
+ - jinja2
+ - libabseil * cxx17*
+ - libabseil >=20250127.1,<20250128.0a0
+ - libblas * *mkl
+ - libcblas >=3.9.0,<4.0a0
+ - libprotobuf >=5.29.3,<5.29.4.0a0
+ - libtorch 2.7.0 cpu_mkl_hf54a72f_100
+ - libuv >=1.50.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - mkl >=2024.2.2,<2025.0a0
+ - networkx
+ - numpy >=1.19,<3
+ - optree >=0.13.0
+ - pybind11
+ - python >=3.10,<3.11.0a0
+ - python_abi 3.10.* *_cp310
+ - setuptools <76
+ - sleef >=3.8,<4.0a0
+ - sympy >=1.13.3
+ - typing_extensions >=4.10.0
+ - ucrt >=10.0.20348.0
+ - vc >=14.2,<15
+ - vc14_runtime >=14.29.30139
+ constrains:
+ - pytorch-gpu <0.0a0
+ - pytorch-cpu 2.7.0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/torch?source=hash-mapping
+ size: 23555333
+ timestamp: 1746268961298
+- conda: https://prefix.dev/conda-forge/win-64/pytorch-2.7.0-cuda126_mkl_py310_h61b71b3_300.conda
+ sha256: 72de2392a7b057b2154029bd8a8a4898f4bca8fa0c9367a1b0938023d87dbac9
+ md5: dce9c91ef51f983e75b9d32803ea1c4e
+ depends:
+ - __cuda
+ - cuda-cudart >=12.6.77,<13.0a0
+ - cuda-cupti >=12.6.80,<13.0a0
+ - cuda-nvrtc >=12.6.85,<13.0a0
+ - cuda-version >=12.6,<13
+ - cudnn >=9.10.1.4,<10.0a0
+ - filelock
+ - fsspec
+ - intel-openmp <2025
+ - jinja2
+ - libabseil * cxx17*
+ - libabseil >=20250127.1,<20250128.0a0
+ - libblas * *mkl
+ - libcblas >=3.9.0,<4.0a0
+ - libcublas >=12.6.4.1,<13.0a0
+ - libcudss >=0.5.0.16,<0.5.1.0a0
+ - libcufft >=11.3.0.4,<12.0a0
+ - libcurand >=10.3.7.77,<11.0a0
+ - libcusolver >=11.7.1.2,<12.0a0
+ - libcusparse >=12.5.4.2,<13.0a0
+ - libmagma >=2.9.0,<2.9.1.0a0
+ - libprotobuf >=5.29.3,<5.29.4.0a0
+ - libtorch 2.7.0 cuda126_mkl_h09c782d_300
+ - libuv >=1.51.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - mkl >=2024.2.2,<2025.0a0
+ - networkx
+ - numpy >=1.19,<3
+ - optree >=0.13.0
+ - pybind11
+ - python >=3.10,<3.11.0a0
+ - python_abi 3.10.* *_cp310
+ - setuptools <76
+ - sleef >=3.8,<4.0a0
+ - sympy >=1.13.3
+ - typing_extensions >=4.10.0
+ - ucrt >=10.0.20348.0
+ - vc >=14.2,<15
+ - vc14_runtime >=14.29.30139
+ constrains:
+ - pytorch-gpu 2.7.0
+ - pytorch-cpu <0.0a0
+ license: BSD-3-Clause
+ license_family: BSD
purls:
- - pkg:pypi/pytz?source=hash-mapping
- size: 188538
- timestamp: 1706886944988
-- conda: https://prefix.dev/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda
- sha256: 0a7c706b2eb13f7da5692d9ddf1567209964875710b471de6f2743b33d1ba960
- md5: f26ec986456c30f6dff154b670ae140f
+ - pkg:pypi/torch?source=hash-mapping
+ size: 23684707
+ timestamp: 1748513257167
+- conda: https://prefix.dev/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda
+ sha256: 8d2a8bf110cc1fc3df6904091dead158ba3e614d8402a83e51ed3a8aa93cdeb0
+ md5: bc8e3267d44011051f2eb14d22fb0960
depends:
- python >=3.9
license: MIT
license_family: MIT
purls:
- - pkg:pypi/pytz?source=hash-mapping
- size: 185890
- timestamp: 1733215766006
-- conda: https://prefix.dev/conda-forge/linux-64/pyyaml-6.0.2-py310ha75aee5_1.conda
- sha256: bf6002aef0fd9753fa6de54e82307b2d7e67a1d701dba018869471426078d5d1
- md5: 0d4c5c76ae5f5aac6f0be419963a19dd
+ - pkg:pypi/pytz?source=compressed-mapping
+ size: 189015
+ timestamp: 1742920947249
+- conda: https://prefix.dev/conda-forge/linux-64/pyyaml-6.0.2-py310h89163eb_2.conda
+ sha256: 5fba7f5babcac872c72f6509c25331bcfac4f8f5031f0102530a41b41336fce6
+ md5: fd343408e64cf1e273ab7c710da374db
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=13
@@ -8992,27 +10315,69 @@ packages:
license: MIT
license_family: MIT
purls:
- - pkg:pypi/pyyaml?source=hash-mapping
- size: 182609
- timestamp: 1725456280173
-- conda: https://prefix.dev/conda-forge/linux-64/pyyaml-6.0.2-py313h536fd9c_1.conda
- sha256: 86ae34bf2bab82c0fff2e31a37318c8977297776436df780a83c6efa5f84749d
- md5: 3789f360de131c345e96fbfc955ca80b
+ - pkg:pypi/pyyaml?source=compressed-mapping
+ size: 182769
+ timestamp: 1737454971552
+- conda: https://prefix.dev/conda-forge/linux-64/pyyaml-6.0.2-py313h8060acc_2.conda
+ sha256: 6826217690cfe92d6d49cdeedb6d63ab32f51107105d6a459d30052a467037a0
+ md5: 50992ba61a8a1f8c2d346168ae1c86df
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=13
- - python >=3.13.0rc1,<3.14.0a0
+ - python >=3.13,<3.14.0a0
+ - python_abi 3.13.* *_cp313
+ - yaml >=0.2.5,<0.3.0a0
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/pyyaml?source=hash-mapping
+ size: 205919
+ timestamp: 1737454783637
+- conda: https://prefix.dev/conda-forge/noarch/pyyaml-6.0.2-pyhe1237c8_2.conda
+ sha256: e65194b89607feab1f5fce7a150246572f1c2145af125260eb87bacb5311f3f3
+ md5: 97db1b8e8c2ca460dd37d7bf2fb0f174
+ depends:
+ - python >=3.9.*
+ - yaml
+ track_features:
+ - pyyaml_no_compile
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/pyyaml?source=hash-mapping
+ size: 44603
+ timestamp: 1737454840302
+- conda: https://prefix.dev/conda-forge/osx-64/pyyaml-6.0.2-py310h8e2f543_2.conda
+ sha256: ee888a231818e98603439abcad0084ea7600399c4633d3d9415d42a5e7e3aee1
+ md5: a421bbf2cdd0d7ec3357a01d2d48709e
+ depends:
+ - __osx >=10.13
+ - python >=3.10,<3.11.0a0
+ - python_abi 3.10.* *_cp310
+ - yaml >=0.2.5,<0.3.0a0
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/pyyaml?source=hash-mapping
+ size: 168613
+ timestamp: 1737454886846
+- conda: https://prefix.dev/conda-forge/osx-64/pyyaml-6.0.2-py313h717bdf5_2.conda
+ sha256: 27501e9b3b5c6bfabb3068189fd40c650356a258e4a82b0cfe31c60f568dcb85
+ md5: b7f2984724531d2233b77c89c54be594
+ depends:
+ - __osx >=10.13
+ - python >=3.13,<3.14.0a0
- python_abi 3.13.* *_cp313
- yaml >=0.2.5,<0.3.0a0
license: MIT
license_family: MIT
purls:
- pkg:pypi/pyyaml?source=hash-mapping
- size: 205855
- timestamp: 1725456273924
-- conda: https://prefix.dev/conda-forge/osx-arm64/pyyaml-6.0.2-py310h493c2e1_1.conda
- sha256: 04b7adb2f79264b2556c79924a523f8c5b297dfaa40f01c8b112f06e388001da
- md5: 4b086c01e4c1ae219d1e139893841ae7
+ size: 196573
+ timestamp: 1737455046063
+- conda: https://prefix.dev/conda-forge/osx-arm64/pyyaml-6.0.2-py310hc74094e_2.conda
+ sha256: 0c46719507e1664b1085f2142b8250250c6aae01ec367d18068688efeba445ec
+ md5: b8be3d77488c580d2fd81c9bb3cacdf1
depends:
- __osx >=11.0
- python >=3.10,<3.11.0a0
@@ -9023,26 +10388,26 @@ packages:
license_family: MIT
purls:
- pkg:pypi/pyyaml?source=hash-mapping
- size: 162312
- timestamp: 1725456439220
-- conda: https://prefix.dev/conda-forge/osx-arm64/pyyaml-6.0.2-py313h20a7fcf_1.conda
- sha256: f9fbafcf30cfab591c67f7550c0fd58e2bff394b53864dcdc658f5abd27ce5d6
- md5: bf2ddf70a9ce8f899b1082d17cbb3d1d
+ size: 166853
+ timestamp: 1737454973579
+- conda: https://prefix.dev/conda-forge/osx-arm64/pyyaml-6.0.2-py313ha9b7d5b_2.conda
+ sha256: 58c41b86ff2dabcf9ccd9010973b5763ec28b14030f9e1d9b371d22b538bce73
+ md5: 03a7926e244802f570f25401c25c13bc
depends:
- __osx >=11.0
- - python >=3.13.0rc1,<3.14.0a0
- - python >=3.13.0rc1,<3.14.0a0 *_cp313
+ - python >=3.13,<3.14.0a0
+ - python >=3.13,<3.14.0a0 *_cp313
- python_abi 3.13.* *_cp313
- yaml >=0.2.5,<0.3.0a0
license: MIT
license_family: MIT
purls:
- pkg:pypi/pyyaml?source=hash-mapping
- size: 187550
- timestamp: 1725456463634
-- conda: https://prefix.dev/conda-forge/win-64/pyyaml-6.0.2-py310ha8f682b_1.conda
- sha256: b30056440fdff1d52e96303f539ba3b4a33c19070993a75cc15c5414cb2a8b1d
- md5: 308f62d05cbcbc633eeab4843def3b51
+ size: 194243
+ timestamp: 1737454911892
+- conda: https://prefix.dev/conda-forge/win-64/pyyaml-6.0.2-py310h38315fa_2.conda
+ sha256: 49dd492bdf2c479118ca9d61a59ce259594853d367a1a0548926f41a6e734724
+ md5: 9986c3731bb820db0830dd0825c26cf9
depends:
- python >=3.10,<3.11.0a0
- python_abi 3.10.* *_cp310
@@ -9054,13 +10419,13 @@ packages:
license_family: MIT
purls:
- pkg:pypi/pyyaml?source=hash-mapping
- size: 156987
- timestamp: 1725456772886
-- conda: https://prefix.dev/conda-forge/win-64/pyyaml-6.0.2-py313ha7868ed_1.conda
- sha256: ffa21c4715aa139d20c96ae7274fbb7de12a546f3332eb8d07cc794741fcbde6
- md5: c1743e5c4c7402a14b515cf276778e59
+ size: 157941
+ timestamp: 1737455030235
+- conda: https://prefix.dev/conda-forge/win-64/pyyaml-6.0.2-py313hb4c8b1a_2.conda
+ sha256: 5b496c96e48f495de41525cb1b603d0147f2079f88a8cf061aaf9e17a2fe1992
+ md5: d14f685b5d204b023c641b188a8d0d7c
depends:
- - python >=3.13.0rc1,<3.14.0a0
+ - python >=3.13,<3.14.0a0
- python_abi 3.13.* *_cp313
- ucrt >=10.0.20348.0
- vc >=14.2,<15
@@ -9070,59 +10435,84 @@ packages:
license_family: MIT
purls:
- pkg:pypi/pyyaml?source=hash-mapping
- size: 181722
- timestamp: 1725456802746
-- conda: https://prefix.dev/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda
- sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474
- md5: e84ddf12bde691e8ec894b00ea829ddf
+ size: 182783
+ timestamp: 1737455202579
+- conda: https://prefix.dev/conda-forge/linux-64/rdma-core-57.0-h5888daf_0.conda
+ sha256: fbb4599ba969c49d2280c84af196c514c49a3ad1529c693f4b6ac6c705998ec8
+ md5: e5be997517f19a365b8b111b888be426
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - libnl >=3.11.0,<4.0a0
+ - libstdcxx >=13
+ - libsystemd0 >=257.4
+ - libudev1 >=257.4
+ license: Linux-OpenIB
+ license_family: BSD
+ purls: []
+ size: 1238038
+ timestamp: 1745325325058
+- conda: https://prefix.dev/conda-forge/linux-64/re2-2024.07.02-h9925aae_3.conda
+ sha256: 66d34e3b4881f856486d11914392c585713100ca547ccfc0947f3a4765c2c486
+ md5: 6f445fb139c356f903746b2b91bbe786
depends:
- - libre2-11 2024.07.02 hbbce691_2
+ - libre2-11 2024.07.02 hba17884_3
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 26786
- timestamp: 1735541074034
-- conda: https://prefix.dev/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda
- sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb
- md5: 7a8b4ad8c58a3408ca89d78788c78178
+ size: 26811
+ timestamp: 1741121137599
+- conda: https://prefix.dev/conda-forge/osx-64/re2-2024.07.02-hf8a452e_3.conda
+ sha256: 291ebc1f3c6d479077399298c42c5e510e354664212cba74c04b9ab13ad811de
+ md5: 11dae9af12311eee952f3431282c822d
depends:
- - libre2-11 2024.07.02 h07bc746_2
+ - libre2-11 2024.07.02 h08ce7b7_3
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 26861
- timestamp: 1735541088455
-- conda: https://prefix.dev/conda-forge/win-64/re2-2024.07.02-haf4117d_2.conda
- sha256: fde3bbe0ade147bf735bf1bb5a15aa26d2cc197bfa026d2964012737f89ed351
- md5: 10980cbe103147435a40288db9f49847
+ size: 26925
+ timestamp: 1741121237531
+- conda: https://prefix.dev/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_3.conda
+ sha256: 248af2869bf54f77f5b4c6e144b535bbc2a6d4c27228f4fb2ed689f8df9f071b
+ md5: d4e82bd66b71c29da35e1f634548e039
depends:
- - libre2-11 2024.07.02 h4eb7d71_2
+ - libre2-11 2024.07.02 hd41c47c_3
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 214916
- timestamp: 1735541425594
-- conda: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8228510_1.conda
- sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7
- md5: 47d31b792659ce70f470b5c82fdfb7a4
+ size: 26954
+ timestamp: 1741121389739
+- conda: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda
+ sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c
+ md5: 283b96675859b20a825f8fa30f311446
depends:
- - libgcc-ng >=12
- - ncurses >=6.3,<7.0a0
+ - libgcc >=13
+ - ncurses >=6.5,<7.0a0
+ license: GPL-3.0-only
+ license_family: GPL
+ purls: []
+ size: 282480
+ timestamp: 1740379431762
+- conda: https://prefix.dev/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda
+ sha256: 53017e80453c4c1d97aaf78369040418dea14cf8f46a2fa999f31bd70b36c877
+ md5: 342570f8e02f2f022147a7f841475784
+ depends:
+ - ncurses >=6.5,<7.0a0
license: GPL-3.0-only
license_family: GPL
purls: []
- size: 281456
- timestamp: 1679532220005
-- conda: https://prefix.dev/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda
- sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884
- md5: 8cbb776a2f641b943d413b3e19df71f4
+ size: 256712
+ timestamp: 1740379577668
+- conda: https://prefix.dev/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda
+ sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34
+ md5: 63ef3f6e6d6d5c589e64f11263dc5676
depends:
- - ncurses >=6.3,<7.0a0
+ - ncurses >=6.5,<7.0a0
license: GPL-3.0-only
license_family: GPL
purls: []
- size: 250351
- timestamp: 1679532511311
+ size: 252359
+ timestamp: 1740379663071
- conda: https://prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda
sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad
md5: a9b9368f3701a417eac9edbcae7cb737
@@ -9140,21 +10530,19 @@ packages:
- pkg:pypi/requests?source=hash-mapping
size: 58723
timestamp: 1733217126197
-- conda: https://prefix.dev/conda-forge/linux-64/s2n-1.5.10-hb5b8611_0.conda
- sha256: f6d451821fddc26b93f45e9313e1ea15e09e5ef049d4e137413a5225d2a5dfba
- md5: 999f3673f2a011f59287f2969e3749e4
+- conda: https://prefix.dev/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda
+ sha256: 0116a9ca9bf3487e18979b58b2f280116dba55cb53475af7a6d835f7aa133db8
+ md5: 5f0f24f8032c2c1bb33f59b75974f5fc
depends:
- - __glibc >=2.17,<3.0.a0
- - libgcc >=13
- - openssl >=3.4.0,<4.0a0
- license: Apache-2.0
- license_family: Apache
- purls: []
- size: 355142
- timestamp: 1734415467047
-- conda: https://prefix.dev/conda-forge/linux-64/scipy-1.15.1-py310hfa6ec8c_0.conda
- sha256: 9941f3bc9af712e60ce7b3910f9da0298f6b6f4c0b4fbc85f43b3db6342e21e4
- md5: a24baa04ee53ee3078ac1856887c3dea
+ - python >=3.9
+ license: 0BSD OR CC0-1.0
+ purls:
+ - pkg:pypi/roman-numerals-py?source=hash-mapping
+ size: 13348
+ timestamp: 1740240332327
+- conda: https://prefix.dev/conda-forge/linux-64/scipy-1.15.2-py310h1d65ade_0.conda
+ sha256: 4cb98641f870666d365594013701d5691205a0fe81ac3ba7778a23b1cc2caa8e
+ md5: 8c29cd33b64b2eb78597fa28b5595c8d
depends:
- __glibc >=2.17,<3.0.a0
- libblas >=3.9.0,<4.0a0
@@ -9173,77 +10561,78 @@ packages:
license_family: BSD
purls:
- pkg:pypi/scipy?source=hash-mapping
- size: 18436262
- timestamp: 1736618466062
-- conda: https://prefix.dev/conda-forge/osx-arm64/scipy-1.15.1-py310hd50a768_0.conda
- sha256: 387cacd510792d7c7cf86b46374f2885b06f3b9505067cf9d9742a7034aa79bf
- md5: 8e181e12d183fd4e44fc2f941cfe8f47
+ size: 16417101
+ timestamp: 1739791865060
+- conda: https://prefix.dev/conda-forge/osx-64/scipy-1.15.2-py310hef62574_0.conda
+ sha256: da86efbfa72e4eb3e4748e5471d04fdbe3f9887f367b6302c1dcdb155bbf712b
+ md5: e79860e43d87b020a0254f0b3f5017c5
depends:
- - __osx >=11.0
+ - __osx >=10.13
- libblas >=3.9.0,<4.0a0
- libcblas >=3.9.0,<4.0a0
- libcxx >=18
- - libgfortran 5.*
+ - libgfortran >=5
- libgfortran5 >=13.2.0
- liblapack >=3.9.0,<4.0a0
- numpy <2.5
- numpy >=1.19,<3
- numpy >=1.23.5
- python >=3.10,<3.11.0a0
- - python >=3.10,<3.11.0a0 *_cpython
- python_abi 3.10.* *_cp310
license: BSD-3-Clause
license_family: BSD
purls:
- pkg:pypi/scipy?source=hash-mapping
- size: 14530851
- timestamp: 1736618488135
-- conda: https://prefix.dev/conda-forge/win-64/scipy-1.15.1-py310h164493e_0.conda
- sha256: 3b2342ce7edd3b8391cf321da8cb2bc50ac7dca36b3444b91f82688f9d0671dc
- md5: 2b18926b32f740cb76d7cdaf983c1e6f
+ size: 14682985
+ timestamp: 1739792429025
+- conda: https://prefix.dev/conda-forge/osx-arm64/scipy-1.15.2-py310h32ab4ed_0.conda
+ sha256: f6ff2c1ba4775300199e8bc0331d2e2ccb5906f58f3835c5426ddc591c9ad7bf
+ md5: a389f540c808b22b3c696d7aea791a41
depends:
+ - __osx >=11.0
- libblas >=3.9.0,<4.0a0
- libcblas >=3.9.0,<4.0a0
+ - libcxx >=18
+ - libgfortran >=5
+ - libgfortran5 >=13.2.0
- liblapack >=3.9.0,<4.0a0
- numpy <2.5
- numpy >=1.19,<3
- numpy >=1.23.5
- python >=3.10,<3.11.0a0
+ - python >=3.10,<3.11.0a0 *_cpython
- python_abi 3.10.* *_cp310
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
license: BSD-3-Clause
license_family: BSD
purls:
- pkg:pypi/scipy?source=hash-mapping
- size: 16956039
- timestamp: 1736619650525
-- conda: https://prefix.dev/conda-forge/noarch/setuptools-75.8.0-pyhff2d567_0.conda
- sha256: e0778e4f276e9a81b51c56f51ec22a27b4d8fc955abc0be77ad09ca9bea06bb9
- md5: 8f28e299c11afdd79e0ec1e279dcdc52
+ size: 13507343
+ timestamp: 1739792089317
+- conda: https://prefix.dev/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda
+ sha256: 91d664ace7c22e787775069418daa9f232ee8bafdd0a6a080a5ed2395a6fa6b2
+ md5: 9bddfdbf4e061821a1a443f93223be61
depends:
- python >=3.9
license: MIT
license_family: MIT
purls:
- pkg:pypi/setuptools?source=hash-mapping
- size: 775598
- timestamp: 1736512753595
-- conda: https://prefix.dev/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda
- sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db
- md5: a451d576819089b0d672f18768be0f65
+ size: 777736
+ timestamp: 1740654030775
+- conda: https://prefix.dev/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda
+ sha256: 972560fcf9657058e3e1f97186cc94389144b46dbdf58c807ce62e83f977e863
+ md5: 4de79c071274a53dcaf2a8c749d1499e
depends:
- python >=3.9
license: MIT
license_family: MIT
purls:
- - pkg:pypi/six?source=hash-mapping
- size: 16385
- timestamp: 1733381032766
-- conda: https://prefix.dev/conda-forge/linux-64/sleef-3.7-h1b44611_2.conda
- sha256: 38ad951d30052522693d21b247105744c7c6fb7cefcf41edca36f0688322e76d
- md5: 4792f3259c6fdc0b730563a85b211dc0
+ - pkg:pypi/setuptools?source=hash-mapping
+ size: 748788
+ timestamp: 1748804951958
+- conda: https://prefix.dev/conda-forge/linux-64/sleef-3.8-h1b44611_0.conda
+ sha256: c998d5a29848ce9ff1c53ba506e7d01bbd520c39bbe72e2fb7cdf5a53bad012f
+ md5: aec4dba5d4c2924730088753f6fa164b
depends:
- __glibc >=2.17,<3.0.a0
- _openmp_mutex >=4.5
@@ -9251,101 +10640,88 @@ packages:
- libstdcxx >=13
license: BSL-1.0
purls: []
- size: 1919287
- timestamp: 1731180933533
-- conda: https://prefix.dev/conda-forge/osx-arm64/sleef-3.7-h8391f65_2.conda
- sha256: 244a788a52c611c91c6b2dc73fdbb4a486261d9d321123d76500a99322bae26a
- md5: 00ecdc12398192a5a3a4aaf3d5d10a7c
+ size: 1920152
+ timestamp: 1738089391074
+- conda: https://prefix.dev/conda-forge/osx-64/sleef-3.8-hfe0d17b_0.conda
+ sha256: e4e350c355e461b06eb911ce6e1db6af158cd21b06465303ec60b9632e6a2e1e
+ md5: 3b4ac13220d26d428ea675f9584acc66
depends:
- - __osx >=11.0
+ - __osx >=10.13
- libcxx >=18
- - llvm-openmp >=18.1.8
- license: BSL-1.0
- purls: []
- size: 582928
- timestamp: 1731181097813
-- conda: https://prefix.dev/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda
- sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3
- md5: 3b3e64af585eadfb52bb90b553db5edf
- depends:
- - __glibc >=2.17,<3.0.a0
- - libgcc >=13
- - libstdcxx >=13
- license: BSD-3-Clause
- license_family: BSD
+ - llvm-openmp >=18.1.8
+ license: BSL-1.0
purls: []
- size: 42739
- timestamp: 1733501881851
-- conda: https://prefix.dev/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda
- sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f
- md5: ded86dee325290da2967a3fea3800eb5
+ size: 1470559
+ timestamp: 1738089437411
+- conda: https://prefix.dev/conda-forge/osx-arm64/sleef-3.8-h8391f65_0.conda
+ sha256: e8f26540b22fe2f1c9f44666a8fdf0786e7a40e8e69466d2567a53b106f6dff3
+ md5: 6567410b336a7b8f775cd9157fb50d61
depends:
- __osx >=11.0
- libcxx >=18
- license: BSD-3-Clause
- license_family: BSD
+ - llvm-openmp >=18.1.8
+ license: BSL-1.0
purls: []
- size: 35857
- timestamp: 1733502172664
-- conda: https://prefix.dev/conda-forge/win-64/snappy-1.2.1-h500f7fa_1.conda
- sha256: 29753b51803c0396c3cb56e4f11e68c968a2f43b71b648634bef1f9193f9e78b
- md5: e32fb978aaea855ddce624eb8c8eb69a
+ size: 584685
+ timestamp: 1738089615902
+- conda: https://prefix.dev/conda-forge/win-64/sleef-3.8-h7e360cc_0.conda
+ sha256: fc697f95797f5638baf68bb694cf461373fc36960a9d9d5260a20a21765b8148
+ md5: 3ed2f55668830f6f5bcff16875c18db0
depends:
- ucrt >=10.0.20348.0
- vc >=14.2,<15
- vc14_runtime >=14.29.30139
- license: BSD-3-Clause
- license_family: BSD
+ license: BSL-1.0
purls: []
- size: 59757
- timestamp: 1733502109991
-- conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2
- sha256: a0fd916633252d99efb6223b1050202841fa8d2d53dacca564b0ed77249d3228
- md5: 4d22a9315e78c6827f806065957d566e
+ size: 2098929
+ timestamp: 1738089785163
+- conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda
+ sha256: 17007a4cfbc564dc3e7310dcbe4932c6ecb21593d4fec3c68610720f19e73fb2
+ md5: 755cf22df8693aa0d1aec1c123fa5863
depends:
- - python >=2
+ - python >=3.9
license: BSD-3-Clause
license_family: BSD
purls:
- pkg:pypi/snowballstemmer?source=hash-mapping
- size: 58824
- timestamp: 1637143137377
-- conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2
- sha256: 0cea408397d50c2afb2d25e987ebac4546ae11e549d65b1403d80dc368dfaaa6
- md5: 6d6552722448103793743dabfbda532d
+ size: 73009
+ timestamp: 1747749529809
+- conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ sha256: d1e3e06b5cf26093047e63c8cc77b70d970411c5cbc0cb1fad461a8a8df599f7
+ md5: 0401a17ae845fa72c7210e206ec5647d
depends:
- - python >=2.7
+ - python >=3.9
license: Apache-2.0
license_family: APACHE
purls:
- pkg:pypi/sortedcontainers?source=hash-mapping
- size: 26314
- timestamp: 1621217159824
-- conda: https://prefix.dev/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda
- sha256: 54ae221033db8fbcd4998ccb07f3c3828b4d77e73b0c72b18c1d6a507059059c
- md5: 3f144b2c34f8cb5a9abd9ed23a39c561
+ size: 28657
+ timestamp: 1738440459037
+- conda: https://prefix.dev/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda
+ sha256: 7518506cce9a736042132f307b3f4abce63bf076f5fb07c1f4e506c0b214295a
+ md5: fb32097c717486aa34b38a9db57eb49e
depends:
- - python >=3.8
+ - python >=3.9
license: MIT
license_family: MIT
purls:
- pkg:pypi/soupsieve?source=hash-mapping
- size: 36754
- timestamp: 1693929424267
-- conda: https://prefix.dev/conda-forge/noarch/sparse-0.15.4-pyh267e887_1.conda
- sha256: d6698bdf9411daf3f79f3745b687b18df47b5201e3d1e486fac62722cbe0bc32
- md5: 40d80cd9fa4cc759c6dba19ea96642db
+ size: 37773
+ timestamp: 1746563720271
+- conda: https://prefix.dev/conda-forge/noarch/sparse-0.17.0-pyhcf101f3_0.conda
+ sha256: 8406de1065e1d4ba206d611dae9a03de7f226f486ce9fb02ab0f29c3bd031a6a
+ md5: 1b59de14a7e5888f939611e1fe329e00
depends:
- - python >=3.8
+ - python >=3.10
- numpy >=1.17
- - scipy >=0.19
- numba >=0.49
- python
license: BSD-3-Clause
license_family: BSD
- purls: []
- size: 98181
- timestamp: 1727687215683
+ purls:
+ - pkg:pypi/sparse?source=hash-mapping
+ size: 121488
+ timestamp: 1747799051402
- conda: https://prefix.dev/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_1.conda
sha256: 3228eb332ce159f031d4b7d2e08117df973b0ba3ddcb8f5dbb7f429f71d27ea1
md5: 1a3281a0dc355c02b5506d87db2d78ac
@@ -9374,9 +10750,37 @@ packages:
- pkg:pypi/sphinx?source=hash-mapping
size: 1387076
timestamp: 1733754175386
-- conda: https://prefix.dev/conda-forge/noarch/sphinx-autodoc-typehints-3.0.0-pyhd8ed1ab_0.conda
- sha256: aeb036de447e78f2c7d718822d99b7e285d4d96b191afd85aab8a39d5ec19a85
- md5: 243019ab35941dc825817a5ee4fd7ef4
+- conda: https://prefix.dev/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda
+ sha256: 995f58c662db0197d681fa345522fd9e7ac5f05330d3dff095ab2f102e260ab0
+ md5: f7af826063ed569bb13f7207d6f949b0
+ depends:
+ - alabaster >=0.7.14
+ - babel >=2.13
+ - colorama >=0.4.6
+ - docutils >=0.20,<0.22
+ - imagesize >=1.3
+ - jinja2 >=3.1
+ - packaging >=23.0
+ - pygments >=2.17
+ - python >=3.11
+ - requests >=2.30.0
+ - roman-numerals-py >=1.0.0
+ - snowballstemmer >=2.2
+ - sphinxcontrib-applehelp >=1.0.7
+ - sphinxcontrib-devhelp >=1.0.6
+ - sphinxcontrib-htmlhelp >=2.0.6
+ - sphinxcontrib-jsmath >=1.0.1
+ - sphinxcontrib-qthelp >=1.0.6
+ - sphinxcontrib-serializinghtml >=1.1.9
+ license: BSD-2-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/sphinx?source=hash-mapping
+ size: 1424416
+ timestamp: 1740956642838
+- conda: https://prefix.dev/conda-forge/noarch/sphinx-autodoc-typehints-3.0.1-pyhd8ed1ab_0.conda
+ sha256: 0f93bb75a41918433abc8d8d80ef99d7fd8658d5ba34da3c5d8f707cb6bb3f46
+ md5: 6ad405d62c8de3792608a27b7e085e15
depends:
- python >=3.10
- sphinx >=8.1.3
@@ -9384,20 +10788,32 @@ packages:
license_family: MIT
purls:
- pkg:pypi/sphinx-autodoc-typehints?source=hash-mapping
- size: 23860
- timestamp: 1735917178684
-- conda: https://prefix.dev/conda-forge/noarch/sphinx-basic-ng-1.0.0b2-pyhd8ed1ab_2.conda
- sha256: 091293964075ed1905731d09ff2691e053cd9d5335d99501f05683da29de0ee7
- md5: 463d989a8f1506bcf51cc37d7beebdf1
+ size: 24055
+ timestamp: 1737099757820
+- conda: https://prefix.dev/conda-forge/noarch/sphinx-autodoc-typehints-3.2.0-pyhd8ed1ab_0.conda
+ sha256: e9923b7d282ac8840ebe9e2665685a337698f4a93e6eb3c81dc18fe223c1bb57
+ md5: 6162f3f1cf914d08b80db65ed2d51871
+ depends:
+ - python >=3.11
+ - sphinx >=8.2
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/sphinx-autodoc-typehints?source=hash-mapping
+ size: 24745
+ timestamp: 1745624912567
+- conda: https://prefix.dev/conda-forge/noarch/sphinx-basic-ng-1.0.0b2-pyhd8ed1ab_3.conda
+ sha256: 90d900d31afe0bd6f42cf1e529e23e6eac4284b48bc64e5e942f19f5bf8ef0f2
+ md5: a090580065b21d9c56662ebe68f6e7a6
depends:
- - python >=3.7
+ - python >=3.9
- sphinx >=4.0
license: MIT
license_family: MIT
purls:
- pkg:pypi/sphinx-basic-ng?source=hash-mapping
- size: 20338
- timestamp: 1727436819491
+ size: 20495
+ timestamp: 1737748706101
- conda: https://prefix.dev/conda-forge/noarch/sphinx-copybutton-0.5.2-pyhd8ed1ab_1.conda
sha256: 8cd892e49cb4d00501bc4439fb0c73ca44905f01a65b2b7fa05ba0e8f3924f19
md5: bf22cb9c439572760316ce0748af3713
@@ -9495,9 +10911,21 @@ packages:
- pkg:pypi/stack-data?source=hash-mapping
size: 26988
timestamp: 1733569565672
-- conda: https://prefix.dev/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda
- sha256: 929d939c5a8bcdc10a17501890918da68cf14a5883b36fddf77b8f0fbf040be2
- md5: 254cd5083ffa04d96e3173397a3d30f4
+- conda: https://prefix.dev/conda-forge/noarch/sympy-1.14.0-pyh04b8f61_5.conda
+ sha256: 60f18c60f6518254f0d28e4892e94c851cdbd650f7bd49899a6169f76cf6796b
+ md5: d814547f1cbcb6f8397ca5686fee8175
+ depends:
+ - mpmath >=0.19
+ - python >=3.9
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/sympy?source=hash-mapping
+ size: 4608875
+ timestamp: 1745946180513
+- conda: https://prefix.dev/conda-forge/noarch/sympy-1.14.0-pyh2585a3b_105.conda
+ sha256: 09d3b6ac51d437bc996ad006d9f749ca5c645c1900a854a6c8f193cbd13f03a8
+ md5: 8c09fac3785696e1c477156192d64b91
depends:
- __unix
- cpython
@@ -9507,9 +10935,9 @@ packages:
license: BSD-3-Clause
license_family: BSD
purls:
- - pkg:pypi/sympy?source=hash-mapping
- size: 4523617
- timestamp: 1736248315124
+ - pkg:pypi/sympy?source=compressed-mapping
+ size: 4616621
+ timestamp: 1745946173026
- conda: https://prefix.dev/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda
sha256: 090023bddd40d83468ef86573976af8c514f64119b2bd814ee63a838a542720a
md5: 959484a66b4b76befcddc4fa97c95567
@@ -9534,6 +10962,18 @@ packages:
purls: []
size: 175954
timestamp: 1732982638805
+- conda: https://prefix.dev/conda-forge/osx-64/tbb-2021.13.0-hb890de9_1.conda
+ sha256: 54dacd0ed9f980674659dd84cecc10fb1c88b6a53c59e99d0b65f19c3e104c85
+ md5: 284892942cdddfded53d090050b639a5
+ depends:
+ - __osx >=10.13
+ - libcxx >=18
+ - libhwloc >=2.11.2,<2.11.3.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 158197
+ timestamp: 1732982743895
- conda: https://prefix.dev/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda
sha256: 03cc5442046485b03dd1120d0f49d35a7e522930a2ab82f275e938e17b07b302
md5: 9190dd0a23d925f7602f9628b3aed511
@@ -9547,41 +10987,43 @@ packages:
purls: []
size: 151460
timestamp: 1732982860332
-- conda: https://prefix.dev/conda-forge/noarch/tblib-3.0.0-pyhd8ed1ab_1.conda
- sha256: 6869cd2e043426d30c84d0ff6619f176b39728f9c75dc95dca89db994548bb8a
- md5: 60ce69f73f3e75b21f1c27b1b471320c
+- conda: https://prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda
+ sha256: a84ff687119e6d8752346d1d408d5cf360dee0badd487a472aa8ddedfdc219e1
+ md5: a0116df4f4ed05c303811a837d5b39d8
depends:
- - python >=3.9
- license: BSD-2-Clause
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - libzlib >=1.3.1,<2.0a0
+ license: TCL
license_family: BSD
- purls:
- - pkg:pypi/tblib?source=hash-mapping
- size: 17421
- timestamp: 1733842487151
-- conda: https://prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda
- sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e
- md5: d453b98d9c83e71da0741bb0ff4d76bc
+ purls: []
+ size: 3285204
+ timestamp: 1748387766691
+- conda: https://prefix.dev/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda
+ sha256: b24468006a96b71a5f4372205ea7ec4b399b0f2a543541e86f883de54cd623fc
+ md5: 9864891a6946c2fe037c02fca7392ab4
depends:
- - libgcc-ng >=12
- - libzlib >=1.2.13,<2.0.0a0
+ - __osx >=10.13
+ - libzlib >=1.3.1,<2.0a0
license: TCL
license_family: BSD
purls: []
- size: 3318875
- timestamp: 1699202167581
-- conda: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda
- sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8
- md5: b50a57ba89c32b62428b71a875291c9b
+ size: 3259809
+ timestamp: 1748387843735
+- conda: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda
+ sha256: cb86c522576fa95c6db4c878849af0bccfd3264daf0cc40dd18e7f4a7bfced0e
+ md5: 7362396c170252e7b7b0c8fb37fe9c78
depends:
- - libzlib >=1.2.13,<2.0.0a0
+ - __osx >=11.0
+ - libzlib >=1.3.1,<2.0a0
license: TCL
license_family: BSD
purls: []
- size: 3145523
- timestamp: 1699202432999
-- conda: https://prefix.dev/conda-forge/win-64/tk-8.6.13-h5226925_1.conda
- sha256: 2c4e914f521ccb2718946645108c9bd3fc3216ba69aea20c2c3cedbd8db32bb1
- md5: fc048363eb8f03cd1737600a5d08aafe
+ size: 3125538
+ timestamp: 1748388189063
+- conda: https://prefix.dev/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda
+ sha256: e3614b0eb4abcc70d98eae159db59d9b4059ed743ef402081151a948dce95896
+ md5: ebd0e761de9aa879a51d22cc721bd095
depends:
- ucrt >=10.0.20348.0
- vc >=14.2,<15
@@ -9589,8 +11031,8 @@ packages:
license: TCL
license_family: BSD
purls: []
- size: 3503410
- timestamp: 1699202577803
+ size: 3466348
+ timestamp: 1748388121356
- conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda
sha256: 34f3a83384ac3ac30aefd1309e69498d8a4aa0bf2d1f21c645f79b180e378938
md5: b0dd904de08b7db706167240bf37b164
@@ -9635,49 +11077,6 @@ packages:
- pkg:pypi/toolz?source=hash-mapping
size: 52475
timestamp: 1733736126261
-- conda: https://prefix.dev/conda-forge/linux-64/tornado-6.4.2-py310ha75aee5_0.conda
- sha256: 9c2b86d4e58c8b0e7d13a7f4c440f34e2201bae9cfc1d7e1d30a5bc7ffb1d4c8
- md5: 166d59aab40b9c607b4cc21c03924e9d
- depends:
- - __glibc >=2.17,<3.0.a0
- - libgcc >=13
- - python >=3.10,<3.11.0a0
- - python_abi 3.10.* *_cp310
- license: Apache-2.0
- license_family: Apache
- purls:
- - pkg:pypi/tornado?source=hash-mapping
- size: 650307
- timestamp: 1732616034421
-- conda: https://prefix.dev/conda-forge/osx-arm64/tornado-6.4.2-py310h078409c_0.conda
- sha256: 1263e018a20c98c6ff10e830ea5f13855d33f87f751329f3f6d207b182871acc
- md5: 21218c56939379bcfeddd26ea37d3fe7
- depends:
- - __osx >=11.0
- - python >=3.10,<3.11.0a0
- - python >=3.10,<3.11.0a0 *_cpython
- - python_abi 3.10.* *_cp310
- license: Apache-2.0
- license_family: Apache
- purls:
- - pkg:pypi/tornado?source=hash-mapping
- size: 652533
- timestamp: 1732616281463
-- conda: https://prefix.dev/conda-forge/win-64/tornado-6.4.2-py310ha8f682b_0.conda
- sha256: 2e5671d0db03961692b3390778ce6aba40702bd57584fa60badf4baa7614679b
- md5: e6819d3a0cae0f1b1838875f858421d1
- depends:
- - python >=3.10,<3.11.0a0
- - python_abi 3.10.* *_cp310
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
- license: Apache-2.0
- license_family: Apache
- purls:
- - pkg:pypi/tornado?source=hash-mapping
- size: 655262
- timestamp: 1732616377814
- conda: https://prefix.dev/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda
sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959
md5: 019a7385be9af33791c989871317e1ed
@@ -9689,35 +11088,57 @@ packages:
- pkg:pypi/traitlets?source=hash-mapping
size: 110051
timestamp: 1733367480074
-- conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda
- noarch: python
- sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32
- md5: b6a408c64b78ec7b779a3e5c7a902433
+- conda: https://prefix.dev/conda-forge/linux-64/triton-3.3.0-cuda126py310h05ca3d0_1.conda
+ sha256: 02b3d329c09197d7a137ba8396086137d6297fdfe8d510f1605388b3090bb802
+ md5: d9d3a077e401bdfdbb71383993cb34e3
+ depends:
+ - python
+ - setuptools
+ - cuda-nvcc-tools
+ - cuda-cuobjdump
+ - cuda-cudart
+ - cuda-cupti
+ - libstdcxx >=13
+ - libgcc >=13
+ - cuda-version >=12.6,<13
+ - __glibc >=2.17,<3.0.a0
+ - libzlib >=1.3.1,<2.0a0
+ - python_abi 3.10.* *_cp310
+ - zstd >=1.5.7,<1.6.0a0
+ - cuda-cupti >=12.6.80,<13.0a0
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/triton?source=hash-mapping
+ size: 162861153
+ timestamp: 1746164354834
+- conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda
+ sha256: b8cabfa54432b0f124c0af6b6facdf8110892914fa841ac2e80ab65ac52c1ba4
+ md5: a1cdd40fc962e2f7944bc19e01c7e584
depends:
- - typing_extensions 4.12.2 pyha770c72_1
+ - typing_extensions ==4.14.0 pyhe01879c_0
license: PSF-2.0
- license_family: PSF
purls: []
- size: 10075
- timestamp: 1733188758872
-- conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda
- sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568
- md5: d17f13df8b65464ca316cbc000a3cb64
+ size: 90310
+ timestamp: 1748959427551
+- conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda
+ sha256: 8561db52f278c5716b436da6d4ee5521712a49e8f3c70fcae5350f5ebb4be41c
+ md5: 2adcd9bb86f656d3d43bf84af59a1faf
depends:
- python >=3.9
+ - python
license: PSF-2.0
- license_family: PSF
- purls:
- - pkg:pypi/typing-extensions?source=hash-mapping
- size: 39637
- timestamp: 1733188758212
-- conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda
- sha256: 4fde5c3008bf5d2db82f2b50204464314cc3c91c1d953652f7bd01d9e52aefdf
- md5: 8ac3367aafb1cc0a068483c580af8015
+ purls:
+ - pkg:pypi/typing-extensions?source=compressed-mapping
+ size: 50978
+ timestamp: 1748959427551
+- conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
+ sha256: 5aaa366385d716557e365f0a4e9c3fca43ba196872abbbe3d56bb610d131e192
+ md5: 4222072737ccff51314b5ece9c7d6f5a
license: LicenseRef-Public-Domain
purls: []
- size: 122354
- timestamp: 1728047496079
+ size: 122968
+ timestamp: 1742727099393
- conda: https://prefix.dev/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda
sha256: db8dead3dd30fb1a032737554ce91e2819b43496a0db09927edf01c32b577450
md5: 6797b005cd0f439c4c5c9ac565783700
@@ -9727,6 +11148,22 @@ packages:
purls: []
size: 559710
timestamp: 1728377334097
+- conda: https://prefix.dev/conda-forge/linux-64/ukkonen-1.0.1-py310h3788b33_5.conda
+ sha256: d491c87088b7c430e9b77acc03307a4ad58bc6cdd686353710c3178977712df6
+ md5: e05b0475166b68c9dc4d7937e0315654
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - cffi
+ - libgcc >=13
+ - libstdcxx >=13
+ - python >=3.10,<3.11.0a0
+ - python_abi 3.10.* *_cp310
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/ukkonen?source=hash-mapping
+ size: 13756
+ timestamp: 1725784148759
- conda: https://prefix.dev/conda-forge/linux-64/ukkonen-1.0.1-py313h33d0bda_5.conda
sha256: 4edcb6a933bb8c03099ab2136118d5e5c25285e3fd2b0ff0fa781916c53a1fb7
md5: 5bcffe10a500755da4a71cc0fb62a420
@@ -9743,6 +11180,52 @@ packages:
- pkg:pypi/ukkonen?source=hash-mapping
size: 13916
timestamp: 1725784177558
+- conda: https://prefix.dev/conda-forge/osx-64/ukkonen-1.0.1-py310hfa8da69_5.conda
+ sha256: 326ad0a36c09aa74fed9277ab8b12002512a91252d426b0baad34fe11cc59568
+ md5: b33e406764d2ffc9d23a0133f3b5fead
+ depends:
+ - __osx >=10.13
+ - cffi
+ - libcxx >=17
+ - python >=3.10,<3.11.0a0
+ - python_abi 3.10.* *_cp310
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/ukkonen?source=hash-mapping
+ size: 12925
+ timestamp: 1725784218557
+- conda: https://prefix.dev/conda-forge/osx-64/ukkonen-1.0.1-py313h0c4e38b_5.conda
+ sha256: 6abf14f984a1fc3641908cb7e96ba8f2ce56e6f81069852b384e1755f8f5225e
+ md5: 6185cafe9e489071688304666923c2ad
+ depends:
+ - __osx >=10.13
+ - cffi
+ - libcxx >=17
+ - python >=3.13.0rc1,<3.14.0a0
+ - python_abi 3.13.* *_cp313
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/ukkonen?source=hash-mapping
+ size: 13126
+ timestamp: 1725784265187
+- conda: https://prefix.dev/conda-forge/osx-arm64/ukkonen-1.0.1-py310h7306fd8_5.conda
+ sha256: 1c74c4927f2c4ce93a74b4e72081fed818b8cbb291646316e19b92d683384624
+ md5: 75162a8dc3ec9e30d8eb5c676a41b366
+ depends:
+ - __osx >=11.0
+ - cffi
+ - libcxx >=17
+ - python >=3.10,<3.11.0a0
+ - python >=3.10,<3.11.0a0 *_cpython
+ - python_abi 3.10.* *_cp310
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/ukkonen?source=hash-mapping
+ size: 13565
+ timestamp: 1725784246850
- conda: https://prefix.dev/conda-forge/osx-arm64/ukkonen-1.0.1-py313hf9c7212_5.conda
sha256: 482eac475928c031948790647ae10c2cb1d4a779c2e8f35f5fd1925561b13203
md5: 8ddba23e26957f0afe5fc9236c73124a
@@ -9759,6 +11242,22 @@ packages:
- pkg:pypi/ukkonen?source=hash-mapping
size: 13689
timestamp: 1725784235751
+- conda: https://prefix.dev/conda-forge/win-64/ukkonen-1.0.1-py310hc19bc0b_5.conda
+ sha256: a82f9cfa34238f8ebbe7c0b77c3aed29c7314282ae842688587f3f22ee319c55
+ md5: 89dcdea384ecd45100e43d627da94a58
+ depends:
+ - cffi
+ - python >=3.10,<3.11.0a0
+ - python_abi 3.10.* *_cp310
+ - ucrt >=10.0.20348.0
+ - vc >=14.2,<15
+ - vc14_runtime >=14.29.30139
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/ukkonen?source=hash-mapping
+ size: 17065
+ timestamp: 1725784497818
- conda: https://prefix.dev/conda-forge/win-64/ukkonen-1.0.1-py313h1ec8472_5.conda
sha256: 4f57f2eccd5584421f1b4d8c96c167c1008cba660d7fab5bdec1de212a0e0ff0
md5: 97337494471e4265a203327f9a194234
@@ -9775,9 +11274,9 @@ packages:
- pkg:pypi/ukkonen?source=hash-mapping
size: 17210
timestamp: 1725784604368
-- conda: https://prefix.dev/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda
- sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e
- md5: 32674f8dbfb7b26410ed580dd3c10a29
+- conda: https://prefix.dev/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda
+ sha256: a25403b76f7f03ca1a906e1ef0f88521edded991b9897e7fed56a3e334b3db8c
+ md5: c1e349028e0052c4eea844e94f773065
depends:
- brotli-python >=1.0.9
- h2 >=4,<5
@@ -9788,35 +11287,35 @@ packages:
license_family: MIT
purls:
- pkg:pypi/urllib3?source=hash-mapping
- size: 100102
- timestamp: 1734859520452
-- conda: https://prefix.dev/conda-forge/win-64/vc-14.3-ha32ba9b_23.conda
- sha256: 986ddaf8feec2904eac9535a7ddb7acda1a1dfb9482088fdb8129f1595181663
- md5: 7c10ec3158d1eb4ddff7007c9101adb0
+ size: 100791
+ timestamp: 1744323705540
+- conda: https://prefix.dev/conda-forge/win-64/vc-14.3-h2b53caa_26.conda
+ sha256: 7a685b5c37e9713fa314a0d26b8b1d7a2e6de5ab758698199b5d5b6dba2e3ce1
+ md5: d3f0381e38093bde620a8d85f266ae55
depends:
- - vc14_runtime >=14.38.33135
+ - vc14_runtime >=14.42.34433
track_features:
- vc14
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 17479
- timestamp: 1731710827215
-- conda: https://prefix.dev/conda-forge/win-64/vc14_runtime-14.42.34433-he29a5d6_23.conda
- sha256: c483b090c4251a260aba6ff3e83a307bcfb5fb24ad7ced872ab5d02971bd3a49
- md5: 32b37d0cfa80da34548501cdc913a832
+ size: 17893
+ timestamp: 1743195261486
+- conda: https://prefix.dev/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda
+ sha256: 30dcb71bb166e351aadbdc18f1718757c32cdaa0e1e5d9368469ee44f6bf4709
+ md5: 91651a36d31aa20c7ba36299fb7068f4
depends:
- ucrt >=10.0.20348.0
constrains:
- - vs2015_runtime 14.42.34433.* *_23
+ - vs2015_runtime 14.42.34438.* *_26
license: LicenseRef-MicrosoftVisualCpp2015-2022Runtime
license_family: Proprietary
purls: []
- size: 754247
- timestamp: 1731710681163
-- conda: https://prefix.dev/conda-forge/noarch/virtualenv-20.28.1-pyhd8ed1ab_0.conda
- sha256: c8bde4547ddbd21ea89e483a7c65d8a5e442c0db494b0b977e389b75b9d03d62
- md5: 680b1c287b10cefc8bda0530b217229f
+ size: 750733
+ timestamp: 1743195092905
+- conda: https://prefix.dev/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda
+ sha256: 763dc774200b2eebdf5437b112834c5455a1dd1c9b605340696950277ff36729
+ md5: c0600c1b374efa7a1ff444befee108ca
depends:
- distlib >=0.3.7,<1
- filelock >=3.12.2,<4
@@ -9826,18 +11325,18 @@ packages:
license_family: MIT
purls:
- pkg:pypi/virtualenv?source=hash-mapping
- size: 3350367
- timestamp: 1735929107438
-- conda: https://prefix.dev/conda-forge/win-64/vs2015_runtime-14.42.34433-hdffcdeb_23.conda
- sha256: 568ce8151eaae256f1cef752fc78651ad7a86ff05153cc7a4740b52ae6536118
- md5: 5c176975ca2b8366abad3c97b3cd1e83
+ size: 4133755
+ timestamp: 1746781585998
+- conda: https://prefix.dev/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda
+ sha256: 432f2937206f1ad4a77e39f84fabc1ce7d2472b669836fb72bd2bfd19a2defc9
+ md5: 3357e4383dbce31eed332008ede242ab
depends:
- - vc14_runtime >=14.42.34433
+ - vc14_runtime >=14.42.34438
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 17572
- timestamp: 1731710685291
+ size: 17873
+ timestamp: 1743195097269
- conda: https://prefix.dev/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda
sha256: f21e63e8f7346f9074fd00ca3b079bd3d2fa4d71f1f89d5b6934bf31446dc2a5
md5: b68980f2495d096e71c7fd9d7ccf63e6
@@ -9860,83 +11359,6 @@ packages:
- pkg:pypi/win-inet-pton?source=hash-mapping
size: 9555
timestamp: 1733130678956
-- conda: https://prefix.dev/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda
- sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038
- md5: f6ebe2cb3f82ba6c057dde5d9debe4f7
- depends:
- - __glibc >=2.17,<3.0.a0
- - libgcc >=13
- license: MIT
- license_family: MIT
- purls: []
- size: 14780
- timestamp: 1734229004433
-- conda: https://prefix.dev/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda
- sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d
- md5: 50901e0764b7701d8ed7343496f4f301
- depends:
- - __osx >=11.0
- license: MIT
- license_family: MIT
- purls: []
- size: 13593
- timestamp: 1734229104321
-- conda: https://prefix.dev/conda-forge/win-64/xorg-libxau-1.0.12-h0e40799_0.conda
- sha256: 047836241b2712aab1e29474a6f728647bff3ab57de2806b0bb0a6cf9a2d2634
- md5: 2ffbfae4548098297c033228256eb96e
- depends:
- - libgcc >=13
- - libwinpthread >=12.0.0.r4.gg4f2fc60ca
- - ucrt >=10.0.20348.0
- license: MIT
- license_family: MIT
- purls: []
- size: 108013
- timestamp: 1734229474049
-- conda: https://prefix.dev/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda
- sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee
- md5: 8035c64cb77ed555e3f150b7b3972480
- depends:
- - __glibc >=2.17,<3.0.a0
- - libgcc >=13
- license: MIT
- license_family: MIT
- purls: []
- size: 19901
- timestamp: 1727794976192
-- conda: https://prefix.dev/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda
- sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8
- md5: 77c447f48cab5d3a15ac224edb86a968
- depends:
- - __osx >=11.0
- license: MIT
- license_family: MIT
- purls: []
- size: 18487
- timestamp: 1727795205022
-- conda: https://prefix.dev/conda-forge/win-64/xorg-libxdmcp-1.1.5-h0e40799_0.conda
- sha256: 9075f98dcaa8e9957e4a3d9d30db05c7578a536950a31c200854c5c34e1edb2c
- md5: 8393c0f7e7870b4eb45553326f81f0ff
- depends:
- - libgcc >=13
- - libwinpthread >=12.0.0.r4.gg4f2fc60ca
- - ucrt >=10.0.20348.0
- license: MIT
- license_family: MIT
- purls: []
- size: 69920
- timestamp: 1727795651979
-- conda: https://prefix.dev/conda-forge/noarch/xyzservices-2024.9.0-pyhd8ed1ab_1.conda
- sha256: 5f8757092fc985d7586f2659505ec28757c05fd65d8d6ae549a5cec7e3376977
- md5: c79cea50b258f652010cb6c8d81591b5
- depends:
- - python >=3.8
- license: BSD-3-Clause
- license_family: BSD
- purls:
- - pkg:pypi/xyzservices?source=hash-mapping
- size: 46860
- timestamp: 1733143536777
- conda: https://prefix.dev/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2
sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535
md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae
@@ -9947,6 +11369,14 @@ packages:
purls: []
size: 89141
timestamp: 1641346969816
+- conda: https://prefix.dev/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2
+ sha256: 5301417e2c8dea45b401ffee8df3957d2447d4ce80c83c5ff151fc6bfe1c4148
+ md5: d7e08fcf8259d742156188e8762b4d20
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 84237
+ timestamp: 1641347062780
- conda: https://prefix.dev/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2
sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7
md5: 4bb3f014845110883a3c5ee811fd84b4
@@ -9966,28 +11396,28 @@ packages:
purls: []
size: 63274
timestamp: 1641347623319
-- conda: https://prefix.dev/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda
- sha256: 5488542dceeb9f2874e726646548ecc5608060934d6f9ceaa7c6a48c61f9cc8d
- md5: e52c2ef711ccf31bb7f70ca87d144b9e
+- conda: https://prefix.dev/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda
+ sha256: 3f7a58ff4ff1d337d56af0641a7eba34e7eea0bf32e49934c96ee171640f620b
+ md5: 234be740b00b8e41567e5b0ed95aaba9
depends:
- python >=3.9
- license: BSD-3-Clause
- license_family: BSD
+ license: MIT
+ license_family: MIT
purls:
- - pkg:pypi/zict?source=hash-mapping
- size: 36341
- timestamp: 1733261642963
-- conda: https://prefix.dev/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda
- sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1
- md5: 0c3cc595284c5e8f0f9900a9b228a332
+ - pkg:pypi/zipp?source=compressed-mapping
+ size: 22691
+ timestamp: 1748277499928
+- conda: https://prefix.dev/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda
+ sha256: 7560d21e1b021fd40b65bfb72f67945a3fcb83d78ad7ccf37b8b3165ec3b68ad
+ md5: df5e78d904988eb55042c0c97446079f
depends:
- python >=3.9
license: MIT
license_family: MIT
purls:
- pkg:pypi/zipp?source=hash-mapping
- size: 21809
- timestamp: 1732827613585
+ size: 22963
+ timestamp: 1749421737203
- conda: https://prefix.dev/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda
sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab
md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8
@@ -10000,6 +11430,17 @@ packages:
purls: []
size: 92286
timestamp: 1727963153079
+- conda: https://prefix.dev/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda
+ sha256: 219edbdfe7f073564375819732cbf7cc0d7c7c18d3f546a09c2dfaf26e4d69f3
+ md5: c989e0295dcbdc08106fe5d9e935f0b9
+ depends:
+ - __osx >=10.13
+ - libzlib 1.3.1 hd23fc13_2
+ license: Zlib
+ license_family: Other
+ purls: []
+ size: 88544
+ timestamp: 1727963189976
- conda: https://prefix.dev/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda
sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430
md5: e3170d898ca6cb48f1bb567afb92f775
@@ -10011,77 +11452,97 @@ packages:
purls: []
size: 77606
timestamp: 1727963209370
-- conda: https://prefix.dev/conda-forge/linux-64/zstandard-0.23.0-py310ha39cb0e_1.conda
- sha256: fcd784735205d6c5f19dcb339f92d2eede9bc42a01ec2c384381ee1b6089d4f6
- md5: f49de34fb99934bf49ab330b5caffd64
+- conda: https://prefix.dev/conda-forge/linux-64/zstandard-0.23.0-py310ha75aee5_2.conda
+ sha256: f9b76c2f8a0f96e656843553272e547170182f5b8aba1a6bcba28f7611d87c23
+ md5: f9254b5b0193982416b91edcb4b2676f
depends:
- __glibc >=2.17,<3.0.a0
- cffi >=1.11
- libgcc >=13
- python >=3.10,<3.11.0a0
- python_abi 3.10.* *_cp310
- - zstd >=1.5.6,<1.5.7.0a0
- - zstd >=1.5.6,<1.6.0a0
license: BSD-3-Clause
license_family: BSD
purls:
- pkg:pypi/zstandard?source=hash-mapping
- size: 408309
- timestamp: 1725305719512
-- conda: https://prefix.dev/conda-forge/linux-64/zstandard-0.23.0-py313h80202fe_1.conda
- sha256: ea82f2b8964150a3aa7373b4697e48e64f2200fe68ae554ee85c641c692d1c97
- md5: c178558ff516cd507763ffee230c20b2
+ size: 722119
+ timestamp: 1745869786772
+- conda: https://prefix.dev/conda-forge/linux-64/zstandard-0.23.0-py313h536fd9c_2.conda
+ sha256: ea9c542ef78c9e3add38bf1032e8ca5d18703114db353f6fca5c498f923f8ab8
+ md5: a026ac7917310da90a98eac2c782723c
depends:
- __glibc >=2.17,<3.0.a0
- cffi >=1.11
- libgcc >=13
- - python >=3.13.0rc1,<3.14.0a0
+ - python >=3.13,<3.14.0a0
+ - python_abi 3.13.* *_cp313
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/zstandard?source=hash-mapping
+ size: 736909
+ timestamp: 1745869790689
+- conda: https://prefix.dev/conda-forge/osx-64/zstandard-0.23.0-py310hbb8c376_2.conda
+ sha256: fad4ae15d30c13d0d51748139064fc0bb59359719881e7a370ca8652c4917828
+ md5: 5b75d4015ead2df6bf15bc372edfa139
+ depends:
+ - __osx >=10.13
+ - cffi >=1.11
+ - python >=3.10,<3.11.0a0
+ - python_abi 3.10.* *_cp310
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/zstandard?source=hash-mapping
+ size: 681744
+ timestamp: 1745869885563
+- conda: https://prefix.dev/conda-forge/osx-64/zstandard-0.23.0-py313h63b0ddb_2.conda
+ sha256: ab53cc54d0af1a8d85a50510209595d09c584101668f35c0fd3c4fbd59c4ece2
+ md5: 3babd14037340de278106b258fdb28d9
+ depends:
+ - __osx >=10.13
+ - cffi >=1.11
+ - python >=3.13,<3.14.0a0
- python_abi 3.13.* *_cp313
- - zstd >=1.5.6,<1.5.7.0a0
- - zstd >=1.5.6,<1.6.0a0
license: BSD-3-Clause
license_family: BSD
purls:
- pkg:pypi/zstandard?source=hash-mapping
- size: 424424
- timestamp: 1725305749031
-- conda: https://prefix.dev/conda-forge/osx-arm64/zstandard-0.23.0-py310h2665a74_1.conda
- sha256: a90d06cbfa50fc9b3c37bd092d559452475f22425bacf28f04ecac2e8b1c389c
- md5: 81b300570a423c9c9521b79f8f2ed1ba
+ size: 696588
+ timestamp: 1745869877231
+- conda: https://prefix.dev/conda-forge/osx-arm64/zstandard-0.23.0-py310h078409c_2.conda
+ sha256: 6fdb3e71c6af5fe9c2469befb724a80d8c874078df1fa9738d84cf857d84d4b1
+ md5: a617ab3d9042eef702d8d163c50e9b5e
depends:
- __osx >=11.0
- cffi >=1.11
- python >=3.10,<3.11.0a0
- python >=3.10,<3.11.0a0 *_cpython
- python_abi 3.10.* *_cp310
- - zstd >=1.5.6,<1.5.7.0a0
- - zstd >=1.5.6,<1.6.0a0
license: BSD-3-Clause
license_family: BSD
purls:
- pkg:pypi/zstandard?source=hash-mapping
- size: 320810
- timestamp: 1725305704555
-- conda: https://prefix.dev/conda-forge/osx-arm64/zstandard-0.23.0-py313hf2da073_1.conda
- sha256: 12b4e34acff24d291e2626c6610dfd819b8d99a461025ae59affcb6e84bc1d57
- md5: deebca66926691fadaaf16da05ecb5f9
+ size: 522323
+ timestamp: 1745870245475
+- conda: https://prefix.dev/conda-forge/osx-arm64/zstandard-0.23.0-py313h90d716c_2.conda
+ sha256: 70ed0c931f9cfad3e3a75a1faf557c5fc5bf638675c6afa2fb8673e4f88fb2c5
+ md5: 1f465c71f83bd92cfe9df941437dcd7c
depends:
- __osx >=11.0
- cffi >=1.11
- - python >=3.13.0rc1,<3.14.0a0
- - python >=3.13.0rc1,<3.14.0a0 *_cp313
+ - python >=3.13,<3.14.0a0
+ - python >=3.13,<3.14.0a0 *_cp313
- python_abi 3.13.* *_cp313
- - zstd >=1.5.6,<1.5.7.0a0
- - zstd >=1.5.6,<1.6.0a0
license: BSD-3-Clause
license_family: BSD
purls:
- pkg:pypi/zstandard?source=hash-mapping
- size: 336496
- timestamp: 1725305912716
-- conda: https://prefix.dev/conda-forge/win-64/zstandard-0.23.0-py310he5e10e1_1.conda
- sha256: 4e8aff4d0d42024e9f70783e51666186a681384d59fdd03fafda4b28f1fd540e
- md5: 2a879227ccc1a10a2caddf12607ffaeb
+ size: 536612
+ timestamp: 1745870248616
+- conda: https://prefix.dev/conda-forge/win-64/zstandard-0.23.0-py310ha8f682b_2.conda
+ sha256: 76bf75ef83e952ef4974e0e6656a7a90b4c4c1c22cea984cb9fc29aca05e5999
+ md5: fdc36a989175bb166109e400c106defa
depends:
- cffi >=1.11
- python >=3.10,<3.11.0a0
@@ -10089,65 +11550,38 @@ packages:
- ucrt >=10.0.20348.0
- vc >=14.2,<15
- vc14_runtime >=14.29.30139
- - zstd >=1.5.6,<1.5.7.0a0
- - zstd >=1.5.6,<1.6.0a0
license: BSD-3-Clause
license_family: BSD
purls:
- pkg:pypi/zstandard?source=hash-mapping
- size: 311278
- timestamp: 1725306039901
-- conda: https://prefix.dev/conda-forge/win-64/zstandard-0.23.0-py313h574b89f_1.conda
- sha256: 1d2744ec0e91da267ce749e19142081472539cb140a7dad0646cd249246691fe
- md5: 8e017aca933f4dd25491151edd3e7820
+ size: 435740
+ timestamp: 1745870314659
+- conda: https://prefix.dev/conda-forge/win-64/zstandard-0.23.0-py313ha7868ed_2.conda
+ sha256: b7bfe264fe3810b1abfe7f80c0f21f470d7cc730ada7ce3b3d08a90cb871999c
+ md5: b4d967b4d695a2ba8554738b3649d754
depends:
- cffi >=1.11
- - python >=3.13.0rc1,<3.14.0a0
+ - python >=3.13,<3.14.0a0
- python_abi 3.13.* *_cp313
- ucrt >=10.0.20348.0
- vc >=14.2,<15
- vc14_runtime >=14.29.30139
- - zstd >=1.5.6,<1.5.7.0a0
- - zstd >=1.5.6,<1.6.0a0
license: BSD-3-Clause
license_family: BSD
purls:
- pkg:pypi/zstandard?source=hash-mapping
- size: 325703
- timestamp: 1725305947138
-- conda: https://prefix.dev/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda
- sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b
- md5: 4d056880988120e29d75bfff282e0f45
- depends:
- - libgcc-ng >=12
- - libstdcxx-ng >=12
- - libzlib >=1.2.13,<2.0.0a0
- license: BSD-3-Clause
- license_family: BSD
- purls: []
- size: 554846
- timestamp: 1714722996770
-- conda: https://prefix.dev/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda
- sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09
- md5: d96942c06c3e84bfcc5efb038724a7fd
- depends:
- - __osx >=11.0
- - libzlib >=1.2.13,<2.0.0a0
- license: BSD-3-Clause
- license_family: BSD
- purls: []
- size: 405089
- timestamp: 1714723101397
-- conda: https://prefix.dev/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda
- sha256: 768e30dc513568491818fb068ee867c57c514b553915536da09e5d10b4ebf3c3
- md5: 9a17230f95733c04dc40a2b1e5491d74
+ size: 449871
+ timestamp: 1745870298072
+- conda: https://prefix.dev/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda
+ sha256: a4166e3d8ff4e35932510aaff7aa90772f84b4d07e9f6f83c614cba7ceefe0eb
+ md5: 6432cb5d4ac0046c3ac0a8a0f95842f9
depends:
- - libzlib >=1.2.13,<2.0.0a0
- - ucrt >=10.0.20348.0
- - vc >=14.2,<15
- - vc14_runtime >=14.29.30139
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - libstdcxx >=13
+ - libzlib >=1.3.1,<2.0a0
license: BSD-3-Clause
license_family: BSD
purls: []
- size: 349143
- timestamp: 1714723445995
+ size: 567578
+ timestamp: 1742433379869
diff --git a/pyproject.toml b/pyproject.toml
index fee54b1a..e7a2bf8b 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -5,43 +5,29 @@ build-backend = "hatchling.build"
[project]
name = "array-api-extra"
authors = [
- { name = "Lucas Colley", email = "lucas.colley8@gmail.com" },
- # { name = "Open Source Contributors" }, # https://github.com/pypi/warehouse/issues/14813
+ { name = "Lucas Colley", email = "lucas.colley8@gmail.com" },
+ # { name = "Open Source Contributors" }, # https://github.com/pypi/warehouse/issues/14813
]
description = "Extra array functions built on top of the array API standard."
readme = "README.md"
license.file = "LICENSE"
requires-python = ">=3.10"
classifiers = [
- "Intended Audience :: Developers",
- "License :: OSI Approved :: MIT License",
- "Operating System :: OS Independent",
- "Programming Language :: Python",
- "Programming Language :: Python :: 3",
- "Programming Language :: Python :: 3 :: Only",
- "Programming Language :: Python :: 3.10",
- "Programming Language :: Python :: 3.11",
- "Programming Language :: Python :: 3.12",
- "Programming Language :: Python :: 3.13",
- "Typing :: Typed",
+ "Intended Audience :: Developers",
+ "License :: OSI Approved :: MIT License",
+ "Operating System :: OS Independent",
+ "Programming Language :: Python",
+ "Programming Language :: Python :: 3",
+ "Programming Language :: Python :: 3 :: Only",
+ "Programming Language :: Python :: 3.10",
+ "Programming Language :: Python :: 3.11",
+ "Programming Language :: Python :: 3.12",
+ "Programming Language :: Python :: 3.13",
+ "Programming Language :: Python :: Free Threading :: 3 - Stable",
+ "Typing :: Typed",
]
dynamic = ["version"]
-dependencies = ["array-api-compat>=1.10.0,<2"]
-
-[project.optional-dependencies]
-tests = [
- "pytest >=6",
- "pytest-cov >=3",
- "array-api-strict",
- "numpy",
-]
-docs = [
- "sphinx>=7.0",
- "myst_parser>=0.13",
- "sphinx_copybutton",
- "sphinx_autodoc_typehints",
- "furo>=2023.08.17",
-]
+dependencies = ["array-api-compat>=1.12.0,<2"]
[project.urls]
Homepage = "https://github.com/data-apis/array-api-extra"
@@ -59,70 +45,80 @@ version.path = "src/array_api_extra/__init__.py"
[tool.pixi.project]
channels = ["https://prefix.dev/conda-forge"]
-platforms = ["linux-64", "osx-arm64", "win-64"]
+platforms = ["linux-64", "osx-64", "osx-arm64", "win-64"]
[tool.pixi.dependencies]
-python = ">=3.10,<3.14"
-array-api-compat = ">=1.10.0,<2"
+array-api-compat = ">=1.12.0,<2"
[tool.pixi.pypi-dependencies]
array-api-extra = { path = ".", editable = true }
[tool.pixi.feature.lint.dependencies]
-pre-commit = "*"
-pylint = "*"
-basedmypy = "*"
-basedpyright = "*"
+typing-extensions = ">=4.14.0"
+pre-commit = ">=4.2.0"
+pylint = ">=3.3.7"
+mypy = ">=1.16.0"
+basedpyright = ">=1.29.4"
numpydoc = ">=1.8.0,<2"
# import dependencies for mypy:
-array-api-strict = "*"
-numpy = "*"
-pytest = "*"
+array-api-strict = ">=2.3.1"
+numpy = ">=2.1.3"
+pytest = ">=8.4.0"
+hypothesis = ">=6.131.28"
+dask-core = ">=2025.5.1" # No distributed, tornado, etc.
+# NOTE: don't add cupy, jax, pytorch, or sparse here,
+# as they slow down mypy and are not portable across target OSs
[tool.pixi.feature.lint.tasks]
-pre-commit-install = "pre-commit install"
-pre-commit = "pre-commit run --all-files"
-mypy = "mypy"
-pylint = { cmd = "pylint array_api_extra", cwd = "src" }
-pyright = "basedpyright"
-lint = { depends-on = ["pre-commit", "pylint", "mypy", "pyright"] }
+pre-commit-install = { cmd = "pre-commit install", description = "Install pre-commit"}
+pre-commit = { cmd = "pre-commit run --all-files", description = "Run pre-commit"}
+mypy = { cmd = "mypy", description="Type check with mypy"}
+pylint = { cmd = "pylint array_api_extra", cwd = "src" , description = "Lint using pylint"}
+pyright = { cmd = "basedpyright", description = "Type check with basedpyright"}
+lint = { depends-on = ["pre-commit", "pylint", "mypy", "pyright"] , description = "Run pre-commit, pylint, mypy, and pyright"}
[tool.pixi.feature.tests.dependencies]
-pytest = ">=6"
-pytest-cov = ">=3"
-array-api-strict = "*"
-numpy = "*"
+pytest = ">=8.4.0"
+pytest-cov = ">=6.2.1"
+hypothesis = ">=6.131.28"
+array-api-strict = ">=2.3.1"
+numpy = ">=1.22.0"
[tool.pixi.feature.tests.tasks]
-tests = "pytest -v"
-tests-cov = "pytest -v -ra --cov --cov-report=xml --cov-report=term --durations=20"
+tests = { cmd = "pytest -v", description = "Run tests"}
+tests-cov = { cmd="pytest -v -ra --cov --cov-report=xml --cov-report=term --durations=20", description = "Run tests with coverage"}
-clean-vendor-compat = "rm -rf vendor_tests/array_api_compat"
-clean-vendor-extra = "rm -rf vendor_tests/array_api_extra"
-copy-vendor-compat = { cmd = "cp -r $(python -c 'import site; print(site.getsitepackages()[0])')/array_api_compat vendor_tests/", depends-on = ["clean-vendor-compat"] }
-copy-vendor-extra = { cmd = "cp -r src/array_api_extra vendor_tests/", depends-on = ["clean-vendor-extra"] }
-tests-vendor = { cmd = "pytest -v vendor_tests", depends-on = ["copy-vendor-compat", "copy-vendor-extra"] }
+clean-vendor-compat = { cmd = "rm -rf vendor_tests/array_api_compat", description = "Delete the existing vendored version of array-api-compat"}
+clean-vendor-extra = { cmd = "rm -rf vendor_tests/array_api_extra" , description = "Delete the existing vendored version of array-api-extra"}
+copy-vendor-compat = { cmd = "cp -r $(python -c 'import site; print(site.getsitepackages()[0])')/array_api_compat vendor_tests/", depends-on = ["clean-vendor-compat"] , description = "Vendor a clean copy of array-api-compat"}
+copy-vendor-extra = { cmd = "cp -r src/array_api_extra vendor_tests/", depends-on = ["clean-vendor-extra"] , description = "Vendor a clean copy of array-api-extra"}
+tests-vendor = { cmd = "pytest -v vendor_tests", depends-on = ["copy-vendor-compat", "copy-vendor-extra"] , description = "Check that array-api-extra and array-api-compat can be vendored together" }
-tests-ci = { depends-on = ["tests-cov", "tests-vendor"] }
-coverage = { cmd = "coverage html", depends-on = ["tests-cov"] }
-open-coverage = { cmd = "open htmlcov/index.html", depends-on = ["coverage"] }
+tests-ci = { depends-on = ["tests-cov", "tests-vendor"] , description = "Run tests with coverage and vendor tests"}
+coverage = { cmd = "coverage html", depends-on = ["tests-cov"], description = "Generate test coverage html report"}
+open-coverage = { cmd = "open htmlcov/index.html", depends-on = ["coverage"] , description = "Open test coverage report"}
[tool.pixi.feature.docs.dependencies]
-sphinx = ">=7.0"
-furo = ">=2023.08.17"
-myst-parser = ">=0.13"
-sphinx-copybutton = "*"
-sphinx-autodoc-typehints = "*"
+sphinx = ">=7.4.7"
+furo = ">=2024.8.6"
+myst-parser = ">=4.0.1"
+sphinx-copybutton = ">=0.5.2"
+sphinx-autodoc-typehints = ">=1.25.3"
+# Needed to import parsed modules with autodoc
+dask-core = ">=2025.5.1" # No distributed, tornado, etc.
+pytest = ">=8.4.0"
+typing-extensions = ">=4.14.0"
+numpy = ">=2.1.3"
[tool.pixi.feature.docs.tasks]
-docs = { cmd = "sphinx-build . build/", cwd = "docs" }
-open-docs = { cmd = "open build/index.html", cwd = "docs", depends-on = ["docs"] }
+docs = { cmd = "sphinx-build -E -W . build/", cwd = "docs" , description = "Build docs"}
+open-docs = { cmd = "open build/index.html", cwd = "docs", depends-on = ["docs"] , description = "Open the generated docs"}
[tool.pixi.feature.dev.dependencies]
-ipython = "*"
+ipython = ">=7.33.0"
[tool.pixi.feature.dev.tasks]
-ipython = { cmd = "ipython" }
+ipython = { cmd = "ipython" , description = "Launch ipython"}
[tool.pixi.feature.py310.dependencies]
python = "~=3.10.0"
@@ -130,46 +126,87 @@ python = "~=3.10.0"
[tool.pixi.feature.py313.dependencies]
python = "~=3.13.0"
+[tool.pixi.feature.numpy1.dependencies]
+# Oldest NumPy version supported by scikit-learn.
+# Note that this is older than what SPEC0 recommends.
+numpy = "=1.22.0"
+
# Backends that can run on CPU-only hosts
+# Note: JAX and PyTorch will install CPU variants.
+[tool.pixi.feature.backends.dependencies]
+pytorch = ">=2.7.0"
+dask-core = ">=2025.5.1" # No distributed, tornado, etc.
+sparse = ">=0.17.0"
+
[tool.pixi.feature.backends.target.linux-64.dependencies]
-pytorch = "*"
-dask = "*"
-sparse = ">=0.15"
-jax = "*"
+jax = ">=0.6.0"
+
+[tool.pixi.feature.backends.target.osx-64.dependencies]
+jax = ">=0.6.0"
[tool.pixi.feature.backends.target.osx-arm64.dependencies]
-pytorch = "*"
-dask = "*"
-sparse = ">=0.15"
-jax = "*"
+jax = ">=0.6.0"
[tool.pixi.feature.backends.target.win-64.dependencies]
-# pytorch = "*" # Package unavailable on Windows
-dask = "*"
-sparse = ">=0.15"
-# jax = "*" # Package unavailable on Windows
+# jax = "*" # unavailable
+
+# Backends that require a GPU host and a CUDA driver.
+# Note that JAX and PyTorch automatically prefer CUDA variants
+# thanks to the `system-requirements` below, *if available*.
+# We request them explicitly below to ensure that we don't
+# quietly revert to CPU-only in the future, e.g. when CUDA 13
+# is released and CUDA 12 builds are dropped upstream.
+[tool.pixi.feature.cuda-backends]
+system-requirements = { cuda = "12" }
-# Backends that require a GPU host and a CUDA driver
[tool.pixi.feature.cuda-backends.target.linux-64.dependencies]
-cupy = "*"
+cupy = ">=13.4.1"
+jaxlib = { version = ">=0.6.0", build = "cuda12*" }
+pytorch = { version = ">=2.7.0", build = "cuda12*" }
+
+[tool.pixi.feature.cuda-backends.target.osx-64.dependencies]
+# cupy = "*" # unavailable
+# jaxlib = { version = "*", build = "cuda12*" } # unavailable
+# pytorch = { version = "*", build = "cuda12*" } # unavailable
[tool.pixi.feature.cuda-backends.target.osx-arm64.dependencies]
-# cupy = "*" # Package unavailable on macOSX
+# cupy = "*" # unavailable
+# jaxlib = { version = "*", build = "cuda12*" } # unavailable
+# pytorch = { version = "*", build = "cuda12*" } # unavailable
[tool.pixi.feature.cuda-backends.target.win-64.dependencies]
-cupy = "*"
+cupy = ">=13.4.1"
+# jaxlib = { version = "*", build = "cuda12*" } # unavailable
+pytorch = { version = ">=2.7.0", build = "cuda12*" }
+
+[tool.pixi.feature.nogil.dependencies]
+python-freethreading = "~=3.13.0"
+pytest-run-parallel = ">=0.4.4"
+numpy = ">=2.3.0"
+# pytorch = "*" # Not available on Python 3.13t yet
+dask-core = ">=2025.5.1" # No distributed, tornado, etc.
+# sparse = "*" # numba not available on Python 3.13t yet
+# jax = "*" # ml_dtypes not available on Python 3.13t yet
[tool.pixi.environments]
-default = { solve-group = "default" }
-lint = { features = ["lint"], solve-group = "default" }
-tests = { features = ["tests"], solve-group = "default" }
-docs = { features = ["docs"], solve-group = "default" }
-dev = { features = ["lint", "tests", "docs", "dev"], solve-group = "default" }
-ci-py310 = ["py310", "tests"]
-ci-py313 = ["py313", "tests"]
-# CUDA not available on free github actions
-ci-backends = ["py310", "tests", "backends"]
-tests-backends = ["py310", "tests", "backends", "cuda-backends"]
+default = { features = ["py313"], solve-group = "py313" }
+lint = { features = ["py313", "lint"], solve-group = "py313" }
+docs = { features = ["py313", "docs"], solve-group = "py313" }
+tests = { features = ["py313", "tests"], solve-group = "py313" }
+tests-py313 = { features = ["py313", "tests"], solve-group = "py313" } # alias of tests
+
+# Some backends may pin numpy; use separate solve-group
+dev = { features = ["py310", "lint", "tests", "docs", "dev", "backends"], solve-group = "backends" }
+tests-backends = { features = ["py310", "tests", "backends"], solve-group = "backends" }
+
+# CUDA not available on free github actions and on some developers' PCs
+dev-cuda = { features = ["py310", "lint", "tests", "docs", "dev", "backends", "cuda-backends"], solve-group = "cuda" }
+tests-cuda = { features = ["py310", "tests", "backends", "cuda-backends"], solve-group = "cuda" }
+
+# Ungrouped environments
+tests-numpy1 = ["py310", "tests", "numpy1"]
+tests-py310 = ["py310", "tests"]
+tests-nogil = ["nogil", "tests"]
# pytest
@@ -177,25 +214,19 @@ tests-backends = ["py310", "tests", "backends", "cuda-backends"]
minversion = "6.0"
addopts = ["-ra", "--showlocals", "--strict-markers", "--strict-config"]
xfail_strict = true
-filterwarnings = [
- "error",
- # TODO: when Python 3.10 is dropped, use `enum.member` in `_delegation.py`
- "ignore:functools.partial will be a method descriptor:FutureWarning",
-]
+filterwarnings = ["error"]
log_cli_level = "INFO"
testpaths = ["tests"]
-markers = ["skip_xp_backend(library, *, reason=None): Skip test for a specific backend"]
+markers = [
+ "skip_xp_backend(library, /, *, reason=None): Skip test for a specific backend",
+ "xfail_xp_backend(library, /, *, reason=None, strict=None): Xfail test for a specific backend",
+]
+
# Coverage
[tool.coverage]
run.source = ["array_api_extra"]
-report.exclude_also = [
- '\.\.\.',
- 'if typing.TYPE_CHECKING:',
- 'if TYPE_CHECKING:',
-]
-
# mypy
@@ -205,18 +236,16 @@ python_version = "3.10"
warn_unused_configs = true
strict = true
enable_error_code = ["ignore-without-code", "truthy-bool"]
-disallow_untyped_defs = false
-disallow_incomplete_defs = false
-# data-apis/array-api#589
-disallow_any_expr = false
-# false positives with input validation
-disable_error_code = ["redundant-expr", "unreachable"]
+disable_error_code = ["no-any-return"]
[[tool.mypy.overrides]]
-module = "array_api_extra.*"
-disallow_untyped_defs = true
-disallow_incomplete_defs = true
+# slow or unavailable on Windows; do not add to the lint env
+module = ["cupy.*", "jax.*", "sparse.*", "torch.*"]
+ignore_missing_imports = true
+[[tool.mypy.overrides]]
+module = ["tests/*"]
+disable_error_code = ["no-untyped-def"] # test(...) without -> None
# pyright
@@ -226,19 +255,28 @@ pythonVersion = "3.10"
pythonPlatform = "All"
typeCheckingMode = "all"
-# data-apis/array-api#589
+# https://github.com/data-apis/array-api-typing
reportAny = false
reportExplicitAny = false
-# data-apis/array-api-strict#6
+# no array-api-strict type stubs; pytest fixtures
reportUnknownMemberType = false
-# no array-api-compat type stubs
+# no array-api-compat type stubs; pytest fixtures
reportUnknownVariableType = false
+# Redundant with mypy checks
+reportMissingImports = false
+reportMissingTypeStubs = false
# false positives for input validation
reportUnreachable = false
+# ruff handles this
+reportUnusedParameter = false
+# cyclic imports inside function bodies
+reportImportCycles = false
+# PyRight can't trace types in lambdas
+reportUnknownLambdaType = false
executionEnvironments = [
- { root = "tests", reportPrivateUsage = false },
- { root = "src" },
+ { root = "tests", reportPrivateUsage = false },
+ { root = "src" },
]
@@ -249,62 +287,57 @@ target-version = "py310"
[tool.ruff.lint]
extend-select = [
- "B", # flake8-bugbear
- "F", # Pyflakes
- "I", # isort
- "E", # Pycodestyle
- "W", # Pycodestyle
- "N", # pep8-naming
- "ARG", # flake8-unused-arguments
- "C4", # flake8-comprehensions
- "EM", # flake8-errmsg
- "ICN", # flake8-import-conventions
- "ISC", # flake8-implicit-str-concat
- "G", # flake8-logging-format
- "PGH", # pygrep-hooks
- "PIE", # flake8-pie
- "PL", # pylint
- "PT", # flake8-pytest-style
- "PTH", # flake8-use-pathlib
- "RET", # flake8-return
- "RUF", # Ruff-specific
- "SIM", # flake8-simplify
- "T20", # flake8-print
- "UP", # pyupgrade
- "YTT", # flake8-2020
- "EXE", # flake8-executable
- "NPY", # NumPy specific rules
- "PD", # pandas-vet
- "UP", # Pyupgrade
+ "B", # flake8-bugbear
+ "F", # Pyflakes
+ "I", # isort
+ "E", # Pycodestyle
+ "W", # Pycodestyle
+ "N", # pep8-naming
+ "ARG", # flake8-unused-arguments
+ "C4", # flake8-comprehensions
+ "EM", # flake8-errmsg
+ "ICN", # flake8-import-conventions
+ "ISC", # flake8-implicit-str-concat
+ "G", # flake8-logging-format
+ "PGH", # pygrep-hooks
+ "PIE", # flake8-pie
+ "PL", # pylint
+ "PT", # flake8-pytest-style
+ "PTH", # flake8-use-pathlib
+ "RET", # flake8-return
+ "RUF", # Ruff-specific
+ "SIM", # flake8-simplify
+ "T20", # flake8-print
+ "UP", # pyupgrade
+ "YTT", # flake8-2020
+ "EXE", # flake8-executable
+ "NPY", # NumPy specific rules
+ "PD", # pandas-vet
+ "UP", # Pyupgrade
]
ignore = [
- "PLR09", # Too many <...>
- "PLR2004", # Magic value used in comparison
- "ISC001", # Conflicts with formatter
- "N801", # Class name should use CapWords convention
- "N802", # Function name should be lowercase
- "N806", # Variable in function should be lowercase
+ "PLR09", # Too many <...>
+ "PLR2004", # Magic value used in comparison
+ "ISC001", # Conflicts with formatter
+ "N801", # Class name should use CapWords convention
+ "N802", # Function name should be lowercase
+ "N806", # Variable in function should be lowercase
]
-[tool.ruff.lint.per-file-ignores]
-"tests/**" = ["T20"]
-
# Pylint
[tool.pylint]
py-version = "3.10"
-ignore-paths = [".*/_version.py"]
reports.output-format = "colorized"
-similarities.ignore-imports = "yes"
messages_control.disable = [
- "design",
- "fixme",
- "line-too-long",
- "missing-module-docstring",
- "missing-function-docstring",
- "too-many-lines",
- "wrong-import-position",
+ "design", # ignore heavily opinionated design checks
+ "fixme", #Β allow FIXME comments
+ "line-too-long", # ruff handles this
+ "unused-argument", # ruff handles this
+ "missing-function-docstring", # numpydoc handles this
+ "import-error", # mypy handles this
+ "import-outside-toplevel", # optional dependencies
]
@@ -312,16 +345,11 @@ messages_control.disable = [
[tool.numpydoc_validation]
checks = [
- "all", # report on all checks, except the below
- "EX01",
- "SA01",
- "ES01",
+ "all", # report on all checks, except the below
+ "EX01", # most docstrings do not need an example
+ "SA01", # data-apis/array-api-extra#87
+ "ES01", # most docstrings do not need an extended summary
]
exclude = [ # don't report on objects that match any of these regex
- '.*test_at.*',
- '.*test_funcs.*',
- '.*test_testing.*',
- '.*test_utils.*',
- '.*test_version.*',
- '.*test_vendor.*',
+ '.*test_*',
]
diff --git a/renovate.json b/renovate.json
new file mode 100644
index 00000000..c263292b
--- /dev/null
+++ b/renovate.json
@@ -0,0 +1,71 @@
+{
+ "$schema": "https://docs.renovatebot.com/renovate-schema.json",
+ "extends": [
+ "config:recommended",
+ "helpers:pinGitHubActionDigests",
+ ":automergeMinor"
+ ],
+ "dependencyDashboardTitle": "META: Dependency Dashboard",
+ "commitMessagePrefix": "deps:",
+ "labels": ["dependencies"],
+ "rangeStrategy": "bump",
+ "constraints": {
+ "pixi": ">=v0.45.0"
+ },
+ "minimumReleaseAge": "14 days",
+ "packageRules": [
+ {
+ "description": "Do not bump deps pinned with '~=' or '='.",
+ "matchManagers": ["pixi"],
+ "matchCurrentValue": "/^~?=/",
+ "enabled": false
+ },
+ {
+ "description": "Do not bump Python deps in the manifest or requires-python.",
+ "matchManagers": ["pixi", "pep621"],
+ "matchPackageNames": ["python"],
+ "enabled": false
+ },
+ {
+ "description": "Schedule automerged GHA updates for the 15th of each month.",
+ "matchManagers": ["github-actions"],
+ "groupName": "gha",
+ "schedule": ["* * 15 * *"],
+ "automerge": true
+ },
+ {
+ "description": "Block PRs for updates blocked on dropping Python 3.10.",
+ "matchManagers": ["pixi"],
+ "matchPackageNames": ["sphinx", "ipython", "sphinx-autodoc-typehints"],
+ "enabled": false
+ },
+ {
+ "description": "Waiting for Numba to support NumPy 2.2.",
+ "matchManagers": ["pixi"],
+ "matchPackageNames": ["numpy"],
+ "enabled": false
+ },
+ {
+ "description": "Block Python CI updates as setup-python lags behind (gh-194).",
+ "matchManagers": ["github-actions"],
+ "matchPackageNames": ["python"],
+ "enabled": false
+ },
+ {
+ "description": "Group Dask packages.",
+ "matchPackageNames": ["dask", "dask-core"],
+ "groupName": "dask"
+ },
+ {
+ "description": "Group JAX packages.",
+ "matchPackageNames": ["jax", "jaxlib"],
+ "groupName": "jax"
+ },
+ {
+ "description": "Schedule hypothesis monthly as releases are frequent.",
+ "matchManagers": ["pixi"],
+ "matchPackageNames": ["hypothesis"],
+ "schedule": ["* * 10 * *"]
+ }
+ ]
+}
diff --git a/src/array_api_extra/__init__.py b/src/array_api_extra/__init__.py
index ea660f1e..ddfc715e 100644
--- a/src/array_api_extra/__init__.py
+++ b/src/array_api_extra/__init__.py
@@ -1,30 +1,40 @@
"""Extra array functions built on top of the array API standard."""
-from ._delegation import pad
+from ._delegation import isclose, one_hot, pad
+from ._lib._at import at
from ._lib._funcs import (
- at,
+ apply_where,
atleast_nd,
+ broadcast_shapes,
cov,
create_diagonal,
+ default_dtype,
expand_dims,
kron,
nunique,
setdiff1d,
sinc,
)
+from ._lib._lazy import lazy_apply
-__version__ = "0.6.0"
+__version__ = "0.8.1.dev0"
# pylint: disable=duplicate-code
__all__ = [
"__version__",
+ "apply_where",
"at",
"atleast_nd",
+ "broadcast_shapes",
"cov",
"create_diagonal",
+ "default_dtype",
"expand_dims",
+ "isclose",
"kron",
+ "lazy_apply",
"nunique",
+ "one_hot",
"pad",
"setdiff1d",
"sinc",
diff --git a/src/array_api_extra/_delegation.py b/src/array_api_extra/_delegation.py
index 4a1740e6..756841c8 100644
--- a/src/array_api_extra/_delegation.py
+++ b/src/array_api_extra/_delegation.py
@@ -1,40 +1,201 @@
"""Delegation to existing implementations for Public API Functions."""
+from collections.abc import Sequence
from types import ModuleType
from typing import Literal
-from ._lib import Backend, _funcs
-from ._lib._utils._compat import array_namespace
-from ._lib._utils._typing import Array
+from ._lib import _funcs
+from ._lib._utils._compat import (
+ array_namespace,
+ is_cupy_namespace,
+ is_dask_namespace,
+ is_jax_namespace,
+ is_numpy_namespace,
+ is_pydata_sparse_namespace,
+ is_torch_namespace,
+)
+from ._lib._utils._compat import device as get_device
+from ._lib._utils._helpers import asarrays
+from ._lib._utils._typing import Array, DType
-__all__ = ["pad"]
+__all__ = ["isclose", "one_hot", "pad"]
-def _delegate(xp: ModuleType, *backends: Backend) -> bool:
+def isclose(
+ a: Array | complex,
+ b: Array | complex,
+ *,
+ rtol: float = 1e-05,
+ atol: float = 1e-08,
+ equal_nan: bool = False,
+ xp: ModuleType | None = None,
+) -> Array:
+ """
+ Return a boolean array where two arrays are element-wise equal within a tolerance.
+
+ The tolerance values are positive, typically very small numbers. The relative
+ difference ``(rtol * abs(b))`` and the absolute difference `atol` are added together
+ to compare against the absolute difference between `a` and `b`.
+
+ NaNs are treated as equal if they are in the same place and if ``equal_nan=True``.
+ Infs are treated as equal if they are in the same place and of the same sign in both
+ arrays.
+
+ Parameters
+ ----------
+ a, b : Array | int | float | complex | bool
+ Input objects to compare. At least one must be an array.
+ rtol : array_like, optional
+ The relative tolerance parameter (see Notes).
+ atol : array_like, optional
+ The absolute tolerance parameter (see Notes).
+ equal_nan : bool, optional
+ Whether to compare NaN's as equal. If True, NaN's in `a` will be considered
+ equal to NaN's in `b` in the output array.
+ xp : array_namespace, optional
+ The standard-compatible namespace for `a` and `b`. Default: infer.
+
+ Returns
+ -------
+ Array
+ A boolean array of shape broadcasted from `a` and `b`, containing ``True`` where
+ `a` is close to `b`, and ``False`` otherwise.
+
+ Warnings
+ --------
+ The default `atol` is not appropriate for comparing numbers with magnitudes much
+ smaller than one (see notes).
+
+ See Also
+ --------
+ math.isclose : Similar function in stdlib for Python scalars.
+
+ Notes
+ -----
+ For finite values, `isclose` uses the following equation to test whether two
+ floating point values are equivalent::
+
+ absolute(a - b) <= (atol + rtol * absolute(b))
+
+ Unlike the built-in `math.isclose`,
+ the above equation is not symmetric in `a` and `b`,
+ so that ``isclose(a, b)`` might be different from ``isclose(b, a)`` in some rare
+ cases.
+
+ The default value of `atol` is not appropriate when the reference value `b` has
+ magnitude smaller than one. For example, it is unlikely that ``a = 1e-9`` and
+ ``b = 2e-9`` should be considered "close", yet ``isclose(1e-9, 2e-9)`` is ``True``
+ with default settings. Be sure to select `atol` for the use case at hand, especially
+ for defining the threshold below which a non-zero value in `a` will be considered
+ "close" to a very small or zero value in `b`.
+
+ The comparison of `a` and `b` uses standard broadcasting, which means that `a` and
+ `b` need not have the same shape in order for ``isclose(a, b)`` to evaluate to
+ ``True``.
+
+ `isclose` is not defined for non-numeric data types.
+ ``bool`` is considered a numeric data-type for this purpose.
+ """
+ xp = array_namespace(a, b) if xp is None else xp
+
+ if (
+ is_numpy_namespace(xp)
+ or is_cupy_namespace(xp)
+ or is_dask_namespace(xp)
+ or is_jax_namespace(xp)
+ ):
+ return xp.isclose(a, b, rtol=rtol, atol=atol, equal_nan=equal_nan)
+
+ if is_torch_namespace(xp):
+ a, b = asarrays(a, b, xp=xp) # Array API 2024.12 support
+ return xp.isclose(a, b, rtol=rtol, atol=atol, equal_nan=equal_nan)
+
+ return _funcs.isclose(a, b, rtol=rtol, atol=atol, equal_nan=equal_nan, xp=xp)
+
+
+def one_hot(
+ x: Array,
+ /,
+ num_classes: int,
+ *,
+ dtype: DType | None = None,
+ axis: int = -1,
+ xp: ModuleType | None = None,
+) -> Array:
"""
- Check whether `xp` is one of the `backends` to delegate to.
+ One-hot encode the given indices.
+
+ Each index in the input `x` is encoded as a vector of zeros of length `num_classes`
+ with the element at the given index set to one.
Parameters
----------
- xp : array_namespace
- Array namespace to check.
- *backends : IsNamespace
- Arbitrarily many backends (from the ``IsNamespace`` enum) to check.
+ x : array
+ An array with integral dtype whose values are between `0` and `num_classes - 1`.
+ num_classes : int
+ Number of classes in the one-hot dimension.
+ dtype : DType, optional
+ The dtype of the return value. Defaults to the default float dtype (usually
+ float64).
+ axis : int, optional
+ Position in the expanded axes where the new axis is placed. Default: -1.
+ xp : array_namespace, optional
+ The standard-compatible namespace for `x`. Default: infer.
Returns
-------
- bool
- ``True`` if `xp` matches one of the `backends`, ``False`` otherwise.
+ array
+ An array having the same shape as `x` except for a new axis at the position
+ given by `axis` having size `num_classes`. If `axis` is unspecified, it
+ defaults to -1, which appends a new axis.
+
+ If ``x < 0`` or ``x >= num_classes``, then the result is undefined, may raise
+ an exception, or may even cause a bad state. `x` is not checked.
+
+ Examples
+ --------
+ >>> import array_api_extra as xpx
+ >>> import array_api_strict as xp
+ >>> xpx.one_hot(xp.asarray([1, 2, 0]), 3)
+ Array([[0., 1., 0.],
+ [0., 0., 1.],
+ [1., 0., 0.]], dtype=array_api_strict.float64)
"""
- return any(backend.is_namespace(xp) for backend in backends)
+ # Validate inputs.
+ if xp is None:
+ xp = array_namespace(x)
+ if not xp.isdtype(x.dtype, "integral"):
+ msg = "x must have an integral dtype."
+ raise TypeError(msg)
+ if dtype is None:
+ dtype = _funcs.default_dtype(xp, device=get_device(x))
+ # Delegate where possible.
+ if is_jax_namespace(xp):
+ from jax.nn import one_hot as jax_one_hot
+
+ return jax_one_hot(x, num_classes, dtype=dtype, axis=axis)
+ if is_torch_namespace(xp):
+ from torch.nn.functional import one_hot as torch_one_hot
+
+ x = xp.astype(x, xp.int64) # PyTorch only supports int64 here.
+ try:
+ out = torch_one_hot(x, num_classes)
+ except RuntimeError as e:
+ raise IndexError from e
+ else:
+ out = _funcs.one_hot(x, num_classes, xp=xp)
+ out = xp.astype(out, dtype, copy=False)
+ if axis != -1:
+ out = xp.moveaxis(out, -1, axis)
+ return out
def pad(
x: Array,
- pad_width: int | tuple[int, int] | list[tuple[int, int]],
+ pad_width: int | tuple[int, int] | Sequence[tuple[int, int]],
mode: Literal["constant"] = "constant",
*,
- constant_values: bool | int | float | complex = 0,
+ constant_values: complex = 0,
xp: ModuleType | None = None,
) -> Array:
"""
@@ -44,9 +205,9 @@ def pad(
----------
x : array
Input array.
- pad_width : int or tuple of ints or list of pairs of ints
+ pad_width : int or tuple of ints or sequence of pairs of ints
Pad the input array with this many elements from each side.
- If a list of tuples, ``[(before_0, after_0), ... (before_N, after_N)]``,
+ If a sequence of tuples, ``[(before_0, after_0), ... (before_N, after_N)]``,
each pair applies to the corresponding axis of ``x``.
A single tuple, ``(before, after)``, is equivalent to a list of ``x.ndim``
copies of this tuple.
@@ -70,14 +231,19 @@ def pad(
msg = "Only `'constant'` mode is currently supported"
raise NotImplementedError(msg)
+ if (
+ is_numpy_namespace(xp)
+ or is_cupy_namespace(xp)
+ or is_jax_namespace(xp)
+ or is_pydata_sparse_namespace(xp)
+ ):
+ return xp.pad(x, pad_width, mode, constant_values=constant_values)
+
# https://github.com/pytorch/pytorch/blob/cf76c05b4dc629ac989d1fb8e789d4fac04a095a/torch/_numpy/_funcs_impl.py#L2045-L2056
- if _delegate(xp, Backend.TORCH):
+ if is_torch_namespace(xp):
pad_width = xp.asarray(pad_width)
pad_width = xp.broadcast_to(pad_width, (x.ndim, 2))
pad_width = xp.flip(pad_width, axis=(0,)).flatten()
return xp.nn.functional.pad(x, tuple(pad_width), value=constant_values) # type: ignore[arg-type] # pyright: ignore[reportArgumentType]
- if _delegate(xp, Backend.NUMPY, Backend.JAX_NUMPY, Backend.CUPY):
- return xp.pad(x, pad_width, mode, constant_values=constant_values)
-
return _funcs.pad(x, pad_width, constant_values=constant_values, xp=xp)
diff --git a/src/array_api_extra/_lib/__init__.py b/src/array_api_extra/_lib/__init__.py
index b83d7e8c..d7b32033 100644
--- a/src/array_api_extra/_lib/__init__.py
+++ b/src/array_api_extra/_lib/__init__.py
@@ -1,5 +1 @@
"""Internals of array-api-extra."""
-
-from ._backends import Backend
-
-__all__ = ["Backend"]
diff --git a/src/array_api_extra/_lib/_at.py b/src/array_api_extra/_lib/_at.py
new file mode 100644
index 00000000..fb2d6ab7
--- /dev/null
+++ b/src/array_api_extra/_lib/_at.py
@@ -0,0 +1,463 @@
+"""Update operations for read-only arrays."""
+
+from __future__ import annotations
+
+import operator
+from collections.abc import Callable
+from enum import Enum
+from types import ModuleType
+from typing import TYPE_CHECKING, ClassVar, cast
+
+from ._utils import _compat
+from ._utils._compat import (
+ array_namespace,
+ is_dask_array,
+ is_jax_array,
+ is_torch_array,
+ is_writeable_array,
+)
+from ._utils._helpers import meta_namespace
+from ._utils._typing import Array, SetIndex
+
+if TYPE_CHECKING: # pragma: no cover
+ # TODO import from typing (requires Python >=3.11)
+ from typing_extensions import Self
+
+
+class _AtOp(Enum):
+ """Operations for use in `xpx.at`."""
+
+ SET = "set"
+ ADD = "add"
+ SUBTRACT = "subtract"
+ MULTIPLY = "multiply"
+ DIVIDE = "divide"
+ POWER = "power"
+ MIN = "min"
+ MAX = "max"
+
+ # @override from Python 3.12
+ def __str__(self) -> str: # pyright: ignore[reportImplicitOverride]
+ """
+ Return string representation (useful for pytest logs).
+
+ Returns
+ -------
+ str
+ The operation's name.
+ """
+ return self.value
+
+
+class Undef(Enum):
+ """Sentinel for undefined values."""
+
+ UNDEF = 0
+
+
+_undef = Undef.UNDEF
+
+
+class at: # pylint: disable=invalid-name # numpydoc ignore=PR02
+ """
+ Update operations for read-only arrays.
+
+ This implements ``jax.numpy.ndarray.at`` for all writeable
+ backends (those that support ``__setitem__``) and routes
+ to the ``.at[]`` method for JAX arrays.
+
+ Parameters
+ ----------
+ x : array
+ Input array.
+ idx : index, optional
+ Only `array API standard compliant indices
+ `_
+ are supported.
+
+ You may use two alternate syntaxes::
+
+ >>> import array_api_extra as xpx
+ >>> xpx.at(x, idx).set(value) # or add(value), etc.
+ >>> xpx.at(x)[idx].set(value)
+
+ copy : bool, optional
+ None (default)
+ The array parameter *may* be modified in place if it is
+ possible and beneficial for performance.
+ You should not reuse it after calling this function.
+ True
+ Ensure that the inputs are not modified.
+ False
+ Ensure that the update operation writes back to the input.
+ Raise ``ValueError`` if a copy cannot be avoided.
+
+ xp : array_namespace, optional
+ The standard-compatible namespace for `x`. Default: infer.
+
+ Returns
+ -------
+ Updated input array.
+
+ Warnings
+ --------
+ (a) When you omit the ``copy`` parameter, you should never reuse the parameter
+ array later on; ideally, you should reassign it immediately::
+
+ >>> import array_api_extra as xpx
+ >>> x = xpx.at(x, 0).set(2)
+
+ The above best practice pattern ensures that the behaviour won't change depending
+ on whether ``x`` is writeable or not, as the original ``x`` object is dereferenced
+ as soon as ``xpx.at`` returns; this way there is no risk to accidentally update it
+ twice.
+
+ On the reverse, the anti-pattern below must be avoided, as it will result in
+ different behaviour on read-only versus writeable arrays::
+
+ >>> x = xp.asarray([0, 0, 0])
+ >>> y = xpx.at(x, 0).set(2)
+ >>> z = xpx.at(x, 1).set(3)
+
+ In the above example, both calls to ``xpx.at`` update ``x`` in place *if possible*.
+ This causes the behaviour to diverge depending on whether ``x`` is writeable or not:
+
+ - If ``x`` is writeable, then after the snippet above you'll have
+ ``x == y == z == [2, 3, 0]``
+ - If ``x`` is read-only, then you'll end up with
+ ``x == [0, 0, 0]``, ``y == [2, 0, 0]`` and ``z == [0, 3, 0]``.
+
+ The correct pattern to use if you want diverging outputs from the same input is
+ to enforce copies::
+
+ >>> x = xp.asarray([0, 0, 0])
+ >>> y = xpx.at(x, 0).set(2, copy=True) # Never updates x
+ >>> z = xpx.at(x, 1).set(3) # May or may not update x in place
+ >>> del x # avoid accidental reuse of x as we don't know its state anymore
+
+ (b) The array API standard does not support integer array indices.
+ The behaviour of update methods when the index is an array of integers is
+ undefined and will vary between backends; this is particularly true when the
+ index contains multiple occurrences of the same index, e.g.::
+
+ >>> import numpy as np
+ >>> import jax.numpy as jnp
+ >>> import array_api_extra as xpx
+ >>> xpx.at(np.asarray([123]), np.asarray([0, 0])).add(1)
+ array([124])
+ >>> xpx.at(jnp.asarray([123]), jnp.asarray([0, 0])).add(1)
+ Array([125], dtype=int32)
+
+ See Also
+ --------
+ jax.numpy.ndarray.at : Equivalent array method in JAX.
+
+ Notes
+ -----
+ `sparse `_, as well as read-only arrays from libraries
+ not explicitly covered by ``array-api-compat``, are not supported by update
+ methods.
+
+ Boolean masks are supported on Dask and jitted JAX arrays exclusively
+ when `idx` has the same shape as `x` and `y` is 0-dimensional.
+ Note that this support is not available in JAX's native
+ ``x.at[mask].set(y)``.
+
+ This pattern::
+
+ >>> mask = m(x)
+ >>> x[mask] = f(x[mask])
+
+ Can't be replaced by `at`, as it won't work on Dask and JAX inside jax.jit::
+
+ >>> mask = m(x)
+ >>> x = xpx.at(x, mask).set(f(x[mask]) # Crash on Dask and jax.jit
+
+ You should instead use::
+
+ >>> x = xp.where(m(x), f(x), x)
+
+ Examples
+ --------
+ Given either of these equivalent expressions::
+
+ >>> import array_api_extra as xpx
+ >>> x = xpx.at(x)[1].add(2)
+ >>> x = xpx.at(x, 1).add(2)
+
+ If x is a JAX array, they are the same as::
+
+ >>> x = x.at[1].add(2)
+
+ If x is a read-only NumPy array, they are the same as::
+
+ >>> x = x.copy()
+ >>> x[1] += 2
+
+ For other known backends, they are the same as::
+
+ >>> x[1] += 2
+ """
+
+ _x: Array
+ _idx: SetIndex | Undef
+ __slots__: ClassVar[tuple[str, ...]] = ("_idx", "_x")
+
+ def __init__(
+ self, x: Array, idx: SetIndex | Undef = _undef, /
+ ) -> None: # numpydoc ignore=GL08
+ self._x = x
+ self._idx = idx
+
+ def __getitem__(self, idx: SetIndex, /) -> Self: # numpydoc ignore=PR01,RT01
+ """
+ Allow for the alternate syntax ``at(x)[start:stop:step]``.
+
+ It looks prettier than ``at(x, slice(start, stop, step))``
+ and feels more intuitive coming from the JAX documentation.
+ """
+ if self._idx is not _undef:
+ msg = "Index has already been set"
+ raise ValueError(msg)
+ return type(self)(self._x, idx)
+
+ def _op(
+ self,
+ at_op: _AtOp,
+ in_place_op: Callable[[Array, Array | complex], Array] | None,
+ out_of_place_op: Callable[[Array, Array], Array] | None,
+ y: Array | complex,
+ /,
+ copy: bool | None,
+ xp: ModuleType | None,
+ ) -> Array:
+ """
+ Implement all update operations.
+
+ Parameters
+ ----------
+ at_op : _AtOp
+ Method of JAX's Array.at[].
+ in_place_op : Callable[[Array, Array | complex], Array] | None
+ In-place operation to apply on mutable backends::
+
+ x[idx] = in_place_op(x[idx], y)
+
+ If None::
+
+ x[idx] = y
+
+ out_of_place_op : Callable[[Array, Array], Array] | None
+ Out-of-place operation to apply when idx is a boolean mask and the backend
+ doesn't support in-place updates::
+
+ x = xp.where(idx, out_of_place_op(x, y), x)
+
+ If None::
+
+ x = xp.where(idx, y, x)
+
+ y : array or complex
+ Right-hand side of the operation.
+ copy : bool or None
+ Whether to copy the input array. See the class docstring for details.
+ xp : array_namespace, optional
+ The array namespace for the input array. Default: infer.
+
+ Returns
+ -------
+ Array
+ Updated `x`.
+ """
+ from ._funcs import apply_where # pylint: disable=cyclic-import
+
+ x, idx = self._x, self._idx
+ xp = array_namespace(x, y) if xp is None else xp
+
+ if isinstance(idx, Undef):
+ msg = (
+ "Index has not been set.\n"
+ "Usage: either\n"
+ " at(x, idx).set(value)\n"
+ "or\n"
+ " at(x)[idx].set(value)\n"
+ "(same for all other methods)."
+ )
+ raise ValueError(msg)
+
+ if copy not in (True, False, None):
+ msg = f"copy must be True, False, or None; got {copy!r}"
+ raise ValueError(msg)
+
+ writeable = None if copy else is_writeable_array(x)
+
+ # JAX inside jax.jit doesn't support in-place updates with boolean
+ # masks; Dask exclusively supports __setitem__ but not iops.
+ # We can handle the common special case of 0-dimensional y
+ # with where(idx, y, x) instead.
+ if (
+ (is_dask_array(idx) or is_jax_array(idx))
+ and idx.dtype == xp.bool
+ and idx.shape == x.shape
+ ):
+ y_xp = xp.asarray(y, dtype=x.dtype, device=_compat.device(x))
+ if y_xp.ndim == 0:
+ if out_of_place_op: # add(), subtract(), ...
+ # suppress inf warnings on Dask
+ out = apply_where(
+ idx, (x, y_xp), out_of_place_op, fill_value=x, xp=xp
+ )
+ # Undo int->float promotion on JAX after _AtOp.DIVIDE
+ out = xp.astype(out, x.dtype, copy=False)
+ else: # set()
+ out = xp.where(idx, y_xp, x)
+
+ if copy is False:
+ x[()] = out
+ return x
+ return out
+
+ # else: this will work on eager JAX and crash on jax.jit and Dask
+
+ if copy or (copy is None and not writeable):
+ if is_jax_array(x):
+ # Use JAX's at[]
+ func = cast(
+ Callable[[Array | complex], Array],
+ getattr(x.at[idx], at_op.value), # type: ignore[attr-defined] # pyright: ignore[reportAttributeAccessIssue,reportUnknownArgumentType]
+ )
+ out = func(y)
+ # Undo int->float promotion on JAX after _AtOp.DIVIDE
+ return xp.astype(out, x.dtype, copy=False)
+
+ # Emulate at[] behaviour for non-JAX arrays
+ # with a copy followed by an update
+
+ x = xp.asarray(x, copy=True)
+ # A copy of a read-only numpy array is writeable
+ # Note: this assumes that a copy of a writeable array is writeable
+ assert not writeable
+ writeable = None
+
+ if writeable is None:
+ writeable = is_writeable_array(x)
+ if not writeable:
+ # sparse crashes here
+ msg = f"Can't update read-only array {x}"
+ raise ValueError(msg)
+
+ # Work around bug in PyTorch where __setitem__ doesn't
+ # always support mismatched dtypes
+ # https://github.com/pytorch/pytorch/issues/150017
+ if is_torch_array(y):
+ y = xp.astype(y, x.dtype, copy=False)
+
+ # Backends without boolean indexing (other than JAX) crash here
+ if in_place_op: # add(), subtract(), ...
+ x[idx] = in_place_op(x[idx], y)
+ else: # set()
+ x[idx] = y
+ return x
+
+ def set(
+ self,
+ y: Array | complex,
+ /,
+ copy: bool | None = None,
+ xp: ModuleType | None = None,
+ ) -> Array: # numpydoc ignore=PR01,RT01
+ """Apply ``x[idx] = y`` and return the update array."""
+ return self._op(_AtOp.SET, None, None, y, copy=copy, xp=xp)
+
+ def add(
+ self,
+ y: Array | complex,
+ /,
+ copy: bool | None = None,
+ xp: ModuleType | None = None,
+ ) -> Array: # numpydoc ignore=PR01,RT01
+ """Apply ``x[idx] += y`` and return the updated array."""
+
+ # Note for this and all other methods based on _iop:
+ # operator.iadd and operator.add subtly differ in behaviour, as
+ # only iadd will trigger exceptions when y has an incompatible dtype.
+ return self._op(_AtOp.ADD, operator.iadd, operator.add, y, copy=copy, xp=xp)
+
+ def subtract(
+ self,
+ y: Array | complex,
+ /,
+ copy: bool | None = None,
+ xp: ModuleType | None = None,
+ ) -> Array: # numpydoc ignore=PR01,RT01
+ """Apply ``x[idx] -= y`` and return the updated array."""
+ return self._op(
+ _AtOp.SUBTRACT, operator.isub, operator.sub, y, copy=copy, xp=xp
+ )
+
+ def multiply(
+ self,
+ y: Array | complex,
+ /,
+ copy: bool | None = None,
+ xp: ModuleType | None = None,
+ ) -> Array: # numpydoc ignore=PR01,RT01
+ """Apply ``x[idx] *= y`` and return the updated array."""
+ return self._op(
+ _AtOp.MULTIPLY, operator.imul, operator.mul, y, copy=copy, xp=xp
+ )
+
+ def divide(
+ self,
+ y: Array | complex,
+ /,
+ copy: bool | None = None,
+ xp: ModuleType | None = None,
+ ) -> Array: # numpydoc ignore=PR01,RT01
+ """Apply ``x[idx] /= y`` and return the updated array."""
+ return self._op(
+ _AtOp.DIVIDE, operator.itruediv, operator.truediv, y, copy=copy, xp=xp
+ )
+
+ def power(
+ self,
+ y: Array | complex,
+ /,
+ copy: bool | None = None,
+ xp: ModuleType | None = None,
+ ) -> Array: # numpydoc ignore=PR01,RT01
+ """Apply ``x[idx] **= y`` and return the updated array."""
+ return self._op(_AtOp.POWER, operator.ipow, operator.pow, y, copy=copy, xp=xp)
+
+ def min(
+ self,
+ y: Array | complex,
+ /,
+ copy: bool | None = None,
+ xp: ModuleType | None = None,
+ ) -> Array: # numpydoc ignore=PR01,RT01
+ """Apply ``x[idx] = minimum(x[idx], y)`` and return the updated array."""
+ # On Dask, this function runs on the chunks, so we need to determine the
+ # namespace that Dask is wrapping.
+ # Note that da.minimum _incidentally_ works on NumPy, CuPy, and sparse
+ # thanks to all these meta-namespaces implementing the __array_ufunc__
+ # interface, but there's no guarantee that it will work for other
+ # wrapped libraries in the future.
+ xp = array_namespace(self._x) if xp is None else xp
+ mxp = meta_namespace(self._x, xp=xp)
+ y = xp.asarray(y)
+ return self._op(_AtOp.MIN, mxp.minimum, mxp.minimum, y, copy=copy, xp=xp)
+
+ def max(
+ self,
+ y: Array | complex,
+ /,
+ copy: bool | None = None,
+ xp: ModuleType | None = None,
+ ) -> Array: # numpydoc ignore=PR01,RT01
+ """Apply ``x[idx] = maximum(x[idx], y)`` and return the updated array."""
+ # See note on min()
+ xp = array_namespace(self._x) if xp is None else xp
+ mxp = meta_namespace(self._x, xp=xp)
+ y = xp.asarray(y)
+ return self._op(_AtOp.MAX, mxp.maximum, mxp.maximum, y, copy=copy, xp=xp)
diff --git a/src/array_api_extra/_lib/_backends.py b/src/array_api_extra/_lib/_backends.py
index ee2e051e..936f5dd0 100644
--- a/src/array_api_extra/_lib/_backends.py
+++ b/src/array_api_extra/_lib/_backends.py
@@ -1,51 +1,72 @@
-"""Backends with which array-api-extra interacts in delegation and testing."""
+"""Backends against which array-api-extra runs its tests."""
+
+from __future__ import annotations
-from collections.abc import Callable
from enum import Enum
-from types import ModuleType
-from typing import cast
+from typing import Any
+
+import numpy as np
+import pytest
-from ._utils import _compat
+__all__ = ["NUMPY_VERSION", "Backend"]
-__all__ = ["Backend"]
+NUMPY_VERSION = tuple(int(v) for v in np.__version__.split(".")[:3]) # pyright: ignore[reportUnknownArgumentType]
-class Backend(Enum): # numpydoc ignore=PR01,PR02 # type: ignore[no-subclass-any]
+class Backend(Enum): # numpydoc ignore=PR02
"""
All array library backends explicitly tested by array-api-extra.
Parameters
----------
value : str
- Name of the backend's module.
- is_namespace : Callable[[ModuleType], bool]
- Function to check whether an input module is the array namespace
- corresponding to the backend.
+ Tag of the backend's module, in the format ``[:]``.
"""
- ARRAY_API_STRICT = "array_api_strict", _compat.is_array_api_strict_namespace
- NUMPY = "numpy", _compat.is_numpy_namespace
- NUMPY_READONLY = "numpy_readonly", _compat.is_numpy_namespace
- CUPY = "cupy", _compat.is_cupy_namespace
- TORCH = "torch", _compat.is_torch_namespace
- DASK_ARRAY = "dask.array", _compat.is_dask_namespace
- SPARSE = "sparse", _compat.is_pydata_sparse_namespace
- JAX_NUMPY = "jax.numpy", _compat.is_jax_namespace
-
- def __new__(
- cls, value: str, _is_namespace: Callable[[ModuleType], bool]
- ): # numpydoc ignore=GL08
- obj = object.__new__(cls)
- obj._value_ = value
- return obj
-
- def __init__(
- self,
- value: str, # noqa: ARG002 # pylint: disable=unused-argument
- is_namespace: Callable[[ModuleType], bool],
- ): # numpydoc ignore=GL08
- self.is_namespace = is_namespace
-
- def __str__(self) -> str: # type: ignore[explicit-override] # pyright: ignore[reportImplicitOverride] # numpydoc ignore=RT01
- """Pretty-print parameterized test names."""
- return cast(str, self.value)
+ # Use : to prevent Enum from deduplicating items with the same value
+ ARRAY_API_STRICT = "array_api_strict"
+ ARRAY_API_STRICTEST = "array_api_strict:strictest"
+ NUMPY = "numpy"
+ NUMPY_READONLY = "numpy:readonly"
+ CUPY = "cupy"
+ TORCH = "torch"
+ TORCH_GPU = "torch:gpu"
+ DASK = "dask.array"
+ SPARSE = "sparse"
+ JAX = "jax.numpy"
+ JAX_GPU = "jax.numpy:gpu"
+
+ @property
+ def modname(self) -> str: # numpydoc ignore=RT01
+ """Module name to be imported."""
+ return self.value.split(":")[0]
+
+ def like(self, *others: Backend) -> bool: # numpydoc ignore=PR01,RT01
+ """Check if this backend uses the same module as others."""
+ return any(self.modname == other.modname for other in others)
+
+ def pytest_param(self) -> Any:
+ """
+ Backend as a pytest parameter
+
+ Returns
+ -------
+ pytest.mark.ParameterSet
+ """
+ id_ = (
+ self.name.lower().replace("_gpu", ":gpu").replace("_readonly", ":readonly")
+ )
+
+ marks = []
+ if self.like(Backend.ARRAY_API_STRICT):
+ marks.append(
+ pytest.mark.skipif(
+ NUMPY_VERSION < (1, 26),
+ reason="array_api_strict is untested on NumPy <1.26",
+ )
+ )
+ if self.like(Backend.DASK, Backend.JAX):
+ # Monkey-patched by lazy_xp_function
+ marks.append(pytest.mark.thread_unsafe)
+
+ return pytest.param(self, id=id_, marks=marks) # pyright: ignore[reportUnknownArgumentType]
diff --git a/src/array_api_extra/_lib/_funcs.py b/src/array_api_extra/_lib/_funcs.py
index 320e5455..cf1a894a 100644
--- a/src/array_api_extra/_lib/_funcs.py
+++ b/src/array_api_extra/_lib/_funcs.py
@@ -1,23 +1,27 @@
"""Array-agnostic implementations for the public API."""
-# https://github.com/scikit-learn/scikit-learn/pull/27910#issuecomment-2568023972
-from __future__ import annotations
-
import math
-import operator
import warnings
-from collections.abc import Callable
-from enum import Enum
-from types import ModuleType
-from typing import ClassVar, cast
+from collections.abc import Callable, Sequence
+from types import ModuleType, NoneType
+from typing import Literal, cast, overload
+from ._at import at
from ._utils import _compat, _helpers
-from ._utils._compat import array_namespace, is_jax_array, is_writeable_array
-from ._utils._typing import Array, Index
+from ._utils._compat import array_namespace, is_dask_namespace, is_jax_array
+from ._utils._helpers import (
+ asarrays,
+ capabilities,
+ eager_shape,
+ meta_namespace,
+ ndindex,
+)
+from ._utils._typing import Array, Device, DType
__all__ = [
- "at",
+ "apply_where",
"atleast_nd",
+ "broadcast_shapes",
"cov",
"create_diagonal",
"expand_dims",
@@ -29,6 +33,148 @@
]
+@overload
+def apply_where( # numpydoc ignore=GL08
+ cond: Array,
+ args: Array | tuple[Array, ...],
+ f1: Callable[..., Array],
+ f2: Callable[..., Array],
+ /,
+ *,
+ xp: ModuleType | None = None,
+) -> Array: ...
+
+
+@overload
+def apply_where( # numpydoc ignore=GL08
+ cond: Array,
+ args: Array | tuple[Array, ...],
+ f1: Callable[..., Array],
+ /,
+ *,
+ fill_value: Array | complex,
+ xp: ModuleType | None = None,
+) -> Array: ...
+
+
+def apply_where( # numpydoc ignore=PR01,PR02
+ cond: Array,
+ args: Array | tuple[Array, ...],
+ f1: Callable[..., Array],
+ f2: Callable[..., Array] | None = None,
+ /,
+ *,
+ fill_value: Array | complex | None = None,
+ xp: ModuleType | None = None,
+) -> Array:
+ """
+ Run one of two elementwise functions depending on a condition.
+
+ Equivalent to ``f1(*args) if cond else fill_value`` performed elementwise
+ when `fill_value` is defined, otherwise to ``f1(*args) if cond else f2(*args)``.
+
+ Parameters
+ ----------
+ cond : array
+ The condition, expressed as a boolean array.
+ args : Array or tuple of Arrays
+ Argument(s) to `f1` (and `f2`). Must be broadcastable with `cond`.
+ f1 : callable
+ Elementwise function of `args`, returning a single array.
+ Where `cond` is True, output will be ``f1(arg0[cond], arg1[cond], ...)``.
+ f2 : callable, optional
+ Elementwise function of `args`, returning a single array.
+ Where `cond` is False, output will be ``f2(arg0[cond], arg1[cond], ...)``.
+ Mutually exclusive with `fill_value`.
+ fill_value : Array or scalar, optional
+ If provided, value with which to fill output array where `cond` is False.
+ It does not need to be scalar; it needs however to be broadcastable with
+ `cond` and `args`.
+ Mutually exclusive with `f2`. You must provide one or the other.
+ xp : array_namespace, optional
+ The standard-compatible namespace for `cond` and `args`. Default: infer.
+
+ Returns
+ -------
+ Array
+ An array with elements from the output of `f1` where `cond` is True and either
+ the output of `f2` or `fill_value` where `cond` is False. The returned array has
+ data type determined by type promotion rules between the output of `f1` and
+ either `fill_value` or the output of `f2`.
+
+ Notes
+ -----
+ ``xp.where(cond, f1(*args), f2(*args))`` requires explicitly evaluating `f1` even
+ when `cond` is False, and `f2` when cond is True. This function evaluates each
+ function only for their matching condition, if the backend allows for it.
+
+ On Dask, `f1` and `f2` are applied to the individual chunks and should use functions
+ from the namespace of the chunks.
+
+ Examples
+ --------
+ >>> import array_api_strict as xp
+ >>> import array_api_extra as xpx
+ >>> a = xp.asarray([5, 4, 3])
+ >>> b = xp.asarray([0, 2, 2])
+ >>> def f(a, b):
+ ... return a // b
+ >>> xpx.apply_where(b != 0, (a, b), f, fill_value=xp.nan)
+ array([ nan, 2., 1.])
+ """
+ # Parse and normalize arguments
+ if (f2 is None) == (fill_value is None):
+ msg = "Exactly one of `fill_value` or `f2` must be given."
+ raise TypeError(msg)
+ args_ = list(args) if isinstance(args, tuple) else [args]
+ del args
+
+ xp = array_namespace(cond, fill_value, *args_) if xp is None else xp
+
+ if isinstance(fill_value, int | float | complex | NoneType):
+ cond, *args_ = xp.broadcast_arrays(cond, *args_)
+ else:
+ cond, fill_value, *args_ = xp.broadcast_arrays(cond, fill_value, *args_)
+
+ if is_dask_namespace(xp):
+ meta_xp = meta_namespace(cond, fill_value, *args_, xp=xp)
+ # map_blocks doesn't descend into tuples of Arrays
+ return xp.map_blocks(_apply_where, cond, f1, f2, fill_value, *args_, xp=meta_xp)
+ return _apply_where(cond, f1, f2, fill_value, *args_, xp=xp)
+
+
+def _apply_where( # numpydoc ignore=PR01,RT01
+ cond: Array,
+ f1: Callable[..., Array],
+ f2: Callable[..., Array] | None,
+ fill_value: Array | int | float | complex | bool | None,
+ *args: Array,
+ xp: ModuleType,
+) -> Array:
+ """Helper of `apply_where`. On Dask, this runs on a single chunk."""
+
+ if not capabilities(xp, device=_compat.device(cond))["boolean indexing"]:
+ # jax.jit does not support assignment by boolean mask
+ return xp.where(cond, f1(*args), f2(*args) if f2 is not None else fill_value)
+
+ temp1 = f1(*(arr[cond] for arr in args))
+
+ if f2 is None:
+ dtype = xp.result_type(temp1, fill_value)
+ if isinstance(fill_value, int | float | complex):
+ out = xp.full_like(cond, dtype=dtype, fill_value=fill_value)
+ else:
+ out = xp.astype(fill_value, dtype, copy=True)
+ else:
+ ncond = ~cond
+ temp2 = f2(*(arr[ncond] for arr in args))
+ dtype = xp.result_type(temp1, temp2)
+ out = xp.empty_like(cond, dtype=dtype)
+ out = at(out, ncond).set(temp2)
+
+ return at(out, cond).set(temp1)
+
+
def atleast_nd(x: Array, /, *, ndim: int, xp: ModuleType | None = None) -> Array:
"""
Recursively expand the dimension of an array to at least `ndim`.
@@ -72,6 +218,69 @@ def atleast_nd(x: Array, /, *, ndim: int, xp: ModuleType | None = None) -> Array
return x
+# `float` in signature to accept `math.nan` for Dask.
+# `int`s are still accepted as `float` is a superclass of `int` in typing
+def broadcast_shapes(*shapes: tuple[float | None, ...]) -> tuple[int | None, ...]:
+ """
+ Compute the shape of the broadcasted arrays.
+
+ Duplicates :func:`numpy.broadcast_shapes`, with additional support for
+ None and NaN sizes.
+
+ This is equivalent to ``xp.broadcast_arrays(arr1, arr2, ...)[0].shape``
+ without needing to worry about the backend potentially deep copying
+ the arrays.
+
+ Parameters
+ ----------
+ *shapes : tuple[int | None, ...]
+ Shapes of the arrays to broadcast.
+
+ Returns
+ -------
+ tuple[int | None, ...]
+ The shape of the broadcasted arrays.
+
+ See Also
+ --------
+ numpy.broadcast_shapes : Equivalent NumPy function.
+ array_api.broadcast_arrays : Function to broadcast actual arrays.
+
+ Notes
+ -----
+ This function accepts the Array API's ``None`` for unknown sizes,
+ as well as Dask's non-standard ``math.nan``.
+ Regardless of input, the output always contains ``None`` for unknown sizes.
+
+ Examples
+ --------
+ >>> import array_api_extra as xpx
+ >>> xpx.broadcast_shapes((2, 3), (2, 1))
+ (2, 3)
+ >>> xpx.broadcast_shapes((4, 2, 3), (2, 1), (1, 3))
+ (4, 2, 3)
+ """
+ if not shapes:
+ return () # Match NumPy output
+
+ ndim = max(len(shape) for shape in shapes)
+ out: list[int | None] = []
+ for axis in range(-ndim, 0):
+ sizes = {shape[axis] for shape in shapes if axis >= -len(shape)}
+ # Dask uses NaN for unknown shape, which predates the Array API spec for None
+ none_size = None in sizes or math.nan in sizes
+ sizes -= {1, None, math.nan}
+ if len(sizes) > 1:
+ msg = (
+ "shape mismatch: objects cannot be broadcast to a single shape: "
+ f"{shapes}."
+ )
+ raise ValueError(msg)
+ out.append(None if none_size else cast(int, sizes.pop()) if sizes else 1)
+
+ return tuple(out)
+
+
def cov(m: Array, /, *, xp: ModuleType | None = None) -> Array:
"""
Estimate a covariance matrix.
@@ -148,11 +357,13 @@ def cov(m: Array, /, *, xp: ModuleType | None = None) -> Array:
m = xp.astype(m, dtype)
avg = _helpers.mean(m, axis=1, xp=xp)
- fact = m.shape[1] - 1
+
+ m_shape = eager_shape(m)
+ fact = m_shape[1] - 1
if fact <= 0:
warnings.warn("Degrees of freedom <= 0 for slice", RuntimeWarning, stacklevel=2)
- fact = 0.0
+ fact = 0
m -= avg[:, None]
m_transpose = m.T
@@ -164,6 +375,23 @@ def cov(m: Array, /, *, xp: ModuleType | None = None) -> Array:
return xp.squeeze(c, axis=axes)
+def one_hot(
+ x: Array,
+ /,
+ num_classes: int,
+ *,
+ xp: ModuleType,
+) -> Array: # numpydoc ignore=PR01,RT01
+ """See docstring in `array_api_extra._delegation.py`."""
+ # TODO: Benchmark whether this is faster on the NumPy backend:
+ # if is_numpy_array(x):
+ # out = xp.zeros((x.size, num_classes), dtype=dtype)
+ # out[xp.arange(x.size), xp.reshape(x, (-1,))] = 1
+ # return xp.reshape(out, (*x.shape, num_classes))
+ range_num_classes = xp.arange(num_classes, dtype=x.dtype, device=_compat.device(x))
+ return x[..., xp.newaxis] == range_num_classes
+
+
def create_diagonal(
x: Array, /, *, offset: int = 0, xp: ModuleType | None = None
) -> Array:
@@ -173,7 +401,7 @@ def create_diagonal(
Parameters
----------
x : array
- A 1-D array.
+ An array having shape ``(*batch_dims, k)``.
offset : int, optional
Offset from the leading diagonal (default is ``0``).
Use positive ints for diagonals above the leading diagonal,
@@ -184,7 +412,8 @@ def create_diagonal(
Returns
-------
array
- A 2-D array with `x` on the diagonal (offset by `offset`).
+ An array having shape ``(*batch_dims, k+abs(offset), k+abs(offset))`` with `x`
+ on the diagonal (offset by `offset`).
Examples
--------
@@ -207,18 +436,61 @@ def create_diagonal(
if xp is None:
xp = array_namespace(x)
- if x.ndim != 1:
- err_msg = "`x` must be 1-dimensional."
+ if x.ndim == 0:
+ err_msg = "`x` must be at least 1-dimensional."
raise ValueError(err_msg)
- n = x.shape[0] + abs(offset)
- diag = xp.zeros(n**2, dtype=x.dtype, device=_compat.device(x))
- start = offset if offset >= 0 else abs(offset) * n
- stop = min(n * (n - offset), diag.shape[0])
- step = n + 1
- diag = at(diag)[start:stop:step].set(x)
+ x_shape = eager_shape(x)
+ batch_dims = x_shape[:-1]
+ n = x_shape[-1] + abs(offset)
+ diag = xp.zeros((*batch_dims, n**2), dtype=x.dtype, device=_compat.device(x))
+
+ target_slice = slice(
+ offset if offset >= 0 else abs(offset) * n,
+ min(n * (n - offset), diag.shape[-1]),
+ n + 1,
+ )
+ for index in ndindex(*batch_dims):
+ diag = at(diag)[(*index, target_slice)].set(x[(*index, slice(None))])
+ return xp.reshape(diag, (*batch_dims, n, n))
+
+
+def default_dtype(
+ xp: ModuleType,
+ kind: Literal[
+ "real floating", "complex floating", "integral", "indexing"
+ ] = "real floating",
+ *,
+ device: Device | None = None,
+) -> DType:
+ """
+ Return the default dtype for the given namespace and device.
+
+ This is a convenience shorthand for
+ ``xp.__array_namespace_info__().default_dtypes(device=device)[kind]``.
+
+ Parameters
+ ----------
+ xp : array_namespace
+ The standard-compatible namespace for which to get the default dtype.
+ kind : {'real floating', 'complex floating', 'integral', 'indexing'}, optional
+ The kind of dtype to return. Default is 'real floating'.
+ device : Device, optional
+ The device for which to get the default dtype. Default: current device.
- return xp.reshape(diag, (n, n))
+ Returns
+ -------
+ dtype
+ The default dtype for the given namespace, kind, and device.
+ """
+ dtypes = xp.__array_namespace_info__().default_dtypes(device=device)
+ try:
+ return dtypes[kind]
+ except KeyError as e:
+ domain = ("real floating", "complex floating", "integral", "indexing")
+ assert set(dtypes) == set(domain), f"Non-compliant namespace: {dtypes}"
+ msg = f"Unknown kind '{kind}'. Expected one of {domain}."
+ raise ValueError(msg) from e
def expand_dims(
@@ -307,7 +579,60 @@ def expand_dims(
return a
-def kron(a: Array, b: Array, /, *, xp: ModuleType | None = None) -> Array:
+def isclose(
+ a: Array | complex,
+ b: Array | complex,
+ *,
+ rtol: float = 1e-05,
+ atol: float = 1e-08,
+ equal_nan: bool = False,
+ xp: ModuleType,
+) -> Array: # numpydoc ignore=PR01,RT01
+ """See docstring in array_api_extra._delegation."""
+ a, b = asarrays(a, b, xp=xp)
+
+ a_inexact = xp.isdtype(a.dtype, ("real floating", "complex floating"))
+ b_inexact = xp.isdtype(b.dtype, ("real floating", "complex floating"))
+ if a_inexact or b_inexact:
+ # prevent warnings on NumPy and Dask on inf - inf
+ mxp = meta_namespace(a, b, xp=xp)
+ out = apply_where(
+ xp.isinf(a) | xp.isinf(b),
+ (a, b),
+ lambda a, b: mxp.isinf(a) & mxp.isinf(b) & (mxp.sign(a) == mxp.sign(b)), # pyright: ignore[reportUnknownArgumentType]
+ # Note: inf <= inf is True!
+ lambda a, b: mxp.abs(a - b) <= (atol + rtol * mxp.abs(b)), # pyright: ignore[reportUnknownArgumentType]
+ xp=xp,
+ )
+ if equal_nan:
+ out = xp.where(xp.isnan(a) & xp.isnan(b), True, out)
+ return out
+
+ if xp.isdtype(a.dtype, "bool") or xp.isdtype(b.dtype, "bool"):
+ if atol >= 1 or rtol >= 1:
+ return xp.ones_like(a == b)
+ return a == b
+
+ # integer types
+ atol = int(atol)
+ if rtol == 0:
+ return xp.abs(a - b) <= atol
+
+ # Don't rely on OverflowError, as it is not guaranteed by the Array API.
+ nrtol = int(1.0 / rtol)
+ if nrtol > xp.iinfo(b.dtype).max:
+ # rtol * max_int < 1, so it's inconsequential
+ return xp.abs(a - b) <= atol
+ return xp.abs(a - b) <= (atol + xp.abs(b) // nrtol)
+
+
+def kron(
+ a: Array | complex,
+ b: Array | complex,
+ /,
+ *,
+ xp: ModuleType | None = None,
+) -> Array:
"""
Kronecker product of two arrays.
@@ -318,8 +643,8 @@ def kron(a: Array, b: Array, /, *, xp: ModuleType | None = None) -> Array:
Parameters
----------
- a, b : array
- Input arrays.
+ a, b : Array | int | float | complex
+ Input arrays or scalars. At least one must be an array.
xp : array_namespace, optional
The standard-compatible namespace for `a` and `b`. Default: infer.
@@ -382,18 +707,18 @@ def kron(a: Array, b: Array, /, *, xp: ModuleType | None = None) -> Array:
"""
if xp is None:
xp = array_namespace(a, b)
+ a, b = asarrays(a, b, xp=xp)
- b = xp.asarray(b)
singletons = (1,) * (b.ndim - a.ndim)
- a = xp.broadcast_to(xp.asarray(a), singletons + a.shape)
+ a = cast(Array, xp.broadcast_to(a, singletons + a.shape))
nd_b, nd_a = b.ndim, a.ndim
nd_max = max(nd_b, nd_a)
if nd_a == 0 or nd_b == 0:
return xp.multiply(a, b)
- a_shape = a.shape
- b_shape = b.shape
+ a_shape = eager_shape(a)
+ b_shape = eager_shape(b)
# Equalise the shapes by prepending smaller one with 1s
a_shape = (1,) * max(0, nd_b - nd_a) + a_shape
@@ -413,9 +738,115 @@ def kron(a: Array, b: Array, /, *, xp: ModuleType | None = None) -> Array:
return xp.reshape(result, res_shape)
+def nunique(x: Array, /, *, xp: ModuleType | None = None) -> Array:
+ """
+ Count the number of unique elements in an array.
+
+ Compatible with JAX and Dask, whose laziness would be otherwise
+ problematic.
+
+ Parameters
+ ----------
+ x : Array
+ Input array.
+ xp : array_namespace, optional
+ The standard-compatible namespace for `x`. Default: infer.
+
+ Returns
+ -------
+ array: 0-dimensional integer array
+ The number of unique elements in `x`. It can be lazy.
+ """
+ if xp is None:
+ xp = array_namespace(x)
+
+ if is_jax_array(x):
+ # size= is JAX-specific
+ # https://github.com/data-apis/array-api/issues/883
+ _, counts = xp.unique_counts(x, size=_compat.size(x))
+ return (counts > 0).sum()
+
+ # There are 3 general use cases:
+ # 1. backend has unique_counts and it returns an array with known shape
+ # 2. backend has unique_counts and it returns a None-sized array;
+ # e.g. Dask, ndonnx
+ # 3. backend does not have unique_counts; e.g. wrapped JAX
+ if capabilities(xp, device=_compat.device(x))["data-dependent shapes"]:
+ # xp has unique_counts; O(n) complexity
+ _, counts = xp.unique_counts(x)
+ n = _compat.size(counts)
+ if n is None:
+ return xp.sum(xp.ones_like(counts))
+ return xp.asarray(n, device=_compat.device(x))
+
+ # xp does not have unique_counts; O(n*logn) complexity
+ x = xp.reshape(x, (-1,))
+ x = xp.sort(x)
+ mask = x != xp.roll(x, -1)
+ default_int = default_dtype(xp, "integral", device=_compat.device(x))
+ return xp.maximum(
+ # Special cases:
+ # - array is size 0
+ # - array has all elements equal to each other
+ xp.astype(xp.any(~mask), default_int),
+ xp.sum(xp.astype(mask, default_int)),
+ )
+
+
+def pad(
+ x: Array,
+ pad_width: int | tuple[int, int] | Sequence[tuple[int, int]],
+ *,
+ constant_values: complex = 0,
+ xp: ModuleType,
+) -> Array: # numpydoc ignore=PR01,RT01
+ """See docstring in `array_api_extra._delegation.py`."""
+ # make pad_width a list of length-2 tuples of ints
+ if isinstance(pad_width, int):
+ pad_width_seq = [(pad_width, pad_width)] * x.ndim
+ elif (
+ isinstance(pad_width, tuple)
+ and len(pad_width) == 2
+ and all(isinstance(i, int) for i in pad_width)
+ ):
+ pad_width_seq = [cast(tuple[int, int], pad_width)] * x.ndim
+ else:
+ pad_width_seq = cast(list[tuple[int, int]], list(pad_width))
+
+ slices: list[slice] = []
+ newshape: list[int] = []
+ for ax, w_tpl in enumerate(pad_width_seq):
+ if len(w_tpl) != 2:
+ msg = f"expect a 2-tuple (before, after), got {w_tpl}."
+ raise ValueError(msg)
+
+ sh = eager_shape(x)[ax]
+
+ if w_tpl[0] == 0 and w_tpl[1] == 0:
+ sl = slice(None, None, None)
+ else:
+ stop: int | None
+ start, stop = w_tpl
+ stop = None if stop == 0 else -stop
+
+ sl = slice(start, stop, None)
+ sh += w_tpl[0] + w_tpl[1]
+
+ newshape.append(sh)
+ slices.append(sl)
+
+ padded = xp.full(
+ tuple(newshape),
+ fill_value=constant_values,
+ dtype=x.dtype,
+ device=_compat.device(x),
+ )
+ return at(padded, tuple(slices)).set(x)
+
+
def setdiff1d(
- x1: Array,
- x2: Array,
+ x1: Array | complex,
+ x2: Array | complex,
/,
*,
assume_unique: bool = False,
@@ -428,7 +859,7 @@ def setdiff1d(
Parameters
----------
- x1 : array
+ x1 : array | int | float | complex | bool
Input array.
x2 : array
Input comparison array.
@@ -457,13 +888,17 @@ def setdiff1d(
"""
if xp is None:
xp = array_namespace(x1, x2)
+ # https://github.com/microsoft/pyright/issues/10103
+ x1_, x2_ = asarrays(x1, x2, xp=xp)
if assume_unique:
- x1 = xp.reshape(x1, (-1,))
+ x1_ = xp.reshape(x1_, (-1,))
+ x2_ = xp.reshape(x2_, (-1,))
else:
- x1 = xp.unique_values(x1)
- x2 = xp.unique_values(x2)
- return x1[_helpers.in1d(x1, x2, assume_unique=True, invert=True, xp=xp)]
+ x1_ = xp.unique_values(x1_)
+ x2_ = xp.unique_values(x2_)
+
+ return x1_[_helpers.in1d(x1_, x2_, assume_unique=True, invert=True, xp=xp)]
def sinc(x: Array, /, *, xp: ModuleType | None = None) -> Array:
@@ -553,444 +988,3 @@ def sinc(x: Array, /, *, xp: ModuleType | None = None) -> Array:
xp.asarray(xp.finfo(x.dtype).eps, dtype=x.dtype, device=_compat.device(x)),
)
return xp.sin(y) / y
-
-
-def pad(
- x: Array,
- pad_width: int | tuple[int, int] | list[tuple[int, int]],
- *,
- constant_values: bool | int | float | complex = 0,
- xp: ModuleType,
-) -> Array: # numpydoc ignore=PR01,RT01
- """See docstring in `array_api_extra._delegation.py`."""
- # make pad_width a list of length-2 tuples of ints
- x_ndim = cast(int, x.ndim)
- if isinstance(pad_width, int):
- pad_width = [(pad_width, pad_width)] * x_ndim
- if isinstance(pad_width, tuple):
- pad_width = [pad_width] * x_ndim
-
- # https://github.com/python/typeshed/issues/13376
- slices: list[slice] = [] # type: ignore[no-any-explicit]
- newshape: list[int] = []
- for ax, w_tpl in enumerate(pad_width):
- if len(w_tpl) != 2:
- msg = f"expect a 2-tuple (before, after), got {w_tpl}."
- raise ValueError(msg)
-
- sh = x.shape[ax]
- if w_tpl[0] == 0 and w_tpl[1] == 0:
- sl = slice(None, None, None)
- else:
- start, stop = w_tpl
- stop = None if stop == 0 else -stop
-
- sl = slice(start, stop, None)
- sh += w_tpl[0] + w_tpl[1]
-
- newshape.append(sh)
- slices.append(sl)
-
- padded = xp.full(
- tuple(newshape),
- fill_value=constant_values,
- dtype=x.dtype,
- device=_compat.device(x),
- )
- return at(padded, tuple(slices)).set(x)
-
-
-def nunique(x: Array, /, *, xp: ModuleType | None = None) -> Array:
- """
- Count the number of unique elements in an array.
-
- Compatible with JAX and Dask, whose laziness would be otherwise
- problematic.
-
- Parameters
- ----------
- x : Array
- Input array.
- xp : array_namespace, optional
- The standard-compatible namespace for `x`. Default: infer.
-
- Returns
- -------
- array: 0-dimensional integer array
- The number of unique elements in `x`. It can be lazy.
- """
- if xp is None:
- xp = array_namespace(x)
-
- if is_jax_array(x):
- # size= is JAX-specific
- # https://github.com/data-apis/array-api/issues/883
- _, counts = xp.unique_counts(x, size=_compat.size(x))
- return xp.astype(counts, xp.bool).sum()
-
- _, counts = xp.unique_counts(x)
- n = _compat.size(counts)
- # FIXME https://github.com/data-apis/array-api-compat/pull/231
- if n is None or math.isnan(n): # e.g. Dask, ndonnx
- return xp.astype(counts, xp.bool).sum()
- return xp.asarray(n, device=_compat.device(x))
-
-
-class _AtOp(Enum):
- """Operations for use in `xpx.at`."""
-
- SET = "set"
- ADD = "add"
- SUBTRACT = "subtract"
- MULTIPLY = "multiply"
- DIVIDE = "divide"
- POWER = "power"
- MIN = "min"
- MAX = "max"
-
- # @override from Python 3.12
- def __str__(self) -> str: # type: ignore[explicit-override] # pyright: ignore[reportImplicitOverride]
- """
- Return string representation (useful for pytest logs).
-
- Returns
- -------
- str
- The operation's name.
- """
- return self.value
-
-
-_undef = object()
-
-
-class at: # pylint: disable=invalid-name # numpydoc ignore=PR02
- """
- Update operations for read-only arrays.
-
- This implements ``jax.numpy.ndarray.at`` for all writeable
- backends (those that support ``__setitem__``) and routes
- to the ``.at[]`` method for JAX arrays.
-
- Parameters
- ----------
- x : array
- Input array.
- idx : index, optional
- Only `array API standard compliant indices
- `_
- are supported.
-
- You may use two alternate syntaxes::
-
- >>> import array_api_extra as xpx
- >>> xpx.at(x, idx).set(value) # or add(value), etc.
- >>> xpx.at(x)[idx].set(value)
-
- copy : bool, optional
- None (default)
- The array parameter *may* be modified in place if it is
- possible and beneficial for performance.
- You should not reuse it after calling this function.
- True
- Ensure that the inputs are not modified.
- False
- Ensure that the update operation writes back to the input.
- Raise ``ValueError`` if a copy cannot be avoided.
-
- xp : array_namespace, optional
- The standard-compatible namespace for `x`. Default: infer.
-
- Returns
- -------
- Updated input array.
-
- Warnings
- --------
- (a) When you omit the ``copy`` parameter, you should never reuse the parameter
- array later on; ideally, you should reassign it immediately::
-
- >>> import array_api_extra as xpx
- >>> x = xpx.at(x, 0).set(2)
-
- The above best practice pattern ensures that the behaviour won't change depending
- on whether ``x`` is writeable or not, as the original ``x`` object is dereferenced
- as soon as ``xpx.at`` returns; this way there is no risk to accidentally update it
- twice.
-
- On the reverse, the anti-pattern below must be avoided, as it will result in
- different behaviour on read-only versus writeable arrays::
-
- >>> x = xp.asarray([0, 0, 0])
- >>> y = xpx.at(x, 0).set(2)
- >>> z = xpx.at(x, 1).set(3)
-
- In the above example, both calls to ``xpx.at`` update ``x`` in place *if possible*.
- This causes the behaviour to diverge depending on whether ``x`` is writeable or not:
-
- - If ``x`` is writeable, then after the snippet above you'll have
- ``x == y == z == [2, 3, 0]``
- - If ``x`` is read-only, then you'll end up with
- ``x == [0, 0, 0]``, ``y == [2, 0, 0]`` and ``z == [0, 3, 0]``.
-
- The correct pattern to use if you want diverging outputs from the same input is
- to enforce copies::
-
- >>> x = xp.asarray([0, 0, 0])
- >>> y = xpx.at(x, 0).set(2, copy=True) # Never updates x
- >>> z = xpx.at(x, 1).set(3) # May or may not update x in place
- >>> del x # avoid accidental reuse of x as we don't know its state anymore
-
- (b) The array API standard does not support integer array indices.
- The behaviour of update methods when the index is an array of integers is
- undefined and will vary between backends; this is particularly true when the
- index contains multiple occurrences of the same index, e.g.::
-
- >>> import numpy as np
- >>> import jax.numpy as jnp
- >>> import array_api_extra as xpx
- >>> xpx.at(np.asarray([123]), np.asarray([0, 0])).add(1)
- array([124])
- >>> xpx.at(jnp.asarray([123]), jnp.asarray([0, 0])).add(1)
- Array([125], dtype=int32)
-
- See Also
- --------
- jax.numpy.ndarray.at : Equivalent array method in JAX.
-
- Notes
- -----
- `sparse `_, as well as read-only arrays from libraries
- not explicitly covered by ``array-api-compat``, are not supported by update
- methods.
-
- Examples
- --------
- Given either of these equivalent expressions::
-
- >>> import array_api_extra as xpx
- >>> x = xpx.at(x)[1].add(2)
- >>> x = xpx.at(x, 1).add(2)
-
- If x is a JAX array, they are the same as::
-
- >>> x = x.at[1].add(2)
-
- If x is a read-only numpy array, they are the same as::
-
- >>> x = x.copy()
- >>> x[1] += 2
-
- For other known backends, they are the same as::
-
- >>> x[1] += 2
- """
-
- _x: Array
- _idx: Index
- __slots__: ClassVar[tuple[str, ...]] = ("_idx", "_x")
-
- def __init__(
- self, x: Array, idx: Index = _undef, /
- ) -> None: # numpydoc ignore=GL08
- self._x = x
- self._idx = idx
-
- def __getitem__(self, idx: Index, /) -> at: # numpydoc ignore=PR01,RT01
- """
- Allow for the alternate syntax ``at(x)[start:stop:step]``.
-
- It looks prettier than ``at(x, slice(start, stop, step))``
- and feels more intuitive coming from the JAX documentation.
- """
- if self._idx is not _undef:
- msg = "Index has already been set"
- raise ValueError(msg)
- return at(self._x, idx)
-
- def _update_common(
- self,
- at_op: _AtOp,
- y: Array,
- /,
- copy: bool | None,
- xp: ModuleType | None,
- ) -> tuple[Array, None] | tuple[None, Array]: # numpydoc ignore=PR01
- """
- Perform common prepocessing to all update operations.
-
- Returns
- -------
- tuple
- If the operation can be resolved by ``at[]``, ``(return value, None)``
- Otherwise, ``(None, preprocessed x)``.
- """
- x, idx = self._x, self._idx
-
- if idx is _undef:
- msg = (
- "Index has not been set.\n"
- "Usage: either\n"
- " at(x, idx).set(value)\n"
- "or\n"
- " at(x)[idx].set(value)\n"
- "(same for all other methods)."
- )
- raise ValueError(msg)
-
- if copy not in (True, False, None):
- msg = f"copy must be True, False, or None; got {copy!r}"
- raise ValueError(msg)
-
- if copy is None:
- writeable = is_writeable_array(x)
- copy = not writeable
- elif copy:
- writeable = None
- else:
- writeable = is_writeable_array(x)
-
- if copy:
- if is_jax_array(x):
- # Use JAX's at[]
- func = cast(Callable[[Array], Array], getattr(x.at[idx], at_op.value))
- return func(y), None
- # Emulate at[] behaviour for non-JAX arrays
- # with a copy followed by an update
- if xp is None:
- xp = array_namespace(x)
- x = xp.asarray(x, copy=True)
- if writeable is False:
- # A copy of a read-only numpy array is writeable
- # Note: this assumes that a copy of a writeable array is writeable
- writeable = None
-
- if writeable is None:
- writeable = is_writeable_array(x)
- if not writeable:
- # sparse crashes here
- msg = f"Can't update read-only array {x}"
- raise ValueError(msg)
-
- return None, x
-
- def set(
- self,
- y: Array,
- /,
- copy: bool | None = None,
- xp: ModuleType | None = None,
- ) -> Array: # numpydoc ignore=PR01,RT01
- """Apply ``x[idx] = y`` and return the update array."""
- res, x = self._update_common(_AtOp.SET, y, copy=copy, xp=xp)
- if res is not None:
- return res
- assert x is not None
- x[self._idx] = y
- return x
-
- def _iop(
- self,
- at_op: _AtOp,
- elwise_op: Callable[[Array, Array], Array],
- y: Array,
- /,
- copy: bool | None,
- xp: ModuleType | None,
- ) -> Array: # numpydoc ignore=PR01,RT01
- """
- ``x[idx] += y`` or equivalent in-place operation on a subset of x.
-
- which is the same as saying
- x[idx] = x[idx] + y
- Note that this is not the same as
- operator.iadd(x[idx], y)
- Consider for example when x is a numpy array and idx is a fancy index, which
- triggers a deep copy on __getitem__.
- """
- res, x = self._update_common(at_op, y, copy=copy, xp=xp)
- if res is not None:
- return res
- assert x is not None
- x[self._idx] = elwise_op(x[self._idx], y)
- return x
-
- def add(
- self,
- y: Array,
- /,
- copy: bool | None = None,
- xp: ModuleType | None = None,
- ) -> Array: # numpydoc ignore=PR01,RT01
- """Apply ``x[idx] += y`` and return the updated array."""
-
- # Note for this and all other methods based on _iop:
- # operator.iadd and operator.add subtly differ in behaviour, as
- # only iadd will trigger exceptions when y has an incompatible dtype.
- return self._iop(_AtOp.ADD, operator.iadd, y, copy=copy, xp=xp)
-
- def subtract(
- self,
- y: Array,
- /,
- copy: bool | None = None,
- xp: ModuleType | None = None,
- ) -> Array: # numpydoc ignore=PR01,RT01
- """Apply ``x[idx] -= y`` and return the updated array."""
- return self._iop(_AtOp.SUBTRACT, operator.isub, y, copy=copy, xp=xp)
-
- def multiply(
- self,
- y: Array,
- /,
- copy: bool | None = None,
- xp: ModuleType | None = None,
- ) -> Array: # numpydoc ignore=PR01,RT01
- """Apply ``x[idx] *= y`` and return the updated array."""
- return self._iop(_AtOp.MULTIPLY, operator.imul, y, copy=copy, xp=xp)
-
- def divide(
- self,
- y: Array,
- /,
- copy: bool | None = None,
- xp: ModuleType | None = None,
- ) -> Array: # numpydoc ignore=PR01,RT01
- """Apply ``x[idx] /= y`` and return the updated array."""
- return self._iop(_AtOp.DIVIDE, operator.itruediv, y, copy=copy, xp=xp)
-
- def power(
- self,
- y: Array,
- /,
- copy: bool | None = None,
- xp: ModuleType | None = None,
- ) -> Array: # numpydoc ignore=PR01,RT01
- """Apply ``x[idx] **= y`` and return the updated array."""
- return self._iop(_AtOp.POWER, operator.ipow, y, copy=copy, xp=xp)
-
- def min(
- self,
- y: Array,
- /,
- copy: bool | None = None,
- xp: ModuleType | None = None,
- ) -> Array: # numpydoc ignore=PR01,RT01
- """Apply ``x[idx] = minimum(x[idx], y)`` and return the updated array."""
- if xp is None:
- xp = array_namespace(self._x)
- y = xp.asarray(y)
- return self._iop(_AtOp.MIN, xp.minimum, y, copy=copy, xp=xp)
-
- def max(
- self,
- y: Array,
- /,
- copy: bool | None = None,
- xp: ModuleType | None = None,
- ) -> Array: # numpydoc ignore=PR01,RT01
- """Apply ``x[idx] = maximum(x[idx], y)`` and return the updated array."""
- if xp is None:
- xp = array_namespace(self._x)
- y = xp.asarray(y)
- return self._iop(_AtOp.MAX, xp.maximum, y, copy=copy, xp=xp)
diff --git a/src/array_api_extra/_lib/_lazy.py b/src/array_api_extra/_lib/_lazy.py
new file mode 100644
index 00000000..d5095001
--- /dev/null
+++ b/src/array_api_extra/_lib/_lazy.py
@@ -0,0 +1,357 @@
+"""Public API Functions."""
+
+from __future__ import annotations
+
+import math
+from collections.abc import Callable, Sequence
+from functools import partial, wraps
+from types import ModuleType
+from typing import TYPE_CHECKING, Any, ParamSpec, TypeAlias, cast, overload
+
+from ._funcs import broadcast_shapes
+from ._utils import _compat
+from ._utils._compat import (
+ array_namespace,
+ is_dask_namespace,
+ is_jax_namespace,
+)
+from ._utils._helpers import is_python_scalar
+from ._utils._typing import Array, DType
+
+if TYPE_CHECKING: # pragma: no cover
+ import numpy as np
+ from numpy.typing import ArrayLike
+
+ NumPyObject: TypeAlias = np.ndarray[Any, Any] | np.generic
+else:
+ # Sphinx hack
+ NumPyObject = Any
+
+P = ParamSpec("P")
+
+
+@overload
+def lazy_apply( # type: ignore[valid-type]
+ func: Callable[P, Array | ArrayLike],
+ *args: Array | complex | None,
+ shape: tuple[int | None, ...] | None = None,
+ dtype: DType | None = None,
+ as_numpy: bool = False,
+ xp: ModuleType | None = None,
+ **kwargs: P.kwargs, # pyright: ignore[reportGeneralTypeIssues]
+) -> Array: ... # numpydoc ignore=GL08
+
+
+@overload
+def lazy_apply( # type: ignore[valid-type]
+ func: Callable[P, Sequence[Array | ArrayLike]],
+ *args: Array | complex | None,
+ shape: Sequence[tuple[int | None, ...]],
+ dtype: Sequence[DType] | None = None,
+ as_numpy: bool = False,
+ xp: ModuleType | None = None,
+ **kwargs: P.kwargs, # pyright: ignore[reportGeneralTypeIssues]
+) -> tuple[Array, ...]: ... # numpydoc ignore=GL08
+
+
+def lazy_apply( # type: ignore[valid-type] # numpydoc ignore=GL07,SA04
+ func: Callable[P, Array | ArrayLike | Sequence[Array | ArrayLike]],
+ *args: Array | complex | None,
+ shape: tuple[int | None, ...] | Sequence[tuple[int | None, ...]] | None = None,
+ dtype: DType | Sequence[DType] | None = None,
+ as_numpy: bool = False,
+ xp: ModuleType | None = None,
+ **kwargs: P.kwargs, # pyright: ignore[reportGeneralTypeIssues]
+) -> Array | tuple[Array, ...]:
+ """
+ Lazily apply an eager function.
+
+ If the backend of the input arrays is lazy, e.g. Dask or jitted JAX, the execution
+ of the function is delayed until the graph is materialized; if it's eager, the
+ function is executed immediately.
+
+ Parameters
+ ----------
+ func : callable
+ The function to apply.
+
+ It must accept one or more array API compliant arrays as positional arguments.
+ If `as_numpy=True`, inputs are converted to NumPy before they are passed to
+ `func`.
+ It must return either a single array-like or a sequence of array-likes.
+
+ `func` must be a pure function, i.e. without side effects, as depending on the
+ backend it may be executed more than once or never.
+ *args : Array | int | float | complex | bool | None
+ One or more Array API compliant arrays, Python scalars, or None's.
+
+ If `as_numpy=True`, you need to be able to apply :func:`numpy.asarray` to
+ non-None args to convert them to NumPy; read notes below about specific
+ backends.
+ shape : tuple[int | None, ...] | Sequence[tuple[int | None, ...]], optional
+ Output shape or sequence of output shapes, one for each output of `func`.
+ Default: assume single output and broadcast shapes of the input arrays.
+ dtype : DType | Sequence[DType], optional
+ Output dtype or sequence of output dtypes, one for each output of `func`.
+ dtype(s) must belong to the same array namespace as the input arrays.
+ Default: infer the result type(s) from the input arrays.
+ as_numpy : bool, optional
+ If True, convert the input arrays to NumPy before passing them to `func`.
+ This is particularly useful to make NumPy-only functions, e.g. written in Cython
+ or Numba, work transparently with array API-compliant arrays.
+ Default: False.
+ xp : array_namespace, optional
+ The standard-compatible namespace for `args`. Default: infer.
+ **kwargs : Any, optional
+ Additional keyword arguments to pass verbatim to `func`.
+ They cannot contain Array objects.
+
+ Returns
+ -------
+ Array | tuple[Array, ...]
+ The result(s) of `func` applied to the input arrays, wrapped in the same
+ array namespace as the inputs.
+ If shape is omitted or a single `tuple[int | None, ...]`, return a single array.
+ Otherwise, return a tuple of arrays.
+
+ Notes
+ -----
+ JAX
+ This allows applying eager functions to jitted JAX arrays, which are lazy.
+ The function won't be applied until the JAX array is materialized.
+ When running inside ``jax.jit``, `shape` must be fully known, i.e. it cannot
+ contain any `None` elements.
+
+ .. warning::
+
+ `func` must never raise inside ``jax.jit``, as the resulting behavior is
+ undefined.
+
+ Using this with `as_numpy=False` is particularly useful to apply non-jittable
+ JAX functions to arrays on GPU devices.
+ If ``as_numpy=True``, the :doc:`jax:transfer_guard` may prevent arrays on a GPU
+ device from being transferred back to CPU. This is treated as an implicit
+ transfer.
+
+ PyTorch, CuPy
+ If ``as_numpy=True``, these backends raise by default if you attempt to convert
+ arrays on a GPU device to NumPy.
+
+ Sparse
+ If ``as_numpy=True``, by default sparse prevents implicit densification through
+ :func:`numpy.asarray`. `This safety mechanism can be disabled
+ `_.
+
+ Dask
+ This allows applying eager functions to Dask arrays.
+ The Dask graph won't be computed until the user calls ``compute()`` or
+ ``persist()`` down the line.
+
+ The function name will be prominently visible on the user-facing Dask
+ dashboard and on Prometheus metrics, so it is recommended for it to be
+ meaningful.
+
+ `lazy_apply` doesn't know if `func` reduces along any axes; also, shape
+ changes are non-trivial in chunked Dask arrays. For these reasons, all inputs
+ will be rechunked into a single chunk.
+
+ .. warning::
+
+ The whole operation needs to fit in memory all at once on a single worker.
+
+ The outputs will also be returned as a single chunk and you should consider
+ rechunking them into smaller chunks afterwards.
+
+ If you want to distribute the calculation across multiple workers, you
+ should use :func:`dask.array.map_blocks`, :func:`dask.array.map_overlap`,
+ :func:`dask.array.blockwise`, or a native Dask wrapper instead of
+ `lazy_apply`.
+
+ Dask wrapping around other backends
+ If ``as_numpy=False``, `func` will receive in input eager arrays of the meta
+ namespace, as defined by the ``._meta`` attribute of the input Dask arrays.
+ The outputs of `func` will be wrapped by the meta namespace, and then wrapped
+ again by Dask.
+
+ Raises
+ ------
+ ValueError
+ When ``xp=jax.numpy``, the output `shape` is unknown (it contains ``None`` on
+ one or more axes) and this function was called inside ``jax.jit``.
+ RuntimeError
+ When ``xp=sparse`` and auto-densification is disabled.
+ Exception (backend-specific)
+ When the backend disallows implicit device to host transfers and the input
+ arrays are on a non-CPU device, e.g. on GPU.
+
+ See Also
+ --------
+ jax.transfer_guard
+ jax.pure_callback
+ dask.array.map_blocks
+ dask.array.map_overlap
+ dask.array.blockwise
+ """
+ args_not_none = [arg for arg in args if arg is not None]
+ array_args = [arg for arg in args_not_none if not is_python_scalar(arg)]
+ if not array_args:
+ msg = "Must have at least one argument array"
+ raise ValueError(msg)
+ if xp is None:
+ xp = array_namespace(*args)
+
+ # Normalize and validate shape and dtype
+ shapes: list[tuple[int | None, ...]]
+ dtypes: list[DType]
+ multi_output = False
+
+ if shape is None:
+ shapes = [broadcast_shapes(*(arg.shape for arg in array_args))]
+ elif all(isinstance(s, int | None) for s in shape):
+ # Do not test for shape to be a tuple
+ # https://github.com/data-apis/array-api/issues/891#issuecomment-2637430522
+ shapes = [cast(tuple[int | None, ...], shape)]
+ else:
+ shapes = list(shape) # type: ignore[arg-type] # pyright: ignore[reportAssignmentType]
+ multi_output = True
+
+ if dtype is None:
+ dtypes = [xp.result_type(*args_not_none)] * len(shapes)
+ elif multi_output:
+ if not isinstance(dtype, Sequence):
+ msg = "Got multiple shapes but only one dtype"
+ raise ValueError(msg)
+ dtypes = list(dtype) # pyright: ignore[reportUnknownArgumentType]
+ else:
+ if isinstance(dtype, Sequence):
+ msg = "Got single shape but multiple dtypes"
+ raise ValueError(msg)
+
+ dtypes = [dtype]
+
+ if len(shapes) != len(dtypes):
+ msg = f"Got {len(shapes)} shapes and {len(dtypes)} dtypes"
+ raise ValueError(msg)
+ del shape
+ del dtype
+ # End of shape and dtype parsing
+
+ # Backend-specific branches
+ if is_dask_namespace(xp):
+ import dask
+
+ metas: list[Array] = [arg._meta for arg in array_args] # pylint: disable=protected-access # pyright: ignore[reportAttributeAccessIssue]
+ meta_xp = array_namespace(*metas)
+
+ wrapped = dask.delayed( # type: ignore[attr-defined] # pyright: ignore[reportPrivateImportUsage]
+ _lazy_apply_wrapper(func, as_numpy, multi_output, meta_xp),
+ pure=True,
+ )
+ # This finalizes each arg, which is the same as arg.rechunk(-1).
+ # Please read docstring above for why we're not using
+ # dask.array.map_blocks or dask.array.blockwise!
+ delayed_out = wrapped(*args, **kwargs)
+
+ out = tuple(
+ xp.from_delayed(
+ delayed_out[i], # pyright: ignore[reportIndexIssue]
+ # Dask's unknown shapes diverge from the Array API specification
+ shape=tuple(math.nan if s is None else s for s in shape),
+ dtype=dtype,
+ meta=metas[0],
+ )
+ for i, (shape, dtype) in enumerate(zip(shapes, dtypes, strict=True))
+ )
+
+ elif is_jax_namespace(xp) and _is_jax_jit_enabled(xp):
+ # Delay calling func with jax.pure_callback, which will forward to func eager
+ # JAX arrays. Do not use jax.pure_callback when running outside of the JIT,
+ # as it does not support raising exceptions:
+ # https://github.com/jax-ml/jax/issues/26102
+ import jax
+
+ if any(None in shape for shape in shapes):
+ msg = "Output shape must be fully known when running inside jax.jit"
+ raise ValueError(msg)
+
+ # Shield kwargs from being coerced into JAX arrays.
+ # jax.pure_callback calls jax.jit under the hood, but without the chance of
+ # passing static_argnames / static_argnums.
+ wrapped = _lazy_apply_wrapper(
+ partial(func, **kwargs), as_numpy, multi_output, xp
+ )
+
+ # suppress unused-ignore to run mypy in -e lint as well as -e dev
+ out = cast( # type: ignore[bad-cast,unused-ignore]
+ tuple[Array, ...],
+ jax.pure_callback(
+ wrapped,
+ tuple(
+ jax.ShapeDtypeStruct(shape, dtype) # pyright: ignore[reportUnknownArgumentType]
+ for shape, dtype in zip(shapes, dtypes, strict=True)
+ ),
+ *args,
+ ),
+ )
+
+ else:
+ # Eager backends, including non-jitted JAX
+ wrapped = _lazy_apply_wrapper(func, as_numpy, multi_output, xp)
+ out = wrapped(*args, **kwargs)
+
+ return out if multi_output else out[0]
+
+
+def _is_jax_jit_enabled(xp: ModuleType) -> bool: # numpydoc ignore=PR01,RT01
+ """Return True if this function is being called inside ``jax.jit``."""
+ import jax # pylint: disable=import-outside-toplevel
+
+ x = xp.asarray(False)
+ try:
+ return bool(x)
+ except jax.errors.TracerBoolConversionError:
+ return True
+
+
+def _lazy_apply_wrapper( # numpydoc ignore=PR01,RT01
+ func: Callable[..., Array | ArrayLike | Sequence[Array | ArrayLike]],
+ as_numpy: bool,
+ multi_output: bool,
+ xp: ModuleType,
+) -> Callable[..., tuple[Array, ...]]:
+ """
+ Helper of `lazy_apply`.
+
+ Given a function that accepts one or more arrays as positional arguments and returns
+ a single array-like or a sequence of array-likes, return a function that accepts the
+ same number of Array API arrays and always returns a tuple of Array API array.
+
+ Any keyword arguments are passed through verbatim to the wrapped function.
+ """
+
+ # On Dask, @wraps causes the graph key to contain the wrapped function's name
+ @wraps(func)
+ def wrapper(
+ *args: Array | complex | None, **kwargs: Any
+ ) -> tuple[Array, ...]: # numpydoc ignore=GL08
+ args_list = []
+ device = None
+ for arg in args:
+ if arg is not None and not is_python_scalar(arg):
+ if device is None:
+ device = _compat.device(arg)
+ if as_numpy:
+ import numpy as np
+
+ arg = cast(Array, np.asarray(arg)) # pyright: ignore[reportInvalidCast] # noqa: PLW2901
+ args_list.append(arg)
+ assert device is not None
+
+ out = func(*args_list, **kwargs)
+
+ if multi_output:
+ assert isinstance(out, Sequence)
+ return tuple(xp.asarray(o, device=device) for o in out)
+ return (xp.asarray(out, device=device),)
+
+ return wrapper
diff --git a/src/array_api_extra/_lib/_testing.py b/src/array_api_extra/_lib/_testing.py
index b6993a16..30e2f1ef 100644
--- a/src/array_api_extra/_lib/_testing.py
+++ b/src/array_api_extra/_lib/_testing.py
@@ -2,23 +2,41 @@
Testing utilities.
Note that this is private API; don't expect it to be stable.
+See also ..testing for public testing utilities.
"""
+from __future__ import annotations
+
+import math
from types import ModuleType
+from typing import Any, cast
+
+import numpy as np
+import pytest
from ._utils._compat import (
array_namespace,
+ is_array_api_strict_namespace,
is_cupy_namespace,
+ is_dask_namespace,
+ is_jax_namespace,
+ is_numpy_namespace,
is_pydata_sparse_namespace,
+ is_torch_array,
is_torch_namespace,
+ to_device,
)
-from ._utils._typing import Array
+from ._utils._typing import Array, Device
-__all__ = ["xp_assert_close", "xp_assert_equal"]
+__all__ = ["as_numpy_array", "xp_assert_close", "xp_assert_equal", "xp_assert_less"]
def _check_ns_shape_dtype(
- actual: Array, desired: Array
+ actual: Array,
+ desired: Array,
+ check_dtype: bool,
+ check_shape: bool,
+ check_scalar: bool,
) -> ModuleType: # numpydoc ignore=RT03
"""
Assert that namespace, shape and dtype of the two arrays match.
@@ -29,6 +47,11 @@ def _check_ns_shape_dtype(
The array produced by the tested function.
desired : Array
The expected array (typically hardcoded).
+ check_dtype, check_shape : bool, default: True
+ Whether to check agreement between actual and desired dtypes and shapes
+ check_scalar : bool, default: False
+ NumPy only: whether to check agreement between actual and desired types -
+ 0d array vs scalar.
Returns
-------
@@ -40,16 +63,86 @@ def _check_ns_shape_dtype(
msg = f"namespaces do not match: {actual_xp} != f{desired_xp}"
assert actual_xp == desired_xp, msg
- msg = f"shapes do not match: {actual.shape} != f{desired.shape}"
- assert actual.shape == desired.shape, msg
+ # Dask uses nan instead of None for unknown shapes
+ actual_shape = cast(tuple[float, ...], actual.shape)
+ desired_shape = cast(tuple[float, ...], desired.shape)
+ assert None not in actual_shape # Requires explicit support
+ assert None not in desired_shape
+ if is_dask_namespace(desired_xp):
+ if any(math.isnan(i) for i in actual_shape):
+ actual_shape = actual.compute().shape # type: ignore[attr-defined] # pyright: ignore[reportAttributeAccessIssue]
+ if any(math.isnan(i) for i in desired_shape):
+ desired_shape = desired.compute().shape # type: ignore[attr-defined] # pyright: ignore[reportAttributeAccessIssue]
+
+ if check_shape:
+ msg = f"shapes do not match: {actual_shape} != f{desired_shape}"
+ assert actual_shape == desired_shape, msg
+ else:
+ # Ignore shape, but check flattened size. This is normally done by
+ # np.testing.assert_array_equal etc even when strict=False, but not for
+ # non-materializable arrays.
+ actual_size = math.prod(actual_shape) # pyright: ignore[reportUnknownArgumentType]
+ desired_size = math.prod(desired_shape) # pyright: ignore[reportUnknownArgumentType]
+ msg = f"sizes do not match: {actual_size} != f{desired_size}"
+ assert actual_size == desired_size, msg
+
+ if check_dtype:
+ msg = f"dtypes do not match: {actual.dtype} != {desired.dtype}"
+ assert actual.dtype == desired.dtype, msg
- msg = f"dtypes do not match: {actual.dtype} != {desired.dtype}"
- assert actual.dtype == desired.dtype, msg
+ if is_numpy_namespace(actual_xp) and check_scalar:
+ # only NumPy distinguishes between scalars and arrays; we do if check_scalar.
+ _msg = (
+ "array-ness does not match:\n Actual: "
+ f"{type(actual)}\n Desired: {type(desired)}"
+ )
+ assert np.isscalar(actual) == np.isscalar(desired), _msg
return desired_xp
-def xp_assert_equal(actual: Array, desired: Array, err_msg: str = "") -> None:
+def _is_materializable(x: Array) -> bool:
+ """
+ Return True if you can call `as_numpy_array(x)`; False otherwise.
+ """
+ # Important: here we assume that we're not tracing -
+ # e.g. we're not inside `jax.jit`` nor `cupy.cuda.Stream.begin_capture`.
+ return not is_torch_array(x) or x.device.type != "meta" # type: ignore[attr-defined] # pyright: ignore[reportAttributeAccessIssue]
+
+
+def as_numpy_array(array: Array, *, xp: ModuleType) -> np.typing.NDArray[Any]:
+ """
+ Convert array to NumPy, bypassing GPU-CPU transfer guards and densification guards.
+ """
+ if is_cupy_namespace(xp):
+ return xp.asnumpy(array)
+ if is_pydata_sparse_namespace(xp):
+ return array.todense() # type: ignore[attr-defined] # pyright: ignore[reportAttributeAccessIssue]
+
+ if is_torch_namespace(xp):
+ array = to_device(array, "cpu")
+ if is_array_api_strict_namespace(xp):
+ cpu: Device = xp.Device("CPU_DEVICE")
+ array = to_device(array, cpu)
+ if is_jax_namespace(xp):
+ import jax
+
+ # Note: only needed if the transfer guard is enabled
+ cpu = cast(Device, jax.devices("cpu")[0])
+ array = to_device(array, cpu)
+
+ return np.asarray(array)
+
+
+def xp_assert_equal(
+ actual: Array,
+ desired: Array,
+ *,
+ err_msg: str = "",
+ check_dtype: bool = True,
+ check_shape: bool = True,
+ check_scalar: bool = False,
+) -> None:
"""
Array-API compatible version of `np.testing.assert_array_equal`.
@@ -61,32 +154,60 @@ def xp_assert_equal(actual: Array, desired: Array, err_msg: str = "") -> None:
The expected array (typically hardcoded).
err_msg : str, optional
Error message to display on failure.
+ check_dtype, check_shape : bool, default: True
+ Whether to check agreement between actual and desired dtypes and shapes
+ check_scalar : bool, default: False
+ NumPy only: whether to check agreement between actual and desired types -
+ 0d array vs scalar.
+
+ See Also
+ --------
+ xp_assert_close : Similar function for inexact equality checks.
+ numpy.testing.assert_array_equal : Similar function for NumPy arrays.
"""
- xp = _check_ns_shape_dtype(actual, desired)
+ xp = _check_ns_shape_dtype(actual, desired, check_dtype, check_shape, check_scalar)
+ if not _is_materializable(actual):
+ return
+ actual_np = as_numpy_array(actual, xp=xp)
+ desired_np = as_numpy_array(desired, xp=xp)
+ np.testing.assert_array_equal(actual_np, desired_np, err_msg=err_msg)
- if is_cupy_namespace(xp):
- xp.testing.assert_array_equal(actual, desired, err_msg=err_msg)
- elif is_torch_namespace(xp):
- # PyTorch recommends using `rtol=0, atol=0` like this
- # to test for exact equality
- xp.testing.assert_close(
- actual,
- desired,
- rtol=0,
- atol=0,
- equal_nan=True,
- check_dtype=False,
- msg=err_msg or None,
- )
- else:
- import numpy as np # pylint: disable=import-outside-toplevel
- if is_pydata_sparse_namespace(xp):
- actual = actual.todense()
- desired = desired.todense()
+def xp_assert_less(
+ x: Array,
+ y: Array,
+ *,
+ err_msg: str = "",
+ check_dtype: bool = True,
+ check_shape: bool = True,
+ check_scalar: bool = False,
+) -> None:
+ """
+ Array-API compatible version of `np.testing.assert_array_less`.
+
+ Parameters
+ ----------
+ x, y : Array
+ The arrays to compare according to ``x < y`` (elementwise).
+ err_msg : str, optional
+ Error message to display on failure.
+ check_dtype, check_shape : bool, default: True
+ Whether to check agreement between actual and desired dtypes and shapes
+ check_scalar : bool, default: False
+ NumPy only: whether to check agreement between actual and desired types -
+ 0d array vs scalar.
- # JAX uses `np.testing`
- np.testing.assert_array_equal(actual, desired, err_msg=err_msg)
+ See Also
+ --------
+ xp_assert_close : Similar function for inexact equality checks.
+ numpy.testing.assert_array_equal : Similar function for NumPy arrays.
+ """
+ xp = _check_ns_shape_dtype(x, y, check_dtype, check_shape, check_scalar)
+ if not _is_materializable(x):
+ return
+ x_np = as_numpy_array(x, xp=xp)
+ y_np = as_numpy_array(y, xp=xp)
+ np.testing.assert_array_less(x_np, y_np, err_msg=err_msg)
def xp_assert_close(
@@ -96,6 +217,9 @@ def xp_assert_close(
rtol: float | None = None,
atol: float = 0,
err_msg: str = "",
+ check_dtype: bool = True,
+ check_shape: bool = True,
+ check_scalar: bool = False,
) -> None:
"""
Array-API compatible version of `np.testing.assert_allclose`.
@@ -112,35 +236,69 @@ def xp_assert_close(
Absolute tolerance. Default: 0.
err_msg : str, optional
Error message to display on failure.
+ check_dtype, check_shape : bool, default: True
+ Whether to check agreement between actual and desired dtypes and shapes
+ check_scalar : bool, default: False
+ NumPy only: whether to check agreement between actual and desired types -
+ 0d array vs scalar.
+
+ See Also
+ --------
+ xp_assert_equal : Similar function for exact equality checks.
+ isclose : Public function for checking closeness.
+ numpy.testing.assert_allclose : Similar function for NumPy arrays.
+
+ Notes
+ -----
+ The default `atol` and `rtol` differ from `xp.all(xpx.isclose(a, b))`.
"""
- xp = _check_ns_shape_dtype(actual, desired)
+ xp = _check_ns_shape_dtype(actual, desired, check_dtype, check_shape, check_scalar)
+ if not _is_materializable(actual):
+ return
- floating = xp.isdtype(actual.dtype, ("real floating", "complex floating"))
- if rtol is None and floating:
- # multiplier of 4 is used as for `np.float64` this puts the default `rtol`
- # roughly half way between sqrt(eps) and the default for
- # `numpy.testing.assert_allclose`, 1e-7
- rtol = xp.finfo(actual.dtype).eps ** 0.5 * 4
- elif rtol is None:
- rtol = 1e-7
+ if rtol is None:
+ if xp.isdtype(actual.dtype, ("real floating", "complex floating")):
+ # multiplier of 4 is used as for `np.float64` this puts the default `rtol`
+ # roughly half way between sqrt(eps) and the default for
+ # `numpy.testing.assert_allclose`, 1e-7
+ rtol = xp.finfo(actual.dtype).eps ** 0.5 * 4
+ else:
+ rtol = 1e-7
- if is_cupy_namespace(xp):
- xp.testing.assert_allclose(
- actual, desired, rtol=rtol, atol=atol, err_msg=err_msg
- )
- elif is_torch_namespace(xp):
- xp.testing.assert_close(
- actual, desired, rtol=rtol, atol=atol, equal_nan=True, msg=err_msg or None
- )
- else:
- import numpy as np # pylint: disable=import-outside-toplevel
+ actual_np = as_numpy_array(actual, xp=xp)
+ desired_np = as_numpy_array(desired, xp=xp)
+ np.testing.assert_allclose( # pyright: ignore[reportCallIssue]
+ actual_np,
+ desired_np,
+ rtol=rtol, # pyright: ignore[reportArgumentType]
+ atol=atol,
+ err_msg=err_msg,
+ )
- if is_pydata_sparse_namespace(xp):
- actual = actual.to_dense()
- desired = desired.to_dense()
- # JAX uses `np.testing`
- assert isinstance(rtol, float)
- np.testing.assert_allclose(
- actual, desired, rtol=rtol, atol=atol, err_msg=err_msg
- )
+def xfail(
+ request: pytest.FixtureRequest, *, reason: str, strict: bool | None = None
+) -> None:
+ """
+ XFAIL the currently running test.
+
+ Unlike ``pytest.xfail``, allow rest of test to execute instead of immediately
+ halting it, so that it may result in a XPASS.
+ xref https://github.com/pandas-dev/pandas/issues/38902
+
+ Parameters
+ ----------
+ request : pytest.FixtureRequest
+ ``request`` argument of the test function.
+ reason : str
+ Reason for the expected failure.
+ strict: bool, optional
+ If True, the test will be marked as failed if it passes.
+ If False, the test will be marked as passed if it fails.
+ Default: ``xfail_strict`` value in ``pyproject.toml``, or False if absent.
+ """
+ if strict is not None:
+ marker = pytest.mark.xfail(reason=reason, strict=strict)
+ else:
+ marker = pytest.mark.xfail(reason=reason)
+ request.node.add_marker(marker)
diff --git a/src/array_api_extra/_lib/_utils/_compat.py b/src/array_api_extra/_lib/_utils/_compat.py
index d7f7e83a..82ce76b8 100644
--- a/src/array_api_extra/_lib/_utils/_compat.py
+++ b/src/array_api_extra/_lib/_utils/_compat.py
@@ -2,48 +2,73 @@
# Allow packages that vendor both `array-api-extra` and
# `array-api-compat` to override the import location
+# pylint: disable=duplicate-code
try:
- from ...._array_api_compat_vendor import ( # pyright: ignore[reportMissingImports]
+ from ...._array_api_compat_vendor import (
array_namespace,
device,
+ is_array_api_obj,
is_array_api_strict_namespace,
+ is_cupy_array,
is_cupy_namespace,
+ is_dask_array,
is_dask_namespace,
is_jax_array,
is_jax_namespace,
+ is_lazy_array,
+ is_numpy_array,
is_numpy_namespace,
+ is_pydata_sparse_array,
is_pydata_sparse_namespace,
+ is_torch_array,
is_torch_namespace,
is_writeable_array,
size,
+ to_device,
)
except ImportError:
- from array_api_compat import ( # pyright: ignore[reportMissingTypeStubs]
+ from array_api_compat import (
array_namespace,
device,
+ is_array_api_obj,
is_array_api_strict_namespace,
+ is_cupy_array,
is_cupy_namespace,
+ is_dask_array,
is_dask_namespace,
is_jax_array,
is_jax_namespace,
+ is_lazy_array,
+ is_numpy_array,
is_numpy_namespace,
+ is_pydata_sparse_array,
is_pydata_sparse_namespace,
+ is_torch_array,
is_torch_namespace,
is_writeable_array,
size,
+ to_device,
)
__all__ = [
"array_namespace",
"device",
+ "is_array_api_obj",
"is_array_api_strict_namespace",
+ "is_cupy_array",
"is_cupy_namespace",
+ "is_dask_array",
"is_dask_namespace",
"is_jax_array",
"is_jax_namespace",
+ "is_lazy_array",
+ "is_numpy_array",
"is_numpy_namespace",
+ "is_pydata_sparse_array",
"is_pydata_sparse_namespace",
+ "is_torch_array",
"is_torch_namespace",
"is_writeable_array",
"size",
+ "to_device",
]
diff --git a/src/array_api_extra/_lib/_utils/_compat.pyi b/src/array_api_extra/_lib/_utils/_compat.pyi
index 1e81c984..95c6bc8a 100644
--- a/src/array_api_extra/_lib/_utils/_compat.pyi
+++ b/src/array_api_extra/_lib/_utils/_compat.pyi
@@ -4,20 +4,22 @@
from __future__ import annotations
from types import ModuleType
+from typing import Any, TypeGuard
+
+# TODO import from typing (requires Python >=3.13)
+from typing_extensions import TypeIs
from ._typing import Array, Device
# pylint: disable=missing-class-docstring,unused-argument
-class ArrayModule(ModuleType):
- def device(self, x: Array, /) -> Device: ...
-
def array_namespace(
- *xs: Array,
+ *xs: Array | complex | None,
api_version: str | None = None,
use_compat: bool | None = None,
-) -> ArrayModule: ...
+) -> ModuleType: ...
def device(x: Array, /) -> Device: ...
+def is_array_api_obj(x: object, /) -> TypeIs[Array]: ...
def is_array_api_strict_namespace(xp: ModuleType, /) -> bool: ...
def is_cupy_namespace(xp: ModuleType, /) -> bool: ...
def is_dask_namespace(xp: ModuleType, /) -> bool: ...
@@ -25,6 +27,19 @@ def is_jax_namespace(xp: ModuleType, /) -> bool: ...
def is_numpy_namespace(xp: ModuleType, /) -> bool: ...
def is_pydata_sparse_namespace(xp: ModuleType, /) -> bool: ...
def is_torch_namespace(xp: ModuleType, /) -> bool: ...
-def is_jax_array(x: object, /) -> bool: ...
-def is_writeable_array(x: object, /) -> bool: ...
+def is_cupy_array(x: object, /) -> TypeGuard[Array]: ...
+def is_dask_array(x: object, /) -> TypeGuard[Array]: ...
+def is_jax_array(x: object, /) -> TypeGuard[Array]: ...
+def is_numpy_array(x: object, /) -> TypeGuard[Array]: ...
+def is_pydata_sparse_array(x: object, /) -> TypeGuard[Array]: ...
+def is_torch_array(x: object, /) -> TypeGuard[Array]: ...
+def is_lazy_array(x: object, /) -> TypeGuard[Array]: ...
+def is_writeable_array(x: object, /) -> TypeGuard[Array]: ...
def size(x: Array, /) -> int | None: ...
+def to_device(
+ x: Array,
+ device: Device, # pylint: disable=redefined-outer-name
+ /,
+ *,
+ stream: int | Any | None = None,
+) -> Array: ...
diff --git a/src/array_api_extra/_lib/_utils/_helpers.py b/src/array_api_extra/_lib/_utils/_helpers.py
index 84efcc35..d177b376 100644
--- a/src/array_api_extra/_lib/_utils/_helpers.py
+++ b/src/array_api_extra/_lib/_utils/_helpers.py
@@ -1,14 +1,63 @@
"""Helper functions used by `array_api_extra/_funcs.py`."""
-# https://github.com/scikit-learn/scikit-learn/pull/27910#issuecomment-2568023972
from __future__ import annotations
+import io
+import math
+import pickle
+import types
+from collections.abc import Callable, Generator, Iterable
+from functools import wraps
from types import ModuleType
+from typing import (
+ TYPE_CHECKING,
+ Any,
+ ClassVar,
+ Generic,
+ Literal,
+ ParamSpec,
+ TypeAlias,
+ TypeVar,
+ cast,
+)
from . import _compat
-from ._typing import Array
+from ._compat import (
+ array_namespace,
+ is_array_api_obj,
+ is_dask_namespace,
+ is_jax_namespace,
+ is_numpy_array,
+ is_pydata_sparse_namespace,
+ is_torch_namespace,
+)
+from ._typing import Array, Device
-__all__ = ["in1d", "mean"]
+if TYPE_CHECKING: # pragma: no cover
+ # TODO import from typing (requires Python >=3.12 and >=3.13)
+ from typing_extensions import TypeIs, override
+else:
+
+ def override(func):
+ return func
+
+
+P = ParamSpec("P")
+T = TypeVar("T")
+
+
+__all__ = [
+ "asarrays",
+ "capabilities",
+ "eager_shape",
+ "in1d",
+ "is_python_scalar",
+ "jax_autojit",
+ "mean",
+ "meta_namespace",
+ "pickle_flatten",
+ "pickle_unflatten",
+]
def in1d(
@@ -31,16 +80,19 @@ def in1d(
https://github.com/numpy/numpy/blob/v1.26.0/numpy/lib/arraysetops.py#L524-L758
"""
if xp is None:
- xp = _compat.array_namespace(x1, x2)
+ xp = array_namespace(x1, x2)
+
+ x1_shape = eager_shape(x1)
+ x2_shape = eager_shape(x2)
# This code is run to make the code significantly faster
- if x2.shape[0] < 10 * x1.shape[0] ** 0.145:
+ if x2_shape[0] < 10 * x1_shape[0] ** 0.145 and isinstance(x2, Iterable):
if invert:
- mask = xp.ones(x1.shape[0], dtype=xp.bool, device=_compat.device(x1))
+ mask = xp.ones(x1_shape[0], dtype=xp.bool, device=_compat.device(x1))
for a in x2:
mask &= x1 != a
else:
- mask = xp.zeros(x1.shape[0], dtype=xp.bool, device=_compat.device(x1))
+ mask = xp.zeros(x1_shape[0], dtype=xp.bool, device=_compat.device(x1))
for a in x2:
mask |= x1 == a
return mask
@@ -82,7 +134,7 @@ def mean(
Complex mean, https://github.com/data-apis/array-api/issues/846.
"""
if xp is None:
- xp = _compat.array_namespace(x)
+ xp = array_namespace(x)
if xp.isdtype(x.dtype, "complex floating"):
x_real = xp.real(x)
@@ -91,3 +143,456 @@ def mean(
mean_imag = xp.mean(x_imag, axis=axis, keepdims=keepdims)
return mean_real + (mean_imag * xp.asarray(1j))
return xp.mean(x, axis=axis, keepdims=keepdims)
+
+
+def is_python_scalar(x: object) -> TypeIs[complex]: # numpydoc ignore=PR01,RT01
+ """Return True if `x` is a Python scalar, False otherwise."""
+ # isinstance(x, float) returns True for np.float64
+ # isinstance(x, complex) returns True for np.complex128
+ # bool is a subclass of int
+ return isinstance(x, int | float | complex) and not is_numpy_array(x)
+
+
+def asarrays(
+ a: Array | complex,
+ b: Array | complex,
+ xp: ModuleType,
+) -> tuple[Array, Array]:
+ """
+ Ensure both `a` and `b` are arrays.
+
+ If `b` is a python scalar, it is converted to the same dtype as `a`, and vice versa.
+
+ Behavior is not specified when mixing a Python ``float`` and an array with an
+ integer data type; this may give ``float32``, ``float64``, or raise an exception.
+ Behavior is implementation-specific.
+
+ Similarly, behavior is not specified when mixing a Python ``complex`` and an array
+ with a real-valued data type; this may give ``complex64``, ``complex128``, or raise
+ an exception. Behavior is implementation-specific.
+
+ Parameters
+ ----------
+ a, b : Array | int | float | complex | bool
+ Input arrays or scalars. At least one must be an array.
+ xp : array_namespace, optional
+ The standard-compatible namespace for `x`. Default: infer.
+
+ Returns
+ -------
+ Array, Array
+ The input arrays, possibly converted to arrays if they were scalars.
+
+ See Also
+ --------
+ mixing-arrays-with-python-scalars : Array API specification for the behavior.
+ """
+ a_scalar = is_python_scalar(a)
+ b_scalar = is_python_scalar(b)
+ if not a_scalar and not b_scalar:
+ # This includes misc. malformed input e.g. str
+ return a, b # type: ignore[return-value]
+
+ swap = False
+ if a_scalar:
+ swap = True
+ b, a = a, b
+
+ if is_array_api_obj(a):
+ # a is an Array API object
+ # b is a int | float | complex | bool
+ xa = a
+
+ # https://data-apis.org/array-api/draft/API_specification/type_promotion.html#mixing-arrays-with-python-scalars
+ same_dtype = {
+ bool: "bool",
+ int: ("integral", "real floating", "complex floating"),
+ float: ("real floating", "complex floating"),
+ complex: "complex floating",
+ }
+ kind = same_dtype[type(cast(complex, b))]
+ if xp.isdtype(a.dtype, kind):
+ xb = xp.asarray(b, dtype=a.dtype)
+ else:
+ # Undefined behaviour. Let the function deal with it, if it can.
+ xb = xp.asarray(b)
+
+ else:
+ # Neither a nor b are Array API objects.
+ # Note: we can only reach this point when one explicitly passes
+ # xp=xp to the calling function; otherwise we fail earlier on
+ # array_namespace(a, b).
+ xa, xb = xp.asarray(a), xp.asarray(b)
+
+ return (xb, xa) if swap else (xa, xb)
+
+
+def ndindex(*x: int) -> Generator[tuple[int, ...]]:
+ """
+ Generate all N-dimensional indices for a given array shape.
+
+ Given the shape of an array, an ndindex instance iterates over the N-dimensional
+ index of the array. At each iteration a tuple of indices is returned, the last
+ dimension is iterated over first.
+
+ This has an identical API to numpy.ndindex.
+
+ Parameters
+ ----------
+ *x : int
+ The shape of the array.
+ """
+ if not x:
+ yield ()
+ return
+ for i in ndindex(*x[:-1]):
+ for j in range(x[-1]):
+ yield *i, j
+
+
+def eager_shape(x: Array, /) -> tuple[int, ...]:
+ """
+ Return shape of an array. Raise if shape is not fully defined.
+
+ Parameters
+ ----------
+ x : Array
+ Input array.
+
+ Returns
+ -------
+ tuple[int, ...]
+ Shape of the array.
+ """
+ shape = x.shape
+ # Dask arrays uses non-standard NaN instead of None
+ if any(s is None or math.isnan(s) for s in shape):
+ msg = "Unsupported lazy shape"
+ raise TypeError(msg)
+ return cast(tuple[int, ...], shape)
+
+
+def meta_namespace(
+ *arrays: Array | complex | None, xp: ModuleType | None = None
+) -> ModuleType:
+ """
+ Get the namespace of Dask chunks.
+
+ On all other backends, just return the namespace of the arrays.
+
+ Parameters
+ ----------
+ *arrays : Array | int | float | complex | bool | None
+ Input arrays.
+ xp : array_namespace, optional
+ The standard-compatible namespace for the input arrays. Default: infer.
+
+ Returns
+ -------
+ array_namespace
+ If xp is Dask, the namespace of the Dask chunks;
+ otherwise, the namespace of the arrays.
+ """
+ xp = array_namespace(*arrays) if xp is None else xp
+ if not is_dask_namespace(xp):
+ return xp
+ # Quietly skip scalars and None's
+ metas = [cast(Array | None, getattr(a, "_meta", None)) for a in arrays]
+ return array_namespace(*metas)
+
+
+def capabilities(
+ xp: ModuleType, *, device: Device | None = None
+) -> dict[str, int | None]:
+ """
+ Return patched ``xp.__array_namespace_info__().capabilities()``.
+
+ TODO this helper should be eventually removed once all the special cases
+ it handles are fixed in the respective backends.
+
+ Parameters
+ ----------
+ xp : array_namespace
+ The standard-compatible namespace.
+ device : Device, optional
+ The device to use.
+
+ Returns
+ -------
+ dict
+ Capabilities of the namespace.
+ """
+ out = xp.__array_namespace_info__().capabilities()
+ if is_pydata_sparse_namespace(xp):
+ if out["boolean indexing"]:
+ # FIXME https://github.com/pydata/sparse/issues/876
+ # boolean indexing is supported, but not when the index is a sparse array.
+ # boolean indexing by list or numpy array is not part of the Array API.
+ out = out.copy()
+ out["boolean indexing"] = False
+ elif is_jax_namespace(xp):
+ if out["boolean indexing"]: # pragma: no cover
+ # Backwards compatibility with jax <0.6.0
+ # https://github.com/jax-ml/jax/issues/27418
+ out = out.copy()
+ out["boolean indexing"] = False
+ elif is_torch_namespace(xp):
+ # FIXME https://github.com/data-apis/array-api/issues/945
+ device = xp.get_default_device() if device is None else xp.device(device)
+ if device.type == "meta": # type: ignore[union-attr] # pyright: ignore[reportAttributeAccessIssue,reportOptionalMemberAccess]
+ out = out.copy()
+ out["boolean indexing"] = False
+ out["data-dependent shapes"] = False
+
+ return out
+
+
+_BASIC_PICKLED_TYPES = frozenset((
+ bool, int, float, complex, str, bytes, bytearray,
+ list, tuple, dict, set, frozenset, range, slice,
+ types.NoneType, types.EllipsisType,
+)) # fmt: skip
+_BASIC_REST_TYPES = frozenset((
+ type, types.BuiltinFunctionType, types.FunctionType, types.ModuleType
+)) # fmt: skip
+
+FlattenRest: TypeAlias = tuple[object, ...]
+
+
+def pickle_flatten(
+ obj: object, cls: type[T] | tuple[type[T], ...]
+) -> tuple[list[T], FlattenRest]:
+ """
+ Use the pickle machinery to extract objects out of an arbitrary container.
+
+ Unlike regular ``pickle.dumps``, this function always succeeds.
+
+ Parameters
+ ----------
+ obj : object
+ The object to pickle.
+ cls : type | tuple[type, ...]
+ One or multiple classes to extract from the object.
+ The instances of these classes inside ``obj`` will not be pickled.
+
+ Returns
+ -------
+ instances : list[cls]
+ All instances of ``cls`` found inside ``obj`` (not pickled).
+ rest
+ Opaque object containing the pickled bytes plus all other objects where
+ ``__reduce__`` / ``__reduce_ex__`` is either not implemented or raised.
+ These are unpickleable objects, types, modules, and functions.
+
+ This object is *typically* hashable save for fairly exotic objects
+ that are neither pickleable nor hashable.
+
+ This object is pickleable if everything except ``instances`` was pickleable
+ in the input object.
+
+ See Also
+ --------
+ pickle_unflatten : Reverse function.
+
+ Examples
+ --------
+ >>> class A:
+ ... def __repr__(self):
+ ... return ""
+ >>> class NS:
+ ... def __repr__(self):
+ ... return ""
+ ... def __reduce__(self):
+ ... assert False, "not serializable"
+ >>> obj = {1: A(), 2: [A(), NS(), A()]}
+ >>> instances, rest = pickle_flatten(obj, A)
+ >>> instances
+ [, , ]
+ >>> pickle_unflatten(instances, rest)
+ {1: , 2: [, , ]}
+
+ This can be also used to swap inner objects; the only constraint is that
+ the number of objects in and out must be the same:
+
+ >>> pickle_unflatten(["foo", "bar", "baz"], rest)
+ {1: "foo", 2: ["bar", , "baz"]}
+ """
+ instances: list[T] = []
+ rest: list[object] = []
+
+ class Pickler(pickle.Pickler): # numpydoc ignore=GL08
+ """
+ Use the `pickle.Pickler.persistent_id` hook to extract objects.
+ """
+
+ @override
+ def persistent_id(
+ self, obj: object
+ ) -> Literal[0, 1, None]: # numpydoc ignore=GL08
+ if isinstance(obj, cls):
+ instances.append(obj) # type: ignore[arg-type]
+ return 0
+
+ typ_ = type(obj)
+ if typ_ in _BASIC_PICKLED_TYPES: # No subclasses!
+ # If obj is a collection, recursively descend inside it
+ return None
+ if typ_ in _BASIC_REST_TYPES:
+ rest.append(obj)
+ return 1
+
+ try:
+ # Note: a class that defines __slots__ without defining __getstate__
+ # cannot be pickled with __reduce__(), but can with __reduce_ex__(5)
+ _ = obj.__reduce_ex__(pickle.HIGHEST_PROTOCOL)
+ except Exception: # pylint: disable=broad-exception-caught
+ rest.append(obj)
+ return 1
+
+ # Object can be pickled. Let the Pickler recursively descend inside it.
+ return None
+
+ f = io.BytesIO()
+ p = Pickler(f, protocol=pickle.HIGHEST_PROTOCOL)
+ p.dump(obj)
+ return instances, (f.getvalue(), *rest)
+
+
+def pickle_unflatten(instances: Iterable[object], rest: FlattenRest) -> Any:
+ """
+ Reverse of ``pickle_flatten``.
+
+ Parameters
+ ----------
+ instances : Iterable
+ Inner objects to be reinserted into the flattened container.
+ rest : FlattenRest
+ Extra bits, as returned by ``pickle_flatten``.
+
+ Returns
+ -------
+ object
+ The outer object originally passed to ``pickle_flatten`` after a
+ pickle->unpickle round-trip.
+
+ See Also
+ --------
+ pickle_flatten : Serializing function.
+ pickle.loads : Standard unpickle function.
+
+ Notes
+ -----
+ The `instances` iterable must yield at least the same number of elements as the ones
+ returned by ``pickle_flatten``, but the elements do not need to be the same objects
+ or even the same types of objects. Excess elements, if any, will be left untouched.
+ """
+ iters = iter(instances), iter(rest)
+ pik = cast(bytes, next(iters[1]))
+
+ class Unpickler(pickle.Unpickler): # numpydoc ignore=GL08
+ """Mirror of the overridden Pickler in pickle_flatten."""
+
+ @override
+ def persistent_load(self, pid: Literal[0, 1]) -> object: # numpydoc ignore=GL08
+ try:
+ return next(iters[pid])
+ except StopIteration as e:
+ msg = "Not enough objects to unpickle"
+ raise ValueError(msg) from e
+
+ f = io.BytesIO(pik)
+ return Unpickler(f).load()
+
+
+class _AutoJITWrapper(Generic[T]): # numpydoc ignore=PR01
+ """
+ Helper of :func:`jax_autojit`.
+
+ Wrap arbitrary inputs and outputs of the jitted function and
+ convert them to/from PyTrees.
+ """
+
+ obj: T
+ _registered: ClassVar[bool] = False
+ __slots__: tuple[str, ...] = ("obj",)
+
+ def __init__(self, obj: T) -> None: # numpydoc ignore=GL08
+ self._register()
+ self.obj = obj
+
+ @classmethod
+ def _register(cls) -> None: # numpydoc ignore=SS06
+ """
+ Register upon first use instead of at import time, to avoid
+ globally importing JAX.
+ """
+ if not cls._registered:
+ import jax
+
+ jax.tree_util.register_pytree_node(
+ cls,
+ lambda obj: pickle_flatten(obj, jax.Array), # pyright: ignore[reportUnknownArgumentType]
+ lambda aux_data, children: pickle_unflatten(children, aux_data), # pyright: ignore[reportUnknownArgumentType]
+ )
+ cls._registered = True
+
+
+def jax_autojit(
+ func: Callable[P, T],
+) -> Callable[P, T]: # numpydoc ignore=PR01,RT01,SS03
+ """
+ Wrap `func` with ``jax.jit``, with the following differences:
+
+ - Python scalar arguments and return values are not automatically converted to
+ ``jax.Array`` objects.
+ - All non-array arguments are automatically treated as static.
+ Unlike ``jax.jit``, static arguments must be either hashable or serializable with
+ ``pickle``.
+ - Unlike ``jax.jit``, non-array arguments and return values are not limited to
+ tuple/list/dict, but can be any object serializable with ``pickle``.
+ - Automatically descend into non-array arguments and find ``jax.Array`` objects
+ inside them, then rebuild the arguments when entering `func`, swapping the JAX
+ concrete arrays with tracer objects.
+ - Automatically descend into non-array return values and find ``jax.Array`` objects
+ inside them, then rebuild them downstream of exiting the JIT, swapping the JAX
+ tracer objects with concrete arrays.
+
+ See Also
+ --------
+ jax.jit : JAX JIT compilation function.
+
+ Notes
+ -----
+ These are useful choices *for testing purposes only*, which is how this function is
+ intended to be used. The output of ``jax.jit`` is a C++ level callable, that
+ directly dispatches to the compiled kernel after the initial call. In comparison,
+ ``jax_autojit`` incurs a much higher dispatch time.
+
+ Additionally, consider::
+
+ def f(x: Array, y: float, plus: bool) -> Array:
+ return x + y if plus else x - y
+
+ j1 = jax.jit(f, static_argnames="plus")
+ j2 = jax_autojit(f)
+
+ In the above example, ``j2`` requires a lot less setup to be tested effectively than
+ ``j1``, but on the flip side it means that it will be re-traced for every different
+ value of ``y``, which likely makes it not fit for purpose in production.
+ """
+ import jax
+
+ @jax.jit # type: ignore[misc] # pyright: ignore[reportUntypedFunctionDecorator]
+ def inner( # numpydoc ignore=GL08
+ wargs: _AutoJITWrapper[Any],
+ ) -> _AutoJITWrapper[T]:
+ args, kwargs = wargs.obj
+ res = func(*args, **kwargs) # pyright: ignore[reportCallIssue]
+ return _AutoJITWrapper(res)
+
+ @wraps(func)
+ def outer(*args: P.args, **kwargs: P.kwargs) -> T: # numpydoc ignore=GL08
+ wargs = _AutoJITWrapper((args, kwargs))
+ return inner(wargs).obj
+
+ return outer
diff --git a/src/array_api_extra/_lib/_utils/_typing.py b/src/array_api_extra/_lib/_utils/_typing.py
index 83b51d04..8204be47 100644
--- a/src/array_api_extra/_lib/_utils/_typing.py
+++ b/src/array_api_extra/_lib/_utils/_typing.py
@@ -1,10 +1,10 @@
-"""Static typing helpers."""
+# numpydoc ignore=GL08
+# pylint: disable=missing-module-docstring,duplicate-code
-from typing import Any
+Array = object
+DType = object
+Device = object
+GetIndex = object
+SetIndex = object
-# To be changed to a Protocol later (see data-apis/array-api#589)
-Array = Any # type: ignore[no-any-explicit]
-Device = Any # type: ignore[no-any-explicit]
-Index = Any # type: ignore[no-any-explicit]
-
-__all__ = ["Array", "Device", "Index"]
+__all__ = ["Array", "DType", "Device", "GetIndex", "SetIndex"]
diff --git a/src/array_api_extra/_lib/_utils/_typing.pyi b/src/array_api_extra/_lib/_utils/_typing.pyi
new file mode 100644
index 00000000..35c255fc
--- /dev/null
+++ b/src/array_api_extra/_lib/_utils/_typing.pyi
@@ -0,0 +1,105 @@
+"""Static typing helpers."""
+
+from __future__ import annotations
+
+from types import EllipsisType
+from typing import Protocol, TypeAlias
+
+# TODO import from typing (requires Python >=3.12)
+from typing_extensions import override
+
+# TODO: use array-api-typing once it is available
+
+class Array(Protocol): # pylint: disable=missing-class-docstring
+ # Unary operations
+ def __abs__(self) -> Array: ...
+ def __pos__(self) -> Array: ...
+ def __neg__(self) -> Array: ...
+ def __invert__(self) -> Array: ...
+ # Binary operations
+ def __add__(self, other: Array | complex, /) -> Array: ...
+ def __sub__(self, other: Array | complex, /) -> Array: ...
+ def __mul__(self, other: Array | complex, /) -> Array: ...
+ def __truediv__(self, other: Array | complex, /) -> Array: ...
+ def __floordiv__(self, other: Array | complex, /) -> Array: ...
+ def __mod__(self, other: Array | complex, /) -> Array: ...
+ def __pow__(self, other: Array | complex, /) -> Array: ...
+ def __matmul__(self, other: Array, /) -> Array: ...
+ def __and__(self, other: Array | int, /) -> Array: ...
+ def __or__(self, other: Array | int, /) -> Array: ...
+ def __xor__(self, other: Array | int, /) -> Array: ...
+ def __lshift__(self, other: Array | int, /) -> Array: ...
+ def __rshift__(self, other: Array | int, /) -> Array: ...
+ def __lt__(self, other: Array | complex, /) -> Array: ...
+ def __le__(self, other: Array | complex, /) -> Array: ...
+ def __gt__(self, other: Array | complex, /) -> Array: ...
+ def __ge__(self, other: Array | complex, /) -> Array: ...
+ @override
+ def __eq__(self, other: Array | complex, /) -> Array: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride]
+ @override
+ def __ne__(self, other: Array | complex, /) -> Array: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride]
+ # Reflected operations
+ def __radd__(self, other: Array | complex, /) -> Array: ...
+ def __rsub__(self, other: Array | complex, /) -> Array: ...
+ def __rmul__(self, other: Array | complex, /) -> Array: ...
+ def __rtruediv__(self, other: Array | complex, /) -> Array: ...
+ def __rfloordiv__(self, other: Array | complex, /) -> Array: ...
+ def __rmod__(self, other: Array | complex, /) -> Array: ...
+ def __rpow__(self, other: Array | complex, /) -> Array: ...
+ def __rmatmul__(self, other: Array, /) -> Array: ...
+ def __rand__(self, other: Array | int, /) -> Array: ...
+ def __ror__(self, other: Array | int, /) -> Array: ...
+ def __rxor__(self, other: Array | int, /) -> Array: ...
+ def __rlshift__(self, other: Array | int, /) -> Array: ...
+ def __rrshift__(self, other: Array | int, /) -> Array: ...
+ # Attributes
+ @property
+ def dtype(self) -> DType: ...
+ @property
+ def device(self) -> Device: ...
+ @property
+ def mT(self) -> Array: ... # pylint: disable=invalid-name
+ @property
+ def ndim(self) -> int: ...
+ @property
+ def shape(self) -> tuple[int | None, ...]: ...
+ @property
+ def size(self) -> int | None: ...
+ @property
+ def T(self) -> Array: ... # pylint: disable=invalid-name
+ # Collection operations (note: an Array does not have to be Sized or Iterable)
+ def __getitem__(self, key: GetIndex, /) -> Array: ...
+ def __setitem__(self, key: SetIndex, value: Array | complex, /) -> None: ...
+ # Materialization methods (may raise on lazy arrays)
+ def __bool__(self) -> bool: ...
+ def __complex__(self) -> complex: ...
+ def __float__(self) -> float: ...
+ def __index__(self) -> int: ...
+ def __int__(self) -> int: ...
+
+ # Misc methods (frequently not implemented in Arrays wrapped by array-api-compat)
+ # def __array_namespace__(*, api_version: str | None) -> ModuleType: ...
+ # def __dlpack__(
+ # *,
+ # stream: int | Any | None = None,
+ # max_version: tuple[int, int] | None = None,
+ # dl_device: tuple[int, int] | None = None, # tuple[Enum, int]
+ # copy: bool | None = None,
+ # ) -> Any: ...
+ # def __dlpack_device__() -> tuple[int, int]: ... # tuple[Enum, int]
+ # def to_device(device: Device, /, *, stream: int | Any | None = None) -> Array: ...
+
+class DType(Protocol): # pylint: disable=missing-class-docstring
+ pass
+
+class Device(Protocol): # pylint: disable=missing-class-docstring
+ pass
+
+SetIndex: TypeAlias = (
+ int | slice | EllipsisType | Array | tuple[int | slice | EllipsisType | Array, ...]
+)
+GetIndex: TypeAlias = (
+ SetIndex | None | tuple[int | slice | EllipsisType | None | Array, ...]
+)
+
+__all__ = ["Array", "DType", "Device", "GetIndex", "SetIndex"]
diff --git a/src/array_api_extra/testing.py b/src/array_api_extra/testing.py
new file mode 100644
index 00000000..47511c75
--- /dev/null
+++ b/src/array_api_extra/testing.py
@@ -0,0 +1,415 @@
+"""
+Public testing utilities.
+
+See also _lib._testing for additional private testing utilities.
+"""
+
+from __future__ import annotations
+
+import contextlib
+import enum
+import warnings
+from collections.abc import Callable, Generator, Iterator, Sequence
+from functools import wraps
+from types import ModuleType
+from typing import TYPE_CHECKING, Any, ParamSpec, TypeVar, cast
+
+from ._lib._utils._compat import is_dask_namespace, is_jax_namespace
+from ._lib._utils._helpers import jax_autojit, pickle_flatten, pickle_unflatten
+
+__all__ = ["lazy_xp_function", "patch_lazy_xp_functions"]
+
+if TYPE_CHECKING: # pragma: no cover
+ # TODO import override from typing (requires Python >=3.12)
+ import pytest
+ from dask.typing import Graph, Key, SchedulerGetCallable
+ from typing_extensions import override
+
+else:
+ # Sphinx hacks
+ SchedulerGetCallable = object
+
+ def override(func):
+ return func
+
+
+P = ParamSpec("P")
+T = TypeVar("T")
+
+_ufuncs_tags: dict[object, dict[str, Any]] = {}
+
+
+class Deprecated(enum.Enum):
+ """Unique type for deprecated parameters."""
+
+ DEPRECATED = 1
+
+
+DEPRECATED = Deprecated.DEPRECATED
+
+
+def lazy_xp_function(
+ func: Callable[..., Any],
+ *,
+ allow_dask_compute: bool | int = False,
+ jax_jit: bool = True,
+ static_argnums: Deprecated = DEPRECATED,
+ static_argnames: Deprecated = DEPRECATED,
+) -> None: # numpydoc ignore=GL07
+ """
+ Tag a function to be tested on lazy backends.
+
+ Tag a function so that when any tests are executed with ``xp=jax.numpy`` the
+ function is replaced with a jitted version of itself, and when it is executed with
+ ``xp=dask.array`` the function will raise if it attempts to materialize the graph.
+ This will be later expanded to provide test coverage for other lazy backends.
+
+ In order for the tag to be effective, the test or a fixture must call
+ :func:`patch_lazy_xp_functions`.
+
+ Parameters
+ ----------
+ func : callable
+ Function to be tested.
+ allow_dask_compute : bool | int, optional
+ Whether `func` is allowed to internally materialize the Dask graph, or maximum
+ number of times it is allowed to do so. This is typically triggered by
+ ``bool()``, ``float()``, or ``np.asarray()``.
+
+ Set to 1 if you are aware that `func` converts the input parameters to NumPy and
+ want to let it do so at least for the time being, knowing that it is going to be
+ extremely detrimental for performance.
+
+ If a test needs values higher than 1 to pass, it is a canary that the conversion
+ to NumPy/bool/float is happening multiple times, which translates to multiple
+ computations of the whole graph. Short of making the function fully lazy, you
+ should at least add explicit calls to ``np.asarray()`` early in the function.
+ *Note:* the counter of `allow_dask_compute` resets after each call to `func`, so
+ a test function that invokes `func` multiple times should still work with this
+ parameter set to 1.
+
+ Set to True to allow `func` to materialize the graph an unlimited number
+ of times.
+
+ Default: False, meaning that `func` must be fully lazy and never materialize the
+ graph.
+ jax_jit : bool, optional
+ Set to True to replace `func` with a smart variant of ``jax.jit(func)`` after
+ calling the :func:`patch_lazy_xp_functions` test helper with ``xp=jax.numpy``.
+ This is the default behaviour.
+ Set to False if `func` is only compatible with eager (non-jitted) JAX.
+
+ Unlike with vanilla ``jax.jit``, all arguments and return types that are not JAX
+ arrays are treated as static; the function can accept and return arbitrary
+ wrappers around JAX arrays. This difference is because, in real life, most users
+ won't wrap the function directly with ``jax.jit`` but rather they will use it
+ within their own code, which is itself then wrapped by ``jax.jit``, and
+ internally consume the function's outputs.
+
+ In other words, the pattern that is being tested is::
+
+ >>> @jax.jit
+ ... def user_func(x):
+ ... y = user_prepares_inputs(x)
+ ... z = func(y, some_static_arg=True)
+ ... return user_consumes(z)
+
+ Default: True.
+ static_argnums :
+ Deprecated; ignored
+ static_argnames :
+ Deprecated; ignored
+
+ See Also
+ --------
+ patch_lazy_xp_functions : Companion function to call from the test or fixture.
+ jax.jit : JAX function to compile a function for performance.
+
+ Examples
+ --------
+ In ``test_mymodule.py``::
+
+ from array_api_extra.testing import lazy_xp_function from mymodule import myfunc
+
+ lazy_xp_function(myfunc)
+
+ def test_myfunc(xp):
+ a = xp.asarray([1, 2])
+ # When xp=jax.numpy, this is similar to `b = jax.jit(myfunc)(a)`
+ # When xp=dask.array, crash on compute() or persist()
+ b = myfunc(a)
+
+ Notes
+ -----
+ In order for this tag to be effective, the test function must be imported into the
+ test module globals without its namespace; alternatively its namespace must be
+ declared in a ``lazy_xp_modules`` list in the test module globals.
+
+ Example 1::
+
+ from mymodule import myfunc
+
+ lazy_xp_function(myfunc)
+
+ def test_myfunc(xp):
+ x = myfunc(xp.asarray([1, 2]))
+
+ Example 2::
+
+ import mymodule
+
+ lazy_xp_modules = [mymodule]
+ lazy_xp_function(mymodule.myfunc)
+
+ def test_myfunc(xp):
+ x = mymodule.myfunc(xp.asarray([1, 2]))
+
+ A test function can circumvent this monkey-patching system by using a namespace
+ outside of the two above patterns. You need to sanitize your code to make sure this
+ only happens intentionally.
+
+ Example 1::
+
+ import mymodule
+ from mymodule import myfunc
+
+ lazy_xp_function(myfunc)
+
+ def test_myfunc(xp):
+ a = xp.asarray([1, 2])
+ b = myfunc(a) # This is wrapped when xp=jax.numpy or xp=dask.array
+ c = mymodule.myfunc(a) # This is not
+
+ Example 2::
+
+ import mymodule
+
+ class naked:
+ myfunc = mymodule.myfunc
+
+ lazy_xp_modules = [mymodule]
+ lazy_xp_function(mymodule.myfunc)
+
+ def test_myfunc(xp):
+ a = xp.asarray([1, 2])
+ b = mymodule.myfunc(a) # This is wrapped when xp=jax.numpy or xp=dask.array
+ c = naked.myfunc(a) # This is not
+ """
+ if static_argnums is not DEPRECATED or static_argnames is not DEPRECATED:
+ warnings.warn(
+ (
+ "The `static_argnums` and `static_argnames` parameters are deprecated "
+ "and ignored. They will be removed in a future version."
+ ),
+ DeprecationWarning,
+ stacklevel=2,
+ )
+ tags = {
+ "allow_dask_compute": allow_dask_compute,
+ "jax_jit": jax_jit,
+ }
+
+ try:
+ func._lazy_xp_function = tags # type: ignore[attr-defined] # pylint: disable=protected-access # pyright: ignore[reportFunctionMemberAccess]
+ except AttributeError: # @cython.vectorize
+ _ufuncs_tags[func] = tags
+
+
+def patch_lazy_xp_functions(
+ request: pytest.FixtureRequest,
+ monkeypatch: pytest.MonkeyPatch | None = None,
+ *,
+ xp: ModuleType,
+) -> contextlib.AbstractContextManager[None]:
+ """
+ Test lazy execution of functions tagged with :func:`lazy_xp_function`.
+
+ If ``xp==jax.numpy``, search for all functions which have been tagged with
+ :func:`lazy_xp_function` in the globals of the module that defines the current test,
+ as well as in the ``lazy_xp_modules`` list in the globals of the same module,
+ and wrap them with :func:`jax.jit`. Unwrap them at the end of the test.
+
+ If ``xp==dask.array``, wrap the functions with a decorator that disables
+ ``compute()`` and ``persist()`` and ensures that exceptions and warnings are raised
+ eagerly.
+
+ This function should be typically called by your library's `xp` fixture that runs
+ tests on multiple backends::
+
+ @pytest.fixture(params=[
+ numpy,
+ array_api_strict,
+ pytest.param(jax.numpy, marks=pytest.mark.thread_unsafe),
+ pytest.param(dask.array, marks=pytest.mark.thread_unsafe),
+ ])
+ def xp(request):
+ with patch_lazy_xp_functions(request, xp=request.param):
+ yield request.param
+
+ but it can be otherwise be called by the test itself too.
+
+ Parameters
+ ----------
+ request : pytest.FixtureRequest
+ Pytest fixture, as acquired by the test itself or by one of its fixtures.
+ monkeypatch : pytest.MonkeyPatch
+ Deprecated
+ xp : array_namespace
+ Array namespace to be tested.
+
+ See Also
+ --------
+ lazy_xp_function : Tag a function to be tested on lazy backends.
+ pytest.FixtureRequest : `request` test function parameter.
+
+ Notes
+ -----
+ This context manager monkey-patches modules and as such is thread unsafe
+ on Dask and JAX. If you run your test suite with
+ `pytest-run-parallel `_,
+ you should mark these backends with ``@pytest.mark.thread_unsafe``, as shown in
+ the example above.
+ """
+ mod = cast(ModuleType, request.module)
+ mods = [mod, *cast(list[ModuleType], getattr(mod, "lazy_xp_modules", []))]
+
+ to_revert: list[tuple[ModuleType, str, object]] = []
+
+ def temp_setattr(mod: ModuleType, name: str, func: object) -> None:
+ """
+ Variant of monkeypatch.setattr, which allows monkey-patching only selected
+ parameters of a test so that pytest-run-parallel can run on the remainder.
+ """
+ assert hasattr(mod, name)
+ to_revert.append((mod, name, getattr(mod, name)))
+ setattr(mod, name, func)
+
+ if monkeypatch is not None:
+ warnings.warn(
+ (
+ "The `monkeypatch` parameter is deprecated and will be removed in a "
+ "future version. "
+ "Use `patch_lazy_xp_function` as a context manager instead."
+ ),
+ DeprecationWarning,
+ stacklevel=2,
+ )
+ # Enable using patch_lazy_xp_function not as a context manager
+ temp_setattr = monkeypatch.setattr # type: ignore[assignment] # pyright: ignore[reportAssignmentType]
+
+ def iter_tagged() -> (
+ Iterator[tuple[ModuleType, str, Callable[..., Any], dict[str, Any]]]
+ ):
+ for mod in mods:
+ for name, func in mod.__dict__.items():
+ tags: dict[str, Any] | None = None
+ with contextlib.suppress(AttributeError):
+ tags = func._lazy_xp_function # pylint: disable=protected-access
+ if tags is None:
+ with contextlib.suppress(KeyError, TypeError):
+ tags = _ufuncs_tags[func]
+ if tags is not None:
+ yield mod, name, func, tags
+
+ if is_dask_namespace(xp):
+ for mod, name, func, tags in iter_tagged():
+ n = tags["allow_dask_compute"]
+ if n is True:
+ n = 1_000_000
+ elif n is False:
+ n = 0
+ wrapped = _dask_wrap(func, n)
+ temp_setattr(mod, name, wrapped)
+
+ elif is_jax_namespace(xp):
+ for mod, name, func, tags in iter_tagged():
+ if tags["jax_jit"]:
+ wrapped = jax_autojit(func)
+ temp_setattr(mod, name, wrapped)
+
+ # We can't just decorate patch_lazy_xp_functions with
+ # @contextlib.contextmanager because it would not work with the
+ # deprecated monkeypatch when not used as a context manager.
+ @contextlib.contextmanager
+ def revert_on_exit() -> Generator[None]:
+ try:
+ yield
+ finally:
+ for mod, name, orig_func in to_revert:
+ setattr(mod, name, orig_func)
+
+ return revert_on_exit()
+
+
+class CountingDaskScheduler(SchedulerGetCallable):
+ """
+ Dask scheduler that counts how many times `dask.compute` is called.
+
+ If the number of times exceeds 'max_count', it raises an error.
+ This is a wrapper around Dask's own 'synchronous' scheduler.
+
+ Parameters
+ ----------
+ max_count : int
+ Maximum number of allowed calls to `dask.compute`.
+ msg : str
+ Assertion to raise when the count exceeds `max_count`.
+ """
+
+ count: int
+ max_count: int
+ msg: str
+
+ def __init__(self, max_count: int, msg: str): # numpydoc ignore=GL08
+ self.count = 0
+ self.max_count = max_count
+ self.msg = msg
+
+ @override
+ def __call__(
+ self, dsk: Graph, keys: Sequence[Key] | Key, **kwargs: Any
+ ) -> Any: # numpydoc ignore=GL08
+ import dask
+
+ self.count += 1
+ # This should yield a nice traceback to the
+ # offending line in the user's code
+ assert self.count <= self.max_count, self.msg
+
+ return dask.get(dsk, keys, **kwargs) # type: ignore[attr-defined] # pyright: ignore[reportPrivateImportUsage]
+
+
+def _dask_wrap(
+ func: Callable[P, T], n: int
+) -> Callable[P, T]: # numpydoc ignore=PR01,RT01
+ """
+ Wrap `func` to raise if it attempts to call `dask.compute` more than `n` times.
+
+ After the function returns, materialize the graph in order to re-raise exceptions.
+ """
+ import dask
+ import dask.array as da
+
+ func_name = getattr(func, "__name__", str(func))
+ n_str = f"only up to {n}" if n else "no"
+ msg = (
+ f"Called `dask.compute()` or `dask.persist()` {n + 1} times, "
+ f"but {n_str} calls are allowed. Set "
+ f"`lazy_xp_function({func_name}, allow_dask_compute={n + 1})` "
+ "to allow for more (but note that this will harm performance). "
+ )
+
+ @wraps(func)
+ def wrapper(*args: P.args, **kwargs: P.kwargs) -> T: # numpydoc ignore=GL08
+ scheduler = CountingDaskScheduler(n, msg)
+ with dask.config.set({"scheduler": scheduler}): # pyright: ignore[reportPrivateImportUsage]
+ out = func(*args, **kwargs)
+
+ # Block until the graph materializes and reraise exceptions. This allows
+ # `pytest.raises` and `pytest.warns` to work as expected. Note that this would
+ # not work on scheduler='distributed', as it would not block.
+ arrays, rest = pickle_flatten(out, da.Array)
+ arrays = dask.persist(arrays, scheduler="threads")[0] # type: ignore[attr-defined,no-untyped-call] # pyright: ignore[reportPrivateImportUsage]
+ return pickle_unflatten(arrays, rest) # pyright: ignore[reportUnknownArgumentType]
+
+ return wrapper
diff --git a/tests/conftest.py b/tests/conftest.py
index c588d802..26b9a816 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -1,25 +1,27 @@
"""Pytest fixtures."""
-from collections.abc import Callable
-from functools import wraps
+from collections.abc import Callable, Generator
+from functools import partial, wraps
from types import ModuleType
from typing import ParamSpec, TypeVar, cast
import numpy as np
import pytest
-from array_api_extra._lib import Backend
+from array_api_extra._lib._backends import Backend
+from array_api_extra._lib._testing import xfail
from array_api_extra._lib._utils._compat import array_namespace
from array_api_extra._lib._utils._compat import device as get_device
from array_api_extra._lib._utils._typing import Device
+from array_api_extra.testing import patch_lazy_xp_functions
T = TypeVar("T")
P = ParamSpec("P")
-np_compat = array_namespace(np.empty(0))
+np_compat = array_namespace(np.empty(0)) # type: ignore[arg-type] # pyright: ignore[reportArgumentType]
-@pytest.fixture(params=tuple(Backend))
+@pytest.fixture(params=[b.pytest_param() for b in Backend])
def library(request: pytest.FixtureRequest) -> Backend: # numpydoc ignore=PR01,RT03
"""
Parameterized fixture that iterates on all libraries.
@@ -30,14 +32,29 @@ def library(request: pytest.FixtureRequest) -> Backend: # numpydoc ignore=PR01,
"""
elem = cast(Backend, request.param)
- for marker in request.node.iter_markers("skip_xp_backend"):
- skip_library = marker.kwargs.get("library") or marker.args[0] # type: ignore[no-untyped-usage]
- if not isinstance(skip_library, Backend):
- msg = "argument of skip_xp_backend must be a Backend enum"
- raise TypeError(msg)
- if skip_library == elem:
- reason = cast(str, marker.kwargs.get("reason", "skip_xp_backend"))
- pytest.skip(reason=reason)
+ for marker_name, skip_or_xfail, allow_kwargs in (
+ ("skip_xp_backend", pytest.skip, {"reason"}),
+ ("xfail_xp_backend", partial(xfail, request), {"reason", "strict"}),
+ ):
+ for marker in request.node.iter_markers(marker_name):
+ if len(marker.args) != 1: # pyright: ignore[reportUnknownArgumentType]
+ msg = f"Expected exactly one positional argument; got {marker.args}"
+ raise TypeError(msg)
+ if not isinstance(marker.args[0], Backend):
+ msg = f"Argument of {marker_name} must be a Backend enum"
+ raise TypeError(msg)
+ if invalid_kwargs := set(marker.kwargs) - allow_kwargs: # pyright: ignore[reportUnknownArgumentType]
+ msg = f"Unexpected kwarg(s): {invalid_kwargs}"
+ raise TypeError(msg)
+
+ library: Backend = marker.args[0]
+ reason: str | None = marker.kwargs.get("reason", None)
+ strict: bool | None = marker.kwargs.get("strict", None)
+
+ if library == elem:
+ reason = f"{library}: {reason}" if reason else str(library) # pyright: ignore[reportUnknownArgumentType]
+ kwargs = {"strict": strict} if strict is not None else {}
+ skip_or_xfail(reason=reason, **kwargs) # pyright: ignore[reportUnknownArgumentType]
return elem
@@ -46,7 +63,7 @@ class NumPyReadOnly:
"""
Variant of array_api_compat.numpy producing read-only arrays.
- Read-only numpy arrays fail on `__iadd__` etc., whereas read-only libraries such as
+ Read-only NumPy arrays fail on `__iadd__` etc., whereas read-only libraries such as
JAX and Sparse simply don't define those methods, which makes calls to `+=` fall
back to `__add__`.
@@ -93,7 +110,9 @@ def wrapper(*args: P.args, **kwargs: P.kwargs) -> T: # numpydoc ignore=GL08
@pytest.fixture
-def xp(library: Backend) -> ModuleType: # numpydoc ignore=PR01,RT03
+def xp(
+ library: Backend, request: pytest.FixtureRequest
+) -> Generator[ModuleType]: # numpydoc ignore=PR01,RT03
"""
Parameterized fixture that iterates on all libraries.
@@ -102,15 +121,99 @@ def xp(library: Backend) -> ModuleType: # numpydoc ignore=PR01,RT03
The current array namespace.
"""
if library == Backend.NUMPY_READONLY:
- return NumPyReadOnly() # type: ignore[return-value] # pyright: ignore[reportReturnType]
- xp = pytest.importorskip(library.value)
- if library == Backend.JAX_NUMPY:
- import jax # type: ignore[import-not-found] # pyright: ignore[reportMissingImports]
-
- jax.config.update("jax_enable_x64", True)
+ yield NumPyReadOnly() # type: ignore[misc] # pyright: ignore[reportReturnType]
+ return
+ xp = pytest.importorskip(library.modname)
# Possibly wrap module with array_api_compat
- return array_namespace(xp.empty(0))
+ xp = array_namespace(xp.empty(0))
+
+ if library == Backend.ARRAY_API_STRICTEST:
+ with xp.ArrayAPIStrictFlags(
+ boolean_indexing=False,
+ data_dependent_shapes=False,
+ # writeable=False, # TODO implement in array-api-strict
+ # lazy=True, # TODO implement in array-api-strict
+ enabled_extensions=(),
+ ):
+ yield xp
+ return
+
+ if library.like(Backend.JAX):
+ _setup_jax(library)
+ elif library.like(Backend.TORCH):
+ _setup_torch(library)
+
+ # On Dask and JAX, monkey-patch all functions tagged by `lazy_xp_function`
+ # in the global scope of the module containing the test function.
+ with patch_lazy_xp_functions(request, xp=xp):
+ yield xp
+
+
+def _setup_jax(library: Backend) -> None:
+ import jax
+
+ # suppress unused-ignore to run mypy in -e lint as well as -e dev
+ jax.config.update("jax_enable_x64", True) # type: ignore[no-untyped-call,unused-ignore]
+
+ if library == Backend.JAX_GPU:
+ try:
+ device = jax.devices("cuda")[0]
+ except RuntimeError:
+ pytest.skip("no CUDA device available")
+ else:
+ device = jax.devices("cpu")[0]
+ jax.config.update("jax_default_device", device)
+
+
+def _setup_torch(library: Backend) -> None:
+ import torch
+
+ # This is already the default, but some tests or env variables may change it.
+ # TODO test both float32 and float64, like in scipy.
+ torch.set_default_dtype(torch.float32)
+
+ if library == Backend.TORCH_GPU:
+ import torch.cuda
+
+ if not torch.cuda.is_available():
+ pytest.skip("no CUDA device available")
+ torch.set_default_device("cuda")
+ else:
+ assert library == Backend.TORCH
+ torch.set_default_device("cpu")
+
+
+# Can select the test with `pytest -k dask`
+@pytest.fixture(params=[Backend.DASK.pytest_param()])
+def da(
+ request: pytest.FixtureRequest,
+) -> Generator[ModuleType]: # numpydoc ignore=PR01,RT01
+ """Variant of the `xp` fixture that only yields dask.array."""
+ xp = pytest.importorskip("dask.array")
+ xp = array_namespace(xp.empty(0))
+ with patch_lazy_xp_functions(request, xp=xp):
+ yield xp
+
+
+@pytest.fixture(params=[Backend.JAX.pytest_param(), Backend.JAX_GPU.pytest_param()])
+def jnp(
+ request: pytest.FixtureRequest,
+) -> Generator[ModuleType]: # numpydoc ignore=PR01,RT01
+ """Variant of the `xp` fixture that only yields jax.numpy."""
+ xp = pytest.importorskip("jax.numpy")
+ _setup_jax(request.param)
+ with patch_lazy_xp_functions(request, xp=xp):
+ yield xp
+
+
+@pytest.fixture(params=[Backend.TORCH, Backend.TORCH_GPU])
+def torch(request: pytest.FixtureRequest) -> ModuleType: # numpydoc ignore=PR01,RT01
+ """Variant of the `xp` fixture that only yields torch."""
+ xp = pytest.importorskip("torch")
+ xp = array_namespace(xp.empty(0))
+ _setup_torch(request.param)
+ return xp
@pytest.fixture
@@ -123,7 +226,9 @@ def device(
Where possible, return a device that is not the default one.
"""
if library == Backend.ARRAY_API_STRICT:
- d = xp.Device("device1")
- assert get_device(xp.empty(0)) != d
- return d
+ return xp.Device("device1")
+ if library == Backend.TORCH:
+ return xp.device("meta")
+ if library == Backend.TORCH_GPU:
+ return xp.device("cpu")
return get_device(xp.empty(0))
diff --git a/tests/test_at.py b/tests/test_at.py
index 749c1b55..d9e1bdf9 100644
--- a/tests/test_at.py
+++ b/tests/test_at.py
@@ -1,3 +1,4 @@
+import math
from collections.abc import Callable, Generator
from contextlib import contextmanager
from types import ModuleType
@@ -5,20 +6,51 @@
import numpy as np
import pytest
-from array_api_compat import ( # type: ignore[import-untyped] # pyright: ignore[reportMissingTypeStubs]
- array_namespace,
- is_writeable_array,
-)
from array_api_extra import at
-from array_api_extra._lib import Backend
-from array_api_extra._lib._funcs import _AtOp
+from array_api_extra._lib._at import _AtOp
+from array_api_extra._lib._backends import Backend
from array_api_extra._lib._testing import xp_assert_equal
-from array_api_extra._lib._utils._typing import Array
+from array_api_extra._lib._utils._compat import array_namespace, is_writeable_array
+from array_api_extra._lib._utils._compat import device as get_device
+from array_api_extra._lib._utils._typing import Array, Device, SetIndex
+from array_api_extra.testing import lazy_xp_function
+
+pytestmark = [
+ pytest.mark.skip_xp_backend(
+ Backend.SPARSE, reason="read-only backend without .at support"
+ ),
+ pytest.mark.skip_xp_backend(Backend.ARRAY_API_STRICTEST, reason="boolean indexing"),
+]
+
+
+def at_op(
+ x: Array,
+ idx: SetIndex,
+ op: _AtOp,
+ y: Array | object,
+ copy: bool | None = None,
+ xp: ModuleType | None = None,
+) -> Array:
+ """
+ Wrapper around at(x, idx).op(y, copy=copy, xp=xp).
+
+ This is a hack to allow wrapping `at()` with `lazy_xp_function`.
+ For clarity, at() itself works inside jax.jit without hacks; this is
+ just a workaround for when one wants to apply jax.jit to `at()` directly,
+ which is not a common use case.
+ """
+ meth = cast(Callable[..., Array], getattr(at(x, idx), op.value))
+ return meth(y, copy=copy, xp=xp)
+
+
+lazy_xp_function(at_op)
@contextmanager
-def assert_copy(array: Array, copy: bool | None) -> Generator[None, None, None]:
+def assert_copy(
+ array: Array, copy: bool | None, expect_copy: bool | None = None
+) -> Generator[None, None, None]:
if copy is False and not is_writeable_array(array):
with pytest.raises((TypeError, ValueError)):
yield
@@ -28,25 +60,23 @@ def assert_copy(array: Array, copy: bool | None) -> Generator[None, None, None]:
array_orig = xp.asarray(array, copy=True)
yield
- if copy is None:
- copy = not is_writeable_array(array)
- xp_assert_equal(xp.all(array == array_orig), xp.asarray(copy))
+ if expect_copy is None:
+ expect_copy = copy
+ if expect_copy:
+ # Original has not been modified
+ xp_assert_equal(array, array_orig)
+ elif expect_copy is False:
+ # Original has been modified
+ with pytest.raises(AssertionError):
+ xp_assert_equal(array, array_orig)
+ # Test nothing for copy=None. Dask changes behaviour depending on
+ # whether it's a special case of a bool mask with scalar RHS or not.
-@pytest.mark.skip_xp_backend(
- Backend.SPARSE, reason="read-only backend without .at support"
-)
-@pytest.mark.parametrize(
- ("kwargs", "expect_copy"),
- [
- ({"copy": True}, True),
- ({"copy": False}, False),
- ({"copy": None}, None), # Behavior is backend-specific
- ({}, None), # Test that the copy parameter defaults to None
- ],
-)
+
+@pytest.mark.parametrize("copy", [False, True, None])
@pytest.mark.parametrize(
- ("op", "arg", "expect"),
+ ("op", "y", "expect_list"),
[
(_AtOp.SET, 40.0, [10.0, 40.0, 40.0]),
(_AtOp.ADD, 40.0, [10.0, 60.0, 70.0]),
@@ -58,65 +88,143 @@ def assert_copy(array: Array, copy: bool | None) -> Generator[None, None, None]:
(_AtOp.MAX, 25.0, [10.0, 25.0, 30.0]),
],
)
+@pytest.mark.parametrize(
+ ("bool_mask", "x_ndim", "y_ndim"),
+ [
+ (False, 1, 0),
+ (False, 1, 1),
+ (True, 1, 0), # Uses xp.where(idx, y, x) on JAX and Dask
+ pytest.param(
+ *(True, 1, 1),
+ marks=(
+ pytest.mark.xfail_xp_backend(
+ Backend.JAX,
+ reason="bool mask update with shaped rhs",
+ strict=False, # test passes when copy=False
+ ),
+ pytest.mark.xfail_xp_backend(
+ Backend.JAX_GPU,
+ reason="bool mask update with shaped rhs",
+ strict=False, # test passes when copy=False
+ ),
+ pytest.mark.xfail_xp_backend(
+ Backend.DASK, reason="bool mask update with shaped rhs"
+ ),
+ ),
+ ),
+ (False, 0, 0),
+ (True, 0, 0),
+ ],
+)
def test_update_ops(
xp: ModuleType,
- kwargs: dict[str, bool | None],
- expect_copy: bool | None,
+ copy: bool | None,
op: _AtOp,
- arg: float,
- expect: list[float],
+ y: float,
+ expect_list: list[float],
+ bool_mask: bool,
+ x_ndim: int,
+ y_ndim: int,
):
- array = xp.asarray([10.0, 20.0, 30.0])
+ if x_ndim == 1:
+ x = xp.asarray([10.0, 20.0, 30.0])
+ idx = xp.asarray([False, True, True]) if bool_mask else slice(1, None)
+ expect: list[float] | float = expect_list
+ else:
+ idx = xp.asarray(True) if bool_mask else ()
+ # Pick an element that does change with the operation
+ if op is _AtOp.MIN:
+ x = xp.asarray(30.0)
+ expect = expect_list[2]
+ else:
+ x = xp.asarray(20.0)
+ expect = expect_list[1]
- with assert_copy(array, expect_copy):
- func = cast(Callable[..., Array], getattr(at(array)[1:], op.value)) # type: ignore[no-any-explicit]
- y = func(arg, **kwargs)
- assert isinstance(y, type(array))
- xp_assert_equal(y, xp.asarray(expect))
+ if y_ndim == 1:
+ y = xp.asarray([y, y])
+
+ with assert_copy(x, copy):
+ z = at_op(x, idx, op, y, copy=copy)
+ assert isinstance(z, type(x))
+ xp_assert_equal(z, xp.asarray(expect))
+
+
+@pytest.mark.parametrize("op", list(_AtOp))
+def test_copy_default(xp: ModuleType, library: Backend, op: _AtOp):
+ """
+ Test that the default copy behaviour is False for writeable arrays
+ and True for read-only ones.
+ """
+ x = xp.asarray([1.0, 10.0, 20.0])
+ expect_copy = not is_writeable_array(x)
+ meth = cast(Callable[..., Array], getattr(at(x)[:2], op.value))
+ with assert_copy(x, None, expect_copy):
+ _ = meth(2.0)
+
+ x = xp.asarray([1.0, 10.0, 20.0])
+ # Dask's default copy value is True for bool masks,
+ # even if the arrays are writeable.
+ expect_copy = not is_writeable_array(x) or library is Backend.DASK
+ idx = xp.asarray([True, True, False])
+ meth = cast(Callable[..., Array], getattr(at(x, idx), op.value))
+ with assert_copy(x, None, expect_copy):
+ _ = meth(2.0)
def test_copy_invalid():
a = np.asarray([1, 2, 3])
with pytest.raises(ValueError, match="copy"):
- at(a, 0).set(4, copy="invalid") # type: ignore[arg-type] # pyright: ignore[reportArgumentType]
+ _ = at(a, 0).set(4, copy="invalid") # type: ignore[arg-type] # pyright: ignore[reportArgumentType]
def test_xp():
- a = np.asarray([1, 2, 3])
- at(a, 0).set(4, xp=np)
- at(a, 0).add(4, xp=np)
- at(a, 0).subtract(4, xp=np)
- at(a, 0).multiply(4, xp=np)
- at(a, 0).divide(4, xp=np)
- at(a, 0).power(4, xp=np)
- at(a, 0).min(4, xp=np)
- at(a, 0).max(4, xp=np)
+ a = cast(Array, np.asarray([1, 2, 3])) # pyright: ignore[reportInvalidCast]
+ _ = at(a, 0).set(4, xp=np)
+ _ = at(a, 0).add(4, xp=np)
+ _ = at(a, 0).subtract(4, xp=np)
+ _ = at(a, 0).multiply(4, xp=np)
+ _ = at(a, 0).divide(4, xp=np)
+ _ = at(a, 0).power(4, xp=np)
+ _ = at(a, 0).min(4, xp=np)
+ _ = at(a, 0).max(4, xp=np)
def test_alternate_index_syntax():
- a = np.asarray([1, 2, 3])
- xp_assert_equal(at(a, 0).set(4, copy=True), np.asarray([4, 2, 3]))
- xp_assert_equal(at(a)[0].set(4, copy=True), np.asarray([4, 2, 3]))
+ xp = cast(ModuleType, np) # type: ignore[redundant-cast] # pyright: ignore[reportInvalidCast]
+ a = cast(Array, xp.asarray([1, 2, 3]))
+ xp_assert_equal(at(a, 0).set(4, copy=True), xp.asarray([4, 2, 3]))
+ xp_assert_equal(at(a)[0].set(4, copy=True), xp.asarray([4, 2, 3]))
a_at = at(a)
- xp_assert_equal(a_at[0].add(1, copy=True), np.asarray([2, 2, 3]))
- xp_assert_equal(a_at[1].add(2, copy=True), np.asarray([1, 4, 3]))
+ xp_assert_equal(a_at[0].add(1, copy=True), xp.asarray([2, 2, 3]))
+ xp_assert_equal(a_at[1].add(2, copy=True), xp.asarray([1, 4, 3]))
with pytest.raises(ValueError, match="Index"):
- at(a).set(4)
+ _ = at(a).set(4)
with pytest.raises(ValueError, match="Index"):
- at(a, 0)[0].set(4)
+ _ = at(a, 0)[0].set(4)
-@pytest.mark.parametrize("copy", [True, False])
-@pytest.mark.parametrize(
- "op", [_AtOp.ADD, _AtOp.SUBTRACT, _AtOp.MULTIPLY, _AtOp.DIVIDE, _AtOp.POWER]
-)
-def test_iops_incompatible_dtype(op: _AtOp, copy: bool):
+@pytest.mark.parametrize("copy", [True, None])
+@pytest.mark.parametrize("bool_mask", [False, True])
+@pytest.mark.parametrize("op", list(_AtOp))
+def test_incompatible_dtype(
+ xp: ModuleType,
+ library: Backend,
+ op: _AtOp,
+ copy: bool | None,
+ bool_mask: bool,
+):
"""Test that at() replicates the backend's behaviour for
in-place operations with incompatible dtypes.
- Note:
+ Behavior is backend-specific, but only two behaviors are allowed:
+ 1. raise an exception, or
+ 2. return the same dtype as x, disregarding y.dtype (no broadcasting).
+
+ Note that __i__ and ____ behave differently, and we want to
+ replicate the behavior of __i__:
+
>>> a = np.asarray([1, 2, 3])
>>> a / 1.5
array([0. , 0.66666667, 1.33333333])
@@ -124,7 +232,104 @@ def test_iops_incompatible_dtype(op: _AtOp, copy: bool):
UFuncTypeError: Cannot cast ufunc 'divide' output from dtype('float64')
to dtype('int64') with casting rule 'same_kind'
"""
- a = np.asarray([2, 4])
- func = cast(Callable[..., Array], getattr(at(a)[:], op.value)) # type: ignore[no-any-explicit]
- with pytest.raises(TypeError, match="Cannot cast ufunc"):
- func(1.1, copy=copy)
+ x = xp.asarray([2, 4])
+ idx = xp.asarray([True, False]) if bool_mask else slice(None)
+ z = None
+
+ if library.like(Backend.JAX):
+ if bool_mask:
+ z = at_op(x, idx, op, 1.1, copy=copy)
+ else:
+ with pytest.warns(FutureWarning, match="cannot safely cast"):
+ z = at_op(x, idx, op, 1.1, copy=copy)
+
+ elif library.like(Backend.DASK):
+ z = at_op(x, idx, op, 1.1, copy=copy)
+
+ elif library.like(Backend.ARRAY_API_STRICT) and op is not _AtOp.SET:
+ with pytest.raises(Exception, match=r"cast|promote|dtype"):
+ _ = at_op(x, idx, op, 1.1, copy=copy)
+
+ elif op in (_AtOp.SET, _AtOp.MIN, _AtOp.MAX):
+ # There is no __i__ version of these operations
+ z = at_op(x, idx, op, 1.1, copy=copy)
+
+ else:
+ with pytest.raises(Exception, match=r"cast|promote|dtype"):
+ _ = at_op(x, idx, op, 1.1, copy=copy)
+
+ assert z is None or z.dtype == x.dtype
+
+
+def test_bool_mask_nd(xp: ModuleType):
+ x = xp.asarray([[1, 2, 3], [4, 5, 6]])
+ idx = xp.asarray([[True, False, False], [False, True, True]])
+ z = at_op(x, idx, _AtOp.SET, 0)
+ xp_assert_equal(z, xp.asarray([[0, 2, 3], [4, 0, 0]]))
+
+
+@pytest.mark.parametrize("bool_mask", [False, True])
+def test_no_inf_warnings(xp: ModuleType, bool_mask: bool):
+ x = xp.asarray([math.inf, 1.0, 2.0])
+ idx = ~xp.isinf(x) if bool_mask else slice(1, None)
+ # inf - inf -> nan with a warning
+ z = at_op(x, idx, _AtOp.SUBTRACT, math.inf)
+ xp_assert_equal(z, xp.asarray([math.inf, -math.inf, -math.inf]))
+
+
+@pytest.mark.parametrize(
+ "copy",
+ [
+ None,
+ pytest.param(
+ False,
+ marks=[
+ pytest.mark.skip_xp_backend(
+ Backend.NUMPY, reason="np.generic is read-only"
+ ),
+ pytest.mark.skip_xp_backend(
+ Backend.NUMPY_READONLY, reason="read-only backend"
+ ),
+ pytest.mark.skip_xp_backend(Backend.JAX, reason="read-only backend"),
+ pytest.mark.skip_xp_backend(
+ Backend.JAX_GPU, reason="read-only backend"
+ ),
+ pytest.mark.skip_xp_backend(Backend.SPARSE, reason="read-only backend"),
+ ],
+ ),
+ ],
+)
+@pytest.mark.parametrize("bool_mask", [False, True])
+def test_gh134(xp: ModuleType, bool_mask: bool, copy: bool | None):
+ """
+ Test that xpx.at doesn't encroach in a bug of dask.array.Array.__setitem__, which
+ blindly assumes that chunk contents are writeable np.ndarray objects:
+
+ https://github.com/dask/dask/issues/11722
+
+ In other words: when special-casing bool masks for Dask, unless the user explicitly
+ asks for copy=False, do not needlessly write back to the input.
+ """
+ x = xp.zeros(1)
+
+ # In NumPy, we have a writeable np.ndarray in input and a read-only np.generic in
+ # output. As both are Arrays, this behaviour is Array API compliant.
+ # In Dask, we have a writeable da.Array on both sides, and if you call __setitem__
+ # on it all seems fine, but when you compute() your graph is corrupted.
+ y = x[0]
+
+ idx = xp.asarray(True) if bool_mask else ()
+ z = at_op(y, idx, _AtOp.SET, 1, copy=copy)
+ xp_assert_equal(z, xp.asarray(1, dtype=x.dtype))
+
+
+def test_device(xp: ModuleType, device: Device):
+ x = xp.asarray([1, 2, 3], device=device)
+
+ y = xp.asarray([4, 5], device=device)
+ z = at(x)[:2].set(y)
+ assert get_device(z) == get_device(x)
+
+ idx = xp.asarray([True, False, True], device=device)
+ z = at(x)[idx].set(4)
+ assert get_device(z) == get_device(x)
diff --git a/tests/test_funcs.py b/tests/test_funcs.py
index 897b7811..dc0658ab 100644
--- a/tests/test_funcs.py
+++ b/tests/test_funcs.py
@@ -1,31 +1,276 @@
-import contextlib
+import math
import warnings
from types import ModuleType
+from typing import Any, cast
+import hypothesis
+import hypothesis.extra.numpy as npst
import numpy as np
import pytest
+from hypothesis import given
+from hypothesis import strategies as st
from array_api_extra import (
+ apply_where,
at,
atleast_nd,
+ broadcast_shapes,
cov,
create_diagonal,
+ default_dtype,
expand_dims,
+ isclose,
kron,
nunique,
+ one_hot,
pad,
setdiff1d,
sinc,
)
-from array_api_extra._lib import Backend
+from array_api_extra._lib._backends import NUMPY_VERSION, Backend
from array_api_extra._lib._testing import xp_assert_close, xp_assert_equal
from array_api_extra._lib._utils._compat import device as get_device
+from array_api_extra._lib._utils._helpers import eager_shape, ndindex
from array_api_extra._lib._utils._typing import Array, Device
+from array_api_extra.testing import lazy_xp_function
+
+lazy_xp_function(apply_where)
+lazy_xp_function(atleast_nd)
+lazy_xp_function(cov)
+lazy_xp_function(create_diagonal)
+lazy_xp_function(expand_dims)
+lazy_xp_function(kron)
+lazy_xp_function(nunique)
+lazy_xp_function(one_hot)
+lazy_xp_function(pad)
+# FIXME calls in1d which calls xp.unique_values without size
+lazy_xp_function(setdiff1d, jax_jit=False)
+lazy_xp_function(sinc)
+
+
+class TestApplyWhere:
+ @staticmethod
+ def f1(x: Array, y: Array | int = 10) -> Array:
+ return x + y
+
+ @staticmethod
+ def f2(x: Array, y: Array | int = 10) -> Array:
+ return x - y
+
+ def test_f1_f2(self, xp: ModuleType):
+ x = xp.asarray([1, 2, 3, 4])
+ cond = x % 2 == 0
+ actual = apply_where(cond, x, self.f1, self.f2)
+ expect = xp.where(cond, self.f1(x), self.f2(x))
+ xp_assert_equal(actual, expect)
-# mypy: disable-error-code=no-untyped-usage
+ def test_fill_value(self, xp: ModuleType):
+ x = xp.asarray([1, 2, 3, 4])
+ cond = x % 2 == 0
+ actual = apply_where(x % 2 == 0, x, self.f1, fill_value=0)
+ expect = xp.where(cond, self.f1(x), xp.asarray(0))
+ xp_assert_equal(actual, expect)
+
+ actual = apply_where(x % 2 == 0, x, self.f1, fill_value=xp.asarray(0))
+ xp_assert_equal(actual, expect)
+
+ def test_args_tuple(self, xp: ModuleType):
+ x = xp.asarray([1, 2, 3, 4])
+ y = xp.asarray([10, 20, 30, 40])
+ cond = x % 2 == 0
+ actual = apply_where(cond, (x, y), self.f1, self.f2)
+ expect = xp.where(cond, self.f1(x, y), self.f2(x, y))
+ xp_assert_equal(actual, expect)
+
+ def test_broadcast(self, xp: ModuleType):
+ x = xp.asarray([1, 2])
+ y = xp.asarray([[10], [20], [30]])
+ cond = xp.broadcast_to(xp.asarray(True), (4, 1, 1))
+
+ actual = apply_where(cond, (x, y), self.f1, self.f2)
+ expect = xp.where(cond, self.f1(x, y), self.f2(x, y))
+ xp_assert_equal(actual, expect)
+
+ actual = apply_where(
+ cond,
+ (x, y),
+ lambda x, _: x, # pyright: ignore[reportUnknownArgumentType]
+ lambda _, y: y, # pyright: ignore[reportUnknownArgumentType]
+ )
+ expect = xp.where(cond, x, y)
+ xp_assert_equal(actual, expect)
+
+ # Shaped fill_value
+ actual = apply_where(cond, x, self.f1, fill_value=y)
+ expect = xp.where(cond, self.f1(x), y)
+ xp_assert_equal(actual, expect)
+
+ def test_dtype_propagation(self, xp: ModuleType, library: Backend):
+ x = xp.asarray([1, 2], dtype=xp.int8)
+ y = xp.asarray([3, 4], dtype=xp.int16)
+ cond = x % 2 == 0
+
+ mxp = np if library is Backend.DASK else xp
+ actual = apply_where(
+ cond,
+ (x, y),
+ self.f1,
+ lambda x, y: mxp.astype(x - y, xp.int64), # pyright: ignore[reportArgumentType,reportUnknownArgumentType]
+ )
+ assert actual.dtype == xp.int64
+
+ actual = apply_where(cond, y, self.f1, fill_value=5)
+ assert actual.dtype == xp.int16
+
+ @pytest.mark.parametrize("fill_value_raw", [3, [3, 4]])
+ @pytest.mark.parametrize(
+ ("fill_value_dtype", "expect_dtype"), [("int32", "int32"), ("int8", "int16")]
+ )
+ def test_dtype_propagation_fill_value(
+ self,
+ xp: ModuleType,
+ fill_value_raw: int | list[int],
+ fill_value_dtype: str,
+ expect_dtype: str,
+ ):
+ x = xp.asarray([1, 2], dtype=xp.int16)
+ cond = x % 2 == 0
+ fill_value = xp.asarray(fill_value_raw, dtype=getattr(xp, fill_value_dtype))
+
+ actual = apply_where(cond, x, self.f1, fill_value=fill_value)
+ assert actual.dtype == getattr(xp, expect_dtype)
+
+ def test_dont_overwrite_fill_value(self, xp: ModuleType):
+ x = xp.asarray([1, 2])
+ fill_value = xp.asarray([100, 200])
+ actual = apply_where(x % 2 == 0, x, self.f1, fill_value=fill_value)
+ xp_assert_equal(actual, xp.asarray([100, 12]))
+ xp_assert_equal(fill_value, xp.asarray([100, 200]))
+
+ @pytest.mark.skip_xp_backend(
+ Backend.ARRAY_API_STRICTEST,
+ reason="no boolean indexing -> run everywhere",
+ )
+ @pytest.mark.skip_xp_backend(
+ Backend.SPARSE,
+ reason="no indexing by sparse array -> run everywhere",
+ )
+ def test_dont_run_on_false(self, xp: ModuleType):
+ x = xp.asarray([1.0, 2.0, 0.0])
+ y = xp.asarray([0.0, 3.0, 4.0])
+ # On NumPy, division by zero will trigger warnings
+ actual = apply_where(
+ x == 0,
+ (x, y),
+ lambda x, y: x / y, # pyright: ignore[reportUnknownArgumentType]
+ lambda x, y: y / x, # pyright: ignore[reportUnknownArgumentType]
+ )
+ xp_assert_equal(actual, xp.asarray([0.0, 1.5, 0.0]))
+
+ def test_bad_args(self, xp: ModuleType):
+ x = xp.asarray([1, 2, 3, 4])
+ cond = x % 2 == 0
+ # Neither f2 nor fill_value
+ with pytest.raises(TypeError, match="Exactly one of"):
+ apply_where(cond, x, self.f1) # type: ignore[call-overload] # pyright: ignore[reportCallIssue]
+ # Both f2 and fill_value
+ with pytest.raises(TypeError, match="Exactly one of"):
+ apply_where(cond, x, self.f1, self.f2, fill_value=0) # type: ignore[call-overload] # pyright: ignore[reportCallIssue]
+
+ @pytest.mark.skip_xp_backend(Backend.NUMPY_READONLY, reason="xp=xp")
+ def test_xp(self, xp: ModuleType):
+ x = xp.asarray([1, 2, 3, 4])
+ cond = x % 2 == 0
+ actual = apply_where(cond, x, self.f1, self.f2, xp=xp)
+ expect = xp.where(cond, self.f1(x), self.f2(x))
+ xp_assert_equal(actual, expect)
+
+ def test_device(self, xp: ModuleType, device: Device):
+ x = xp.asarray([1, 2, 3, 4], device=device)
+ y = apply_where(x % 2 == 0, x, self.f1, self.f2)
+ assert get_device(y) == device
+ y = apply_where(x % 2 == 0, x, self.f1, fill_value=0)
+ assert get_device(y) == device
+ y = apply_where(x % 2 == 0, x, self.f1, fill_value=x)
+ assert get_device(y) == device
+
+ @pytest.mark.filterwarnings("ignore::RuntimeWarning") # overflows, etc.
+ @hypothesis.settings(
+ # The xp and library fixtures are not regenerated between hypothesis iterations
+ suppress_health_check=[hypothesis.HealthCheck.function_scoped_fixture],
+ # JAX can take a long time to initialize on the first call
+ deadline=None,
+ )
+ @given(
+ n_arrays=st.integers(min_value=1, max_value=3),
+ rng_seed=st.integers(min_value=1000000000, max_value=9999999999),
+ dtype=st.sampled_from((np.float32, np.float64)),
+ p=st.floats(min_value=0, max_value=1),
+ data=st.data(),
+ )
+ def test_hypothesis(
+ self,
+ n_arrays: int,
+ rng_seed: int,
+ dtype: np.dtype[Any],
+ p: float,
+ data: st.DataObject,
+ xp: ModuleType,
+ library: Backend,
+ ):
+ if (
+ library.like(Backend.NUMPY)
+ and NUMPY_VERSION < (2, 0)
+ and dtype is np.float32
+ ):
+ pytest.xfail(reason="NumPy 1.x dtype promotion for scalars")
+
+ mbs = npst.mutually_broadcastable_shapes(num_shapes=n_arrays + 1, min_side=0)
+ input_shapes, _ = data.draw(mbs)
+ cond_shape, *shapes = input_shapes
+
+ # cupy/cupy#8382
+ # https://github.com/jax-ml/jax/issues/26658
+ elements = {"allow_subnormal": not library.like(Backend.CUPY, Backend.JAX)}
+
+ fill_value = xp.asarray(
+ data.draw(npst.arrays(dtype=dtype, shape=(), elements=elements))
+ )
+ float_fill_value = float(fill_value)
+ if library is Backend.CUPY and dtype is np.float32:
+ # Avoid data-dependent dtype promotion when encountering subnormals
+ # close to the max float32 value
+ float_fill_value = float(np.clip(float_fill_value, -1e38, 1e38))
+
+ arrays = tuple(
+ xp.asarray(
+ data.draw(npst.arrays(dtype=dtype, shape=shape, elements=elements))
+ )
+ for shape in shapes
+ )
+
+ def f1(*args: Array) -> Array:
+ return cast(Array, sum(args))
+
+ def f2(*args: Array) -> Array:
+ return cast(Array, sum(args) / 2)
+
+ rng = np.random.default_rng(rng_seed)
+ cond = xp.asarray(rng.random(size=cond_shape) > p)
+
+ res1 = apply_where(cond, arrays, f1, fill_value=fill_value)
+ res2 = apply_where(cond, arrays, f1, f2)
+ res3 = apply_where(cond, arrays, f1, fill_value=float_fill_value)
+
+ ref1 = xp.where(cond, f1(*arrays), fill_value)
+ ref2 = xp.where(cond, f1(*arrays), f2(*arrays))
+ ref3 = xp.where(cond, f1(*arrays), float_fill_value)
+
+ xp_assert_close(res1, ref1, rtol=2e-16)
+ xp_assert_equal(res2, ref2)
+ xp_assert_equal(res3, ref3)
-@pytest.mark.skip_xp_backend(Backend.SPARSE, reason="no expand_dims")
class TestAtLeastND:
def test_0D(self, xp: ModuleType):
x = xp.asarray(1.0)
@@ -52,7 +297,7 @@ def test_1D(self, xp: ModuleType):
xp_assert_equal(y, xp.asarray([[0, 1]]))
y = atleast_nd(x, ndim=5)
- xp_assert_equal(y, xp.reshape(xp.arange(2), (1, 1, 1, 1, 2)))
+ xp_assert_equal(y, xp.asarray([[[[[0, 1]]]]]))
def test_2D(self, xp: ModuleType):
x = xp.asarray([[3.0]])
@@ -92,12 +337,68 @@ def test_device(self, xp: ModuleType, device: Device):
assert get_device(atleast_nd(x, ndim=2)) == device
def test_xp(self, xp: ModuleType):
- x = xp.asarray(1)
- y = atleast_nd(x, ndim=0, xp=xp)
- xp_assert_equal(y, x)
+ x = xp.asarray(1.0)
+ y = atleast_nd(x, ndim=1, xp=xp)
+ xp_assert_equal(y, xp.ones((1,)))
+
+
+class TestBroadcastShapes:
+ @pytest.mark.parametrize(
+ "args",
+ [
+ (),
+ ((),),
+ ((), ()),
+ ((1,),),
+ ((1,), (1,)),
+ ((2,), (1,)),
+ ((3, 1, 4), (2, 1)),
+ ((1, 1, 4), (2, 1)),
+ ((1,), ()),
+ ((), (2,), ()),
+ ((0,),),
+ ((0,), (1,)),
+ ((2, 0), (1, 1)),
+ ((2, 0, 3), (2, 1, 1)),
+ ],
+ )
+ def test_simple(self, args: tuple[tuple[int, ...], ...]):
+ expect = np.broadcast_shapes(*args)
+ actual = broadcast_shapes(*args)
+ assert actual == expect
+
+ @pytest.mark.parametrize(
+ "args",
+ [
+ ((2,), (3,)),
+ ((2, 3), (1, 2)),
+ ((2,), (0,)),
+ ((2, 0, 2), (1, 3, 1)),
+ ],
+ )
+ def test_fail(self, args: tuple[tuple[int, ...], ...]):
+ match = "cannot be broadcast to a single shape"
+ with pytest.raises(ValueError, match=match):
+ _ = np.broadcast_shapes(*args)
+ with pytest.raises(ValueError, match=match):
+ _ = broadcast_shapes(*args)
+
+ @pytest.mark.parametrize(
+ "args",
+ [
+ ((None,), (None,)),
+ ((math.nan,), (None,)),
+ ((1, None, 2, 4), (2, 3, None, 1), (2, None, None, 4)),
+ ((1, math.nan, 2), (4, 2, 3, math.nan), (4, 2, None, None)),
+ ((math.nan, 1), (None, 2), (None, 2)),
+ ],
+ )
+ def test_none(self, args: tuple[tuple[float | None, ...], ...]):
+ expect = args[-1]
+ actual = broadcast_shapes(*args[:-1])
+ assert actual == expect
-@pytest.mark.skip_xp_backend(Backend.SPARSE, reason="no isdtype")
class TestCov:
def test_basic(self, xp: ModuleType):
xp_assert_close(
@@ -110,6 +411,7 @@ def test_complex(self, xp: ModuleType):
expect = xp.asarray([[1.0, -1.0j], [1.0j, 1.0]], dtype=xp.complex128)
xp_assert_close(actual, expect)
+ @pytest.mark.xfail_xp_backend(Backend.SPARSE, reason="sparse#877")
def test_empty(self, xp: ModuleType):
with warnings.catch_warnings(record=True):
warnings.simplefilter("always", RuntimeWarning)
@@ -136,7 +438,7 @@ def test_device(self, xp: ModuleType, device: Device):
x = xp.asarray([1, 2, 3], device=device)
assert get_device(cov(x)) == device
- @pytest.mark.skip_xp_backend(Backend.NUMPY_READONLY)
+ @pytest.mark.skip_xp_backend(Backend.NUMPY_READONLY, reason="xp=xp")
def test_xp(self, xp: ModuleType):
xp_assert_close(
cov(xp.asarray([[0.0, 2.0], [1.0, 1.0], [2.0, 0.0]]).T, xp=xp),
@@ -144,9 +446,103 @@ def test_xp(self, xp: ModuleType):
)
-@pytest.mark.skip_xp_backend(Backend.SPARSE, reason="no device")
+@pytest.mark.xfail_xp_backend(Backend.SPARSE, reason="no arange", strict=False)
+class TestOneHot:
+ @pytest.mark.parametrize("n_dim", range(4))
+ @pytest.mark.parametrize("num_classes", [1, 3, 10])
+ def test_dims_and_classes(self, xp: ModuleType, n_dim: int, num_classes: int):
+ shape = tuple(range(2, 2 + n_dim))
+ rng = np.random.default_rng(2347823)
+ np_x = rng.integers(num_classes, size=shape)
+ x = xp.asarray(np_x)
+ y = one_hot(x, num_classes)
+ assert y.shape == (*x.shape, num_classes)
+ for *i_list, j in ndindex(*shape, num_classes):
+ i = tuple(i_list)
+ assert float(y[(*i, j)]) == (int(x[i]) == j)
+
+ def test_basic(self, xp: ModuleType):
+ actual = one_hot(xp.asarray([0, 1, 2]), 3)
+ expected = xp.asarray([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]])
+ xp_assert_equal(actual, expected)
+
+ actual = one_hot(xp.asarray([1, 2, 0]), 3)
+ expected = xp.asarray([[0.0, 1.0, 0.0], [0.0, 0.0, 1.0], [1.0, 0.0, 0.0]])
+ xp_assert_equal(actual, expected)
+
+ def test_2d(self, xp: ModuleType):
+ actual = one_hot(xp.asarray([[2, 1, 0], [1, 0, 2]]), 3, axis=1)
+ expected = xp.asarray(
+ [
+ [[0.0, 0.0, 1.0], [0.0, 1.0, 0.0], [1.0, 0.0, 0.0]],
+ [[0.0, 1.0, 0.0], [1.0, 0.0, 0.0], [0.0, 0.0, 1.0]],
+ ]
+ )
+ xp_assert_equal(actual, expected)
+
+ @pytest.mark.skip_xp_backend(
+ Backend.ARRAY_API_STRICTEST, reason="backend doesn't support Boolean indexing"
+ )
+ def test_abstract_size(self, xp: ModuleType):
+ x = xp.arange(5)
+ x = x[x > 2]
+ actual = one_hot(x, 5)
+ expected = xp.asarray([[0.0, 0.0, 0.0, 1.0, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0]])
+ xp_assert_equal(actual, expected)
+
+ @pytest.mark.skip_xp_backend(
+ Backend.TORCH_GPU, reason="Puts Pytorch into a bad state."
+ )
+ def test_out_of_bound(self, xp: ModuleType):
+ # Undefined behavior. Either return zero, or raise.
+ try:
+ actual = one_hot(xp.asarray([-1, 3]), 3)
+ except IndexError:
+ return
+ expected = xp.asarray([[0.0, 0.0, 0.0], [0.0, 0.0, 0.0]])
+ xp_assert_equal(actual, expected)
+
+ @pytest.mark.parametrize(
+ "int_dtype",
+ ["int8", "int16", "int32", "int64", "uint8", "uint16", "uint32", "uint64"],
+ )
+ def test_int_types(self, xp: ModuleType, int_dtype: str):
+ dtype = getattr(xp, int_dtype)
+ x = xp.asarray([0, 1, 2], dtype=dtype)
+ actual = one_hot(x, 3)
+ expected = xp.asarray([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]])
+ xp_assert_equal(actual, expected)
+
+ def test_custom_dtype(self, xp: ModuleType):
+ actual = one_hot(xp.asarray([0, 1, 2], dtype=xp.int32), 3, dtype=xp.bool)
+ expected = xp.asarray(
+ [[True, False, False], [False, True, False], [False, False, True]]
+ )
+ xp_assert_equal(actual, expected)
+
+ def test_axis(self, xp: ModuleType):
+ expected = xp.asarray([[0.0, 1.0, 0.0], [0.0, 0.0, 1.0], [1.0, 0.0, 0.0]]).T
+ actual = one_hot(xp.asarray([1, 2, 0]), 3, axis=0)
+ xp_assert_equal(actual, expected)
+
+ actual = one_hot(xp.asarray([1, 2, 0]), 3, axis=-2)
+ xp_assert_equal(actual, expected)
+
+ def test_non_integer(self, xp: ModuleType):
+ with pytest.raises(TypeError):
+ _ = one_hot(xp.asarray([1.0]), 3)
+
+ def test_device(self, xp: ModuleType, device: Device):
+ x = xp.asarray([0, 1, 2], device=device)
+ y = one_hot(x, 3)
+ assert get_device(y) == device
+
+
+@pytest.mark.skip_xp_backend(
+ Backend.SPARSE, reason="read-only backend without .at support"
+)
class TestCreateDiagonal:
- def test_1d(self, xp: ModuleType):
+ def test_1d_from_numpy(self, xp: ModuleType):
# from np.diag tests
vals = 100 * xp.arange(5, dtype=xp.float64)
b = xp.zeros((5, 5), dtype=xp.float64)
@@ -163,7 +559,7 @@ def test_1d(self, xp: ModuleType):
@pytest.mark.parametrize("n", range(1, 10))
@pytest.mark.parametrize("offset", range(1, 10))
- def test_create_diagonal(self, xp: ModuleType, n: int, offset: int):
+ def test_1d_from_scipy(self, xp: ModuleType, n: int, offset: int):
# from scipy._lib tests
rng = np.random.default_rng(2347823)
one = xp.asarray(1.0)
@@ -172,13 +568,34 @@ def test_create_diagonal(self, xp: ModuleType, n: int, offset: int):
B = xp.asarray(np.diag(x, offset), dtype=one.dtype)
xp_assert_equal(A, B)
- def test_0d(self, xp: ModuleType):
+ def test_0d_raises(self, xp: ModuleType):
with pytest.raises(ValueError, match="1-dimensional"):
- create_diagonal(xp.asarray(1))
+ _ = create_diagonal(xp.asarray(1))
- def test_2d(self, xp: ModuleType):
- with pytest.raises(ValueError, match="1-dimensional"):
- create_diagonal(xp.asarray([[1]]))
+ @pytest.mark.parametrize(
+ "shape",
+ [
+ (0,),
+ (10,),
+ (0, 1),
+ (1, 0),
+ (0, 0),
+ (4, 2, 1),
+ (1, 1, 7),
+ (0, 0, 1),
+ (3, 2, 4, 5),
+ ],
+ )
+ def test_nd(self, xp: ModuleType, shape: tuple[int, ...]):
+ rng = np.random.default_rng(2347823)
+ b = xp.asarray(
+ rng.integers((1 << 64) - 1, size=shape, dtype=np.uint64), dtype=xp.uint64
+ )
+ c = create_diagonal(b)
+ zero = xp.zeros((), dtype=xp.uint64)
+ assert c.shape == (*b.shape, b.shape[-1])
+ for i in ndindex(*eager_shape(c)):
+ xp_assert_equal(c[i], b[i[:-1]] if i[-2] == i[-1] else zero)
def test_device(self, xp: ModuleType, device: Device):
x = xp.asarray([1, 2, 3], device=device)
@@ -190,24 +607,45 @@ def test_xp(self, xp: ModuleType):
xp_assert_equal(y, xp.asarray([[1, 0], [0, 2]]))
-@pytest.mark.skip_xp_backend(Backend.SPARSE, reason="no sparse.expand_dims")
+class TestDefaultDType:
+ def test_basic(self, xp: ModuleType):
+ assert default_dtype(xp) == xp.empty(0).dtype
+
+ def test_kind(self, xp: ModuleType):
+ assert default_dtype(xp, "real floating") == xp.empty(0).dtype
+ assert default_dtype(xp, "complex floating") == (xp.empty(0) * 1j).dtype
+ assert default_dtype(xp, "integral") == xp.int64
+ assert default_dtype(xp, "indexing") == xp.int64
+
+ with pytest.raises(ValueError, match="Unknown kind"):
+ _ = default_dtype(xp, "foo") # type: ignore[arg-type] # pyright: ignore[reportArgumentType]
+
+ def test_device(self, xp: ModuleType, device: Device):
+ # Note: at the moment there are no known namespaces with
+ # device-specific default dtypes.
+ assert default_dtype(xp, device=None) == xp.empty(0).dtype
+ assert default_dtype(xp, device=device) == xp.empty(0).dtype
+
+ def test_torch(self, torch: ModuleType):
+ xp = torch
+ xp.set_default_dtype(xp.float64)
+ assert default_dtype(xp) == xp.float64
+ assert default_dtype(xp, "real floating") == xp.float64
+ assert default_dtype(xp, "complex floating") == xp.complex128
+
+ xp.set_default_dtype(xp.float32)
+ assert default_dtype(xp) == xp.float32
+ assert default_dtype(xp, "real floating") == xp.float32
+ assert default_dtype(xp, "complex floating") == xp.complex64
+
+
class TestExpandDims:
- @pytest.mark.skip_xp_backend(Backend.DASK_ARRAY, reason="tuple index out of range")
- @pytest.mark.skip_xp_backend(Backend.TORCH, reason="tuple index out of range")
- def test_functionality(self, xp: ModuleType):
- def _squeeze_all(b: Array) -> Array:
- """Mimics `np.squeeze(b)`. `xpx.squeeze`?"""
- for axis in range(b.ndim):
- with contextlib.suppress(ValueError):
- b = xp.squeeze(b, axis=axis)
- return b
-
- s = (2, 3, 4, 5)
- a = xp.empty(s)
+ def test_single_axis(self, xp: ModuleType):
+ """Trivial case where xpx.expand_dims doesn't add anything to xp.expand_dims"""
+ a = xp.asarray(np.reshape(np.arange(2 * 3 * 4 * 5), (2, 3, 4, 5)))
for axis in range(-5, 4):
b = expand_dims(a, axis=axis)
- assert b.shape[axis] == 1
- assert _squeeze_all(b).shape == s
+ xp_assert_equal(b, xp.expand_dims(a, axis=axis))
def test_axis_tuple(self, xp: ModuleType):
a = xp.empty((3, 3, 3))
@@ -217,29 +655,28 @@ def test_axis_tuple(self, xp: ModuleType):
assert expand_dims(a, axis=(0, -3, -5)).shape == (1, 1, 3, 1, 3, 3)
def test_axis_out_of_range(self, xp: ModuleType):
- s = (2, 3, 4, 5)
- a = xp.empty(s)
+ a = xp.empty((2, 3, 4, 5))
with pytest.raises(IndexError, match="out of bounds"):
- expand_dims(a, axis=-6)
+ _ = expand_dims(a, axis=-6)
with pytest.raises(IndexError, match="out of bounds"):
- expand_dims(a, axis=5)
+ _ = expand_dims(a, axis=5)
a = xp.empty((3, 3, 3))
with pytest.raises(IndexError, match="out of bounds"):
- expand_dims(a, axis=(0, -6))
+ _ = expand_dims(a, axis=(0, -6))
with pytest.raises(IndexError, match="out of bounds"):
- expand_dims(a, axis=(0, 5))
+ _ = expand_dims(a, axis=(0, 5))
def test_repeated_axis(self, xp: ModuleType):
a = xp.empty((3, 3, 3))
with pytest.raises(ValueError, match="Duplicate dimensions"):
- expand_dims(a, axis=(1, 1))
+ _ = expand_dims(a, axis=(1, 1))
def test_positive_negative_repeated(self, xp: ModuleType):
# https://github.com/data-apis/array-api/issues/760#issuecomment-1989449817
a = xp.empty((2, 3, 4, 5))
with pytest.raises(ValueError, match="Duplicate dimensions"):
- expand_dims(a, axis=(3, -3))
+ _ = expand_dims(a, axis=(3, -3))
def test_device(self, xp: ModuleType, device: Device):
x = xp.asarray([1, 2, 3], device=device)
@@ -251,36 +688,198 @@ def test_xp(self, xp: ModuleType):
assert y.shape == (1, 1, 1, 3)
-@pytest.mark.skip_xp_backend(Backend.SPARSE, reason="no sparse.expand_dims")
+@pytest.mark.filterwarnings( # array_api_strictest
+ "ignore:invalid value encountered:RuntimeWarning:array_api_strict"
+)
+@pytest.mark.filterwarnings( # sparse
+ "ignore:invalid value encountered:RuntimeWarning:sparse"
+)
+class TestIsClose:
+ @pytest.mark.parametrize("swap", [False, True])
+ @pytest.mark.parametrize(
+ ("a", "b"),
+ [
+ (0.0, 0.0),
+ (1.0, 1.0),
+ (1.0, 2.0),
+ (1.0, -1.0),
+ (100.0, 101.0),
+ (0, 0),
+ (1, 1),
+ (1, 2),
+ (1, -1),
+ (1.0 + 1j, 1.0 + 1j),
+ (1.0 + 1j, 1.0 - 1j),
+ (float("inf"), float("inf")),
+ (float("inf"), 100.0),
+ (float("inf"), float("-inf")),
+ (float("-inf"), float("-inf")),
+ (float("nan"), float("nan")),
+ (float("nan"), 100.0),
+ (1e6, 1e6 + 1), # True - within rtol
+ (1e6, 1e6 + 100), # False - outside rtol
+ (1e-6, 1.1e-6), # False - outside atol
+ (1e-7, 1.1e-7), # True - outside atol
+ (1e6 + 0j, 1e6 + 1j), # True - within rtol
+ (1e6 + 0j, 1e6 + 100j), # False - outside rtol
+ ],
+ )
+ def test_basic(self, a: float, b: float, swap: bool, xp: ModuleType):
+ if swap:
+ b, a = a, b
+ a_xp = xp.asarray(a)
+ b_xp = xp.asarray(b)
+
+ xp_assert_equal(isclose(a_xp, b_xp), xp.asarray(np.isclose(a, b)))
+
+ with warnings.catch_warnings():
+ warnings.simplefilter("ignore")
+ ar_np = a * np.arange(10)
+ br_np = b * np.arange(10)
+ ar_xp = xp.asarray(ar_np)
+ br_xp = xp.asarray(br_np)
+
+ xp_assert_equal(isclose(ar_xp, br_xp), xp.asarray(np.isclose(ar_np, br_np)))
+
+ @pytest.mark.parametrize("dtype", ["float32", "int32"])
+ def test_broadcast(self, dtype: str, xp: ModuleType):
+ dtype = getattr(xp, dtype)
+ a = xp.asarray([1, 2, 3], dtype=dtype)
+ b = xp.asarray([[1], [5]], dtype=dtype)
+ actual = isclose(a, b)
+ expect = xp.asarray(
+ [[True, False, False], [False, False, False]], dtype=xp.bool
+ )
+
+ xp_assert_equal(actual, expect)
+
+ def test_some_inf(self, xp: ModuleType):
+ a = xp.asarray([0.0, 1.0, xp.inf, xp.inf, xp.inf])
+ b = xp.asarray([1e-9, 1.0, xp.inf, -xp.inf, 2.0])
+ actual = isclose(a, b)
+ xp_assert_equal(actual, xp.asarray([True, True, True, False, False]))
+
+ def test_equal_nan(self, xp: ModuleType):
+ a = xp.asarray([xp.nan, xp.nan, 1.0])
+ b = xp.asarray([xp.nan, 1.0, xp.nan])
+ xp_assert_equal(isclose(a, b), xp.asarray([False, False, False]))
+ xp_assert_equal(isclose(a, b, equal_nan=True), xp.asarray([True, False, False]))
+
+ @pytest.mark.parametrize("dtype", ["float32", "complex64", "int32"])
+ def test_tolerance(self, dtype: str, xp: ModuleType):
+ dtype = getattr(xp, dtype)
+ a = xp.asarray([100, 100], dtype=dtype)
+ b = xp.asarray([101, 102], dtype=dtype)
+ xp_assert_equal(isclose(a, b), xp.asarray([False, False]))
+ xp_assert_equal(isclose(a, b, atol=1), xp.asarray([True, False]))
+ xp_assert_equal(isclose(a, b, rtol=0.01), xp.asarray([True, False]))
+
+ # Attempt to trigger division by 0 in rtol on int dtype
+ xp_assert_equal(isclose(a, b, rtol=0), xp.asarray([False, False]))
+ xp_assert_equal(isclose(a, b, atol=1, rtol=0), xp.asarray([True, False]))
+
+ @pytest.mark.parametrize("dtype", ["int8", "uint8"])
+ def test_tolerance_integer_overflow(self, dtype: str, xp: ModuleType):
+ """1/rtol is too large for dtype"""
+ a = xp.asarray([100, 100], dtype=getattr(xp, dtype))
+ b = xp.asarray([100, 101], dtype=getattr(xp, dtype))
+ xp_assert_equal(isclose(a, b), xp.asarray([True, False]))
+
+ def test_very_small_numbers(self, xp: ModuleType):
+ a = xp.asarray([1e-9, 1e-9])
+ b = xp.asarray([1.0001e-9, 1.00001e-9])
+ # Difference is below default atol
+ xp_assert_equal(isclose(a, b), xp.asarray([True, True]))
+ # Use only rtol
+ xp_assert_equal(isclose(a, b, atol=0), xp.asarray([False, True]))
+ xp_assert_equal(isclose(a, b, atol=0, rtol=0), xp.asarray([False, False]))
+
+ def test_bool_dtype(self, xp: ModuleType):
+ a = xp.asarray([False, True, False])
+ b = xp.asarray([True, True, False])
+ xp_assert_equal(isclose(a, b), xp.asarray([False, True, True]))
+ xp_assert_equal(isclose(a, b, atol=1), xp.asarray([True, True, True]))
+ xp_assert_equal(isclose(a, b, atol=2), xp.asarray([True, True, True]))
+ xp_assert_equal(isclose(a, b, rtol=1), xp.asarray([True, True, True]))
+ xp_assert_equal(isclose(a, b, rtol=2), xp.asarray([True, True, True]))
+
+ # Test broadcasting
+ xp_assert_equal(
+ isclose(a, xp.asarray(True), atol=1), xp.asarray([True, True, True])
+ )
+ xp_assert_equal(
+ isclose(xp.asarray(True), b, atol=1), xp.asarray([True, True, True])
+ )
+
+ @pytest.mark.skip_xp_backend(Backend.SPARSE, reason="index by sparse array")
+ @pytest.mark.skip_xp_backend(Backend.ARRAY_API_STRICTEST, reason="unknown shape")
+ def test_none_shape(self, xp: ModuleType):
+ a = xp.asarray([1, 5, 0])
+ b = xp.asarray([1, 4, 2])
+ b = b[a < 5]
+ a = a[a < 5]
+ xp_assert_equal(isclose(a, b), xp.asarray([True, False]))
+
+ @pytest.mark.skip_xp_backend(Backend.SPARSE, reason="index by sparse array")
+ @pytest.mark.skip_xp_backend(Backend.ARRAY_API_STRICTEST, reason="unknown shape")
+ def test_none_shape_bool(self, xp: ModuleType):
+ a = xp.asarray([True, True, False])
+ b = xp.asarray([True, False, True])
+ b = b[a]
+ a = a[a]
+ xp_assert_equal(isclose(a, b), xp.asarray([True, False]))
+
+ @pytest.mark.skip_xp_backend(Backend.NUMPY_READONLY, reason="xp=xp")
+ def test_python_scalar(self, xp: ModuleType):
+ a = xp.asarray([0.0, 0.1], dtype=xp.float32)
+ xp_assert_equal(isclose(a, 0.0), xp.asarray([True, False]))
+ xp_assert_equal(isclose(0.0, a), xp.asarray([True, False]))
+
+ a = xp.asarray([0, 1], dtype=xp.int16)
+ xp_assert_equal(isclose(a, 0), xp.asarray([True, False]))
+ xp_assert_equal(isclose(0, a), xp.asarray([True, False]))
+
+ xp_assert_equal(isclose(0, 0, xp=xp), xp.asarray(True))
+ xp_assert_equal(isclose(0, 1, xp=xp), xp.asarray(False))
+
+ def test_all_python_scalars(self):
+ with pytest.raises(TypeError, match="Unrecognized"):
+ _ = isclose(0, 0)
+
+ def test_xp(self, xp: ModuleType):
+ a = xp.asarray([0.0, 0.0])
+ b = xp.asarray([1e-9, 1e-4])
+ xp_assert_equal(isclose(a, b, xp=xp), xp.asarray([True, False]))
+
+ @pytest.mark.parametrize("equal_nan", [True, False])
+ def test_device(self, xp: ModuleType, device: Device, equal_nan: bool):
+ a = xp.asarray([0.0, 0.0, xp.nan], device=device)
+ b = xp.asarray([1e-9, 1e-4, xp.nan], device=device)
+ res = isclose(a, b, equal_nan=equal_nan)
+ assert get_device(res) == device
+
+
class TestKron:
def test_basic(self, xp: ModuleType):
# Using 0-dimensional array
a = xp.asarray(1)
b = xp.asarray([[1, 2], [3, 4]])
- k = xp.asarray([[1, 2], [3, 4]])
- xp_assert_equal(kron(a, b), k)
- a = xp.asarray([[1, 2], [3, 4]])
- b = xp.asarray(1)
- xp_assert_equal(kron(a, b), k)
+ xp_assert_equal(kron(a, b), b)
+ xp_assert_equal(kron(b, a), b)
# Using 1-dimensional array
a = xp.asarray([3])
b = xp.asarray([[1, 2], [3, 4]])
k = xp.asarray([[3, 6], [9, 12]])
xp_assert_equal(kron(a, b), k)
- a = xp.asarray([[1, 2], [3, 4]])
- b = xp.asarray([3])
- xp_assert_equal(kron(a, b), k)
+ xp_assert_equal(kron(b, a), k)
# Using 3-dimensional array
a = xp.asarray([[[1]], [[2]]])
b = xp.asarray([[1, 2], [3, 4]])
k = xp.asarray([[[1, 2], [3, 4]], [[2, 4], [6, 8]]])
xp_assert_equal(kron(a, b), k)
- a = xp.asarray([[1, 2], [3, 4]])
- b = xp.asarray([[[1]], [[2]]])
- k = xp.asarray([[[1, 2], [3, 4]], [[2, 4], [6, 8]]])
- xp_assert_equal(kron(a, b), k)
+ xp_assert_equal(kron(b, a), k)
def test_kron_smoke(self, xp: ModuleType):
a = xp.ones((3, 3))
@@ -318,6 +917,18 @@ def test_kron_shape(
k = kron(a, b)
assert k.shape == expected_shape
+ def test_python_scalar(self, xp: ModuleType):
+ a = 1
+ # Test no dtype promotion to xp.asarray(a); use b.dtype
+ b = xp.asarray([[1, 2], [3, 4]], dtype=xp.int16)
+ xp_assert_equal(kron(a, b), b)
+ xp_assert_equal(kron(b, a), b)
+ xp_assert_equal(kron(1, 1, xp=xp), xp.asarray(1))
+
+ def test_all_python_scalars(self):
+ with pytest.raises(TypeError, match="Unrecognized"):
+ _ = kron(1, 1)
+
def test_device(self, xp: ModuleType, device: Device):
x1 = xp.asarray([1, 2, 3], device=device)
x2 = xp.asarray([4, 5], device=device)
@@ -330,12 +941,119 @@ def test_xp(self, xp: ModuleType):
xp_assert_equal(kron(a, b, xp=xp), k)
-@pytest.mark.skip_xp_backend(Backend.DASK_ARRAY, reason="no argsort")
-@pytest.mark.skip_xp_backend(Backend.SPARSE, reason="no device")
+class TestNUnique:
+ def test_simple(self, xp: ModuleType):
+ a = xp.asarray([[1, 1], [0, 2], [2, 2]])
+ xp_assert_equal(nunique(a), xp.asarray(3))
+
+ def test_empty(self, xp: ModuleType):
+ a = xp.asarray([])
+ xp_assert_equal(nunique(a), xp.asarray(0))
+
+ def test_size1(self, xp: ModuleType):
+ a = xp.asarray([123])
+ xp_assert_equal(nunique(a), xp.asarray(1))
+
+ def test_all_equal(self, xp: ModuleType):
+ a = xp.asarray([123, 123, 123])
+ xp_assert_equal(nunique(a), xp.asarray(1))
+
+ @pytest.mark.xfail_xp_backend(Backend.DASK, reason="No equal_nan kwarg in unique")
+ @pytest.mark.xfail_xp_backend(Backend.SPARSE, reason="sparse#855")
+ def test_nan(self, xp: ModuleType, library: Backend):
+ if library.like(Backend.NUMPY) and NUMPY_VERSION < (1, 24):
+ pytest.xfail("NumPy <1.24 has no equal_nan kwarg in unique")
+
+ # Each NaN is counted separately
+ a = xp.asarray([xp.nan, 123.0, xp.nan])
+ xp_assert_equal(nunique(a), xp.asarray(3))
+
+ @pytest.mark.parametrize("size", [0, 1, 2])
+ def test_device(self, xp: ModuleType, device: Device, size: int):
+ a = xp.asarray([0.0] * size, device=device)
+ assert get_device(nunique(a)) == device
+
+ def test_xp(self, xp: ModuleType):
+ a = xp.asarray([[1, 1], [0, 2], [2, 2]])
+ xp_assert_equal(nunique(a, xp=xp), xp.asarray(3))
+
+
+class TestPad:
+ def test_simple(self, xp: ModuleType):
+ a = xp.asarray([1, 2, 3])
+ padded = pad(a, 2)
+ xp_assert_equal(padded, xp.asarray([0, 0, 1, 2, 3, 0, 0]))
+
+ @pytest.mark.xfail_xp_backend(
+ Backend.SPARSE, reason="constant_values can only be equal to fill value"
+ )
+ def test_fill_value(self, xp: ModuleType):
+ a = xp.asarray([1, 2, 3])
+ padded = pad(a, 2, constant_values=42)
+ xp_assert_equal(padded, xp.asarray([42, 42, 1, 2, 3, 42, 42]))
+
+ def test_ndim(self, xp: ModuleType):
+ a = xp.asarray(np.reshape(np.arange(2 * 3 * 4), (2, 3, 4)))
+ padded = pad(a, 2)
+ assert padded.shape == (6, 7, 8)
+
+ def test_mode_not_implemented(self, xp: ModuleType):
+ a = xp.asarray([1, 2, 3])
+ with pytest.raises(NotImplementedError, match="Only `'constant'`"):
+ _ = pad(a, 2, mode="edge") # type: ignore[arg-type] # pyright: ignore[reportArgumentType]
+
+ def test_device(self, xp: ModuleType, device: Device):
+ a = xp.asarray(0.0, device=device)
+ assert get_device(pad(a, 2)) == device
+
+ def test_xp(self, xp: ModuleType):
+ padded = pad(xp.asarray(0), 1, xp=xp)
+ xp_assert_equal(padded, xp.asarray(0))
+
+ def test_tuple_width(self, xp: ModuleType):
+ a = xp.asarray(np.reshape(np.arange(12), (3, 4)))
+ padded = pad(a, (1, 0))
+ assert padded.shape == (4, 5)
+
+ padded = pad(a, (1, 2))
+ assert padded.shape == (6, 7)
+
+ with pytest.raises((ValueError, RuntimeError)):
+ _ = pad(a, [(1, 2, 3)]) # type: ignore[list-item] # pyright: ignore[reportArgumentType]
+
+ def test_sequence_of_tuples_width(self, xp: ModuleType):
+ a = xp.asarray(np.reshape(np.arange(12), (3, 4)))
+
+ padded = pad(a, ((1, 0), (0, 2)))
+ assert padded.shape == (4, 6)
+ padded = pad(a, ((1, 0), (0, 0)))
+ assert padded.shape == (4, 4)
+
+
+assume_unique = pytest.mark.parametrize(
+ "assume_unique",
+ [
+ True,
+ pytest.param(
+ False,
+ marks=pytest.mark.xfail_xp_backend(
+ Backend.DASK, reason="NaN-shaped arrays"
+ ),
+ ),
+ ],
+)
+
+
+@pytest.mark.xfail_xp_backend(Backend.SPARSE, reason="no argsort")
+@pytest.mark.skip_xp_backend(Backend.ARRAY_API_STRICTEST, reason="no unique_values")
class TestSetDiff1D:
- @pytest.mark.skip_xp_backend(
+ @pytest.mark.xfail_xp_backend(Backend.DASK, reason="NaN-shaped arrays")
+ @pytest.mark.xfail_xp_backend(
Backend.TORCH, reason="index_select not implemented for uint32"
)
+ @pytest.mark.xfail_xp_backend(
+ Backend.TORCH_GPU, reason="index_select not implemented for uint32"
+ )
def test_setdiff1d(self, xp: ModuleType):
x1 = xp.asarray([6, 5, 4, 7, 1, 2, 7, 4])
x2 = xp.asarray([2, 4, 3, 3, 2, 1, 5])
@@ -362,37 +1080,80 @@ def test_assume_unique(self, xp: ModuleType):
actual = setdiff1d(x1, x2, assume_unique=True)
xp_assert_equal(actual, expected)
- def test_device(self, xp: ModuleType, device: Device):
+ @assume_unique
+ @pytest.mark.parametrize("shape1", [(), (1,), (1, 1)])
+ @pytest.mark.parametrize("shape2", [(), (1,), (1, 1)])
+ def test_shapes(
+ self,
+ assume_unique: bool,
+ shape1: tuple[int, ...],
+ shape2: tuple[int, ...],
+ xp: ModuleType,
+ ):
+ x1 = xp.zeros(shape1)
+ x2 = xp.zeros(shape2)
+ actual = setdiff1d(x1, x2, assume_unique=assume_unique)
+ xp_assert_equal(actual, xp.empty((0,)))
+
+ @assume_unique
+ @pytest.mark.skip_xp_backend(Backend.NUMPY_READONLY, reason="xp=xp")
+ def test_python_scalar(self, xp: ModuleType, assume_unique: bool):
+ # Test no dtype promotion to xp.asarray(x2); use x1.dtype
+ x1 = xp.asarray([3, 1, 2], dtype=xp.int16)
+ x2 = 3
+ actual = setdiff1d(x1, x2, assume_unique=assume_unique)
+ xp_assert_equal(actual, xp.asarray([1, 2], dtype=xp.int16))
+
+ actual = setdiff1d(x2, x1, assume_unique=assume_unique)
+ xp_assert_equal(actual, xp.asarray([], dtype=xp.int16))
+
+ xp_assert_equal(
+ setdiff1d(0, 0, assume_unique=assume_unique, xp=xp),
+ xp.asarray([0])[:0], # Default int dtype for backend
+ )
+
+ @pytest.mark.parametrize("assume_unique", [True, False])
+ def test_all_python_scalars(self, assume_unique: bool):
+ with pytest.raises(TypeError, match="Unrecognized"):
+ _ = setdiff1d(0, 0, assume_unique=assume_unique)
+
+ @assume_unique
+ @pytest.mark.skip_xp_backend(
+ Backend.TORCH, reason="device='meta' does not support unknown shapes"
+ )
+ def test_device(self, xp: ModuleType, device: Device, assume_unique: bool):
x1 = xp.asarray([3, 8, 20], device=device)
x2 = xp.asarray([2, 3, 4], device=device)
- assert get_device(setdiff1d(x1, x2)) == device
+ assert get_device(setdiff1d(x1, x2, assume_unique=assume_unique)) == device
- @pytest.mark.skip_xp_backend(Backend.NUMPY_READONLY)
+ @pytest.mark.skip_xp_backend(Backend.NUMPY_READONLY, reason="xp=xp")
def test_xp(self, xp: ModuleType):
x1 = xp.asarray([3, 8, 20])
x2 = xp.asarray([2, 3, 4])
expected = xp.asarray([8, 20])
- actual = setdiff1d(x1, x2, xp=xp)
+ actual = setdiff1d(x1, x2, assume_unique=True, xp=xp)
xp_assert_equal(actual, expected)
-@pytest.mark.skip_xp_backend(Backend.SPARSE, reason="no isdtype")
class TestSinc:
def test_simple(self, xp: ModuleType):
xp_assert_equal(sinc(xp.asarray(0.0)), xp.asarray(1.0))
- w = sinc(xp.linspace(-1, 1, 100))
+ x = xp.asarray(np.linspace(-1, 1, 100))
+ w = sinc(x)
# check symmetry
xp_assert_close(w, xp.flip(w, axis=0))
@pytest.mark.parametrize("x", [0, 1 + 3j])
def test_dtype(self, xp: ModuleType, x: int | complex):
with pytest.raises(ValueError, match="real floating data type"):
- sinc(xp.asarray(x))
+ _ = sinc(xp.asarray(x))
def test_3d(self, xp: ModuleType):
- x = xp.reshape(xp.arange(18, dtype=xp.float64), (3, 3, 2))
- expected = xp.zeros((3, 3, 2), dtype=xp.float64)
- expected = at(expected)[0, 0, 0].set(1.0)
+ x = np.arange(18, dtype=np.float64).reshape((3, 3, 2))
+ expected = np.zeros_like(x)
+ expected[0, 0, 0] = 1
+ x = xp.asarray(x)
+ expected = xp.asarray(expected)
xp_assert_close(sinc(x), expected, atol=1e-15)
def test_device(self, xp: ModuleType, device: Device):
@@ -401,71 +1162,3 @@ def test_device(self, xp: ModuleType, device: Device):
def test_xp(self, xp: ModuleType):
xp_assert_equal(sinc(xp.asarray(0.0), xp=xp), xp.asarray(1.0))
-
-
-@pytest.mark.skip_xp_backend(Backend.SPARSE, reason="no arange, no device")
-class TestPad:
- def test_simple(self, xp: ModuleType):
- a = xp.arange(1, 4)
- padded = pad(a, 2)
- xp_assert_equal(padded, xp.asarray([0, 0, 1, 2, 3, 0, 0]))
-
- def test_fill_value(self, xp: ModuleType):
- a = xp.arange(1, 4)
- padded = pad(a, 2, constant_values=42)
- xp_assert_equal(padded, xp.asarray([42, 42, 1, 2, 3, 42, 42]))
-
- def test_ndim(self, xp: ModuleType):
- a = xp.reshape(xp.arange(2 * 3 * 4), (2, 3, 4))
- padded = pad(a, 2)
- assert padded.shape == (6, 7, 8)
-
- def test_mode_not_implemented(self, xp: ModuleType):
- a = xp.arange(3)
- with pytest.raises(NotImplementedError, match="Only `'constant'`"):
- pad(a, 2, mode="edge") # type: ignore[arg-type] # pyright: ignore[reportArgumentType]
-
- def test_device(self, xp: ModuleType, device: Device):
- a = xp.asarray(0.0, device=device)
- assert get_device(pad(a, 2)) == device
-
- def test_xp(self, xp: ModuleType):
- padded = pad(xp.asarray(0), 1, xp=xp)
- xp_assert_equal(padded, xp.asarray(0))
-
- def test_tuple_width(self, xp: ModuleType):
- a = xp.reshape(xp.arange(12), (3, 4))
- padded = pad(a, (1, 0))
- assert padded.shape == (4, 5)
-
- padded = pad(a, (1, 2))
- assert padded.shape == (6, 7)
-
- with pytest.raises((ValueError, RuntimeError)):
- pad(a, [(1, 2, 3)]) # type: ignore[list-item] # pyright: ignore[reportArgumentType]
-
- def test_list_of_tuples_width(self, xp: ModuleType):
- a = xp.reshape(xp.arange(12), (3, 4))
- padded = pad(a, [(1, 0), (0, 2)])
- assert padded.shape == (4, 6)
-
- padded = pad(a, [(1, 0), (0, 0)])
- assert padded.shape == (4, 4)
-
-
-class TestNUnique:
- def test_simple(self, xp: ModuleType):
- a = xp.asarray([[1, 1], [0, 2], [2, 2]])
- xp_assert_equal(nunique(a), xp.asarray(3))
-
- def test_empty(self, xp: ModuleType):
- a = xp.asarray([])
- xp_assert_equal(nunique(a), xp.asarray(0))
-
- def test_device(self, xp: ModuleType, device: Device):
- a = xp.asarray(0.0, device=device)
- assert get_device(nunique(a)) == device
-
- def test_xp(self, xp: ModuleType):
- a = xp.asarray([[1, 1], [0, 2], [2, 2]])
- xp_assert_equal(nunique(a, xp=xp), xp.asarray(3))
diff --git a/tests/test_helpers.py b/tests/test_helpers.py
new file mode 100644
index 00000000..43ad5dc7
--- /dev/null
+++ b/tests/test_helpers.py
@@ -0,0 +1,419 @@
+from types import ModuleType
+from typing import TYPE_CHECKING, Generic, TypeVar, cast
+
+import numpy as np
+import pytest
+
+from array_api_extra._lib._backends import Backend
+from array_api_extra._lib._testing import xp_assert_equal
+from array_api_extra._lib._utils._compat import array_namespace
+from array_api_extra._lib._utils._compat import device as get_device
+from array_api_extra._lib._utils._helpers import (
+ asarrays,
+ capabilities,
+ eager_shape,
+ in1d,
+ jax_autojit,
+ meta_namespace,
+ ndindex,
+ pickle_flatten,
+ pickle_unflatten,
+)
+from array_api_extra._lib._utils._typing import Array, Device, DType
+from array_api_extra.testing import lazy_xp_function
+
+from .conftest import np_compat
+
+if TYPE_CHECKING: # pragma: no cover
+ # TODO import from typing (requires Python >=3.12)
+ from typing_extensions import override
+else:
+
+ def override(func):
+ return func
+
+
+T = TypeVar("T")
+
+# FIXME calls xp.unique_values without size
+lazy_xp_function(in1d, jax_jit=False)
+
+
+@pytest.mark.xfail_xp_backend(Backend.SPARSE, reason="no unique_inverse")
+@pytest.mark.skip_xp_backend(Backend.ARRAY_API_STRICTEST, reason="no unique_inverse")
+class TestIn1D:
+ # cover both code paths
+ @pytest.mark.parametrize(
+ "n",
+ [
+ pytest.param(9, id="fast path"),
+ pytest.param(
+ 15,
+ id="slow path",
+ marks=pytest.mark.xfail_xp_backend(
+ Backend.DASK, reason="NaN-shaped array"
+ ),
+ ),
+ ],
+ )
+ def test_no_invert_assume_unique(self, xp: ModuleType, n: int):
+ x1 = xp.asarray([3, 8, 20])
+ x2 = xp.arange(n)
+ expected = xp.asarray([True, True, False])
+ actual = in1d(x1, x2)
+ xp_assert_equal(actual, expected)
+
+ def test_device(self, xp: ModuleType, device: Device):
+ x1 = xp.asarray([3, 8, 20], device=device)
+ x2 = xp.asarray([2, 3, 4], device=device)
+ assert get_device(in1d(x1, x2)) == device
+
+ @pytest.mark.skip_xp_backend(Backend.NUMPY_READONLY, reason="xp=xp")
+ def test_xp(self, xp: ModuleType):
+ x1 = xp.asarray([1, 6])
+ x2 = xp.asarray([0, 1, 2, 3, 4])
+ expected = xp.asarray([True, False])
+ actual = in1d(x1, x2, xp=xp)
+ xp_assert_equal(actual, expected)
+
+
+class TestAsArrays:
+ @pytest.mark.parametrize(
+ ("dtype", "b", "defined"),
+ [
+ # Well-defined cases of dtype promotion from Python scalar to Array
+ # bool vs. bool
+ ("bool", True, True),
+ # int vs. xp.*int*, xp.float*, xp.complex*
+ ("int16", 1, True),
+ ("uint8", 1, True),
+ ("float32", 1, True),
+ ("float64", 1, True),
+ ("complex64", 1, True),
+ ("complex128", 1, True),
+ # float vs. xp.float, xp.complex
+ ("float32", 1.0, True),
+ ("float64", 1.0, True),
+ ("complex64", 1.0, True),
+ ("complex128", 1.0, True),
+ # complex vs. xp.complex
+ ("complex64", 1.0j, True),
+ ("complex128", 1.0j, True),
+ # Undefined cases
+ ("bool", 1, False),
+ ("int64", 1.0, False),
+ ("float64", 1.0j, False),
+ ],
+ )
+ def test_array_vs_scalar(
+ self, dtype: str, b: complex, defined: bool, xp: ModuleType
+ ):
+ a = xp.asarray(1, dtype=getattr(xp, dtype))
+
+ xa, xb = asarrays(a, b, xp)
+ assert xa.dtype == a.dtype
+ if defined:
+ assert xb.dtype == a.dtype
+ else:
+ assert xb.dtype == xp.asarray(b).dtype
+
+ xbr, xar = asarrays(b, a, xp)
+ assert xar.dtype == xa.dtype
+ assert xbr.dtype == xb.dtype
+
+ def test_scalar_vs_scalar(self, xp: ModuleType):
+ a, b = asarrays(1, 2.2, xp=xp)
+ assert a.dtype == xp.asarray(1).dtype # Default dtype
+ assert b.dtype == xp.asarray(2.2).dtype # Default dtype; not broadcasted
+
+ ALL_TYPES: tuple[str, ...] = (
+ "int8",
+ "int16",
+ "int32",
+ "int64",
+ "uint8",
+ "uint16",
+ "uint32",
+ "uint64",
+ "float32",
+ "float64",
+ "complex64",
+ "complex128",
+ "bool",
+ )
+
+ @pytest.mark.parametrize("a_type", ALL_TYPES)
+ @pytest.mark.parametrize("b_type", ALL_TYPES)
+ def test_array_vs_array(self, a_type: str, b_type: str, xp: ModuleType):
+ """
+ Test that when both inputs of asarray are already Array API objects,
+ they are returned unchanged.
+ """
+ a = xp.asarray(1, dtype=getattr(xp, a_type))
+ b = xp.asarray(1, dtype=getattr(xp, b_type))
+ xa, xb = asarrays(a, b, xp)
+ assert xa.dtype == a.dtype
+ assert xb.dtype == b.dtype
+
+ @pytest.mark.parametrize("dtype", [np.float64, np.complex128])
+ def test_numpy_generics(self, dtype: DType):
+ """
+ Test special case of np.float64 and np.complex128,
+ which are subclasses of float and complex.
+ """
+ a = cast(Array, dtype(0)) # type: ignore[operator] # pyright: ignore[reportCallIssue]
+ xa, xb = asarrays(a, 0, xp=np_compat)
+ assert xa.dtype == dtype
+ assert xb.dtype == dtype
+
+
+@pytest.mark.parametrize(
+ "shape", [(), (1,), (5,), (2, 3), (5, 3, 8), (0,), (3, 0), (0, 0, 1)]
+)
+def test_ndindex(shape: tuple[int, ...]):
+ assert tuple(ndindex(*shape)) == tuple(np.ndindex(*shape))
+
+
+@pytest.mark.skip_xp_backend(Backend.SPARSE, reason="index by sparse array")
+@pytest.mark.skip_xp_backend(Backend.ARRAY_API_STRICTEST, reason="boolean indexing")
+def test_eager_shape(xp: ModuleType, library: Backend):
+ a = xp.asarray([1, 2, 3])
+ # Lazy arrays, like Dask, have an eager shape until you slice them with
+ # a lazy boolean mask
+ assert eager_shape(a) == a.shape == (3,)
+
+ b = a[a > 2]
+ if library is Backend.DASK:
+ with pytest.raises(TypeError, match="Unsupported lazy shape"):
+ _ = eager_shape(b)
+ # FIXME can't test use case for None in the shape until we add support for
+ # other lazy backends
+ else:
+ assert eager_shape(b) == b.shape == (1,)
+
+
+class TestMetaNamespace:
+ @pytest.mark.skip_xp_backend(Backend.NUMPY_READONLY, reason="namespace tests")
+ def test_basic(self, xp: ModuleType, library: Backend):
+ args = None, xp.asarray(0), 1
+ expect = np_compat if library is Backend.DASK else xp
+ assert meta_namespace(*args) is expect
+
+ def test_dask_metas(self, da: ModuleType):
+ cp = pytest.importorskip("cupy")
+ cp_compat = array_namespace(cp.empty(0))
+ args = None, da.from_array(cp.asarray(0)), 1
+ assert meta_namespace(*args) is cp_compat
+
+ def test_xp(self, xp: ModuleType):
+ args = None, xp.asarray(0), 1
+ assert meta_namespace(*args, xp=xp) in (xp, np_compat)
+
+
+class TestCapabilities:
+ def test_basic(self, xp: ModuleType):
+ expect = {"boolean indexing", "data-dependent shapes"}
+ if xp.__array_api_version__ >= "2024.12":
+ expect.add("max dimensions")
+ assert capabilities(xp).keys() == expect
+
+ def test_device(self, xp: ModuleType, library: Backend, device: Device):
+ expect_keys = {"boolean indexing", "data-dependent shapes"}
+ if xp.__array_api_version__ >= "2024.12":
+ expect_keys.add("max dimensions")
+ assert capabilities(xp, device=device).keys() == expect_keys
+
+ if library.like(Backend.TORCH):
+ # The output of capabilities is device-specific.
+
+ # Test that device=None gets the current default device.
+ expect = capabilities(xp, device=device)
+ with xp.device(device):
+ actual = capabilities(xp)
+ assert actual == expect
+
+ # Test that we're accepting anything that is accepted by the
+ # device= parameter in other functions
+ actual = capabilities(xp, device=device.type) # type: ignore[attr-defined] # pyright: ignore[reportUnknownArgumentType,reportAttributeAccessIssue]
+
+
+class Wrapper(Generic[T]):
+ """Trivial opaque wrapper. Must be pickleable."""
+
+ x: T
+ # __slots__ make this object serializable with __reduce_ex__(5),
+ # but not with __reduce__
+ __slots__: tuple[str, ...] = ("x",)
+
+ def __init__(self, x: T):
+ self.x = x
+
+ # Note: this makes the object not hashable
+ @override
+ def __eq__(self, other: object) -> bool:
+ return isinstance(other, Wrapper) and self.x == other.x
+
+
+class TestPickleFlatten:
+ def test_roundtrip(self):
+ class NotSerializable:
+ @override
+ def __reduce__(self) -> tuple[object, ...]:
+ raise NotImplementedError()
+
+ # Note: NotHashable() instances can be reduced to an
+ # unserializable local class
+ class NotHashable:
+ @override
+ def __eq__(self, other: object) -> bool:
+ return isinstance(other, type(self)) and other.__dict__ == self.__dict__
+
+ with pytest.raises(TypeError):
+ _ = hash(NotHashable())
+
+ # Extracted objects need be neither pickleable nor serializable
+ class C(NotSerializable, NotHashable):
+ x: int
+
+ def __init__(self, x: int):
+ self.x = x
+
+ class D(C):
+ pass
+
+ c1 = C(1)
+ c2 = C(2)
+ d3 = D(3)
+
+ # An assorted bunch of opaque containers, standard containers,
+ # non-serializable objects, and non-hashable objects (but not at the same time)
+ obj = Wrapper([1, c1, {2: (c2, {NotSerializable()})}, NotHashable(), d3])
+ instances, rest = pickle_flatten(obj, C)
+
+ assert instances == [c1, c2, d3]
+ obj2 = pickle_unflatten(instances, rest)
+ assert obj2 == obj
+
+ def test_swap_objects(self):
+ class C:
+ pass
+
+ obj = [1, C(), {2: (C(), {C()})}]
+ _, rest = pickle_flatten(obj, C)
+ obj2 = pickle_unflatten(["foo", "bar", "baz"], rest)
+ assert obj2 == [1, "foo", {2: ("bar", {"baz"})}]
+
+ def test_multi_class(self):
+ class C:
+ pass
+
+ class D:
+ pass
+
+ c, d = C(), D()
+ instances, _ = pickle_flatten([c, d], (C, D))
+ assert len(instances) == 2
+ assert instances[0] is c
+ assert instances[1] is d
+
+ def test_no_class(self):
+ obj = {1: "foo", 2: (3, 4)}
+ instances, rest = pickle_flatten(obj, ()) # type: ignore[var-annotated]
+ assert instances == []
+ obj2 = pickle_unflatten([], rest)
+ assert obj2 == obj
+
+ def test_flattened_stream(self):
+ """
+ Test that multiple calls to flatten() can feed into the same stream of instances
+ """
+ obj1 = Wrapper(1)
+ obj2 = [Wrapper(2), Wrapper(3)]
+ instances1, rest1 = pickle_flatten(obj1, Wrapper)
+ instances2, rest2 = pickle_flatten(obj2, Wrapper)
+ it = iter(instances1 + instances2 + [Wrapper(4)]) # pyright: ignore[reportUnknownArgumentType]
+ assert pickle_unflatten(it, rest1) == obj1 # pyright: ignore[reportUnknownArgumentType]
+ assert pickle_unflatten(it, rest2) == obj2 # pyright: ignore[reportUnknownArgumentType]
+ assert list(it) == [Wrapper(4)] # pyright: ignore[reportUnknownArgumentType]
+
+ def test_too_short(self):
+ obj = [Wrapper(1), Wrapper(2)]
+ instances, rest = pickle_flatten(obj, Wrapper)
+ with pytest.raises(ValueError, match="Not enough"):
+ pickle_unflatten(instances[:1], rest) # pyright: ignore[reportUnknownArgumentType]
+
+ def test_recursion(self):
+ obj: list[object] = [Wrapper(1)]
+ obj.append(obj)
+
+ instances, rest = pickle_flatten(obj, Wrapper)
+ assert instances == [Wrapper(1)]
+
+ obj2 = pickle_unflatten(instances, rest) # pyright: ignore[reportUnknownArgumentType]
+ assert len(obj2) == 2
+ assert obj2[0] is obj[0]
+ assert obj2[1] is obj2
+
+
+class TestJAXAutoJIT:
+ def test_basic(self, jnp: ModuleType):
+ @jax_autojit
+ def f(x: Array, k: object = False) -> Array:
+ return x + 1 if k else x - 1
+
+ # Basic recognition of static_argnames
+ xp_assert_equal(f(jnp.asarray([1, 2])), jnp.asarray([0, 1]))
+ xp_assert_equal(f(jnp.asarray([1, 2]), False), jnp.asarray([0, 1]))
+ xp_assert_equal(f(jnp.asarray([1, 2]), True), jnp.asarray([2, 3]))
+ xp_assert_equal(f(jnp.asarray([1, 2]), 1), jnp.asarray([2, 3]))
+
+ # static argument is not an ArrayLike
+ xp_assert_equal(f(jnp.asarray([1, 2]), "foo"), jnp.asarray([2, 3]))
+
+ # static argument is not hashable, but serializable
+ xp_assert_equal(f(jnp.asarray([1, 2]), ["foo"]), jnp.asarray([2, 3]))
+
+ def test_wrapper(self, jnp: ModuleType):
+ @jax_autojit
+ def f(w: Wrapper[Array]) -> Wrapper[Array]:
+ return Wrapper(w.x + 1)
+
+ inp = Wrapper(jnp.asarray([1, 2]))
+ out = f(inp).x
+ xp_assert_equal(out, jnp.asarray([2, 3]))
+
+ def test_static_hashable(self, jnp: ModuleType):
+ """Static argument/return value is hashable, but not serializable"""
+
+ class C:
+ def __reduce__(self) -> object: # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride,reportImplicitOverride]
+ raise Exception()
+
+ @jax_autojit
+ def f(x: object) -> object:
+ return x
+
+ inp = C()
+ out = f(inp)
+ assert out is inp
+
+ # Serializable opaque input contains non-serializable object plus array
+ winp = Wrapper((C(), jnp.asarray([1, 2])))
+ out = f(winp)
+ assert isinstance(out, Wrapper)
+ assert out.x[0] is winp.x[0]
+ assert out.x[1] is not winp.x[1]
+ xp_assert_equal(out.x[1], winp.x[1]) # pyright: ignore[reportUnknownArgumentType]
+
+ def test_arraylikes_are_static(self):
+ pytest.importorskip("jax")
+
+ @jax_autojit
+ def f(x: list[int]) -> list[int]:
+ assert isinstance(x, list)
+ assert x == [1, 2]
+ return [3, 4]
+
+ out = f([1, 2])
+ assert isinstance(out, list)
+ assert out == [3, 4]
diff --git a/tests/test_lazy.py b/tests/test_lazy.py
new file mode 100644
index 00000000..056d608b
--- /dev/null
+++ b/tests/test_lazy.py
@@ -0,0 +1,454 @@
+import contextlib
+from types import ModuleType
+from typing import cast
+
+import numpy as np
+import pytest
+
+import array_api_extra as xpx # Let some tests bypass lazy_xp_function
+from array_api_extra import lazy_apply
+from array_api_extra._lib._backends import Backend
+from array_api_extra._lib._testing import xp_assert_equal
+from array_api_extra._lib._utils import _compat
+from array_api_extra._lib._utils._compat import array_namespace, is_dask_array
+from array_api_extra._lib._utils._helpers import eager_shape
+from array_api_extra._lib._utils._typing import Array, Device
+from array_api_extra.testing import lazy_xp_function
+
+lazy_xp_function(lazy_apply)
+
+as_numpy = pytest.mark.parametrize(
+ "as_numpy",
+ [
+ False,
+ pytest.param(
+ True,
+ marks=[
+ pytest.mark.skip_xp_backend(Backend.CUPY, reason="device->host copy"),
+ pytest.mark.skip_xp_backend(
+ Backend.TORCH_GPU, reason="device->host copy"
+ ),
+ pytest.mark.skip_xp_backend(Backend.SPARSE, reason="densification"),
+ ],
+ ),
+ ],
+)
+
+
+@as_numpy
+@pytest.mark.parametrize("shape", [(2,), (3, 2)])
+@pytest.mark.parametrize("dtype", ["int32", "float64"])
+def test_lazy_apply_simple(
+ xp: ModuleType, library: Backend, shape: tuple[int, ...], dtype: str, as_numpy: bool
+):
+ def f(x: Array) -> Array:
+ xp2 = array_namespace(x)
+ if as_numpy or library in (Backend.NUMPY_READONLY, Backend.DASK):
+ assert isinstance(x, np.ndarray)
+ else:
+ assert xp2 is xp
+
+ y = xp2.broadcast_to(xp2.astype(x + 1, getattr(xp2, dtype)), shape)
+ return xp2.asarray(y, copy=True) # PyTorch: ensure writeable NumPy array
+
+ x = xp.asarray([1, 2], dtype=xp.int16)
+ expect = xp.broadcast_to(xp.astype(x + 1, getattr(xp, dtype)), shape)
+ actual = lazy_apply(f, x, shape=shape, dtype=getattr(xp, dtype), as_numpy=as_numpy)
+ xp_assert_equal(actual, expect)
+
+
+@as_numpy
+def test_lazy_apply_broadcast(xp: ModuleType, as_numpy: bool):
+ """Test that default shape and dtype are broadcasted from the inputs."""
+
+ def f(x: Array, y: Array) -> Array:
+ return x + y
+
+ x = xp.asarray([1, 2], dtype=xp.int16)
+ y = xp.asarray([[4], [5], [6]], dtype=xp.int32)
+ z = lazy_apply(f, x, y, as_numpy=as_numpy)
+ xp_assert_equal(z, x + y)
+
+
+@as_numpy
+def test_lazy_apply_multi_output(xp: ModuleType, as_numpy: bool):
+ def f(x: Array) -> tuple[Array, Array]:
+ xp2 = array_namespace(x)
+ y = x + xp2.asarray(2, dtype=xp2.int8) # Sparse: bad dtype propagation
+ z = xp2.broadcast_to(xp2.astype(x + 1, xp2.int16), (3, 2))
+ z = xp2.asarray(z, copy=True) # PyTorch: ensure writeable NumPy array
+ return y, z
+
+ x = xp.asarray([1, 2], dtype=xp.int8)
+ expect = (
+ xp.asarray([3, 4], dtype=xp.int8),
+ xp.asarray([[2, 3], [2, 3], [2, 3]], dtype=xp.int16),
+ )
+ actual = lazy_apply(
+ f, x, shape=((2,), (3, 2)), dtype=(xp.int8, xp.int16), as_numpy=as_numpy
+ )
+ assert isinstance(actual, tuple)
+ assert len(actual) == 2
+ xp_assert_equal(actual[0], expect[0])
+ xp_assert_equal(actual[1], expect[1])
+
+
+@pytest.mark.parametrize(
+ "as_numpy",
+ [
+ False,
+ pytest.param(
+ True,
+ marks=[
+ pytest.mark.skip_xp_backend(Backend.CUPY, reason="device->host copy"),
+ pytest.mark.skip_xp_backend(
+ Backend.TORCH_GPU, reason="device->host copy"
+ ),
+ pytest.mark.skip_xp_backend(Backend.SPARSE, reason="densification"),
+ ],
+ ),
+ ],
+)
+def test_lazy_apply_multi_output_broadcast_dtype(xp: ModuleType, as_numpy: bool):
+ """
+ If dtype is omitted and there are multiple shapes, use the same
+ dtype for all output arrays, broadcasted from the inputs
+ """
+
+ def f(x: Array, y: Array) -> tuple[Array, Array]:
+ return x + y, x - y
+
+ x = xp.asarray([1, 2], dtype=xp.float32)
+ y = xp.asarray([3], dtype=xp.float64)
+ expect = (
+ xp.asarray([4, 5], dtype=xp.float64),
+ xp.asarray([-2, -1], dtype=xp.float64),
+ )
+ actual = lazy_apply(f, x, y, shape=((2,), (2,)), as_numpy=as_numpy)
+ assert isinstance(actual, tuple)
+ assert len(actual) == 2
+ xp_assert_equal(actual[0], expect[0])
+ xp_assert_equal(actual[1], expect[1])
+
+
+def test_lazy_apply_core_indices(da: ModuleType):
+ """
+ Test that a function that performs reductions along axes does so
+ globally and not locally to each Dask chunk.
+ """
+
+ def f(x: Array) -> Array:
+ xp = array_namespace(x)
+ return xp.sum(x, axis=0) + x
+
+ x_np = cast(Array, np.arange(15).reshape(5, 3)) # pyright: ignore[reportInvalidCast]
+ expect = da.asarray(f(x_np))
+ x_da = da.asarray(x_np).rechunk(3)
+
+ # A naive map_blocks fails because it applies f to each chunk separately,
+ # but f needs to reduce along axis 0 which is broken into multiple chunks.
+ # axis 0 is a "core axis" or "core index" (from xarray.apply_ufunc's
+ # "core dimension").
+ with pytest.raises(AssertionError):
+ xp_assert_equal(da.map_blocks(f, x_da), expect)
+
+ xp_assert_equal(lazy_apply(f, x_da), expect)
+
+
+def test_lazy_apply_dont_run_on_meta(da: ModuleType):
+ """Test that Dask won't try running func on the meta array,
+ as it may have minimum size requirements.
+ """
+
+ def f(x: Array) -> Array:
+ assert x.size
+ return x + 1
+
+ x = da.arange(10)
+ assert not x._meta.size
+ y = lazy_apply(f, x)
+ xp_assert_equal(y, x + 1)
+
+
+def test_lazy_apply_dask_non_numpy_meta(da: ModuleType):
+ """Test Dask wrapping around a meta-namespace other than numpy."""
+ # At the moment of writing, of all Array API namespaces CuPy is
+ # the only one that Dask supports.
+ # For this reason, we can only test as_numpy=False since
+ # np.asarray(cp.Array) is blocked by the transfer guard.
+
+ cp = pytest.importorskip("cupy")
+ cp = array_namespace(cp.empty(0))
+ x_cp = cp.asarray([1, 2, 3])
+ x_da = da.asarray([1, 2, 3]).map_blocks(cp.asarray)
+ assert array_namespace(x_da._meta) is cp
+
+ def f(x: Array) -> Array:
+ return x + 1
+
+ y = lazy_apply(f, x_da)
+ assert array_namespace(y._meta) is cp # type: ignore[attr-defined] # pyright: ignore[reportUnknownArgumentType,reportAttributeAccessIssue]
+ xp_assert_equal(y.compute(), x_cp + 1) # type: ignore[attr-defined] # pyright: ignore[reportUnknownArgumentType,reportAttributeAccessIssue]
+
+
+def test_dask_key(da: ModuleType):
+ """Test that the function name is visible on the Dask dashboard and in metrics."""
+
+ def helloworld(x: Array) -> Array:
+ return x + 1
+
+ x = da.asarray([1, 2])
+ # Use full namespace to bypass monkey-patching by lazy_xp_function,
+ # which calls persist() to materialize exceptions and warnings and in
+ # doing so squashes the graph.
+ y = xpx.lazy_apply(helloworld, x)
+
+ prefixes = set()
+ for key in y.__dask_graph__(): # type: ignore[attr-defined] # pyright: ignore[reportAttributeAccessIssue]
+ name = key[0] if isinstance(key, tuple) else key
+ assert isinstance(name, str)
+ prefixes.add(name.split("-")[0])
+
+ assert "helloworld" in prefixes
+
+
+def test_lazy_apply_none_shape_in_args(xp: ModuleType, library: Backend):
+ x = xp.asarray([1, 1, 2, 2, 2])
+
+ # TODO mxp = meta_namespace(x, xp=xp)
+ mxp = np if library is Backend.DASK else xp
+ int_type = xp.asarray(0).dtype
+
+ ctx: contextlib.AbstractContextManager[object]
+ if library.like(Backend.JAX):
+ ctx = pytest.raises(ValueError, match="Output shape must be fully known")
+ elif library is Backend.ARRAY_API_STRICTEST:
+ ctx = pytest.raises(RuntimeError, match="data-dependent shapes")
+ else:
+ ctx = contextlib.nullcontext()
+
+ # Single output
+ with ctx:
+ values = lazy_apply(mxp.unique_values, x, shape=(None,))
+ xp_assert_equal(xp.sort(values), xp.asarray([1, 2]))
+
+ with ctx:
+ # Multi output
+ values, counts = lazy_apply(
+ mxp.unique_counts,
+ x,
+ shape=((None,), (None,)),
+ dtype=(x.dtype, int_type),
+ )
+ xp_assert_equal(values, xp.asarray([1, 2]))
+ xp_assert_equal(counts, xp.asarray([2, 3]))
+
+
+def check_lazy_apply_none_shape_broadcast(x: Array) -> Array:
+ def f(x: Array) -> Array:
+ return x
+
+ x = x[x > 1]
+ # Use explicit namespace to bypass monkey-patching by lazy_xp_function
+ return xpx.lazy_apply(f, x)
+
+
+lazy_xp_function(check_lazy_apply_none_shape_broadcast)
+
+
+@pytest.mark.skip_xp_backend(Backend.SPARSE, reason="index by sparse array")
+@pytest.mark.skip_xp_backend(Backend.JAX, reason="boolean indexing")
+@pytest.mark.skip_xp_backend(Backend.JAX_GPU, reason="boolean indexing")
+@pytest.mark.skip_xp_backend(Backend.ARRAY_API_STRICTEST, reason="boolean indexing")
+def test_lazy_apply_none_shape_broadcast(xp: ModuleType):
+ """Broadcast from input array with unknown shape"""
+ x = xp.asarray([1, 2, 2])
+ actual = check_lazy_apply_none_shape_broadcast(x)
+ xp_assert_equal(actual, xp.asarray([2, 2]))
+
+
+@pytest.mark.parametrize(
+ "as_numpy",
+ [
+ False,
+ pytest.param(
+ True,
+ marks=[
+ pytest.mark.skip_xp_backend(
+ Backend.ARRAY_API_STRICT, reason="device->host copy"
+ ),
+ pytest.mark.skip_xp_backend(Backend.CUPY, reason="device->host copy"),
+ pytest.mark.skip_xp_backend(
+ Backend.TORCH, reason="materialize 'meta' device"
+ ),
+ pytest.mark.skip_xp_backend(
+ Backend.TORCH_GPU, reason="device->host copy"
+ ),
+ pytest.mark.skip_xp_backend(Backend.SPARSE, reason="densification"),
+ ],
+ ),
+ ],
+)
+def test_lazy_apply_device(xp: ModuleType, as_numpy: bool, device: Device):
+ def f(x: Array) -> Array:
+ xp2 = array_namespace(x)
+ # Deliberately forgetting to add device here to test that the
+ # output is transferred to the right device. This is necessary when
+ # as_numpy=True anyway.
+ return xp2.zeros(x.shape, dtype=x.dtype)
+
+ x = xp.asarray([1, 2], device=device)
+ y = lazy_apply(f, x, as_numpy=as_numpy)
+ assert _compat.device(y) == device
+
+
+def test_lazy_apply_arraylike(xp: ModuleType):
+ """Wrapped func returns an array-like"""
+ x = xp.asarray([1, 2, 3])
+
+ # Single output
+ def f(x: Array) -> int:
+ shape = eager_shape(x)
+ return shape[0]
+
+ expect = xp.asarray(3)
+ actual = lazy_apply(f, x, shape=(), dtype=expect.dtype)
+ xp_assert_equal(actual, expect)
+
+ # Multi output
+ def g(x: Array) -> tuple[int, list[int]]:
+ shape = eager_shape(x)
+ return shape[0], list(shape)
+
+ actual2 = lazy_apply(g, x, shape=((), (1,)), dtype=(expect.dtype, expect.dtype))
+ xp_assert_equal(actual2[0], xp.asarray(3))
+ xp_assert_equal(actual2[1], xp.asarray([3]))
+
+
+def test_lazy_apply_scalars_and_nones(xp: ModuleType, library: Backend):
+ def f(x: Array, y: None, z: int | Array) -> Array:
+ mxp = array_namespace(x, y, z)
+ mtyp = type(mxp.asarray(0))
+ assert isinstance(x, mtyp)
+ assert y is None
+ # jax.pure_callback wraps scalar args
+ assert isinstance(z, mtyp if library.like(Backend.JAX) else int)
+ return x + z
+
+ x = xp.asarray([1, 2])
+ w = lazy_apply(f, x, None, 3)
+ xp_assert_equal(w, x + 3)
+
+
+def check_lazy_apply_kwargs(x: Array, expect_cls: type, as_numpy: bool) -> Array:
+ is_dask = is_dask_array(x)
+ recursive: list[object] = []
+ if not is_dask: # dask.delayed crashes on recursion
+ recursive.append(recursive)
+
+ def eager(
+ x: Array,
+ z: dict[int, list[int]],
+ msg: str,
+ msgs: list[str],
+ scalar: int,
+ recursive: list[list[object]],
+ ) -> Array:
+ assert isinstance(x, expect_cls)
+ # JAX will crash if x isn't material
+ assert int(x) == 0
+ # Did we re-wrap the namedtuple correctly, or did it get
+ # accidentally changed to a basic tuple?
+ assert z == {0: [1, 2]}
+ assert msg == "Hello World" # must be hidden from JAX
+ assert msgs[0] == "Hello World" # must be hidden from JAX
+ assert isinstance(msg, str)
+ assert isinstance(msgs[0], str)
+ assert scalar == 1 # must be hidden from JAX
+ assert isinstance(scalar, int)
+ assert isinstance(recursive, list)
+ if not is_dask:
+ assert recursive[0][0] is recursive[0]
+ return x + 1
+
+ # Use explicit namespace to bypass monkey-patching by lazy_xp_function
+ return xpx.lazy_apply( # pyright: ignore[reportCallIssue]
+ eager,
+ x,
+ z={0: [1, 2]},
+ msg="Hello World",
+ msgs=["Hello World"],
+ # This will be automatically cast to jax.Array if we don't wrap it
+ scalar=1,
+ recursive=recursive,
+ shape=x.shape,
+ dtype=x.dtype,
+ as_numpy=as_numpy,
+ )
+
+
+lazy_xp_function(check_lazy_apply_kwargs)
+
+
+@as_numpy
+def test_lazy_apply_kwargs(xp: ModuleType, library: Backend, as_numpy: bool):
+ """When as_numpy=True, search and replace arrays in the (nested) keywords arguments
+ with numpy arrays, and leave the rest untouched."""
+ x = xp.asarray(0)
+ expect_cls = np.ndarray if as_numpy or library is Backend.DASK else type(x)
+ actual = check_lazy_apply_kwargs(x, expect_cls, as_numpy) # pyright: ignore[reportUnknownArgumentType]
+ xp_assert_equal(actual, x + 1)
+
+
+class CustomError(Exception):
+ pass
+
+
+def raises(x: Array) -> Array:
+ def eager(_: Array) -> Array:
+ msg = "Hello World"
+ raise CustomError(msg)
+
+ # Use explicit namespace to bypass monkey-patching by lazy_xp_function
+ return xpx.lazy_apply(eager, x, shape=x.shape, dtype=x.dtype)
+
+
+# jax.pure_callback does not support raising
+# https://github.com/jax-ml/jax/issues/26102
+lazy_xp_function(raises, jax_jit=False)
+
+
+def test_lazy_apply_raises(xp: ModuleType):
+ """
+ See Also
+ --------
+ test_testing.py::test_lazy_xp_function_eagerly_raises
+ """
+ x = xp.asarray(0)
+
+ with pytest.raises(CustomError, match="Hello World"):
+ # Here we are disregarding the return value, which would
+ # normally cause the graph not to materialize and the
+ # exception not to be raised.
+ # However, lazy_xp_function will do it for us on function exit.
+ _ = raises(x)
+
+
+def test_invalid_args():
+ def f(x: Array) -> Array:
+ return x
+
+ x = np.asarray(1)
+
+ with pytest.raises(ValueError, match="at least one argument array"):
+ _ = lazy_apply(f, shape=(1,), dtype=np.int32, xp=np)
+ with pytest.raises(ValueError, match="at least one argument array"):
+ _ = lazy_apply(f, 1, shape=(1,), dtype=np.int32, xp=np)
+ with pytest.raises(ValueError, match="at least one argument array"):
+ _ = lazy_apply(f, shape=(1,), dtype=np.int32)
+ with pytest.raises(ValueError, match="multiple shapes but only one dtype"):
+ _ = lazy_apply(f, x, shape=[(1,), (2,)], dtype=np.int32) # type: ignore[call-overload] # pyright: ignore[reportCallIssue,reportArgumentType]
+ with pytest.raises(ValueError, match="single shape but multiple dtypes"):
+ _ = lazy_apply(f, x, shape=(1,), dtype=[np.int32, np.int64]) # pyright: ignore[reportCallIssue,reportArgumentType]
+ with pytest.raises(ValueError, match="2 shapes and 1 dtypes"):
+ _ = lazy_apply(f, x, shape=[(1,), (2,)], dtype=[np.int32]) # type: ignore[arg-type] # pyright: ignore[reportCallIssue,reportArgumentType]
diff --git a/tests/test_testing.py b/tests/test_testing.py
index 2dbc913a..7eda3fb6 100644
--- a/tests/test_testing.py
+++ b/tests/test_testing.py
@@ -1,67 +1,470 @@
+from collections.abc import Callable
+from types import ModuleType
+from typing import cast
+
import numpy as np
import pytest
-from array_api_extra._lib import Backend
-from array_api_extra._lib._testing import xp_assert_close, xp_assert_equal
+from array_api_extra._lib._backends import Backend
+from array_api_extra._lib._testing import (
+ as_numpy_array,
+ xp_assert_close,
+ xp_assert_equal,
+ xp_assert_less,
+)
+from array_api_extra._lib._utils._compat import (
+ array_namespace,
+ is_dask_namespace,
+ is_jax_namespace,
+)
+from array_api_extra._lib._utils._typing import Array, Device
+from array_api_extra.testing import lazy_xp_function, patch_lazy_xp_functions
-# mypy: disable-error-code=no-any-decorated
# pyright: reportUnknownParameterType=false,reportMissingParameterType=false
-@pytest.mark.parametrize(
- "func",
- [
- xp_assert_equal,
- pytest.param(
- xp_assert_close,
- marks=pytest.mark.skip_xp_backend(Backend.SPARSE, reason="no isdtype"),
- ),
- ],
-)
-def test_assert_close_equal_basic(xp, func):
- func(xp.asarray(0), xp.asarray(0))
- func(xp.asarray([1, 2]), xp.asarray([1, 2]))
-
- with pytest.raises(AssertionError, match="shapes do not match"):
- func(xp.asarray([0]), xp.asarray([[0]]))
-
- with pytest.raises(AssertionError, match="dtypes do not match"):
- func(xp.asarray(0, dtype=xp.float32), xp.asarray(0, dtype=xp.float64))
-
- with pytest.raises(AssertionError):
- func(xp.asarray([1, 2]), xp.asarray([1, 3]))
-
- with pytest.raises(AssertionError, match="hello"):
- func(xp.asarray([1, 2]), xp.asarray([1, 3]), err_msg="hello")
-
-
-@pytest.mark.skip_xp_backend(Backend.NUMPY)
-@pytest.mark.skip_xp_backend(Backend.NUMPY_READONLY)
-@pytest.mark.parametrize(
- "func",
- [
- xp_assert_equal,
- pytest.param(
- xp_assert_close,
- marks=pytest.mark.skip_xp_backend(Backend.SPARSE, reason="no isdtype"),
- ),
- ],
-)
-def test_assert_close_equal_namespace(xp, func):
- with pytest.raises(AssertionError):
- func(xp.asarray(0), np.asarray(0))
- with pytest.raises(TypeError):
- func(xp.asarray(0), 0)
- with pytest.raises(TypeError):
- func(xp.asarray([0]), [0])
-
-
-@pytest.mark.skip_xp_backend(Backend.SPARSE, reason="no isdtype")
-def test_assert_close_tolerance(xp):
- xp_assert_close(xp.asarray([100.0]), xp.asarray([102.0]), rtol=0.03)
- with pytest.raises(AssertionError):
- xp_assert_close(xp.asarray([100.0]), xp.asarray([102.0]), rtol=0.01)
-
- xp_assert_close(xp.asarray([100.0]), xp.asarray([102.0]), atol=3)
- with pytest.raises(AssertionError):
- xp_assert_close(xp.asarray([100.0]), xp.asarray([102.0]), atol=1)
+class TestAsNumPyArray:
+ def test_basic(self, xp: ModuleType):
+ x = xp.asarray([1, 2, 3])
+ y = as_numpy_array(x, xp=xp)
+ xp_assert_equal(y, np.asarray([1, 2, 3])) # type: ignore[arg-type] # pyright: ignore[reportArgumentType]
+
+ @pytest.mark.skip_xp_backend(Backend.TORCH, reason="materialize 'meta' device")
+ def test_device(self, xp: ModuleType, device: Device):
+ x = xp.asarray([1, 2, 3], device=device)
+ y = as_numpy_array(x, xp=xp)
+ xp_assert_equal(y, np.asarray([1, 2, 3])) # type: ignore[arg-type] # pyright: ignore[reportArgumentType]
+
+
+class TestAssertEqualCloseLess:
+ @pytest.mark.parametrize("func", [xp_assert_equal, xp_assert_close])
+ def test_assert_equal_close_basic(self, xp: ModuleType, func: Callable[..., None]):
+ func(xp.asarray(0), xp.asarray(0))
+ func(xp.asarray([1, 2]), xp.asarray([1, 2]))
+
+ with pytest.raises(AssertionError, match="Mismatched elements"):
+ func(xp.asarray([1, 2]), xp.asarray([2, 1]))
+
+ with pytest.raises(AssertionError, match="hello"):
+ func(xp.asarray([1, 2]), xp.asarray([2, 1]), err_msg="hello")
+
+ @pytest.mark.parametrize("func", [xp_assert_equal, xp_assert_close, xp_assert_less])
+ def test_shape_dtype(self, xp: ModuleType, func: Callable[..., None]):
+ with pytest.raises(AssertionError, match="shapes do not match"):
+ func(xp.asarray([0]), xp.asarray([[0]]))
+
+ with pytest.raises(AssertionError, match="dtypes do not match"):
+ func(xp.asarray(0, dtype=xp.float32), xp.asarray(0, dtype=xp.float64))
+
+ @pytest.mark.skip_xp_backend(Backend.NUMPY, reason="test other ns vs. numpy")
+ @pytest.mark.skip_xp_backend(
+ Backend.NUMPY_READONLY, reason="test other ns vs. numpy"
+ )
+ @pytest.mark.parametrize("func", [xp_assert_equal, xp_assert_close, xp_assert_less])
+ def test_namespace(self, xp: ModuleType, func: Callable[..., None]):
+ with pytest.raises(AssertionError, match="namespaces do not match"):
+ func(xp.asarray(0), np.asarray(0))
+ with pytest.raises(TypeError, match="Unrecognized array input"):
+ func(xp.asarray(0), 0)
+ with pytest.raises(TypeError, match="list is not a supported array type"):
+ func(xp.asarray([0]), [0])
+
+ @pytest.mark.parametrize("func", [xp_assert_equal, xp_assert_close, xp_assert_less])
+ def test_check_shape(self, xp: ModuleType, func: Callable[..., None]):
+ a = xp.asarray([1] if func is xp_assert_less else [2])
+ b = xp.asarray(2)
+ c = xp.asarray(0)
+ d = xp.asarray([2, 2])
+
+ with pytest.raises(AssertionError, match="shapes do not match"):
+ func(a, b)
+ func(a, b, check_shape=False)
+ with pytest.raises(AssertionError, match="Mismatched elements"):
+ func(a, c, check_shape=False)
+ with pytest.raises(AssertionError, match="sizes do not match"):
+ func(a, d, check_shape=False)
+
+ @pytest.mark.parametrize("func", [xp_assert_equal, xp_assert_close, xp_assert_less])
+ def test_check_dtype(self, xp: ModuleType, func: Callable[..., None]):
+ a = xp.asarray(1 if func is xp_assert_less else 2)
+ b = xp.asarray(2, dtype=xp.int16)
+ c = xp.asarray(0, dtype=xp.int16)
+
+ with pytest.raises(AssertionError, match="dtypes do not match"):
+ func(a, b)
+ func(a, b, check_dtype=False)
+ with pytest.raises(AssertionError, match="Mismatched elements"):
+ func(a, c, check_dtype=False)
+
+ @pytest.mark.parametrize("func", [xp_assert_equal, xp_assert_close, xp_assert_less])
+ @pytest.mark.xfail_xp_backend(
+ Backend.SPARSE, reason="sparse [()] returns np.generic"
+ )
+ def test_check_scalar(
+ self, xp: ModuleType, library: Backend, func: Callable[..., None]
+ ):
+ a = xp.asarray(1 if func is xp_assert_less else 2)
+ b = xp.asarray(2)[()] # Note: only makes a difference on NumPy
+ c = xp.asarray(0)
+
+ func(a, b)
+ if library.like(Backend.NUMPY):
+ with pytest.raises(AssertionError, match="array-ness does not match"):
+ func(a, b, check_scalar=True)
+ else:
+ func(a, b, check_scalar=True)
+ with pytest.raises(AssertionError, match="Mismatched elements"):
+ func(a, c, check_scalar=True)
+
+ @pytest.mark.parametrize("dtype", ["int64", "float64"])
+ def test_assert_close_tolerance(self, dtype: str, xp: ModuleType):
+ a = xp.asarray([100], dtype=getattr(xp, dtype))
+ b = xp.asarray([102], dtype=getattr(xp, dtype))
+
+ with pytest.raises(AssertionError, match="Mismatched elements"):
+ xp_assert_close(a, b)
+
+ xp_assert_close(a, b, rtol=0.03)
+ with pytest.raises(AssertionError, match="Mismatched elements"):
+ xp_assert_close(a, b, rtol=0.01)
+
+ xp_assert_close(a, b, atol=3)
+ with pytest.raises(AssertionError, match="Mismatched elements"):
+ xp_assert_close(a, b, atol=1)
+
+ def test_assert_less(self, xp: ModuleType):
+ xp_assert_less(xp.asarray(-1), xp.asarray(0))
+ xp_assert_less(xp.asarray([1, 2]), xp.asarray([2, 3]))
+ with pytest.raises(AssertionError, match="Mismatched elements"):
+ xp_assert_less(xp.asarray([1, 1]), xp.asarray([2, 1]))
+
+ @pytest.mark.parametrize("func", [xp_assert_equal, xp_assert_close, xp_assert_less])
+ @pytest.mark.skip_xp_backend(Backend.SPARSE, reason="index by sparse array")
+ @pytest.mark.skip_xp_backend(Backend.ARRAY_API_STRICTEST, reason="boolean indexing")
+ def test_none_shape(self, xp: ModuleType, func: Callable[..., None]):
+ """On Dask and other lazy backends, test that a shape with NaN's or None's
+ can be compared to a real shape.
+ """
+ # actual has shape=(None, )
+ a = xp.asarray([1] if func is xp_assert_less else [2])
+ a = a[a > 0]
+
+ func(a, xp.asarray([2]))
+ with pytest.raises(AssertionError, match="shapes do not match"):
+ func(a, xp.asarray(2))
+ with pytest.raises(AssertionError, match="shapes do not match"):
+ func(a, xp.asarray([2, 3]))
+ with pytest.raises(AssertionError, match="Mismatched elements"):
+ func(a, xp.asarray([0]))
+
+ # desired has shape=(None, )
+ a = xp.asarray([3] if func is xp_assert_less else [2])
+ a = a[a > 0]
+
+ func(xp.asarray([2]), a)
+ with pytest.raises(AssertionError, match="shapes do not match"):
+ func(xp.asarray(2), a)
+ with pytest.raises(AssertionError, match="shapes do not match"):
+ func(xp.asarray([2, 3]), a)
+ with pytest.raises(AssertionError, match="Mismatched elements"):
+ func(xp.asarray([4]), a)
+
+ @pytest.mark.parametrize("func", [xp_assert_equal, xp_assert_close, xp_assert_less])
+ def test_device(self, xp: ModuleType, device: Device, func: Callable[..., None]):
+ a = xp.asarray([1] if func is xp_assert_less else [2], device=device)
+ b = xp.asarray([2], device=device)
+ c = xp.asarray([2, 2], device=device)
+
+ func(a, b)
+ with pytest.raises(AssertionError, match="shapes do not match"):
+ func(a, c)
+ # This is normally performed by np.testing.assert_array_equal etc.
+ # but in case of torch device='meta' we have to do it manually
+ with pytest.raises(AssertionError, match="sizes do not match"):
+ func(a, c, check_shape=False)
+
+
+def good_lazy(x: Array) -> Array:
+ """A function that behaves well in Dask and jax.jit"""
+ return x * 2.0
+
+
+def non_materializable(x: Array) -> Array:
+ """
+ This function materializes the input array, so it will fail when wrapped in jax.jit
+ and it will trigger an expensive computation in Dask.
+ """
+ xp = array_namespace(x)
+ # Crashes inside jax.jit
+ # On Dask, this triggers two computations of the whole graph
+ if xp.any(x < 0.0) or xp.any(x > 10.0):
+ msg = "Values must be in the [0, 10] range"
+ raise ValueError(msg)
+ return x
+
+
+def non_materializable2(x: Array) -> Array:
+ return non_materializable(x)
+
+
+def non_materializable3(x: Array) -> Array:
+ return non_materializable(x)
+
+
+def non_materializable4(x: Array) -> Array:
+ return non_materializable(x)
+
+
+def non_materializable5(x: Array) -> Array:
+ return non_materializable(x)
+
+
+lazy_xp_function(good_lazy)
+# Works on JAX and Dask
+lazy_xp_function(non_materializable2, jax_jit=False, allow_dask_compute=2)
+lazy_xp_function(non_materializable3, jax_jit=False, allow_dask_compute=True)
+# Works on JAX, but not Dask
+lazy_xp_function(non_materializable4, jax_jit=False, allow_dask_compute=1)
+# Works neither on Dask nor JAX
+lazy_xp_function(non_materializable5)
+
+
+def test_lazy_xp_function(xp: ModuleType):
+ x = xp.asarray([1.0, 2.0])
+
+ xp_assert_equal(good_lazy(x), xp.asarray([2.0, 4.0]))
+ # Not wrapped
+ xp_assert_equal(non_materializable(x), xp.asarray([1.0, 2.0]))
+ # Wrapping explicitly disabled
+ xp_assert_equal(non_materializable2(x), xp.asarray([1.0, 2.0]))
+ xp_assert_equal(non_materializable3(x), xp.asarray([1.0, 2.0]))
+
+ if is_jax_namespace(xp):
+ xp_assert_equal(non_materializable4(x), xp.asarray([1.0, 2.0]))
+ with pytest.raises(
+ TypeError, match="Attempted boolean conversion of traced array"
+ ):
+ _ = non_materializable5(x) # Wrapped
+
+ elif is_dask_namespace(xp):
+ with pytest.raises(
+ AssertionError,
+ match=r"dask\.compute.* 2 times, but only up to 1 calls are allowed",
+ ):
+ _ = non_materializable4(x)
+ with pytest.raises(
+ AssertionError,
+ match=r"dask\.compute.* 1 times, but no calls are allowed",
+ ):
+ _ = non_materializable5(x)
+
+ else:
+ xp_assert_equal(non_materializable4(x), xp.asarray([1.0, 2.0]))
+ xp_assert_equal(non_materializable5(x), xp.asarray([1.0, 2.0]))
+
+
+def static_params(x: Array, n: int, flag: bool = False) -> Array:
+ """Function with static parameters that must not be jitted"""
+ if flag and n > 0: # This fails if n or flag are jitted arrays
+ return x * 2.0
+ return x * 3.0
+
+
+lazy_xp_function(static_params)
+
+
+def test_lazy_xp_function_static_params(xp: ModuleType):
+ x = xp.asarray([1.0, 2.0])
+ xp_assert_equal(static_params(x, 1), xp.asarray([3.0, 6.0]))
+ xp_assert_equal(static_params(x, 1, True), xp.asarray([2.0, 4.0]))
+ xp_assert_equal(static_params(x, 1, False), xp.asarray([3.0, 6.0]))
+ xp_assert_equal(static_params(x, 0, False), xp.asarray([3.0, 6.0]))
+ xp_assert_equal(static_params(x, 1, flag=True), xp.asarray([2.0, 4.0]))
+ xp_assert_equal(static_params(x, n=1, flag=True), xp.asarray([2.0, 4.0]))
+
+
+def test_lazy_xp_function_deprecated_static_argnames():
+ with pytest.warns(DeprecationWarning, match="static_argnames"):
+ lazy_xp_function(static_params, static_argnames=["flag"]) # type: ignore[arg-type] # pyright: ignore[reportArgumentType]
+ with pytest.warns(DeprecationWarning, match="static_argnums"):
+ lazy_xp_function(static_params, static_argnums=[1]) # type: ignore[arg-type] # pyright: ignore[reportArgumentType]
+
+
+try:
+ # Test an arbitrary Cython ufunc (@cython.vectorize).
+ # When SCIPY_ARRAY_API is not set, this is the same as
+ # scipy.special.erf.
+ from scipy.special._ufuncs import erf # type: ignore[import-untyped]
+
+ lazy_xp_function(erf) # pyright: ignore[reportUnknownArgumentType]
+except ImportError:
+ erf = None
+
+
+@pytest.mark.skip_xp_backend(Backend.TORCH_GPU, reason="device->host copy")
+@pytest.mark.filterwarnings("ignore:__array_wrap__:DeprecationWarning") # PyTorch
+def test_lazy_xp_function_cython_ufuncs(xp: ModuleType, library: Backend):
+ pytest.importorskip("scipy")
+ assert erf is not None
+ x = xp.asarray([6.0, 7.0])
+ if library.like(Backend.ARRAY_API_STRICT, Backend.JAX):
+ # array-api-strict arrays are auto-converted to NumPy
+ # which results in an assertion error for mismatched namespaces
+ # eager JAX arrays are auto-converted to NumPy in eager JAX
+ # and fail in jax.jit (which lazy_xp_function tests here)
+ with pytest.raises((TypeError, AssertionError)):
+ xp_assert_equal(cast(Array, erf(x)), xp.asarray([1.0, 1.0]))
+ else:
+ # CuPy, Dask and sparse define __array_ufunc__ and dispatch accordingly
+ # note that when sparse reduces to scalar it returns a np.generic, which
+ # would make xp_assert_equal fail.
+ xp_assert_equal(cast(Array, erf(x)), xp.asarray([1.0, 1.0]))
+
+
+def dask_raises(x: Array) -> Array:
+ def _raises(x: Array) -> Array:
+ # Test that map_blocks doesn't eagerly call the function;
+ # dtype and meta should be sufficient to skip the trial run.
+ assert x.shape == (3,)
+ msg = "Hello world"
+ raise ValueError(msg)
+
+ return x.map_blocks(_raises, dtype=x.dtype, meta=x._meta) # type: ignore[attr-defined] # pyright: ignore[reportAttributeAccessIssue]
+
+
+lazy_xp_function(dask_raises)
+
+
+def test_lazy_xp_function_eagerly_raises(da: ModuleType):
+ """Test that the pattern::
+
+ with pytest.raises(Exception):
+ func(x)
+
+ works with Dask, even though it normally wouldn't as we're disregarding the func
+ output so the graph would not be ordinarily materialized.
+ lazy_xp_function contains ad-hoc code to materialize and reraise exceptions.
+ """
+ x = da.arange(3)
+ with pytest.raises(ValueError, match="Hello world"):
+ _ = dask_raises(x)
+
+
+class Wrapper:
+ """Trivial opaque wrapper. Must be pickleable."""
+
+ x: Array
+
+ def __init__(self, x: Array):
+ self.x = x
+
+
+def check_opaque_wrapper(w: Wrapper, xp: ModuleType) -> Wrapper:
+ assert isinstance(w, Wrapper)
+ assert array_namespace(w.x) == xp
+ return Wrapper(w.x + 1)
+
+
+lazy_xp_function(check_opaque_wrapper)
+
+
+def test_lazy_xp_function_opaque_wrappers(xp: ModuleType):
+ """
+ Test that function input and output can be wrapped into arbitrary
+ serializable Python objects, even if jax.jit does not support them.
+ """
+ x = xp.asarray([1, 2])
+ xp2 = array_namespace(x) # Revert NUMPY_READONLY to array_api_compat.numpy
+ res = check_opaque_wrapper(Wrapper(x), xp2)
+ xp_assert_equal(res.x, xp.asarray([2, 3]))
+
+
+def test_lazy_xp_function_opaque_wrappers_eagerly_raise(da: ModuleType):
+ """
+ Like `test_lazy_xp_function_eagerly_raises`, but the returned object is
+ wrapped in an opaque wrapper.
+ """
+ x = da.arange(3)
+ with pytest.raises(ValueError, match="Hello world"):
+ _ = Wrapper(dask_raises(x))
+
+
+def check_recursive(x: list[object]) -> list[object]:
+ assert isinstance(x, list)
+ assert x[1] is x
+ y: list[object] = [cast(Array, x[0]) + 1]
+ y.append(y)
+ return y
+
+
+lazy_xp_function(check_recursive)
+
+
+def test_lazy_xp_function_recursive(xp: ModuleType):
+ """Test that inputs and outputs can be recursive data structures."""
+ x: list[object] = [xp.asarray([1, 2])]
+ x.append(x)
+ y = check_recursive(x)
+ assert isinstance(y, list)
+ xp_assert_equal(cast(Array, y[0]), xp.asarray([2, 3]))
+ assert y[1] is y
+
+
+wrapped = ModuleType("wrapped")
+naked = ModuleType("naked")
+
+
+def f(x: Array) -> Array:
+ xp = array_namespace(x)
+ # Crash in jax.jit and trigger compute() on Dask
+ if not xp.all(x):
+ msg = "Values must be non-zero"
+ raise ValueError(msg)
+ return x
+
+
+wrapped.f = f # type: ignore[attr-defined] # pyright: ignore[reportAttributeAccessIssue]
+naked.f = f # type: ignore[attr-defined] # pyright: ignore[reportAttributeAccessIssue]
+del f
+
+
+lazy_xp_function(wrapped.f)
+lazy_xp_modules = [wrapped]
+
+
+def test_lazy_xp_modules(xp: ModuleType, library: Backend):
+ x = xp.asarray([1.0, 2.0])
+ y = naked.f(x)
+ xp_assert_equal(y, x)
+
+ if library.like(Backend.JAX):
+ with pytest.raises(
+ TypeError, match="Attempted boolean conversion of traced array"
+ ):
+ wrapped.f(x)
+ elif library.like(Backend.DASK):
+ with pytest.raises(AssertionError, match=r"dask\.compute"):
+ wrapped.f(x)
+ else:
+ y = wrapped.f(x)
+ xp_assert_equal(y, x)
+
+
+def test_patch_lazy_xp_functions_deprecated_monkeypatch(
+ request: pytest.FixtureRequest, monkeypatch: pytest.MonkeyPatch
+):
+ xp = pytest.importorskip("dask.array")
+
+ x = xp.asarray([1.0, 2.0])
+ y = non_materializable5(x)
+ xp_assert_equal(y, x)
+
+ with pytest.warns(DeprecationWarning):
+ _ = patch_lazy_xp_functions(request, monkeypatch, xp=xp)
+
+ with pytest.raises(AssertionError, match=r"dask\.compute.* 1 times"):
+ _ = non_materializable5(x)
+
+ monkeypatch.undo()
+ y = non_materializable5(x)
+ xp_assert_equal(y, x)
diff --git a/tests/test_utils.py b/tests/test_utils.py
deleted file mode 100644
index 981d5c03..00000000
--- a/tests/test_utils.py
+++ /dev/null
@@ -1,39 +0,0 @@
-from types import ModuleType
-
-import pytest
-
-from array_api_extra._lib import Backend
-from array_api_extra._lib._testing import xp_assert_equal
-from array_api_extra._lib._utils._compat import device as get_device
-from array_api_extra._lib._utils._helpers import in1d
-from array_api_extra._lib._utils._typing import Device
-
-# mypy: disable-error-code=no-untyped-usage
-
-
-class TestIn1D:
- @pytest.mark.skip_xp_backend(Backend.DASK_ARRAY, reason="no argsort")
- @pytest.mark.skip_xp_backend(Backend.SPARSE, reason="no unique_inverse, no device")
- # cover both code paths
- @pytest.mark.parametrize("n", [9, 15])
- def test_no_invert_assume_unique(self, xp: ModuleType, n: int):
- x1 = xp.asarray([3, 8, 20])
- x2 = xp.arange(n)
- expected = xp.asarray([True, True, False])
- actual = in1d(x1, x2)
- xp_assert_equal(actual, expected)
-
- @pytest.mark.skip_xp_backend(Backend.SPARSE, reason="no device")
- def test_device(self, xp: ModuleType, device: Device):
- x1 = xp.asarray([3, 8, 20], device=device)
- x2 = xp.asarray([2, 3, 4], device=device)
- assert get_device(in1d(x1, x2)) == device
-
- @pytest.mark.skip_xp_backend(Backend.NUMPY_READONLY)
- @pytest.mark.skip_xp_backend(Backend.SPARSE, reason="no arange, no device")
- def test_xp(self, xp: ModuleType):
- x1 = xp.asarray([1, 6])
- x2 = xp.arange(5)
- expected = xp.asarray([True, False])
- actual = in1d(x1, x2, xp=xp)
- xp_assert_equal(actual, expected)
diff --git a/vendor_tests/test_vendor.py b/vendor_tests/test_vendor.py
index 38249378..374cba11 100644
--- a/vendor_tests/test_vendor.py
+++ b/vendor_tests/test_vendor.py
@@ -6,24 +6,43 @@ def test_vendor_compat():
from ._array_api_compat_vendor import ( # type: ignore[attr-defined]
array_namespace,
device,
+ is_array_api_obj,
+ is_array_api_strict_namespace,
+ is_cupy_array,
is_cupy_namespace,
+ is_dask_array,
is_dask_namespace,
is_jax_array,
is_jax_namespace,
+ is_lazy_array,
+ is_numpy_array,
+ is_numpy_namespace,
+ is_pydata_sparse_array,
is_pydata_sparse_namespace,
+ is_torch_array,
is_torch_namespace,
is_writeable_array,
size,
+ to_device,
)
x = xp.asarray([1, 2, 3])
assert array_namespace(x) is xp
- device(x)
+ to_device(x, device(x))
+ assert is_array_api_obj(x)
+ assert is_array_api_strict_namespace(xp)
+ assert not is_cupy_array(x)
assert not is_cupy_namespace(xp)
+ assert not is_dask_array(x)
assert not is_dask_namespace(xp)
assert not is_jax_array(x)
assert not is_jax_namespace(xp)
+ assert not is_lazy_array(x)
+ assert not is_numpy_array(x)
+ assert not is_numpy_namespace(xp)
+ assert not is_pydata_sparse_array(x)
assert not is_pydata_sparse_namespace(xp)
+ assert not is_torch_array(x)
assert not is_torch_namespace(xp)
assert is_writeable_array(x)
assert size(x) == 3
@@ -37,6 +56,15 @@ def test_vendor_extra():
assert_array_equal(y, x)
+def test_vendor_extra_testing():
+ from .array_api_extra.testing import lazy_xp_function
+
+ def f(x):
+ return x
+
+ lazy_xp_function(f)
+
+
def test_vendor_extra_uses_vendor_compat():
from ._array_api_compat_vendor import array_namespace as n1
from .array_api_extra._lib._utils._compat import array_namespace as n2