diff --git a/.all-contributorsrc b/.all-contributorsrc index eee250a4..5e5e6b0b 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -27,7 +27,8 @@ "tool", "test", "bug", - "platform" + "platform", + "review" ] }, { @@ -47,7 +48,8 @@ "profile": "https://github.com/j-bowhay", "contributions": [ "code", - "review" + "review", + "tool" ] }, { @@ -90,14 +92,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 +163,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", @@ -163,6 +182,63 @@ "contributions": [ "code" ] + }, + { + "login": "ev-br", + "name": "Evgeni Burovski", + "avatar_url": "https://avatars.githubusercontent.com/u/2133832?v=4", + "profile": "https://github.com/ev-br", + "contributions": [ + "code", + "doc" + ] + }, + { + "login": "jakevdp", + "name": "Jake Vanderplas", + "avatar_url": "https://avatars.githubusercontent.com/u/781659?v=4", + "profile": "http://www.vanderplas.com/", + "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" + ] } ] } 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/workflows/cd.yml b/.github/workflows/cd.yml index e00708a5..13411752 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@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1 with: name: Packages path: dist - name: Generate artifact attestation for sdist and wheel - uses: actions/attest-build-provenance@v1.4.4 + uses: actions/attest-build-provenance@c074443f1aee8d4aeeae555aebba3282517141b2 # v2.2.3 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 50952923..d030beff 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,19 +24,20 @@ 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@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0 with: - python-version: "3.x" - - uses: pre-commit/action@v3.0.1 + python-version: "3.13.2" + - 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@dbaed5efa0bd33d6bd6d162bec8a06d8fc43c807 # v0.8.5 with: - pixi-version: v0.37.0 + pixi-version: v0.42.1 cache: true + environments: lint - name: Run Pylint, Mypy & Pyright run: | pixi run -e lint pylint @@ -47,17 +51,17 @@ jobs: strategy: fail-fast: false matrix: - environment: [ci-py310, ci-py313] + environment: [tests-py310, tests-py313, tests-numpy1, tests-backends] 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@dbaed5efa0bd33d6bd6d162bec8a06d8fc43c807 # v0.8.5 with: - pixi-version: v0.37.0 + pixi-version: v0.42.1 cache: true environments: ${{ matrix.environment }} @@ -65,6 +69,6 @@ jobs: run: pixi run -e ${{ matrix.environment }} tests-ci - name: Upload coverage report - uses: codecov/codecov-action@v5.0.7 + uses: codecov/codecov-action@0565863a31f2c772f9f0395002a31e3f06189574 # v5.4.0 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 1cdf221e..edf949c7 100644 --- a/.github/workflows/docs-build.yml +++ b/.github/workflows/docs-build.yml @@ -1,20 +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@dbaed5efa0bd33d6bd6d162bec8a06d8fc43c807 # v0.8.5 with: - pixi-version: v0.37.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 5ba6577d..78a5ada1 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@v6 + uses: dawidd6/action-download-artifact@07ab29fd4a977ae4d2b275087cf67563dfdf0295 # v9 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/.gitignore b/.gitignore index eccba9dc..0b377833 100644 --- a/.gitignore +++ b/.gitignore @@ -114,9 +114,11 @@ ENV/ env.bak/ venv.bak/ -# Spyder project settings +# IDE project settings +.idea/ .spyderproject .spyproject +.vscode/ # Rope project settings .ropeproject @@ -160,3 +162,12 @@ Thumbs.db # pixi environments .pixi *.egg-info + +# Vendor tests +vendor_tests/array_api_compat/ +vendor_tests/array_api_extra/ + +# all-contributors +node_modules +package.json +yarn.lock diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 41beb381..7be7a1ca 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -12,7 +12,7 @@ repos: additional_dependencies: [black==24.*] - repo: https://github.com/pre-commit/pre-commit-hooks - rev: "v4.6.0" + rev: "v5.0.0" hooks: - id: check-added-large-files - id: check-case-conflict @@ -35,18 +35,18 @@ repos: - id: rst-inline-touching-normal - repo: https://github.com/rbubley/mirrors-prettier - rev: "v3.3.3" + rev: "v3.4.2" hooks: - id: prettier types_or: [yaml, markdown, html, css, scss, javascript, json] args: [--prose-wrap=always] - repo: https://github.com/astral-sh/ruff-pre-commit - rev: "v0.6.1" + rev: "v0.8.2" hooks: + - id: ruff-format - id: ruff args: ["--fix", "--show-fixes"] - - id: ruff-format - repo: https://github.com/codespell-project/codespell rev: "v2.3.0" @@ -68,13 +68,17 @@ repos: exclude: .pre-commit-config.yaml - repo: https://github.com/abravalheri/validate-pyproject - rev: "v0.19" + rev: "v0.23" hooks: - id: validate-pyproject additional_dependencies: ["validate-pyproject-schema-store[all]"] - repo: https://github.com/python-jsonschema/check-jsonschema - rev: "0.29.1" + rev: "0.30.0" hooks: - - id: check-dependabot - id: check-github-workflows + + - repo: https://github.com/numpy/numpydoc + rev: "v1.8.0" + hooks: + - id: numpydoc-validation diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index c3f99188..36d50b0d 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -9,16 +9,16 @@ This project exists thanks to the following contributors - + - + - + @@ -27,7 +27,16 @@ This project exists thanks to the following contributors + + + + + + + + +
Lucas Colley
Lucas Colley

πŸ’» πŸ“– πŸ’‘ πŸ€” πŸš‡ 🚧 πŸ”§ ⚠️ πŸ› πŸ“¦
Lucas Colley
Lucas Colley

πŸ’» πŸ“– πŸ’‘ πŸ€” πŸš‡ 🚧 πŸ”§ ⚠️ πŸ› πŸ“¦ πŸ‘€
Matt Haberland
Matt Haberland

πŸ’» πŸ€”
Jake Bowhay
Jake Bowhay

πŸ’» πŸ‘€
Jake Bowhay
Jake Bowhay

πŸ’» πŸ‘€ πŸ”§
Aaron Meurer
Aaron Meurer

πŸ‘€ πŸ€” πŸš‡
Tim Head
Tim Head

πŸ€”
Athan
Athan

πŸ‘€ πŸ€”
Carlos Ramos CarreΓ±o
Carlos Ramos CarreΓ±o

πŸ€”
Ralf Gommers
Ralf Gommers

πŸ€” πŸš‡ πŸ‘€
Guido Imperiale
Guido Imperiale

πŸ’» πŸ“– πŸ”§ ⚠️ πŸ’‘ πŸ› πŸ€” πŸ‘€ 🚧
Joren Hammudoglu
Joren Hammudoglu

πŸ‘€
Thomas J. Fan
Thomas J. Fan

πŸ€”
Irwin Zaid
Irwin Zaid

πŸ€”
Omar Salman
Omar Salman

πŸ’»
Ralf Gommers
Ralf Gommers

πŸ€” πŸš‡ πŸ‘€
Olivier Grisel
Olivier Grisel

πŸ’»
Evgeni Burovski
Evgeni Burovski

πŸ’» πŸ“–
Jake Vanderplas
Jake Vanderplas

πŸ‘€
kotlinisland
kotlinisland

πŸ‘€
detachhead
detachhead

πŸ‘€
Neil Girdhar
Neil Girdhar

πŸ’» ⚠️
Thomas Li
Thomas Li

πŸ› πŸ”§
diff --git a/README.md b/README.md index 35521b3f..3fe7e3eb 100644 --- a/README.md +++ b/README.md @@ -4,12 +4,14 @@ [![docs - here!][docs-badge]][docs-link] [![Pixi Badge](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/prefix-dev/pixi/main/assets/badge/v0.json)](https://pixi.sh) [![All Contributors](https://img.shields.io/github/all-contributors/data-apis/array-api-extra?color=ee8449&style=flat-square)](#contributors) -[![Scientific Python Ecosystem Coordination](https://img.shields.io/badge/SPEC-0-green?labelColor=%23004811&color=%235CA038)](https://scientific-python.org/specs/) +[![Typing](https://img.shields.io/pypi/types/array-api-extra)](https://typing.python.org/) [![codecov](https://codecov.io/github/data-apis/array-api-extra/graph/badge.svg)](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] +[![EffVer Versioning](https://img.shields.io/badge/version_scheme-EffVer-0097a7)](https://jacobtomlinson.dev/effver) +[![SPEC 8 β€” Securing the Release Process](https://img.shields.io/badge/SPEC-8-green?labelColor=%23004811&color=%235CA038)](https://scientific-python.org/specs/spec-0008/) @@ -32,9 +34,24 @@ 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 @@ -47,16 +64,16 @@ This project exists thanks to the following contributors - + - + - + @@ -65,7 +82,16 @@ This project exists thanks to the following contributors + + + + + + + + +
Lucas Colley
Lucas Colley

πŸ’» πŸ“– πŸ’‘ πŸ€” πŸš‡ 🚧 πŸ”§ ⚠️ πŸ› πŸ“¦
Lucas Colley
Lucas Colley

πŸ’» πŸ“– πŸ’‘ πŸ€” πŸš‡ 🚧 πŸ”§ ⚠️ πŸ› πŸ“¦ πŸ‘€
Matt Haberland
Matt Haberland

πŸ’» πŸ€”
Jake Bowhay
Jake Bowhay

πŸ’» πŸ‘€
Jake Bowhay
Jake Bowhay

πŸ’» πŸ‘€ πŸ”§
Aaron Meurer
Aaron Meurer

πŸ‘€ πŸ€” πŸš‡
Tim Head
Tim Head

πŸ€”
Athan
Athan

πŸ‘€ πŸ€”
Carlos Ramos CarreΓ±o
Carlos Ramos CarreΓ±o

πŸ€”
Ralf Gommers
Ralf Gommers

πŸ€” πŸš‡ πŸ‘€
Guido Imperiale
Guido Imperiale

πŸ’» πŸ“– πŸ”§ ⚠️ πŸ’‘ πŸ› πŸ€” πŸ‘€ 🚧
Joren Hammudoglu
Joren Hammudoglu

πŸ‘€
Thomas J. Fan
Thomas J. Fan

πŸ€”
Irwin Zaid
Irwin Zaid

πŸ€”
Omar Salman
Omar Salman

πŸ’»
Ralf Gommers
Ralf Gommers

πŸ€” πŸš‡ πŸ‘€
Olivier Grisel
Olivier Grisel

πŸ’»
Evgeni Burovski
Evgeni Burovski

πŸ’» πŸ“–
Jake Vanderplas
Jake Vanderplas

πŸ‘€
kotlinisland
kotlinisland

πŸ‘€
detachhead
detachhead

πŸ‘€
Neil Girdhar
Neil Girdhar

πŸ’» ⚠️
Thomas Li
Thomas Li

πŸ› πŸ”§
diff --git a/RELEASING.md b/RELEASING.md new file mode 100644 index 00000000..564fc682 --- /dev/null +++ b/RELEASING.md @@ -0,0 +1,8 @@ +1. Update the version in `src/array_api_extra/__init__.py` +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. `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 ffe68f24..ee33a819 100644 --- a/docs/api-reference.md +++ b/docs/api-reference.md @@ -6,11 +6,17 @@ :nosignatures: :toctree: generated + apply_where + at atleast_nd + broadcast_shapes cov create_diagonal expand_dims + isclose kron + nunique + pad setdiff1d sinc ``` diff --git a/docs/conf.py b/docs/conf.py index 5b2fdf05..e2cab35b 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -1,9 +1,11 @@ -from __future__ import annotations +"""Sphinx config.""" import importlib.metadata 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 = [ @@ -38,7 +40,7 @@ - """, + """, # noqa: E501 "class": "", }, ], @@ -53,6 +55,10 @@ 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), } nitpick_ignore = [ diff --git a/docs/contributing.md b/docs/contributing.md index b1f8b90d..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 @@ -43,13 +73,25 @@ pixi shell -e dev pixi run tests ``` +- To generate the coverage report: + +``` +pixi run coverage +``` + +- To generate and display the coverage report: + +``` +pixi run open-coverage +``` + - To build the docs locally: ``` pixi run docs ``` -- To open and preview the locally-built docs: +- To build and preview the docs locally: ``` pixi run open-docs @@ -64,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: @@ -76,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 @@ -88,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 11c29162..59615583 100644 --- a/docs/index.md +++ b/docs/index.md @@ -5,12 +5,14 @@ :hidden: self api-reference.md +api-lazy.md contributing.md contributors.md ``` This is a library housing "array-agnostic" implementations of functions built on -top of [the Python array API standard](https://data-apis.org/array-api/). +top of [the Python array API standard](https://data-apis.org/array-api/), as +well as delegation to existing implementations for known array library backends. The intended users of this library are "array-consuming" libraries which are using [array-api-compat](https://data-apis.org/array-api-compat/) to make their @@ -21,9 +23,11 @@ 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)= @@ -33,6 +37,8 @@ It is currently used by: [on PyPI](https://pypi.org/project/array-api-extra/): ```shell +uv add array-api-extra +# or python -m pip install array-api-extra ``` @@ -40,9 +46,9 @@ And [on conda-forge](https://prefix.dev/channels/conda-forge/packages/array-api-extra): ```shell -micromamba install -c https://repo.prefix.dev/conda-forge array-api-extra -# or pixi add array-api-extra +# or +mamba install array-api-extra ``` ```{warning} @@ -51,18 +57,75 @@ If you require stability, it is recommended to pin `array-api-extra` to a specific version, or vendor the library inside your own. ``` +```{note} +This library depends on `array-api-compat`. We aim for compatibility with +the latest released version of array-api-compat, and your mileage may vary +with older or dev versions. +``` + (vendoring)= ## Vendoring To vendor the library, clone -[the repository](https://github.com/data-apis/array-api-extra) and copy it into -the appropriate place in your library, like: +[the array-api-extra repository](https://github.com/data-apis/array-api-extra) +and copy it into the appropriate place in your library, like: + +``` +cp -a array-api-extra/src/array_api_extra mylib/vendored/ +``` + +You may either add a dependency to array-api-compat in your own project, or +vendor it too: + +1. Clone + [the array-api-compat repository](https://github.com/data-apis/array-api-compat) + and copy it next to your vendored array-api-extra: + + ``` + cp -a array-api-compat/array_api_compat mylib/vendored/ + ``` + +2. Create a new hook file which array-api-extra will use instead of the + top-level array-api-compat if present: + + ``` + echo 'from mylib.vendored.array_api_compat import *' > mylib/vendored/_array_api_compat_vendor.py + ``` +This also allows overriding array-api-compat functions if you so wish. E.g. your +`mylib/vendored/_array_api_compat_vendor.py` could look like this: + +```python +from mylib.vendored.array_api_compat import * +from mylib.vendored.array_api_compat import array_namespace as _array_namespace_orig + + +def array_namespace(*xs, **kwargs): + import mylib + + if any(isinstance(x, mylib.MyArray) for x in xs): + return mylib + else: + return _array_namespace_orig(*xs, **kwargs) ``` -cp -R array-api-extra/ mylib/vendored/array_api_extra + +```{tip} +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 + +## 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)= ## Usage @@ -74,23 +137,29 @@ import array_api_extra as xpx ... xp = array_namespace(x) -y = xp.sum(x) +y = xp.sum(x) # use functions from `xp` as normal ... -return xpx.atleast_nd(y, ndim=2, xp=xp) +return xpx.atleast_nd(y, ndim=2, xp=xp) # use functions from `xpx`, passing `xp=xp` ``` ```{note} Functions in this library assume input arrays *are arrays* (not "array-likes") and that -the namespace passed as `xp` is compatible with the standard. This means that -the namespace you pass as `xp` should come from array-api-compat's ``array_namespace``, +the namespace passed as `xp` (if given) is compatible with the standard - +this means that it should come from array-api-compat's `array_namespace`, or otherwise be compatible with the standard. + +Calling functions without providing an `xp` argument means that `array_namespace` +is called internally to determine the namespace. ``` In the examples shown in the docstrings of functions from this library, -[`array-api-strict`](https://data-apis.org/array-api-strict/) is used as the -array namespace `xp`. In reality, code using this library will be written to -work with any compatible array namespace as `xp`, not any particular -implementation. +[array-api-strict](https://data-apis.org/array-api-strict/) is used as the array +namespace `xp`. In reality, code using this library will be written to work with +any compatible array namespace as `xp`, not any particular implementation. + +Some functions may only work with specific array libraries supported by +array-api-compat. This should be clearly indicated in the docs - please open an +issue if this is not the case! (scope)= @@ -102,35 +171,35 @@ Functions that are in-scope for this library will: standard. - Implement functionality which may be generally useful across various libraries. -- Be implemented purely in terms of the array API standard. - Be implemented with type annotations and [numpydoc-style docstrings](https://numpydoc.readthedocs.io/en/latest/format.html). -- Be tested against `array-api-strict`. +- Be tested against array-api-strict and various existing backends. + +Functions are implemented purely in terms of the array API standard where +possible. Where functions must use library-specific helpers for libraries +supported by array-api-compat, this will be clearly marked in their API +reference page. + +Delegation is added for some functions to use native implementations for the +given array type, instead of the array-agnostic implementations, as this may +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. The following features are currently out-of-scope for this library: -- Delegation to known, existing array libraries. - - It is quite simple to wrap functions in this library to also use existing - implementations where possible. Such delegation will not live in this - library for now, but the array-agnostic functions in this library could form - an array-agnostic backend for such delegating functions in the future, here - or elsewhere. - Functions which accept "array-like" input, or standard-incompatible namespaces. - It is possible to prepare input arrays and a standard-compatible namespace - via `array-api-compat` downstream in consumer libraries. Avoiding use of - `array-api-compat` in this library makes it easier to vendor and reduces - potential redundant calls to `xp.asarray` and `array_namespace`. - - For proposed alternatives to the `xp=xp` interface, see - [this issue](https://github.com/data-apis/array-api-extra/issues/6). + via array-api-compat downstream in consumer libraries. The `xp` argument can + also be omitted to infer the standard-compatible namespace using + `array_namespace` internally. - Functions which are specific to a particular domain. - These functions may belong better in an array-consuming library which is specific to that domain. 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 e37d0d0d..61b1f717 100644 --- a/pixi.lock +++ b/pixi.lock @@ -1,6 +1,6 @@ -version: 5 +version: 6 environments: - ci-py310: + default: channels: - url: https://prefix.dev/conda-forge/ indexes: @@ -9,323 +9,2107 @@ 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-strict-2.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.11.2-pyh29332c3_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.8.30-hbcca054_0.conda - - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/linux-64/coverage-7.6.8-py310h89163eb_0.conda - - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-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-25_linux64_openblas.conda - - conda: https://prefix.dev/conda-forge/linux-64/libcblas-3.9.0-25_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-25_linux64_openblas.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.0-hadc24fc_1.conda - - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_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-14.2.0-h767d61c_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_0.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.49.1-hee588c1_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-he02047a_1.conda - - conda: https://prefix.dev/conda-forge/linux-64/numpy-2.1.3-py310hd6e36ab_0.conda - - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/linux-64/python-3.10.15-h4a871b0_2_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/ncurses-6.5-h2d0b736_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.5.0-h7b32b05_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/python-3.13.3-hf636f53_101_cp313.conda + - conda: https://prefix.dev/conda-forge/linux-64/python_abi-3.13-6_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_h4845f30_101.conda - - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://prefix.dev/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - 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.11.2-pyh29332c3_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/ca-certificates-2025.1.31-h8857fd0_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_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libmpdec-4.0.0-hfdf4475_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libsqlite-3.49.1-hdb6dae5_2.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_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/python-3.13.3-h534c281_101_cp313.conda + - conda: https://prefix.dev/conda-forge/osx-64/python_abi-3.13-6_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-h1abcd95_1.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-strict-2.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.11.2-pyh29332c3_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.8.30-hf0a4a13_0.conda - - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/osx-arm64/coverage-7.6.8-py310hc74094e_0.conda - - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-19.1.4-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-25_osxarm64_openblas.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.0-hbaaea75_1.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_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_0.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.49.1-h3f77e49_2.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.4-hdb05f8b_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/numpy-2.1.3-py310h530be0a_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/python-3.10.15-hdce6c4c_2_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/ncurses-6.5-h5e97a16_3.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/python-3.13.3-h81fe080_101_cp313.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/python_abi-3.13-6_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-h5083fa2_1.conda - - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - pypi: . win-64: - - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.11.2-pyh29332c3_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.8.30-h56e8100_0.conda - - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/win-64/coverage-7.6.8-py310h38315fa_0.conda - - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.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-25_win64_mkl.conda - - conda: https://prefix.dev/conda-forge/win-64/libcblas-3.9.0-25_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.1-default_h8125262_1000.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-25_win64_mkl.conda - - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.47.0-h2466b09_1.conda - - conda: https://prefix.dev/conda-forge/win-64/libxml2-2.13.5-h442d1da_0.conda + - conda: https://prefix.dev/conda-forge/win-64/ca-certificates-2025.1.31-h56e8100_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_0.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.49.1-h67fdade_2.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_14.conda - - conda: https://prefix.dev/conda-forge/win-64/numpy-2.1.3-py310h1ec8c79_0.conda - - conda: https://prefix.dev/conda-forge/win-64/openssl-3.4.0-h2466b09_0.conda - - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/win-64/pthreads-win32-2.9.1-h2466b09_4.conda - - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/win-64/python-3.10.15-hfaddaf0_2_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-hc790b64_0.conda + - conda: https://prefix.dev/conda-forge/win-64/openssl-3.5.0-ha4e3fda_0.conda + - conda: https://prefix.dev/conda-forge/win-64/python-3.13.3-h261c0b1_101_cp313.conda + - conda: https://prefix.dev/conda-forge/win-64/python_abi-3.13-6_cp313.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_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_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 - - conda: https://prefix.dev/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 + - 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: . - ci-py313: + 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/array-api-strict-2.2-pyhd8ed1ab_0.conda + - 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.11.2-pyh29332c3_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.9-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/linux-64/aws-c-auth-0.8.7-h7743f02_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-cal-0.8.7-h7d555fd_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-common-0.12.1-hb9d3cd8_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-compression-0.3.1-hcbd9e4e_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-event-stream-0.5.4-h286e7e7_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-http-0.9.5-hbca0721_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-io-0.17.0-ha855f32_8.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-mqtt-0.12.2-hffac463_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-s3-0.7.13-h4c9fe3b_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-sdkutils-0.2.3-hcbd9e4e_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-checksums-0.2.3-hcbd9e4e_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-crt-cpp-0.31.1-h46b750d_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-sdk-cpp-1.11.510-h1fa5cb7_4.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/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/basedmypy-2.10.0-pyh29332c3_1.conda + - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.28.5-pyh29332c3_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.13.3-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/noarch/bokeh-3.7.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/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://prefix.dev/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/linux-64/coverage-7.6.8-py313h8060acc_0.conda - - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-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-25_linux64_openblas.conda - - conda: https://prefix.dev/conda-forge/linux-64/libcblas-3.9.0-25_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-25_linux64_openblas.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.0-hadc24fc_1.conda - - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.1.31-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.1-pyhd8ed1ab_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.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.8.0-py310h89163eb_0.conda + - conda: https://prefix.dev/conda-forge/noarch/cpython-3.10.17-py310hd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/cytoolz-1.0.1-py310ha75aee5_0.conda + - conda: https://prefix.dev/conda-forge/noarch/dask-2025.3.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.3.0-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.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/distributed-2025.3.0-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/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/freetype-2.13.3-h48d6fc4_0.conda + - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.3.2-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/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/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.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.131.8-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.9-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.6.1-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/ipython-8.35.0-pyh907856f_0.conda + - conda: https://prefix.dev/conda-forge/noarch/isort-6.0.1-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/jax-0.5.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/jaxlib-0.5.2-cpu_py310hc96afab_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/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.17-h717163a_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/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://prefix.dev/conda-forge/linux-64/libabseil-20250127.1-cxx17_hbbce691_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/libarrow-19.0.1-hb90904d_7_cpu.conda + - conda: https://prefix.dev/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_7_cpu.conda + - conda: https://prefix.dev/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_7_cpu.conda + - conda: https://prefix.dev/conda-forge/linux-64/libarrow-substrait-19.0.1-h1bed206_7_cpu.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/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-31_h372d94f_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.13.0-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.20250104-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/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-14.2.0-h767d61c_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgoogle-cloud-2.36.0-hc4361e1_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgoogle-cloud-storage-2.36.0-h0121fbd_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgrpc-1.71.0-he753a82_0.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/libjpeg-turbo-3.0.0-hd590300_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_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_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/libopentelemetry-cpp-1.20.0-hd1b1c89_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/libopentelemetry-cpp-headers-1.20.0-ha770c72_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_7_cpu.conda + - conda: https://prefix.dev/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_0.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.49.1-hee588c1_2.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-h8f9b012_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.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.6.0-cpu_mkl_hf6ddc5a_104.conda + - conda: https://prefix.dev/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_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.50.0-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/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libxml2-2.13.7-h4bc477f_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-he02047a_1.conda - - conda: https://prefix.dev/conda-forge/linux-64/numpy-2.1.3-py313h4bf6692_0.conda - - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/linux-64/python-3.13.0-h9ebbce0_101_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/llvm-openmp-20.1.2-h024ca30_1.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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://prefix.dev/conda-forge/noarch/myst-parser-4.0.1-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/narwhals-1.35.0-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/nlohmann_json-3.12.0-h3f2d84a_0.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.14.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.4-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/openjpeg-2.5.3-h5fbd93e_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.5.0-h7b32b05_0.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.15.0-py310h3788b33_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/orc-2.1.1-h17f744e_1.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_3.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/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/linux-64/pillow-11.1.0-py310h7e6dc6c_0.conda + - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.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.2.0-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + - conda: https://prefix.dev/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/psutil-7.0.0-py310ha75aee5_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.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/linux-64/pyarrow-19.0.1-py310hff52083_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/pyarrow-core-19.0.1-py310hac404ae_0_cpu.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.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.6-pyh29332c3_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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://prefix.dev/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/python_abi-3.10-6_cp310.conda + - conda: https://prefix.dev/conda-forge/linux-64/pytorch-2.6.0-cpu_mkl_py310_h8ec2884_104.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/s2n-1.5.15-hd830067_0.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/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/sleef-3.8-h1b44611_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.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.13.3-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.1.0-pyhd8ed1ab_0.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_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://prefix.dev/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - 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/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_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.30.0-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/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-2025.1.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/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/zlib-1.3.1-hb9d3cd8_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/zstandard-0.23.0-py310ha75aee5_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda + - pypi: https://files.pythonhosted.org/packages/ca/4a/e59e0968ad52460bb997221fdf5a77d1385b0258f37bfbc84675977b0a62/sparse-0.16.0-py2.py3-none-any.whl + - 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.11.2-pyh29332c3_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.9-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/osx-64/aws-c-auth-0.8.7-he59c91b_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-cal-0.8.7-h91d212f_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-common-0.12.1-h6e16a3a_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-compression-0.3.1-h9988e47_3.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-event-stream-0.5.4-h8941ec8_3.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-http-0.9.5-h10cf2d7_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-io-0.17.0-h61e5591_8.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-mqtt-0.12.2-h26cd796_3.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-s3-0.7.13-h0a7a62b_3.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-sdkutils-0.2.3-h9988e47_3.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-checksums-0.2.3-h9988e47_3.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-crt-cpp-0.31.1-h8ec4a44_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-sdk-cpp-1.11.510-h6101e66_4.conda + - conda: https://prefix.dev/conda-forge/osx-64/azure-core-cpp-1.14.0-h9a36307_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/azure-identity-cpp-1.10.0-ha4e2ba9_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/azure-storage-blobs-cpp-12.13.0-h3d2f5f1_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/azure-storage-common-cpp-12.8.0-h1ccc5ac_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.12.0-h86941f0_1.conda + - conda: https://prefix.dev/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/basedmypy-2.10.0-pyh29332c3_1.conda + - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.28.5-pyh29332c3_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.13.3-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/noarch/bokeh-3.7.2-pyhd8ed1ab_1.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/osx-64/ca-certificates-2025.1.31-h8857fd0_0.conda + - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.1.31-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/click-8.1.8-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/contourpy-1.3.1-py310hf166250_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/coverage-7.8.0-py310h8e2f543_0.conda + - conda: https://prefix.dev/conda-forge/noarch/cpython-3.10.17-py310hd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/cytoolz-1.0.1-py310hbb8c376_0.conda + - conda: https://prefix.dev/conda-forge/noarch/dask-2025.3.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.3.0-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.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/distributed-2025.3.0-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/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/freetype-2.13.3-h40dfd5c_0.conda + - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.3.2-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/gflags-2.2.2-hac325c4_1005.conda + - conda: https://prefix.dev/conda-forge/osx-64/glog-0.7.1-h2790a97_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.1.5-py310he278d95_3.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.131.8-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.9-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.6.1-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/ipython-8.35.0-pyh907856f_0.conda + - conda: https://prefix.dev/conda-forge/noarch/isort-6.0.1-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/jax-0.5.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/jaxlib-0.5.2-cpu_py310h22b337c_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/osx-64/krb5-1.21.3-h37d8d59_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/lcms2-2.17-h72f5680_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 + - conda: https://prefix.dev/conda-forge/osx-64/libabseil-20250127.1-cxx17_h0e468a2_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libarrow-19.0.1-hf1fce67_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-64/libarrow-acero-19.0.1-hdc53af8_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-64/libarrow-dataset-19.0.1-hdc53af8_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-64/libarrow-substrait-19.0.1-ha37b807_7_cpu.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/libbrotlicommon-1.1.0-h00291cd_2.conda + - conda: https://prefix.dev/conda-forge/osx-64/libbrotlidec-1.1.0-h00291cd_2.conda + - conda: https://prefix.dev/conda-forge/osx-64/libbrotlienc-1.1.0-h00291cd_2.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/libcrc32c-1.1.2-he49afe7_0.tar.bz2 + - conda: https://prefix.dev/conda-forge/osx-64/libcurl-8.13.0-h5dec5d8_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libcxx-20.1.2-hf95d169_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libdeflate-1.23-he65b83e_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libev-4.33-h10d778d_2.conda + - conda: https://prefix.dev/conda-forge/osx-64/libevent-2.1.12-ha90c15b_1.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/libgoogle-cloud-2.36.0-h777fda5_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/libgoogle-cloud-storage-2.36.0-h3397294_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/libgrpc-1.71.0-h53c9a1c_0.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/libjpeg-turbo-3.0.0-h0dc2134_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_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libnghttp2-1.64.0-hc7306c3_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libopentelemetry-cpp-1.20.0-h30c661f_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libopentelemetry-cpp-headers-1.20.0-h694c41f_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libparquet-19.0.1-h283e888_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libprotobuf-5.29.3-h1c7185b_0.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.49.1-hdb6dae5_2.conda + - conda: https://prefix.dev/conda-forge/osx-64/libssh2-1.11.1-h3dc7d44_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libthrift-0.21.0-h75589b3_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libtiff-4.7.0-hb77a491_3.conda + - conda: https://prefix.dev/conda-forge/osx-64/libtorch-2.6.0-cpu_mkl_h3891332_104.conda + - conda: https://prefix.dev/conda-forge/osx-64/libutf8proc-2.10.0-h777c5d8_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libuv-1.50.0-h4cb831e_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libxcb-1.17.0-hf1f96e2_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libxml2-2.13.7-h93c44a6_1.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.2-ha54dae1_1.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/lz4-4.3.3-py310hf2a43f7_2.conda + - conda: https://prefix.dev/conda-forge/osx-64/lz4-c-1.10.0-h240833e_1.conda + - 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/msgpack-python-1.1.0-py310hfa8da69_0.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.1-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/narwhals-1.35.0-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/osx-64/nlohmann_json-3.12.0-h92383a6_0.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.14.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.4-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/openjpeg-2.5.3-h7fd6d84_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/openssl-3.5.0-hc426f3f_0.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.15.0-py310hf166250_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/orc-2.1.1-h82caab2_1.conda + - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://prefix.dev/conda-forge/osx-64/pandas-2.2.3-py310h96a9d13_3.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/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/osx-64/pillow-11.1.0-py310hbf7783a_0.conda + - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.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.2.0-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/prometheus-cpp-1.3.0-h7802330_0.conda + - conda: https://prefix.dev/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/psutil-7.0.0-py310hbb8c376_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/pthread-stubs-0.4-h00291cd_1002.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/osx-64/pyarrow-19.0.1-py310h2ec42d9_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/pyarrow-core-19.0.1-py310h86202ae_0_cpu.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.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.6-pyh29332c3_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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://prefix.dev/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/python_abi-3.10-6_cp310.conda + - conda: https://prefix.dev/conda-forge/osx-64/pytorch-2.6.0-cpu_mkl_py310_h73f974a_104.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/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/sleef-3.8-hfe0d17b_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/snappy-1.2.1-haf3c120_1.conda + - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.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.13.3-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/noarch/tblib-3.1.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/tk-8.6.13-h1abcd95_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/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/osx-64/tornado-6.4.2-py310hbb8c376_0.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.13.2-h0e9735f_0.conda + - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_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.30.0-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/xorg-libxau-1.0.12-h6e16a3a_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/xorg-libxdmcp-1.1.5-h00291cd_0.conda + - conda: https://prefix.dev/conda-forge/noarch/xyzservices-2025.1.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/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-64/zlib-1.3.1-hd23fc13_2.conda + - conda: https://prefix.dev/conda-forge/osx-64/zstandard-0.23.0-py310hbb8c376_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda + - pypi: https://files.pythonhosted.org/packages/ca/4a/e59e0968ad52460bb997221fdf5a77d1385b0258f37bfbc84675977b0a62/sparse-0.16.0-py2.py3-none-any.whl - pypi: . osx-arm64: - - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_0.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.11.2-pyh29332c3_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.9-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/osx-arm64/aws-c-auth-0.8.7-h771b9f8_1.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-cal-0.8.7-hf78e982_1.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-common-0.12.1-h5505292_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-compression-0.3.1-h2da6199_3.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-event-stream-0.5.4-hc8cef5c_3.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-http-0.9.5-h7ae4978_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-io-0.17.0-hda12475_8.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-mqtt-0.12.2-hd618802_3.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-s3-0.7.13-hb321cbc_3.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-sdkutils-0.2.3-h2da6199_3.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-checksums-0.2.3-h2da6199_3.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-crt-cpp-0.31.1-hf6bcbf0_1.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-sdk-cpp-1.11.510-hbf97231_4.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/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/basedmypy-2.10.0-pyh29332c3_1.conda + - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.28.5-pyh29332c3_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.13.3-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/noarch/bokeh-3.7.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/ca-certificates-2024.8.30-hf0a4a13_0.conda - - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/osx-arm64/coverage-7.6.8-py313ha9b7d5b_0.conda - - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-19.1.4-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-25_osxarm64_openblas.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.0-hbaaea75_1.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/c-ares-1.34.5-h5505292_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.1.31-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/click-8.1.8-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.8.0-py310hc74094e_0.conda + - conda: https://prefix.dev/conda-forge/noarch/cpython-3.10.17-py310hd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/cytoolz-1.0.1-py310h078409c_0.conda + - conda: https://prefix.dev/conda-forge/noarch/dask-2025.3.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.3.0-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.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/distributed-2025.3.0-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/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/freetype-2.13.3-h1d14073_0.conda + - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.3.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/furo-2024.8.6-pyhd8ed1ab_2.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.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.131.8-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.9-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.6.1-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/ipython-8.35.0-pyh907856f_0.conda + - conda: https://prefix.dev/conda-forge/noarch/isort-6.0.1-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/jax-0.5.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/jaxlib-0.5.2-cpu_py310h2c532f2_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/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_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-20250127.1-cxx17_h07bc746_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-19.0.1-hd4a375f_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-substrait-19.0.1-he749cb8_7_cpu.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/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-31_hb3479ef_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.13.0-h73640d1_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-20.1.2-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.20250104-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/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/libgoogle-cloud-2.36.0-h9484b08_1.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libgoogle-cloud-storage-2.36.0-h7081f7f_1.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libgrpc-1.71.0-hf667ad3_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.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-31_hc9a63f6_openblas.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_0.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.29-openmp_hf332438_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libopentelemetry-cpp-1.20.0-h0181452_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.20.0-hce30654_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libprotobuf-5.29.3-hccd9074_0.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.49.1-h3f77e49_2.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.6.0-cpu_generic_h4059bed_4.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libuv-1.50.0-h5505292_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.7-h52572c6_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.4-hdb05f8b_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/numpy-2.1.3-py313hca4752e_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/python-3.13.0-hbbac1ca_101_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/llvm-openmp-20.1.2-hdb05f8b_1.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/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_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/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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://prefix.dev/conda-forge/noarch/myst-parser-4.0.1-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/narwhals-1.35.0-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/osx-arm64/nlohmann_json-3.12.0-ha1acc90_0.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.14.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.4-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/openjpeg-2.5.3-h8a3d83b_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_0.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.15.0-py310h7f4e7e6_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/orc-2.1.1-hd90e43c_1.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-py310h5936506_3.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/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/osx-arm64/pillow-11.1.0-py310h61efb56_0.conda + - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.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.2.0-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + - conda: https://prefix.dev/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/psutil-7.0.0-py310h078409c_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.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/osx-arm64/pyarrow-19.0.1-py310hb6292c7_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/pyarrow-core-19.0.1-py310hc17921c_0_cpu.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.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.6-pyh29332c3_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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://prefix.dev/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/python_abi-3.10-6_cp310.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/pytorch-2.6.0-cpu_generic_py310_h10edff7_4.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/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/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/sleef-3.8-h8391f65_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.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.13.3-pyh2585a3b_105.conda + - conda: https://prefix.dev/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + - conda: https://prefix.dev/conda-forge/noarch/tblib-3.1.0-pyhd8ed1ab_0.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_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + - 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/osx-arm64/tornado-6.4.2-py310h078409c_0.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.13.2-h0e9735f_0.conda + - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_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.30.0-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/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-2025.1.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/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/zlib-1.3.1-h8359307_2.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/zstandard-0.23.0-py310h078409c_1.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda + - pypi: https://files.pythonhosted.org/packages/ca/4a/e59e0968ad52460bb997221fdf5a77d1385b0258f37bfbc84675977b0a62/sparse-0.16.0-py2.py3-none-any.whl - pypi: . win-64: - - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_0.conda + - 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.11.2-pyh29332c3_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.9-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/win-64/aws-c-auth-0.8.7-h04a0843_1.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-cal-0.8.7-h131b658_1.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-common-0.12.1-h2466b09_0.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-compression-0.3.1-h131b658_3.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-event-stream-0.5.4-hddb29df_3.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-http-0.9.5-hdbca9f4_0.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-io-0.17.0-h7371350_8.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-mqtt-0.12.2-hc44c84b_3.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-s3-0.7.13-hf31aad2_3.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-sdkutils-0.2.3-h131b658_3.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-checksums-0.2.3-h131b658_3.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-crt-cpp-0.31.1-h7c9e96e_1.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-sdk-cpp-1.11.510-hddf75dc_4.conda + - conda: https://prefix.dev/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/basedmypy-2.10.0-pyh29332c3_1.conda + - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.28.5-pyh29332c3_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.13.3-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/noarch/bokeh-3.7.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/ca-certificates-2024.8.30-h56e8100_0.conda - - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/win-64/coverage-7.6.8-py313hb4c8b1a_0.conda - - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/win-64/c-ares-1.34.5-h2466b09_0.conda + - conda: https://prefix.dev/conda-forge/win-64/ca-certificates-2025.1.31-h56e8100_0.conda + - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.1.31-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/click-8.1.8-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.8.0-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-2025.3.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.3.0-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.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/distributed-2025.3.0-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/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/win-64/freetype-2.13.3-h0b5ce68_0.conda + - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.3.2-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/hypothesis-6.131.8-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/noarch/identify-2.6.9-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.6.1-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-25_win64_mkl.conda - - conda: https://prefix.dev/conda-forge/win-64/libcblas-3.9.0-25_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.1-default_h8125262_1000.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-25_win64_mkl.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.0-h2466b09_1.conda - - conda: https://prefix.dev/conda-forge/win-64/libxml2-2.13.5-h442d1da_0.conda + - conda: https://prefix.dev/conda-forge/noarch/ipython-8.35.0-pyh9ab4c32_0.conda + - conda: https://prefix.dev/conda-forge/noarch/isort-6.0.1-pyhd8ed1ab_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/win-64/krb5-1.21.3-hdf4eb48_0.conda + - conda: https://prefix.dev/conda-forge/win-64/lcms2-2.17-hbcf6048_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-20250127.1-cxx17_h4eb7d71_0.conda + - conda: https://prefix.dev/conda-forge/win-64/libarrow-19.0.1-hb2d35ca_7_cpu.conda + - conda: https://prefix.dev/conda-forge/win-64/libarrow-acero-19.0.1-h7d8d6a5_7_cpu.conda + - conda: https://prefix.dev/conda-forge/win-64/libarrow-dataset-19.0.1-h7d8d6a5_7_cpu.conda + - conda: https://prefix.dev/conda-forge/win-64/libarrow-substrait-19.0.1-hb76e781_7_cpu.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/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-31_h5e41251_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.13.0-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/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/libgcc-14.2.0-h1383e82_2.conda + - conda: https://prefix.dev/conda-forge/win-64/libgomp-14.2.0-h1383e82_2.conda + - conda: https://prefix.dev/conda-forge/win-64/libgoogle-cloud-2.36.0-hf249c01_1.conda + - conda: https://prefix.dev/conda-forge/win-64/libgoogle-cloud-storage-2.36.0-he5eb982_1.conda + - conda: https://prefix.dev/conda-forge/win-64/libgrpc-1.71.0-h35301be_0.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/libjpeg-turbo-3.0.0-hcfcfb64_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_0.conda + - conda: https://prefix.dev/conda-forge/win-64/libparquet-19.0.1-ha850022_7_cpu.conda + - conda: https://prefix.dev/conda-forge/win-64/libpng-1.6.47-had7236b_0.conda + - conda: https://prefix.dev/conda-forge/win-64/libprotobuf-5.29.3-he9d8c4a_0.conda + - conda: https://prefix.dev/conda-forge/win-64/libre2-11-2024.07.02-hd248061_3.conda + - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.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/libtorch-2.6.0-cpu_mkl_hf54a72f_104.conda + - conda: https://prefix.dev/conda-forge/win-64/libutf8proc-2.10.0-hf9b99b7_0.conda + - conda: https://prefix.dev/conda-forge/win-64/libuv-1.50.0-h2466b09_0.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_9.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.7-h442d1da_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_14.conda - - conda: https://prefix.dev/conda-forge/win-64/numpy-2.1.3-py313hee8cc43_0.conda - - conda: https://prefix.dev/conda-forge/win-64/openssl-3.4.0-h2466b09_0.conda - - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/win-64/pthreads-win32-2.9.1-h2466b09_4.conda - - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/win-64/python-3.13.0-hf5aa216_101_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-hc790b64_0.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/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_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/mpmath-1.3.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/win-64/msgpack-python-1.1.0-py310hc19bc0b_0.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.1-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/narwhals-1.35.0-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.14.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.4-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/openjpeg-2.5.3-h4d64b90_0.conda + - conda: https://prefix.dev/conda-forge/win-64/openssl-3.5.0-ha4e3fda_0.conda + - conda: https://prefix.dev/conda-forge/win-64/optree-0.15.0-py310hc19bc0b_0.conda + - conda: https://prefix.dev/conda-forge/win-64/orc-2.1.1-h35764e3_1.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_3.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/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://prefix.dev/conda-forge/win-64/pillow-11.1.0-py310h9595edc_0.conda + - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.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.2.0-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/win-64/psutil-7.0.0-py310ha8f682b_0.conda + - conda: https://prefix.dev/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda + - conda: https://prefix.dev/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/win-64/pyarrow-19.0.1-py310h5588dad_0.conda + - conda: https://prefix.dev/conda-forge/win-64/pyarrow-core-19.0.1-py310h399dd74_0_cpu.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyhab904b8_2.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.6-pyh29332c3_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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://prefix.dev/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/win-64/python_abi-3.10-6_cp310.conda + - conda: https://prefix.dev/conda-forge/win-64/pytorch-2.6.0-cpu_mkl_py310_h946cf0a_104.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/win-64/re2-2024.07.02-haf4117d_3.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.2-pyhff2d567_0.conda + - conda: https://prefix.dev/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/win-64/sleef-3.8-h7e360cc_0.conda + - conda: https://prefix.dev/conda-forge/win-64/snappy-1.2.1-h500f7fa_1.conda + - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.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.13.3-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/noarch/tblib-3.1.0-pyhd8ed1ab_0.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_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.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/win-64/tornado-6.4.2-py310ha8f682b_0.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.13.2-h0e9735f_0.conda + - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_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 - - conda: https://prefix.dev/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 + - 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.30.0-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/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-2025.1.0-pyhd8ed1ab_0.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-py310ha8f682b_1.conda + - conda: https://prefix.dev/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda + - pypi: https://files.pythonhosted.org/packages/ca/4a/e59e0968ad52460bb997221fdf5a77d1385b0258f37bfbc84675977b0a62/sparse-0.16.0-py2.py3-none-any.whl - pypi: . - default: + 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.11.2-pyh29332c3_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.9-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/linux-64/aws-c-auth-0.8.7-h7743f02_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-cal-0.8.7-h7d555fd_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-common-0.12.1-hb9d3cd8_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-compression-0.3.1-hcbd9e4e_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-event-stream-0.5.4-h286e7e7_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-http-0.9.5-hbca0721_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-io-0.17.0-ha855f32_8.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-mqtt-0.12.2-hffac463_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-s3-0.7.13-h4c9fe3b_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-sdkutils-0.2.3-hcbd9e4e_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-checksums-0.2.3-hcbd9e4e_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-crt-cpp-0.31.1-h46b750d_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-sdk-cpp-1.11.510-h1fa5cb7_4.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/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/basedmypy-2.10.0-pyh29332c3_1.conda + - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.28.5-pyh29332c3_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.13.3-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/noarch/bokeh-3.7.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/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://prefix.dev/conda-forge/linux-64/ca-certificates-2024.8.30-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/libmpdec-4.0.0-h4bc722e_0.conda - - conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.1.31-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.1-pyhd8ed1ab_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.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.8.0-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.8.90-ha770c72_1.conda + - conda: https://prefix.dev/conda-forge/noarch/cuda-crt-dev_linux-64-12.8.93-ha770c72_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/cuda-crt-tools-12.8.93-ha770c72_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/cuda-cudart-12.8.90-h5888daf_1.conda + - conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-dev_linux-64-12.8.90-h3f2d84a_1.conda + - conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-static_linux-64-12.8.90-h3f2d84a_1.conda + - conda: https://prefix.dev/conda-forge/noarch/cuda-cudart_linux-64-12.8.90-h3f2d84a_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/cuda-cuobjdump-12.8.90-hbd13f7d_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/cuda-cupti-12.8.90-h5888daf_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/cuda-cupti-dev-12.8.90-h5888daf_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/cuda-nvcc-tools-12.8.93-he02047a_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/cuda-nvdisasm-12.8.90-hbd13f7d_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/cuda-nvrtc-12.8.93-h5888daf_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/cuda-nvtx-12.8.90-h5888daf_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/cuda-nvvm-tools-12.8.93-he02047a_3.conda + - conda: https://prefix.dev/conda-forge/noarch/cuda-version-12.8-h5d125a7_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/cudnn-9.8.0.87-h81d5506_1.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/linux-64/cytoolz-1.0.1-py310ha75aee5_0.conda + - conda: https://prefix.dev/conda-forge/noarch/dask-2025.3.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.3.0-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.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/distributed-2025.3.0-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/executing-2.1.0-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.18.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/freetype-2.13.3-h48d6fc4_0.conda + - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.3.2-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/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/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.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.131.8-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.9-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.6.1-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/ipython-8.35.0-pyh907856f_0.conda + - conda: https://prefix.dev/conda-forge/noarch/isort-6.0.1-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/jax-0.5.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/jaxlib-0.5.2-cuda126py310hec873cc_201.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/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.17-h717163a_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/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://prefix.dev/conda-forge/linux-64/libabseil-20250127.1-cxx17_hbbce691_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/libarrow-19.0.1-hb90904d_7_cpu.conda + - conda: https://prefix.dev/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_7_cpu.conda + - conda: https://prefix.dev/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_7_cpu.conda + - conda: https://prefix.dev/conda-forge/linux-64/libarrow-substrait-19.0.1-h1bed206_7_cpu.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/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/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/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + - conda: https://prefix.dev/conda-forge/linux-64/libcublas-12.8.4.1-h9ab20c4_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libcublas-dev-12.8.4.1-h9ab20c4_1.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.3.3.83-h5888daf_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libcufft-dev-11.3.3.83-h5888daf_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libcufile-1.13.1.3-h628e99a_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libcurand-10.3.9.90-h9ab20c4_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libcurand-dev-10.3.9.90-h9ab20c4_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libcurl-8.13.0-h332b0f4_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/libcusolver-11.7.3.90-h9ab20c4_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libcusolver-dev-11.7.3.90-h9ab20c4_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libcusparse-12.5.8.93-h5888daf_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libcusparse-dev-12.5.8.93-h5888daf_1.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.20250104-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/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-14.2.0-h767d61c_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgcrypt-lib-1.11.0-hb9d3cd8_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgoogle-cloud-2.36.0-hc4361e1_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgoogle-cloud-storage-2.36.0-h0121fbd_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgpg-error-1.53-hbd13f7d_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgrpc-1.71.0-he753a82_0.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/libjpeg-turbo-3.0.0-hd590300_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/libllvm20-20.1.2-ha7bfdaf_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/libmagma-2.9.0-h19665d7_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/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.8.93-h5888daf_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libopentelemetry-cpp-1.20.0-hd1b1c89_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/libopentelemetry-cpp-headers-1.20.0-ha770c72_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_7_cpu.conda + - conda: https://prefix.dev/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_0.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.49.1-hee588c1_2.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-h8f9b012_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libsystemd0-257.4-h4e0b6ca_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.6.0-cuda126_mkl_h99b69db_304.conda + - conda: https://prefix.dev/conda-forge/linux-64/libudev1-257.4-hbe16f8c_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_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.50.0-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/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libxml2-2.13.7-h4bc477f_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-he02047a_1.conda - - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - - conda: https://prefix.dev/conda-forge/linux-64/python-3.13.0-h9ebbce0_101_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/llvm-openmp-20.1.2-h024ca30_1.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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://prefix.dev/conda-forge/noarch/myst-parser-4.0.1-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/narwhals-1.35.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/nccl-2.26.2.1-ha44e49d_1.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/nlohmann_json-3.12.0-h3f2d84a_0.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.14.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.4-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/openjpeg-2.5.3-h5fbd93e_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.5.0-h7b32b05_0.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.15.0-py310h3788b33_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/orc-2.1.1-h17f744e_1.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_3.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/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/linux-64/pillow-11.1.0-py310h7e6dc6c_0.conda + - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.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.2.0-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + - conda: https://prefix.dev/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/psutil-7.0.0-py310ha75aee5_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.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/linux-64/pyarrow-19.0.1-py310hff52083_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/pyarrow-core-19.0.1-py310hac404ae_0_cpu.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.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.6-pyh29332c3_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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://prefix.dev/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/python_abi-3.10-6_cp310.conda + - conda: https://prefix.dev/conda-forge/linux-64/pytorch-2.6.0-cuda126_mkl_py310_h5ee0071_304.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-56.1-h5888daf_1.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/s2n-1.5.15-hd830067_0.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/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/sleef-3.8-h1b44611_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.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.13.3-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.1.0-pyhd8ed1ab_0.conda - conda: https://prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://prefix.dev/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - 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/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/triton-3.2.0-cuda126py310h50ec074_1.conda + - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_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.30.0-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/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-2025.1.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/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/zlib-1.3.1-hb9d3cd8_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/zstandard-0.23.0-py310ha75aee5_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda + - pypi: https://files.pythonhosted.org/packages/ca/4a/e59e0968ad52460bb997221fdf5a77d1385b0258f37bfbc84675977b0a62/sparse-0.16.0-py2.py3-none-any.whl + - 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.11.2-pyh29332c3_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.9-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/osx-64/aws-c-auth-0.8.7-he59c91b_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-cal-0.8.7-h91d212f_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-common-0.12.1-h6e16a3a_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-compression-0.3.1-h9988e47_3.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-event-stream-0.5.4-h8941ec8_3.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-http-0.9.5-h10cf2d7_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-io-0.17.0-h61e5591_8.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-mqtt-0.12.2-h26cd796_3.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-s3-0.7.13-h0a7a62b_3.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-sdkutils-0.2.3-h9988e47_3.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-checksums-0.2.3-h9988e47_3.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-crt-cpp-0.31.1-h8ec4a44_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-sdk-cpp-1.11.510-h6101e66_4.conda + - conda: https://prefix.dev/conda-forge/osx-64/azure-core-cpp-1.14.0-h9a36307_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/azure-identity-cpp-1.10.0-ha4e2ba9_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/azure-storage-blobs-cpp-12.13.0-h3d2f5f1_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/azure-storage-common-cpp-12.8.0-h1ccc5ac_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.12.0-h86941f0_1.conda + - conda: https://prefix.dev/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/basedmypy-2.10.0-pyh29332c3_1.conda + - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.28.5-pyh29332c3_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.13.3-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/noarch/bokeh-3.7.2-pyhd8ed1ab_1.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/osx-64/ca-certificates-2025.1.31-h8857fd0_0.conda + - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.1.31-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/click-8.1.8-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/contourpy-1.3.1-py310hf166250_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/coverage-7.8.0-py310h8e2f543_0.conda + - conda: https://prefix.dev/conda-forge/noarch/cpython-3.10.17-py310hd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/cytoolz-1.0.1-py310hbb8c376_0.conda + - conda: https://prefix.dev/conda-forge/noarch/dask-2025.3.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.3.0-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.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/distributed-2025.3.0-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/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/freetype-2.13.3-h40dfd5c_0.conda + - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.3.2-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/gflags-2.2.2-hac325c4_1005.conda + - conda: https://prefix.dev/conda-forge/osx-64/glog-0.7.1-h2790a97_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.1.5-py310he278d95_3.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.131.8-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.9-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.6.1-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/ipython-8.35.0-pyh907856f_0.conda + - conda: https://prefix.dev/conda-forge/noarch/isort-6.0.1-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/jax-0.5.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/jaxlib-0.5.2-cpu_py310h22b337c_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/osx-64/krb5-1.21.3-h37d8d59_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/lcms2-2.17-h72f5680_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 + - conda: https://prefix.dev/conda-forge/osx-64/libabseil-20250127.1-cxx17_h0e468a2_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libarrow-19.0.1-hf1fce67_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-64/libarrow-acero-19.0.1-hdc53af8_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-64/libarrow-dataset-19.0.1-hdc53af8_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-64/libarrow-substrait-19.0.1-ha37b807_7_cpu.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/libbrotlicommon-1.1.0-h00291cd_2.conda + - conda: https://prefix.dev/conda-forge/osx-64/libbrotlidec-1.1.0-h00291cd_2.conda + - conda: https://prefix.dev/conda-forge/osx-64/libbrotlienc-1.1.0-h00291cd_2.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/libcrc32c-1.1.2-he49afe7_0.tar.bz2 + - conda: https://prefix.dev/conda-forge/osx-64/libcurl-8.13.0-h5dec5d8_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libcxx-20.1.2-hf95d169_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libdeflate-1.23-he65b83e_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libev-4.33-h10d778d_2.conda + - conda: https://prefix.dev/conda-forge/osx-64/libevent-2.1.12-ha90c15b_1.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/libgoogle-cloud-2.36.0-h777fda5_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/libgoogle-cloud-storage-2.36.0-h3397294_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/libgrpc-1.71.0-h53c9a1c_0.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/libjpeg-turbo-3.0.0-h0dc2134_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_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libnghttp2-1.64.0-hc7306c3_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libopentelemetry-cpp-1.20.0-h30c661f_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libopentelemetry-cpp-headers-1.20.0-h694c41f_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libparquet-19.0.1-h283e888_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libprotobuf-5.29.3-h1c7185b_0.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.49.1-hdb6dae5_2.conda + - conda: https://prefix.dev/conda-forge/osx-64/libssh2-1.11.1-h3dc7d44_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libthrift-0.21.0-h75589b3_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libtiff-4.7.0-hb77a491_3.conda + - conda: https://prefix.dev/conda-forge/osx-64/libtorch-2.6.0-cpu_mkl_h3891332_104.conda + - conda: https://prefix.dev/conda-forge/osx-64/libutf8proc-2.10.0-h777c5d8_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libuv-1.50.0-h4cb831e_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libxcb-1.17.0-hf1f96e2_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libxml2-2.13.7-h93c44a6_1.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.2-ha54dae1_1.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/lz4-4.3.3-py310hf2a43f7_2.conda + - conda: https://prefix.dev/conda-forge/osx-64/lz4-c-1.10.0-h240833e_1.conda + - 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/msgpack-python-1.1.0-py310hfa8da69_0.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.1-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/narwhals-1.35.0-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/osx-64/nlohmann_json-3.12.0-h92383a6_0.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.14.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.4-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/openjpeg-2.5.3-h7fd6d84_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/openssl-3.5.0-hc426f3f_0.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.15.0-py310hf166250_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/orc-2.1.1-h82caab2_1.conda + - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://prefix.dev/conda-forge/osx-64/pandas-2.2.3-py310h96a9d13_3.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/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/osx-64/pillow-11.1.0-py310hbf7783a_0.conda + - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.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.2.0-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/prometheus-cpp-1.3.0-h7802330_0.conda + - conda: https://prefix.dev/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/psutil-7.0.0-py310hbb8c376_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/pthread-stubs-0.4-h00291cd_1002.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/osx-64/pyarrow-19.0.1-py310h2ec42d9_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/pyarrow-core-19.0.1-py310h86202ae_0_cpu.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.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.6-pyh29332c3_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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://prefix.dev/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/python_abi-3.10-6_cp310.conda + - conda: https://prefix.dev/conda-forge/osx-64/pytorch-2.6.0-cpu_mkl_py310_h73f974a_104.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/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/sleef-3.8-hfe0d17b_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/snappy-1.2.1-haf3c120_1.conda + - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.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.13.3-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/noarch/tblib-3.1.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/tk-8.6.13-h1abcd95_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/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/osx-64/tornado-6.4.2-py310hbb8c376_0.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.13.2-h0e9735f_0.conda + - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_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.30.0-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/xorg-libxau-1.0.12-h6e16a3a_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/xorg-libxdmcp-1.1.5-h00291cd_0.conda + - conda: https://prefix.dev/conda-forge/noarch/xyzservices-2025.1.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/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-64/zlib-1.3.1-hd23fc13_2.conda + - conda: https://prefix.dev/conda-forge/osx-64/zstandard-0.23.0-py310hbb8c376_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda + - pypi: https://files.pythonhosted.org/packages/ca/4a/e59e0968ad52460bb997221fdf5a77d1385b0258f37bfbc84675977b0a62/sparse-0.16.0-py2.py3-none-any.whl - 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.11.2-pyh29332c3_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.9-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/osx-arm64/aws-c-auth-0.8.7-h771b9f8_1.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-cal-0.8.7-hf78e982_1.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-common-0.12.1-h5505292_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-compression-0.3.1-h2da6199_3.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-event-stream-0.5.4-hc8cef5c_3.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-http-0.9.5-h7ae4978_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-io-0.17.0-hda12475_8.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-mqtt-0.12.2-hd618802_3.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-s3-0.7.13-hb321cbc_3.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-sdkutils-0.2.3-h2da6199_3.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-checksums-0.2.3-h2da6199_3.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-crt-cpp-0.31.1-hf6bcbf0_1.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-sdk-cpp-1.11.510-hbf97231_4.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/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/basedmypy-2.10.0-pyh29332c3_1.conda + - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.28.5-pyh29332c3_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.13.3-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/noarch/bokeh-3.7.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/ca-certificates-2024.8.30-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/libmpdec-4.0.0-h99b78c6_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/c-ares-1.34.5-h5505292_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.1.31-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/click-8.1.8-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.8.0-py310hc74094e_0.conda + - conda: https://prefix.dev/conda-forge/noarch/cpython-3.10.17-py310hd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/cytoolz-1.0.1-py310h078409c_0.conda + - conda: https://prefix.dev/conda-forge/noarch/dask-2025.3.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.3.0-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.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/distributed-2025.3.0-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/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/freetype-2.13.3-h1d14073_0.conda + - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.3.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/furo-2024.8.6-pyhd8ed1ab_2.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.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.131.8-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.9-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.6.1-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/ipython-8.35.0-pyh907856f_0.conda + - conda: https://prefix.dev/conda-forge/noarch/isort-6.0.1-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/jax-0.5.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/jaxlib-0.5.2-cpu_py310h2c532f2_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/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_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-20250127.1-cxx17_h07bc746_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-19.0.1-hd4a375f_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-substrait-19.0.1-he749cb8_7_cpu.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/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-31_hb3479ef_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.13.0-h73640d1_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-20.1.2-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.20250104-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/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/libgoogle-cloud-2.36.0-h9484b08_1.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libgoogle-cloud-storage-2.36.0-h7081f7f_1.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libgrpc-1.71.0-hf667ad3_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.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-31_hc9a63f6_openblas.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_0.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.29-openmp_hf332438_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libopentelemetry-cpp-1.20.0-h0181452_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.20.0-hce30654_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libprotobuf-5.29.3-hccd9074_0.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.49.1-h3f77e49_2.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.6.0-cpu_generic_h4059bed_4.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libuv-1.50.0-h5505292_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.7-h52572c6_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/ncurses-6.5-h7bae524_1.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/python-3.13.0-hbbac1ca_101_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/llvm-openmp-20.1.2-hdb05f8b_1.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/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_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/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/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://prefix.dev/conda-forge/noarch/myst-parser-4.0.1-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/narwhals-1.35.0-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/osx-arm64/nlohmann_json-3.12.0-ha1acc90_0.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.14.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.4-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/openjpeg-2.5.3-h8a3d83b_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_0.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.15.0-py310h7f4e7e6_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/orc-2.1.1-hd90e43c_1.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-py310h5936506_3.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/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/osx-arm64/pillow-11.1.0-py310h61efb56_0.conda + - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.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.2.0-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + - conda: https://prefix.dev/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/psutil-7.0.0-py310h078409c_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.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/osx-arm64/pyarrow-19.0.1-py310hb6292c7_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/pyarrow-core-19.0.1-py310hc17921c_0_cpu.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.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.6-pyh29332c3_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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://prefix.dev/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/python_abi-3.10-6_cp310.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/pytorch-2.6.0-cpu_generic_py310_h10edff7_4.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/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/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/sleef-3.8-h8391f65_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.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.13.3-pyh2585a3b_105.conda + - conda: https://prefix.dev/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + - conda: https://prefix.dev/conda-forge/noarch/tblib-3.1.0-pyhd8ed1ab_0.conda - conda: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + - 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/osx-arm64/tornado-6.4.2-py310h078409c_0.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.13.2-h0e9735f_0.conda + - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_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.30.0-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/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-2025.1.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/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/zlib-1.3.1-h8359307_2.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/zstandard-0.23.0-py310h078409c_1.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda + - pypi: https://files.pythonhosted.org/packages/ca/4a/e59e0968ad52460bb997221fdf5a77d1385b0258f37bfbc84675977b0a62/sparse-0.16.0-py2.py3-none-any.whl - 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.11.2-pyh29332c3_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.9-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/win-64/aws-c-auth-0.8.7-h04a0843_1.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-cal-0.8.7-h131b658_1.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-common-0.12.1-h2466b09_0.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-compression-0.3.1-h131b658_3.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-event-stream-0.5.4-hddb29df_3.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-http-0.9.5-hdbca9f4_0.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-io-0.17.0-h7371350_8.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-mqtt-0.12.2-hc44c84b_3.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-s3-0.7.13-hf31aad2_3.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-sdkutils-0.2.3-h131b658_3.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-checksums-0.2.3-h131b658_3.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-crt-cpp-0.31.1-h7c9e96e_1.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-sdk-cpp-1.11.510-hddf75dc_4.conda + - conda: https://prefix.dev/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/basedmypy-2.10.0-pyh29332c3_1.conda + - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.28.5-pyh29332c3_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.13.3-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/noarch/bokeh-3.7.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/ca-certificates-2024.8.30-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/libmpdec-4.0.0-h2466b09_0.conda - - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.47.0-h2466b09_1.conda + - conda: https://prefix.dev/conda-forge/win-64/c-ares-1.34.5-h2466b09_0.conda + - conda: https://prefix.dev/conda-forge/win-64/ca-certificates-2025.1.31-h56e8100_0.conda + - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.1.31-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/click-8.1.8-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.8.0-py310h38315fa_0.conda + - conda: https://prefix.dev/conda-forge/noarch/cuda-cccl_win-64-12.8.90-h57928b3_1.conda + - conda: https://prefix.dev/conda-forge/win-64/cuda-cudart-12.8.90-he0c23c2_1.conda + - conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-dev_win-64-12.8.90-he0c23c2_1.conda + - conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-static_win-64-12.8.90-he0c23c2_1.conda + - conda: https://prefix.dev/conda-forge/noarch/cuda-cudart_win-64-12.8.90-he0c23c2_1.conda + - conda: https://prefix.dev/conda-forge/win-64/cuda-cupti-12.8.90-he0c23c2_1.conda + - conda: https://prefix.dev/conda-forge/win-64/cuda-nvrtc-12.8.93-he0c23c2_1.conda + - conda: https://prefix.dev/conda-forge/noarch/cuda-version-12.8-h5d125a7_3.conda + - conda: https://prefix.dev/conda-forge/win-64/cudnn-9.8.0.87-h1361d0a_1.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/win-64/cytoolz-1.0.1-py310ha8f682b_0.conda + - conda: https://prefix.dev/conda-forge/noarch/dask-2025.3.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.3.0-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.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/distributed-2025.3.0-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/executing-2.1.0-pyhd8ed1ab_1.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/win-64/freetype-2.13.3-h0b5ce68_0.conda + - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.3.2-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/hypothesis-6.131.8-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/noarch/identify-2.6.9-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.6.1-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/noarch/ipython-8.35.0-pyh9ab4c32_0.conda + - conda: https://prefix.dev/conda-forge/noarch/isort-6.0.1-pyhd8ed1ab_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/win-64/krb5-1.21.3-hdf4eb48_0.conda + - conda: https://prefix.dev/conda-forge/win-64/lcms2-2.17-hbcf6048_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-20250127.1-cxx17_h4eb7d71_0.conda + - conda: https://prefix.dev/conda-forge/win-64/libarrow-19.0.1-he744d6e_7_cuda.conda + - conda: https://prefix.dev/conda-forge/win-64/libarrow-acero-19.0.1-h7d8d6a5_7_cuda.conda + - conda: https://prefix.dev/conda-forge/win-64/libarrow-dataset-19.0.1-h7d8d6a5_7_cuda.conda + - conda: https://prefix.dev/conda-forge/win-64/libarrow-substrait-19.0.1-hb76e781_7_cuda.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/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-31_h5e41251_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.8.4.1-he0c23c2_1.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.3.3.83-he0c23c2_1.conda + - conda: https://prefix.dev/conda-forge/win-64/libcurand-10.3.9.90-he0c23c2_1.conda + - conda: https://prefix.dev/conda-forge/win-64/libcurl-8.13.0-h88aaa65_0.conda + - conda: https://prefix.dev/conda-forge/win-64/libcusolver-11.7.3.90-he0c23c2_1.conda + - conda: https://prefix.dev/conda-forge/win-64/libcusparse-12.5.8.93-he0c23c2_1.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/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/libgcc-14.2.0-h1383e82_2.conda + - conda: https://prefix.dev/conda-forge/win-64/libgomp-14.2.0-h1383e82_2.conda + - conda: https://prefix.dev/conda-forge/win-64/libgoogle-cloud-2.36.0-hf249c01_1.conda + - conda: https://prefix.dev/conda-forge/win-64/libgoogle-cloud-storage-2.36.0-he5eb982_1.conda + - conda: https://prefix.dev/conda-forge/win-64/libgrpc-1.71.0-h35301be_0.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/libjpeg-turbo-3.0.0-hcfcfb64_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_0.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.8.93-he0c23c2_1.conda + - conda: https://prefix.dev/conda-forge/win-64/libparquet-19.0.1-ha850022_7_cuda.conda + - conda: https://prefix.dev/conda-forge/win-64/libpng-1.6.47-had7236b_0.conda + - conda: https://prefix.dev/conda-forge/win-64/libprotobuf-5.29.3-he9d8c4a_0.conda + - conda: https://prefix.dev/conda-forge/win-64/libre2-11-2024.07.02-hd248061_3.conda + - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.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/libtorch-2.6.0-cuda126_mkl_h09c782d_304.conda + - conda: https://prefix.dev/conda-forge/win-64/libutf8proc-2.10.0-hf9b99b7_0.conda + - conda: https://prefix.dev/conda-forge/win-64/libuv-1.50.0-h2466b09_0.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_9.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.7-h442d1da_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/openssl-3.4.0-h2466b09_0.conda - - conda: https://prefix.dev/conda-forge/win-64/python-3.13.0-hf5aa216_101_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/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/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_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/mpmath-1.3.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/win-64/msgpack-python-1.1.0-py310hc19bc0b_0.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.1-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/narwhals-1.35.0-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.14.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.4-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/openjpeg-2.5.3-h4d64b90_0.conda + - conda: https://prefix.dev/conda-forge/win-64/openssl-3.5.0-ha4e3fda_0.conda + - conda: https://prefix.dev/conda-forge/win-64/optree-0.15.0-py310hc19bc0b_0.conda + - conda: https://prefix.dev/conda-forge/win-64/orc-2.1.1-h35764e3_1.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_3.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/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://prefix.dev/conda-forge/win-64/pillow-11.1.0-py310h9595edc_0.conda + - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.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.2.0-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/win-64/psutil-7.0.0-py310ha8f682b_0.conda + - conda: https://prefix.dev/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda + - conda: https://prefix.dev/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/win-64/pyarrow-19.0.1-py310h5588dad_0.conda + - conda: https://prefix.dev/conda-forge/win-64/pyarrow-core-19.0.1-py310h8b91b4e_0_cuda.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyhab904b8_2.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.6-pyh29332c3_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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://prefix.dev/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/win-64/python_abi-3.10-6_cp310.conda + - conda: https://prefix.dev/conda-forge/win-64/pytorch-2.6.0-cuda126_mkl_py310_h67a8d91_304.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/win-64/re2-2024.07.02-haf4117d_3.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.2-pyhff2d567_0.conda + - conda: https://prefix.dev/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/win-64/sleef-3.8-h7e360cc_0.conda + - conda: https://prefix.dev/conda-forge/win-64/snappy-1.2.1-h500f7fa_1.conda + - conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.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.13.3-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/noarch/tblib-3.1.0-pyhd8ed1ab_0.conda - conda: https://prefix.dev/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.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/win-64/tornado-6.4.2-py310ha8f682b_0.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.13.2-h0e9735f_0.conda + - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_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 - - conda: https://prefix.dev/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 + - 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.30.0-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/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-2025.1.0-pyhd8ed1ab_0.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-py310ha8f682b_1.conda + - conda: https://prefix.dev/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda + - pypi: https://files.pythonhosted.org/packages/ca/4a/e59e0968ad52460bb997221fdf5a77d1385b0258f37bfbc84675977b0a62/sparse-0.16.0-py2.py3-none-any.whl - pypi: . - dev: + docs: channels: - url: https://prefix.dev/conda-forge/ indexes: @@ -334,377 +2118,363 @@ 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/alabaster-1.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/linux-64/astroid-3.3.5-py313h78bf25f_0.conda - - conda: https://prefix.dev/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/basedmypy-2.7.0-pyhd8ed1ab_1.conda - - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.22.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/basedtyping-0.1.10-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.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.11.2-pyh29332c3_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.3-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.8.30-hbcca054_0.conda - - conda: https://prefix.dev/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.1.31-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_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/linux-64/coverage-7.6.8-py313h8060acc_0.conda - - conda: https://prefix.dev/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/dill-0.3.9-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/furo-2024.8.6-pyhd8ed1ab_1.conda - - conda: https://prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://prefix.dev/conda-forge/noarch/identify-2.6.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_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.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.3.0-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/fsspec-2025.3.2-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/iniconfig-2.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/ipython-8.30.0-pyh707e725_0.conda - - conda: https://prefix.dev/conda-forge/noarch/isort-5.13.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.4-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-25_linux64_openblas.conda - - conda: https://prefix.dev/conda-forge/linux-64/libcblas-3.9.0-25_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-25_linux64_openblas.conda + - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.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/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-14.2.0-h767d61c_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgomp-14.2.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_0.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.0-hadc24fc_1.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/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-14.2.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/linux-64/markupsafe-3.0.2-py313h8060acc_0.conda - - conda: https://prefix.dev/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - - conda: https://prefix.dev/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/linux-64/nodejs-22.11.0-hf235a45_0.conda - - conda: https://prefix.dev/conda-forge/noarch/nodejs-wheel-22.11.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/linux-64/numpy-2.1.3-py313h4bf6692_0.conda - - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - - conda: https://prefix.dev/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pylint-3.3.1-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/linux-64/python-3.13.0-h9ebbce0_101_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_0.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/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - - conda: https://prefix.dev/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - 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/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.2.4-py313h17eae1a_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.5.0-h7b32b05_0.conda + - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.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.3.5-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/linux-64/python_abi-3.13-6_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/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/sphinx-8.1.3-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/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/stack_data-0.6.2-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.1.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/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://prefix.dev/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.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.2.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/virtualenv-20.28.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - 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.13.2-h0e9735f_0.conda + - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_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: https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/f7/7782a043553ee469c1ff49cfa1cdace2d6bf99a1f333cf38676b3ddf30da/mdit_py_plugins-0.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ca/b4/b036f8fdb667587bb37df29dc6644681dd78b7a2a6321a34684b79412b28/myst_parser-4.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/fa/ae/322d05bec884977b89eced3af811c228652a9e25f9646ee6236890987214/sphinx_autodoc_typehints-2.5.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/9e/48/1ea60e74949eecb12cdd6ac43987f9fd331156388dcc2319b45e2ebb81bf/sphinx_copybutton-0.5.2-py3-none-any.whl + - 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-py313h536fd9c_1.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.11.2-pyh29332c3_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.3-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/osx-64/ca-certificates-2025.1.31-h8857fd0_0.conda + - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.1.31-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.1-pyhd8ed1ab_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.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.3.0-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/fsspec-2025.3.2-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.6.1-pyha770c72_0.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.2-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_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libmpdec-4.0.0-hfdf4475_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.49.1-hdb6dae5_2.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.2-ha54dae1_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-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.2.4-py313hc518a0f_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/openssl-3.5.0-hc426f3f_0.conda + - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.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.3.5-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/osx-64/python_abi-3.13-6_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-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/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/sphinx-autodoc-typehints-3.1.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-h1abcd95_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.13.2-h0e9735f_0.conda + - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_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.21.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/zstandard-0.23.0-py313h63b0ddb_1.conda - pypi: . osx-arm64: - - conda: https://prefix.dev/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/astroid-3.3.5-py313h8f79df9_0.conda - - conda: https://prefix.dev/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/basedmypy-2.7.0-pyhd8ed1ab_1.conda - - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.22.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/basedtyping-0.1.10-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.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.11.2-pyh29332c3_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.3-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.8.30-hf0a4a13_0.conda - - conda: https://prefix.dev/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.1.31-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_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/osx-arm64/coverage-7.6.8-py313ha9b7d5b_0.conda - - conda: https://prefix.dev/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/dill-0.3.9-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/furo-2024.8.6-pyhd8ed1ab_1.conda - - conda: https://prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://prefix.dev/conda-forge/noarch/identify-2.6.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_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.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.3.0-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/fsspec-2025.3.2-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/iniconfig-2.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/ipython-8.30.0-pyh707e725_0.conda - - conda: https://prefix.dev/conda-forge/noarch/isort-5.13.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-19.1.4-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-25_osxarm64_openblas.conda + - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.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-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.2-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_0.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.0-hbaaea75_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/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_2.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.4-hdb05f8b_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/markupsafe-3.0.2-py313heb2b014_0.conda - - conda: https://prefix.dev/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - - conda: https://prefix.dev/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/nodejs-22.11.0-haa7c7e9_0.conda - - conda: https://prefix.dev/conda-forge/noarch/nodejs-wheel-22.11.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/numpy-2.1.3-py313hca4752e_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - - conda: https://prefix.dev/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pylint-3.3.1-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/python-3.13.0-hbbac1ca_101_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_0.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/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - - conda: https://prefix.dev/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://prefix.dev/conda-forge/osx-arm64/llvm-openmp-20.1.2-hdb05f8b_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/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.2.4-py313h41a2e72_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_0.conda + - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.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.3.5-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/osx-arm64/python_abi-3.13-6_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/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/sphinx-8.1.3-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/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/stack_data-0.6.2-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.1.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-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://prefix.dev/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.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.2.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/virtualenv-20.28.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + - 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.13.2-h0e9735f_0.conda + - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_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: https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/f7/7782a043553ee469c1ff49cfa1cdace2d6bf99a1f333cf38676b3ddf30da/mdit_py_plugins-0.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ca/b4/b036f8fdb667587bb37df29dc6644681dd78b7a2a6321a34684b79412b28/myst_parser-4.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/fa/ae/322d05bec884977b89eced3af811c228652a9e25f9646ee6236890987214/sphinx_autodoc_typehints-2.5.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/9e/48/1ea60e74949eecb12cdd6ac43987f9fd331156388dcc2319b45e2ebb81bf/sphinx_copybutton-0.5.2-py3-none-any.whl + - 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-py313h90d716c_1.conda - pypi: . win-64: - - conda: https://prefix.dev/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/win-64/astroid-3.3.5-py313hfa70ccb_0.conda - - conda: https://prefix.dev/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/basedmypy-2.7.0-pyhd8ed1ab_1.conda - - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.22.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/basedtyping-0.1.10-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.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.11.2-pyh29332c3_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.3-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.8.30-h56e8100_0.conda - - conda: https://prefix.dev/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/win-64/ca-certificates-2025.1.31-h56e8100_0.conda + - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.1.31-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_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/win-64/coverage-7.6.8-py313hb4c8b1a_0.conda - - conda: https://prefix.dev/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/dill-0.3.9-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/furo-2024.8.6-pyhd8ed1ab_1.conda - - conda: https://prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/identify-2.6.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_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.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.3.0-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/fsspec-2025.3.2-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/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.6.1-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/noarch/ipython-8.30.0-pyh7428d3b_0.conda - - conda: https://prefix.dev/conda-forge/noarch/isort-5.13.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/win-64/libblas-3.9.0-25_win64_mkl.conda - - conda: https://prefix.dev/conda-forge/win-64/libcblas-3.9.0-25_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.1-default_h8125262_1000.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-25_win64_mkl.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_0.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.0-h2466b09_1.conda - - conda: https://prefix.dev/conda-forge/win-64/libxml2-2.13.5-h442d1da_0.conda + - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.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.7-h442d1da_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/markupsafe-3.0.2-py313hb4c8b1a_0.conda - - conda: https://prefix.dev/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/win-64/mkl-2024.2.2-h66d3029_14.conda - - conda: https://prefix.dev/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/win-64/nodejs-22.11.0-h57928b3_0.conda - - conda: https://prefix.dev/conda-forge/noarch/nodejs-wheel-22.11.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/win-64/numpy-2.1.3-py313hee8cc43_0.conda - - conda: https://prefix.dev/conda-forge/win-64/openssl-3.4.0-h2466b09_0.conda - - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - - conda: https://prefix.dev/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/win-64/pthreads-win32-2.9.1-h2466b09_4.conda - - conda: https://prefix.dev/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pylint-3.3.1-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyh0701188_6.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/win-64/python-3.13.0-hf5aa216_101_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_0.conda - - conda: https://prefix.dev/conda-forge/win-64/pyyaml-6.0.2-py313ha7868ed_1.conda - - conda: https://prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - - conda: https://prefix.dev/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - 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/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/myst-parser-4.0.1-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/win-64/numpy-2.2.4-py313hefb8edb_0.conda + - conda: https://prefix.dev/conda-forge/win-64/openssl-3.5.0-ha4e3fda_0.conda + - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.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-pyh09c184e_7.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.5-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/win-64/python_abi-3.13-6_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/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/sphinx-8.1.3-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/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/win-64/tbb-2021.13.0-hc790b64_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.1.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/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_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://prefix.dev/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.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.13.2-h0e9735f_0.conda + - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_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.2.3-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.0-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/wcwidth-0.2.13-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_7.conda - - conda: https://prefix.dev/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 + - 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: https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/f7/7782a043553ee469c1ff49cfa1cdace2d6bf99a1f333cf38676b3ddf30da/mdit_py_plugins-0.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ca/b4/b036f8fdb667587bb37df29dc6644681dd78b7a2a6321a34684b79412b28/myst_parser-4.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/fa/ae/322d05bec884977b89eced3af811c228652a9e25f9646ee6236890987214/sphinx_autodoc_typehints-2.5.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/9e/48/1ea60e74949eecb12cdd6ac43987f9fd331156388dcc2319b45e2ebb81bf/sphinx_copybutton-0.5.2-py3-none-any.whl + - 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-py313ha7868ed_1.conda - pypi: . - docs: + lint: channels: - url: https://prefix.dev/conda-forge/ indexes: @@ -713,206 +2483,445 @@ 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/alabaster-1.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.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.11.2-pyh29332c3_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.9-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/basedmypy-2.10.0-pyh29332c3_1.conda + - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.28.5-pyh29332c3_0.conda + - conda: https://prefix.dev/conda-forge/noarch/basedtyping-0.1.10-pyhd8ed1ab_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.8.30-hbcca054_0.conda - - conda: https://prefix.dev/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.1.31-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.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/furo-2024.8.6-pyhd8ed1ab_1.conda - - conda: https://prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_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/click-8.1.8-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.3.0-pyhd8ed1ab_0.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/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.18.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.3.2-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.131.8-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.9-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.4-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/noarch/importlib-metadata-8.6.1-pyha770c72_0.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_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/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-14.2.0-h767d61c_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgomp-14.2.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_0.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.0-hadc24fc_1.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/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-ng-14.2.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.50.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/linux-64/markupsafe-3.0.2-py313h8060acc_0.conda - - conda: https://prefix.dev/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - - conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://prefix.dev/conda-forge/linux-64/python-3.13.0-h9ebbce0_101_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_0.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/requests-2.32.3-pyhd8ed1ab_0.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/noarch/mypy_extensions-1.0.0-pyha770c72_1.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.14.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/numpy-2.2.4-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_0.conda + - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.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.2.0-pyha770c72_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.6-pyh29332c3_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.5-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/linux-64/python_abi-3.13-6_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-78.1.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/sphinx-8.1.3-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/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-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_h4845f30_101.conda - - conda: https://prefix.dev/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - 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.13.2-h0e9735f_0.conda + - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_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.30.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/zstandard-0.23.0-py313h80202fe_1.conda - - conda: https://prefix.dev/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda - - pypi: https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/f7/7782a043553ee469c1ff49cfa1cdace2d6bf99a1f333cf38676b3ddf30da/mdit_py_plugins-0.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ca/b4/b036f8fdb667587bb37df29dc6644681dd78b7a2a6321a34684b79412b28/myst_parser-4.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/fa/ae/322d05bec884977b89eced3af811c228652a9e25f9646ee6236890987214/sphinx_autodoc_typehints-2.5.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/9e/48/1ea60e74949eecb12cdd6ac43987f9fd331156388dcc2319b45e2ebb81bf/sphinx_copybutton-0.5.2-py3-none-any.whl + - conda: https://prefix.dev/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.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_1.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.11.2-pyh29332c3_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.9-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/basedmypy-2.10.0-pyh29332c3_1.conda + - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.28.5-pyh29332c3_0.conda + - conda: https://prefix.dev/conda-forge/noarch/basedtyping-0.1.10-pyhd8ed1ab_1.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/osx-64/ca-certificates-2025.1.31-h8857fd0_0.conda + - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.1.31-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.1-pyhd8ed1ab_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.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.3.0-pyhd8ed1ab_0.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/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.18.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.3.2-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.131.8-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.9-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.6.1-pyha770c72_0.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_0.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.2-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_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libmpdec-4.0.0-hfdf4475_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.49.1-hdb6dae5_2.conda + - conda: https://prefix.dev/conda-forge/osx-64/libuv-1.50.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.2-ha54dae1_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-py313h717bdf5_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-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.14.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/numpy-2.2.4-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_0.conda + - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.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.2.0-pyha770c72_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.6-pyh29332c3_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.5-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/osx-64/python_abi-3.13-6_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-78.1.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/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-h1abcd95_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/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_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.30.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.21.0-pyhd8ed1ab_1.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_1.conda - pypi: . osx-arm64: - - conda: https://prefix.dev/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.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.11.2-pyh29332c3_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.9-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/basedmypy-2.10.0-pyh29332c3_1.conda + - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.28.5-pyh29332c3_0.conda + - conda: https://prefix.dev/conda-forge/noarch/basedtyping-0.1.10-pyhd8ed1ab_1.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.8.30-hf0a4a13_0.conda - - conda: https://prefix.dev/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.1.31-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.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/furo-2024.8.6-pyhd8ed1ab_1.conda - - conda: https://prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_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/click-8.1.8-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.3.0-pyhd8ed1ab_0.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/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.18.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.3.2-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.131.8-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.9-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.4-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-19.1.4-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/noarch/importlib-metadata-8.6.1-pyha770c72_0.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_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.2-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_0.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.0-hbaaea75_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.49.1-h3f77e49_2.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libuv-1.50.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/markupsafe-3.0.2-py313heb2b014_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - - conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://prefix.dev/conda-forge/osx-arm64/python-3.13.0-hbbac1ca_101_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_0.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/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/llvm-openmp-20.1.2-hdb05f8b_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-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_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.14.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/numpy-2.2.4-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_0.conda + - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.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.2.0-pyha770c72_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.6-pyh29332c3_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.5-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/osx-arm64/python_abi-3.13-6_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-78.1.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/sphinx-8.1.3-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/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-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-h5083fa2_1.conda - - conda: https://prefix.dev/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://prefix.dev/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + - 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.13.2-h0e9735f_0.conda + - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_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.30.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/zstandard-0.23.0-py313hf2da073_1.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda - - pypi: https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/f7/7782a043553ee469c1ff49cfa1cdace2d6bf99a1f333cf38676b3ddf30da/mdit_py_plugins-0.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ca/b4/b036f8fdb667587bb37df29dc6644681dd78b7a2a6321a34684b79412b28/myst_parser-4.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/fa/ae/322d05bec884977b89eced3af811c228652a9e25f9646ee6236890987214/sphinx_autodoc_typehints-2.5.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/9e/48/1ea60e74949eecb12cdd6ac43987f9fd331156388dcc2319b45e2ebb81bf/sphinx_copybutton-0.5.2-py3-none-any.whl + - conda: https://prefix.dev/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.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_1.conda - pypi: . win-64: - - conda: https://prefix.dev/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.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.11.2-pyh29332c3_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.9-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/basedmypy-2.10.0-pyh29332c3_1.conda + - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.28.5-pyh29332c3_0.conda + - conda: https://prefix.dev/conda-forge/noarch/basedtyping-0.1.10-pyhd8ed1ab_1.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.8.30-h56e8100_0.conda - - conda: https://prefix.dev/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/win-64/ca-certificates-2025.1.31-h56e8100_0.conda + - conda: https://prefix.dev/conda-forge/noarch/certifi-2025.1.31-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.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/furo-2024.8.6-pyhd8ed1ab_1.conda - - conda: https://prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_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/click-8.1.8-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.3.0-pyhd8ed1ab_0.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/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.18.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.3.2-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.131.8-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/noarch/identify-2.6.9-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.4-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/noarch/importlib-metadata-8.6.1-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/noarch/isort-6.0.1-pyhd8ed1ab_0.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_0.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.0-h2466b09_1.conda + - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.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.7-h442d1da_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/markupsafe-3.0.2-py313hb4c8b1a_0.conda - - conda: https://prefix.dev/conda-forge/win-64/openssl-3.4.0-h2466b09_0.conda - - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - - conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyh0701188_6.tar.bz2 - - conda: https://prefix.dev/conda-forge/win-64/python-3.13.0-hf5aa216_101_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_0.conda - - conda: https://prefix.dev/conda-forge/win-64/pyyaml-6.0.2-py313ha7868ed_1.conda - - conda: https://prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.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/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.13.0-hfeaa22a_0.conda + - conda: https://prefix.dev/conda-forge/noarch/nodejs-wheel-22.14.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/win-64/numpy-2.2.4-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_0.conda + - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.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.2.0-pyha770c72_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.6-pyh29332c3_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.5-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/win-64/python_abi-3.13-6_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-78.1.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/sphinx-8.1.3-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/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-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-h5226925_1.conda - - conda: https://prefix.dev/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.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.13.2-h0e9735f_0.conda + - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_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.2.3-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_7.conda - - conda: https://prefix.dev/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 + - 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.30.0-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/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: https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/f7/7782a043553ee469c1ff49cfa1cdace2d6bf99a1f333cf38676b3ddf30da/mdit_py_plugins-0.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ca/b4/b036f8fdb667587bb37df29dc6644681dd78b7a2a6321a34684b79412b28/myst_parser-4.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/fa/ae/322d05bec884977b89eced3af811c228652a9e25f9646ee6236890987214/sphinx_autodoc_typehints-2.5.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/9e/48/1ea60e74949eecb12cdd6ac43987f9fd331156388dcc2319b45e2ebb81bf/sphinx_copybutton-0.5.2-py3-none-any.whl + - 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-py313ha7868ed_1.conda - pypi: . - lint: + tests: channels: - url: https://prefix.dev/conda-forge/ indexes: @@ -921,207 +2930,2072 @@ 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-strict-2.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/linux-64/astroid-3.3.5-py313h78bf25f_0.conda - - conda: https://prefix.dev/conda-forge/noarch/basedmypy-2.7.0-pyhd8ed1ab_1.conda - - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.22.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/basedtyping-0.1.10-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.11.2-pyh29332c3_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/ca-certificates-2024.8.30-hbcca054_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_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/dill-0.3.9-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_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.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/isort-5.13.2-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-25_linux64_openblas.conda - - conda: https://prefix.dev/conda-forge/linux-64/libcblas-3.9.0-25_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-25_linux64_openblas.conda + - conda: https://prefix.dev/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://prefix.dev/conda-forge/noarch/click-8.1.8-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.0-py313h8060acc_0.conda + - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.131.8-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-14.2.0-h767d61c_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgomp-14.2.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_0.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.0-hadc24fc_1.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/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-14.2.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/mccabe-0.7.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - - conda: https://prefix.dev/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/linux-64/nodejs-22.11.0-hf235a45_0.conda - - conda: https://prefix.dev/conda-forge/noarch/nodejs-wheel-22.11.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/linux-64/numpy-2.1.3-py313h4bf6692_0.conda - - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pylint-3.3.1-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/linux-64/python-3.13.0-h9ebbce0_101_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/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/setuptools-75.6.0-pyhff2d567_1.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.4-py313h17eae1a_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.5.0-h7b32b05_0.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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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/linux-64/python_abi-3.13-6_cp313.conda + - conda: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://prefix.dev/conda-forge/noarch/setuptools-78.1.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_h4845f30_101.conda - - conda: https://prefix.dev/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://prefix.dev/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.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/virtualenv-20.28.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - 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-2025b-h78e105d_0.conda + - pypi: . + osx-64: + - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.11.2-pyh29332c3_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/ca-certificates-2025.1.31-h8857fd0_0.conda + - conda: https://prefix.dev/conda-forge/noarch/click-8.1.8-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.0-py313h717bdf5_0.conda + - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.131.8-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.2-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_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libmpdec-4.0.0-hfdf4475_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.49.1-hdb6dae5_2.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.2-ha54dae1_1.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.4-py313hc518a0f_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/openssl-3.5.0-hc426f3f_0.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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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/osx-64/python_abi-3.13-6_cp313.conda + - conda: https://prefix.dev/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda + - conda: https://prefix.dev/conda-forge/noarch/setuptools-78.1.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-h1abcd95_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-2025b-h78e105d_0.conda + - pypi: . + osx-arm64: + - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.11.2-pyh29332c3_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-2025.1.31-hf0a4a13_0.conda + - conda: https://prefix.dev/conda-forge/noarch/click-8.1.8-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.0-py313ha9b7d5b_0.conda + - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.131.8-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.2-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_0.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.29-openmp_hf332438_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_2.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.2-hdb05f8b_1.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.4-py313h41a2e72_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_0.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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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/osx-arm64/python_abi-3.13-6_cp313.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://prefix.dev/conda-forge/noarch/setuptools-78.1.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-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-2025b-h78e105d_0.conda + - pypi: . + win-64: + - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.11.2-pyh29332c3_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-2025.1.31-h56e8100_0.conda + - conda: https://prefix.dev/conda-forge/noarch/click-8.1.8-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.0-py313hb4c8b1a_0.conda + - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.131.8-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_0.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.49.1-h67fdade_2.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.7-h442d1da_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.4-py313hefb8edb_0.conda + - conda: https://prefix.dev/conda-forge/win-64/openssl-3.5.0-ha4e3fda_0.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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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/win-64/python_abi-3.13-6_cp313.conda + - conda: https://prefix.dev/conda-forge/noarch/setuptools-78.1.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/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-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-backends: + 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.11.2-pyh29332c3_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/aws-c-auth-0.8.7-h7743f02_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-cal-0.8.7-h7d555fd_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-common-0.12.1-hb9d3cd8_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-compression-0.3.1-hcbd9e4e_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-event-stream-0.5.4-h286e7e7_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-http-0.9.5-hbca0721_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-io-0.17.0-ha855f32_8.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-mqtt-0.12.2-hffac463_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-s3-0.7.13-h4c9fe3b_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-sdkutils-0.2.3-hcbd9e4e_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-checksums-0.2.3-hcbd9e4e_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-crt-cpp-0.31.1-h46b750d_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-sdk-cpp-1.11.510-h1fa5cb7_4.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.7.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/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/linux-64/ca-certificates-2025.1.31-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.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.8.0-py310h89163eb_0.conda + - conda: https://prefix.dev/conda-forge/noarch/cpython-3.10.17-py310hd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/cytoolz-1.0.1-py310ha75aee5_0.conda + - conda: https://prefix.dev/conda-forge/noarch/dask-2025.3.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.3.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/distributed-2025.3.0-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.18.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/freetype-2.13.3-h48d6fc4_0.conda + - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.3.2-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/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.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.131.8-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.6.1-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/jax-0.5.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/jaxlib-0.5.2-cpu_py310hc96afab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-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.17-h717163a_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/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://prefix.dev/conda-forge/linux-64/libabseil-20250127.1-cxx17_hbbce691_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/libarrow-19.0.1-hb90904d_7_cpu.conda + - conda: https://prefix.dev/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_7_cpu.conda + - conda: https://prefix.dev/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_7_cpu.conda + - conda: https://prefix.dev/conda-forge/linux-64/libarrow-substrait-19.0.1-h1bed206_7_cpu.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/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-31_h372d94f_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.13.0-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.20250104-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/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-14.2.0-h767d61c_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgoogle-cloud-2.36.0-hc4361e1_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgoogle-cloud-storage-2.36.0-h0121fbd_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgrpc-1.71.0-he753a82_0.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/libjpeg-turbo-3.0.0-hd590300_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_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_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/libopentelemetry-cpp-1.20.0-hd1b1c89_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/libopentelemetry-cpp-headers-1.20.0-ha770c72_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_7_cpu.conda + - conda: https://prefix.dev/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_0.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.49.1-hee588c1_2.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-h8f9b012_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.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.6.0-cpu_mkl_hf6ddc5a_104.conda + - conda: https://prefix.dev/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_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.50.0-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/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libxml2-2.13.7-h4bc477f_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/llvm-openmp-20.1.2-h024ca30_1.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/noarch/narwhals-1.35.0-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/nlohmann_json-3.12.0-h3f2d84a_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.4-py310hefbff90_0.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.5.0-h7b32b05_0.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.15.0-py310h3788b33_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/orc-2.1.1-h17f744e_1.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_3.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/prometheus-cpp-1.3.0-ha5d0236_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/psutil-7.0.0-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-19.0.1-py310hff52083_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/pyarrow-core-19.0.1-py310hac404ae_0_cpu.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://prefix.dev/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/python_abi-3.10-6_cp310.conda + - conda: https://prefix.dev/conda-forge/linux-64/pytorch-2.6.0-cpu_mkl_py310_h8ec2884_104.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/linux-64/s2n-1.5.15-hd830067_0.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/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/sleef-3.8-h1b44611_0.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_1.conda + - conda: https://prefix.dev/conda-forge/noarch/sympy-1.13.3-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.1.0-pyhd8ed1ab_0.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/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.13.2-h0e9735f_0.conda + - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_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/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-2025.1.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/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/zlib-1.3.1-hb9d3cd8_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/zstandard-0.23.0-py310ha75aee5_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda + - pypi: https://files.pythonhosted.org/packages/ca/4a/e59e0968ad52460bb997221fdf5a77d1385b0258f37bfbc84675977b0a62/sparse-0.16.0-py2.py3-none-any.whl + - pypi: . + osx-64: + - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.11.2-pyh29332c3_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/aws-c-auth-0.8.7-he59c91b_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-cal-0.8.7-h91d212f_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-common-0.12.1-h6e16a3a_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-compression-0.3.1-h9988e47_3.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-event-stream-0.5.4-h8941ec8_3.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-http-0.9.5-h10cf2d7_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-io-0.17.0-h61e5591_8.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-mqtt-0.12.2-h26cd796_3.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-s3-0.7.13-h0a7a62b_3.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-sdkutils-0.2.3-h9988e47_3.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-checksums-0.2.3-h9988e47_3.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-crt-cpp-0.31.1-h8ec4a44_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-sdk-cpp-1.11.510-h6101e66_4.conda + - conda: https://prefix.dev/conda-forge/osx-64/azure-core-cpp-1.14.0-h9a36307_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/azure-identity-cpp-1.10.0-ha4e2ba9_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/azure-storage-blobs-cpp-12.13.0-h3d2f5f1_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/azure-storage-common-cpp-12.8.0-h1ccc5ac_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.12.0-h86941f0_1.conda + - conda: https://prefix.dev/conda-forge/noarch/bokeh-3.7.2-pyhd8ed1ab_1.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/osx-64/ca-certificates-2025.1.31-h8857fd0_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/cffi-1.17.1-py310hfce808e_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.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/contourpy-1.3.1-py310hf166250_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/coverage-7.8.0-py310h8e2f543_0.conda + - conda: https://prefix.dev/conda-forge/noarch/cpython-3.10.17-py310hd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/cytoolz-1.0.1-py310hbb8c376_0.conda + - conda: https://prefix.dev/conda-forge/noarch/dask-2025.3.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.3.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/distributed-2025.3.0-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.18.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/freetype-2.13.3-h40dfd5c_0.conda + - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.3.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/gflags-2.2.2-hac325c4_1005.conda + - conda: https://prefix.dev/conda-forge/osx-64/glog-0.7.1-h2790a97_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.1.5-py310he278d95_3.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.131.8-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.6.1-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/jax-0.5.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/jaxlib-0.5.2-cpu_py310h22b337c_1.conda + - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/lcms2-2.17-h72f5680_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 + - conda: https://prefix.dev/conda-forge/osx-64/libabseil-20250127.1-cxx17_h0e468a2_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libarrow-19.0.1-hf1fce67_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-64/libarrow-acero-19.0.1-hdc53af8_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-64/libarrow-dataset-19.0.1-hdc53af8_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-64/libarrow-substrait-19.0.1-ha37b807_7_cpu.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/libbrotlicommon-1.1.0-h00291cd_2.conda + - conda: https://prefix.dev/conda-forge/osx-64/libbrotlidec-1.1.0-h00291cd_2.conda + - conda: https://prefix.dev/conda-forge/osx-64/libbrotlienc-1.1.0-h00291cd_2.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/libcrc32c-1.1.2-he49afe7_0.tar.bz2 + - conda: https://prefix.dev/conda-forge/osx-64/libcurl-8.13.0-h5dec5d8_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libcxx-20.1.2-hf95d169_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libdeflate-1.23-he65b83e_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libev-4.33-h10d778d_2.conda + - conda: https://prefix.dev/conda-forge/osx-64/libevent-2.1.12-ha90c15b_1.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/libgoogle-cloud-2.36.0-h777fda5_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/libgoogle-cloud-storage-2.36.0-h3397294_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/libgrpc-1.71.0-h53c9a1c_0.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/libjpeg-turbo-3.0.0-h0dc2134_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_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libnghttp2-1.64.0-hc7306c3_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libopentelemetry-cpp-1.20.0-h30c661f_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libopentelemetry-cpp-headers-1.20.0-h694c41f_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libparquet-19.0.1-h283e888_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libprotobuf-5.29.3-h1c7185b_0.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.49.1-hdb6dae5_2.conda + - conda: https://prefix.dev/conda-forge/osx-64/libssh2-1.11.1-h3dc7d44_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libthrift-0.21.0-h75589b3_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libtiff-4.7.0-hb77a491_3.conda + - conda: https://prefix.dev/conda-forge/osx-64/libtorch-2.6.0-cpu_mkl_h3891332_104.conda + - conda: https://prefix.dev/conda-forge/osx-64/libutf8proc-2.10.0-h777c5d8_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libuv-1.50.0-h4cb831e_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libxcb-1.17.0-hf1f96e2_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libxml2-2.13.7-h93c44a6_1.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.2-ha54dae1_1.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/lz4-4.3.3-py310hf2a43f7_2.conda + - conda: https://prefix.dev/conda-forge/osx-64/lz4-c-1.10.0-h240833e_1.conda + - 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/msgpack-python-1.1.0-py310hfa8da69_0.conda + - conda: https://prefix.dev/conda-forge/noarch/narwhals-1.35.0-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/osx-64/nlohmann_json-3.12.0-h92383a6_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.4-py310h07c5b4d_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/openjpeg-2.5.3-h7fd6d84_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/openssl-3.5.0-hc426f3f_0.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.15.0-py310hf166250_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/orc-2.1.1-h82caab2_1.conda + - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://prefix.dev/conda-forge/osx-64/pandas-2.2.3-py310h96a9d13_3.conda + - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/pillow-11.1.0-py310hbf7783a_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/prometheus-cpp-1.3.0-h7802330_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/psutil-7.0.0-py310hbb8c376_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/pthread-stubs-0.4-h00291cd_1002.conda + - conda: https://prefix.dev/conda-forge/osx-64/pyarrow-19.0.1-py310h2ec42d9_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/pyarrow-core-19.0.1-py310h86202ae_0_cpu.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://prefix.dev/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/python_abi-3.10-6_cp310.conda + - conda: https://prefix.dev/conda-forge/osx-64/pytorch-2.6.0-cpu_mkl_py310_h73f974a_104.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/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/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/sleef-3.8-hfe0d17b_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/snappy-1.2.1-haf3c120_1.conda + - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://prefix.dev/conda-forge/osx-64/tbb-2021.13.0-hb890de9_1.conda + - conda: https://prefix.dev/conda-forge/noarch/tblib-3.1.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/tk-8.6.13-h1abcd95_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-64/tornado-6.4.2-py310hbb8c376_0.conda + - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_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/xorg-libxau-1.0.12-h6e16a3a_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/xorg-libxdmcp-1.1.5-h00291cd_0.conda + - conda: https://prefix.dev/conda-forge/noarch/xyzservices-2025.1.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/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-64/zlib-1.3.1-hd23fc13_2.conda + - conda: https://prefix.dev/conda-forge/osx-64/zstandard-0.23.0-py310hbb8c376_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda + - pypi: https://files.pythonhosted.org/packages/ca/4a/e59e0968ad52460bb997221fdf5a77d1385b0258f37bfbc84675977b0a62/sparse-0.16.0-py2.py3-none-any.whl - pypi: . osx-arm64: - - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/astroid-3.3.5-py313h8f79df9_0.conda - - conda: https://prefix.dev/conda-forge/noarch/basedmypy-2.7.0-pyhd8ed1ab_1.conda - - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.22.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/basedtyping-0.1.10-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.11.2-pyh29332c3_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/aws-c-auth-0.8.7-h771b9f8_1.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-cal-0.8.7-hf78e982_1.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-common-0.12.1-h5505292_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-compression-0.3.1-h2da6199_3.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-event-stream-0.5.4-hc8cef5c_3.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-http-0.9.5-h7ae4978_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-io-0.17.0-hda12475_8.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-mqtt-0.12.2-hd618802_3.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-s3-0.7.13-hb321cbc_3.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-sdkutils-0.2.3-h2da6199_3.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-checksums-0.2.3-h2da6199_3.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-crt-cpp-0.31.1-hf6bcbf0_1.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-sdk-cpp-1.11.510-hbf97231_4.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.7.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/ca-certificates-2024.8.30-hf0a4a13_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_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/dill-0.3.9-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/filelock-3.16.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/osx-arm64/ca-certificates-2025.1.31-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.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.8.0-py310hc74094e_0.conda + - conda: https://prefix.dev/conda-forge/noarch/cpython-3.10.17-py310hd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/cytoolz-1.0.1-py310h078409c_0.conda + - conda: https://prefix.dev/conda-forge/noarch/dask-2025.3.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.3.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/distributed-2025.3.0-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.18.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/freetype-2.13.3-h1d14073_0.conda + - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.3.2-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.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.131.8-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.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/isort-5.13.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-19.1.4-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-25_osxarm64_openblas.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.0-hbaaea75_1.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda + - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/jax-0.5.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/jaxlib-0.5.2-cpu_py310h2c532f2_1.conda + - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-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.17-h7eeda09_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-20250127.1-cxx17_h07bc746_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-19.0.1-hd4a375f_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-substrait-19.0.1-he749cb8_7_cpu.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/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-31_hb3479ef_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.13.0-h73640d1_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-20.1.2-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.20250104-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/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/libgoogle-cloud-2.36.0-h9484b08_1.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libgoogle-cloud-storage-2.36.0-h7081f7f_1.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libgrpc-1.71.0-hf667ad3_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.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-31_hc9a63f6_openblas.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_0.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.29-openmp_hf332438_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libopentelemetry-cpp-1.20.0-h0181452_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.20.0-hce30654_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libprotobuf-5.29.3-hccd9074_0.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.49.1-h3f77e49_2.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.6.0-cpu_generic_h4059bed_4.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libuv-1.50.0-h5505292_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.7-h52572c6_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.4-hdb05f8b_0.conda - - conda: https://prefix.dev/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - - conda: https://prefix.dev/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/nodejs-22.11.0-haa7c7e9_0.conda - - conda: https://prefix.dev/conda-forge/noarch/nodejs-wheel-22.11.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/numpy-2.1.3-py313hca4752e_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pylint-3.3.1-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/python-3.13.0-hbbac1ca_101_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/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/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/llvm-openmp-20.1.2-hdb05f8b_1.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/noarch/narwhals-1.35.0-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/osx-arm64/nlohmann_json-3.12.0-ha1acc90_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.4-py310h4d83441_0.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.5.0-h81ee809_0.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.15.0-py310h7f4e7e6_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/orc-2.1.1-hd90e43c_1.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-py310h5936506_3.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/prometheus-cpp-1.3.0-h0967b3e_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/psutil-7.0.0-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-19.0.1-py310hb6292c7_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/pyarrow-core-19.0.1-py310hc17921c_0_cpu.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://prefix.dev/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/python_abi-3.10-6_cp310.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/pytorch-2.6.0-cpu_generic_py310_h10edff7_4.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/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/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/sleef-3.8-h8391f65_0.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_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.1.0-pyhd8ed1ab_0.conda - conda: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://prefix.dev/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://prefix.dev/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.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/virtualenv-20.28.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + - 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.13.2-h0e9735f_0.conda + - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_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/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-2025.1.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/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/zlib-1.3.1-h8359307_2.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/zstandard-0.23.0-py310h078409c_1.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda + - pypi: https://files.pythonhosted.org/packages/ca/4a/e59e0968ad52460bb997221fdf5a77d1385b0258f37bfbc84675977b0a62/sparse-0.16.0-py2.py3-none-any.whl - pypi: . win-64: - - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/win-64/astroid-3.3.5-py313hfa70ccb_0.conda - - conda: https://prefix.dev/conda-forge/noarch/basedmypy-2.7.0-pyhd8ed1ab_1.conda - - conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.22.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/basedtyping-0.1.10-pyhd8ed1ab_0.conda + - 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.11.2-pyh29332c3_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/aws-c-auth-0.8.7-h04a0843_1.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-cal-0.8.7-h131b658_1.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-common-0.12.1-h2466b09_0.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-compression-0.3.1-h131b658_3.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-event-stream-0.5.4-hddb29df_3.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-http-0.9.5-hdbca9f4_0.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-io-0.17.0-h7371350_8.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-mqtt-0.12.2-hc44c84b_3.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-s3-0.7.13-hf31aad2_3.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-sdkutils-0.2.3-h131b658_3.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-checksums-0.2.3-h131b658_3.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-crt-cpp-0.31.1-h7c9e96e_1.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-sdk-cpp-1.11.510-hddf75dc_4.conda + - conda: https://prefix.dev/conda-forge/noarch/bokeh-3.7.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/ca-certificates-2024.8.30-h56e8100_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_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/dill-0.3.9-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/identify-2.6.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/win-64/c-ares-1.34.5-h2466b09_0.conda + - conda: https://prefix.dev/conda-forge/win-64/ca-certificates-2025.1.31-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.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.8.0-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-2025.3.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.3.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/distributed-2025.3.0-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.18.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/win-64/freetype-2.13.3-h0b5ce68_0.conda + - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.3.2-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.131.8-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.6.1-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/noarch/isort-5.13.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/win-64/libblas-3.9.0-25_win64_mkl.conda - - conda: https://prefix.dev/conda-forge/win-64/libcblas-3.9.0-25_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.1-default_h8125262_1000.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-25_win64_mkl.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.0-h2466b09_1.conda - - conda: https://prefix.dev/conda-forge/win-64/libxml2-2.13.5-h442d1da_0.conda + - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-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.17-hbcf6048_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-20250127.1-cxx17_h4eb7d71_0.conda + - conda: https://prefix.dev/conda-forge/win-64/libarrow-19.0.1-hb2d35ca_7_cpu.conda + - conda: https://prefix.dev/conda-forge/win-64/libarrow-acero-19.0.1-h7d8d6a5_7_cpu.conda + - conda: https://prefix.dev/conda-forge/win-64/libarrow-dataset-19.0.1-h7d8d6a5_7_cpu.conda + - conda: https://prefix.dev/conda-forge/win-64/libarrow-substrait-19.0.1-hb76e781_7_cpu.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/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-31_h5e41251_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.13.0-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/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/libgcc-14.2.0-h1383e82_2.conda + - conda: https://prefix.dev/conda-forge/win-64/libgomp-14.2.0-h1383e82_2.conda + - conda: https://prefix.dev/conda-forge/win-64/libgoogle-cloud-2.36.0-hf249c01_1.conda + - conda: https://prefix.dev/conda-forge/win-64/libgoogle-cloud-storage-2.36.0-he5eb982_1.conda + - conda: https://prefix.dev/conda-forge/win-64/libgrpc-1.71.0-h35301be_0.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/libjpeg-turbo-3.0.0-hcfcfb64_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_0.conda + - conda: https://prefix.dev/conda-forge/win-64/libparquet-19.0.1-ha850022_7_cpu.conda + - conda: https://prefix.dev/conda-forge/win-64/libpng-1.6.47-had7236b_0.conda + - conda: https://prefix.dev/conda-forge/win-64/libprotobuf-5.29.3-he9d8c4a_0.conda + - conda: https://prefix.dev/conda-forge/win-64/libre2-11-2024.07.02-hd248061_3.conda + - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.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/libtorch-2.6.0-cpu_mkl_hf54a72f_104.conda + - conda: https://prefix.dev/conda-forge/win-64/libutf8proc-2.10.0-hf9b99b7_0.conda + - conda: https://prefix.dev/conda-forge/win-64/libuv-1.50.0-h2466b09_0.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_9.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.7-h442d1da_1.conda - conda: https://prefix.dev/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - - conda: https://prefix.dev/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/win-64/mkl-2024.2.2-h66d3029_14.conda - - conda: https://prefix.dev/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/win-64/nodejs-22.11.0-h57928b3_0.conda - - conda: https://prefix.dev/conda-forge/noarch/nodejs-wheel-22.11.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/win-64/numpy-2.1.3-py313hee8cc43_0.conda - - conda: https://prefix.dev/conda-forge/win-64/openssl-3.4.0-h2466b09_0.conda - - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - - conda: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/win-64/pthreads-win32-2.9.1-h2466b09_4.conda - - conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pylint-3.3.1-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/win-64/python-3.13.0-hf5aa216_101_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/pyyaml-6.0.2-py313ha7868ed_1.conda - - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - - conda: https://prefix.dev/conda-forge/win-64/tbb-2021.13.0-hc790b64_0.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/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/win-64/msgpack-python-1.1.0-py310hc19bc0b_0.conda + - conda: https://prefix.dev/conda-forge/noarch/narwhals-1.35.0-pyhd8ed1ab_0.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.4-py310h4987827_0.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.5.0-ha4e3fda_0.conda + - conda: https://prefix.dev/conda-forge/win-64/optree-0.15.0-py310hc19bc0b_0.conda + - conda: https://prefix.dev/conda-forge/win-64/orc-2.1.1-h35764e3_1.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_3.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-7.0.0-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-19.0.1-py310h5588dad_0.conda + - conda: https://prefix.dev/conda-forge/win-64/pyarrow-core-19.0.1-py310h399dd74_0_cpu.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyhab904b8_2.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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://prefix.dev/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/win-64/python_abi-3.10-6_cp310.conda + - conda: https://prefix.dev/conda-forge/win-64/pytorch-2.6.0-cpu_mkl_py310_h946cf0a_104.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/win-64/re2-2024.07.02-haf4117d_3.conda + - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://prefix.dev/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/win-64/sleef-3.8-h7e360cc_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_1.conda + - conda: https://prefix.dev/conda-forge/noarch/sympy-1.13.3-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.1.0-pyhd8ed1ab_0.conda - conda: https://prefix.dev/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - - conda: https://prefix.dev/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://prefix.dev/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.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/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_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/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.0-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/xz-5.2.6-h8d14728_0.tar.bz2 + - 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/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-2025.1.0-pyhd8ed1ab_0.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-py310ha8f682b_1.conda + - conda: https://prefix.dev/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda + - pypi: https://files.pythonhosted.org/packages/ca/4a/e59e0968ad52460bb997221fdf5a77d1385b0258f37bfbc84675977b0a62/sparse-0.16.0-py2.py3-none-any.whl - pypi: . - tests: + 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.11.2-pyh29332c3_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/aws-c-auth-0.8.7-h7743f02_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-cal-0.8.7-h7d555fd_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-common-0.12.1-hb9d3cd8_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-compression-0.3.1-hcbd9e4e_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-event-stream-0.5.4-h286e7e7_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-http-0.9.5-hbca0721_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-io-0.17.0-ha855f32_8.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-mqtt-0.12.2-hffac463_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-s3-0.7.13-h4c9fe3b_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-c-sdkutils-0.2.3-hcbd9e4e_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-checksums-0.2.3-hcbd9e4e_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-crt-cpp-0.31.1-h46b750d_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/aws-sdk-cpp-1.11.510-h1fa5cb7_4.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.7.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/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/linux-64/ca-certificates-2025.1.31-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.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.8.0-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.8.90-ha770c72_1.conda + - conda: https://prefix.dev/conda-forge/noarch/cuda-crt-dev_linux-64-12.8.93-ha770c72_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/cuda-crt-tools-12.8.93-ha770c72_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/cuda-cudart-12.8.90-h5888daf_1.conda + - conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-dev_linux-64-12.8.90-h3f2d84a_1.conda + - conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-static_linux-64-12.8.90-h3f2d84a_1.conda + - conda: https://prefix.dev/conda-forge/noarch/cuda-cudart_linux-64-12.8.90-h3f2d84a_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/cuda-cuobjdump-12.8.90-hbd13f7d_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/cuda-cupti-12.8.90-h5888daf_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/cuda-cupti-dev-12.8.90-h5888daf_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/cuda-nvcc-tools-12.8.93-he02047a_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/cuda-nvdisasm-12.8.90-hbd13f7d_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/cuda-nvrtc-12.8.93-h5888daf_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/cuda-nvtx-12.8.90-h5888daf_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/cuda-nvvm-tools-12.8.93-he02047a_3.conda + - conda: https://prefix.dev/conda-forge/noarch/cuda-version-12.8-h5d125a7_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/cudnn-9.8.0.87-h81d5506_1.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/linux-64/cytoolz-1.0.1-py310ha75aee5_0.conda + - conda: https://prefix.dev/conda-forge/noarch/dask-2025.3.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.3.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/distributed-2025.3.0-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.18.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/freetype-2.13.3-h48d6fc4_0.conda + - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.3.2-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/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.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.131.8-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.6.1-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/jax-0.5.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/jaxlib-0.5.2-cuda126py310hec873cc_201.conda + - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-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.17-h717163a_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/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://prefix.dev/conda-forge/linux-64/libabseil-20250127.1-cxx17_hbbce691_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/libarrow-19.0.1-hb90904d_7_cpu.conda + - conda: https://prefix.dev/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_7_cpu.conda + - conda: https://prefix.dev/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_7_cpu.conda + - conda: https://prefix.dev/conda-forge/linux-64/libarrow-substrait-19.0.1-h1bed206_7_cpu.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/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/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/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + - conda: https://prefix.dev/conda-forge/linux-64/libcublas-12.8.4.1-h9ab20c4_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libcublas-dev-12.8.4.1-h9ab20c4_1.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.3.3.83-h5888daf_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libcufft-dev-11.3.3.83-h5888daf_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libcufile-1.13.1.3-h628e99a_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libcurand-10.3.9.90-h9ab20c4_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libcurand-dev-10.3.9.90-h9ab20c4_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libcurl-8.13.0-h332b0f4_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/libcusolver-11.7.3.90-h9ab20c4_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libcusolver-dev-11.7.3.90-h9ab20c4_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libcusparse-12.5.8.93-h5888daf_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libcusparse-dev-12.5.8.93-h5888daf_1.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.20250104-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/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-14.2.0-h767d61c_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgcrypt-lib-1.11.0-hb9d3cd8_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgoogle-cloud-2.36.0-hc4361e1_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgoogle-cloud-storage-2.36.0-h0121fbd_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgpg-error-1.53-hbd13f7d_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgrpc-1.71.0-he753a82_0.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/libjpeg-turbo-3.0.0-hd590300_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/libllvm20-20.1.2-ha7bfdaf_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/libmagma-2.9.0-h19665d7_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/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.8.93-h5888daf_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libopentelemetry-cpp-1.20.0-hd1b1c89_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/libopentelemetry-cpp-headers-1.20.0-ha770c72_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_7_cpu.conda + - conda: https://prefix.dev/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_0.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.49.1-hee588c1_2.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-h8f9b012_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libsystemd0-257.4-h4e0b6ca_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.6.0-cuda126_mkl_h99b69db_304.conda + - conda: https://prefix.dev/conda-forge/linux-64/libudev1-257.4-hbe16f8c_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_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.50.0-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/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/libxml2-2.13.7-h4bc477f_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/llvm-openmp-20.1.2-h024ca30_1.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/noarch/narwhals-1.35.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/nccl-2.26.2.1-ha44e49d_1.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/nlohmann_json-3.12.0-h3f2d84a_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.4-py310hefbff90_0.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.5.0-h7b32b05_0.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.15.0-py310h3788b33_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/orc-2.1.1-h17f744e_1.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_3.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/prometheus-cpp-1.3.0-ha5d0236_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/psutil-7.0.0-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-19.0.1-py310hff52083_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/pyarrow-core-19.0.1-py310hac404ae_0_cpu.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://prefix.dev/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/python_abi-3.10-6_cp310.conda + - conda: https://prefix.dev/conda-forge/linux-64/pytorch-2.6.0-cuda126_mkl_py310_h5ee0071_304.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-56.1-h5888daf_1.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/s2n-1.5.15-hd830067_0.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/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/sleef-3.8-h1b44611_0.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_1.conda + - conda: https://prefix.dev/conda-forge/noarch/sympy-1.13.3-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.1.0-pyhd8ed1ab_0.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/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/linux-64/triton-3.2.0-cuda126py310h50ec074_1.conda + - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_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/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-2025.1.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/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/zlib-1.3.1-hb9d3cd8_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/zstandard-0.23.0-py310ha75aee5_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda + - pypi: https://files.pythonhosted.org/packages/ca/4a/e59e0968ad52460bb997221fdf5a77d1385b0258f37bfbc84675977b0a62/sparse-0.16.0-py2.py3-none-any.whl + - pypi: . + osx-64: + - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.11.2-pyh29332c3_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/aws-c-auth-0.8.7-he59c91b_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-cal-0.8.7-h91d212f_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-common-0.12.1-h6e16a3a_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-compression-0.3.1-h9988e47_3.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-event-stream-0.5.4-h8941ec8_3.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-http-0.9.5-h10cf2d7_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-io-0.17.0-h61e5591_8.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-mqtt-0.12.2-h26cd796_3.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-s3-0.7.13-h0a7a62b_3.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-c-sdkutils-0.2.3-h9988e47_3.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-checksums-0.2.3-h9988e47_3.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-crt-cpp-0.31.1-h8ec4a44_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/aws-sdk-cpp-1.11.510-h6101e66_4.conda + - conda: https://prefix.dev/conda-forge/osx-64/azure-core-cpp-1.14.0-h9a36307_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/azure-identity-cpp-1.10.0-ha4e2ba9_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/azure-storage-blobs-cpp-12.13.0-h3d2f5f1_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/azure-storage-common-cpp-12.8.0-h1ccc5ac_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.12.0-h86941f0_1.conda + - conda: https://prefix.dev/conda-forge/noarch/bokeh-3.7.2-pyhd8ed1ab_1.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/osx-64/ca-certificates-2025.1.31-h8857fd0_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/cffi-1.17.1-py310hfce808e_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.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/contourpy-1.3.1-py310hf166250_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/coverage-7.8.0-py310h8e2f543_0.conda + - conda: https://prefix.dev/conda-forge/noarch/cpython-3.10.17-py310hd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/cytoolz-1.0.1-py310hbb8c376_0.conda + - conda: https://prefix.dev/conda-forge/noarch/dask-2025.3.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.3.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/distributed-2025.3.0-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.18.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/freetype-2.13.3-h40dfd5c_0.conda + - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.3.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/gflags-2.2.2-hac325c4_1005.conda + - conda: https://prefix.dev/conda-forge/osx-64/glog-0.7.1-h2790a97_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.1.5-py310he278d95_3.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.131.8-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.6.1-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/jax-0.5.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/jaxlib-0.5.2-cpu_py310h22b337c_1.conda + - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/lcms2-2.17-h72f5680_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 + - conda: https://prefix.dev/conda-forge/osx-64/libabseil-20250127.1-cxx17_h0e468a2_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libarrow-19.0.1-hf1fce67_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-64/libarrow-acero-19.0.1-hdc53af8_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-64/libarrow-dataset-19.0.1-hdc53af8_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-64/libarrow-substrait-19.0.1-ha37b807_7_cpu.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/libbrotlicommon-1.1.0-h00291cd_2.conda + - conda: https://prefix.dev/conda-forge/osx-64/libbrotlidec-1.1.0-h00291cd_2.conda + - conda: https://prefix.dev/conda-forge/osx-64/libbrotlienc-1.1.0-h00291cd_2.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/libcrc32c-1.1.2-he49afe7_0.tar.bz2 + - conda: https://prefix.dev/conda-forge/osx-64/libcurl-8.13.0-h5dec5d8_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libcxx-20.1.2-hf95d169_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libdeflate-1.23-he65b83e_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libev-4.33-h10d778d_2.conda + - conda: https://prefix.dev/conda-forge/osx-64/libevent-2.1.12-ha90c15b_1.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/libgoogle-cloud-2.36.0-h777fda5_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/libgoogle-cloud-storage-2.36.0-h3397294_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/libgrpc-1.71.0-h53c9a1c_0.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/libjpeg-turbo-3.0.0-h0dc2134_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_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libnghttp2-1.64.0-hc7306c3_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libopentelemetry-cpp-1.20.0-h30c661f_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libopentelemetry-cpp-headers-1.20.0-h694c41f_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libparquet-19.0.1-h283e888_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libprotobuf-5.29.3-h1c7185b_0.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.49.1-hdb6dae5_2.conda + - conda: https://prefix.dev/conda-forge/osx-64/libssh2-1.11.1-h3dc7d44_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libthrift-0.21.0-h75589b3_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libtiff-4.7.0-hb77a491_3.conda + - conda: https://prefix.dev/conda-forge/osx-64/libtorch-2.6.0-cpu_mkl_h3891332_104.conda + - conda: https://prefix.dev/conda-forge/osx-64/libutf8proc-2.10.0-h777c5d8_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libuv-1.50.0-h4cb831e_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libxcb-1.17.0-hf1f96e2_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libxml2-2.13.7-h93c44a6_1.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.2-ha54dae1_1.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/lz4-4.3.3-py310hf2a43f7_2.conda + - conda: https://prefix.dev/conda-forge/osx-64/lz4-c-1.10.0-h240833e_1.conda + - 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/msgpack-python-1.1.0-py310hfa8da69_0.conda + - conda: https://prefix.dev/conda-forge/noarch/narwhals-1.35.0-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/osx-64/nlohmann_json-3.12.0-h92383a6_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.4-py310h07c5b4d_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/openjpeg-2.5.3-h7fd6d84_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/openssl-3.5.0-hc426f3f_0.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.15.0-py310hf166250_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/orc-2.1.1-h82caab2_1.conda + - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://prefix.dev/conda-forge/osx-64/pandas-2.2.3-py310h96a9d13_3.conda + - conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/pillow-11.1.0-py310hbf7783a_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/prometheus-cpp-1.3.0-h7802330_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/psutil-7.0.0-py310hbb8c376_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/pthread-stubs-0.4-h00291cd_1002.conda + - conda: https://prefix.dev/conda-forge/osx-64/pyarrow-19.0.1-py310h2ec42d9_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/pyarrow-core-19.0.1-py310h86202ae_0_cpu.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://prefix.dev/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/python_abi-3.10-6_cp310.conda + - conda: https://prefix.dev/conda-forge/osx-64/pytorch-2.6.0-cpu_mkl_py310_h73f974a_104.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/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/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/sleef-3.8-hfe0d17b_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/snappy-1.2.1-haf3c120_1.conda + - conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://prefix.dev/conda-forge/osx-64/tbb-2021.13.0-hb890de9_1.conda + - conda: https://prefix.dev/conda-forge/noarch/tblib-3.1.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/tk-8.6.13-h1abcd95_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-64/tornado-6.4.2-py310hbb8c376_0.conda + - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_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/xorg-libxau-1.0.12-h6e16a3a_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/xorg-libxdmcp-1.1.5-h00291cd_0.conda + - conda: https://prefix.dev/conda-forge/noarch/xyzservices-2025.1.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/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-64/zlib-1.3.1-hd23fc13_2.conda + - conda: https://prefix.dev/conda-forge/osx-64/zstandard-0.23.0-py310hbb8c376_1.conda + - conda: https://prefix.dev/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda + - pypi: https://files.pythonhosted.org/packages/ca/4a/e59e0968ad52460bb997221fdf5a77d1385b0258f37bfbc84675977b0a62/sparse-0.16.0-py2.py3-none-any.whl + - pypi: . + osx-arm64: + - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.11.2-pyh29332c3_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/aws-c-auth-0.8.7-h771b9f8_1.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-cal-0.8.7-hf78e982_1.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-common-0.12.1-h5505292_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-compression-0.3.1-h2da6199_3.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-event-stream-0.5.4-hc8cef5c_3.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-http-0.9.5-h7ae4978_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-io-0.17.0-hda12475_8.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-mqtt-0.12.2-hd618802_3.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-s3-0.7.13-hb321cbc_3.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-sdkutils-0.2.3-h2da6199_3.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-checksums-0.2.3-h2da6199_3.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-crt-cpp-0.31.1-hf6bcbf0_1.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/aws-sdk-cpp-1.11.510-hbf97231_4.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.7.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.5-h5505292_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/ca-certificates-2025.1.31-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.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.8.0-py310hc74094e_0.conda + - conda: https://prefix.dev/conda-forge/noarch/cpython-3.10.17-py310hd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/cytoolz-1.0.1-py310h078409c_0.conda + - conda: https://prefix.dev/conda-forge/noarch/dask-2025.3.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.3.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/distributed-2025.3.0-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.18.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/freetype-2.13.3-h1d14073_0.conda + - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.3.2-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.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.131.8-pyha770c72_0.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.6.1-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/jax-0.5.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/jaxlib-0.5.2-cpu_py310h2c532f2_1.conda + - conda: https://prefix.dev/conda-forge/noarch/jinja2-3.1.6-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.17-h7eeda09_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-20250127.1-cxx17_h07bc746_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-19.0.1-hd4a375f_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-substrait-19.0.1-he749cb8_7_cpu.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/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-31_hb3479ef_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.13.0-h73640d1_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-20.1.2-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.20250104-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/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/libgoogle-cloud-2.36.0-h9484b08_1.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libgoogle-cloud-storage-2.36.0-h7081f7f_1.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libgrpc-1.71.0-hf667ad3_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.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-31_hc9a63f6_openblas.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_0.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.29-openmp_hf332438_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libopentelemetry-cpp-1.20.0-h0181452_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.20.0-hce30654_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_7_cpu.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libprotobuf-5.29.3-hccd9074_0.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.49.1-h3f77e49_2.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.6.0-cpu_generic_h4059bed_4.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/libuv-1.50.0-h5505292_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.7-h52572c6_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-20.1.2-hdb05f8b_1.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/noarch/narwhals-1.35.0-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/osx-arm64/nlohmann_json-3.12.0-ha1acc90_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.4-py310h4d83441_0.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.5.0-h81ee809_0.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.15.0-py310h7f4e7e6_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/orc-2.1.1-hd90e43c_1.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-py310h5936506_3.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/prometheus-cpp-1.3.0-h0967b3e_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/psutil-7.0.0-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-19.0.1-py310hb6292c7_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/pyarrow-core-19.0.1-py310hc17921c_0_cpu.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://prefix.dev/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/python_abi-3.10-6_cp310.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/pytorch-2.6.0-cpu_generic_py310_h10edff7_4.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/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/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/sleef-3.8-h8391f65_0.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_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.1.0-pyhd8ed1ab_0.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.13.2-h0e9735f_0.conda + - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_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/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-2025.1.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/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/zlib-1.3.1-h8359307_2.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/zstandard-0.23.0-py310h078409c_1.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda + - pypi: https://files.pythonhosted.org/packages/ca/4a/e59e0968ad52460bb997221fdf5a77d1385b0258f37bfbc84675977b0a62/sparse-0.16.0-py2.py3-none-any.whl + - 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.11.2-pyh29332c3_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/aws-c-auth-0.8.7-h04a0843_1.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-cal-0.8.7-h131b658_1.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-common-0.12.1-h2466b09_0.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-compression-0.3.1-h131b658_3.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-event-stream-0.5.4-hddb29df_3.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-http-0.9.5-hdbca9f4_0.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-io-0.17.0-h7371350_8.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-mqtt-0.12.2-hc44c84b_3.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-s3-0.7.13-hf31aad2_3.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-c-sdkutils-0.2.3-h131b658_3.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-checksums-0.2.3-h131b658_3.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-crt-cpp-0.31.1-h7c9e96e_1.conda + - conda: https://prefix.dev/conda-forge/win-64/aws-sdk-cpp-1.11.510-hddf75dc_4.conda + - conda: https://prefix.dev/conda-forge/noarch/bokeh-3.7.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.5-h2466b09_0.conda + - conda: https://prefix.dev/conda-forge/win-64/ca-certificates-2025.1.31-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.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.8.0-py310h38315fa_0.conda + - conda: https://prefix.dev/conda-forge/noarch/cuda-cccl_win-64-12.8.90-h57928b3_1.conda + - conda: https://prefix.dev/conda-forge/win-64/cuda-cudart-12.8.90-he0c23c2_1.conda + - conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-dev_win-64-12.8.90-he0c23c2_1.conda + - conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-static_win-64-12.8.90-he0c23c2_1.conda + - conda: https://prefix.dev/conda-forge/noarch/cuda-cudart_win-64-12.8.90-he0c23c2_1.conda + - conda: https://prefix.dev/conda-forge/win-64/cuda-cupti-12.8.90-he0c23c2_1.conda + - conda: https://prefix.dev/conda-forge/win-64/cuda-nvrtc-12.8.93-he0c23c2_1.conda + - conda: https://prefix.dev/conda-forge/noarch/cuda-version-12.8-h5d125a7_3.conda + - conda: https://prefix.dev/conda-forge/win-64/cudnn-9.8.0.87-h1361d0a_1.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/win-64/cytoolz-1.0.1-py310ha8f682b_0.conda + - conda: https://prefix.dev/conda-forge/noarch/dask-2025.3.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.3.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/distributed-2025.3.0-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/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/win-64/freetype-2.13.3-h0b5ce68_0.conda + - conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.3.2-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.131.8-pyha770c72_0.conda + - conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.6.1-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/noarch/jinja2-3.1.6-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.17-hbcf6048_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-20250127.1-cxx17_h4eb7d71_0.conda + - conda: https://prefix.dev/conda-forge/win-64/libarrow-19.0.1-he744d6e_7_cuda.conda + - conda: https://prefix.dev/conda-forge/win-64/libarrow-acero-19.0.1-h7d8d6a5_7_cuda.conda + - conda: https://prefix.dev/conda-forge/win-64/libarrow-dataset-19.0.1-h7d8d6a5_7_cuda.conda + - conda: https://prefix.dev/conda-forge/win-64/libarrow-substrait-19.0.1-hb76e781_7_cuda.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/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-31_h5e41251_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.8.4.1-he0c23c2_1.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.3.3.83-he0c23c2_1.conda + - conda: https://prefix.dev/conda-forge/win-64/libcurand-10.3.9.90-he0c23c2_1.conda + - conda: https://prefix.dev/conda-forge/win-64/libcurl-8.13.0-h88aaa65_0.conda + - conda: https://prefix.dev/conda-forge/win-64/libcusolver-11.7.3.90-he0c23c2_1.conda + - conda: https://prefix.dev/conda-forge/win-64/libcusparse-12.5.8.93-he0c23c2_1.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/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/libgcc-14.2.0-h1383e82_2.conda + - conda: https://prefix.dev/conda-forge/win-64/libgomp-14.2.0-h1383e82_2.conda + - conda: https://prefix.dev/conda-forge/win-64/libgoogle-cloud-2.36.0-hf249c01_1.conda + - conda: https://prefix.dev/conda-forge/win-64/libgoogle-cloud-storage-2.36.0-he5eb982_1.conda + - conda: https://prefix.dev/conda-forge/win-64/libgrpc-1.71.0-h35301be_0.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/libjpeg-turbo-3.0.0-hcfcfb64_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_0.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.8.93-he0c23c2_1.conda + - conda: https://prefix.dev/conda-forge/win-64/libparquet-19.0.1-ha850022_7_cuda.conda + - conda: https://prefix.dev/conda-forge/win-64/libpng-1.6.47-had7236b_0.conda + - conda: https://prefix.dev/conda-forge/win-64/libprotobuf-5.29.3-he9d8c4a_0.conda + - conda: https://prefix.dev/conda-forge/win-64/libre2-11-2024.07.02-hd248061_3.conda + - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.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/libtorch-2.6.0-cuda126_mkl_h09c782d_304.conda + - conda: https://prefix.dev/conda-forge/win-64/libutf8proc-2.10.0-hf9b99b7_0.conda + - conda: https://prefix.dev/conda-forge/win-64/libuv-1.50.0-h2466b09_0.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_9.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.7-h442d1da_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.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/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/win-64/msgpack-python-1.1.0-py310hc19bc0b_0.conda + - conda: https://prefix.dev/conda-forge/noarch/narwhals-1.35.0-pyhd8ed1ab_0.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.4-py310h4987827_0.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.5.0-ha4e3fda_0.conda + - conda: https://prefix.dev/conda-forge/win-64/optree-0.15.0-py310hc19bc0b_0.conda + - conda: https://prefix.dev/conda-forge/win-64/orc-2.1.1-h35764e3_1.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_3.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-7.0.0-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-19.0.1-py310h5588dad_0.conda + - conda: https://prefix.dev/conda-forge/win-64/pyarrow-core-19.0.1-py310h8b91b4e_0_cuda.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + - conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyhab904b8_2.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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://prefix.dev/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/win-64/python_abi-3.10-6_cp310.conda + - conda: https://prefix.dev/conda-forge/win-64/pytorch-2.6.0-cuda126_mkl_py310_h67a8d91_304.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/win-64/re2-2024.07.02-haf4117d_3.conda + - conda: https://prefix.dev/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://prefix.dev/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/win-64/sleef-3.8-h7e360cc_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_1.conda + - conda: https://prefix.dev/conda-forge/noarch/sympy-1.13.3-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.1.0-pyhd8ed1ab_0.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/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_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.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/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-2025.1.0-pyhd8ed1ab_0.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-py310ha8f682b_1.conda + - conda: https://prefix.dev/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda + - pypi: https://files.pythonhosted.org/packages/ca/4a/e59e0968ad52460bb997221fdf5a77d1385b0258f37bfbc84675977b0a62/sparse-0.16.0-py2.py3-none-any.whl + - 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.11.2-pyh29332c3_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/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://prefix.dev/conda-forge/noarch/click-8.1.8-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.0-py310h89163eb_0.conda + - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.131.8-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-14.2.0-h767d61c_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgomp-14.2.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_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/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-ng-14.2.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_0.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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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/linux-64/python_abi-3.10-6_cp310.conda + - conda: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://prefix.dev/conda-forge/noarch/setuptools-78.1.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_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-2025b-h78e105d_0.conda + - pypi: . + osx-64: + - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.11.2-pyh29332c3_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/ca-certificates-2025.1.31-h8857fd0_0.conda + - conda: https://prefix.dev/conda-forge/noarch/click-8.1.8-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.0-py310h8e2f543_0.conda + - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.131.8-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.2-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_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.49.1-hdb6dae5_2.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.2-ha54dae1_1.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_0.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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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/osx-64/python_abi-3.10-6_cp310.conda + - conda: https://prefix.dev/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda + - conda: https://prefix.dev/conda-forge/noarch/setuptools-78.1.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-h1abcd95_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-2025b-h78e105d_0.conda + - pypi: . + osx-arm64: + - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.11.2-pyh29332c3_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-2025.1.31-hf0a4a13_0.conda + - conda: https://prefix.dev/conda-forge/noarch/click-8.1.8-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.0-py310hc74094e_0.conda + - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.131.8-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.2-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_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.49.1-h3f77e49_2.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.2-hdb05f8b_1.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_0.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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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/osx-arm64/python_abi-3.10-6_cp310.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://prefix.dev/conda-forge/noarch/setuptools-78.1.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-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-2025b-h78e105d_0.conda + - pypi: . + win-64: + - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.11.2-pyh29332c3_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-2025.1.31-h56e8100_0.conda + - conda: https://prefix.dev/conda-forge/noarch/click-8.1.8-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.0-py310h38315fa_0.conda + - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.131.8-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_0.conda + - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.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.7-h442d1da_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-1.22.0-py310hcae7c84_1.tar.bz2 + - conda: https://prefix.dev/conda-forge/win-64/openssl-3.5.0-ha4e3fda_0.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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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/win-64/python_abi-3.10-6_cp310.conda + - conda: https://prefix.dev/conda-forge/noarch/setuptools-78.1.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/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-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.11.2-pyh29332c3_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/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://prefix.dev/conda-forge/noarch/click-8.1.8-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.0-py310h89163eb_0.conda + - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.131.8-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-14.2.0-h767d61c_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgomp-14.2.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_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/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-14.2.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.4-py310hefbff90_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.5.0-h7b32b05_0.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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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/linux-64/python_abi-3.10-6_cp310.conda + - conda: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://prefix.dev/conda-forge/noarch/setuptools-78.1.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_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-2025b-h78e105d_0.conda + - pypi: . + osx-64: + - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.11.2-pyh29332c3_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/ca-certificates-2025.1.31-h8857fd0_0.conda + - conda: https://prefix.dev/conda-forge/noarch/click-8.1.8-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.0-py310h8e2f543_0.conda + - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.131.8-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.2-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_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.49.1-hdb6dae5_2.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.2-ha54dae1_1.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.4-py310h07c5b4d_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/openssl-3.5.0-hc426f3f_0.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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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/osx-64/python_abi-3.10-6_cp310.conda + - conda: https://prefix.dev/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda + - conda: https://prefix.dev/conda-forge/noarch/setuptools-78.1.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-h1abcd95_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-2025b-h78e105d_0.conda + - pypi: . + osx-arm64: + - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.11.2-pyh29332c3_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-2025.1.31-hf0a4a13_0.conda + - conda: https://prefix.dev/conda-forge/noarch/click-8.1.8-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.0-py310hc74094e_0.conda + - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.131.8-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.2-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_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.49.1-h3f77e49_2.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.2-hdb05f8b_1.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.4-py310h4d83441_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_0.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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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/osx-arm64/python_abi-3.10-6_cp310.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://prefix.dev/conda-forge/noarch/setuptools-78.1.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-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-2025b-h78e105d_0.conda + - pypi: . + win-64: + - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.11.2-pyh29332c3_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-2025.1.31-h56e8100_0.conda + - conda: https://prefix.dev/conda-forge/noarch/click-8.1.8-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.0-py310h38315fa_0.conda + - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.131.8-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_0.conda + - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.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.7-h442d1da_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.4-py310h4987827_0.conda + - conda: https://prefix.dev/conda-forge/win-64/openssl-3.5.0-ha4e3fda_0.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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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/win-64/python_abi-3.10-6_cp310.conda + - conda: https://prefix.dev/conda-forge/noarch/setuptools-78.1.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/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-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: @@ -1130,149 +5004,194 @@ 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-strict-2.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.11.2-pyh29332c3_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/ca-certificates-2024.8.30-hbcca054_0.conda - - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/linux-64/coverage-7.6.8-py313h8060acc_0.conda - - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-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-25_linux64_openblas.conda - - conda: https://prefix.dev/conda-forge/linux-64/libcblas-3.9.0-25_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-25_linux64_openblas.conda + - conda: https://prefix.dev/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://prefix.dev/conda-forge/noarch/click-8.1.8-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.0-py313h8060acc_0.conda + - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.131.8-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-14.2.0-h767d61c_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libgomp-14.2.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_0.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.0-hadc24fc_1.conda - - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.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.49.1-hee588c1_2.conda + - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-14.2.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-he02047a_1.conda - - conda: https://prefix.dev/conda-forge/linux-64/numpy-2.1.3-py313h4bf6692_0.conda - - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/linux-64/python-3.13.0-h9ebbce0_101_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/ncurses-6.5-h2d0b736_3.conda + - conda: https://prefix.dev/conda-forge/linux-64/numpy-2.2.4-py313h17eae1a_0.conda + - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.5.0-h7b32b05_0.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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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/linux-64/python_abi-3.13-6_cp313.conda + - conda: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://prefix.dev/conda-forge/noarch/setuptools-78.1.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_h4845f30_101.conda - - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://prefix.dev/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - 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-2025b-h78e105d_0.conda + - pypi: . + osx-64: + - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.11.2-pyh29332c3_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/ca-certificates-2025.1.31-h8857fd0_0.conda + - conda: https://prefix.dev/conda-forge/noarch/click-8.1.8-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.0-py313h717bdf5_0.conda + - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.131.8-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.2-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_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/libmpdec-4.0.0-hfdf4475_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.49.1-hdb6dae5_2.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.2-ha54dae1_1.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.4-py313hc518a0f_0.conda + - conda: https://prefix.dev/conda-forge/osx-64/openssl-3.5.0-hc426f3f_0.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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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/osx-64/python_abi-3.13-6_cp313.conda + - conda: https://prefix.dev/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda + - conda: https://prefix.dev/conda-forge/noarch/setuptools-78.1.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-h1abcd95_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-2025b-h78e105d_0.conda - pypi: . osx-arm64: - - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.11.2-pyh29332c3_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.8.30-hf0a4a13_0.conda - - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/osx-arm64/coverage-7.6.8-py313ha9b7d5b_0.conda - - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-19.1.4-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-25_osxarm64_openblas.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://prefix.dev/conda-forge/noarch/click-8.1.8-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.0-py313ha9b7d5b_0.conda + - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.131.8-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.2-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_0.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.0-hbaaea75_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.49.1-h3f77e49_2.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.4-hdb05f8b_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/numpy-2.1.3-py313hca4752e_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/python-3.13.0-hbbac1ca_101_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/llvm-openmp-20.1.2-hdb05f8b_1.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.4-py313h41a2e72_0.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_0.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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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/osx-arm64/python_abi-3.13-6_cp313.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://prefix.dev/conda-forge/noarch/setuptools-78.1.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-h5083fa2_1.conda - - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + - 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-2025b-h78e105d_0.conda - pypi: . win-64: - - conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.11.2-pyh29332c3_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.8.30-h56e8100_0.conda - - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/win-64/coverage-7.6.8-py313hb4c8b1a_0.conda - - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/win-64/ca-certificates-2025.1.31-h56e8100_0.conda + - conda: https://prefix.dev/conda-forge/noarch/click-8.1.8-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.0-py313hb4c8b1a_0.conda + - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.131.8-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-25_win64_mkl.conda - - conda: https://prefix.dev/conda-forge/win-64/libcblas-3.9.0-25_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.1-default_h8125262_1000.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-25_win64_mkl.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_0.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.0-h2466b09_1.conda - - conda: https://prefix.dev/conda-forge/win-64/libxml2-2.13.5-h442d1da_0.conda + - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.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.7-h442d1da_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_14.conda - - conda: https://prefix.dev/conda-forge/win-64/numpy-2.1.3-py313hee8cc43_0.conda - - conda: https://prefix.dev/conda-forge/win-64/openssl-3.4.0-h2466b09_0.conda - - conda: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/win-64/pthreads-win32-2.9.1-h2466b09_4.conda - - conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/win-64/python-3.13.0-hf5aa216_101_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-hc790b64_0.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.4-py313hefb8edb_0.conda + - conda: https://prefix.dev/conda-forge/win-64/openssl-3.5.0-ha4e3fda_0.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.5-pyhd8ed1ab_0.conda + - conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.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/win-64/python_abi-3.13-6_cp313.conda + - conda: https://prefix.dev/conda-forge/noarch/setuptools-78.1.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/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.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-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 - - conda: https://prefix.dev/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 + - 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: -- kind: conda - name: _libgcc_mutex - version: '0.1' - build: conda_forge - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 +- conda: https://prefix.dev/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 md5: d7c89558ba9fa0495403155b64376d81 - arch: x86_64 - platform: linux license: None purls: [] size: 2562 timestamp: 1578324546067 -- kind: conda - name: _openmp_mutex - version: '4.5' - build: 2_gnu +- conda: https://prefix.dev/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 build_number: 16 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 md5: 73aaf86a425cc6e73fcf236a5a46396d depends: @@ -1280,57 +5199,71 @@ packages: - libgomp >=7.5.0 constrains: - openmp_impl 9999 - arch: x86_64 - platform: linux license: BSD-3-Clause license_family: BSD purls: [] size: 23621 timestamp: 1650670423406 -- kind: conda - name: alabaster - version: 1.0.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda - sha256: a9e1092725561d9bff12d3a4d3bb46c43d3d0db3cbb2c63c9025d1c77e84840c - md5: 7d78a232029458d0077ede6cda30ed0c +- conda: https://prefix.dev/conda-forge/linux-64/_openmp_mutex-4.5-3_kmp_llvm.conda + build_number: 3 + sha256: cec7343e76c9da6a42c7e7cba53391daa6b46155054ef61a5ef522ea27c5a058 + md5: ee5c2118262e30b972bc0b4db8ef0ba5 depends: - - python >=3.9 + - llvm-openmp >=9.0.1 + license: BSD-3-Clause + license_family: BSD + purls: [] + 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: + - 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: 18522 - timestamp: 1722035895436 -- kind: pypi + size: 18684 + timestamp: 1733750512696 +- conda: https://prefix.dev/conda-forge/noarch/array-api-compat-1.11.2-pyh29332c3_0.conda + sha256: 7d5e6591e3c6a337dbf48d42c7935e027e4355b14d62ef3013094318396309a1 + md5: 1826ac16b721678b8a3b3cb3f1a3ae13 + depends: + - python >=3.9 + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/array-api-compat?source=hash-mapping + size: 41599 + timestamp: 1742509526028 +- pypi: . name: array-api-extra - version: 0.2.1.dev0 - path: . - sha256: 81d59ceda4b873652fada8c13d55e7cc98840538e87ecf744e935b7d1ac3017f + version: 0.7.2.dev0 + sha256: eb518a1094740e5a41c947fb7b93845d39c8c52fd03755313440f3771ecad7f6 requires_dist: - - typing-extensions - - 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' + - array-api-compat>=1.11.2,<2 requires_python: '>=3.10' editable: true -- kind: conda - name: array-api-strict - version: '2.2' - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/array-api-strict-2.2-pyhd8ed1ab_0.conda - sha256: 3bce66da928d2a72ccad33317eac5d4a4291d498f59105b46c4d2db155580872 - md5: 5f8d3e0f6b42318772d0f1cdddfe3025 +- conda: https://prefix.dev/conda-forge/noarch/array-api-strict-2.3.1-pyhd8ed1ab_0.conda + sha256: fda42d9e952c4c39354e31d43f1b7e7708a2e66c386074cd995097fe98be9150 + md5: 11107d0aeb8c590a34fee0894909816b depends: - numpy - python >=3.9 @@ -1338,3363 +5271,10007 @@ packages: license_family: BSD purls: - pkg:pypi/array-api-strict?source=hash-mapping - size: 53538 - timestamp: 1731523628496 -- kind: conda - name: astroid - version: 3.3.5 - build: py313h78bf25f_0 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/astroid-3.3.5-py313h78bf25f_0.conda - sha256: 4c17372d16b9ba2c5d30f25eca17d17578d35a56f3ee3f3f54eafd29ef3c4947 - md5: 5266713116fd050a2e4d3c2de84e9fd5 - depends: - - python >=3.13.0rc3,<3.14.0a0 - - python_abi 3.13.* *_cp313 - arch: x86_64 - platform: linux + size: 56647 + timestamp: 1742521671631 +- conda: https://prefix.dev/conda-forge/linux-64/astroid-3.3.9-py310hff52083_0.conda + sha256: b95f04ff05b296e1ac706d57a3a0bf7bf12b3275d6042a48ac73fee0a0631793 + md5: 2d8f1127e88e64103552fbf86a306eee + depends: + - python >=3.10,<3.11.0a0 + - python_abi 3.10.* *_cp310 + - typing_extensions >=4.0.0 license: LGPL-2.1-or-later license_family: LGPL purls: - pkg:pypi/astroid?source=hash-mapping - size: 514058 - timestamp: 1728150528308 -- kind: conda - name: astroid - version: 3.3.5 - build: py313h8f79df9_0 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/astroid-3.3.5-py313h8f79df9_0.conda - sha256: 69d2a8d7dedf40de2a0fd994e67195d6d5d30468c279b7f342d40a9ad7aab84b - md5: ba95e1ac8f810d08dc2242f0a20efeb5 - depends: - - python >=3.13.0rc3,<3.14.0a0 - - python >=3.13.0rc3,<3.14.0a0 *_cp313 + size: 398984 + timestamp: 1741614694388 +- conda: https://prefix.dev/conda-forge/linux-64/astroid-3.3.9-py313h78bf25f_0.conda + sha256: 412b22423c0c26313bdeab7eb83a51a5851ae836221a524e36cfbc1e44138f2d + md5: d2b9567408d4c0c23de9c0cfaf8aebb9 + depends: + - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 - arch: arm64 - platform: osx license: LGPL-2.1-or-later license_family: LGPL purls: - pkg:pypi/astroid?source=hash-mapping - size: 516193 - timestamp: 1728150667440 -- kind: conda - name: astroid - version: 3.3.5 - build: py313hfa70ccb_0 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/astroid-3.3.5-py313hfa70ccb_0.conda - sha256: 5a29105c4ac2d48753d3fef492e00898542ebf08261c2116db303aa534d612fd - md5: 405ae725eb4b0d187a58628a2a27e24c - depends: - - python >=3.13.0rc3,<3.14.0a0 - - python_abi 3.13.* *_cp313 - arch: x86_64 - platform: win - license: LGPL-2.1-or-later - license_family: LGPL + size: 514362 + timestamp: 1741614664457 +- conda: https://prefix.dev/conda-forge/osx-64/astroid-3.3.9-py310h2ec42d9_0.conda + sha256: 088c579f21999db18420da7506a632dd066eaec02ef69981d2fbdcb0783c67b4 + md5: 2a0373704912bd18031fbd7899922412 + depends: + - python >=3.10,<3.11.0a0 + - python_abi 3.10.* *_cp310 + - typing_extensions >=4.0.0 + license: LGPL-2.1-or-later + license_family: LGPL purls: - pkg:pypi/astroid?source=hash-mapping - size: 515267 - timestamp: 1728150683883 -- kind: conda - name: asttokens - version: 2.4.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - sha256: 708168f026df19a0344983754d27d1f7b28bb21afc7b97a82f02c4798a3d2111 - md5: 5f25798dcefd8252ce5f9dc494d5f571 - depends: - - python >=3.5 - - six >=1.12.0 - license: Apache-2.0 - license_family: Apache - purls: - - pkg:pypi/asttokens?source=hash-mapping - size: 28922 - timestamp: 1698341257884 -- kind: conda - name: babel - version: 2.16.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - sha256: fce1d78e42665bb26d3f2b45ce9cacf0d9dbe4c1b2db3879a384eadee53c6231 - md5: 6d4e9ecca8d88977147e109fc7053184 + size: 399605 + timestamp: 1741614723445 +- conda: https://prefix.dev/conda-forge/osx-64/astroid-3.3.9-py313habf4b1d_0.conda + sha256: aa499d72f8c25c5b3d5fca64096c2633c818479b836bc697d3e6649b8e9027f7 + md5: 92969dc114340233fb93334d650c24cc depends: - - python >=3.8 - - pytz >=2015.7 - license: BSD-3-Clause - license_family: BSD + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: LGPL-2.1-or-later + license_family: LGPL purls: - - pkg:pypi/babel?source=hash-mapping - size: 6525614 - timestamp: 1730878929589 -- kind: conda - name: basedmypy - version: 2.7.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/basedmypy-2.7.0-pyhd8ed1ab_1.conda - sha256: 06bfbf1afb0aa40d86d8bd0343592612e1eb96ac28368bdf0c583dd511004e87 - md5: d8ceaa23eb660eae20aa7877992a12d6 + - pkg:pypi/astroid?source=hash-mapping + size: 517951 + timestamp: 1741614777331 +- conda: https://prefix.dev/conda-forge/osx-arm64/astroid-3.3.9-py310hbe9552e_0.conda + sha256: 5e460a8b8ffd364cb649cd3cd216539f480ec6d6f0f5d37b8a60bf9f2cd3cd12 + md5: 80080cc080b540f33474e909f8197b44 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 + - python >=3.10,<3.11.0a0 + - python >=3.10,<3.11.0a0 *_cpython + - python_abi 3.10.* *_cp310 + - typing_extensions >=4.0.0 + license: LGPL-2.1-or-later + license_family: LGPL purls: - - pkg:pypi/basedmypy?source=hash-mapping - size: 1808422 - timestamp: 1732706894788 -- kind: conda - name: basedpyright - version: 1.22.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/basedpyright-1.22.0-pyhd8ed1ab_0.conda - sha256: 5c0a16a9ea8b0579b7e4e737128a9345b0b3b445fdcce59c396091acb657abc3 - md5: 136a82990a3cc16a23c1bc0b45c2363b + - pkg:pypi/astroid?source=hash-mapping + size: 399833 + timestamp: 1741614808536 +- conda: https://prefix.dev/conda-forge/osx-arm64/astroid-3.3.9-py313h8f79df9_0.conda + sha256: f6ce10d20af1f13d9692f3dcc9cb5176ea00a9de376d3b224cab0dfe2fa68545 + md5: 63c2e4063e8c1d6646f8d035d6233601 depends: - - nodejs-wheel >=20.13.1 - - python >=3.9 - license: MIT AND Apache-2.0 + - 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/basedpyright?source=hash-mapping - size: 7506651 - timestamp: 1732918278138 -- kind: conda - name: basedtyping - version: 0.1.10 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/basedtyping-0.1.10-pyhd8ed1ab_0.conda - sha256: 39c731bfbc0532be66bea6a5e25be13a65d1c067f871637753da60173496e5b7 - md5: 866ccb80106142a6484db78da4bfe345 + - pkg:pypi/astroid?source=hash-mapping + size: 516696 + timestamp: 1741615027381 +- conda: https://prefix.dev/conda-forge/win-64/astroid-3.3.9-py310h5588dad_0.conda + sha256: a4ce7d09c0762da3c3f67c5a6ae6e5b364339599e0f8e13ee62440c943ce692d + md5: 09a0c7f312f8a1e34547ea43cc85867f depends: - - mypy_extensions >=1.0.0 - - python >=3.8,<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: 22514 - timestamp: 1732167819924 -- kind: conda - name: beautifulsoup4 - version: 4.12.3 - build: pyha770c72_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - sha256: 7b05b2d0669029326c623b9df7a29fa49d1982a9e7e31b2fea34b4c9a4a72317 - md5: 332493000404d8411859539a5a630865 - depends: - - python >=3.6 - - soupsieve >=1.2 - license: MIT - license_family: MIT + - python >=3.10,<3.11.0a0 + - python_abi 3.10.* *_cp310 + - typing_extensions >=4.0.0 + license: LGPL-2.1-or-later + license_family: LGPL purls: - - pkg:pypi/beautifulsoup4?source=hash-mapping - size: 118200 - timestamp: 1705564819537 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py313h3579c5c_2 - build_number: 2 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/brotli-python-1.1.0-py313h3579c5c_2.conda - sha256: b0a66572f44570ee7cc960e223ca8600d26bb20cfb76f16b95adf13ec4ee3362 - md5: f3bee63c7b5d041d841aff05785c28b7 + - pkg:pypi/astroid?source=hash-mapping + size: 399061 + timestamp: 1741614789905 +- conda: https://prefix.dev/conda-forge/win-64/astroid-3.3.9-py313hfa70ccb_0.conda + sha256: 09fbd82a58a6e67baf39f1ae8c4824925623ff9656d952743b508ec8724de6c8 + md5: e0ed4cbb6c5e410b0673d33202ed96e2 depends: - - __osx >=11.0 - - libcxx >=17 - - python >=3.13.0rc1,<3.14.0a0 - - python >=3.13.0rc1,<3.14.0a0 *_cp313 + - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 - constrains: - - libbrotlicommon 1.1.0 hd74edd7_2 - arch: arm64 - platform: osx - license: MIT - license_family: MIT + license: LGPL-2.1-or-later + license_family: LGPL purls: - - pkg:pypi/brotli?source=hash-mapping - size: 339067 - timestamp: 1725268603536 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py313h46c70d0_2 - build_number: 2 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/brotli-python-1.1.0-py313h46c70d0_2.conda - sha256: da92e5e904465fce33a7a55658b13caa5963cc463c430356373deeda8b2dbc46 - md5: f6bb3742e17a4af0dc3c8ca942683ef6 + - pkg:pypi/astroid?source=hash-mapping + size: 513721 + timestamp: 1741614789100 +- conda: https://prefix.dev/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + sha256: 93b14414b3b3ed91e286e1cbe4e7a60c4e1b1c730b0814d1e452a8ac4b9af593 + md5: 8f587de4bcf981e26228f268df374a9b depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.9 constrains: - - libbrotlicommon 1.1.0 hb9d3cd8_2 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT + - astroid >=2,<4 + license: Apache-2.0 + license_family: Apache purls: - - pkg:pypi/brotli?source=hash-mapping - size: 350424 - timestamp: 1725267803672 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py313h5813708_2 - build_number: 2 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/brotli-python-1.1.0-py313h5813708_2.conda - sha256: e89803147849d429f1ba3eec880b487c2cc4cac48a221079001a2ab1216f3709 - md5: c1a5d95bf18940d2b1d12f7bf2fb589b + - 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: - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - constrains: - - libbrotlicommon 1.1.0 h2466b09_2 - arch: x86_64 - platform: win + - libgcc-ng >=12 + license: GPL-2.0-or-later + license_family: GPL + purls: [] + size: 71042 + timestamp: 1660065501192 +- conda: https://prefix.dev/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + sha256: 99c53ffbcb5dc58084faf18587b215f9ac8ced36bbfb55fa807c00967e419019 + md5: a10d11958cadc13fdb43df75f8b1903f + depends: + - python >=3.9 license: MIT license_family: MIT purls: - - pkg:pypi/brotli?source=hash-mapping - size: 322309 - timestamp: 1725268431915 -- kind: conda - name: bzip2 - version: 1.0.8 - build: h2466b09_7 - build_number: 7 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - sha256: 35a5dad92e88fdd7fc405e864ec239486f4f31eec229e31686e61a140a8e573b - md5: 276e7ffe9ffe39688abc665ef0f45596 + - pkg:pypi/attrs?source=compressed-mapping + size: 57181 + timestamp: 1741918625732 +- conda: https://prefix.dev/conda-forge/linux-64/aws-c-auth-0.8.7-h7743f02_1.conda + sha256: 27e19ef71edc1b3efa842e4b140569a6304d543b75b5acd3df41c8b23dfb9bc5 + md5: 185af639e073ef45fbd75f9d4f30605b + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.7,<0.8.8.0a0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + - aws-c-http >=0.9.5,<0.9.6.0a0 + - aws-c-io >=0.17.0,<0.17.1.0a0 + - aws-c-sdkutils >=0.2.3,<0.2.4.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 110239 + timestamp: 1742504077701 +- conda: https://prefix.dev/conda-forge/osx-64/aws-c-auth-0.8.7-he59c91b_1.conda + sha256: 9568bd2b0b264047c321e24ee2666ad3b1258cc631a092d88221e8edbf1ce407 + md5: 2da819c7354cca79b353ceae4164d65e + depends: + - __osx >=10.13 + - aws-c-cal >=0.8.7,<0.8.8.0a0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + - aws-c-http >=0.9.5,<0.9.6.0a0 + - aws-c-io >=0.17.0,<0.17.1.0a0 + - aws-c-sdkutils >=0.2.3,<0.2.4.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 96645 + timestamp: 1742504262312 +- conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-auth-0.8.7-h771b9f8_1.conda + sha256: 0c0d4b148449e44b7a9b179076fa1ba97e1c8cd3dbe2af403571d87202ebb587 + md5: 41ee5f5d43d1c9e6d63918a9b6f11efd + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.7,<0.8.8.0a0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + - aws-c-http >=0.9.5,<0.9.6.0a0 + - aws-c-io >=0.17.0,<0.17.1.0a0 + - aws-c-sdkutils >=0.2.3,<0.2.4.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 94978 + timestamp: 1742504242748 +- conda: https://prefix.dev/conda-forge/win-64/aws-c-auth-0.8.7-h04a0843_1.conda + sha256: 9081bf439df53b0d967c38b9a2ca3e83f5d27b18593d76fe64c310c17c9a061a + md5: f0d78dc602578435762448dd3f23dc21 depends: + - aws-c-cal >=0.8.7,<0.8.8.0a0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + - aws-c-http >=0.9.5,<0.9.6.0a0 + - aws-c-io >=0.17.0,<0.17.1.0a0 + - aws-c-sdkutils >=0.2.3,<0.2.4.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - arch: x86_64 - platform: win - license: bzip2-1.0.6 - license_family: BSD + license: Apache-2.0 + license_family: Apache purls: [] - size: 54927 - timestamp: 1720974860185 -- kind: conda - name: bzip2 - version: 1.0.8 - build: h4bc722e_7 - build_number: 7 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d - md5: 62ee74e96c5ebb0af99386de58cf9553 + size: 104915 + timestamp: 1742504479681 +- conda: https://prefix.dev/conda-forge/linux-64/aws-c-cal-0.8.7-h7d555fd_1.conda + sha256: a81faf9d8b1e1320eef9371a70a74f7248facec8bb5bfbe935cc03bea27049be + md5: 84de42a656bc56eb19218525fd5a7b5f depends: - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: bzip2-1.0.6 - license_family: BSD + - aws-c-common >=0.12.1,<0.12.2.0a0 + - libgcc >=13 + - openssl >=3.4.1,<4.0a0 + license: Apache-2.0 + license_family: Apache purls: [] - size: 252783 - timestamp: 1720974456583 -- kind: conda - name: bzip2 - version: 1.0.8 - build: h99b78c6_7 - build_number: 7 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 - md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + size: 50707 + timestamp: 1742307053854 +- conda: https://prefix.dev/conda-forge/osx-64/aws-c-cal-0.8.7-h91d212f_1.conda + sha256: 7f595a5a07c9669597a3e26125dc5aee3c141570647f428b397df133690bfa07 + md5: b7869f9149cc8705796bb8e3e36be0de depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: bzip2-1.0.6 - license_family: BSD - purls: [] - size: 122909 - timestamp: 1720974522888 -- kind: conda - name: ca-certificates - version: 2024.8.30 - build: h56e8100_0 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/ca-certificates-2024.8.30-h56e8100_0.conda - sha256: 0fcac3a7ffcc556649e034a1802aedf795e64227eaa7194d207b01eaf26454c4 - md5: 4c4fd67c18619be5aa65dc5b6c72e490 - arch: x86_64 - platform: win - license: ISC - purls: [] - size: 158773 - timestamp: 1725019107649 -- kind: conda - name: ca-certificates - version: 2024.8.30 - build: hbcca054_0 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - sha256: afee721baa6d988e27fef1832f68d6f32ac8cc99cdf6015732224c2841a09cea - md5: c27d1c142233b5bc9ca570c6e2e0c244 - arch: x86_64 - platform: linux - license: ISC + - __osx >=10.13 + - aws-c-common >=0.12.1,<0.12.2.0a0 + license: Apache-2.0 + license_family: Apache purls: [] - size: 159003 - timestamp: 1725018903918 -- kind: conda - name: ca-certificates - version: 2024.8.30 - build: hf0a4a13_0 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda - sha256: 2db1733f4b644575dbbdd7994a8f338e6ef937f5ebdb74acd557e9dda0211709 - md5: 40dec13fd8348dbe303e57be74bd3d35 - arch: arm64 - platform: osx - license: ISC + size: 40930 + timestamp: 1742307093006 +- conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-cal-0.8.7-hf78e982_1.conda + sha256: 6d2f2d12abd13c0f043f07f1d39e46edbe17b87a8b67d17837541dd58dd5e4d3 + md5: 4b6bc9fd2c191e3c710b375918402ab7 + depends: + - __osx >=11.0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + license: Apache-2.0 + license_family: Apache purls: [] - size: 158482 - timestamp: 1725019034582 -- kind: conda - name: certifi - version: 2024.8.30 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - sha256: 7020770df338c45ac6b560185956c32f0a5abf4b76179c037f115fc7d687819f - md5: 12f7d00853807b0531775e9be891cb11 - depends: - - python >=3.7 - license: ISC - purls: - - pkg:pypi/certifi?source=hash-mapping - size: 163752 - timestamp: 1725278204397 -- kind: conda - name: cffi - version: 1.17.1 - build: py313ha7868ed_0 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/cffi-1.17.1-py313ha7868ed_0.conda - sha256: b19f581fe423858f1f477c52e10978be324c55ebf2e418308d30d013f4a476ff - md5: 519a29d7ac273f8c165efc0af099da42 + size: 41060 + timestamp: 1742307065860 +- conda: https://prefix.dev/conda-forge/win-64/aws-c-cal-0.8.7-h131b658_1.conda + sha256: 50ac0cada8a6ef9837e0959b352c2e32228d45d5b0445ae9aeb57cf68989faab + md5: 5c83259e78bf5b077346571f3cd6485e depends: - - pycparser - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - aws-c-common >=0.12.1,<0.12.2.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - arch: x86_64 - platform: win - license: MIT - license_family: MIT - purls: - - pkg:pypi/cffi?source=hash-mapping - size: 291828 - timestamp: 1725561211547 -- kind: conda - name: cffi - version: 1.17.1 - build: py313hc845a76_0 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/cffi-1.17.1-py313hc845a76_0.conda - sha256: 50650dfa70ccf12b9c4a117d7ef0b41895815bb7328d830d667a6ba3525b60e8 - md5: 6d24d5587a8615db33c961a4ca0a8034 - depends: - - __osx >=11.0 - - libffi >=3.4,<4.0a0 - - pycparser - - python >=3.13.0rc1,<3.14.0a0 - - python >=3.13.0rc1,<3.14.0a0 *_cp313 - - python_abi 3.13.* *_cp313 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - purls: - - pkg:pypi/cffi?source=hash-mapping - size: 282115 - timestamp: 1725560759157 -- kind: conda - name: cffi - version: 1.17.1 - build: py313hfab6e84_0 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/cffi-1.17.1-py313hfab6e84_0.conda - sha256: 73cd6199b143a8a6cbf733ce124ed57defc1b9a7eab9b10fd437448caf8eaa45 - md5: ce6386a5892ef686d6d680c345c40ad1 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 48557 + timestamp: 1742307456156 +- conda: https://prefix.dev/conda-forge/linux-64/aws-c-common-0.12.1-hb9d3cd8_0.conda + sha256: fa4a04190c0b92ed093f9fda53c9ecda9f48d82a895d7a453ecd1ade13be93a2 + md5: eac0ac2d6cf8c0aba9d2028bff9a4374 depends: - __glibc >=2.17,<3.0.a0 - - libffi >=3.4,<4.0a0 - libgcc >=13 - - pycparser - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - purls: - - pkg:pypi/cffi?source=hash-mapping - size: 295514 - timestamp: 1725560706794 -- kind: conda - name: cfgv - version: 3.3.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 - sha256: fbc03537a27ef756162c49b1d0608bf7ab12fa5e38ceb8563d6f4859e835ac5c - md5: ebb5f5f7dc4f1a3780ef7ea7738db08c - depends: - - python >=3.6.1 - license: MIT - license_family: MIT - purls: - - pkg:pypi/cfgv?source=hash-mapping - size: 10788 - timestamp: 1629909423398 -- kind: conda - name: charset-normalizer - version: 3.4.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - sha256: 1873ac45ea61f95750cb0b4e5e675d1c5b3def937e80c7eebb19297f76810be8 - md5: a374efa97290b8799046df7c5ca17164 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 236813 + timestamp: 1742260666479 +- conda: https://prefix.dev/conda-forge/osx-64/aws-c-common-0.12.1-h6e16a3a_0.conda + sha256: 2c564f60ab1386eb4553a319643b29a943ea3b8ea251650dcb38c27d96a76f49 + md5: 21c462db646b09665f0cd536c3bb2deb depends: - - python >=3.7 - license: MIT - license_family: MIT - purls: - - pkg:pypi/charset-normalizer?source=hash-mapping - size: 47314 - timestamp: 1728479405343 -- kind: conda - name: colorama - version: 0.4.6 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698 - md5: 3faab06a954c2a04039983f2c4a50d99 + - __osx >=10.13 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 227728 + timestamp: 1742260763579 +- conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-common-0.12.1-h5505292_0.conda + sha256: 37e3c791dd75d48becb344fd6568a11c6d1f2d2c5c37f99fc4f66bee5f2abb0e + md5: 45d1843c50e765b5e3384f0b65bc55be depends: - - python >=3.7 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/colorama?source=hash-mapping - size: 25170 - timestamp: 1666700778190 -- kind: conda - name: coverage - version: 7.6.8 - build: py310h38315fa_0 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/coverage-7.6.8-py310h38315fa_0.conda - sha256: 26f7df3758c5a6fbca73b76ee415eb0581fe40dd0734c99220cf88b76b18e2ba - md5: 981d75123a07437c07181d5919a6c2af + - __osx >=11.0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 222520 + timestamp: 1742260737881 +- conda: https://prefix.dev/conda-forge/win-64/aws-c-common-0.12.1-h2466b09_0.conda + sha256: 4c1b76b96461868734d081f90b1ac11b289cb6ae1774abe42e192e48317ca595 + md5: 2a3a135a076f269f0455d854ebddaa64 depends: - - python >=3.10,<3.11.0a0 - - python_abi 3.10.* *_cp310 - - tomli - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - arch: x86_64 - platform: win license: Apache-2.0 - license_family: APACHE - purls: - - pkg:pypi/coverage?source=hash-mapping - size: 319434 - timestamp: 1732426451111 -- kind: conda - name: coverage - version: 7.6.8 - build: py310h89163eb_0 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/coverage-7.6.8-py310h89163eb_0.conda - sha256: bf344cd5cba14409c422022dcacdf030f66ed325493ecb6f6bf6f22b7e0ee39b - md5: 1109af252e695897f5acc7c1578202cd + license_family: Apache + purls: [] + size: 235615 + timestamp: 1742260798730 +- conda: https://prefix.dev/conda-forge/linux-64/aws-c-compression-0.3.1-hcbd9e4e_3.conda + sha256: 1a9036907e020a3fe01fc747a65e89e085cd4d561f18082a9e20c574ac802891 + md5: 2e01a03cfc3f90d1bdf9e0f5a0b3ddcd depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - python >=3.10,<3.11.0a0 - - python_abi 3.10.* *_cp310 - - tomli - arch: x86_64 - platform: linux + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.12.1,<0.12.2.0a0 license: Apache-2.0 license_family: APACHE - purls: - - pkg:pypi/coverage?source=hash-mapping - size: 294004 - timestamp: 1732426259018 -- kind: conda - name: coverage - version: 7.6.8 - build: py310hc74094e_0 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/coverage-7.6.8-py310hc74094e_0.conda - sha256: 54451c5fb41b5a3d84c7b11a798707e944a36d72964bc52ed933f5c7799271a1 - md5: 0f258154dbcc44c881025eea5e981126 + purls: [] + size: 21757 + timestamp: 1742306101385 +- conda: https://prefix.dev/conda-forge/osx-64/aws-c-compression-0.3.1-h9988e47_3.conda + sha256: 0d16464909d44322d5cde8849a3825aa7680755a532b309badea63f8cf74bf9a + md5: bd622e2aa988d09e9495f739107147b5 + depends: + - __osx >=10.13 + - aws-c-common >=0.12.1,<0.12.2.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 21097 + timestamp: 1742306136733 +- conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-compression-0.3.1-h2da6199_3.conda + sha256: e8c43b9a495e719ce302598bd5598da2ed51a1b7b2c249961331e28fa4ad9c27 + md5: 3692c987886947ab12b581172ab4678a depends: - __osx >=11.0 - - python >=3.10,<3.11.0a0 - - python >=3.10,<3.11.0a0 *_cpython - - python_abi 3.10.* *_cp310 - - tomli - arch: arm64 - platform: osx + - aws-c-common >=0.12.1,<0.12.2.0a0 license: Apache-2.0 license_family: APACHE - purls: - - pkg:pypi/coverage?source=hash-mapping - size: 293158 - timestamp: 1732426403407 -- kind: conda - name: coverage - version: 7.6.8 - build: py313h8060acc_0 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/coverage-7.6.8-py313h8060acc_0.conda - sha256: 4c6cfa6816d21dc2e799fcb7d4f2d3b7dadeb0eba948cacec84fd33b9a769b54 - md5: cf7681f6c2dc94ff8577430e4c280dc6 + purls: [] + size: 21077 + timestamp: 1742306136047 +- conda: https://prefix.dev/conda-forge/win-64/aws-c-compression-0.3.1-h131b658_3.conda + sha256: afc79b053673273bf05757e5a8a1664fd264182fa48368432130252e8acffbc7 + md5: 4d8b8311f888001cd8af92024314bfac depends: - - __glibc >=2.17,<3.0.a0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - ucrt >=10.0.20348.0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 22575 + timestamp: 1742306186182 +- conda: https://prefix.dev/conda-forge/linux-64/aws-c-event-stream-0.5.4-h286e7e7_3.conda + sha256: 9d920819464a880e3809e5a9ff6b4dee79650178cc4d17ef0bcad4b5ab6ca626 + md5: aac4138e5fe70061b0e4126ee71e3a9f + depends: + - libgcc >=13 + - libstdcxx >=13 + - libgcc >=13 + - __glibc >=2.17,<3.0.a0 + - aws-c-io >=0.17.0,<0.17.1.0a0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + - aws-checksums >=0.2.3,<0.2.4.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 57160 + timestamp: 1742339841110 +- conda: https://prefix.dev/conda-forge/osx-64/aws-c-event-stream-0.5.4-h8941ec8_3.conda + sha256: d6b71c182ad64ee6e420ba63eb21f406ee3572b3f59cbdd6a5c985249028eb7a + md5: d191c450c5200657d559710adfca4086 + depends: + - libcxx >=18 + - __osx >=10.13 + - aws-c-common >=0.12.1,<0.12.2.0a0 + - aws-checksums >=0.2.3,<0.2.4.0a0 + - aws-c-io >=0.17.0,<0.17.1.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 51268 + timestamp: 1742339814250 +- conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-event-stream-0.5.4-hc8cef5c_3.conda + sha256: d462883294b2944950de9c4ac65ab22b746eb4cbfeb259f2dd5350fde156fff2 + md5: b9c4e8e2701a9571553104c8a1a806d4 + depends: + - libcxx >=18 + - __osx >=11.0 + - aws-checksums >=0.2.3,<0.2.4.0a0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + - aws-c-io >=0.17.0,<0.17.1.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 50754 + timestamp: 1742339842813 +- conda: https://prefix.dev/conda-forge/win-64/aws-c-event-stream-0.5.4-hddb29df_3.conda + sha256: 109b708917bff965d78789a1bb3ac035b05e33ba0681607974a2b6bb815e8abe + md5: b9e1b3cc3c6ff7e8529b4b9aa7f74ac9 + depends: + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - ucrt >=10.0.20348.0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + - aws-c-io >=0.17.0,<0.17.1.0a0 + - aws-checksums >=0.2.3,<0.2.4.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 55484 + timestamp: 1742339897054 +- conda: https://prefix.dev/conda-forge/linux-64/aws-c-http-0.9.5-hbca0721_0.conda + sha256: f302f6564f4be749fd8ec7d33f33a3a9d81c9f3e522294763f88377939e59011 + md5: 9cb70e8f68551738d478117fe973c114 + depends: + - libgcc >=13 + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.7,<0.8.8.0a0 + - aws-c-io >=0.17.0,<0.17.1.0a0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + - aws-c-compression >=0.3.1,<0.3.2.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 219164 + timestamp: 1742416753362 +- conda: https://prefix.dev/conda-forge/osx-64/aws-c-http-0.9.5-h10cf2d7_0.conda + sha256: 9fb0f4560d412de81eaf9b6e7b6f024fb30efd0ff590ce1aefde4478fedb521b + md5: 0a2a9c817a3025382648be83f4e79448 + depends: + - __osx >=10.13 + - aws-c-compression >=0.3.1,<0.3.2.0a0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + - aws-c-io >=0.17.0,<0.17.1.0a0 + - aws-c-cal >=0.8.7,<0.8.8.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 185748 + timestamp: 1742416758954 +- conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-http-0.9.5-h7ae4978_0.conda + sha256: 6d297d6d82a4f3ef99ae0ac7c585e618e50e8bc8c8fc30deb52164479f7a9af5 + md5: bec81d40dee493d415119a8f543086f9 + depends: + - __osx >=11.0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + - aws-c-io >=0.17.0,<0.17.1.0a0 + - aws-c-cal >=0.8.7,<0.8.8.0a0 + - aws-c-compression >=0.3.1,<0.3.2.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 169347 + timestamp: 1742416804843 +- conda: https://prefix.dev/conda-forge/win-64/aws-c-http-0.9.5-hdbca9f4_0.conda + sha256: 3439ece85b31c8a6c96a7a036f127aee9e2caa33afffee9f1e1bd6d501879b58 + md5: b3734b2c8409f9a5e746efb2487a05de + depends: + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - ucrt >=10.0.20348.0 + - aws-c-io >=0.17.0,<0.17.1.0a0 + - aws-c-compression >=0.3.1,<0.3.2.0a0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + - aws-c-cal >=0.8.7,<0.8.8.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 197707 + timestamp: 1742416873103 +- conda: https://prefix.dev/conda-forge/linux-64/aws-c-io-0.17.0-ha855f32_8.conda + sha256: 86020bdf163ec74902926518e2e8c780df3b6a03eb13e6675ac0c1abab151d9c + md5: 310a7a7bc53c1e00f938ee2e8c219930 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - aws-c-cal >=0.8.7,<0.8.8.0a0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + - s2n >=1.5.15,<1.5.16.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 174435 + timestamp: 1742573774678 +- conda: https://prefix.dev/conda-forge/osx-64/aws-c-io-0.17.0-h61e5591_8.conda + sha256: 2765e8b64f51fc81f54cf3d4acb72e372ac00cf785b91478c6a8367f3a81bff9 + md5: a710ab9019b093b92c95764696bafc30 + depends: + - __osx >=10.15 + - aws-c-cal >=0.8.7,<0.8.8.0a0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 155154 + timestamp: 1742573813951 +- conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-io-0.17.0-hda12475_8.conda + sha256: b18fa07754a80cb5d35a82a8fe5be53e5e97fe93ccacc6b4f16d67cc6c9f27a8 + md5: 3d55900c55089ec63b4f4112489e2a38 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.7,<0.8.8.0a0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 151493 + timestamp: 1742573805828 +- conda: https://prefix.dev/conda-forge/win-64/aws-c-io-0.17.0-h7371350_8.conda + sha256: b3f52cb93e77d80c8ecb71bc4417caf35c1be450de15d61c5b83675a04e067e5 + md5: 0eff8e639fffe74a17fa9a769c5443ee + depends: + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - ucrt >=10.0.20348.0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + - aws-c-cal >=0.8.7,<0.8.8.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 172855 + timestamp: 1742573878264 +- conda: https://prefix.dev/conda-forge/linux-64/aws-c-mqtt-0.12.2-hffac463_3.conda + sha256: 9c7128829c7978391de4726aeef1b6b93952c062bbc38471577bf50786a29779 + md5: 18d498ed5cd14ab8d7d745a18303edf4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - aws-c-common >=0.12.1,<0.12.2.0a0 + - aws-c-io >=0.17.0,<0.17.1.0a0 + - aws-c-http >=0.9.5,<0.9.6.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 213877 + timestamp: 1742457580459 +- conda: https://prefix.dev/conda-forge/osx-64/aws-c-mqtt-0.12.2-h26cd796_3.conda + sha256: fb5e2de77a57bcdd4d4cd1bd3bf05ba20ecf2b103d351c709bc8198ca3519b26 + md5: 498743869d70faa8f75733b603f6461c + depends: + - __osx >=10.13 + - aws-c-common >=0.12.1,<0.12.2.0a0 + - aws-c-http >=0.9.5,<0.9.6.0a0 + - aws-c-io >=0.17.0,<0.17.1.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 185601 + timestamp: 1742457574435 +- conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-mqtt-0.12.2-hd618802_3.conda + sha256: 883b0c616ef4770f77e20b38fc5f1ebabd7c2cbc2089695bbe4b020d1c36a675 + md5: 13a14037f640b4413b6a76f058e30469 + depends: + - __osx >=11.0 + - aws-c-io >=0.17.0,<0.17.1.0a0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + - aws-c-http >=0.9.5,<0.9.6.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 149346 + timestamp: 1742457587505 +- conda: https://prefix.dev/conda-forge/win-64/aws-c-mqtt-0.12.2-hc44c84b_3.conda + sha256: 508c7237d79e61320036418f89b2c93c8556d2ac00a9ca76c0b2ec54b50d48d4 + md5: 1337d1cd1c78e6447aaa6630d924d8a3 + depends: + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - ucrt >=10.0.20348.0 + - aws-c-http >=0.9.5,<0.9.6.0a0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + - aws-c-io >=0.17.0,<0.17.1.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 202283 + timestamp: 1742590840993 +- conda: https://prefix.dev/conda-forge/linux-64/aws-c-s3-0.7.13-h4c9fe3b_3.conda + sha256: 4ec3df3afa05d65b513492f3ff44b57fc618c00c88e83640a6ff8d48090264e0 + md5: 207518c1b938d5ca2a970c24e342d98f + depends: + - libgcc >=13 + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.7,<0.8.8.0a0 + - aws-checksums >=0.2.3,<0.2.4.0a0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + - aws-c-cal >=0.8.7,<0.8.8.0a0 + - openssl >=3.4.1,<4.0a0 + - aws-c-http >=0.9.5,<0.9.6.0a0 + - aws-c-io >=0.17.0,<0.17.1.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 128915 + timestamp: 1742563189195 +- conda: https://prefix.dev/conda-forge/osx-64/aws-c-s3-0.7.13-h0a7a62b_3.conda + sha256: 8be4414c13b177e362257129508f7a246bc2cd2cc47b408bff7d91fecacc9c70 + md5: bf95907b6800d3bb9128f5015854127e + depends: + - __osx >=10.13 + - aws-c-io >=0.17.0,<0.17.1.0a0 + - aws-c-http >=0.9.5,<0.9.6.0a0 + - aws-c-auth >=0.8.7,<0.8.8.0a0 + - aws-c-cal >=0.8.7,<0.8.8.0a0 + - aws-checksums >=0.2.3,<0.2.4.0a0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 115511 + timestamp: 1742563178428 +- conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-s3-0.7.13-hb321cbc_3.conda + sha256: a7a1691a8600bc54a434005c3ed24b84b158f4c054b355a4628d051c00e9564a + md5: 9f6b86d77a7977fdef743328014ed43f + depends: + - __osx >=11.0 + - aws-c-http >=0.9.5,<0.9.6.0a0 + - aws-c-cal >=0.8.7,<0.8.8.0a0 + - aws-checksums >=0.2.3,<0.2.4.0a0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + - aws-c-io >=0.17.0,<0.17.1.0a0 + - aws-c-auth >=0.8.7,<0.8.8.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 113084 + timestamp: 1742563241509 +- conda: https://prefix.dev/conda-forge/win-64/aws-c-s3-0.7.13-hf31aad2_3.conda + sha256: e592dd37bb1e5e1392dc10137d344fa5af3a2f8bdb78542665d90cc37308e3dd + md5: 299350d30cc4a96a798a0d7ebcc00809 + depends: + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - ucrt >=10.0.20348.0 + - aws-c-auth >=0.8.7,<0.8.8.0a0 + - aws-checksums >=0.2.3,<0.2.4.0a0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + - aws-c-cal >=0.8.7,<0.8.8.0a0 + - aws-c-http >=0.9.5,<0.9.6.0a0 + - aws-c-io >=0.17.0,<0.17.1.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 121813 + timestamp: 1742563312326 +- conda: https://prefix.dev/conda-forge/linux-64/aws-c-sdkutils-0.2.3-hcbd9e4e_3.conda + sha256: 9cba8ae742f2b01a1d5874cce1ab529a92b8d3b946f6cf5c94679c87472f24a3 + md5: 5d6e5bc1d183d02a35f209bfdd71559f + depends: + - libgcc >=13 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 58912 + timestamp: 1742308514862 +- conda: https://prefix.dev/conda-forge/osx-64/aws-c-sdkutils-0.2.3-h9988e47_3.conda + sha256: f570e0eca82d9c790c251d1d64999be7e7c6ae163b9587162bbaad10ddd5938c + md5: 1a984c3db246a0aa3f279c738a8a3c74 + depends: + - __osx >=10.13 + - aws-c-common >=0.12.1,<0.12.2.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 55232 + timestamp: 1742308529891 +- conda: https://prefix.dev/conda-forge/osx-arm64/aws-c-sdkutils-0.2.3-h2da6199_3.conda + sha256: 6c8c0bd1e8272c55cdf855061dfe9558efb91784a38ebaf0ea3b43efe66da6d5 + md5: f36e5d36cfdeb747ec0f6be41a8820eb + depends: + - __osx >=11.0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 53213 + timestamp: 1742308572499 +- conda: https://prefix.dev/conda-forge/win-64/aws-c-sdkutils-0.2.3-h131b658_3.conda + sha256: a425a0a8eb0c941e9ea7705db7da4d4799b07c10813b756cf58c98093bb0b3e2 + md5: 3081355ace80af8ddc5b662c4e1fc7ce + depends: + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - ucrt >=10.0.20348.0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 55521 + timestamp: 1742308625466 +- conda: https://prefix.dev/conda-forge/linux-64/aws-checksums-0.2.3-hcbd9e4e_3.conda + sha256: 7666762171dd434664cbe48e8cd14ea50a7748c38ae1256a887a229921996235 + md5: 42f28750f17fd7fa4a8942f300211bf6 + depends: + - libgcc >=13 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 75314 + timestamp: 1742308579725 +- conda: https://prefix.dev/conda-forge/osx-64/aws-checksums-0.2.3-h9988e47_3.conda + sha256: b5ed752accdf36b4a0e8ab3de0886a0b12860b47046b36ac31f799547a8ffb4d + md5: e7573c983659f9cbac990485e5bfb781 + depends: + - __osx >=10.13 + - aws-c-common >=0.12.1,<0.12.2.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 74718 + timestamp: 1742308623020 +- conda: https://prefix.dev/conda-forge/osx-arm64/aws-checksums-0.2.3-h2da6199_3.conda + sha256: bf4aa546c960f0895d2b19b93032fc179e1b5ba342a8b8dc2cbf956baf3a88c7 + md5: 3abf0378a38f73b37124a9f0c3bd7510 + depends: + - __osx >=11.0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 73973 + timestamp: 1742308590175 +- conda: https://prefix.dev/conda-forge/win-64/aws-checksums-0.2.3-h131b658_3.conda + sha256: d616f27e33ebf1eb3994160118d3b216bac3b875dc7c263914fe7b4c2ea4ba1a + md5: fb447eb0ca5eb5f165d667539fb2c696 + depends: + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - ucrt >=10.0.20348.0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 91853 + timestamp: 1742308671124 +- conda: https://prefix.dev/conda-forge/linux-64/aws-crt-cpp-0.31.1-h46b750d_1.conda + sha256: 7fbb76c513b0a462c50878b1a44a85faac0d86be7f82c6585921d89495661e7d + md5: df4a6731864b1d6e125c0b94328262fe + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libgcc >=13 + - aws-c-io >=0.17.0,<0.17.1.0a0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + - aws-c-auth >=0.8.7,<0.8.8.0a0 + - aws-c-sdkutils >=0.2.3,<0.2.4.0a0 + - aws-c-s3 >=0.7.13,<0.7.14.0a0 + - aws-c-http >=0.9.5,<0.9.6.0a0 + - aws-c-mqtt >=0.12.2,<0.12.3.0a0 + - aws-c-event-stream >=0.5.4,<0.5.5.0a0 + - aws-c-cal >=0.8.7,<0.8.8.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 390029 + timestamp: 1742811275902 +- conda: https://prefix.dev/conda-forge/osx-64/aws-crt-cpp-0.31.1-h8ec4a44_1.conda + sha256: 21c300879fe57cc0b9fd1ea87f4e20e26cfc01d3fb262c289a9b36655bb2d414 + md5: 0b7bb2fec17cd9d907e2cf169bde5dd5 + depends: + - libcxx >=18 + - __osx >=10.13 + - aws-c-http >=0.9.5,<0.9.6.0a0 + - aws-c-cal >=0.8.7,<0.8.8.0a0 + - aws-c-io >=0.17.0,<0.17.1.0a0 + - aws-c-event-stream >=0.5.4,<0.5.5.0a0 + - aws-c-mqtt >=0.12.2,<0.12.3.0a0 + - aws-c-s3 >=0.7.13,<0.7.14.0a0 + - aws-c-auth >=0.8.7,<0.8.8.0a0 + - aws-c-sdkutils >=0.2.3,<0.2.4.0a0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 332178 + timestamp: 1742811270490 +- conda: https://prefix.dev/conda-forge/osx-arm64/aws-crt-cpp-0.31.1-hf6bcbf0_1.conda + sha256: 12bb6091b0e65766f91881dd96e4dd6cc71b739f01c3f2ed84e6b220279fbe0a + md5: ef4334beff49187bd38d7de6bc3e91c8 + depends: + - __osx >=11.0 + - libcxx >=18 + - aws-c-s3 >=0.7.13,<0.7.14.0a0 + - aws-c-mqtt >=0.12.2,<0.12.3.0a0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + - aws-c-io >=0.17.0,<0.17.1.0a0 + - aws-c-auth >=0.8.7,<0.8.8.0a0 + - aws-c-cal >=0.8.7,<0.8.8.0a0 + - aws-c-http >=0.9.5,<0.9.6.0a0 + - aws-c-event-stream >=0.5.4,<0.5.5.0a0 + - aws-c-sdkutils >=0.2.3,<0.2.4.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 259811 + timestamp: 1742811294358 +- conda: https://prefix.dev/conda-forge/win-64/aws-crt-cpp-0.31.1-h7c9e96e_1.conda + sha256: 2edaa5324d9dcffa6673728b6f3fde2bf4b543ad366b0027489158f6768dcffc + md5: 0508502ab173a67335e2cfee0c2a29f4 + depends: + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - ucrt >=10.0.20348.0 + - aws-c-event-stream >=0.5.4,<0.5.5.0a0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + - aws-c-cal >=0.8.7,<0.8.8.0a0 + - aws-c-auth >=0.8.7,<0.8.8.0a0 + - aws-c-sdkutils >=0.2.3,<0.2.4.0a0 + - aws-c-io >=0.17.0,<0.17.1.0a0 + - aws-c-mqtt >=0.12.2,<0.12.3.0a0 + - aws-c-s3 >=0.7.13,<0.7.14.0a0 + - aws-c-http >=0.9.5,<0.9.6.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 287812 + timestamp: 1742811358553 +- conda: https://prefix.dev/conda-forge/linux-64/aws-sdk-cpp-1.11.510-h1fa5cb7_4.conda + sha256: 859b855f17abcafa60a4bc9995866724a4f702b4b0c87f5f1e629d6624dddd93 + md5: b2269aa463cefee750c73da2baf8d583 + depends: + - libgcc >=13 + - libstdcxx >=13 + - libgcc >=13 + - __glibc >=2.17,<3.0.a0 + - libzlib >=1.3.1,<2.0a0 + - libcurl >=8.12.1,<9.0a0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + - aws-c-event-stream >=0.5.4,<0.5.5.0a0 + - aws-crt-cpp >=0.31.1,<0.31.2.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 3401389 + timestamp: 1743505798664 +- conda: https://prefix.dev/conda-forge/osx-64/aws-sdk-cpp-1.11.510-h6101e66_4.conda + sha256: 5cd6dae9d98795f6d85de8a885332fa6488f8370e6b25a52c421d30911db324a + md5: 8ea3ad52b86079acb6008ac3df1e9f86 + depends: + - libcxx >=18 + - __osx >=10.13 + - aws-crt-cpp >=0.31.1,<0.31.2.0a0 + - libzlib >=1.3.1,<2.0a0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + - aws-c-event-stream >=0.5.4,<0.5.5.0a0 + - libcurl >=8.12.1,<9.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 3254674 + timestamp: 1743505842643 +- conda: https://prefix.dev/conda-forge/osx-arm64/aws-sdk-cpp-1.11.510-hbf97231_4.conda + sha256: df9c6a21866b03c0fe6555ac70f85258bf6f4ba23c4751417c3beff772bc9c02 + md5: 9a39dbfc9d771ea92da07da69d2d4476 + depends: + - libcxx >=18 + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + - aws-crt-cpp >=0.31.1,<0.31.2.0a0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + - libcurl >=8.12.1,<9.0a0 + - aws-c-event-stream >=0.5.4,<0.5.5.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 3066012 + timestamp: 1743505797276 +- conda: https://prefix.dev/conda-forge/win-64/aws-sdk-cpp-1.11.510-hddf75dc_4.conda + sha256: 8bc93d94347875c4963b46fab3526b243606705883e51d316a4d43348b8600c8 + md5: 12ac6c423fe2ef753ee8380d338b0fa5 + depends: + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - ucrt >=10.0.20348.0 + - libzlib >=1.3.1,<2.0a0 + - aws-c-event-stream >=0.5.4,<0.5.5.0a0 + - aws-crt-cpp >=0.31.1,<0.31.2.0a0 + - aws-c-common >=0.12.1,<0.12.2.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 3222133 + timestamp: 1743505862630 +- 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-64/azure-core-cpp-1.14.0-h9a36307_0.conda + sha256: c7694fc16b9aebeb6ee5e4f80019b477a181d961a3e4d9b6a66b77777eb754fe + md5: 1082a031824b12a2be731d600cfa5ccb + depends: + - __osx >=10.13 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + purls: [] + size: 303166 + timestamp: 1728053999891 +- 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-64/azure-identity-cpp-1.10.0-ha4e2ba9_0.conda + sha256: b9899b9698a6c7353fc5078c449105aae58635d217befbc8ca9d5a527198019b + md5: ad56b6a4b8931d37a2cf5bc724a46f01 + depends: + - __osx >=10.13 + - 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: 175344 + timestamp: 1728487066445 +- 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-64/azure-storage-blobs-cpp-12.13.0-h3d2f5f1_1.conda + sha256: 31984e52450230d04ca98d5232dbe256e5ef6e32b15d46124135c6e64790010d + md5: 3df4fb5d6d0e7b3fb28e071aff23787e + depends: + - __osx >=10.13 + - 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: 445040 + timestamp: 1728578180436 +- 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,<2.14.0a0 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + purls: [] + size: 149312 + timestamp: 1728563338704 +- conda: https://prefix.dev/conda-forge/osx-64/azure-storage-common-cpp-12.8.0-h1ccc5ac_1.conda + sha256: 51fb67d2991d105b8f7b97b4810cd63bac4dc421a4a9c83c15a98ca520a42e1e + md5: 5b3e79eb148d6e30d6c697788bad9960 + depends: + - __osx >=10.13 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - libxml2 >=2.12.7,<2.14.0a0 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + purls: [] + size: 126229 + timestamp: 1728563580392 +- 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,<2.14.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-64/azure-storage-files-datalake-cpp-12.12.0-h86941f0_1.conda + sha256: 12d95251a8793ea2e78f494e69353a930e9ea06bbaaaa4ccb6e5b3e35ee0744f + md5: 60452336e7f61f6fdaaff69264ee112e + depends: + - __osx >=10.13 + - 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 + license: MIT + license_family: MIT + purls: [] + size: 200991 + timestamp: 1728729588371 +- conda: https://prefix.dev/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d + md5: c49fbc5233fcbaa86391162ff1adef38 + 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 + license: MIT + license_family: MIT + purls: [] + size: 196032 + timestamp: 1728729672889 +- 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=compressed-mapping + size: 6938256 + timestamp: 1738490268466 +- conda: https://prefix.dev/conda-forge/noarch/basedmypy-2.10.0-pyh29332c3_1.conda + sha256: cb8337519cb8190c84a3498c05490f18ed5e5367c1615dd7a30146b81abd7c1d + md5: 495817f1ac090aa7c47e45cfd1d1a801 + depends: + - python >=3.9 + - basedtyping >=0.0.3 + - typing-extensions >=4.1.0 + - mypy_extensions >=1.0.0 + - tomli >=1.1.0 + - python + license: BSD-3-Clause AND Apache-2.0 + purls: + - pkg:pypi/basedmypy?source=hash-mapping + size: 1590486 + timestamp: 1741865637604 +- conda: https://prefix.dev/conda-forge/noarch/basedpyright-1.28.5-pyh29332c3_0.conda + sha256: 09de8ee9f346d65b633d750108298cddc4679ee2208abba76662fe1af400b70f + md5: c26ea9cf3c43c6e73c6d296bb059c13b + depends: + - python >=3.9 + - nodejs-wheel >=20.13.1 + - python + license: MIT AND Apache-2.0 + purls: + - pkg:pypi/basedpyright?source=hash-mapping + size: 8173608 + timestamp: 1744240313778 +- 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.13.3-pyha770c72_0.conda + sha256: 4ce42860292a57867cfc81a5d261fb9886fc709a34eca52164cc8bbf6d03de9f + md5: 373374a3ed20141090504031dc7b693e + depends: + - python >=3.9 + - soupsieve >=1.2 + - typing-extensions + license: MIT + license_family: MIT + purls: + - pkg:pypi/beautifulsoup4?source=compressed-mapping + size: 145482 + timestamp: 1738740460562 +- conda: https://prefix.dev/conda-forge/noarch/bokeh-3.7.2-pyhd8ed1ab_1.conda + sha256: 08242b239354ff98fdf6909d8b77bba96b450445c60c0f8e3aadfafeb8625ba0 + md5: 2f31c581e29bdb830ec77e112f3776ae + depends: + - contourpy >=1.2 + - jinja2 >=2.9 + - narwhals >=1.13 + - 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: 4965019 + timestamp: 1743516468561 +- conda: https://prefix.dev/conda-forge/linux-64/brotli-python-1.1.0-py310hf71b8c6_2.conda + sha256: 14f1e89d3888d560a553f40ac5ba83e4435a107552fa5b2b2029a7472554c1ef + md5: bf502c169c71e3c6ac0d6175addfacc2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.10,<3.11.0a0 + - python_abi 3.10.* *_cp310 + constrains: + - libbrotlicommon 1.1.0 hb9d3cd8_2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 349668 + timestamp: 1725267875087 +- conda: https://prefix.dev/conda-forge/linux-64/brotli-python-1.1.0-py313h46c70d0_2.conda + sha256: da92e5e904465fce33a7a55658b13caa5963cc463c430356373deeda8b2dbc46 + md5: f6bb3742e17a4af0dc3c8ca942683ef6 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - libbrotlicommon 1.1.0 hb9d3cd8_2 + license: MIT + license_family: MIT + purls: + - 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 + depends: + - __osx >=11.0 + - libcxx >=17 + - python >=3.10,<3.11.0a0 + - python >=3.10,<3.11.0a0 *_cpython + - python_abi 3.10.* *_cp310 + constrains: + - libbrotlicommon 1.1.0 hd74edd7_2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 339329 + timestamp: 1725268335778 +- conda: https://prefix.dev/conda-forge/osx-arm64/brotli-python-1.1.0-py313h3579c5c_2.conda + sha256: b0a66572f44570ee7cc960e223ca8600d26bb20cfb76f16b95adf13ec4ee3362 + md5: f3bee63c7b5d041d841aff05785c28b7 + depends: + - __osx >=11.0 + - libcxx >=17 + - python >=3.13.0rc1,<3.14.0a0 + - python >=3.13.0rc1,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - libbrotlicommon 1.1.0 hd74edd7_2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 339067 + timestamp: 1725268603536 +- conda: https://prefix.dev/conda-forge/win-64/brotli-python-1.1.0-py310h9e98ed7_2.conda + sha256: 1b7893a07f2323410b09b63b4627103efa86163be835ac94966333b37741cdc7 + md5: 3a10a1d0cf3ece273195f26191fd6cc6 + 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 + constrains: + - libbrotlicommon 1.1.0 h2466b09_2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 321576 + timestamp: 1725268612274 +- conda: https://prefix.dev/conda-forge/win-64/brotli-python-1.1.0-py313h5813708_2.conda + sha256: e89803147849d429f1ba3eec880b487c2cc4cac48a221079001a2ab1216f3709 + md5: c1a5d95bf18940d2b1d12f7bf2fb589b + depends: + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - libbrotlicommon 1.1.0 h2466b09_2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 322309 + timestamp: 1725268431915 +- conda: https://prefix.dev/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + license: bzip2-1.0.6 + license_family: BSD + 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 + depends: + - __osx >=11.0 + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 122909 + timestamp: 1720974522888 +- conda: https://prefix.dev/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda + sha256: 35a5dad92e88fdd7fc405e864ec239486f4f31eec229e31686e61a140a8e573b + md5: 276e7ffe9ffe39688abc665ef0f45596 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 54927 + timestamp: 1720974860185 +- 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: 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 >=10.13 + license: MIT + license_family: MIT + purls: [] + 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: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: [] + size: 179696 + timestamp: 1744128058734 +- conda: https://prefix.dev/conda-forge/win-64/c-ares-1.34.5-h2466b09_0.conda + sha256: b52214a0a5632a12587d8dac6323f715bcc890f884efba5a2ce01c48c64ec6dc + md5: b1f84168da1f0b76857df7e5817947a9 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: [] + size: 194147 + timestamp: 1744128507613 +- conda: https://prefix.dev/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + license: ISC + purls: [] + size: 158144 + timestamp: 1738298224464 +- conda: https://prefix.dev/conda-forge/osx-64/ca-certificates-2025.1.31-h8857fd0_0.conda + sha256: 42e911ee2d8808eacedbec46d99b03200a6138b8e8a120bd8acabe1cac41c63b + md5: 3418b6c8cac3e71c0bc089fc5ea53042 + license: ISC + purls: [] + size: 158408 + timestamp: 1738298385933 +- conda: https://prefix.dev/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + license: ISC + purls: [] + size: 158425 + timestamp: 1738298167688 +- conda: https://prefix.dev/conda-forge/win-64/ca-certificates-2025.1.31-h56e8100_0.conda + sha256: 1bedccdf25a3bd782d6b0e57ddd97cdcda5501716009f2de4479a779221df155 + md5: 5304a31607974dfc2110dfbb662ed092 + license: ISC + purls: [] + size: 158690 + timestamp: 1738298232550 +- conda: https://prefix.dev/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + sha256: 42a78446da06a2568cb13e69be3355169fbd0ea424b00fc80b7d840f5baaacf3 + md5: c207fa5ac7ea99b149344385a9c0880d + depends: + - python >=3.9 + license: ISC + purls: + - pkg:pypi/certifi?source=compressed-mapping + size: 162721 + timestamp: 1739515973129 +- conda: https://prefix.dev/conda-forge/linux-64/cffi-1.17.1-py310h8deb56e_0.conda + sha256: 1b389293670268ab80c3b8735bc61bc71366862953e000efbb82204d00e41b6c + md5: 1fc24a3196ad5ede2a68148be61894f4 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - 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: 243532 + timestamp: 1725560630552 +- conda: https://prefix.dev/conda-forge/linux-64/cffi-1.17.1-py313hfab6e84_0.conda + sha256: 73cd6199b143a8a6cbf733ce124ed57defc1b9a7eab9b10fd437448caf8eaa45 + md5: ce6386a5892ef686d6d680c345c40ad1 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - 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: 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 + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - pycparser + - 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/cffi?source=hash-mapping + size: 229224 + timestamp: 1725560797724 +- conda: https://prefix.dev/conda-forge/osx-arm64/cffi-1.17.1-py313hc845a76_0.conda + sha256: 50650dfa70ccf12b9c4a117d7ef0b41895815bb7328d830d667a6ba3525b60e8 + md5: 6d24d5587a8615db33c961a4ca0a8034 + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.13.0rc1,<3.14.0a0 + - python >=3.13.0rc1,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 282115 + timestamp: 1725560759157 +- conda: https://prefix.dev/conda-forge/win-64/cffi-1.17.1-py310ha8f682b_0.conda + sha256: 32638e79658f76e3700f783c519025290110f207833ae1d166d262572cbec8a8 + md5: 9c7ec967f4ae263aec56cff05bdbfc07 + depends: + - pycparser + - 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/cffi?source=hash-mapping + size: 238887 + timestamp: 1725561032032 +- conda: https://prefix.dev/conda-forge/win-64/cffi-1.17.1-py313ha7868ed_0.conda + sha256: b19f581fe423858f1f477c52e10978be324c55ebf2e418308d30d013f4a476ff + md5: 519a29d7ac273f8c165efc0af099da42 + depends: + - pycparser + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 291828 + timestamp: 1725561211547 +- conda: https://prefix.dev/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + sha256: d5696636733b3c301054b948cdd793f118efacce361d9bd4afb57d5980a9064f + md5: 57df494053e17dce2ac3a0b33e1b2a2e + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - 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 + 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 + depends: + - __unix + - python >=3.9 + 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 + depends: + - __win + - colorama + - python >=3.9 + 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.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: 25870 + timestamp: 1736947650712 +- conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - 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 + 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 + purls: + - pkg:pypi/contourpy?source=hash-mapping + size: 260973 + timestamp: 1731428528301 +- conda: https://prefix.dev/conda-forge/osx-64/contourpy-1.3.1-py310hf166250_0.conda + sha256: 63f1c586cae772118fd9960fc52040428a24b628537bdaa2a753b2c2bc23afb8 + md5: 455301cdfb2efd1bb2975997929bea4e + depends: + - __osx >=10.13 + - libcxx >=18 + - numpy >=1.23 + - python >=3.10,<3.11.0a0 + - python_abi 3.10.* *_cp310 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/contourpy?source=hash-mapping + size: 238541 + timestamp: 1731428939381 +- conda: https://prefix.dev/conda-forge/osx-arm64/contourpy-1.3.1-py310h7f4e7e6_0.conda + sha256: 3a9cce7ee94d3a9e9cb230a70359945573c01650fd954dc19da58474074334e4 + md5: f32dcaa4434bc4cd66437945c66cec22 + 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 + 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 + 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 + purls: + - pkg:pypi/contourpy?source=hash-mapping + size: 199849 + timestamp: 1731429286097 +- conda: https://prefix.dev/conda-forge/linux-64/coverage-7.8.0-py310h89163eb_0.conda + sha256: ac410dbd3b1e28d40b88a27f801210b853ebd388f3cf20f85c0178e97f788013 + md5: 9f7865c17117d16f804b687b498e35fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.10,<3.11.0a0 + - python_abi 3.10.* *_cp310 + - tomli + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=compressed-mapping + size: 299991 + timestamp: 1743381339117 +- conda: https://prefix.dev/conda-forge/linux-64/coverage-7.8.0-py313h8060acc_0.conda + sha256: 080e95415d3f93652c9d2db4203bb9253341f9d266f583b45fdbcf9c0d3aa046 + md5: 375064d30e709bf7c1d4580e70aaea61 + depends: + - __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/coverage?source=compressed-mapping + size: 379520 + timestamp: 1743381407319 +- conda: https://prefix.dev/conda-forge/osx-64/coverage-7.8.0-py310h8e2f543_0.conda + sha256: b40624c900d9310f2a287c8c271b40dbdd2547b0fd1d93679a6c95b86c2a0c54 + md5: 7ab59a6bbdd4a78bc82ece21cff0c354 + depends: + - __osx >=10.13 + - python >=3.10,<3.11.0a0 + - python_abi 3.10.* *_cp310 + - tomli + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=hash-mapping + size: 299599 + timestamp: 1743381428418 +- conda: https://prefix.dev/conda-forge/osx-64/coverage-7.8.0-py313h717bdf5_0.conda + sha256: 6d9ad7206620b893525cd02f9211b58edcacd0e4c9b115eed55f2623572a53a6 + md5: 1215b56c8d9915318d1714cbd004035f + depends: + - __osx >=10.13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - tomli + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=hash-mapping + size: 378116 + timestamp: 1743381459261 +- conda: https://prefix.dev/conda-forge/osx-arm64/coverage-7.8.0-py310hc74094e_0.conda + sha256: 34d390439935e837ec5005b7c767a5a476560618a518d3cf8173419507f3fd98 + md5: 4851bd96069d731691d872ca6384fde5 + depends: + - __osx >=11.0 + - python >=3.10,<3.11.0a0 + - python >=3.10,<3.11.0a0 *_cpython + - python_abi 3.10.* *_cp310 + - tomli + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=compressed-mapping + size: 300124 + timestamp: 1743381495252 +- conda: https://prefix.dev/conda-forge/osx-arm64/coverage-7.8.0-py313ha9b7d5b_0.conda + sha256: 19ab40f9c5424988029e0fa24f3ee8bdd6ab017a74318ab60bb8f401fec6c8af + md5: d2d7f1911137fdc0d747ebe3d200bc45 + depends: + - __osx >=11.0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + - tomli + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=compressed-mapping + size: 379556 + timestamp: 1743381478018 +- conda: https://prefix.dev/conda-forge/win-64/coverage-7.8.0-py310h38315fa_0.conda + sha256: f16e7370e327f20ccba8a6edfb0441ec425c11c10744d6eaa817d05076b458a5 + md5: 30a825dae940c63c55bca8df4f806f3e + depends: + - python >=3.10,<3.11.0a0 + - python_abi 3.10.* *_cp310 + - tomli + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=compressed-mapping + size: 325689 + timestamp: 1743381828490 +- conda: https://prefix.dev/conda-forge/win-64/coverage-7.8.0-py313hb4c8b1a_0.conda + sha256: 7d14ccc7cf4e54131966f7f830b9bf8e769c1ca7c8fe4ea8bc344edb9a51ab50 + md5: 6bf0550f69baeb8fd2c101d72d544fa2 + depends: + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - tomli + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=hash-mapping + size: 404719 + timestamp: 1743381531629 +- conda: https://prefix.dev/conda-forge/noarch/cpython-3.10.17-py310hd8ed1ab_0.conda + noarch: generic + sha256: 6944d47f2bf3c443d5af855ee0c77156da1b90c6f0e79cedc3b934bcd2794d64 + md5: e2b81369f0473107784f8b7da8e6a8e9 + depends: + - python >=3.10,<3.11.0a0 + - python_abi * *_cp310 + license: Python-2.0 + purls: [] + size: 50554 + timestamp: 1744323109983 +- conda: https://prefix.dev/conda-forge/noarch/cuda-cccl_linux-64-12.8.90-ha770c72_1.conda + sha256: 43b572b5d0c912b5be6c581846443ce24dfb7b6f6013365808cd88d11b8d4391 + md5: cebd15fd844ae8d2b961905c70ab5b62 + depends: + - cuda-version >=12.8,<12.9.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 1064204 + timestamp: 1741373535593 +- conda: https://prefix.dev/conda-forge/noarch/cuda-cccl_win-64-12.8.90-h57928b3_1.conda + sha256: 27b0df2ee3def4bee407a1113e48fa3a7b41239e279539f72463cf2a28766d18 + md5: 9a33f3e2b0dc3681024e78b1aff67870 + depends: + - cuda-version >=12.8,<12.9.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 1055312 + timestamp: 1741373579246 +- conda: https://prefix.dev/conda-forge/noarch/cuda-crt-dev_linux-64-12.8.93-ha770c72_3.conda + sha256: cc09a43373a0e0677051fc6821d797b89ed9d96119d95e342e94f704fc9a5338 + md5: 21a6a73bb90807d78cd0c5f07e3715b9 + depends: + - cuda-version >=12.8,<12.9.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 93330 + timestamp: 1744159239919 +- conda: https://prefix.dev/conda-forge/linux-64/cuda-crt-tools-12.8.93-ha770c72_3.conda + sha256: 8d17500d74992372e3d4929c056ca16a89026ec6b9c9147fcc3c67c54d3a8cac + md5: 3f8d05bb84dbe78ce1b94f85ce74e691 + depends: + - cuda-version >=12.8,<12.9.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 28081 + timestamp: 1744159249576 +- conda: https://prefix.dev/conda-forge/linux-64/cuda-cudart-12.8.90-h5888daf_1.conda + sha256: 294b789d6bce9944fc5987c86dc1cdcdbc4eb965f559b81749dbf03b43e6c135 + md5: 46e0a8ffe985a3aa2652446fc40c7fe9 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart_linux-64 12.8.90 h3f2d84a_1 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 22751 + timestamp: 1741374679128 +- conda: https://prefix.dev/conda-forge/win-64/cuda-cudart-12.8.90-he0c23c2_1.conda + sha256: 9ae3f5aa47b6b09fd8991059f63080b2c5759b125609e8b0218f44c1ee540bf6 + md5: 7afdeb39446eb69f994f25afb102bb8c + depends: + - cuda-cudart_win-64 12.8.90 he0c23c2_1 + - cuda-version >=12.8,<12.9.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 166455 + timestamp: 1741375140780 +- conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-dev_linux-64-12.8.90-h3f2d84a_1.conda + sha256: 04284c4e1f1bbc0625c24a806a4c2680de7b8b079d81cd7fe4f7bc1e1e1ddf66 + md5: 097bef67ba07eba0180cc6f979b3fd41 + depends: + - cuda-cccl_linux-64 + - cuda-cudart-static_linux-64 + - cuda-cudart_linux-64 + - cuda-version >=12.8,<12.9.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 385560 + timestamp: 1741374687362 +- conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-dev_win-64-12.8.90-he0c23c2_1.conda + sha256: cc21fd4346edd61b7672bed389180c7d00446c4724fd8c4b6588a44defec9029 + md5: 6e95a2907824258b1e070ca61dd502e4 + depends: + - cuda-cccl_win-64 + - cuda-cudart-static_win-64 + - cuda-cudart_win-64 + - cuda-version >=12.8,<12.9.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 1047437 + timestamp: 1741375160885 +- conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-static_linux-64-12.8.90-h3f2d84a_1.conda + sha256: 517dfb4b562c9dbdd3f05c35af7f0d0eaa40d204d4a1a373c674e93ed130227d + md5: 7209c9a9ee3e0e7c50fb76fa166f4292 + depends: + - cuda-version >=12.8,<12.9.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 987272 + timestamp: 1741374656668 +- conda: https://prefix.dev/conda-forge/noarch/cuda-cudart-static_win-64-12.8.90-he0c23c2_1.conda + sha256: 465a3648520a1324a23119260fa987dd015c4b22011e1d710919a03d7676dd9a + md5: 83a80ecfc570df2a6ad4007bbc6a24fa + depends: + - cuda-version >=12.8,<12.9.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 347861 + timestamp: 1741374854532 +- conda: https://prefix.dev/conda-forge/noarch/cuda-cudart_linux-64-12.8.90-h3f2d84a_1.conda + sha256: b8b307d03eb16aa111d244004ac48d1e0d0592ade846566bb392f75c54b6828f + md5: 7bfc39f6fd3cfba6ef5fe8db0bc0e94f + depends: + - cuda-version >=12.8,<12.9.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 192766 + timestamp: 1741374664938 +- conda: https://prefix.dev/conda-forge/noarch/cuda-cudart_win-64-12.8.90-he0c23c2_1.conda + sha256: da2356ce91d1105be629eb8b15e7cb8c3ff3f56033c5d9a0ebddc2314d91e71b + md5: 0d459b517a79152e88c17104dc4f4562 + depends: + - cuda-version >=12.8,<12.9.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 22914 + timestamp: 1741374877247 +- conda: https://prefix.dev/conda-forge/linux-64/cuda-cuobjdump-12.8.90-hbd13f7d_1.conda + sha256: 262fbee5daf766777cdc924e40d982ceff9358d8316faa683d6496e402f79b0a + md5: 58f3a7019158135be2aa99f77a07b7b0 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-nvdisasm + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 232426 + timestamp: 1742416137141 +- conda: https://prefix.dev/conda-forge/linux-64/cuda-cupti-12.8.90-h5888daf_1.conda + sha256: d0560bcb505ccf6a3d71e153d45dd6afec5ee7009d9482c723210ac2ce79db1b + md5: d08def22d8f7c7a2875ed8c53aebd185 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 1848503 + timestamp: 1743629512155 +- conda: https://prefix.dev/conda-forge/win-64/cuda-cupti-12.8.90-he0c23c2_1.conda + sha256: 5ebb660c0c33375f9ac28836cdfbfceaa7e30feb6cead8ad910040a6cc555435 + md5: 9594a153a558254a7f5bde2beffd9420 + depends: + - cuda-version >=12.8,<12.9.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 3340544 + timestamp: 1743629862124 +- conda: https://prefix.dev/conda-forge/linux-64/cuda-cupti-dev-12.8.90-h5888daf_1.conda + sha256: dc51f10894ad875eb3890b9c4745317f2dcc05b226304362a88b893533084127 + md5: 5e38204ab4d20e1cc07ebe6d933b3e29 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cupti 12.8.90 h5888daf_1 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - cuda-cupti-static >=12.8.90 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 4219417 + timestamp: 1743629573682 +- conda: https://prefix.dev/conda-forge/linux-64/cuda-nvcc-tools-12.8.93-he02047a_3.conda + sha256: 0de99bd6972c805b5aeebcc7d1a9ffa1855accbe823daf3f6e12b27b14e6efca + md5: 6edaf1ed7e0447ba8dbee643fe991832 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-crt-tools 12.8.93 ha770c72_3 + - cuda-nvvm-tools 12.8.93 he02047a_3 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=12 + - libstdcxx >=12 + constrains: + - gcc_impl_linux-64 >=6,<15.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 25644307 + timestamp: 1744159388339 +- conda: https://prefix.dev/conda-forge/linux-64/cuda-nvdisasm-12.8.90-hbd13f7d_1.conda + sha256: b8db8c6a1dd658ad66739f473df8c16a35143d8058f1bc7e66d221691dcbb737 + md5: c6d84f4b5d81dad39054eb37ecd2d136 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 5124390 + timestamp: 1742414503225 +- conda: https://prefix.dev/conda-forge/linux-64/cuda-nvrtc-12.8.93-h5888daf_1.conda + sha256: 38edf4f501ccbb996cc9f0797fcf404c12d4aeef974308cf8b997b470409c171 + md5: 7c5ae09d55b1b2b390772755fe5b4c13 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 66214407 + timestamp: 1742405328961 +- conda: https://prefix.dev/conda-forge/win-64/cuda-nvrtc-12.8.93-he0c23c2_1.conda + sha256: b68487e5e8ef36b51e695ac654a7aa32deaad45a354e98404c52dd61fb740674 + md5: 1971a2a454a892fbb05bde72aee865f5 + depends: + - cuda-version >=12.8,<12.9.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 56519607 + timestamp: 1742405852584 +- conda: https://prefix.dev/conda-forge/linux-64/cuda-nvtx-12.8.90-h5888daf_1.conda + sha256: 0ce1ff2d4ab5ba7c91373125815f8127f5c338d25ace4bef5fb30fb17402a7b2 + md5: 8f32e53c88c897392a1ba79a4f268276 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 32175 + timestamp: 1743625825363 +- conda: https://prefix.dev/conda-forge/linux-64/cuda-nvvm-tools-12.8.93-he02047a_3.conda + sha256: 11ea6ad293b37d6cf0847ee337cc27c2939befb9b0275b54353083a2a3d44a56 + md5: 7a11cf7b5686e55ecb042dcede921592 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=12 + - libstdcxx >=12 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 24620959 + timestamp: 1744159329485 +- conda: https://prefix.dev/conda-forge/noarch/cuda-version-12.8-h5d125a7_3.conda + sha256: 6f93ceb66267e69728d83cf98673221f6b1f95a3514b3a97777cfd0ef8e24f3f + md5: 794eaca58880616a508dd6f6eb389266 + constrains: + - cudatoolkit 12.8|12.8.* + - __cuda >=12 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 21086 + timestamp: 1737663758355 +- conda: https://prefix.dev/conda-forge/linux-64/cudnn-9.8.0.87-h81d5506_1.conda + sha256: 88fd0bd4ad77f126d8b4d89a9d1a661f8be322c8a1ae9da28a89fb7373b5d4ca + md5: c87536f2e5d0740f4193625eb00fab7e + 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 + license: LicenseRef-cuDNN-Software-License-Agreement + purls: [] + size: 490227234 + timestamp: 1743628408368 +- conda: https://prefix.dev/conda-forge/win-64/cudnn-9.8.0.87-h1361d0a_1.conda + sha256: e3920c063eefba471a25c5b15d5512d376b08d3b466c400bd026f7ca6b2624de + md5: 51d9ca9954df0c51ca47cdd6fb3471cf + depends: + - cuda-nvrtc + - cuda-version >=12,<13.0a0 + - libcublas + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LicenseRef-cuDNN-Software-License-Agreement + purls: [] + size: 472001149 + timestamp: 1743628434395 +- 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,<13.0a0 + - cupy-core 13.4.1 py310h4564b94_0 + - libcublas + - libcufft + - libcurand + - libcusolver + - libcusparse + - python >=3.10,<3.11.0a0 + - python_abi 3.10.* *_cp310 + license: MIT + license_family: MIT + purls: [] + 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,<13.0a0 + - cupy-core 13.4.1 py310h9d4bcf3_0 + - libcublas + - libcufft + - libcurand + - libcusolver + - libcusparse + - python >=3.10,<3.11.0a0 + - python_abi 3.10.* *_cp310 + license: MIT + license_family: MIT + purls: [] + 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.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: + - 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 + - libcurand >=10,<11.0a0 + - libcublas >=12,<13.0a0 + - optuna ~=3.0 + - scipy ~=1.7 + - __cuda >=12.0 + - libcusparse >=12,<13.0a0 + - cupy >=13.4.1,<13.5.0a0 + license: MIT + license_family: MIT + purls: + - 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 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - 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/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-64/cytoolz-1.0.1-py310hbb8c376_0.conda + sha256: 2b999554a144350f1761777faf7ca7fd60ab657de1292397aa1d58a29b56bcf1 + md5: 85b2f84a8a6d8a36e39c4a2d81e5856f + depends: + - __osx >=10.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: 312627 + timestamp: 1734107599224 +- 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 + 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 + depends: + - 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-2025.3.0-pyhd8ed1ab_0.conda + sha256: 193aaa5dc9d8b6610dba2bde8d041db872cd23c875c10a5ef75fa60c18d9ea16 + md5: 95e33679c10ef9ef65df0fc01a71fdc5 + depends: + - bokeh >=3.1.0 + - cytoolz >=0.11.0 + - dask-core >=2025.3.0,<2025.3.1.0a0 + - distributed >=2025.3.0,<2025.3.1.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: 8033 + timestamp: 1742608951611 +- conda: https://prefix.dev/conda-forge/noarch/dask-core-2025.3.0-pyhd8ed1ab_0.conda + sha256: 72badd945d856d2928fdbe051f136f903bcfee8136f1526c8362c6c465b793ec + md5: 36f6cc22457e3d6a6051c5370832f96c + depends: + - click >=8.1 + - cloudpickle >=3.0.0 + - fsspec >=2021.09.0 + - importlib-metadata >=4.13.0 + - packaging >=20.0 + - partd >=1.4.0 + - python >=3.10 + - pyyaml >=5.3.1 + - toolz >=0.10.0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/dask?source=hash-mapping + size: 982414 + timestamp: 1742598041610 +- 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=compressed-mapping + size: 14129 + timestamp: 1740385067843 +- conda: https://prefix.dev/conda-forge/noarch/dill-0.3.9-pyhd8ed1ab_1.conda + sha256: 499be2f8e4397a46249e8e500535795704af27e56360ae0c964904140b41454a + md5: 5e11310fca410e9f31381157079dee55 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/dill?source=hash-mapping + size: 89973 + timestamp: 1733249646688 +- conda: https://prefix.dev/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + sha256: 0e160c21776bd881b79ce70053e59736f51036784fa43a50da10a04f0c1b9c45 + md5: 8d88f4a2242e6b96f9ecff9a6a05b2f1 + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/distlib?source=hash-mapping + size: 274151 + timestamp: 1733238487461 +- conda: https://prefix.dev/conda-forge/noarch/distributed-2025.3.0-pyhd8ed1ab_0.conda + sha256: ea055aeda774d03ec96e0901ec119c6d3dc21ddd50af166bec664a76efd5f82a + md5: 968a7a4ff98bcfb515b0f1c94d35553f + depends: + - click >=8.0 + - cloudpickle >=3.0.0 + - cytoolz >=0.11.2 + - dask-core >=2025.3.0,<2025.3.1.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: 799717 + timestamp: 1742601963648 +- conda: https://prefix.dev/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + sha256: fa5966bb1718bbf6967a85075e30e4547901410cc7cb7b16daf68942e9a94823 + md5: 24c1ca34138ee57de72a943237cde4cc + depends: + - python >=3.9 + license: CC-PDDC AND BSD-3-Clause AND BSD-2-Clause AND ZPL-2.1 + purls: + - 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 + depends: + - python >=3.9 + 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 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/executing?source=hash-mapping + size: 28348 + timestamp: 1733569440265 +- conda: https://prefix.dev/conda-forge/linux-64/fastrlock-0.8.3-py310h8c668a6_1.conda + sha256: 25c6927ff29307a937ab3d549665adfd69070c4eccc850b6dc7fb401fd4f118c + md5: 4c9c2d9a2754460d342a84703b64c96b + depends: + - python + - libstdcxx >=13 + - libgcc >=13 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python_abi 3.10.* *_cp310 + license: MIT + license_family: MIT + 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 + sha256: 3a61f72d93f43eeda01fde9c30e39ce3d442e4caa51eb20e04654366b3e3b789 + md5: 1eca50ca6668276e794da4c769510131 + depends: + - python + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - ucrt >=10.0.20348.0 + - python_abi 3.10.* *_cp310 + license: MIT + license_family: MIT + purls: + - pkg:pypi/fastrlock?source=hash-mapping + size: 36203 + timestamp: 1734873436406 +- 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: 17887 + timestamp: 1741969612334 +- conda: https://prefix.dev/conda-forge/linux-64/freetype-2.13.3-h48d6fc4_0.conda + sha256: 7385577509a9c4730130f54bb6841b9b416249d5f4e9f74bf313e6378e313c57 + md5: 9ecfd6f2ca17077dd9c2d24770bb9ccd + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libpng >=1.6.47,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + license: GPL-2.0-only OR FTL + purls: [] + size: 639682 + timestamp: 1741863789964 +- conda: https://prefix.dev/conda-forge/osx-64/freetype-2.13.3-h40dfd5c_0.conda + sha256: 66cc36a313accf28f4ab9b40ad11e4a8ff757c11314cd499435d9b8df1fa0150 + md5: e391f0c2d07df272cf7c6df235e97bb9 + depends: + - __osx >=10.13 + - libpng >=1.6.47,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + license: GPL-2.0-only OR FTL + purls: [] + size: 602964 + timestamp: 1741863884014 +- conda: https://prefix.dev/conda-forge/osx-arm64/freetype-2.13.3-h1d14073_0.conda + sha256: 2c273de32431c431a118a8cd33afb6efc616ddbbab9e5ba0fe31e3b4d1ff57a3 + md5: 630445a505ea6e59f55714853d8c9ed0 + depends: + - __osx >=11.0 + - libpng >=1.6.47,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + license: GPL-2.0-only OR FTL + purls: [] + size: 590002 + timestamp: 1741863913870 +- conda: https://prefix.dev/conda-forge/win-64/freetype-2.13.3-h0b5ce68_0.conda + sha256: 67e3af0fbe6c25f5ab1af9a3d3000464c5e88a8a0b4b06602f4a5243a8a1fd42 + md5: 9c461ed7b07fb360d2c8cfe726c7d521 + depends: + - libpng >=1.6.47,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: GPL-2.0-only OR FTL + purls: [] + size: 510718 + timestamp: 1741864688363 +- conda: https://prefix.dev/conda-forge/noarch/fsspec-2025.3.2-pyhd8ed1ab_0.conda + sha256: 2040d4640708bd6ab9ed6cb9901267441798c44974bc63c9b6c1cb4c1891d825 + md5: 9c40692c3d24c7aaf335f673ac09d308 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/fsspec?source=compressed-mapping + size: 142117 + timestamp: 1743437355974 +- conda: https://prefix.dev/conda-forge/noarch/furo-2024.8.6-pyhd8ed1ab_2.conda + sha256: 3d6e42c5c22ea3c3b8d35b6582f544bc5fc08df37c394f5a30d6644b626a7be6 + md5: a4ffdb4a5370e427f0ad980df69bbdbc + depends: + - beautifulsoup4 + - pygments >=2.7 + - python >=3.9 + - sphinx >=6.0,<9.0 + - sphinx-basic-ng + license: MIT + license_family: MIT + purls: + - 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-64/gflags-2.2.2-hac325c4_1005.conda + sha256: c0bea66f71a6f4baa8d4f0248e17f65033d558d9e882c0af571b38bcca3e4b46 + md5: a26de8814083a6971f14f9c8c3cb36c2 + depends: + - __osx >=10.13 + - libcxx >=17 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 84946 + timestamp: 1726600054963 +- 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-64/glog-0.7.1-h2790a97_0.conda + sha256: dd56547db8625eb5c91bb0a9fbe8bd6f5c7fbf5b6059d46365e94472c46b24f9 + md5: 06cf91665775b0da395229cd4331b27d + depends: + - __osx >=10.13 + - gflags >=2.2.2,<2.3.0a0 + - libcxx >=16 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 117017 + timestamp: 1718284325443 +- 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 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: GPL-2.0-or-later OR LGPL-3.0-or-later + 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 + depends: + - __osx >=11.0 + - libcxx >=16 + license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] + size: 365188 + timestamp: 1718981343258 +- conda: https://prefix.dev/conda-forge/linux-64/gmpy2-2.1.5-py310he8512ff_3.conda + sha256: 18866d66175a957fd5a61125bb618b160c77c8d08d0d9d5be991e9f77c19b288 + md5: 832c93fd1bee415d2833b023f5ebb2dc + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - 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: 202700 + timestamp: 1733462653858 +- conda: https://prefix.dev/conda-forge/osx-64/gmpy2-2.1.5-py310he278d95_3.conda + sha256: 88365b6f18c3a0dc78e2a1d4e3e9c1d1bf74d42fc01d21aefbb78288d69e3e1d + md5: 71c4cf360d8bab3609bf993d3ac23851 + 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: 154715 + timestamp: 1733462727438 +- conda: https://prefix.dev/conda-forge/osx-arm64/gmpy2-2.1.5-py310h805dbd7_3.conda + sha256: e287abe2518728097e1278e550d7a7c0e8033f0eab1ac408b73449b263ebd82d + md5: 2bf8b309e18059ee570ff14976f855c1 + depends: + - __osx >=11.0 + - 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 >=3.10,<3.11.0a0 *_cpython + - python_abi 3.10.* *_cp310 + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/gmpy2?source=hash-mapping + size: 146398 + timestamp: 1733462796032 +- 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: 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: 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: 17397 + timestamp: 1737618427549 +- conda: https://prefix.dev/conda-forge/noarch/hypothesis-6.131.8-pyha770c72_0.conda + sha256: 420637353239732b2649bf3ed6039bf7e12f09f595752a67d5d27be72b88e86b + md5: 09f4414e824e694fb3b89b25421b27df + 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 + purls: + - pkg:pypi/hypothesis?source=hash-mapping + size: 356193 + timestamp: 1745475780825 +- conda: https://prefix.dev/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + 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 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: [] + size: 11857802 + timestamp: 1720853997952 +- conda: https://prefix.dev/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + sha256: b74a2ffa7be9278d7b8770b6870c360747149c683865e63476b0e1db23038429 + md5: 542f45bf054c6b9cf8d00a3b1976f945 + depends: + - python >=3.9 + - ukkonen + license: MIT + license_family: MIT + purls: + - pkg:pypi/identify?source=hash-mapping + size: 78600 + timestamp: 1741502780749 +- conda: https://prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/idna?source=hash-mapping + size: 49765 + timestamp: 1733211921194 +- conda: https://prefix.dev/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 + sha256: c2bfd7043e0c4c12d8b5593de666c1e81d67b83c474a0a79282cc5c4ef845460 + md5: 7de5386c8fea29e76b303f37dde4c352 + depends: + - python >=3.4 + license: MIT + license_family: MIT + purls: + - pkg:pypi/imagesize?source=hash-mapping + size: 10164 + timestamp: 1656939625410 +- conda: https://prefix.dev/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/importlib-metadata?source=compressed-mapping + size: 29141 + timestamp: 1737420302391 +- conda: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + sha256: 0ec8f4d02053cd03b0f3e63168316530949484f80e16f5e2fb199a1d117a89ca + md5: 6837f3eff7dcea42ecd714ce1ac2b108 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/iniconfig?source=hash-mapping + size: 11474 + timestamp: 1733223232820 +- conda: https://prefix.dev/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda + sha256: 0fd2b0b84c854029041b0ede8f4c2369242ee92acc0092f8407b1fe9238a8209 + md5: 2d89243bfb53652c182a7c73182cce4f + license: LicenseRef-IntelSimplifiedSoftwareOct2022 + license_family: Proprietary + purls: [] + size: 1852356 + timestamp: 1723739573141 +- conda: https://prefix.dev/conda-forge/noarch/ipython-8.35.0-pyh907856f_0.conda + sha256: 24a9f9ae8b5b15c11e1b71e44c9d4f483265c6c938ff3a88452864f57b81d104 + md5: 1c70446f398dab3c413f56adb8a5d212 + depends: + - __unix + - pexpect >4.3 + - decorator + - exceptiongroup + - jedi >=0.16 + - matplotlib-inline + - pickleshare + - prompt-toolkit >=3.0.41,<3.1.0 + - pygments >=2.4.0 + - python >=3.10 + - 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: 637649 + timestamp: 1744034854170 +- conda: https://prefix.dev/conda-forge/noarch/ipython-8.35.0-pyh9ab4c32_0.conda + sha256: a1d2a5aa988f9ff59b247b414ab03ae439fb94b95b922fe110e7a90fb7f17677 + md5: 7250b697b9f3edcb6ac3767bd170a3fe + depends: + - __win + - colorama + - decorator + - exceptiongroup + - jedi >=0.16 + - matplotlib-inline + - pickleshare + - prompt-toolkit >=3.0.41,<3.1.0 + - pygments >=2.4.0 + - python >=3.10 + - 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: 637325 + timestamp: 1744034871417 +- conda: https://prefix.dev/conda-forge/noarch/isort-6.0.1-pyhd8ed1ab_0.conda + sha256: 9c5fb97efa0eb32b42564edaacb5edb9a1f82ba8f5f8b135e794960101115b5a + md5: a8abfd3f223b1ecb8c699dca974933bd + depends: + - python >=3.9,<4.0 + - setuptools + license: MIT + license_family: MIT + purls: + - pkg:pypi/isort?source=hash-mapping + size: 74660 + timestamp: 1740643514349 +- conda: https://prefix.dev/conda-forge/noarch/jax-0.5.2-pyhd8ed1ab_0.conda + sha256: be7644c955cd4be330a13a8f64c0b73d520f8b3ab6bb64b8b1d3a17945345684 + md5: f19f3d281603af8e67d533dbeac279ce + depends: + - importlib-metadata >=4.6 + - jaxlib >=0.5.1,<=0.5.2 + - ml_dtypes >=0.4.0 + - numpy >=1.25 + - opt_einsum + - python >=3.10 + - scipy >=1.11.1 + constrains: + - cudnn >=9.2.1.18,<10.0 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/jax?source=hash-mapping + size: 1556886 + timestamp: 1741182198677 +- conda: https://prefix.dev/conda-forge/linux-64/jaxlib-0.5.2-cpu_py310hc96afab_1.conda + sha256: 90b8e05aac0f90613331f93d90b3f52e3d45ab760275aeed702686aa6cf84a7e + md5: d59d8e26dfe90ca841b3e31ea1f37e02 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20250127.0,<20250128.0a0 + - libgcc >=13 + - 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.1,<4.0a0 + - python >=3.10,<3.11.0a0 + - python_abi 3.10.* *_cp310 + - scipy >=1.9 + constrains: + - jax >=0.5.2 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/jaxlib?source=hash-mapping + size: 69148460 + timestamp: 1741976231690 +- conda: https://prefix.dev/conda-forge/linux-64/jaxlib-0.5.2-cuda126py310hec873cc_201.conda + sha256: 8927da7f4441158da04762c1ede3e158b9ca292dfd2b97613bce732d766f14b8 + md5: 7b2a6066d2bd6572a23e338b39c3740f + depends: + - __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.8.0.87,<10.0a0 + - libabseil * cxx17* + - libabseil >=20250127.0,<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.25.1.1,<3.0a0 + - numpy >=1.19,<3 + - openssl >=3.4.1,<4.0a0 + - python >=3.10,<3.11.0a0 + - python_abi 3.10.* *_cp310 + - scipy >=1.9 + constrains: + - jax >=0.5.2 + 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: 151482143 + timestamp: 1741986801921 +- conda: https://prefix.dev/conda-forge/osx-64/jaxlib-0.5.2-cpu_py310h22b337c_1.conda + sha256: 46abf7990c20ca92da0e00900fbf467ff5719d08c58c1d2fe3908a43d254c78c + md5: e4d61f83e62d722e2289b99fdc532e01 + depends: + - __osx >=10.15 + - libabseil * cxx17* + - libabseil >=20250127.0,<20250128.0a0 + - libcxx >=18 + - libgrpc >=1.71.0,<1.72.0a0 + - libzlib >=1.3.1,<2.0a0 + - ml_dtypes >=0.2.0 + - numpy >=1.19,<3 + - openssl >=3.4.1,<4.0a0 + - python >=3.10,<3.11.0a0 + - python_abi 3.10.* *_cp310 + - scipy >=1.9 + constrains: + - jax >=0.5.2 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/jaxlib?source=hash-mapping + size: 66008941 + timestamp: 1741978167194 +- conda: https://prefix.dev/conda-forge/osx-arm64/jaxlib-0.5.2-cpu_py310h2c532f2_1.conda + sha256: 8ddfd9798bfd0b7978a7d66112c02d8d1215a583bb7ecd14eee37b9f6b125d97 + md5: 01eb10cbe5ced0d8b3fc51442537afe6 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20250127.0,<20250128.0a0 + - libcxx >=18 + - libgrpc >=1.71.0,<1.72.0a0 + - libzlib >=1.3.1,<2.0a0 + - ml_dtypes >=0.2.0 + - numpy >=1.19,<3 + - openssl >=3.4.1,<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.5.2 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/jaxlib?source=hash-mapping + size: 55557739 + timestamp: 1741980189874 +- 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: + - 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/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-64/krb5-1.21.3-h37d8d59_0.conda + sha256: 83b52685a4ce542772f0892a0f05764ac69d57187975579a0835ff255ae3ef9c + md5: d4765c524b1d91567886bde656fb514b + depends: + - __osx >=10.13 + - 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: 1185323 + timestamp: 1719463492984 +- 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.17-h717163a_0.conda + sha256: d6a61830a354da022eae93fa896d0991385a875c6bba53c82263a289deda9db8 + md5: 000e85703f0fd9594c81710dd5066471 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + license: MIT + license_family: MIT + purls: [] + size: 248046 + timestamp: 1739160907615 +- conda: https://prefix.dev/conda-forge/osx-64/lcms2-2.17-h72f5680_0.conda + sha256: bcb81543e49ff23e18dea79ef322ab44b8189fb11141b1af99d058503233a5fc + md5: bf210d0c63f2afb9e414a858b79f0eaa + depends: + - __osx >=10.13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + license: MIT + license_family: MIT + purls: [] + size: 226001 + timestamp: 1739161050843 +- conda: https://prefix.dev/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda + sha256: 310a62c2f074ebd5aa43b3cd4b00d46385ce680fa2132ecee255a200e2d2f15f + md5: 92a61fd30b19ebd5c1621a5bfe6d8b5f + depends: + - __osx >=11.0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + license: MIT + license_family: MIT + purls: [] + size: 212125 + timestamp: 1739161108467 +- conda: https://prefix.dev/conda-forge/win-64/lcms2-2.17-hbcf6048_0.conda + sha256: 7712eab5f1a35ca3ea6db48ead49e0d6ac7f96f8560da8023e61b3dbe4f3b25d + md5: 3538827f77b82a837fa681a4579e37a1 + depends: + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.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: 510641 + timestamp: 1739161381270 +- 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: + - binutils_impl_linux-64 2.43 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 671240 + timestamp: 1740155456116 +- 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-64/lerc-4.0.0-hb486fe8_0.tar.bz2 + sha256: e41790fc0f4089726369b3c7f813117bbc14b533e0ed8b94cf75aba252e82497 + md5: f9d6a4c82889d5ecedec1d90eb673c55 + depends: + - libcxx >=13.0.1 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 290319 + timestamp: 1657977526749 +- 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-20250127.1-cxx17_hbbce691_0.conda + sha256: 65d5ca837c3ee67b9d769125c21dc857194d7f6181bb0e7bd98ae58597b457d0 + md5: 00290e549c5c8a32cc271020acc9ec6b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20250127.1 + - libabseil-static =20250127.1=cxx17* + license: Apache-2.0 + license_family: Apache + purls: [] + 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 >=10.13 + - libcxx >=18 + constrains: + - libabseil-static =20250127.1=cxx17* + - abseil-cpp =20250127.1 + license: Apache-2.0 + license_family: Apache + purls: [] + 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 + - libcxx >=18 + constrains: + - abseil-cpp =20250127.1 + - libabseil-static =20250127.1=cxx17* + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1192962 + timestamp: 1742369814061 +- conda: https://prefix.dev/conda-forge/win-64/libabseil-20250127.1-cxx17_h4eb7d71_0.conda + sha256: 61ece8d3768604eae2c7c869a5c032a61fbfb8eb86cc85dc39cc2de48d3827b4 + md5: 9619870922c18fa283a3ee703a14cfcc + depends: + - ucrt >=10.0.20348.0 + - 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 + purls: [] + size: 1836732 + timestamp: 1742370096247 +- conda: https://prefix.dev/conda-forge/linux-64/libarrow-19.0.1-hb90904d_7_cpu.conda + build_number: 7 + sha256: 44da1301fbea6d54812fdb09227b46b397013ff3aa9a96d5c202cdf7ddb3c2de + md5: cb63f3394929ba771ac798bbda23dfc9 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.31.1,<0.31.2.0a0 + - aws-sdk-cpp >=1.11.510,<1.11.511.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 >=20250127.1,<20250128.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.36.0,<2.37.0a0 + - libgoogle-cloud-storage >=2.36.0,<2.37.0a0 + - libopentelemetry-cpp >=1.20.0,<1.21.0a0 + - libprotobuf >=5.29.3,<5.29.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.1.1,<2.1.2.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.7,<1.6.0a0 + constrains: + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 8976534 + timestamp: 1744024665847 +- conda: https://prefix.dev/conda-forge/osx-64/libarrow-19.0.1-hf1fce67_7_cpu.conda + build_number: 7 + sha256: 1a5487688f57560cb2a2f0b210d4a25957f02ba40591a53f63041a8ccdbf5e16 + md5: 665145c328054c59449aa3ee478cc822 + depends: + - __osx >=10.14 + - aws-crt-cpp >=0.31.1,<0.31.2.0a0 + - aws-sdk-cpp >=1.11.510,<1.11.511.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 >=20250127.1,<20250128.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libcxx >=18 + - libgoogle-cloud >=2.36.0,<2.37.0a0 + - libgoogle-cloud-storage >=2.36.0,<2.37.0a0 + - libopentelemetry-cpp >=1.20.0,<1.21.0a0 + - libprotobuf >=5.29.3,<5.29.4.0a0 + - libre2-11 >=2024.7.2 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.1.1,<2.1.2.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.7,<1.6.0a0 + constrains: + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 6223967 + timestamp: 1744021616705 +- conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-19.0.1-hd4a375f_7_cpu.conda + build_number: 7 + sha256: 79b08fb104271163e6e1f91edf60f49542dffa03dd8b411b14c2961d6b089751 + md5: e8428984086408d926e8fd5514ea82f8 + depends: + - __osx >=11.0 + - aws-crt-cpp >=0.31.1,<0.31.2.0a0 + - aws-sdk-cpp >=1.11.510,<1.11.511.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 >=20250127.1,<20250128.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libcxx >=18 + - libgoogle-cloud >=2.36.0,<2.37.0a0 + - libgoogle-cloud-storage >=2.36.0,<2.37.0a0 + - libopentelemetry-cpp >=1.20.0,<1.21.0a0 + - libprotobuf >=5.29.3,<5.29.4.0a0 + - libre2-11 >=2024.7.2 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.1.1,<2.1.2.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.7,<1.6.0a0 + constrains: + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5579118 + timestamp: 1744021273248 +- conda: https://prefix.dev/conda-forge/win-64/libarrow-19.0.1-hb2d35ca_7_cpu.conda + build_number: 7 + sha256: 0e0d883fac316ab8c49498e0938d6046b1ff4516fdf0b0be1b903f49b7323470 + md5: 802038790e460c62abf07c1794cbbf6a + depends: + - aws-crt-cpp >=0.31.1,<0.31.2.0a0 + - aws-sdk-cpp >=1.11.510,<1.11.511.0a0 + - bzip2 >=1.0.8,<2.0a0 + - libabseil * cxx17* + - libabseil >=20250127.1,<20250128.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl >=8.13.0,<9.0a0 + - libgoogle-cloud >=2.36.0,<2.37.0a0 + - libgoogle-cloud-storage >=2.36.0,<2.37.0a0 + - libprotobuf >=5.29.3,<5.29.4.0a0 + - libre2-11 >=2024.7.2 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.1.1,<2.1.2.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.42.34438 + - zstd >=1.5.7,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5289186 + timestamp: 1744025548463 +- conda: https://prefix.dev/conda-forge/win-64/libarrow-19.0.1-he744d6e_7_cuda.conda + build_number: 7 + sha256: 1ddb5a1ac03a90cad7164c486e757b231b2fa9f38defac938f06a829c82723d2 + md5: 314f3efa32c3f66699e3effe967f3c39 + depends: + - aws-crt-cpp >=0.31.1,<0.31.2.0a0 + - aws-sdk-cpp >=1.11.510,<1.11.511.0a0 + - bzip2 >=1.0.8,<2.0a0 + - libabseil * cxx17* + - libabseil >=20250127.1,<20250128.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl >=8.13.0,<9.0a0 + - libgoogle-cloud >=2.36.0,<2.37.0a0 + - libgoogle-cloud-storage >=2.36.0,<2.37.0a0 + - libprotobuf >=5.29.3,<5.29.4.0a0 + - libre2-11 >=2024.7.2 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.1.1,<2.1.2.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.42.34438 + - zstd >=1.5.7,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cuda + - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5402206 + timestamp: 1744027142448 +- conda: https://prefix.dev/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_7_cpu.conda + build_number: 7 + sha256: c65a60ff11aecab4b3d7c077c50910cbd8e47d52963ce3ff376e848d0800c90a + md5: 90382dd59eecda17d7c639b8c921d5d4 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hb90904d_7_cpu + - libgcc >=13 + - libstdcxx >=13 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 644126 + timestamp: 1744024727330 +- conda: https://prefix.dev/conda-forge/osx-64/libarrow-acero-19.0.1-hdc53af8_7_cpu.conda + build_number: 7 + sha256: 31b3e65e4bc1e7658c55628b8f74306126943716824e52f84d64c701e3267217 + md5: 423d8655143573a44d58c346252e7bf9 + depends: + - __osx >=10.14 + - libarrow 19.0.1 hf1fce67_7_cpu + - libcxx >=18 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 552995 + timestamp: 1744021689536 +- conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_7_cpu.conda + build_number: 7 + sha256: 62f196353ab95342dc3b737960241fa95755396ecd83edcaf1181271427b866c + md5: 7d7ab9fffd51d722dbd5d67e8f0b52bc + depends: + - __osx >=11.0 + - libarrow 19.0.1 hd4a375f_7_cpu + - libcxx >=18 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 507680 + timestamp: 1744021325463 +- conda: https://prefix.dev/conda-forge/win-64/libarrow-acero-19.0.1-h7d8d6a5_7_cpu.conda + build_number: 7 + sha256: 8397d1a61a95615970ade7f48dd3ba55ef433cd37c93aba467f75a4ebb775c37 + md5: ffe6ffe701420718ccad4ee32d26d531 + depends: + - libarrow 19.0.1 hb2d35ca_7_cpu + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.42.34438 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 459641 + timestamp: 1744025617604 +- conda: https://prefix.dev/conda-forge/win-64/libarrow-acero-19.0.1-h7d8d6a5_7_cuda.conda + build_number: 7 + sha256: bf9f9cbedc607b36ee35b25d14abb69e90dcc69ec52d29286aff200dbb2c7a4c + md5: a88a6a48ecb6160b6538b453d37ea4f4 + depends: + - libarrow 19.0.1 he744d6e_7_cuda + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.42.34438 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 459519 + timestamp: 1744027240013 +- conda: https://prefix.dev/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_7_cpu.conda + build_number: 7 + sha256: a72ead7ef3d859199b73c1e8ac05b95d0eea248651ea13fb039437863b69de47 + md5: 14adc5f9f5f602e03538a16540c05784 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hb90904d_7_cpu + - libarrow-acero 19.0.1 hcb10f89_7_cpu + - libgcc >=13 + - libparquet 19.0.1 h081d1f1_7_cpu + - libstdcxx >=13 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 613044 + timestamp: 1744024895710 +- conda: https://prefix.dev/conda-forge/osx-64/libarrow-dataset-19.0.1-hdc53af8_7_cpu.conda + build_number: 7 + sha256: 54faaa5d9fc186469bf02c0d558e0491fb72f6de62104a49916fd95921e70f04 + md5: e87d893264f27aa66fcdabb1f5ffa77e + depends: + - __osx >=10.14 + - libarrow 19.0.1 hf1fce67_7_cpu + - libarrow-acero 19.0.1 hdc53af8_7_cpu + - libcxx >=18 + - libparquet 19.0.1 h283e888_7_cpu + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 536755 + timestamp: 1744021921096 +- conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_7_cpu.conda + build_number: 7 + sha256: f962a1cabe7dc798343a580f161423450cb00f8cbf12b80445cfed014bc59679 + md5: 39d083d3f5f96a82320d256b3dc9eecf + depends: + - __osx >=11.0 + - libarrow 19.0.1 hd4a375f_7_cpu + - libarrow-acero 19.0.1 hf07054f_7_cpu + - libcxx >=18 + - libparquet 19.0.1 h636d7b7_7_cpu + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 508435 + timestamp: 1744021479313 +- conda: https://prefix.dev/conda-forge/win-64/libarrow-dataset-19.0.1-h7d8d6a5_7_cpu.conda + build_number: 7 + sha256: 85473e9f9588c5f8548e51c4776b0244ec4851ad58f6a5594fd4d3b764f97e56 + md5: 56ac708fb54dcc28333f80ab6a7ca4fa + depends: + - libarrow 19.0.1 hb2d35ca_7_cpu + - libarrow-acero 19.0.1 h7d8d6a5_7_cpu + - libparquet 19.0.1 ha850022_7_cpu + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.42.34438 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 446141 + timestamp: 1744025860090 +- conda: https://prefix.dev/conda-forge/win-64/libarrow-dataset-19.0.1-h7d8d6a5_7_cuda.conda + build_number: 7 + sha256: 23be2096b30700c312ced6477c6e4b3ceacafb001a87799c1546d9f916596a32 + md5: e993349255fe498f8926413e5c0cfc0f + depends: + - libarrow 19.0.1 he744d6e_7_cuda + - libarrow-acero 19.0.1 h7d8d6a5_7_cuda + - libparquet 19.0.1 ha850022_7_cuda + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.42.34438 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 445674 + timestamp: 1744027505809 +- conda: https://prefix.dev/conda-forge/linux-64/libarrow-substrait-19.0.1-h1bed206_7_cpu.conda + build_number: 7 + sha256: e267d262ba15d7757024fbc4138a540cf53284c775837aa5229b14f52abec8b0 + md5: f75ac4838bdca785c0ab3339911704ee + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20250127.1,<20250128.0a0 + - libarrow 19.0.1 hb90904d_7_cpu + - libarrow-acero 19.0.1 hcb10f89_7_cpu + - libarrow-dataset 19.0.1 hcb10f89_7_cpu + - libgcc >=13 + - libprotobuf >=5.29.3,<5.29.4.0a0 + - libstdcxx >=13 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 528939 + timestamp: 1744024972916 +- conda: https://prefix.dev/conda-forge/osx-64/libarrow-substrait-19.0.1-ha37b807_7_cpu.conda + build_number: 7 + sha256: 882c1c0fc186f1d04caf6912b866456c2faa7658307caad9a9c5f2faa3d47847 + md5: ac3100aa8c6cba35dfc342ccdf2314a7 + depends: + - __osx >=10.14 + - libabseil * cxx17* + - libabseil >=20250127.1,<20250128.0a0 + - libarrow 19.0.1 hf1fce67_7_cpu + - libarrow-acero 19.0.1 hdc53af8_7_cpu + - libarrow-dataset 19.0.1 hdc53af8_7_cpu + - libcxx >=18 + - libprotobuf >=5.29.3,<5.29.4.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 470386 + timestamp: 1744022033612 +- conda: https://prefix.dev/conda-forge/osx-arm64/libarrow-substrait-19.0.1-he749cb8_7_cpu.conda + build_number: 7 + sha256: d38bc121baf164298b98aec817f9e45b1b167bb1f8349b889c2e25ebdb1cacf6 + md5: b53ddd6e270849f511221c3d40c2e905 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20250127.1,<20250128.0a0 + - libarrow 19.0.1 hd4a375f_7_cpu + - libarrow-acero 19.0.1 hf07054f_7_cpu + - libarrow-dataset 19.0.1 hf07054f_7_cpu + - libcxx >=18 + - libprotobuf >=5.29.3,<5.29.4.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 456618 + timestamp: 1744021555857 +- conda: https://prefix.dev/conda-forge/win-64/libarrow-substrait-19.0.1-hb76e781_7_cpu.conda + build_number: 7 + sha256: 24f7e7e3c9feec24d7113a228e664a57323cb2bf0459434d9b2da3b272b66096 + md5: 897e86e582dfd1a35a780a09d487f937 + depends: + - libabseil * cxx17* + - libabseil >=20250127.1,<20250128.0a0 + - libarrow 19.0.1 hb2d35ca_7_cpu + - libarrow-acero 19.0.1 h7d8d6a5_7_cpu + - libarrow-dataset 19.0.1 h7d8d6a5_7_cpu + - libprotobuf >=5.29.3,<5.29.4.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.42.34438 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 372444 + timestamp: 1744025965340 +- conda: https://prefix.dev/conda-forge/win-64/libarrow-substrait-19.0.1-hb76e781_7_cuda.conda + build_number: 7 + sha256: ca0dbc15a8b356d644c83f8e550c69f86ce53af2c0368788e0469c1894c2aaa3 + md5: ae4da3b1b464e32db666def838cfaac4 + depends: + - libabseil * cxx17* + - libabseil >=20250127.1,<20250128.0a0 + - libarrow 19.0.1 he744d6e_7_cuda + - libarrow-acero 19.0.1 h7d8d6a5_7_cuda + - libarrow-dataset 19.0.1 h7d8d6a5_7_cuda + - libprotobuf >=5.29.3,<5.29.4.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.42.34438 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 372411 + timestamp: 1744027624247 +- conda: https://prefix.dev/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + build_number: 31 + sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 + md5: 728dbebd0f7a20337218beacffd37916 + depends: + - 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: 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: + - 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: 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 >=2023.2.0,<2024.0a0 + constrains: + - blas * 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: 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.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - 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: 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.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - 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: 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: + - 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: 3733728 + timestamp: 1740088452830 +- 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-64/libbrotlicommon-1.1.0-h00291cd_2.conda + sha256: b377056470a9fb4a100aa3c51b3581aab6496ba84d21cd99bcc1d5ef0359b1b6 + md5: 58f2c4bdd56c46cc7451596e4ae68e0b + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + purls: [] + size: 67267 + timestamp: 1725267768667 +- 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-64/libbrotlidec-1.1.0-h00291cd_2.conda + sha256: 4d49ea72e2f44d2d7a8be5472e4bd0bc2c6b89c55569de2c43576363a0685c0c + md5: 34709a1f5df44e054c4a12ab536c5459 + depends: + - __osx >=10.13 + - libbrotlicommon 1.1.0 h00291cd_2 + license: MIT + license_family: MIT + purls: [] + size: 29872 + timestamp: 1725267807289 +- 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 + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + license: MIT + license_family: MIT + purls: [] + size: 281750 + timestamp: 1725267679782 +- conda: https://prefix.dev/conda-forge/osx-64/libbrotlienc-1.1.0-h00291cd_2.conda + sha256: 477d236d389473413a1ccd2bec1b66b2f1d2d7d1b4a57bb56421b7b611a56cd1 + md5: 691f0dcb36f1ae67f5c489f20ae987ea + depends: + - __osx >=10.13 + - libbrotlicommon 1.1.0 h00291cd_2 + license: MIT + license_family: MIT + purls: [] + size: 296353 + timestamp: 1725267822076 +- 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/libcap-2.75-h39aace5_0.conda + sha256: 9c84448305e7c9cc44ccec7757cf5afcb5a021f4579aa750a1fa6ea398783950 + md5: c44c16d6976d2aebbd65894d7741e67e + depends: + - __glibc >=2.17,<3.0.a0 + - attr >=2.5.1,<2.6.0a0 + - libgcc >=13 + license: BSD-3-Clause + license_family: BSD + purls: [] + 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 31_hfdb39a5_mkl + constrains: + - 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: 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 31_h59b9bed_openblas + constrains: + - 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: 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 20_osx64_mkl + constrains: + - 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: 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: + - 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: 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: + - 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: 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: + - 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: 3733549 + timestamp: 1740088502127 +- conda: https://prefix.dev/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 + md5: c965a5aa0d5c1c37ffc62dff36e28400 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 20440 + timestamp: 1633683576494 +- conda: https://prefix.dev/conda-forge/osx-64/libcrc32c-1.1.2-he49afe7_0.tar.bz2 + sha256: 3043869ac1ee84554f177695e92f2f3c2c507b260edad38a0bf3981fce1632ff + md5: 23d6d5a69918a438355d7cbc4c3d54c9 + depends: + - libcxx >=11.1.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 20128 + timestamp: 1633683906221 +- conda: https://prefix.dev/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 + md5: 32bd82a6a625ea6ce090a81c3d34edeb + depends: + - libcxx >=11.1.0 + 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 + depends: + - vc >=14.1,<15.0a0 + - vs2015_runtime >=14.16.27012 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 25694 + timestamp: 1633684287072 +- conda: https://prefix.dev/conda-forge/linux-64/libcublas-12.8.4.1-h9ab20c4_1.conda + sha256: 3d3f7344db000feced2f9154cf0b3f3d245a1d317a1981e43b8b15f7baaaf6f1 + md5: 3ba4fd8bef181c020173d29ac67cae68 + depends: + - __glibc >=2.28,<3.0.a0 + - cuda-nvrtc + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 471593172 + timestamp: 1742405543791 +- conda: https://prefix.dev/conda-forge/win-64/libcublas-12.8.4.1-he0c23c2_1.conda + sha256: 7a4c53bbcf77c37033777acd1ff60b4664615ae67fff245718d43db422feac59 + md5: 626453d0b7f7b9f3c3a92e4398314714 + depends: + - cuda-nvrtc + - cuda-version >=12.8,<12.9.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 464717150 + timestamp: 1742405949020 +- conda: https://prefix.dev/conda-forge/linux-64/libcublas-dev-12.8.4.1-h9ab20c4_1.conda + sha256: bb745bef93a2a575ba127f7ca892febbf0e99e20b18bdf8e209351c4fe885d65 + md5: c5b1e0d5260f8cc43af6f5fc16f9424c + depends: + - __glibc >=2.28,<3.0.a0 + - cuda-crt-dev_linux-64 + - cuda-cudart-dev_linux-64 + - cuda-version >=12.8,<12.9.0a0 + - libcublas 12.8.4.1 h9ab20c4_1 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libcublas-static >=12.8.4.1 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 91388 + timestamp: 1742406432538 +- 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 + - _openmp_mutex >=4.5 + - cuda-version >=12,<13.0a0 + - libcublas + - libgcc >=13 + - 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: 32293521 + timestamp: 1739909124258 +- conda: https://prefix.dev/conda-forge/win-64/libcudss-0.5.0.16-hffc9a7f_1.conda + sha256: e9b2439171033751da85d1a9d2f78c67050ee73e17c39b86c48bd726801c19ad + md5: 25da1ea60c3d524e7380ff75865e4597 + depends: + - _openmp_mutex >=4.5 + - cuda-version >=12,<13.0a0 + - libcublas + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + 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: 31520993 + timestamp: 1739909536696 +- conda: https://prefix.dev/conda-forge/linux-64/libcufft-11.3.3.83-h5888daf_1.conda + sha256: 1a38727a9666b7020ad844fd5074693b2c378d0161f58401d9f8488bdeb920a1 + md5: d0d12b6842be47267e3214e7ab2b1b02 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 154743307 + timestamp: 1742415975122 +- conda: https://prefix.dev/conda-forge/win-64/libcufft-11.3.3.83-he0c23c2_1.conda + sha256: 083ba1d13f5512dae13fd7e3785336d578bc66f01c88917bbf1f53923339a5e4 + md5: 6e4c0fa04966e643cbe847321bdeee54 + depends: + - cuda-version >=12.8,<12.9.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 154601218 + timestamp: 1742416266296 +- conda: https://prefix.dev/conda-forge/linux-64/libcufft-dev-11.3.3.83-h5888daf_1.conda + sha256: 4b81551bc99d99aebd005f084d018d5b425b8a4475dcbab5d1a5e049ddfd2c39 + md5: f2ac0669e1dd52dc5539119dd94e0458 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.8,<12.9.0a0 + - libcufft 11.3.3.83 h5888daf_1 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libcufft-static >=11.3.3.83 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 33996 + timestamp: 1742416361653 +- conda: https://prefix.dev/conda-forge/linux-64/libcufile-1.13.1.3-h628e99a_1.conda + sha256: 213f5df6ed25d19c4390666708a32ea457b1dcda64aca121f861b94671e2ed63 + md5: 9a97a35e7e63910013d638c389fa3514 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - rdma-core >=55.0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 960749 + timestamp: 1743624986191 +- conda: https://prefix.dev/conda-forge/linux-64/libcurand-10.3.9.90-h9ab20c4_1.conda + sha256: 379b2fd280bc4f4da999ab6560f56d4d3c02485089fb5f50b8933731a3eb5078 + md5: 06061f033297d93999b89d3c067f5f1c + depends: + - __glibc >=2.28,<3.0.a0 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 45729190 + timestamp: 1742487698497 +- conda: https://prefix.dev/conda-forge/win-64/libcurand-10.3.9.90-he0c23c2_1.conda + sha256: 0da92fadd7e484ee892a6117edec850b7ee0abb54470d63b42fedb53242e5f07 + md5: 570a9b24de539d7ec8bda1e69e49ece0 + depends: + - cuda-version >=12.8,<12.9.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 46826907 + timestamp: 1742488063685 +- conda: https://prefix.dev/conda-forge/linux-64/libcurand-dev-10.3.9.90-h9ab20c4_1.conda + sha256: 430e6de4038e4769e6eee6b18cfda02b40c9abebca917a9bbd874d4ffa57001e + md5: 0fb97b378c464031ae1a720cdb6feddf + depends: + - __glibc >=2.28,<3.0.a0 + - cuda-version >=12.8,<12.9.0a0 + - libcurand 10.3.9.90 h9ab20c4_1 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libcurand-static >=10.3.9.90 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 246729 + timestamp: 1742487805723 +- conda: https://prefix.dev/conda-forge/linux-64/libcurl-8.13.0-h332b0f4_0.conda + sha256: 38e528acfaa0276b7052f4de44271ff9293fdb84579650601a8c49dac171482a + md5: cbdc92ac0d93fe3c796e36ad65c7905c + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: curl + license_family: MIT + purls: [] + size: 438088 + timestamp: 1743601695669 +- conda: https://prefix.dev/conda-forge/osx-64/libcurl-8.13.0-h5dec5d8_0.conda + sha256: 137d92f1107141d9eb39598fb05837be4f9aad4ead957194d94364834f3cc590 + md5: a35b1976d746d55cd7380c8842d9a1b5 + depends: + - __osx >=10.13 + - 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.1,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: curl + license_family: MIT + purls: [] + size: 418479 + timestamp: 1743601943696 +- conda: https://prefix.dev/conda-forge/osx-arm64/libcurl-8.13.0-h73640d1_0.conda + sha256: 747f7e8aad390b9b39a300401579ff1b5731537a586869b724dc071a9b315f03 + md5: 4a5d33f75f9ead15089b04bed8d0eafe + 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.1,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: curl + license_family: MIT + purls: [] + size: 397929 + timestamp: 1743601888428 +- conda: https://prefix.dev/conda-forge/win-64/libcurl-8.13.0-h88aaa65_0.conda + sha256: 185553b37c0299b7a15dc66a7a7e2a0d421adaac784ec9298a0b2ad745116ca5 + md5: c9cf6eb842decbb66c2f34e72c3580d6 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: curl + license_family: MIT + purls: [] + size: 357142 + timestamp: 1743602240803 +- conda: https://prefix.dev/conda-forge/linux-64/libcusolver-11.7.3.90-h9ab20c4_1.conda + sha256: 868ba1b0b0ae15f7621ee960a459a74b9a17b69ba629c510a11bb37480e7b6df + md5: 2d58a7eb9150525ea89195cf1bcfbc4c + depends: + - __glibc >=2.28,<3.0.a0 + - cuda-version >=12.8,<12.9.0a0 + - libcublas >=12.8.4.1,<12.9.0a0 + - libcusparse >=12.5.8.93,<12.6.0a0 + - libgcc >=13 + - libnvjitlink >=12.8.93,<12.9.0a0 + - libstdcxx >=13 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 164375128 + timestamp: 1742415308752 +- conda: https://prefix.dev/conda-forge/win-64/libcusolver-11.7.3.90-he0c23c2_1.conda + sha256: c967651aab88a4a9a761be0b027b460c36850a9cd9df03890ce5bf833cef8c9f + md5: 830a8909cfd5427f57b93ca6e468c1dd + depends: + - cuda-version >=12.8,<12.9.0a0 + - libcublas >=12.8.4.1,<12.9.0a0 + - libcusparse >=12.5.8.93,<12.6.0a0 + - libnvjitlink >=12.8.93,<12.9.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 158340148 + timestamp: 1742415623597 +- conda: https://prefix.dev/conda-forge/linux-64/libcusolver-dev-11.7.3.90-h9ab20c4_1.conda + sha256: 8cb85c63acd31ede63b30be3012eac4c2ec6112ce51edcbeea262bd5279a5369 + md5: bc20435174e018b95646eac41780922f + depends: + - __glibc >=2.28,<3.0.a0 + - cuda-version >=12.8,<12.9.0a0 + - libcusolver 11.7.3.90 h9ab20c4_1 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libcusolver-static >=11.7.3.90 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 61032 + timestamp: 1742415570459 +- conda: https://prefix.dev/conda-forge/linux-64/libcusparse-12.5.8.93-h5888daf_1.conda + sha256: c97c95beedc098c5a9ec9250ac6eaf1a7db4c8475de0e4f42997df973133a7e3 + md5: 2ba14c21959411d913a0e74f58d52e08 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libnvjitlink >=12.8.93,<12.9.0a0 + - libstdcxx >=13 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 170119902 + timestamp: 1743620054443 +- conda: https://prefix.dev/conda-forge/win-64/libcusparse-12.5.8.93-he0c23c2_1.conda + sha256: 4cb21b413e66f3a9eabd44bbc5333776f05af8f00bc985c92cf769523abae365 + md5: 50600717c953c6fa95f25e497cdea47d + depends: + - cuda-version >=12.8,<12.9.0a0 + - libnvjitlink >=12.8.93,<12.9.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 168226951 + timestamp: 1743620611184 +- conda: https://prefix.dev/conda-forge/linux-64/libcusparse-dev-12.5.8.93-h5888daf_1.conda + sha256: 5cb875fa5ae065754fccde4b8fd3b7fc87158d6b84914866ea62d5606cddacfb + md5: 2d86d0c78cefae3e5286b3aeec8ec39b + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.8,<12.9.0a0 + - libcusparse 12.5.8.93 h5888daf_1 + - libgcc >=13 + - libnvjitlink >=12.8.93,<12.9.0a0 + - libstdcxx >=13 + constrains: + - libcusparse-static >=12.5.8.93 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 52819 + timestamp: 1743620381340 +- conda: https://prefix.dev/conda-forge/osx-64/libcxx-20.1.2-hf95d169_0.conda + sha256: 44a62b1fdc70ba07a9375eaca433bdac50518ffee6e0c6977eb65069fb70977e + md5: 25cc3210a5a8a1b332e12d20db11c6dd + depends: + - __osx >=10.13 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 563556 + timestamp: 1743573278971 +- conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-20.1.2-ha82da77_0.conda + sha256: e3ad5ba1ff49f988c1476f47f395499e841bdd8eafc3908cb1b64daae3a83f3b + md5: 85ea0d49eb61f57e02ce98dc29ca161f + depends: + - __osx >=11.0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 566452 + timestamp: 1743573280445 +- conda: https://prefix.dev/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 + md5: 8dfae1d2e74767e9ce36d5fa0d8605db + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + purls: [] + size: 72255 + timestamp: 1734373823254 +- conda: https://prefix.dev/conda-forge/osx-64/libdeflate-1.23-he65b83e_0.conda + sha256: 20c1e685e7409bb82c819ba55b9f7d9a654e8e6d597081581493badb7464520e + md5: 120f8f7ba6a8defb59f4253447db4bb4 + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + purls: [] + size: 69309 + timestamp: 1734374105905 +- conda: https://prefix.dev/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 + md5: 1d8b9588be14e71df38c525767a1ac30 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: [] + size: 54132 + timestamp: 1734373971372 +- conda: https://prefix.dev/conda-forge/win-64/libdeflate-1.23-h9062f6e_0.conda + sha256: 96c47725a8258159295996ea2758fa0ff9bea330e72b59641642e16be8427ce8 + md5: a9624935147a25b06013099d3038e467 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: [] + size: 155723 + timestamp: 1734374084110 +- conda: https://prefix.dev/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 134676 + timestamp: 1738479519902 +- conda: https://prefix.dev/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda + sha256: 6cc49785940a99e6a6b8c6edbb15f44c2dd6c789d9c283e5ee7bdfedd50b4cd6 + md5: 1f4ed31220402fcddc083b4bff406868 + depends: + - ncurses + - __osx >=10.13 + - ncurses >=6.5,<7.0a0 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 115563 + timestamp: 1738479554273 +- conda: https://prefix.dev/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107691 + timestamp: 1738479560845 +- conda: https://prefix.dev/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 112766 + timestamp: 1702146165126 +- conda: https://prefix.dev/conda-forge/osx-64/libev-4.33-h10d778d_2.conda + sha256: 0d238488564a7992942aa165ff994eca540f687753b4f0998b29b4e4d030ff43 + md5: 899db79329439820b7e8f8de41bca902 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 106663 + timestamp: 1702146352558 +- 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 + purls: [] + size: 107458 + timestamp: 1702146414478 +- conda: https://prefix.dev/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 + md5: a1cfcc585f0c42bf8d5546bb1dfb668d + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 427426 + timestamp: 1685725977222 +- conda: https://prefix.dev/conda-forge/osx-64/libevent-2.1.12-ha90c15b_1.conda + sha256: e0bd9af2a29f8dd74309c0ae4f17a7c2b8c4b89f875ff1d6540c941eefbd07fb + md5: e38e467e577bd193a7d5de7c2c540b04 + depends: + - openssl >=3.1.1,<4.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 372661 + timestamp: 1685726378869 +- conda: https://prefix.dev/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 + md5: 1a109764bff3bdc7bdd84088347d71dc + depends: + - openssl >=3.1.1,<4.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 368167 + timestamp: 1685726248899 +- conda: https://prefix.dev/conda-forge/win-64/libevent-2.1.12-h3671451_1.conda + sha256: af03882afb7a7135288becf340c2f0cf8aa8221138a9a7b108aaeb308a486da1 + md5: 25efbd786caceef438be46da78a7b5ef + 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 + purls: [] + size: 410555 + timestamp: 1685726568668 +- 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.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: 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.7.0.* + license: MIT + license_family: MIT + purls: [] + 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.7.0.* + license: MIT + license_family: MIT + purls: [] + size: 140896 + timestamp: 1743432122520 +- conda: https://prefix.dev/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda + sha256: 764432d32db45466e87f10621db5b74363a9f847d2b8b1f9743746cd160f06ab + md5: ede4673863426c0883c0063d853bbd85 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + purls: [] + 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: 51216 + timestamp: 1743434595269 +- conda: https://prefix.dev/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda + sha256: c6a530924a9b14e193ea9adfe92843de2a806d1b7dbfd341546ece9653129e60 + md5: c215a60c2935b517dcda8cad4705734d + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: [] + size: 39839 + timestamp: 1743434670405 +- conda: https://prefix.dev/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda + sha256: d3b0b8812eab553d3464bbd68204f007f1ebadf96ce30eb0cbc5159f72e353f5 + md5: 85d8fa5e55ed8f93f874b3b23ed54ec6 + depends: + - 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-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 847885 + timestamp: 1740240653082 +- conda: https://prefix.dev/conda-forge/win-64/libgcc-14.2.0-h1383e82_2.conda + sha256: fddf2fc037bc95adb3b369e8866da8a71b6a67ebcfc4d7035ac4208309dc9e72 + md5: 4a74c1461a0ba47a3346c04bdccbe2ad + depends: + - _openmp_mutex >=4.5 + - libwinpthread >=12.0.0.r4.gg4f2fc60ca + constrains: + - msys2-conda-epoch <0.0a0 + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 h1383e82_2 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 666343 + timestamp: 1740240717807 +- conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53758 + timestamp: 1740240660904 +- conda: https://prefix.dev/conda-forge/linux-64/libgcrypt-lib-1.11.0-hb9d3cd8_2.conda + sha256: ffc3602f9298da248786f46b00d0594d26a18feeb1b07ce88f3d7d61075e39e6 + md5: e55712ff40a054134d51b89afca57dbc + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libgpg-error >=1.51,<2.0a0 + license: LGPL-2.1-or-later + purls: [] + size: 586185 + timestamp: 1732523190369 +- conda: https://prefix.dev/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53733 + timestamp: 1740240690977 +- conda: https://prefix.dev/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda + sha256: 984040aa98dedcfbe1cf59befd73740e30d368b96cbfa17c002297e67fa5af23 + md5: 6b27baf030f5d6603713c7e72d3f6b9a + depends: + - libgfortran5 14.2.0 h58528f3_105 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + 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 h2c44a93_105 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 155474 + timestamp: 1743913530958 +- conda: https://prefix.dev/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1461978 + timestamp: 1740240671964 +- conda: https://prefix.dev/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda + sha256: 02fc48106e1ca65cf7de15f58ec567f866f6e8e9dcced157d0cff89f0768bb59 + md5: 94560312ff3c78225bed62ab59854c31 + depends: + - 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: 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 14.2.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 806283 + timestamp: 1743913488925 +- conda: https://prefix.dev/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 + depends: + - __glibc >=2.17,<3.0.a0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 459862 + timestamp: 1740240588123 +- conda: https://prefix.dev/conda-forge/win-64/libgomp-14.2.0-h1383e82_2.conda + sha256: 674ec5f1bf319eac98d0d6ecb9c38e0192f3cf41969a5621d62a7e695e1aa9f3 + md5: dd6b1ab49e28bcb6154cd131acec985b + depends: + - libwinpthread >=12.0.0.r4.gg4f2fc60ca + constrains: + - msys2-conda-epoch <0.0a0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 524548 + timestamp: 1740240660967 +- conda: https://prefix.dev/conda-forge/linux-64/libgoogle-cloud-2.36.0-hc4361e1_1.conda + sha256: 3a56c653231d6233de5853dc01f07afad6a332799a39c3772c0948d2e68547e4 + md5: ae36e6296a8dd8e8a9a8375965bf6398 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20250127.0,<20250128.0a0 + - libcurl >=8.12.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.71.0,<1.72.0a0 + - libprotobuf >=5.29.3,<5.29.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.1,<4.0a0 + constrains: + - libgoogle-cloud 2.36.0 *_1 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1246764 + timestamp: 1741878603939 +- conda: https://prefix.dev/conda-forge/osx-64/libgoogle-cloud-2.36.0-h777fda5_1.conda + sha256: 4de9069f3f1d679b8e14bf9a091bf51f52fb83453e1657d65d22b4a129c9447a + md5: 0002a344f6b7d5cba07a6597a0486eef + depends: + - __osx >=10.14 + - libabseil * cxx17* + - libabseil >=20250127.0,<20250128.0a0 + - libcurl >=8.12.1,<9.0a0 + - libcxx >=18 + - libgrpc >=1.71.0,<1.72.0a0 + - libprotobuf >=5.29.3,<5.29.4.0a0 + - openssl >=3.4.1,<4.0a0 + constrains: + - libgoogle-cloud 2.36.0 *_1 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 894617 + timestamp: 1741879322948 +- conda: https://prefix.dev/conda-forge/osx-arm64/libgoogle-cloud-2.36.0-h9484b08_1.conda + sha256: 122a59ae466addc201ef0058d13aa041defd7fdf7f658bae4497c48441c37152 + md5: c3d4e6a0aee35d92c99b25bb6fb617eb + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20250127.0,<20250128.0a0 + - libcurl >=8.12.1,<9.0a0 + - libcxx >=18 + - libgrpc >=1.71.0,<1.72.0a0 + - libprotobuf >=5.29.3,<5.29.4.0a0 + - openssl >=3.4.1,<4.0a0 + constrains: + - libgoogle-cloud 2.36.0 *_1 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 874398 + timestamp: 1741878533033 +- conda: https://prefix.dev/conda-forge/win-64/libgoogle-cloud-2.36.0-hf249c01_1.conda + sha256: 04baf461a2ebb8e8ac0978a006774124d1a8928e921c3ae4d9c27f072db7b2e2 + md5: 2842dfad9b784ab71293915db73ff093 + depends: + - libabseil * cxx17* + - libabseil >=20250127.0,<20250128.0a0 + - libcurl >=8.12.1,<9.0a0 + - libgrpc >=1.71.0,<1.72.0a0 + - libprotobuf >=5.29.3,<5.29.4.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - libgoogle-cloud 2.36.0 *_1 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 14643 + timestamp: 1741878994528 +- conda: https://prefix.dev/conda-forge/linux-64/libgoogle-cloud-storage-2.36.0-h0121fbd_1.conda + sha256: 54235d990009417bb20071f5ce7c8dcf186b19fa7d24d72bc5efd2ffb108001c + md5: a0f7588c1f0a26d550e7bae4fb49427a + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.36.0 hc4361e1_1 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + license: Apache-2.0 + license_family: Apache + purls: [] + size: 785719 + timestamp: 1741878763994 +- conda: https://prefix.dev/conda-forge/osx-64/libgoogle-cloud-storage-2.36.0-h3397294_1.conda + sha256: 2b294f87a6fe2463db6a0af9ca7a721324aab3711e475c0e28e35f233f624245 + md5: f360c132b279b8a3c3af5c57390524be + depends: + - __osx >=10.14 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libcxx >=18 + - libgoogle-cloud 2.36.0 h777fda5_1 + - libzlib >=1.3.1,<2.0a0 + - openssl + license: Apache-2.0 + license_family: Apache + purls: [] + size: 544276 + timestamp: 1741880880598 +- conda: https://prefix.dev/conda-forge/osx-arm64/libgoogle-cloud-storage-2.36.0-h7081f7f_1.conda + sha256: 64b97ae6ec5173d80ac177f2ef51389e76adecc329bcf9b8e3f2187a0a18d734 + md5: d363a9e8d601aace65af282870a40a09 + depends: + - __osx >=11.0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libcxx >=18 + - libgoogle-cloud 2.36.0 h9484b08_1 + - libzlib >=1.3.1,<2.0a0 + - openssl + license: Apache-2.0 + license_family: Apache + purls: [] + size: 529458 + timestamp: 1741879638484 +- conda: https://prefix.dev/conda-forge/win-64/libgoogle-cloud-storage-2.36.0-he5eb982_1.conda + sha256: 0dbdfc80b79bd491f4240c6f6dc6c275d341ea24765ce40f07063a253ad21063 + md5: 8b5af0aa84ff9c2117c1cefc07622800 + depends: + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgoogle-cloud 2.36.0 hf249c01_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 + purls: [] + size: 14544 + timestamp: 1741879301389 +- conda: https://prefix.dev/conda-forge/linux-64/libgpg-error-1.53-hbd13f7d_0.conda + sha256: 64602a029d89356f62e4999c8f1b64a0a193fbaed6dfc79d8cd9a763545b2061 + md5: 95c5d6d9342880f326dec08ab4cd6253 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 277672 + timestamp: 1744440226400 +- conda: https://prefix.dev/conda-forge/linux-64/libgrpc-1.71.0-he753a82_0.conda + sha256: bd8686a8aa0f840e7a7e63b3be57200d36c136cf1c6280b44a98b89ffac06186 + md5: 65e3fc5e73aa153bb069c1baec51fc12 + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20250127.0,<20250128.0a0 + - libgcc >=13 + - libprotobuf >=5.29.3,<5.29.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.71.0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 8228423 + timestamp: 1741431701085 +- conda: https://prefix.dev/conda-forge/osx-64/libgrpc-1.71.0-h53c9a1c_0.conda + sha256: 966ba2eb5ccd871d8ac5fd8ad60edf63bc4d063fa81a1cf88b1edb748481ec9a + md5: a216708030647d270390de778510e6c9 + depends: + - __osx >=10.14 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20250127.0,<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.1,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.71.0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5280478 + timestamp: 1741432715289 +- conda: https://prefix.dev/conda-forge/osx-arm64/libgrpc-1.71.0-hf667ad3_0.conda + sha256: c10eeef0a1152452fbda7299ca1dfb41e9435aa3a7fee9d169cbceb27b109fb6 + md5: 4c0d9b0ade1b4e01ee5a37c00cdb538d + depends: + - __osx >=11.0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20250127.0,<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.1,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.71.0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5210004 + timestamp: 1741422151125 +- conda: https://prefix.dev/conda-forge/win-64/libgrpc-1.71.0-h35301be_0.conda + sha256: 0aabf519f422cca5e16322b69bd4ee5ee81f63ecf1b1d3d30ad4ac7b97f3e18d + md5: 7f07cb0bdcf2043e2be7d0ae3977a9a7 + depends: + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20250127.0,<20250128.0a0 + - libprotobuf >=5.29.3,<5.29.4.0a0 + - libre2-11 >=2024.7.2 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - re2 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - grpc-cpp =1.71.0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 14003117 + timestamp: 1741422320713 +- conda: https://prefix.dev/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + sha256: d14c016482e1409ae1c50109a9ff933460a50940d2682e745ab1c172b5282a69 + md5: 804ca9e91bcaea0824a341d55b1684f2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - 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,<2.14.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2390021 + timestamp: 1731375651179 +- conda: https://prefix.dev/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + sha256: 18a4afe14f731bfb9cf388659994263904d20111e42f841e9eea1bb6f91f4ab4 + md5: e796ff8ddc598affdf7c173d6145f087 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: LGPL-2.1-only + purls: [] + 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: 669052 + timestamp: 1740128415026 +- conda: https://prefix.dev/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + sha256: d30780d24bf3a30b4f116fca74dedb4199b34d500fe6c52cced5f8cc1e926f03 + md5: 450e6bdc0c7d986acf7b8443dce87111 + depends: + - __osx >=11.0 + license: LGPL-2.1-only + purls: [] + size: 681804 + timestamp: 1740128227484 +- 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: 638142 + timestamp: 1740128665984 +- conda: https://prefix.dev/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + 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-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda + sha256: d9572fd1024adc374aae7c247d0f29fdf4b122f1e3586fe62acc18067f40d02f + md5: 72507f8e3961bc968af17435060b6dd6 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + purls: [] + size: 579748 + timestamp: 1694475265912 +- conda: https://prefix.dev/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 + md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + 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 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + purls: [] + size: 822966 + timestamp: 1694475223854 +- conda: https://prefix.dev/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + build_number: 31 + sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 + md5: 452b98eafe050ecff932f0ec832dd03f + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - 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: 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: + - libblas 3.9.0 31_hfdb39a5_mkl + constrains: + - 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: 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 20_osx64_mkl + constrains: + - blas * 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: 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 31_h7f60823_openblas + constrains: + - 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: 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 31_h10e41b3_openblas + constrains: + - 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: 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 31_h641d27c_mkl + constrains: + - 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: 3732648 + timestamp: 1740088548986 +- conda: https://prefix.dev/conda-forge/linux-64/libllvm20-20.1.2-ha7bfdaf_0.conda + sha256: fbb343514f3bcee38ea157bde5834b8b5afebb936fec6d521d3de1ee4e321369 + md5: 8354769527f9f441a3a04aa1c19188d9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.7,<2.14.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 43003617 + timestamp: 1743601873840 +- conda: https://prefix.dev/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_0.conda + sha256: f4f21dfc54b08d462f707b771ecce3fa9bc702a2a05b55654f64154f48b141ef + md5: 0e87378639676987af32fee53ba32258 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: 0BSD + purls: [] + size: 112709 + timestamp: 1743771086123 +- conda: https://prefix.dev/conda-forge/osx-64/liblzma-5.8.1-hd471939_0.conda + sha256: 3369b8ef0b544d17aebc530a687c0480051e825e8ffcd001b1a5f594fe276159 + md5: 8e1197f652c67e87a9ece738d82cef4f + depends: + - __osx >=10.13 + license: 0BSD + purls: [] + size: 104689 + timestamp: 1743771137842 +- conda: https://prefix.dev/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_0.conda + sha256: 4291dde55ebe9868491dc29716b84ac3de21b8084cbd4d05c9eea79d206b8ab7 + md5: ba24e6f25225fea3d5b6912e2ac562f8 + depends: + - __osx >=11.0 + license: 0BSD + purls: [] + size: 92295 + timestamp: 1743771392206 +- conda: https://prefix.dev/conda-forge/win-64/liblzma-5.8.1-h2466b09_0.conda + sha256: 1477e9bff05318f3129d37be0e64c76cce0973c4b8c73d13a467d0b7f03d157c + md5: 8d5cb0016b645d6688e2ff57c5d51302 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: 0BSD + purls: [] + size: 104682 + timestamp: 1743771561515 +- 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 + - _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-h4bc722e_0.conda + sha256: d02d1d3304ecaf5c728e515eb7416517a0b118200cd5eacbe829c432d1664070 + md5: aeb98fdeb2e8f25d43ef71fbacbeec80 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 89991 + timestamp: 1723817448345 +- conda: https://prefix.dev/conda-forge/osx-64/libmpdec-4.0.0-hfdf4475_0.conda + sha256: 791be3d30d8e37ec49bcc23eb8f1e1415d911a7c023fa93685f2ea485179e258 + md5: ed625b2e59dff82859c23dd24774156b + depends: + - __osx >=10.13 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 76561 + timestamp: 1723817691512 +- conda: https://prefix.dev/conda-forge/osx-arm64/libmpdec-4.0.0-h99b78c6_0.conda + sha256: f7917de9117d3a5fe12a39e185c7ce424f8d5010a6f97b4333e8a1dcb2889d16 + md5: 7476305c35dd9acef48da8f754eedb40 + depends: + - __osx >=11.0 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 69263 + timestamp: 1723817629767 +- conda: https://prefix.dev/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda + sha256: fc529fc82c7caf51202cc5cec5bb1c2e8d90edbac6d0a4602c966366efe3c7bf + md5: 74860100b2029e2523cf480804c76b9b + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 88657 + timestamp: 1723861474602 +- conda: https://prefix.dev/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 + md5: 19e57602824042dfd0446292ef90488b + 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-64/libnghttp2-1.64.0-hc7306c3_0.conda + sha256: 0dcfdcf3a445d2d7de4f3b186ab0a794dc872f4ea21622f9b997be72712c027f + md5: ab21007194b97beade22ceb7a3f6fee5 + depends: + - __osx >=10.13 + - 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 + purls: [] + size: 606663 + timestamp: 1729572019083 +- 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 + purls: [] + size: 566719 + timestamp: 1729572385640 +- 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 + - libgcc >=13 + license: LGPL-2.1-or-later + license_family: LGPL + purls: [] + size: 741323 + timestamp: 1731846827427 +- conda: https://prefix.dev/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 33408 + timestamp: 1697359010159 +- conda: https://prefix.dev/conda-forge/linux-64/libnvjitlink-12.8.93-h5888daf_1.conda + sha256: 254737c0ffb506f3a69aaeb11ea95b8e0fb2689d9e87d6bba13b575fe5d00c1c + md5: 8f5ccfab9b7cb2560d5e11dd14763d82 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 30128577 + timestamp: 1742414274976 +- conda: https://prefix.dev/conda-forge/win-64/libnvjitlink-12.8.93-he0c23c2_1.conda + sha256: 4b8937983263f24f73eb8e08cc29cfb7114899bdd10addbb3d94aadc53210421 + md5: e8ac6a1c24d1c29b1ca77b62f25fa0e8 + depends: + - cuda-version >=12,<12.9.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 25594915 + timestamp: 1742414630457 +- 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.29,<0.3.30.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + 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 >=10.13 + - 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: 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 + - 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: 4168442 + timestamp: 1739825514918 +- conda: https://prefix.dev/conda-forge/linux-64/libopentelemetry-cpp-1.20.0-hd1b1c89_0.conda + sha256: 11ba93b440f3332499801b8f9580cea3dc19c3aa440c4deb30fd8be302a71c7f + md5: e1185384cc23e3bbf85486987835df94 + depends: + - libabseil * cxx17* + - libabseil >=20250127.1,<20250128.0a0 + - libcurl >=8.13.0,<9.0a0 + - libgrpc >=1.71.0,<1.72.0a0 + - libopentelemetry-cpp-headers 1.20.0 ha770c72_0 + - libprotobuf >=5.29.3,<5.29.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.20.0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 850005 + timestamp: 1743991616571 +- conda: https://prefix.dev/conda-forge/osx-64/libopentelemetry-cpp-1.20.0-h30c661f_0.conda + sha256: 80453979787497f115ec1da6ff588db475d38f1016c8687a5a06c7ccbf08cf07 + md5: 3c2d91e2d6da4b89a7a0598b85675428 + depends: + - libabseil * cxx17* + - libabseil >=20250127.1,<20250128.0a0 + - libcurl >=8.13.0,<9.0a0 + - libgrpc >=1.71.0,<1.72.0a0 + - libopentelemetry-cpp-headers 1.20.0 h694c41f_0 + - libprotobuf >=5.29.3,<5.29.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.20.0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 571755 + timestamp: 1743991578741 +- conda: https://prefix.dev/conda-forge/osx-arm64/libopentelemetry-cpp-1.20.0-h0181452_0.conda + sha256: a179ccddfaad1a49c8afc22f20ed3320334c3580d0c0c62cee3e53406f304688 + md5: 659b115a3025c9741bbfa88529f626fb + depends: + - libabseil * cxx17* + - libabseil >=20250127.1,<20250128.0a0 + - libcurl >=8.13.0,<9.0a0 + - libgrpc >=1.71.0,<1.72.0a0 + - libopentelemetry-cpp-headers 1.20.0 hce30654_0 + - libprotobuf >=5.29.3,<5.29.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.20.0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 555898 + timestamp: 1743991726767 +- conda: https://prefix.dev/conda-forge/linux-64/libopentelemetry-cpp-headers-1.20.0-ha770c72_0.conda + sha256: 3a6796711f53c6c3596ff36d5d25aad3c567f6623bc48698037db95d0ce4fd05 + md5: 96806e6c31dc89253daff2134aeb58f3 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 347071 + timestamp: 1743991580676 +- conda: https://prefix.dev/conda-forge/osx-64/libopentelemetry-cpp-headers-1.20.0-h694c41f_0.conda + sha256: 7678fbeddb62e477d4aaf85ea1702d01b10fc5e1aca2ae573b6dde9d7615b7b2 + md5: b193aafb6ac430d1b2b0c1d4fce579b6 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 347189 + timestamp: 1743991526012 +- conda: https://prefix.dev/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.20.0-hce30654_0.conda + sha256: 3a40e8855f50df4199f74805efe57c0ca635e6ea8efdaefdfc0eb4c2ef137141 + md5: 94d561f21d9141a0d78da33e02b57164 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 347733 + timestamp: 1743991659428 +- conda: https://prefix.dev/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_7_cpu.conda + build_number: 7 + sha256: 842e0d023ce11816df80468eb8ff5af1e5251ac123e53b13bcd8ed66adf7e1cd + md5: 9fa0679126b39a5b9d77063430fe9607 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hb90904d_7_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 1250729 + timestamp: 1744024855984 +- conda: https://prefix.dev/conda-forge/osx-64/libparquet-19.0.1-h283e888_7_cpu.conda + build_number: 7 + sha256: 73a9df880494f53717028a2c03f0f9d03e73171291b30b6ca5dacf3d6d7fb755 + md5: 93efbf14002973f8ab59b301cc796460 + depends: + - __osx >=10.14 + - libarrow 19.0.1 hf1fce67_7_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 974612 + timestamp: 1744021864625 +- conda: https://prefix.dev/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_7_cpu.conda + build_number: 7 + sha256: 4fd0f257c69383c45474a41384a51fdc7c1dd9321218f085ce61a619f92f9575 + md5: 5bf546ac94e1bb5190eb2ef99ca794ec + depends: + - __osx >=11.0 + - libarrow 19.0.1 hd4a375f_7_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 904065 + timestamp: 1744021441344 +- conda: https://prefix.dev/conda-forge/win-64/libparquet-19.0.1-ha850022_7_cpu.conda + build_number: 7 + sha256: bbb5815b31a7f1b55abf3a157dc4530012c1ad52cd0c5248ce1d12efa0f3c00b + md5: c7faeffa54b6f79c97f85cd902a0e169 + depends: + - libarrow 19.0.1 hb2d35ca_7_cpu + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.42.34438 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 833296 + timestamp: 1744025808760 +- conda: https://prefix.dev/conda-forge/win-64/libparquet-19.0.1-ha850022_7_cuda.conda + build_number: 7 + sha256: c390713779a221a70cc2f7fd547c1dc6002742485d966828abc188e7a1835dfd + md5: ea945fb5940cf80db04c73ee763815fe + depends: + - libarrow 19.0.1 he744d6e_7_cuda + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.42.34438 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 832836 + timestamp: 1744027451700 +- conda: https://prefix.dev/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + sha256: 23367d71da58c9a61c8cbd963fcffb92768d4ae5ffbef9a47cdf1f54f98c5c36 + md5: 55199e2ae2c3651f6f9b2a447b47bdc9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + purls: [] + size: 288701 + timestamp: 1739952993639 +- conda: https://prefix.dev/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda + sha256: d00a144698debb226a01646c72eff15917eb0143f92c92e1b61ce457d9367b89 + md5: 8461ab86d2cdb76d6e971aab225be73f + depends: + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + purls: [] + size: 266874 + timestamp: 1739953034029 +- conda: https://prefix.dev/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + sha256: dc93cc30f59b28e7812c6f14d2c2e590b509c38092cce7ababe6b23541b7ed8f + md5: 3550e05e3af94a3fa9cef2694417ccdf + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + purls: [] + size: 259332 + timestamp: 1739953032676 +- conda: https://prefix.dev/conda-forge/win-64/libpng-1.6.47-had7236b_0.conda + sha256: cf8a594b697de103025dcae2c917ec9c100609caf7c917a94c64a683cb1db1ac + md5: 7d717163d9dab337c65f2bf21a676b8f + depends: + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: zlib-acknowledgement + purls: [] + size: 346101 + timestamp: 1739953426806 +- conda: https://prefix.dev/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_0.conda + sha256: 9965b1ada1f997202ad8c5a960e69057280b7b926c718df9b07c62924d9c1d73 + md5: 452518a9744fbac05fb45531979bdf29 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20250127.0,<20250128.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 3352450 + timestamp: 1741126291267 +- conda: https://prefix.dev/conda-forge/osx-64/libprotobuf-5.29.3-h1c7185b_0.conda + sha256: 7e863ceaade6c466c2f2adf8a1c21b0c8e2181c7ab1cf407e58325c1a122d613 + md5: c4295aae4cc8918f85c574800267cde9 + depends: + - __osx >=10.14 + - libabseil * cxx17* + - libabseil >=20250127.0,<20250128.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2666126 + timestamp: 1741126025811 +- conda: https://prefix.dev/conda-forge/osx-arm64/libprotobuf-5.29.3-hccd9074_0.conda + sha256: 49d424913d018f3849c4153088889cb5ac4a37e5acedc35336b78c8a8450f764 + md5: 243704f59b7c09aab5b3070538026c92 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20250127.0,<20250128.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2630681 + timestamp: 1741125634671 +- conda: https://prefix.dev/conda-forge/win-64/libprotobuf-5.29.3-he9d8c4a_0.conda + sha256: 3dbc4a112ed617cd016710740104a688c59b2a77afba197b33bd4526bd12a497 + md5: 719c9c29a00e4199ad2eba91ce92fd8e + depends: + - libabseil * cxx17* + - libabseil >=20250127.0,<20250128.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6794378 + timestamp: 1741127152394 +- 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 >=20250127.0,<20250128.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + license: BSD-3-Clause + license_family: BSD + purls: [] + 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 >=10.14 + - libabseil * cxx17* + - libabseil >=20250127.0,<20250128.0a0 + - libcxx >=18 + constrains: + - re2 2024.07.02.* + license: BSD-3-Clause + license_family: BSD + purls: [] + 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 >=20250127.0,<20250128.0a0 + - libcxx >=18 + constrains: + - re2 2024.07.02.* + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 167268 + timestamp: 1741121355716 +- conda: https://prefix.dev/conda-forge/win-64/libre2-11-2024.07.02-hd248061_3.conda + sha256: 1e037dc1bc0fdaced4e103280f30d6f272ca15558a33d9f770ba64172eb699e8 + md5: ba8d5530e951114fc3227780393d9ce2 + depends: + - libabseil * cxx17* + - libabseil >=20250127.0,<20250128.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - re2 2024.07.02.* + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 263495 + timestamp: 1741121665560 +- conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_2.conda + sha256: a086289bf75c33adc1daed3f1422024504ffb5c3c8b3285c49f025c29708ed16 + md5: 962d6ac93c30b1dfc54c9cccafd1003e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: Unlicense + purls: [] + size: 918664 + timestamp: 1742083674731 +- conda: https://prefix.dev/conda-forge/osx-64/libsqlite-3.49.1-hdb6dae5_2.conda + sha256: 82695c9b16a702de615c8303387384c6ec5cf8b98e16458e5b1935b950e4ec38 + md5: 1819e770584a7e83a81541d8253cbabe + depends: + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 + license: Unlicense + purls: [] + size: 977701 + timestamp: 1742083869897 +- conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_2.conda + sha256: 907a95f73623c343fc14785cbfefcb7a6b4f2bcf9294fcb295c121611c3a590d + md5: 3b1e330d775170ac46dff9a94c253bd0 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + license: Unlicense + purls: [] + size: 900188 + timestamp: 1742083865246 +- conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.conda + sha256: c092d42d00fd85cf609cc58574ba2b03c141af5762283f36f5dd445ef7c0f4fe + md5: b58b66d4ad1aaf1c2543cbbd6afb1a59 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Unlicense + purls: [] + size: 1081292 + timestamp: 1742083956001 +- conda: https://prefix.dev/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 304278 + timestamp: 1732349402869 +- conda: https://prefix.dev/conda-forge/osx-64/libssh2-1.11.1-h3dc7d44_0.conda + sha256: ef2a81c9a15080b996a37f0e1712881da90a710b234e63d8539d69892353de90 + md5: b1caec4561059e43a5d056684c5a2de0 + depends: + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 283874 + timestamp: 1732349525684 +- conda: https://prefix.dev/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 + depends: + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 279028 + timestamp: 1732349599461 +- conda: https://prefix.dev/conda-forge/win-64/libssh2-1.11.1-he619c9f_0.conda + sha256: 4b3256bd2b4e4b3183005d3bd8826d651eccd1a4740b70625afa2b7e7123d191 + md5: af0cbf037dd614c34399b3b3e568c557 + depends: + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.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: 291889 + timestamp: 1732349796504 +- conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3884556 + timestamp: 1740240685253 +- conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53830 + timestamp: 1740240722530 +- conda: https://prefix.dev/conda-forge/linux-64/libsystemd0-257.4-h4e0b6ca_1.conda + sha256: 5aa2ba63747ad3b6e717f025c9d2ab4bb32c0d366e1ef81669ffa73b1d9af4a2 + md5: 04bcf3055e51f8dde6fab9672fb9fca0 + depends: + - __glibc >=2.17,<3.0.a0 + - libcap >=2.75,<2.76.0a0 + - libgcc >=13 + - libgcrypt-lib >=1.11.0,<2.0a0 + - liblzma >=5.6.4,<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: 488733 + timestamp: 1741629468703 +- conda: https://prefix.dev/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 + md5: dcb95c0a98ba9ff737f7ae482aef7833 + depends: + - __glibc >=2.17,<3.0.a0 + - libevent >=2.1.12,<2.1.13.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-64/libthrift-0.21.0-h75589b3_0.conda + sha256: 3f82eddd6de435a408538ac81a7a2c0c155877534761ec9cd7a2906c005cece2 + md5: 7a472cd20d9ae866aeb6e292b33381d6 + depends: + - __osx >=10.13 + - 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: 332651 + timestamp: 1727206546431 +- 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 + purls: [] + size: 633857 + timestamp: 1727206429954 +- conda: https://prefix.dev/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 + md5: 0ea6510969e1296cc19966fad481f6de + depends: + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.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-64/libtiff-4.7.0-hb77a491_3.conda + sha256: bb50df7cfc1acb11eae63c5f4fdc251d381cda96bf02c086c3202c83a5200032 + md5: 6f2f9df7b093d6b33bc0c334acc7d2d9 + depends: + - __osx >=10.13 + - 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 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + purls: [] + size: 400099 + timestamp: 1734398943635 +- 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 + - 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 + purls: [] + size: 978878 + timestamp: 1734399004259 +- conda: https://prefix.dev/conda-forge/linux-64/libtorch-2.6.0-cpu_mkl_hf6ddc5a_104.conda + sha256: bbef3e9a9c974f0a3bc9965ef4ee23c43368fb1a8205c724ae18669450088dbc + md5: 828146bb6100e9a4217e8351b18c8e83 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - 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 + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - llvm-openmp >=20.1.2 + - mkl >=2024.2.2,<2025.0a0 + - sleef >=3.8,<4.0a0 + constrains: + - pytorch-cpu 2.6.0 + - pytorch-gpu <0.0a0 + - pytorch 2.6.0 cpu_mkl_*_104 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 54451470 + timestamp: 1744238833553 +- conda: https://prefix.dev/conda-forge/linux-64/libtorch-2.6.0-cuda126_mkl_h99b69db_304.conda + sha256: 0678a096e8c0002a625b5582c5808580aafe087f1dc18cf6dbb5338d1a7273b5 + md5: 3b260eb40ff77cb6758797e55ac97bc1 + 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 >=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 + - libmagma >=2.9.0,<2.9.1.0a0 + - libprotobuf >=5.29.3,<5.29.4.0a0 + - libstdcxx >=13 + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - llvm-openmp >=20.1.2 + - mkl >=2024.2.2,<2025.0a0 + - nccl >=2.26.2.1,<3.0a0 + - sleef >=3.8,<4.0a0 + constrains: + - pytorch 2.6.0 cuda126_mkl_*_304 + - pytorch-gpu 2.6.0 + - pytorch-cpu <0.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 522580891 + timestamp: 1744273963294 +- conda: https://prefix.dev/conda-forge/osx-64/libtorch-2.6.0-cpu_mkl_h3891332_104.conda + sha256: b9cdb6ac24469d6223290175f84b726990351299944be3ade04657bfc7b54536 + md5: 3156f399ac8cec521fd94e17538460b9 + 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-gpu <0.0a0 + - pytorch-cpu 2.6.0 + - pytorch 2.6.0 cpu_mkl_*_104 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 46965692 + timestamp: 1744249453933 +- conda: https://prefix.dev/conda-forge/osx-arm64/libtorch-2.6.0-cpu_generic_h4059bed_4.conda + sha256: 995184c0ce0a9f53d338222fcd03faa8f7bc600d0bf45774165b30919f4724b0 + md5: 0d93400adfc6397981cfb1a81df4d877 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - 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.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.8,<4.0a0 + constrains: + - pytorch-cpu 2.6.0 + - openblas * openmp_* + - pytorch-gpu <0.0a0 + - pytorch 2.6.0 cpu_generic_*_4 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 28659870 + timestamp: 1744243550060 +- conda: https://prefix.dev/conda-forge/win-64/libtorch-2.6.0-cpu_mkl_hf54a72f_104.conda + sha256: 3529f19a0e868482d4c182d48c349e51083ba4e77bae789d52c56ad7c9d5eb6c + md5: 66b76a05d76fd717beab8b3429c7c8ee + depends: + - 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 2.6.0 cpu_mkl_*_104 + - pytorch-gpu <0.0a0 + - pytorch-cpu 2.6.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 33651123 + timestamp: 1744240617170 +- conda: https://prefix.dev/conda-forge/win-64/libtorch-2.6.0-cuda126_mkl_h09c782d_304.conda + sha256: 63f73ded7f692ae0668d4739bae3db19e547e87350181b6f848ecdd37917e689 + md5: 12c02a22809d9ae29b9be9e744325d0a + 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.8.0.87,<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.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 2.6.0 + - pytorch-cpu <0.0a0 + - pytorch 2.6.0 cuda126_mkl_*_304 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 415492064 + timestamp: 1744253905978 +- conda: https://prefix.dev/conda-forge/linux-64/libudev1-257.4-hbe16f8c_1.conda + sha256: 56e55a7e7380a980b418c282cb0240b3ac55ab9308800823ff031a9529e2f013 + md5: d6716795cd81476ac2f5465f1b1cde75 + depends: + - __glibc >=2.17,<3.0.a0 + - libcap >=2.75,<2.76.0a0 + - libgcc >=13 + license: LGPL-2.1-or-later + purls: [] + size: 144039 + timestamp: 1741629479455 +- conda: https://prefix.dev/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + sha256: 8e41563ee963bf8ded06da45f4e70bf42f913cb3c2e79364eb3218deffa3cd74 + md5: aeccfff2806ae38430638ffbb4be9610 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + purls: [] + size: 82745 + timestamp: 1737244366901 +- conda: https://prefix.dev/conda-forge/osx-64/libutf8proc-2.10.0-h777c5d8_0.conda + sha256: cbac7991d6ede019fd744b9b386bb8f973ad2500c8cdcef4425e1334400125d0 + md5: 0c9c79979aeba96d102b0628fe361c56 + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + purls: [] + size: 80336 + timestamp: 1737244400359 +- conda: https://prefix.dev/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + sha256: aca3ef31d3dff5cefd3790742a5ee6548f1cf0201d0e8cee08b01da503484eb6 + md5: 5f741aed1d8d393586a5fdcaaa87f45c + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: [] + size: 83628 + timestamp: 1737244450097 +- conda: https://prefix.dev/conda-forge/win-64/libutf8proc-2.10.0-hf9b99b7_0.conda + sha256: 43cbec5355e78be500ec14322a59a6b9aac05fb72aea739356549a7637dd02a4 + md5: a4685a23eaf9ffb3eb6506102f5360b8 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: [] + size: 85371 + timestamp: 1737244781933 +- conda: https://prefix.dev/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 33601 + timestamp: 1680112270483 +- conda: https://prefix.dev/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda + sha256: b4a8890023902aef9f1f33e3e35603ad9c2f16c21fdb58e968fa6c1bd3e94c0b + md5: 771ee65e13bc599b0b62af5359d80169 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + purls: [] + size: 891272 + timestamp: 1737016632446 +- conda: https://prefix.dev/conda-forge/osx-64/libuv-1.50.0-h4cb831e_0.conda + sha256: ec9da0a005c668c0964e0a6546c21416bab608569b5863edbdf135cee26e67d8 + md5: c86c7473f79a3c06de468b923416aa23 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: [] + size: 420128 + timestamp: 1737016791074 +- conda: https://prefix.dev/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda + sha256: d13fb49d4c8262bf2c44ffb2c77bb2b5d0f85fc6de76bdb75208efeccb29fce6 + md5: 20717343fb30798ab7c23c2e92b748c1 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: [] + size: 418890 + timestamp: 1737016751326 +- conda: https://prefix.dev/conda-forge/win-64/libuv-1.50.0-h2466b09_0.conda + sha256: aeb71b2a2973ffed6d639ace6c1afef1a337836425e637d2320f3166dbaa5c80 + md5: a63a1ec1e8d017d1b9894aed98c419da + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: [] + size: 291944 + timestamp: 1737017103042 +- 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-64/libwebp-base-1.5.0-h6cf52b4_0.conda + sha256: 7f110eba04150f1fe5fe297f08fb5b82463eed74d1f068bc67c96637f9c63569 + md5: 5e0cefc99a231ac46ba21e27ae44689f + depends: + - __osx >=10.13 + constrains: + - libwebp 1.5.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 357662 + timestamp: 1734777539822 +- conda: https://prefix.dev/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a + md5: 569466afeb84f90d5bb88c11cc23d746 + depends: + - __osx >=11.0 + constrains: + - libwebp 1.5.0 + license: BSD-3-Clause + license_family: BSD + 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 + 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 + purls: [] + size: 273661 + timestamp: 1734777665516 +- conda: https://prefix.dev/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda + sha256: 373f2973b8a358528b22be5e8d84322c165b4c5577d24d94fd67ad1bb0a0f261 + md5: 08bfa5da6e242025304b206d152479ef + depends: + - ucrt + constrains: + - pthreads-win32 <0.0a0 + - msys2-conda-epoch <0.0a0 + license: MIT AND BSD-3-Clause-Clear + purls: [] + size: 35794 + timestamp: 1737099561703 +- 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-64/libxcb-1.17.0-hf1f96e2_0.conda + sha256: 8896cd5deff6f57d102734f3e672bc17120613647288f9122bec69098e839af7 + md5: bbeca862892e2898bdb45792a61c4afc + depends: + - __osx >=10.13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + purls: [] + size: 323770 + timestamp: 1727278927545 +- 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 +- conda: https://prefix.dev/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + license: LGPL-2.1-or-later + purls: [] + size: 100393 + timestamp: 1702724383534 +- conda: https://prefix.dev/conda-forge/linux-64/libxml2-2.13.7-h4bc477f_1.conda + sha256: 01c471d9912c482297fd8e83afc193101ff4504c72361b6aec6d07f2fa379263 + md5: ad1f1f8238834cd3c88ceeaee8da444a + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.1,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + purls: [] + size: 692101 + timestamp: 1743794568181 +- conda: https://prefix.dev/conda-forge/osx-64/libxml2-2.13.7-h93c44a6_1.conda + sha256: f65c22d825ae7674dd5d1906052a6046cf50eebd1d5f03d6145a6b41c0d305b5 + md5: ac5c809731d4412fd1ccff49fae27c72 + depends: + - __osx >=10.13 + - icu >=75.1,<76.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: 609618 + timestamp: 1743794752414 +- conda: https://prefix.dev/conda-forge/osx-arm64/libxml2-2.13.7-h52572c6_1.conda + sha256: 7afd5879a72e37f44a68b4af3e03f37fc1a310f041bf31fad2461d9a157e823b + md5: 522fcdaebf3bac06a7b5a78e0a89195b + depends: + - __osx >=11.0 + - icu >=75.1,<76.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: 583561 + timestamp: 1743794674233 +- conda: https://prefix.dev/conda-forge/win-64/libxml2-2.13.7-h442d1da_1.conda + sha256: 0a013527f784f4702dc18460070d8ec79d1ebb5087dd9e678d6afbeaca68d2ac + md5: c14ff7f05e57489df9244917d2b55763 + depends: + - libiconv >=1.18,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: [] + size: 1513740 + timestamp: 1743795035107 +- conda: https://prefix.dev/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + license: Zlib + license_family: Other + 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 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + license: Zlib + license_family: Other + purls: [] + size: 46438 + timestamp: 1727963202283 +- conda: https://prefix.dev/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda + sha256: ba945c6493449bed0e6e29883c4943817f7c79cbff52b83360f7b341277c6402 + md5: 41fbfac52c601159df6c01f875de31b9 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - zlib 1.3.1 *_2 + license: Zlib + license_family: Other + purls: [] + size: 55476 + timestamp: 1727963768015 +- conda: https://prefix.dev/conda-forge/linux-64/llvm-openmp-20.1.2-h024ca30_1.conda + sha256: 2c70e18a5bcb3fc2925e5d2c2c39559253d19e38c111afc91885f0dee4540fb1 + md5: 39a3992c2624b8d8e6b4994dedf3102a + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - openmp 20.1.2|20.1.2.* + license: Apache-2.0 WITH LLVM-exception + purls: [] + size: 3184699 + timestamp: 1744575972960 +- conda: https://prefix.dev/conda-forge/osx-64/llvm-openmp-20.1.2-ha54dae1_1.conda + sha256: 01dfbc83bfba8d674f574908d86bc3ffad12e42fa4f16bd71579c6bc2b7f6153 + md5: 0919db81cb42375dd9f2ab1ec032af94 + depends: + - __osx >=10.13 + constrains: + - openmp 20.1.2|20.1.2.* + license: Apache-2.0 WITH LLVM-exception + purls: [] + size: 306742 + timestamp: 1744575941356 +- conda: https://prefix.dev/conda-forge/osx-arm64/llvm-openmp-20.1.2-hdb05f8b_1.conda + sha256: 5c00ea9e47e94d59513d65c76185891ae0da7fa6a233b3430c93cc5b7ba5ef6e + md5: a4f336d84b7ad192c0c8a6b345ff7da9 + depends: + - __osx >=11.0 + constrains: + - openmp 20.1.2|20.1.2.* + license: Apache-2.0 WITH LLVM-exception + purls: [] + size: 282598 + timestamp: 1744575970264 +- 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 + - libstdcxx >=13 + - 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: 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 >=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 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/llvmlite?source=hash-mapping + 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 + - python_abi 3.10.* *_cp310 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/llvmlite?source=hash-mapping + size: 18033378 + timestamp: 1742816086477 +- conda: https://prefix.dev/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2 + sha256: 9afe0b5cfa418e8bdb30d8917c5a6cec10372b037924916f1f85b9f4899a67a6 + md5: 91e27ef3d05cc772ce627e51cff111c4 + depends: + - python >=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.* + license: BSD-2-Clause + license_family: BSD + 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-64/lz4-4.3.3-py310hf2a43f7_2.conda + sha256: ebd2c63d76600a862f6e588d00104be460441faad4b582da5ef59a23ae62396a + md5: 070a423a568739d531c3ef964eda1637 + depends: + - __osx >=10.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: 34076 + timestamp: 1733474536844 +- 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-64/lz4-c-1.10.0-h240833e_1.conda + sha256: 8da3c9d4b596e481750440c0250a7e18521e7f69a47e1c8415d568c847c08a1c + md5: d6b9bd7e356abd7e3a633d59b753495a + depends: + - __osx >=10.13 + - libcxx >=18 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 159500 + timestamp: 1733741074747 +- 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 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 139891 + timestamp: 1733741168264 +- conda: https://prefix.dev/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a + md5: fee3164ac23dfca50cfcc8b85ddefb81 + depends: + - mdurl >=0.1,<1 + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/markdown-it-py?source=hash-mapping + size: 64430 + timestamp: 1733250550053 +- conda: https://prefix.dev/conda-forge/linux-64/markupsafe-3.0.2-py310h89163eb_1.conda + sha256: 0bed20ec27dcbcaf04f02b2345358e1161fb338f8423a4ada1cf0f4d46918741 + md5: 8ce3f0332fd6de0d737e2911d329523f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=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: 23091 + timestamp: 1733219814479 +- conda: https://prefix.dev/conda-forge/linux-64/markupsafe-3.0.2-py313h8060acc_1.conda + sha256: d812caf52efcea7c9fd0eafb21d45dadfd0516812f667b928bee50e87634fae5 + md5: 21b62c55924f01b6eef6827167b46acb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=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: 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 + depends: + - __osx >=11.0 + - python >=3.10,<3.11.0a0 + - python >=3.10,<3.11.0a0 *_cpython + - 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: 22681 + timestamp: 1733219957702 +- conda: https://prefix.dev/conda-forge/osx-arm64/markupsafe-3.0.2-py313ha9b7d5b_1.conda + sha256: 81759af8a9872c8926af3aa59dc4986eee90a0956d1ec820b42ac4f949a71211 + md5: 3acf05d8e42ff0d99820d2d889776fff + depends: + - __osx >=11.0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - 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: 24757 + timestamp: 1733219916634 +- conda: https://prefix.dev/conda-forge/win-64/markupsafe-3.0.2-py310h38315fa_1.conda + sha256: deb8505b7ef76d363174d133e2ff814ae75b91ac4c3ae5550a7686897392f4d0 + md5: 79dfc050ae5a7dd4e63e392c984e2576 + 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 + constrains: + - jinja2 >=3.0.0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 25941 + timestamp: 1733220087179 +- conda: https://prefix.dev/conda-forge/win-64/markupsafe-3.0.2-py313hb4c8b1a_1.conda + sha256: f16cb398915f52d582bcea69a16cf69a56dab6ea2fab6f069da9c2c10f09534c + md5: ec9ecf6ee4cceb73a0c9a8cdfdf58bed + depends: + - 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 + constrains: + - jinja2 >=3.0.0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 27930 + timestamp: 1733220059655 +- conda: https://prefix.dev/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + sha256: 69b7dc7131703d3d60da9b0faa6dd8acbf6f6c396224cf6aef3e855b8c0c41c6 + md5: af6ab708897df59bd6e7283ceab1b56b + depends: + - python >=3.9 + - traitlets + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/matplotlib-inline?source=hash-mapping + size: 14467 + timestamp: 1733417051523 +- conda: https://prefix.dev/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda + sha256: 9b0037171dad0100f0296699a11ae7d355237b55f42f9094aebc0f41512d96a1 + md5: 827064ddfe0de2917fb29f1da4f8f533 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mccabe?source=hash-mapping + size: 12934 + timestamp: 1733216573915 +- conda: https://prefix.dev/conda-forge/noarch/mdit-py-plugins-0.4.2-pyhd8ed1ab_1.conda + sha256: c63ed79d9745109c0a70397713b0c07f06e7d3561abcb122cfc80a141ab3b449 + md5: af2060041d4f3250a7eb6ab3ec0e549b + depends: + - markdown-it-py >=1.0.0,<4.0.0 + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mdit-py-plugins?source=hash-mapping + size: 42180 + timestamp: 1733854816517 +- conda: https://prefix.dev/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 + md5: 592132998493b3ff25fd7479396e8351 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mdurl?source=hash-mapping + size: 14465 + timestamp: 1733255681319 +- conda: https://prefix.dev/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda + sha256: 77906b0acead8f86b489da46f53916e624897338770dbf70b04b8f673c9273c1 + md5: 1459379c79dda834673426504d52b319 + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - llvm-openmp >=19.1.2 + - tbb 2021.* + license: LicenseRef-IntelSimplifiedSoftwareOct2022 + license_family: Proprietary + 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 + depends: + - intel-openmp 2024.* + - tbb 2021.* + license: LicenseRef-IntelSimplifiedSoftwareOct2022 + license_family: Proprietary + purls: [] + size: 103106385 + timestamp: 1730232843711 +- conda: https://prefix.dev/conda-forge/linux-64/ml_dtypes-0.5.1-py310h5eaa309_0.conda + sha256: 80bb8601139177f4dab0d830993de9769bc6f1db13d275e5dbcf5d6568b6e337 + md5: 080f68e04d194abdba4a0a6a5178bf61 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - 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: 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 + depends: + - __osx >=11.0 + - libcxx >=18 + - numpy >=1.19,<3 + - python >=3.10,<3.11.0a0 + - python >=3.10,<3.11.0a0 *_cpython + - python_abi 3.10.* *_cp310 + license: MPL-2.0 AND Apache-2.0 + purls: + - pkg:pypi/ml-dtypes?source=hash-mapping + size: 202079 + timestamp: 1736539243508 +- conda: https://prefix.dev/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 + md5: aa14b9a5196a6d8dd364164b7ce56acf + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpfr >=4.2.1,<5.0a0 + license: LGPL-3.0-or-later + license_family: LGPL + 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 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpfr >=4.2.1,<5.0a0 + license: LGPL-3.0-or-later + license_family: LGPL + purls: [] + size: 104766 + timestamp: 1725629165420 +- conda: https://prefix.dev/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + sha256: f25d2474dd557ca66c6231c8f5ace5af312efde1ba8290a6ea5e1732a4e669c0 + md5: 2eeb50cab6652538eee8fc0bc3340c81 + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + license: LGPL-3.0-only + license_family: LGPL + 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 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + license: LGPL-3.0-only + license_family: LGPL + purls: [] + size: 345517 + timestamp: 1725746730583 +- conda: https://prefix.dev/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + sha256: 7d7aa3fcd6f42b76bd711182f3776a02bef09a68c5f117d66b712a6d81368692 + md5: 3585aa87c43ab15b167b574cd73b057b + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - 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 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.10,<3.11.0a0 + - python_abi 3.10.* *_cp310 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/msgpack?source=hash-mapping + size: 98083 + timestamp: 1725975111763 +- conda: https://prefix.dev/conda-forge/osx-64/msgpack-python-1.1.0-py310hfa8da69_0.conda + sha256: baedb39edbb57663069f449ab7b86e16fbb5cbe17e70e726c629f3bc2f38f888 + md5: 81ae931bf3527715249f2245908cd9f7 + depends: + - __osx >=10.13 + - libcxx >=17 + - python >=3.10,<3.11.0a0 + - python_abi 3.10.* *_cp310 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/msgpack?source=hash-mapping + size: 84380 + timestamp: 1725975139452 +- conda: https://prefix.dev/conda-forge/osx-arm64/msgpack-python-1.1.0-py310h7306fd8_0.conda + sha256: 4736de9b2a239b202749881c8fa690dc5c882198cc2a2a8460567f0b9994e98e + md5: 85b4e3f64bf1fdc6f7d210a7c34037f9 + depends: + - __osx >=11.0 + - libcxx >=17 + - 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/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 + 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/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 + 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.1-pyhd8ed1ab_0.conda + sha256: f035d0ea623f63247f0f944eb080eaa2a45fb5b7fda8947f4ac94d381ef3bf33 + md5: b528795158847039003033ee0db20e9b + depends: + - docutils >=0.19,<0.22 + - jinja2 + - markdown-it-py >=3.0.0,<4.0.0 + - mdit-py-plugins >=0.4.1,<1 + - python >=3.10 + - pyyaml + - sphinx >=7,<9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/myst-parser?source=hash-mapping + size: 73074 + timestamp: 1739381945342 +- conda: https://prefix.dev/conda-forge/noarch/narwhals-1.35.0-pyhd8ed1ab_0.conda + sha256: a3882c36b3986fef1cec71b9fc05a76846ece982fbacb53d1fa658cf2a12dd7c + md5: 3956c90fbbeba4f670d947f0cb2687b9 + depends: + - python >=3.9 + license: MIT + purls: + - pkg:pypi/narwhals?source=hash-mapping + size: 192705 + timestamp: 1744695255478 +- conda: https://prefix.dev/conda-forge/linux-64/nccl-2.26.2.1-ha44e49d_1.conda + sha256: d367ddff55cf77d162e435c0a6a24d1532d3dce841d49e8a1a3240c8cbc6a171 + md5: 522b11bae3feef2747d919fdcd29b6fa + 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: 180238988 + timestamp: 1744191019440 +- 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: 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: 797030 + timestamp: 1738196177597 +- conda: https://prefix.dev/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + sha256: 39625cd0c9747fa5c46a9a90683b8997d8b9649881b3dc88336b13b7bdd60117 + md5: fd40bf7f7f4bc4b647dc8512053d9873 + depends: + - python >=3.10 + - python + constrains: + - numpy >=1.24 + - scipy >=1.10,!=1.11.0,!=1.11.1 + - matplotlib >=3.7 + - pandas >=2.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 1265008 + timestamp: 1731521053408 +- conda: https://prefix.dev/conda-forge/linux-64/nlohmann_json-3.12.0-h3f2d84a_0.conda + sha256: e2fc624d6f9b2f1b695b6be6b905844613e813aa180520e73365062683fe7b49 + md5: d76872d096d063e226482c99337209dc + license: MIT + purls: [] + size: 135906 + timestamp: 1744445169928 +- conda: https://prefix.dev/conda-forge/osx-64/nlohmann_json-3.12.0-h92383a6_0.conda + sha256: b3bcb65c023d2e9f5e5e809687cfede587cc71ea9f037c45b1f87727003583db + md5: 9334c0f8d63ac55ff03e3b9cef9e371c + license: MIT + purls: [] + size: 136237 + timestamp: 1744445192082 +- conda: https://prefix.dev/conda-forge/osx-arm64/nlohmann_json-3.12.0-ha1acc90_0.conda + sha256: 6e689213c8d5e5f65ef426c0fcfb41b056e4c4d90fc020631cfddb6c87d5d6c9 + md5: c74975897efab6cdc7f5ac5a69cca2f3 + license: MIT + purls: [] + size: 136487 + timestamp: 1744445244122 +- conda: https://prefix.dev/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + sha256: 3636eec0e60466a00069b47ce94b6d88b01419b6577d8e393da44bb5bc8d3468 + md5: 7ba3f09fceae6a120d664217e58fe686 + depends: + - python >=3.9 + - setuptools + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/nodeenv?source=hash-mapping + size: 34574 + timestamp: 1734112236147 +- 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.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: 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.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - zlib + license: MIT + license_family: MIT + purls: [] + 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: 26232097 + timestamp: 1737384238153 +- conda: https://prefix.dev/conda-forge/noarch/nodejs-wheel-22.14.0-pyhd8ed1ab_0.conda + sha256: 68f0ee1513f69776c1fe619b72ff2043a3f3707e778c6023238af5dc6761de16 + md5: c330ae647ffb20646fb327b6bf55c340 + depends: + - nodejs + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/nodejs-wheel-binaries?source=hash-mapping + size: 11945 + timestamp: 1739301655520 +- conda: https://prefix.dev/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2 + sha256: d38542a151a90417065c1a234866f97fd1ea82a81de75ecb725955ab78f88b4b + md5: 9a66894dfd07c4510beb6b3f9672ccc0 + constrains: + - mkl <0.a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 3843 + timestamp: 1582593857545 +- 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 >=13 + - libstdcxx >=13 + - 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: + - 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 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/numba?source=hash-mapping + 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 >=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 >=3.10,<3.11.0a0 *_cpython + - python_abi 3.10.* *_cp310 + constrains: + - libopenblas >=0.3.18,!=0.3.20 + - 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: 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.44.0,<0.45.0a0 + - numpy >=1.19,<3 + - 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: + - 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: 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.4-py310hefbff90_0.conda + sha256: 98d7fc28869de4a43909e36317f42a1c8b2c131315b43b0d74077422b70682c3 + md5: b3a99849aa14b78d32250c0709e8792a + depends: + - __glibc >=2.17,<3.0.a0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc >=13 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx >=13 + - 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: 7981846 + timestamp: 1742255356889 +- conda: https://prefix.dev/conda-forge/linux-64/numpy-2.2.4-py313h17eae1a_0.conda + sha256: d27a5b605dac225d3b9b28bd4b3dc4479210d6ae72619f56594b4d74c88cb206 + md5: 6c905a8f170edd64f3a390c76572e331 + depends: + - __glibc >=2.17,<3.0.a0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 - libgcc >=13 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx >=13 - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 - - tomli - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD purls: - - pkg:pypi/coverage?source=hash-mapping - size: 371219 - timestamp: 1732426302564 -- kind: conda - name: coverage - version: 7.6.8 - build: py313ha9b7d5b_0 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/coverage-7.6.8-py313ha9b7d5b_0.conda - sha256: 1747141f16821adced20f12966831ff444f06942dbecb36d443db43fa8b0dfe0 - md5: 2a72ba6a651f184a6515acfa48687d11 + - pkg:pypi/numpy?source=hash-mapping + size: 8521492 + timestamp: 1742255362413 +- 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: 6861771 + timestamp: 1642633197594 +- conda: https://prefix.dev/conda-forge/osx-64/numpy-2.2.4-py310h07c5b4d_0.conda + sha256: 85c82a785ae7394200b4069cd942577eaf8a8276a308558912c363c8369c74d0 + md5: 450e96ee6e0b4a085519d1891c5e6f80 + 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.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: 7106389 + timestamp: 1742255472062 +- conda: https://prefix.dev/conda-forge/osx-64/numpy-2.2.4-py313hc518a0f_0.conda + sha256: 479c68ac7a92a2af158a84a2d7894db19c35503a83f6ec3498b26640e6f0566d + md5: df79d8538f8677bd8a3b6b179e388f48 + 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=hash-mapping + size: 7711833 + timestamp: 1742255291460 +- 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 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6291591 + timestamp: 1642632976128 +- conda: https://prefix.dev/conda-forge/osx-arm64/numpy-2.2.4-py310h4d83441_0.conda + sha256: 9ae06a84a8a27b43547e162652b5d679a7ffd1231984374904e0f4212f515e88 + md5: 3cd7fdba65e93337c2d50851ced9e52d + 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.10,<3.11.0a0 + - python >=3.10,<3.11.0a0 *_cpython + - python_abi 3.10.* *_cp310 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 5851623 + timestamp: 1742255346844 +- conda: https://prefix.dev/conda-forge/osx-arm64/numpy-2.2.4-py313h41a2e72_0.conda + sha256: 3f4029334a82fb4f22995a0916b58a98769d00f265141f535975ec35015b9699 + md5: 2f69d676535eff4ab82f4f8fcff974bb 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 - - tomli - arch: arm64 - platform: osx + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6534258 + timestamp: 1742255432786 +- 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: 6171270 + timestamp: 1642633334774 +- conda: https://prefix.dev/conda-forge/win-64/numpy-2.2.4-py310h4987827_0.conda + sha256: bbd674e60f0e9201176a6c9ab95dfa58ea642eb7cff7c2d93aab649c3a49cb10 + md5: f345b8969677cf68503d28ce0c28e756 + 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 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6565557 + timestamp: 1742255902648 +- conda: https://prefix.dev/conda-forge/win-64/numpy-2.2.4-py313hefb8edb_0.conda + sha256: 6747722f0a62af008d573c9615eadcae849ad07d936cb2d9c8cf8a2d26744098 + md5: c724b713601d87f7157ffb495152e337 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - liblapack >=3.9.0,<4.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 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=compressed-mapping + size: 7204910 + timestamp: 1742255945595 +- conda: https://prefix.dev/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + sha256: d836860163b027622cb59b96b92824dd75196a37d599e8ae69733b31769989a9 + md5: 5af206d64d18d6c8dfb3122b4d9e643b + depends: + - python >=3.9 + - sphinx >=6 + - tabulate >=0.8.10 + - tomli >=1.1.0 + license: BSD-3-Clause + license_family: BSD + purls: + - 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 + depends: + - __glibc >=2.17,<3.0.a0 + - 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-64/openjpeg-2.5.3-h7fd6d84_0.conda + sha256: faea03f36c9aa3524c911213b116da41695ff64b952d880551edee2843fe115b + md5: 025c711177fc3309228ca1a32374458d + depends: + - __osx >=10.13 + - 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: 332320 + timestamp: 1733816828284 +- 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 + purls: [] + size: 240148 + timestamp: 1733817010335 +- conda: https://prefix.dev/conda-forge/linux-64/openssl-3.5.0-h7b32b05_0.conda + sha256: 38285d280f84f1755b7c54baf17eccf2e3e696287954ce0adca16546b85ee62c + md5: bb539841f2a3fde210f387d00ed4bb9d + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3121673 + timestamp: 1744132167438 +- conda: https://prefix.dev/conda-forge/osx-64/openssl-3.5.0-hc426f3f_0.conda + sha256: 7ee137b67f2de89d203e5ac2ebffd6d42252700005bf6af2bbf3dc11a9dfedbd + md5: e06e13c34056b6334a7a1188b0f4c83c + depends: + - __osx >=10.13 + - ca-certificates + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2737547 + timestamp: 1744140967264 +- conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_0.conda + sha256: 53f825acb8d3e13bdad5c869f6dc7df931941450eea7f6473b955b0aaea1a399 + md5: 3d2936da7e240d24c656138e07fa2502 + depends: + - __osx >=11.0 + - ca-certificates license: Apache-2.0 - license_family: APACHE - purls: - - pkg:pypi/coverage?source=hash-mapping - size: 370706 - timestamp: 1732426401447 -- kind: conda - name: coverage - version: 7.6.8 - build: py313hb4c8b1a_0 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/coverage-7.6.8-py313hb4c8b1a_0.conda - sha256: 01b3d6d287dd34363efaa47baf93148f404af7b4f7b52f3117a3575dc6edb86a - md5: 258641c09a12218156e1706d6bea5bf6 + license_family: Apache + purls: [] + size: 3067649 + timestamp: 1744132084304 +- conda: https://prefix.dev/conda-forge/win-64/openssl-3.5.0-ha4e3fda_0.conda + sha256: 43dd7f56da142ca83c614c8b0085589650ae9032b351a901c190e48eefc73675 + md5: 4ea7db75035eb8c13fa680bb90171e08 depends: - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 - - tomli + - ca-certificates - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - arch: x86_64 - platform: win - license: Apache-2.0 - license_family: APACHE - purls: - - pkg:pypi/coverage?source=hash-mapping - size: 396450 - timestamp: 1732426714288 -- kind: conda - name: decorator - version: 5.1.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - sha256: 328a6a379f9bdfd0230e51de291ce858e6479411ea4b0545fb377c71662ef3e2 - md5: 43afe5ab04e35e17ba28649471dd7364 - depends: - - python >=3.5 - license: BSD-2-Clause - license_family: BSD - purls: - - pkg:pypi/decorator?source=hash-mapping - size: 12072 - timestamp: 1641555714315 -- kind: conda - name: dill - version: 0.3.9 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/dill-0.3.9-pyhd8ed1ab_0.conda - sha256: e597a41dcfb1a3b33d01d9d231975e2a931c3e1aeb8b5f3c40abbb10061f64b2 - md5: 27faec84454995f6774786c7e5833cd6 - depends: - - python >=3.8 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/dill?source=hash-mapping - size: 90131 - timestamp: 1727595096161 -- kind: conda - name: distlib - version: 0.3.9 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda - sha256: 300b2e714f59403df0560174f5ef6c19db8b4a3b74a7244862cf771f07dee8fb - md5: fe521c1608280cc2803ebd26dc252212 - depends: - - python 2.7|>=3.6 license: Apache-2.0 - license_family: APACHE - purls: - - pkg:pypi/distlib?source=hash-mapping - size: 276214 - timestamp: 1728557312342 -- kind: conda - name: docutils - version: 0.21.2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda - sha256: 362bfe3afaac18298c48c0c6a935641544077ce5105a42a2d8ebe750ad07c574 - md5: e8cd5d629f65bdf0f3bb312cde14659e + license_family: Apache + purls: [] + size: 8999138 + timestamp: 1744135594688 +- conda: https://prefix.dev/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda + sha256: af71aabb2bfa4b2c89b7b06403e5cec23b418452cae9f9772bd7ac3f9ea1ff44 + md5: 52919815cd35c4e1a0298af658ccda04 depends: - python >=3.9 - license: CC-PDDC AND BSD-3-Clause AND BSD-2-Clause AND ZPL-2.1 - purls: - - pkg:pypi/docutils?source=hash-mapping - size: 403226 - timestamp: 1713930478970 -- kind: conda - name: exceptiongroup - version: 1.2.2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - sha256: e0edd30c4b7144406bb4da975e6bb97d6bc9c0e999aa4efe66ae108cada5d5b5 - md5: d02ae936e42063ca46af6cdad2dbd1e0 - depends: - - python >=3.7 - license: MIT and PSF-2.0 - purls: - - pkg:pypi/exceptiongroup?source=hash-mapping - size: 20418 - timestamp: 1720869435725 -- kind: conda - name: executing - version: 2.1.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - sha256: a52d7516e2e11d3eb10908e10d3eb3f8ef267fea99ed9b09d52d96c4db3441b8 - md5: d0441db20c827c11721889a241df1220 - depends: - - python >=2.7 license: MIT license_family: MIT purls: - - pkg:pypi/executing?source=hash-mapping - size: 28337 - timestamp: 1725214501850 -- kind: conda - name: filelock - version: 3.16.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - sha256: 1da766da9dba05091af87977922fe60dc7464091a9ccffb3765d403189d39be4 - md5: 916f8ec5dd4128cd5f207a3c4c07b2c6 - depends: - - python >=3.7 - license: Unlicense - purls: - - pkg:pypi/filelock?source=hash-mapping - size: 17357 - timestamp: 1726613593584 -- kind: conda - name: furo - version: 2024.8.6 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/furo-2024.8.6-pyhd8ed1ab_1.conda - sha256: 65f527cc94ab436c7746fa048e755831d3d3808ba9073cb57696c33b58d1192f - md5: 1de9286f68ce577064262b0071ac9b4e + - pkg:pypi/opt-einsum?source=hash-mapping + size: 62479 + timestamp: 1733688053334 +- conda: https://prefix.dev/conda-forge/linux-64/optree-0.15.0-py310h3788b33_0.conda + sha256: 11365a375fccc7851e3f72da04f715a16ac60c7cf1ba4b29d5c205cb19136ee2 + md5: d3a48f9f60836a3aba05f3c87bd539a9 depends: - - beautifulsoup4 - - pygments >=2.7 - - python >=3.7 - - sphinx >=6.0,<9.0 - - sphinx-basic-ng - license: MIT - license_family: MIT + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.10,<3.11.0a0 + - python_abi 3.10.* *_cp310 + - typing-extensions >=4.5 + license: Apache-2.0 + license_family: Apache purls: - - pkg:pypi/furo?source=hash-mapping - size: 83413 - timestamp: 1727407917886 -- kind: conda - name: h2 - version: 4.1.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a - md5: b748fbf7060927a6e82df7cb5ee8f097 + - pkg:pypi/optree?source=hash-mapping + size: 386999 + timestamp: 1744034424188 +- conda: https://prefix.dev/conda-forge/osx-64/optree-0.15.0-py310hf166250_0.conda + sha256: 5334a69354531cd6f215ee362f3db9451777cd84bc6088715b3f575f3aaebeae + md5: 3be4f157978ddfe638a067aa5e65a5b0 depends: - - hpack >=4.0,<5 - - hyperframe >=6.0,<7 - - python >=3.6.1 - license: MIT - license_family: MIT + - __osx >=10.13 + - libcxx >=18 + - python >=3.10,<3.11.0a0 + - python_abi 3.10.* *_cp310 + - typing-extensions >=4.5 + license: Apache-2.0 + license_family: Apache purls: - - pkg:pypi/h2?source=hash-mapping - size: 46754 - timestamp: 1634280590080 -- kind: conda - name: hpack - version: 4.0.0 - build: pyh9f0ad1d_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8 - md5: 914d6646c4dbb1fd3ff539830a12fd71 + - pkg:pypi/optree?source=hash-mapping + size: 368944 + timestamp: 1744034421913 +- conda: https://prefix.dev/conda-forge/osx-arm64/optree-0.15.0-py310h7f4e7e6_0.conda + sha256: 03443e1ba42f02eeb73ca7a95248bcb7072fb0e44c93880ef589271320d5e557 + md5: 03edea44d0f2238930dd01018323570a depends: - - python - license: MIT - license_family: MIT + - __osx >=11.0 + - libcxx >=18 + - python >=3.10,<3.11.0a0 + - python >=3.10,<3.11.0a0 *_cpython + - python_abi 3.10.* *_cp310 + - typing-extensions >=4.5 + license: Apache-2.0 + license_family: Apache purls: - - pkg:pypi/hpack?source=hash-mapping - size: 25341 - timestamp: 1598856368685 -- kind: conda - name: hyperframe - version: 6.0.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330 - md5: 9f765cbfab6870c8435b9eefecd7a1f4 + - pkg:pypi/optree?source=hash-mapping + size: 353150 + timestamp: 1744034685288 +- conda: https://prefix.dev/conda-forge/win-64/optree-0.15.0-py310hc19bc0b_0.conda + sha256: e545275b1c5e30baad1eb4460bb76024d1b98f4f1c51bbff60791ad3db12dd91 + md5: 5727be549e6b31205c7d0819ddbd1b0f depends: - - python >=3.6 - license: MIT - license_family: MIT + - python >=3.10,<3.11.0a0 + - python_abi 3.10.* *_cp310 + - typing-extensions >=4.5 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: Apache purls: - - pkg:pypi/hyperframe?source=hash-mapping - size: 14646 - timestamp: 1619110249723 -- kind: conda - name: icu - version: '75.1' - build: he02047a_0 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/icu-75.1-he02047a_0.conda - sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e - md5: 8b189310083baabfb622af68fd9d3ae3 + - pkg:pypi/optree?source=hash-mapping + size: 312353 + timestamp: 1744034833264 +- conda: https://prefix.dev/conda-forge/linux-64/orc-2.1.1-h17f744e_1.conda + sha256: f78b0e440baa1bf8352f3a33b678f0f2a14465fd1d7bf771aa2f8b1846006f2e + md5: cfe9bc267c22b6d53438eff187649d43 depends: - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT + - libgcc >=13 + - libprotobuf >=5.29.3,<5.29.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.7,<1.6.0a0 + license: Apache-2.0 + license_family: Apache purls: [] - size: 12129203 - timestamp: 1720853576813 -- kind: conda - name: icu - version: '75.1' - build: hfee45f7_0 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 - md5: 5eb22c1d7b3fc4abb50d92d621583137 + size: 1241124 + timestamp: 1741889606201 +- conda: https://prefix.dev/conda-forge/osx-64/orc-2.1.1-h82caab2_1.conda + sha256: f4b686d470bb4ccb4ffadaa2d226f73ce4442bd894129c098c6aee78e25b6f93 + md5: 92f0e1de8e84f966a531c797dbd66274 + depends: + - __osx >=10.14 + - libcxx >=18 + - libprotobuf >=5.29.3,<5.29.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.7,<1.6.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 505875 + timestamp: 1741889809058 +- conda: https://prefix.dev/conda-forge/osx-arm64/orc-2.1.1-hd90e43c_1.conda + sha256: 7734e083287b2d49446014b6506e056a1394022407a8bfe47b5554f536368e9e + md5: c021648f89082b32d4be335af53b40a2 depends: - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT + - libcxx >=18 + - libprotobuf >=5.29.3,<5.29.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.7,<1.6.0a0 + license: Apache-2.0 + license_family: Apache purls: [] - size: 11857802 - timestamp: 1720853997952 -- kind: conda - name: identify - version: 2.6.3 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/identify-2.6.3-pyhd8ed1ab_0.conda - sha256: 2350107285349caad1a5c5c5296a1335b8649d6b1b0e8f2bde18127c404471c5 - md5: dd3acd023fc358afab730866a0e5e3f5 - depends: - - python >=3.6 - - ukkonen - license: MIT - license_family: MIT - purls: - - pkg:pypi/identify?source=hash-mapping - size: 78352 - timestamp: 1732589463054 -- kind: conda - name: idna - version: '3.10' - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - sha256: 8c57fd68e6be5eecba4462e983aed7e85761a519aab80e834bbd7794d4b545b2 - md5: 7ba2ede0e7c795ff95088daf0dc59753 + size: 473004 + timestamp: 1741889799170 +- conda: https://prefix.dev/conda-forge/win-64/orc-2.1.1-h35764e3_1.conda + sha256: 593a24c917cb1e2804045d8900d079cd9c24d33da572250db3abcc389b72ce25 + md5: ec8ccb5cec0e1a4f45ca93f2e040a36f depends: - - python >=3.6 - license: BSD-3-Clause - license_family: BSD + - libprotobuf >=5.29.3,<5.29.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.7,<1.6.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1103840 + timestamp: 1741889978401 +- 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/idna?source=hash-mapping - size: 49837 - timestamp: 1726459583613 -- kind: conda - name: imagesize - version: 1.4.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - sha256: c2bfd7043e0c4c12d8b5593de666c1e81d67b83c474a0a79282cc5c4ef845460 - md5: 7de5386c8fea29e76b303f37dde4c352 + - pkg:pypi/packaging?source=hash-mapping + size: 60164 + timestamp: 1733203368787 +- conda: https://prefix.dev/conda-forge/linux-64/pandas-2.2.3-py310h5eaa309_3.conda + sha256: 43fd80e57ebc9e0c00d169aafce533c49359174dea327a7fa8ca7454628a56f7 + md5: 07697a584fab513ce895c4511f7a2403 depends: - - python >=3.4 - license: MIT - license_family: MIT + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.10,<3.11.0a0 + - python-dateutil >=2.8.2 + - python-tzdata >=2022.7 + - python_abi 3.10.* *_cp310 + - pytz >=2020.1 + constrains: + - tabulate >=0.9.0 + - psycopg2 >=2.9.6 + - pyarrow >=10.0.1 + - numba >=0.56.4 + - xlsxwriter >=3.0.5 + - qtpy >=2.3.0 + - fastparquet >=2022.12.0 + - scipy >=1.10.0 + - sqlalchemy >=2.0.0 + - openpyxl >=3.1.0 + - html5lib >=1.1 + - s3fs >=2022.11.0 + - lxml >=4.9.2 + - odfpy >=1.4.1 + - pandas-gbq >=0.19.0 + - pytables >=3.8.0 + - fsspec >=2022.11.0 + - gcsfs >=2022.11.0 + - bottleneck >=1.3.6 + - zstandard >=0.19.0 + - pyxlsb >=1.0.10 + - xarray >=2022.12.0 + - pyreadstat >=1.2.0 + - python-calamine >=0.1.7 + - beautifulsoup4 >=4.11.2 + - xlrd >=2.0.1 + - tzdata >=2022.7 + - numexpr >=2.8.4 + - matplotlib >=3.6.3 + - blosc >=1.21.3 + - pyqt5 >=5.15.9 + license: BSD-3-Clause purls: - - pkg:pypi/imagesize?source=hash-mapping - size: 10164 - timestamp: 1656939625410 -- kind: conda - name: iniconfig - version: 2.0.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda - sha256: 38740c939b668b36a50ef455b077e8015b8c9cf89860d421b3fff86048f49666 - md5: f800d2da156d08e289b14e87e43c1ae5 + - pkg:pypi/pandas?source=hash-mapping + size: 13029755 + timestamp: 1744430958318 +- conda: https://prefix.dev/conda-forge/osx-64/pandas-2.2.3-py310h96a9d13_3.conda + sha256: 2b7e5dc2e58919803d2182c74c1934cef306bf274b078c8214860aa5994fcacc + md5: 7a35a4aa31d0399bc657251ac11b5c7a depends: - - python >=3.7 - license: MIT - license_family: MIT + - __osx >=10.13 + - libcxx >=18 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.10,<3.11.0a0 + - python-dateutil >=2.8.2 + - python-tzdata >=2022.7 + - python_abi 3.10.* *_cp310 + - pytz >=2020.1 + constrains: + - psycopg2 >=2.9.6 + - python-calamine >=0.1.7 + - xlsxwriter >=3.0.5 + - pyqt5 >=5.15.9 + - bottleneck >=1.3.6 + - pandas-gbq >=0.19.0 + - blosc >=1.21.3 + - xarray >=2022.12.0 + - matplotlib >=3.6.3 + - openpyxl >=3.1.0 + - tabulate >=0.9.0 + - s3fs >=2022.11.0 + - zstandard >=0.19.0 + - lxml >=4.9.2 + - pyxlsb >=1.0.10 + - tzdata >=2022.7 + - pytables >=3.8.0 + - fsspec >=2022.11.0 + - html5lib >=1.1 + - gcsfs >=2022.11.0 + - odfpy >=1.4.1 + - pyarrow >=10.0.1 + - fastparquet >=2022.12.0 + - xlrd >=2.0.1 + - scipy >=1.10.0 + - qtpy >=2.3.0 + - beautifulsoup4 >=4.11.2 + - numba >=0.56.4 + - sqlalchemy >=2.0.0 + - pyreadstat >=1.2.0 + - numexpr >=2.8.4 + license: BSD-3-Clause purls: - - pkg:pypi/iniconfig?source=hash-mapping - size: 11101 - timestamp: 1673103208955 -- kind: conda - name: intel-openmp - version: 2024.2.1 - build: h57928b3_1083 - build_number: 1083 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - sha256: 0fd2b0b84c854029041b0ede8f4c2369242ee92acc0092f8407b1fe9238a8209 - md5: 2d89243bfb53652c182a7c73182cce4f - arch: x86_64 - platform: win - license: LicenseRef-IntelSimplifiedSoftwareOct2022 - license_family: Proprietary - purls: [] - size: 1852356 - timestamp: 1723739573141 -- kind: conda - name: ipython - version: 8.30.0 - build: pyh707e725_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/ipython-8.30.0-pyh707e725_0.conda - sha256: 65cdc105e5effea2943d3979cc1592590c923a589009b484d07672faaf047af1 - md5: 5d6e5cb3a4b820f61b2073f0ad5431f1 + - pkg:pypi/pandas?source=hash-mapping + size: 12128578 + timestamp: 1744430930237 +- conda: https://prefix.dev/conda-forge/osx-arm64/pandas-2.2.3-py310h5936506_3.conda + sha256: d6999d5bcebe1837b26d324b6a440b70a23f3e744e9a176fc9c00fc2408c95e7 + md5: ac8e350fb40fcc86b1554ec20af922d0 depends: - - __unix - - decorator - - exceptiongroup - - jedi >=0.16 - - matplotlib-inline - - pexpect >4.3 - - pickleshare - - prompt-toolkit >=3.0.41,<3.1.0 - - pygments >=2.4.0 - - python >=3.10 - - stack_data - - traitlets >=5.13.0 - - typing_extensions >=4.6 + - __osx >=11.0 + - libcxx >=18 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.10,<3.11.0a0 + - python >=3.10,<3.11.0a0 *_cpython + - python-dateutil >=2.8.2 + - python-tzdata >=2022.7 + - python_abi 3.10.* *_cp310 + - pytz >=2020.1 + constrains: + - openpyxl >=3.1.0 + - tzdata >=2022.7 + - tabulate >=0.9.0 + - pyxlsb >=1.0.10 + - pyqt5 >=5.15.9 + - pyreadstat >=1.2.0 + - pandas-gbq >=0.19.0 + - qtpy >=2.3.0 + - scipy >=1.10.0 + - pytables >=3.8.0 + - lxml >=4.9.2 + - numba >=0.56.4 + - odfpy >=1.4.1 + - numexpr >=2.8.4 + - xlrd >=2.0.1 + - fsspec >=2022.11.0 + - html5lib >=1.1 + - xarray >=2022.12.0 + - pyarrow >=10.0.1 + - xlsxwriter >=3.0.5 + - s3fs >=2022.11.0 + - bottleneck >=1.3.6 + - beautifulsoup4 >=4.11.2 + - blosc >=1.21.3 + - matplotlib >=3.6.3 + - psycopg2 >=2.9.6 + - zstandard >=0.19.0 + - gcsfs >=2022.11.0 + - sqlalchemy >=2.0.0 + - fastparquet >=2022.12.0 + - python-calamine >=0.1.7 license: BSD-3-Clause - license_family: BSD purls: - - pkg:pypi/ipython?source=hash-mapping - size: 600248 - timestamp: 1732897026255 -- kind: conda - name: ipython - version: 8.30.0 - build: pyh7428d3b_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/ipython-8.30.0-pyh7428d3b_0.conda - sha256: 94ee8215bd1f614c9c984437b184e8dbe61a4014eb5813c276e3dcb18aaa7f46 - md5: 6cdaebbc9e3feb2811eb9f52ed0b89e1 + - pkg:pypi/pandas?source=hash-mapping + size: 12046934 + timestamp: 1744430939366 +- conda: https://prefix.dev/conda-forge/win-64/pandas-2.2.3-py310hb4db72f_3.conda + sha256: fa3986017273899fd21aa14a524469bedac3923e2ecfdfdba59a34769b56b9b8 + md5: 60c6ae5813eb1cbc4f7774fb69623db8 depends: - - __win - - colorama - - decorator - - exceptiongroup - - jedi >=0.16 - - matplotlib-inline - - pickleshare - - prompt-toolkit >=3.0.41,<3.1.0 - - pygments >=2.4.0 - - python >=3.10 - - stack_data - - traitlets >=5.13.0 - - typing_extensions >=4.6 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.10,<3.11.0a0 + - python-dateutil >=2.8.2 + - python-tzdata >=2022.7 + - python_abi 3.10.* *_cp310 + - pytz >=2020.1 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - scipy >=1.10.0 + - pyarrow >=10.0.1 + - python-calamine >=0.1.7 + - xlsxwriter >=3.0.5 + - openpyxl >=3.1.0 + - numexpr >=2.8.4 + - matplotlib >=3.6.3 + - fsspec >=2022.11.0 + - lxml >=4.9.2 + - html5lib >=1.1 + - s3fs >=2022.11.0 + - bottleneck >=1.3.6 + - blosc >=1.21.3 + - gcsfs >=2022.11.0 + - pyqt5 >=5.15.9 + - pyreadstat >=1.2.0 + - sqlalchemy >=2.0.0 + - qtpy >=2.3.0 + - odfpy >=1.4.1 + - tabulate >=0.9.0 + - pyxlsb >=1.0.10 + - tzdata >=2022.7 + - xarray >=2022.12.0 + - zstandard >=0.19.0 + - beautifulsoup4 >=4.11.2 + - xlrd >=2.0.1 + - pandas-gbq >=0.19.0 + - psycopg2 >=2.9.6 + - numba >=0.56.4 + - fastparquet >=2022.12.0 + - pytables >=3.8.0 license: BSD-3-Clause - license_family: BSD purls: - - pkg:pypi/ipython?source=hash-mapping - size: 600466 - timestamp: 1732897444811 -- kind: conda - name: isort - version: 5.13.2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/isort-5.13.2-pyhd8ed1ab_0.conda - sha256: 78a7e2037029366d2149f73c8d02e93cac903d535e208cc4517808b0b42e85f2 - md5: 1d25ed2b95b92b026aaa795eabec8d91 - depends: - - python >=3.8,<4.0 - - setuptools + - pkg:pypi/pandas?source=hash-mapping + size: 11917543 + timestamp: 1744431481619 +- conda: https://prefix.dev/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda + sha256: 17131120c10401a99205fc6fe436e7903c0fa092f1b3e80452927ab377239bcc + md5: 5c092057b6badd30f75b06244ecd01c9 + depends: + - python >=3.9 license: MIT license_family: MIT purls: - - pkg:pypi/isort?source=hash-mapping - size: 73783 - timestamp: 1702518633821 -- kind: conda - name: jedi - version: 0.19.2 - build: pyhff2d567_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - sha256: d37dad14c00d06d33bfb99c378d0abd7645224a9491c433af5028f24863341ab - md5: 11ead81b00e0f7cc901fceb7ccfb92c1 + - pkg:pypi/parso?source=hash-mapping + size: 75295 + timestamp: 1733271352153 +- conda: https://prefix.dev/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda + sha256: 472fc587c63ec4f6eba0cc0b06008a6371e0a08a5986de3cf4e8024a47b4fe6c + md5: 0badf9c54e24cecfb0ad2f99d680c163 depends: - - parso >=0.8.3,<0.9.0 + - locket - python >=3.9 - license: Apache-2.0 AND MIT - purls: - - pkg:pypi/jedi?source=compressed-mapping - size: 842916 - timestamp: 1731317305873 -- kind: conda - name: jinja2 - version: 3.1.4 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - sha256: 27380d870d42d00350d2d52598cddaf02f9505fb24be09488da0c9b8d1428f2d - md5: 7b86ecb7d3557821c649b3c31e3eb9f2 - depends: - - markupsafe >=2.0 - - python >=3.7 + - toolz license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/jinja2?source=hash-mapping - size: 111565 - timestamp: 1715127275924 -- kind: conda - name: ld_impl_linux-64 - version: '2.43' - build: h712a8e2_2 - build_number: 2 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe - md5: 048b02e3962f066da18efe3a21b77672 + - pkg:pypi/partd?source=hash-mapping + size: 20884 + timestamp: 1715026639309 +- conda: https://prefix.dev/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + sha256: 202af1de83b585d36445dc1fda94266697341994d1a3328fabde4989e1b3d07a + md5: d0d408b1f18883a944376da5cf8101ea + depends: + - ptyprocess >=0.5 + - python >=3.9 + license: ISC + purls: + - pkg:pypi/pexpect?source=compressed-mapping + size: 53561 + timestamp: 1733302019362 +- conda: https://prefix.dev/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + sha256: e2ac3d66c367dada209fc6da43e645672364b9fd5f9d28b9f016e24b81af475b + md5: 11a9d1d09a3615fc07c3faf79bc0b943 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - 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 - constrains: - - binutils_impl_linux-64 2.43 - arch: x86_64 - platform: linux - license: GPL-3.0-only - license_family: GPL - purls: [] - size: 669211 - timestamp: 1729655358674 -- kind: conda - name: libblas - version: 3.9.0 - build: 25_linux64_openblas - build_number: 25 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - sha256: d6d12dc437d060f838820e9e61bf73baab651f91935ac594cf10beb9ef1b4450 - md5: 8ea26d42ca88ec5258802715fe1ee10b - depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 - constrains: - - liblapack 3.9.0 25_linux64_openblas - - libcblas 3.9.0 25_linux64_openblas - - blas * openblas - - liblapacke 3.9.0 25_linux64_openblas - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 15677 - timestamp: 1729642900350 -- kind: conda - name: libblas - version: 3.9.0 - build: 25_osxarm64_openblas - build_number: 25 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - sha256: f1fb9a11af0b2878bd8804b4c77d3733c40076218bcbdb35f575b1c0c9fddf11 - md5: f8cf4d920ff36ce471619010eff59cac - depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 - constrains: - - blas * openblas - - liblapack 3.9.0 25_osxarm64_openblas - - liblapacke 3.9.0 25_osxarm64_openblas - - libcblas 3.9.0 25_osxarm64_openblas - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 15913 - timestamp: 1729643265495 -- kind: conda - name: libblas - version: 3.9.0 - build: 25_win64_mkl - build_number: 25 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/libblas-3.9.0-25_win64_mkl.conda - sha256: 5468bb91c44b41ce060bbd997c797b2f91e2b7ce91a7cbf4ddf7e7b734a8dc98 - md5: 499208e81242efb6e5abc7366c91c816 - depends: - - mkl 2024.2.2 h66d3029_14 - constrains: - - blas * mkl - - libcblas 3.9.0 25_win64_mkl - - liblapack 3.9.0 25_win64_mkl - - liblapacke 3.9.0 25_win64_mkl - arch: x86_64 - platform: win - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 3736641 - timestamp: 1729643534444 -- kind: conda - name: libcblas - version: 3.9.0 - build: 25_linux64_openblas - build_number: 25 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - sha256: ab87b0477078837c91d9cda62a9faca18fba7c57cc77aa779ae24b3ac783b5dd - md5: 5dbd1b0fc0d01ec5e0e1fbe667281a11 - depends: - - libblas 3.9.0 25_linux64_openblas - constrains: - - liblapack 3.9.0 25_linux64_openblas - - blas * openblas - - liblapacke 3.9.0 25_linux64_openblas - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 15613 - timestamp: 1729642905619 -- kind: conda - name: libcblas - version: 3.9.0 - build: 25_osxarm64_openblas - build_number: 25 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - sha256: d9fa5b6b11252132a3383bbf87bd2f1b9d6248bef1b7e113c2a8ae41b0376218 - md5: 4df0fae81f0b5bf47d48c882b086da11 - depends: - - libblas 3.9.0 25_osxarm64_openblas - constrains: - - blas * openblas - - liblapack 3.9.0 25_osxarm64_openblas - - liblapacke 3.9.0 25_osxarm64_openblas - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 15837 - timestamp: 1729643270793 -- kind: conda - name: libcblas - version: 3.9.0 - build: 25_win64_mkl - build_number: 25 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/libcblas-3.9.0-25_win64_mkl.conda - sha256: 21528cdfe67dafdb2d21925515a167f13963e002c2b6d06d68984767f731850c - md5: 3ed189ba03a9888a8013aaee0d67c49d - depends: - - libblas 3.9.0 25_win64_mkl - constrains: - - blas * mkl - - liblapack 3.9.0 25_win64_mkl - - liblapacke 3.9.0 25_win64_mkl - arch: x86_64 - platform: win - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 3732258 - timestamp: 1729643561581 -- kind: conda - name: libcxx - version: 19.1.4 - build: ha82da77_0 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda - sha256: 342896ebc1d6acbf022ca6df006a936b9a472579e91e3c502cb1f52f218b78e9 - md5: a2d3d484d95889fccdd09498d8f6bf9a + - 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-64/pillow-11.1.0-py310hbf7783a_0.conda + sha256: 472a1869ca5d2bc7211f2343e204948cd151eb0e7a5bad4d3bdd53429031778e + md5: 537a01c0dcd11ca391b36edf4c89c15b depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: Apache-2.0 WITH LLVM-exception - license_family: Apache - purls: [] - size: 520678 - timestamp: 1732060258949 -- kind: conda - name: libexpat - version: 2.6.4 - build: h286801f_0 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 - md5: 38d2656dd914feb0cab8c629370768bf + - __osx >=10.13 + - 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 + license: HPND + purls: + - pkg:pypi/pillow?source=hash-mapping + size: 42216800 + timestamp: 1735929931327 +- conda: https://prefix.dev/conda-forge/osx-arm64/pillow-11.1.0-py310h61efb56_0.conda + sha256: 7eb1bf423326ae0d372504cab421994f248e882daab6750ed5ea5df4fbb9858f + md5: 72579fcac27a82e99c2c115c6718dd06 depends: - __osx >=11.0 - constrains: - - expat 2.6.4.* - arch: arm64 - platform: osx + - 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.7-pyh29332c3_0.conda + sha256: ae7d3e58224d53d6b59e1f5ac5809803bb1972f0ac4fb10cd9b8c87d4122d3e0 + md5: e57da6fe54bb3a5556cf36d199ff07d8 + depends: + - python >=3.9 + - python license: MIT license_family: MIT - purls: [] - size: 64693 - timestamp: 1730967175868 -- kind: conda - name: libexpat - version: 2.6.4 - build: h5888daf_0 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 - md5: db833e03127376d461e1e13e76f09b6c + purls: + - pkg:pypi/platformdirs?source=compressed-mapping + size: 23291 + timestamp: 1742485085457 +- conda: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + sha256: 122433fc5318816b8c69283aaf267c73d87aa2d09ce39f64c9805c9a3b264819 + md5: e9dcbce5f45f9ee500e728ae58b605b6 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - constrains: - - expat 2.6.4.* - arch: x86_64 - platform: linux + - python >=3.9 license: MIT license_family: MIT - purls: [] - size: 73304 - timestamp: 1730967041968 -- kind: conda - name: libexpat - version: 2.6.4 - build: he0c23c2_0 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda - sha256: 0c0447bf20d1013d5603499de93a16b6faa92d7ead870d96305c0f065b6a5a12 - md5: eb383771c680aa792feb529eaf9df82f + purls: + - pkg:pypi/pluggy?source=hash-mapping + size: 23595 + timestamp: 1733222855563 +- conda: https://prefix.dev/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda + sha256: d0bd8cce5f31ae940934feedec107480c00f67e881bf7db9d50c6fc0216a2ee0 + md5: 17e487cc8b5507cd3abc09398cf27949 depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - constrains: - - expat 2.6.4.* - arch: x86_64 - platform: win + - cfgv >=2.0.0 + - identify >=1.0.0 + - nodeenv >=0.11.1 + - python >=3.9 + - pyyaml >=5.1 + - virtualenv >=20.10.0 license: MIT license_family: MIT - purls: [] - size: 139068 - timestamp: 1730967442102 -- kind: conda - name: libffi - version: 3.4.2 - build: h3422bc3_5 - build_number: 5 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca - md5: 086914b672be056eb70fd4285b6783b6 - arch: arm64 - platform: osx + purls: + - pkg:pypi/pre-commit?source=hash-mapping + size: 195854 + timestamp: 1742475656293 +- conda: https://prefix.dev/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc + md5: a83f6a2fdc079e643237887a37460668 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib license: MIT license_family: MIT purls: [] - size: 39020 - timestamp: 1636488587153 -- kind: conda - name: libffi - version: 3.4.2 - build: h7f98852_5 - build_number: 5 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e - md5: d645c6d2ac96843a2bfaccd2d62b3ac3 + size: 199544 + timestamp: 1730769112346 +- conda: https://prefix.dev/conda-forge/osx-64/prometheus-cpp-1.3.0-h7802330_0.conda + sha256: af754a477ee2681cb7d5d77c621bd590d25fe1caf16741841fc2d176815fc7de + md5: f36107fa2557e63421a46676371c4226 depends: - - libgcc-ng >=9.4.0 - arch: x86_64 - platform: linux + - __osx >=10.13 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - zlib license: MIT license_family: MIT purls: [] - size: 58292 - timestamp: 1636488182923 -- kind: conda - name: libffi - version: 3.4.2 - build: h8ffe710_5 - build_number: 5 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 - sha256: 1951ab740f80660e9bc07d2ed3aefb874d78c107264fd810f24a1a6211d4b1a5 - md5: 2c96d1b6915b408893f9472569dee135 + size: 179103 + timestamp: 1730769223221 +- conda: https://prefix.dev/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + sha256: 851a77ae1a8e90db9b9f3c4466abea7afb52713c3d98ceb0d37ba6ff27df2eff + md5: 7172339b49c94275ba42fec3eaeda34f depends: - - vc >=14.1,<15.0a0 - - vs2015_runtime >=14.16.27012 - arch: x86_64 - platform: win + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - zlib license: MIT license_family: MIT purls: [] - size: 42063 - timestamp: 1636489106777 -- kind: conda - name: libgcc - version: 14.2.0 - build: h77fa898_1 - build_number: 1 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 - md5: 3cb76c3f10d3bc7f1105b2fc9db984df - depends: - - _libgcc_mutex 0.1 conda_forge - - _openmp_mutex >=4.5 - constrains: - - libgomp 14.2.0 h77fa898_1 - - libgcc-ng ==14.2.0=*_1 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - purls: [] - size: 848745 - timestamp: 1729027721139 -- kind: conda - name: libgcc-ng - version: 14.2.0 - build: h69a702a_1 - build_number: 1 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 - md5: e39480b9ca41323497b05492a63bc35b - depends: - - libgcc 14.2.0 h77fa898_1 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - purls: [] - size: 54142 - timestamp: 1729027726517 -- kind: conda - name: libgfortran - version: 5.0.0 - build: 13_2_0_hd922786_3 - build_number: 3 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b - md5: 4a55d9e169114b2b90d3ec4604cd7bbf - depends: - - libgfortran5 13.2.0 hf226fd6_3 - arch: arm64 - platform: osx - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - purls: [] - size: 110233 - timestamp: 1707330749033 -- kind: conda - name: libgfortran - version: 14.2.0 - build: h69a702a_1 - build_number: 1 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 - md5: f1fd30127802683586f768875127a987 - depends: - - libgfortran5 14.2.0 hd5240d6_1 - constrains: - - libgfortran-ng ==14.2.0=*_1 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - purls: [] - size: 53997 - timestamp: 1729027752995 -- kind: conda - name: libgfortran5 - version: 13.2.0 - build: hf226fd6_3 - build_number: 3 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a - md5: 66ac81d54e95c534ae488726c1f698ea + size: 173220 + timestamp: 1730769371051 +- conda: https://prefix.dev/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + sha256: 0749c49a349bf55b8539ce5addce559b77592165da622944a51c630e94d97889 + md5: 7d823138f550b14ecae927a5ff3286de depends: - - llvm-openmp >=8.0.0 + - python >=3.9 + - wcwidth constrains: - - libgfortran 5.0.0 13_2_0_*_3 - arch: arm64 - platform: osx - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - purls: [] - size: 997381 - timestamp: 1707330687590 -- kind: conda - name: libgfortran5 - version: 14.2.0 - build: hd5240d6_1 - build_number: 1 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d - md5: 9822b874ea29af082e5d36098d25427d + - prompt_toolkit 3.0.50 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/prompt-toolkit?source=hash-mapping + size: 271905 + timestamp: 1737453457168 +- conda: https://prefix.dev/conda-forge/linux-64/psutil-7.0.0-py310ha75aee5_0.conda + sha256: 31e46270c73cac2b24a7f3462ca03eb39f21cbfdb713b0d41eb61c00867eabe9 + md5: da7d592394ff9084a23f62a1186451a2 depends: - - libgcc >=14.2.0 - constrains: - - libgfortran 14.2.0 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - purls: [] - size: 1462645 - timestamp: 1729027735353 -- kind: conda - name: libgomp - version: 14.2.0 - build: h77fa898_1 - build_number: 1 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 - md5: cc3573974587f12dda90d96e3e55a702 + - __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/psutil?source=compressed-mapping + size: 354476 + timestamp: 1740663252954 +- conda: https://prefix.dev/conda-forge/osx-64/psutil-7.0.0-py310hbb8c376_0.conda + sha256: 614c230961fab2ed8f7087fa81ae0cb5c6a6b3b9aea6d7d021dfad38c0aa349c + md5: c1d3e75575208aa864c8f0ae1ed6842e depends: - - _libgcc_mutex 0.1 conda_forge - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - purls: [] - size: 460992 - timestamp: 1729027639220 -- kind: conda - name: libhwloc - version: 2.11.1 - build: default_h8125262_1000 - build_number: 1000 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/libhwloc-2.11.1-default_h8125262_1000.conda - sha256: 92728e292640186759d6dddae3334a1bc0b139740b736ffaeccb825fb8c07a2e - md5: 933bad6e4658157f1aec9b171374fde2 - depends: - - libxml2 >=2.12.7,<3.0a0 - - pthreads-win32 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - arch: x86_64 - platform: win + - __osx >=10.13 + - python >=3.10,<3.11.0a0 + - python_abi 3.10.* *_cp310 license: BSD-3-Clause license_family: BSD - purls: [] - size: 2379689 - timestamp: 1720461835526 -- kind: conda - name: libiconv - version: '1.17' - build: hcfcfb64_2 - build_number: 2 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda - sha256: 5f844dd19b046d43174ad80c6ea75b5d504020e3b63cfbc4ace97b8730d35c7b - md5: e1eb10b1cca179f2baa3601e4efc8712 + purls: + - pkg:pypi/psutil?source=hash-mapping + size: 360590 + timestamp: 1740663319060 +- conda: https://prefix.dev/conda-forge/osx-arm64/psutil-7.0.0-py310h078409c_0.conda + sha256: c4aa4d0e144691383a88214ef02cc67909fccd5885601bafc9eaaf8bbe1c2877 + md5: 0079de80b6bf6e1c5c9ea067dce6bb05 depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - arch: x86_64 - platform: win - license: LGPL-2.1-only - purls: [] - size: 636146 - timestamp: 1702682547199 -- kind: conda - name: liblapack - version: 3.9.0 - build: 25_linux64_openblas - build_number: 25 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda - sha256: 9d1ff017714edb2d84868f0f931a4a0e7c289a971062b2ac66cfc8145df7e20e - md5: 4dc03a53fc69371a6158d0ed37214cd3 - depends: - - libblas 3.9.0 25_linux64_openblas - constrains: - - liblapacke 3.9.0 25_linux64_openblas - - libcblas 3.9.0 25_linux64_openblas - - blas * openblas - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 15608 - timestamp: 1729642910812 -- kind: conda - name: liblapack - version: 3.9.0 - build: 25_osxarm64_openblas - build_number: 25 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - sha256: fdd742407672a9af20e70764550cf18b3ab67f12e48bf04163b90492fbc401e7 - md5: 19bbddfec972d401838330453186108d - depends: - - libblas 3.9.0 25_osxarm64_openblas - constrains: - - blas * openblas - - liblapacke 3.9.0 25_osxarm64_openblas - - libcblas 3.9.0 25_osxarm64_openblas - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 15823 - timestamp: 1729643275943 -- kind: conda - name: liblapack - version: 3.9.0 - build: 25_win64_mkl - build_number: 25 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/liblapack-3.9.0-25_win64_mkl.conda - sha256: 98c13a28596389539abe3f608c6fbd2826df47671f77c58a331df878c6140c53 - md5: f716ef84564c574e8e74ae725f5d5f93 - depends: - - libblas 3.9.0 25_win64_mkl - constrains: - - blas * mkl - - libcblas 3.9.0 25_win64_mkl - - liblapacke 3.9.0 25_win64_mkl - arch: x86_64 - platform: win + - __osx >=11.0 + - 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: [] - size: 3736560 - timestamp: 1729643588182 -- kind: conda - name: libmpdec - version: 4.0.0 - build: h2466b09_0 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - sha256: fc529fc82c7caf51202cc5cec5bb1c2e8d90edbac6d0a4602c966366efe3c7bf - md5: 74860100b2029e2523cf480804c76b9b + purls: + - pkg:pypi/psutil?source=compressed-mapping + size: 363458 + timestamp: 1740663509903 +- 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 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - arch: x86_64 - platform: win - license: BSD-2-Clause + license: BSD-3-Clause license_family: BSD - purls: [] - size: 88657 - timestamp: 1723861474602 -- kind: conda - name: libmpdec - version: 4.0.0 - build: h4bc722e_0 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/libmpdec-4.0.0-h4bc722e_0.conda - sha256: d02d1d3304ecaf5c728e515eb7416517a0b118200cd5eacbe829c432d1664070 - md5: aeb98fdeb2e8f25d43ef71fbacbeec80 + purls: + - pkg:pypi/psutil?source=hash-mapping + size: 369926 + timestamp: 1740663706146 +- 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-ng >=12 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - purls: [] - size: 89991 - timestamp: 1723817448345 -- kind: conda - name: libmpdec - version: 4.0.0 - build: h99b78c6_0 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/libmpdec-4.0.0-h99b78c6_0.conda - sha256: f7917de9117d3a5fe12a39e185c7ce424f8d5010a6f97b4333e8a1dcb2889d16 - md5: 7476305c35dd9acef48da8f754eedb40 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD + - libgcc >=13 + license: MIT + license_family: MIT purls: [] - size: 69263 - timestamp: 1723817629767 -- kind: conda - name: libnsl - version: 2.0.1 - build: hd590300_0 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 - md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + size: 8252 + timestamp: 1726802366959 +- conda: https://prefix.dev/conda-forge/osx-64/pthread-stubs-0.4-h00291cd_1002.conda + sha256: 05944ca3445f31614f8c674c560bca02ff05cb51637a96f665cb2bbe496099e5 + md5: 8bcf980d2c6b17094961198284b8e862 depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: LGPL-2.1-only - license_family: GPL + - __osx >=10.13 + license: MIT + license_family: MIT purls: [] - size: 33408 - timestamp: 1697359010159 -- kind: conda - name: libopenblas - version: 0.3.28 - build: openmp_hf332438_1 - build_number: 1 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 - md5: 40803a48d947c8639da6704e9a44d3ce + size: 8364 + timestamp: 1726802331537 +- conda: https://prefix.dev/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 + md5: 415816daf82e0b23a736a069a75e9da7 depends: - __osx >=11.0 - - libgfortran 5.* - - libgfortran5 >=13.2.0 - - llvm-openmp >=18.1.8 - constrains: - - openblas >=0.3.28,<0.3.29.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 4165774 - timestamp: 1730772154295 -- kind: conda - name: libopenblas - version: 0.3.28 - build: pthreads_h94d23a6_1 - build_number: 1 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe - md5: 62857b389e42b36b686331bec0922050 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.2.0 - constrains: - - openblas >=0.3.28,<0.3.29.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD + license: MIT + license_family: MIT purls: [] - size: 5578513 - timestamp: 1730772671118 -- kind: conda - name: libsqlite - version: 3.47.0 - build: h2466b09_1 - build_number: 1 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/libsqlite-3.47.0-h2466b09_1.conda - sha256: 3342d6fe787f5830f7e8466d9c65c914bfd8d67220fb5673041b338cbba47afe - md5: 5b1f36012cc3d09c4eb9f24ad0e2c379 + size: 8381 + timestamp: 1726802424786 +- conda: https://prefix.dev/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda + sha256: 7e446bafb4d692792310ed022fe284e848c6a868c861655a92435af7368bae7b + md5: 3c8f2573569bb816483e5cf57efbbe29 depends: + - libgcc >=13 + - libwinpthread >=12.0.0.r4.gg4f2fc60ca - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - arch: x86_64 - platform: win - license: Unlicense + license: MIT + license_family: MIT purls: [] - size: 892175 - timestamp: 1730208431651 -- kind: conda - name: libsqlite - version: 3.47.0 - build: hadc24fc_1 - build_number: 1 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda - sha256: 8a9aadf996a2399f65b679c6e7f29139d5059f699c63e6d7b50e20db10c00508 - md5: b6f02b52a174e612e89548f4663ce56a + size: 9389 + timestamp: 1726802555076 +- conda: https://prefix.dev/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + sha256: a7713dfe30faf17508ec359e0bc7e0983f5d94682492469bd462cdaae9c64d83 + md5: 7d9daffbb8d8e0af0f769dbbcd173a54 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - arch: x86_64 - platform: linux - license: Unlicense - purls: [] - size: 875349 - timestamp: 1730208050020 -- kind: conda - name: libsqlite - version: 3.47.0 - build: hbaaea75_1 - build_number: 1 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - sha256: 5a96caa566c11e5a5ebdcdb86a0759a7fb27d3c5f42e6a0fd0d6023c1e935d9e - md5: 07a14fbe439eef078cc479deca321161 + - python >=3.9 + license: ISC + purls: + - pkg:pypi/ptyprocess?source=hash-mapping + size: 19457 + timestamp: 1733302371990 +- conda: https://prefix.dev/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + sha256: 71bd24600d14bb171a6321d523486f6a06f855e75e547fa0cb2a0953b02047f0 + md5: 3bfdfb8dbcdc4af1ae3f9a8eb3948f04 depends: - - __osx >=11.0 - - libzlib >=1.3.1,<2.0a0 - arch: arm64 - platform: osx - license: Unlicense - purls: [] - size: 837683 - timestamp: 1730208293578 -- kind: conda - name: libstdcxx - version: 14.2.0 - build: hc0a3c3a_1 - build_number: 1 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 - md5: 234a5554c53625688d51062645337328 - depends: - - libgcc 14.2.0 h77fa898_1 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pure-eval?source=hash-mapping + size: 16668 + timestamp: 1733569518868 +- conda: https://prefix.dev/conda-forge/linux-64/pyarrow-19.0.1-py310hff52083_0.conda + sha256: 0e9fcf42e2a2563eb071d8b6a6809fa4067cceec5dd3989787a7b354bf3e1a62 + md5: 96aab335d44df02cd3aaba0c7dd1a645 + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.10,<3.11.0a0 + - python_abi 3.10.* *_cp310 + license: Apache-2.0 + license_family: APACHE purls: [] - size: 3893695 - timestamp: 1729027746910 -- kind: conda - name: libstdcxx-ng - version: 14.2.0 - build: h4852527_1 - build_number: 1 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 - md5: 8371ac6457591af2cf6159439c1fd051 - depends: - - libstdcxx 14.2.0 hc0a3c3a_1 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL + size: 25359 + timestamp: 1739792670797 +- conda: https://prefix.dev/conda-forge/osx-64/pyarrow-19.0.1-py310h2ec42d9_0.conda + sha256: dd0638597f4ef0a7dacc6203ac565cecf0d35305ffdbfd908a1e23775ef090f6 + md5: 91c2a91fa284e1d45c477a40623bf55d + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.10,<3.11.0a0 + - python_abi 3.10.* *_cp310 + license: Apache-2.0 + license_family: APACHE purls: [] - size: 54105 - timestamp: 1729027780628 -- kind: conda - name: libuuid - version: 2.38.1 - build: h0b41bf4_0 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 - md5: 40b61aab5c7ba9ff276c41cfffe6b80b + size: 25313 + timestamp: 1739792496402 +- conda: https://prefix.dev/conda-forge/osx-arm64/pyarrow-19.0.1-py310hb6292c7_0.conda + sha256: 7d230ccdad9ba4da11b569f791a8677e02797826ec8efb8745ba05d250755765 + md5: a7545e7a2217a3e638e7b67b731ce5d3 depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.10,<3.11.0a0 + - python_abi 3.10.* *_cp310 + license: Apache-2.0 + license_family: APACHE purls: [] - size: 33601 - timestamp: 1680112270483 -- kind: conda - name: libuv - version: 1.49.2 - build: h7ab814d_0 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - sha256: 0e5176af1e788ad5006cf261c4ea5a288a935fda48993b0240ddd2e562dc3d02 - md5: 4bc348e3a1a74d20a3f9beb866d75e0a + size: 25426 + timestamp: 1739792694989 +- conda: https://prefix.dev/conda-forge/win-64/pyarrow-19.0.1-py310h5588dad_0.conda + sha256: 8b6ee54a561305eab02f4c6d112ec176560f8cd017a31bc58ad8b04d7c690bc8 + md5: e4de4facf16585b61c43b88893d2f0ed depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.10,<3.11.0a0 + - python_abi 3.10.* *_cp310 + license: Apache-2.0 + license_family: APACHE purls: [] - size: 410500 - timestamp: 1729322654121 -- kind: conda - name: libuv - version: 1.49.2 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - sha256: a35cd81cd1a9add11024097da83cc06b0aae83186fe4124b77710876f37d8f31 - md5: 070e3c9ddab77e38799d5c30b109c633 + size: 25763 + timestamp: 1739792834961 +- conda: https://prefix.dev/conda-forge/linux-64/pyarrow-core-19.0.1-py310hac404ae_0_cpu.conda + sha256: b5c63e67ebc1ae151e728759f96fc01b818f6b7de0ee62526448bdd9d85caa47 + md5: 08bfbf49d206e2fbcccd7b92d2526a2a depends: - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1.* *cpu - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - purls: [] - size: 884647 - timestamp: 1729322566955 -- kind: conda - name: libxcrypt - version: 4.4.36 - build: hd590300_1 - build_number: 1 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c - md5: 5aa797f8787fe7a17d1b0821485b5adc + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.10,<3.11.0a0 + - python_abi 3.10.* *_cp310 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 4672057 + timestamp: 1739792491899 +- conda: https://prefix.dev/conda-forge/osx-64/pyarrow-core-19.0.1-py310h86202ae_0_cpu.conda + sha256: 53799e5d76d6fdda7e6f6b6090dc3f79a1d5d924e033ea331a4b3019a2acd6c3 + md5: ab4a08339bdccdb206fdf469975a2c8b + depends: + - __osx >=10.13 + - libarrow 19.0.1.* *cpu + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - python >=3.10,<3.11.0a0 + - python_abi 3.10.* *_cp310 + constrains: + - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 4469583 + timestamp: 1739792472820 +- conda: https://prefix.dev/conda-forge/osx-arm64/pyarrow-core-19.0.1-py310hc17921c_0_cpu.conda + sha256: 9c383de91179d9514812eed8cc03ccec3c02028cadf5e0ffed199e20e5fb8a34 + md5: 3b60288e5b558e58c01aae7161d597f6 + depends: + - __osx >=11.0 + - libarrow 19.0.1.* *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 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 3967307 + timestamp: 1739792660170 +- conda: https://prefix.dev/conda-forge/win-64/pyarrow-core-19.0.1-py310h399dd74_0_cpu.conda + sha256: 5baec9eb1af798d78137d0d380114f5f1fd4ce84d9356e3b4831e1c7d546a635 + md5: 76fc4f7fc7faedc658cd61c2cd9cea94 depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: LGPL-2.1-or-later - purls: [] - size: 100393 - timestamp: 1702724383534 -- kind: conda - name: libxml2 - version: 2.13.5 - build: h442d1da_0 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/libxml2-2.13.5-h442d1da_0.conda - sha256: 020466b17c143190bd5a6540be2ceef4c1f8d514408bd5f0adaafcd9d0057b5c - md5: 1fbabbec60a3c7c519a5973b06c3b2f4 - depends: - - libiconv >=1.17,<2.0a0 + - libarrow 19.0.1.* *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 - arch: x86_64 - platform: win - license: MIT - license_family: MIT - purls: [] - size: 1511585 - timestamp: 1731489892312 -- kind: conda - name: libzlib - version: 1.3.1 - build: h2466b09_2 - build_number: 2 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - sha256: ba945c6493449bed0e6e29883c4943817f7c79cbff52b83360f7b341277c6402 - md5: 41fbfac52c601159df6c01f875de31b9 + constrains: + - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 3471635 + timestamp: 1739792801255 +- conda: https://prefix.dev/conda-forge/win-64/pyarrow-core-19.0.1-py310h8b91b4e_0_cuda.conda + sha256: 774b9770414dc04b1e1068f5e08c575b29da61c06c507675c986bd00c2ed59b1 + md5: 60bfcf1bca4ae4fa0f52163afb288b6b depends: + - __cuda >=11.8 + - libarrow 19.0.1.* *cuda + - 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 constrains: - - zlib 1.3.1 *_2 - arch: x86_64 - platform: win - license: Zlib - license_family: Other - purls: [] - size: 55476 - timestamp: 1727963768015 -- kind: conda - name: libzlib - version: 1.3.1 - build: h8359307_2 - build_number: 2 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b - md5: 369964e85dc26bfe78f41399b366c435 - depends: - - __osx >=11.0 - constrains: - - zlib 1.3.1 *_2 - arch: arm64 - platform: osx - license: Zlib - license_family: Other - purls: [] - size: 46438 - timestamp: 1727963202283 -- kind: conda - name: libzlib - version: 1.3.1 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 - md5: edb0dca6bc32e4f4789199455a1dbeb8 + - apache-arrow-proc =*=cuda + - numpy >=1.21,<3 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 3527034 + timestamp: 1739794073246 +- conda: https://prefix.dev/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + sha256: 27f888492af3d5ab19553f263b0015bf3766a334668b5b3a79c7dc0416e603c1 + md5: 8088a5e7b2888c780738c3130f2a969d depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - pybind11-global 2.13.6 *_2 + - python constrains: - - zlib 1.3.1 *_2 - arch: x86_64 - platform: linux - license: Zlib - license_family: Other - purls: [] - size: 60963 - timestamp: 1727963148474 -- kind: conda - name: llvm-openmp - version: 19.1.4 - build: hdb05f8b_0 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - sha256: dfdcd8de37899d984326f9734b28f46f80b88c068e44c562933a8b3117f2401a - md5: 76ca179ec970bea6e275e2fa477c2d3c + - pybind11-abi ==4 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pybind11?source=hash-mapping + size: 186375 + timestamp: 1730237816231 +- conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.conda + sha256: 9ff0d61d86878f81779bdb7e47656a75feaab539893462cff29b8ec353026d81 + md5: 120541563e520d12d8e39abd7de9092c depends: - - __osx >=11.0 + - __unix + - python constrains: - - openmp 19.1.4|19.1.4.* - arch: arm64 - platform: osx - license: Apache-2.0 WITH LLVM-exception - license_family: APACHE - purls: [] - size: 281554 - timestamp: 1732102484807 -- kind: pypi - name: markdown-it-py - version: 3.0.0 - url: https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl - sha256: 355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 - requires_dist: - - mdurl~=0.1 - - psutil ; extra == 'benchmarking' - - pytest ; extra == 'benchmarking' - - pytest-benchmark ; extra == 'benchmarking' - - pre-commit~=3.0 ; extra == 'code-style' - - commonmark~=0.9 ; extra == 'compare' - - markdown~=3.4 ; extra == 'compare' - - mistletoe~=1.0 ; extra == 'compare' - - mistune~=2.0 ; extra == 'compare' - - panflute~=2.3 ; extra == 'compare' - - linkify-it-py>=1,<3 ; extra == 'linkify' - - mdit-py-plugins ; extra == 'plugins' - - gprof2dot ; extra == 'profiling' - - mdit-py-plugins ; extra == 'rtd' - - myst-parser ; extra == 'rtd' - - pyyaml ; extra == 'rtd' - - sphinx ; extra == 'rtd' - - sphinx-copybutton ; extra == 'rtd' - - sphinx-design ; extra == 'rtd' - - sphinx-book-theme ; extra == 'rtd' - - jupyter-sphinx ; extra == 'rtd' - - coverage ; extra == 'testing' - - pytest ; extra == 'testing' - - pytest-cov ; extra == 'testing' - - pytest-regressions ; extra == 'testing' - requires_python: '>=3.8' -- kind: conda - name: markupsafe - version: 3.0.2 - build: py313h8060acc_0 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/markupsafe-3.0.2-py313h8060acc_0.conda - sha256: 9158873dbd5b715d5683dd9241b3eab35e896e31ea7842052f1b4e8c3945bf45 - md5: ab825f8b676368beb91350c6a2da6e11 + - pybind11-abi ==4 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pybind11-global?source=hash-mapping + size: 179139 + timestamp: 1730237481227 +- conda: https://prefix.dev/conda-forge/noarch/pybind11-global-2.13.6-pyhab904b8_2.conda + sha256: 49b3c9b5e73bf696e7af9824095eb34e4a74334fc108af06e8739c1fec54ab9a + md5: 3482d403d3fef1cb2810c53a48548185 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - __win + - python constrains: - - jinja2 >=3.0.0 - arch: x86_64 - platform: linux + - pybind11-abi ==4 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/markupsafe?source=hash-mapping - size: 25104 - timestamp: 1729351477153 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py313hb4c8b1a_0 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/markupsafe-3.0.2-py313hb4c8b1a_0.conda - sha256: 2b7500300aba9726f785781ded5fb1205c76d3047a93cd30868712e1e02f8c6e - md5: 4ab654528518cea7e94f53af79bd3171 + - pkg:pypi/pybind11-global?source=hash-mapping + size: 182337 + timestamp: 1730237499231 +- conda: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef depends: - - 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 - constrains: - - jinja2 >=3.0.0 - arch: x86_64 - platform: win + - python >=3.9 + - python license: BSD-3-Clause license_family: BSD + purls: [] + size: 110100 + timestamp: 1733195786147 +- conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + sha256: 28a3e3161390a9d23bc02b4419448f8d27679d9e2c250e29849e37749c8de86b + md5: 232fb4577b6687b2d503ef8e254270c9 + depends: + - python >=3.9 + license: BSD-2-Clause + license_family: BSD purls: - - pkg:pypi/markupsafe?source=hash-mapping - size: 27813 - timestamp: 1729351491668 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py313heb2b014_0 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/markupsafe-3.0.2-py313heb2b014_0.conda - sha256: 749b1f081ba6d327df6056387f54a7b1234e4bce483a809f44ea7882cbba0a0f - md5: 6d41ed5825393b6d408bae2c966c391a + - pkg:pypi/pygments?source=hash-mapping + size: 888600 + timestamp: 1736243563082 +- conda: https://prefix.dev/conda-forge/noarch/pylint-3.3.6-pyh29332c3_0.conda + sha256: 3e3e35b2cbb4b1ca3063fc2d6f44a85ac189e0935f00ed8fbe8e4713c0d00b99 + md5: 8242cc62822cc8a17f53d24d4efa75f4 depends: - - __osx >=11.0 - - python >=3.13,<3.14.0a0 - - python >=3.13,<3.14.0a0 *_cp313 - - python_abi 3.13.* *_cp313 - constrains: - - jinja2 >=3.0.0 - arch: arm64 - platform: osx + - astroid >=3.3.8,<3.4.0-dev0 + - colorama >=0.4.5 + - 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: 380800 + timestamp: 1743861447418 +- conda: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda + sha256: d016e04b0e12063fbee4a2d5fbb9b39a8d191b5a0042f0b8459188aedeabb0ca + md5: e2fd202833c4a981ce8a65974fe4abd1 + depends: + - __win + - python >=3.9 + - win_inet_pton license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/markupsafe?source=hash-mapping - size: 24620 - timestamp: 1729351507962 -- kind: conda - name: matplotlib-inline - version: 0.1.7 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - sha256: 7ea68676ea35fbb095420bbcc1c82c4767b8be7bb56abb6989b7f89d957a3bab - md5: 779345c95648be40d22aaa89de7d4254 - depends: - - python >=3.6 - - traitlets + - pkg:pypi/pysocks?source=hash-mapping + size: 21784 + timestamp: 1733217448189 +- conda: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac + depends: + - __unix + - python >=3.9 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/matplotlib-inline?source=hash-mapping - size: 14599 - timestamp: 1713250613726 -- kind: conda - name: mccabe - version: 0.7.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_0.tar.bz2 - sha256: 0466ad9490b761e9a8c57fab574fc099136b45fa19a0746ce33acdeb2a84766b - md5: 34fc335fc50eef0b5ea708f2b5f54e0c + - pkg:pypi/pysocks?source=hash-mapping + size: 21085 + timestamp: 1733217331982 +- conda: https://prefix.dev/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + sha256: 963524de7340c56615583ba7b97a6beb20d5c56a59defb59724dc2a3105169c9 + md5: c3c9316209dec74a705a36797970c6be depends: - - python >=3.6 + - colorama + - exceptiongroup >=1.0.0rc8 + - iniconfig + - packaging + - pluggy <2,>=1.5 + - python >=3.9 + - tomli >=1 + constrains: + - pytest-faulthandler >=2 license: MIT license_family: MIT purls: - - pkg:pypi/mccabe?source=hash-mapping - size: 10909 - timestamp: 1643049714491 -- kind: pypi - name: mdit-py-plugins - version: 0.4.2 - url: https://files.pythonhosted.org/packages/a7/f7/7782a043553ee469c1ff49cfa1cdace2d6bf99a1f333cf38676b3ddf30da/mdit_py_plugins-0.4.2-py3-none-any.whl - sha256: 0c673c3f889399a33b95e88d2f0d111b4447bdfea7f237dab2d488f459835636 - requires_dist: - - markdown-it-py>=1.0.0,<4.0.0 - - pre-commit ; extra == 'code-style' - - myst-parser ; extra == 'rtd' - - sphinx-book-theme ; extra == 'rtd' - - coverage ; extra == 'testing' - - pytest ; extra == 'testing' - - pytest-cov ; extra == 'testing' - - pytest-regressions ; extra == 'testing' - requires_python: '>=3.8' -- kind: pypi - name: mdurl - version: 0.1.2 - url: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl - sha256: 84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 - requires_python: '>=3.7' -- kind: conda - name: mkl - version: 2024.2.2 - build: h66d3029_14 - build_number: 14 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/mkl-2024.2.2-h66d3029_14.conda - sha256: 098ba4a3cb82f627bc79dc0ab1111b44859c9ef4aaa8d75ce043bce107770cb3 - md5: f011e7cc21918dc9d1efe0209e27fa16 - depends: - - intel-openmp 2024.* - - tbb 2021.* - arch: x86_64 - platform: win - license: LicenseRef-IntelSimplifiedSoftwareOct2022 - license_family: Proprietary - purls: [] - size: 103019089 - timestamp: 1727378392081 -- kind: conda - name: mypy_extensions - version: 1.0.0 - build: pyha770c72_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - sha256: f240217476e148e825420c6bc3a0c0efb08c0718b7042fae960400c02af858a3 - md5: 4eccaeba205f0aed9ac3a9ea58568ca3 + - pkg:pypi/pytest?source=hash-mapping + size: 259816 + timestamp: 1740946648058 +- conda: https://prefix.dev/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + sha256: 9961a1524f63d10bc29efdc52013ec06b0e95fb2619a250e250ff3618261d5cd + md5: 1e35d8f975bc0e984a19819aa91c440a depends: - - python >=3.5 + - coverage >=7.5 + - pytest >=4.6 + - python >=3.9 + - toml license: MIT license_family: MIT purls: - - pkg:pypi/mypy-extensions?source=hash-mapping - size: 10492 - timestamp: 1675543414256 -- kind: pypi - name: myst-parser - version: 4.0.0 - url: https://files.pythonhosted.org/packages/ca/b4/b036f8fdb667587bb37df29dc6644681dd78b7a2a6321a34684b79412b28/myst_parser-4.0.0-py3-none-any.whl - sha256: b9317997552424448c6096c2558872fdb6f81d3ecb3a40ce84a7518798f3f28d - requires_dist: - - docutils>=0.19,<0.22 - - jinja2 - - markdown-it-py~=3.0 - - mdit-py-plugins~=0.4,>=0.4.1 - - pyyaml - - sphinx>=7,<9 - - pre-commit~=3.0 ; extra == 'code-style' - - linkify-it-py~=2.0 ; extra == 'linkify' - - sphinx>=7 ; extra == 'rtd' - - ipython ; extra == 'rtd' - - sphinx-book-theme~=1.1 ; extra == 'rtd' - - sphinx-design ; extra == 'rtd' - - sphinx-copybutton ; extra == 'rtd' - - sphinxext-rediraffe~=0.2.7 ; extra == 'rtd' - - sphinxext-opengraph~=0.9.0 ; extra == 'rtd' - - sphinx-pyscript ; extra == 'rtd' - - sphinx-tippy>=0.4.3 ; extra == 'rtd' - - sphinx-autodoc2~=0.5.0 ; extra == 'rtd' - - sphinx-togglebutton ; extra == 'rtd' - - beautifulsoup4 ; extra == 'testing' - - coverage[toml] ; extra == 'testing' - - defusedxml ; extra == 'testing' - - pytest>=8,<9 ; extra == 'testing' - - pytest-cov ; extra == 'testing' - - pytest-regressions ; extra == 'testing' - - pytest-param-files~=0.6.0 ; extra == 'testing' - - sphinx-pytest ; extra == 'testing' - - pygments ; extra == 'testing-docutils' - - pytest>=8,<9 ; extra == 'testing-docutils' - - pytest-param-files~=0.6.0 ; extra == 'testing-docutils' - requires_python: '>=3.10' -- kind: conda - name: ncurses - version: '6.5' - build: h7bae524_1 - build_number: 1 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - sha256: 27d0b9ff78ad46e1f3a6c96c479ab44beda5f96def88e2fe626e0a49429d8afc - md5: cb2b0ea909b97b3d70cd3921d1445e1a + - pkg:pypi/pytest-cov?source=hash-mapping + size: 27565 + timestamp: 1743886993683 +- conda: https://prefix.dev/conda-forge/linux-64/python-3.10.17-hd6af730_0_cpython.conda + sha256: 0ae32507817402bfad08fbf0f4a9b5ae26859d5390b98bc939da85fd0bd4239f + md5: 7bb89638dae9ce1b8e051d0b721e83c2 depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: X11 AND BSD-3-Clause + - __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: 802321 - timestamp: 1724658775723 -- kind: conda - name: ncurses - version: '6.5' - build: he02047a_1 - build_number: 1 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - sha256: 6a1d5d8634c1a07913f1c525db6455918cbc589d745fac46d9d6e30340c8731a - md5: 70caf8bb6cf39a0b6b7efc885f51c0fe + size: 25058210 + timestamp: 1744324903492 +- 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 - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: X11 AND BSD-3-Clause + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.7.0,<3.0a0 + - libffi >=3.4.6,<3.5.0a0 + - libgcc >=13 + - liblzma >=5.8.1,<6.0a0 + - libmpdec >=4.0.0,<5.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.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: 889086 - timestamp: 1724658547447 -- kind: conda - name: nodeenv - version: 1.9.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - sha256: 85ee07342ab055dc081f3de8292c5e7195e43e046db9c5750f242f928f6bb8f2 - md5: dfe0528d0f1c16c1f7c528ea5536ab30 - depends: - - python 2.7|>=3.7 - - setuptools - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/nodeenv?source=hash-mapping - size: 34489 - timestamp: 1717585382642 -- kind: conda - name: nodejs - version: 22.11.0 - build: h57928b3_0 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/nodejs-22.11.0-h57928b3_0.conda - sha256: b182be51b98ee410d9065c2e202dfb86bb7cb6f1db958790e34836bb99e9ad4b - md5: 902548b1eaf4fec280a98c13c3d8cf3e - arch: x86_64 - platform: win - license: MIT - license_family: MIT - purls: [] - size: 25685624 - timestamp: 1731917625548 -- kind: conda - name: nodejs - version: 22.11.0 - build: haa7c7e9_0 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/nodejs-22.11.0-haa7c7e9_0.conda - sha256: 304a2bf558f262a8e29f6b6abcc5fabde3b31d903bc699381b1b57f41e7c34d0 - md5: 34da600f0addaef949d28953e23482b4 + 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-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 - - icu >=75.1,<76.0a0 - - libcxx >=18 - - libuv >=1.49.2,<2.0a0 + - 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 - - openssl >=3.4.0,<4.0a0 - - zlib - arch: arm64 - platform: osx - license: MIT - license_family: MIT + - 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: 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.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: 12136505 + timestamp: 1744663807953 + python_site_packages_path: lib/python3.13/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.8.1,<6.0a0 + - libsqlite >=3.49.1,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.0,<4.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - python_abi 3.10.* *_cp310 + license: Python-2.0 purls: [] - size: 14965601 - timestamp: 1731936621771 -- kind: conda - name: nodejs - version: 22.11.0 - build: hf235a45_0 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/nodejs-22.11.0-hf235a45_0.conda - sha256: b90c26267d12d5dd97ef09b4393235be3a3cbe5eef07c5a2ada4230623f0b0b1 - md5: 64cd0bde7dffac5baa4d9fb0ac3ae713 + 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: - - __glibc >=2.28,<3.0.a0 - - icu >=75.1,<76.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libuv >=1.49.2,<2.0a0 + - 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.4.0,<4.0a0 - - zlib - arch: x86_64 - platform: linux - license: MIT - license_family: MIT + - openssl >=3.5.0,<4.0a0 + - python_abi 3.13.* *_cp313 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Python-2.0 purls: [] - size: 21336234 - timestamp: 1731921762943 -- kind: conda - name: nodejs-wheel - version: 22.11.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/nodejs-wheel-22.11.0-pyhd8ed1ab_0.conda - sha256: 7a1fdbb9617f712b14189d44257eb42634e1c47050dc93d4cc4ea9d124def92b - md5: 31ebf648339310a0a4db3314595c3521 + size: 16614435 + timestamp: 1744663103022 + python_site_packages_path: Lib/site-packages +- conda: https://prefix.dev/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e depends: - - nodejs - python >=3.9 - license: MIT - license_family: MIT + - six >=1.5 + license: Apache-2.0 + license_family: APACHE purls: - - pkg:pypi/nodejs-wheel-binaries?source=hash-mapping - size: 11699 - timestamp: 1732885085867 -- kind: conda - name: numpy - version: 2.1.3 - build: py310h1ec8c79_0 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/numpy-2.1.3-py310h1ec8c79_0.conda - sha256: 5c47cabe3da23a791b6163acbc6ff8c4b4debd6a72e41f9f4f5294738bc3b321 - md5: 478874a4b6f52f275e71641284343488 + - pkg:pypi/python-dateutil?source=hash-mapping + size: 222505 + timestamp: 1733215763718 +- conda: https://prefix.dev/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + sha256: e8392a8044d56ad017c08fec2b0eb10ae3d1235ac967d0aab8bd7b41c4a5eaf0 + md5: 88476ae6ebd24f39261e0854ac244f33 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 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tzdata?source=compressed-mapping + size: 144160 + timestamp: 1742745254292 +- conda: https://prefix.dev/conda-forge/linux-64/python_abi-3.10-6_cp310.conda + build_number: 6 + sha256: 716287b4c15fb9a78b49a627dd7057c9fc7a29c6d4056b506fc84dab2cd2ca85 + md5: 01f0f2104b8466714804a72e511de599 constrains: - - numpy-base <0a0 - arch: x86_64 - platform: win + - python 3.10.* *_cpython license: BSD-3-Clause license_family: BSD - purls: - - pkg:pypi/numpy?source=hash-mapping - size: 6513869 - timestamp: 1730588869612 -- kind: conda - name: numpy - version: 2.1.3 - build: py310h530be0a_0 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/numpy-2.1.3-py310h530be0a_0.conda - sha256: 006b3a60d912f53c244e2b2a1062b4b092be631191204b2502e1f3e45e7decca - md5: 197700c4ca191088c1d47bab613020a4 - 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.10,<3.11.0a0 - - python >=3.10,<3.11.0a0 *_cpython - - python_abi 3.10.* *_cp310 + purls: [] + size: 6858 + timestamp: 1743483189130 +- conda: https://prefix.dev/conda-forge/linux-64/python_abi-3.13-6_cp313.conda + build_number: 6 + sha256: 4cb3b498dac60c05ceeecfd63c6f046d8e94eec902b82238fd5af08e8f3cd048 + md5: ef1d8e55d61220011cceed0b94a920d2 constrains: - - numpy-base <0a0 - arch: arm64 - platform: osx + - python 3.13.* *_cp313 license: BSD-3-Clause license_family: BSD - purls: - - pkg:pypi/numpy?source=hash-mapping - size: 5934307 - timestamp: 1730588442975 -- kind: conda - name: numpy - version: 2.1.3 - build: py310hd6e36ab_0 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/numpy-2.1.3-py310hd6e36ab_0.conda - sha256: f75a5ffd197be7b4f965307770d89234c7ea42431ecd4a72a584a8be29bc3616 - md5: b67f4f02236b75765deec42f5cf2b35b + purls: [] + size: 6858 + timestamp: 1743483201023 +- conda: https://prefix.dev/conda-forge/osx-64/python_abi-3.10-6_cp310.conda + build_number: 6 + sha256: 400e7d5f115f416601f2b1c140ebe4442a4ac5e46f917849d023b3000a57c47c + md5: 927b705b5dd44e2b335e9583f34ef103 + constrains: + - python 3.10.* *_cpython + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6926 + timestamp: 1743483238437 +- conda: https://prefix.dev/conda-forge/osx-64/python_abi-3.13-6_cp313.conda + build_number: 6 + sha256: ef527337ae8fd3e7cef49bb1ebedb2ad34915f3a19ceb1e452d7691149f1b2e7 + md5: 1867172dd3044e5c3db5772b81d67796 + constrains: + - python 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6952 + timestamp: 1743483227308 +- conda: https://prefix.dev/conda-forge/osx-arm64/python_abi-3.10-6_cp310.conda + build_number: 6 + sha256: 5a6710e0e34d20e422ef3ac714b9d7f4daf3cdaede2515eb9fb7ce4f04fab724 + md5: 7a541ee8b982b0f18d679a6f10ca96af + constrains: + - python 3.10.* *_cpython + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6982 + timestamp: 1743483298590 +- conda: https://prefix.dev/conda-forge/osx-arm64/python_abi-3.13-6_cp313.conda + build_number: 6 + sha256: 2f5205eba4d65bb6cb09c2f12c69e8981514222d5aee01b59d5610af9dc6917c + md5: c75e7f94ab431acc3942cc93b8ca6f8d + constrains: + - python 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6972 + timestamp: 1743483253239 +- conda: https://prefix.dev/conda-forge/win-64/python_abi-3.10-6_cp310.conda + build_number: 6 + sha256: 27015f67c4cea426e16cdc8054a1a3f9e78825c2e9b8a594a34e0feb9f7de606 + md5: 041cd0bfc8be015fbd78b5b2fe9b168e + constrains: + - python 3.10.* *_cpython + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 7381 + timestamp: 1743483191931 +- conda: https://prefix.dev/conda-forge/win-64/python_abi-3.13-6_cp313.conda + build_number: 6 + sha256: 0816298ff9928059d3a0c647fda7de337a2364b26c974622d1a8a6435bb04ae6 + md5: e1746f65158fa51d5367ec02547db248 + constrains: + - python 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 7361 + timestamp: 1743483194308 +- conda: https://prefix.dev/conda-forge/linux-64/pytorch-2.6.0-cpu_mkl_py310_h8ec2884_104.conda + sha256: e5fa4d701e50de1e7db15b19225d04cab0b865e57866e28e2904a328577e508a + md5: df91ebc9c16c4332750f739f4b8b6d37 depends: - __glibc >=2.17,<3.0.a0 - - libblas >=3.9.0,<4.0a0 + - _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 - - liblapack >=3.9.0,<4.0a0 + - libprotobuf >=5.29.3,<5.29.4.0a0 - libstdcxx >=13 + - libtorch 2.6.0 cpu_mkl_hf6ddc5a_104 + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - llvm-openmp >=20.1.2 + - 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.1,!=1.13.2 + - typing_extensions >=4.10.0 constrains: - - numpy-base <0a0 - arch: x86_64 - platform: linux + - pytorch-cpu 2.6.0 + - pytorch-gpu <0.0a0 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/numpy?source=hash-mapping - size: 7879497 - timestamp: 1730588558893 -- kind: conda - name: numpy - version: 2.1.3 - build: py313h4bf6692_0 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/numpy-2.1.3-py313h4bf6692_0.conda - sha256: e2e7451083c143cd61227d663e55712a7432239e9a9c758db0b66a26bc89a7f8 - md5: 17bcf851cceab793dad11ab8089d4bc4 + - pkg:pypi/torch?source=hash-mapping + size: 24590093 + timestamp: 1744241362723 +- conda: https://prefix.dev/conda-forge/linux-64/pytorch-2.6.0-cuda126_mkl_py310_h5ee0071_304.conda + sha256: 043dfe1eb0f09f275ab8ab82eab333f673c6fea70e97ecf66951d115cd6c32a4 + md5: 7d6677d437a22b5e64fcf45805b4ff1c depends: + - __cuda - __glibc >=2.17,<3.0.a0 - - libblas >=3.9.0,<4.0a0 + - _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 >=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 - - liblapack >=3.9.0,<4.0a0 + - libmagma >=2.9.0,<2.9.1.0a0 + - libprotobuf >=5.29.3,<5.29.4.0a0 - libstdcxx >=13 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - libtorch 2.6.0 cuda126_mkl_h99b69db_304 + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - llvm-openmp >=20.1.2 + - mkl >=2024.2.2,<2025.0a0 + - nccl >=2.26.2.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 <76 + - sleef >=3.8,<4.0a0 + - sympy >=1.13.1,!=1.13.2 + - triton 3.2.0.* + - typing_extensions >=4.10.0 constrains: - - numpy-base <0a0 - arch: x86_64 - platform: linux + - pytorch-gpu 2.6.0 + - pytorch-cpu <0.0a0 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/numpy?source=hash-mapping - size: 8404824 - timestamp: 1730588549941 -- kind: conda - name: numpy - version: 2.1.3 - build: py313hca4752e_0 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/numpy-2.1.3-py313hca4752e_0.conda - sha256: 3e8bb3474fc90e8c5c1799f4a4e8b887d31b50a0e94fd9f63e2725f7be2e3d4f - md5: c9d17b236cff44f7a24f19808842ec39 + - pkg:pypi/torch?source=hash-mapping + size: 24911983 + timestamp: 1744275531413 +- conda: https://prefix.dev/conda-forge/osx-64/pytorch-2.6.0-cpu_mkl_py310_h73f974a_104.conda + sha256: 4d1a2aee8558954b043041b8fb14bcf5f2fbb16c7d042fe3363f641b53c56131 + md5: 6a587a49a68d7ba6f5deefb3f01801fd depends: - - __osx >=11.0 - - libblas >=3.9.0,<4.0a0 + - __osx >=10.15 + - filelock + - fsspec + - jinja2 + - libabseil * cxx17* + - libabseil >=20250127.1,<20250128.0a0 + - libblas * *mkl - 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 + - libprotobuf >=5.29.3,<5.29.4.0a0 + - libtorch 2.6.0.* *_104 + - 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.1,!=1.13.2 + - typing_extensions >=4.10.0 constrains: - - numpy-base <0a0 - arch: arm64 - platform: osx + - pytorch-gpu <0.0a0 + - pytorch-cpu 2.6.0 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/numpy?source=hash-mapping - size: 6468921 - timestamp: 1730588494311 -- kind: conda - name: numpy - version: 2.1.3 - build: py313hee8cc43_0 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/numpy-2.1.3-py313hee8cc43_0.conda - sha256: 79b8493c839cd4cc22e2a7024f289067b029ef2b09212973a98a39e5bbeecc03 - md5: 083a90ad306f544f6eeb9ad00c4d9879 + - pkg:pypi/torch?source=hash-mapping + size: 23626509 + timestamp: 1744249962365 +- conda: https://prefix.dev/conda-forge/osx-arm64/pytorch-2.6.0-cpu_generic_py310_h10edff7_4.conda + sha256: b8dbd3b4dbf2000c165a00890d459c1ce4cc1736657a3525aee9458a9759e9c2 + md5: fa90e112a120afc83e44842df39aa9cb depends: - - libblas >=3.9.0,<4.0a0 + - __osx >=11.0 + - filelock + - fsspec + - jinja2 + - libabseil * cxx17* + - libabseil >=20250127.1,<20250128.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 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - constrains: - - numpy-base <0a0 - arch: x86_64 - platform: win - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/numpy?source=hash-mapping - size: 7072965 - timestamp: 1730588905304 -- kind: conda - name: openssl - version: 3.4.0 - build: h2466b09_0 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/openssl-3.4.0-h2466b09_0.conda - sha256: e03045a0837e01ff5c75e9273a572553e7522290799807f918c917a9826a6484 - md5: d0d805d9b5524a14efb51b3bff965e83 - depends: - - ca-certificates - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - arch: x86_64 - platform: win - license: Apache-2.0 - license_family: Apache - purls: [] - size: 8491156 - timestamp: 1731379715927 -- kind: conda - name: openssl - version: 3.4.0 - build: h39f12f2_0 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - sha256: bd1d58ced46e75efa3b842c61642fd12272c69e9fe4d7261078bc082153a1d53 - md5: df307bbc703324722df0293c9ca2e418 - depends: - - __osx >=11.0 - - ca-certificates - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - purls: [] - size: 2935176 - timestamp: 1731377561525 -- kind: conda - name: openssl - version: 3.4.0 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - sha256: 814b9dff1847b132c676ee6cc1a8cb2d427320779b93e1b6d76552275c128705 - md5: 23cc74f77eb99315c0360ec3533147a9 - depends: - - __glibc >=2.17,<3.0.a0 - - ca-certificates - - libgcc >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - purls: [] - size: 2947466 - timestamp: 1731377666602 -- kind: conda - name: packaging - version: '24.2' - build: pyhff2d567_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - sha256: 74843f871e5cd8a1baf5ed8c406c571139c287141efe532f8ffbdafa3664d244 - md5: 8508b703977f4c4ada34d657d051972c - depends: - - python >=3.8 - license: Apache-2.0 - license_family: APACHE - purls: - - pkg:pypi/packaging?source=hash-mapping - size: 60380 - timestamp: 1731802602808 -- kind: conda - name: parso - version: 0.8.4 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda - sha256: bfe404eebb930cc41782d34f8fc04c0388ea692eeebe2c5fc28df8ec8d4d61ae - md5: 81534b420deb77da8833f2289b8d47ac - depends: - - python >=3.6 - license: MIT - license_family: MIT - purls: - - pkg:pypi/parso?source=hash-mapping - size: 75191 - timestamp: 1712320447201 -- kind: conda - name: pexpect - version: 4.9.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - sha256: 90a09d134a4a43911b716d4d6eb9d169238aff2349056f7323d9db613812667e - md5: 629f3203c99b32e0988910c93e77f3b6 - depends: - - ptyprocess >=0.5 - - python >=3.7 - license: ISC - purls: - - pkg:pypi/pexpect?source=hash-mapping - size: 53600 - timestamp: 1706113273252 -- kind: conda - name: pickleshare - version: 0.7.5 - build: py_1003 - build_number: 1003 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - sha256: a1ed1a094dd0d1b94a09ed85c283a0eb28943f2e6f22161fb45e128d35229738 - md5: 415f0ebb6198cc2801c73438a9fb5761 - depends: - - python >=3 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pickleshare?source=hash-mapping - size: 9332 - timestamp: 1602536313357 -- kind: conda - name: platformdirs - version: 4.3.6 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - sha256: c81bdeadc4adcda216b2c7b373f0335f5c78cc480d1d55d10f21823590d7e46f - md5: fd8f2b18b65bbf62e8f653100690c8d2 - depends: - - python >=3.8 - license: MIT - license_family: MIT - purls: - - pkg:pypi/platformdirs?source=hash-mapping - size: 20625 - timestamp: 1726613611845 -- kind: conda - name: pluggy - version: 1.5.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - sha256: 33eaa3359948a260ebccf9cdc2fd862cea5a6029783289e13602d8e634cd9a26 - md5: d3483c8fc2dc2cc3f5cf43e26d60cabf - depends: - - python >=3.8 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pluggy?source=hash-mapping - size: 23815 - timestamp: 1713667175451 -- kind: conda - name: pre-commit - version: 4.0.1 - build: pyha770c72_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - sha256: 2490b18ec802d8f085f2de8298a3d275451f7db17769353080dfb121fe386675 - md5: 5971cc64048943605f352f7f8612de6c - depends: - - cfgv >=2.0.0 - - identify >=1.0.0 - - nodeenv >=0.11.1 - - python >=3.9 - - pyyaml >=5.1 - - virtualenv >=20.10.0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pre-commit?source=hash-mapping - size: 194633 - timestamp: 1728420305558 -- kind: conda - name: prompt-toolkit - version: 3.0.48 - build: pyha770c72_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda - sha256: 44e4e6108d425a666856a52d1523e5d70890256a8920bb0dcd3d55cc750f3207 - md5: 4c05134c48b6a74f33bbb9938e4a115e - depends: - - python >=3.7 - - wcwidth + - libprotobuf >=5.29.3,<5.29.4.0a0 + - libtorch 2.6.0.* *_4 + - 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 <76 + - sleef >=3.8,<4.0a0 + - sympy >=1.13.1,!=1.13.2 + - typing_extensions >=4.10.0 constrains: - - prompt_toolkit 3.0.48 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/prompt-toolkit?source=hash-mapping - size: 270271 - timestamp: 1727341744544 -- kind: conda - name: pthreads-win32 - version: 2.9.1 - build: h2466b09_4 - build_number: 4 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/pthreads-win32-2.9.1-h2466b09_4.conda - sha256: b989bdcf0a22ba05a238adac1ad3452c11871681f565e509f629e225a26b7d45 - md5: cf98a67a1ec8040b42455002a24f0b0b - depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - arch: x86_64 - platform: win - license: LGPL-2.1-or-later - purls: [] - size: 265827 - timestamp: 1728400965968 -- kind: conda - name: ptyprocess - version: 0.7.0 - build: pyhd3deb0d_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - sha256: fb31e006a25eb2e18f3440eb8d17be44c8ccfae559499199f73584566d0a444a - md5: 359eeb6536da0e687af562ed265ec263 - depends: - - python - license: ISC - purls: - - pkg:pypi/ptyprocess?source=hash-mapping - size: 16546 - timestamp: 1609419417991 -- kind: conda - name: pure_eval - version: 0.2.3 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - sha256: dcfcb3cee1ae0a89729601582cc3edea20ba13c9493967a03a693c67567af0c8 - md5: 0f051f09d992e0d08941706ad519ee0e - depends: - - python >=3.5 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pure-eval?source=hash-mapping - size: 16551 - timestamp: 1721585805256 -- kind: conda - name: pycparser - version: '2.22' - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - sha256: 406001ebf017688b1a1554b49127ca3a4ac4626ec0fd51dc75ffa4415b720b64 - md5: 844d9eb3b43095b031874477f7d70088 - depends: - - python >=3.8 + - pytorch-cpu 2.6.0 + - pytorch-gpu <0.0a0 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/pycparser?source=hash-mapping - size: 105098 - timestamp: 1711811634025 -- kind: conda - name: pygments - version: 2.18.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - sha256: 78267adf4e76d0d64ea2ffab008c501156c108bb08fecb703816fb63e279780b - md5: b7f5c092b8f9800150d998a71b76d5a1 - depends: - - python >=3.8 - license: BSD-2-Clause - license_family: BSD - purls: - - pkg:pypi/pygments?source=hash-mapping - size: 879295 - timestamp: 1714846885370 -- kind: conda - name: pylint - version: 3.3.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/pylint-3.3.1-pyhd8ed1ab_0.conda - sha256: 35c0b0f3b8b0585fee0966f5a09b7bd43519a5bca58a9f29f502dd8442a9b14c - md5: 2a3426f75e2172c932131f4e3d51bcf4 - depends: - - astroid >=3.3.4,<3.4.0-dev0 - - colorama >=0.4.5 - - dill >=0.3.7 - - isort >=4.2.5,<6,!=5.13.0 - - mccabe >=0.6,<0.8 - - platformdirs >=2.2.0 - - python >=3.9.0 - - tomli >=1.1.0 - - tomlkit >=0.10.1 - - typing_extensions >=3.10.0 - license: GPL-2.0-or-later - license_family: GPL - purls: - - pkg:pypi/pylint?source=hash-mapping - size: 352873 - timestamp: 1727266530261 -- kind: conda - name: pysocks - version: 1.7.1 - build: pyh0701188_6 - build_number: 6 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyh0701188_6.tar.bz2 - sha256: b3a612bc887f3dd0fb7c4199ad8e342bd148cf69a9b74fd9468a18cf2bef07b7 - md5: 56cd9fe388baac0e90c7149cfac95b60 + - pkg:pypi/torch?source=hash-mapping + size: 23540302 + timestamp: 1744243900168 +- conda: https://prefix.dev/conda-forge/win-64/pytorch-2.6.0-cpu_mkl_py310_h946cf0a_104.conda + sha256: cd6edd4fd1525d68a152a7f5ab185c4d7c22d8488d2f6669c46c2ae2b6eb8c8e + md5: e4c9426552318588e4002804750da2f0 depends: - - __win - - python >=3.8 - - win_inet_pton + - 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.6.0 cpu_mkl_hf54a72f_104 + - 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.1,!=1.13.2 + - 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.6.0 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/pysocks?source=hash-mapping - size: 19348 - timestamp: 1661605138291 -- kind: conda - name: pysocks - version: 1.7.1 - build: pyha2e5f31_6 - build_number: 6 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b - md5: 2a7de29fb590ca14b5243c4c812c8025 + - pkg:pypi/torch?source=hash-mapping + size: 22806252 + timestamp: 1744242126453 +- conda: https://prefix.dev/conda-forge/win-64/pytorch-2.6.0-cuda126_mkl_py310_h67a8d91_304.conda + sha256: 28dd9e862c8e13eb0d2dcb5634bce96a76ae66d8e696213fd658e73d95ea4191 + md5: 069788d9dc6b8008cca858afff4e27ae depends: - - __unix - - python >=3.8 + - __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.8.0.87,<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.6.0 cuda126_mkl_h09c782d_304 + - 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.1,!=1.13.2 + - typing_extensions >=4.10.0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - pytorch-gpu 2.6.0 + - pytorch-cpu <0.0a0 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/pysocks?source=hash-mapping - size: 18981 - timestamp: 1661604969727 -- kind: conda - name: pytest - version: 8.3.3 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - sha256: e99376d0068455712109d233f5790458ff861aeceb458bfda74e353338e4d815 - md5: c03d61f31f38fdb9facf70c29958bf7a + - pkg:pypi/torch?source=hash-mapping + size: 22880687 + timestamp: 1744263487205 +- conda: https://prefix.dev/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda + sha256: 8d2a8bf110cc1fc3df6904091dead158ba3e614d8402a83e51ed3a8aa93cdeb0 + md5: bc8e3267d44011051f2eb14d22fb0960 depends: - - colorama - - exceptiongroup >=1.0.0rc8 - - iniconfig - - packaging - - pluggy <2,>=1.5 - - python >=3.8 - - tomli >=1 - constrains: - - pytest-faulthandler >=2 + - python >=3.9 license: MIT license_family: MIT purls: - - pkg:pypi/pytest?source=hash-mapping - size: 258293 - timestamp: 1725977334143 -- kind: conda - name: pytest-cov - version: 6.0.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - sha256: 915323edaee9f6f3ebd8c2e5450b4865700edf2c85eb2bba61980e66c6f03c5d - md5: cb8a11b6d209e3d85e5094bdbd9ebd9c + - 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: - - coverage >=7.5 - - pytest >=4.6 - - python >=3.9 - - toml + - __glibc >=2.17,<3.0.a0 + - libgcc >=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/pytest-cov?source=hash-mapping - size: 26218 - timestamp: 1730284385470 -- kind: conda - name: python - version: 3.10.15 - build: h4a871b0_2_cpython - build_number: 2 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/python-3.10.15-h4a871b0_2_cpython.conda - sha256: c1e5e93b887d8cd1aa31d24b9620cb7eb6645c08c97b15ffc844fd6c29051420 - md5: 98059097f62e97be9aed7ec904055825 + - 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 - - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 - - libffi >=3.4,<4.0a0 - libgcc >=13 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.46.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.3.2,<4.0a0 - - readline >=8.2,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - - xz >=5.2.6,<6.0a0 - constrains: + - 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/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 - arch: x86_64 - platform: linux - license: Python-2.0 - purls: [] - size: 25321141 - timestamp: 1729042931665 -- kind: conda - name: python - version: 3.10.15 - build: hdce6c4c_2_cpython - build_number: 2 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/python-3.10.15-hdce6c4c_2_cpython.conda - sha256: 50dbbcc5efacaa05906cdc6b42bbdda17cee7910386bef8d737edffe7f5a7f2f - md5: b6a5e688170f1301a858f6001c32822d + - 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: 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 - - bzip2 >=1.0.8,<2.0a0 - - libffi >=3.4,<4.0a0 - - libsqlite >=3.46.1,<4.0a0 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 - - readline >=8.2,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - - xz >=5.2.6,<6.0a0 - constrains: + - python >=3.10,<3.11.0a0 + - python >=3.10,<3.11.0a0 *_cpython - python_abi 3.10.* *_cp310 - arch: arm64 - platform: osx - license: Python-2.0 - purls: [] - size: 12411616 - timestamp: 1729042103758 -- kind: conda - name: python - version: 3.10.15 - build: hfaddaf0_2_cpython - build_number: 2 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/python-3.10.15-hfaddaf0_2_cpython.conda - sha256: ee5af019e5d7140ad2d40b5f772fcd68ded056853a478a2b54f417855977e99b - md5: 52a45ce756c062994b25738288c8ab62 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 166853 + timestamp: 1737454973579 +- conda: https://prefix.dev/conda-forge/osx-arm64/pyyaml-6.0.2-py313ha9b7d5b_2.conda + sha256: 58c41b86ff2dabcf9ccd9010973b5763ec28b14030f9e1d9b371d22b538bce73 + md5: 03a7926e244802f570f25401c25c13bc depends: - - bzip2 >=1.0.8,<2.0a0 - - libffi >=3.4,<4.0a0 - - libsqlite >=3.46.1,<4.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata + - __osx >=11.0 + - 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: 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 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - - xz >=5.2.6,<6.0a0 - constrains: - - python_abi 3.10.* *_cp310 - arch: x86_64 - platform: win - license: Python-2.0 - purls: [] - size: 15933377 - timestamp: 1729041771524 -- kind: conda - name: python - version: 3.13.0 - build: h9ebbce0_101_cp313 - build_number: 101 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/python-3.13.0-h9ebbce0_101_cp313.conda - sha256: 66a7997b24b2dca636df11402abec7bd2199ddf6971eb47a3ee6b1d27d4faee9 - md5: f4fea9d5bb3f2e61a39950a7ab70ee4e - 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 - - libgcc >=13 - - libmpdec >=4.0.0,<5.0a0 - - libsqlite >=3.47.0,<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 - - python_abi 3.13.* *_cp313 - - readline >=8.2,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - - xz >=5.2.6,<6.0a0 - arch: x86_64 - platform: linux - license: Python-2.0 - purls: [] - size: 33054218 - timestamp: 1732736838043 -- kind: conda - name: python - version: 3.13.0 - build: hbbac1ca_101_cp313 - build_number: 101 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/python-3.13.0-hbbac1ca_101_cp313.conda - sha256: 742544a4cf9a10cf2c16d35d96fb696c27d58b9df0cc29fbef5629283aeca941 - md5: e972e146a1e0cfb1f26da42cb6f6648c - depends: - - __osx >=11.0 - - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.4,<3.0a0 - - libffi >=3.4,<4.0a0 - - libmpdec >=4.0.0,<5.0a0 - - libsqlite >=3.47.0,<4.0a0 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 - - python_abi 3.13.* *_cp313 - - readline >=8.2,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - - xz >=5.2.6,<6.0a0 - arch: arm64 - platform: osx - license: Python-2.0 - purls: [] - size: 12806496 - timestamp: 1732735488999 -- kind: conda - name: python - version: 3.13.0 - build: hf5aa216_101_cp313 - build_number: 101 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/python-3.13.0-hf5aa216_101_cp313.conda - sha256: b8eba57bd86c7890b27e67b477b52b5bd547946c354f29b9dbbc70ad83f2863b - md5: 158d6077a635cf0c0c23bec3955a4833 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 157941 + timestamp: 1737455030235 +- conda: https://prefix.dev/conda-forge/win-64/pyyaml-6.0.2-py313hb4c8b1a_2.conda + sha256: 5b496c96e48f495de41525cb1b603d0147f2079f88a8cf061aaf9e17a2fe1992 + md5: d14f685b5d204b023c641b188a8d0d7c depends: - - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.4,<3.0a0 - - libffi >=3.4,<4.0a0 - - libmpdec >=4.0.0,<5.0a0 - - libsqlite >=3.47.0,<4.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 + - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 - - tk >=8.6.13,<8.7.0a0 - - tzdata - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - - xz >=5.2.6,<6.0a0 - arch: x86_64 - platform: win - license: Python-2.0 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 182783 + timestamp: 1737455202579 +- conda: https://prefix.dev/conda-forge/linux-64/rdma-core-56.1-h5888daf_1.conda + sha256: ce543c4fbb06bf5b33265ac328443d894173d6904ecda43e079a50022da50ee3 + md5: b75c4a651ffafbd033756ca09361d88a + 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: 16697406 - timestamp: 1732734725404 -- kind: conda - name: python_abi - version: '3.10' - build: 5_cp310 - build_number: 5 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/python_abi-3.10-5_cp310.conda - sha256: 074d2f0b31f0333b7e553042b17ea54714b74263f8adda9a68a4bd8c7e219971 - md5: 2921c34715e74b3587b4cff4d36844f9 - constrains: - - python 3.10.* *_cpython - arch: x86_64 - platform: linux + size: 1233336 + timestamp: 1744133649720 +- 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 hba17884_3 license: BSD-3-Clause license_family: BSD purls: [] - size: 6227 - timestamp: 1723823165457 -- kind: conda - name: python_abi - version: '3.10' - build: 5_cp310 - build_number: 5 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/python_abi-3.10-5_cp310.conda - sha256: 15a1e37da3e52c9250eac103858aad494ce23501d72fb78f5a2126046c9a9e2d - md5: e33836c9096802b29d28981765becbee - constrains: - - python 3.10.* *_cpython - arch: arm64 - platform: osx + 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 h08ce7b7_3 license: BSD-3-Clause license_family: BSD purls: [] - size: 6324 - timestamp: 1723823147856 -- kind: conda - name: python_abi - version: '3.10' - build: 5_cp310 - build_number: 5 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/python_abi-3.10-5_cp310.conda - sha256: 0671bea4d5c5b8618ee7e2b1117d5a90901348ac459db57b654007f1644fa087 - md5: 3c510f4c4383f5fbdb12fdd971b30d49 - constrains: - - python 3.10.* *_cpython - arch: x86_64 - platform: win + 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 hd41c47c_3 license: BSD-3-Clause license_family: BSD purls: [] - size: 6715 - timestamp: 1723823141288 -- kind: conda - name: python_abi - version: '3.13' - build: 5_cp313 - build_number: 5 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/python_abi-3.13-5_cp313.conda - sha256: 438225b241c5f9bddae6f0178a97f5870a89ecf927dfca54753e689907331442 - md5: 381bbd2a92c863f640a55b6ff3c35161 - constrains: - - python 3.13.* *_cp313 - arch: x86_64 - platform: linux + size: 26954 + timestamp: 1741121389739 +- conda: https://prefix.dev/conda-forge/win-64/re2-2024.07.02-haf4117d_3.conda + sha256: d67e5d4b934f6ab9d50504584f672062bc5363f15a587b52d7c827611d0dbf44 + md5: f94cfa965a6498540057555957903dba + depends: + - libre2-11 2024.07.02 hd248061_3 license: BSD-3-Clause license_family: BSD purls: [] - size: 6217 - timestamp: 1723823393322 -- kind: conda - name: python_abi - version: '3.13' - build: 5_cp313 - build_number: 5 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/python_abi-3.13-5_cp313.conda - sha256: 4437198eae80310f40b23ae2f8a9e0a7e5c2b9ae411a8621eb03d87273666199 - md5: b8e82d0a5c1664638f87f63cc5d241fb + size: 220297 + timestamp: 1741121702233 +- conda: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - 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: 256712 + timestamp: 1740379577668 +- conda: https://prefix.dev/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 252359 + timestamp: 1740379663071 +- conda: https://prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 + depends: + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - python >=3.9 + - urllib3 >=1.21.1,<3 constrains: - - python 3.13.* *_cp313 - arch: arm64 - platform: osx + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/requests?source=hash-mapping + size: 58723 + timestamp: 1733217126197 +- conda: https://prefix.dev/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + sha256: 0116a9ca9bf3487e18979b58b2f280116dba55cb53475af7a6d835f7aa133db8 + md5: 5f0f24f8032c2c1bb33f59b75974f5fc + depends: + - 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/s2n-1.5.15-hd830067_0.conda + sha256: a186abbc72cc09fcb89311304a0e1db79608cb86147e5fe85fa0f0ae3df7cd7b + md5: 81bde3ad0187adf0dd37fe86e84aff46 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - openssl >=3.4.1,<4.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 353310 + timestamp: 1742547161559 +- 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 + - libcblas >=3.9.0,<4.0a0 + - libgcc >=13 + - libgfortran + - libgfortran5 >=13.3.0 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx >=13 + - numpy <2.5 + - numpy >=1.19,<3 + - numpy >=1.23.5 + - python >=3.10,<3.11.0a0 + - python_abi 3.10.* *_cp310 license: BSD-3-Clause license_family: BSD - purls: [] - size: 6322 - timestamp: 1723823058879 -- kind: conda - name: python_abi - version: '3.13' - build: 5_cp313 - build_number: 5 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/python_abi-3.13-5_cp313.conda - sha256: 0c12cc1b84962444002c699ed21e815fb9f686f950d734332a1b74d07db97756 - md5: 44b4fe6f22b57103afb2299935c8b68e - constrains: - - python 3.13.* *_cp313 - arch: x86_64 - platform: win + purls: + - pkg:pypi/scipy?source=hash-mapping + 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 >=10.13 + - 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_abi 3.10.* *_cp310 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/scipy?source=hash-mapping + 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 license: BSD-3-Clause license_family: BSD - purls: [] - size: 6716 - timestamp: 1723823166911 -- kind: conda - name: pytz - version: '2024.2' - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_0.conda - sha256: 81c16d9183bb4a6780366ce874e567ee5fc903722f85b2f8d1d9479ef1dafcc9 - md5: 260009d03c9d5c0f111904d851f053dc + purls: + - pkg:pypi/scipy?source=hash-mapping + 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.7 + - python >=3.9 license: MIT license_family: MIT purls: - - pkg:pypi/pytz?source=hash-mapping - size: 186995 - timestamp: 1726055625738 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py313h20a7fcf_1 - build_number: 1 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/pyyaml-6.0.2-py313h20a7fcf_1.conda - sha256: f9fbafcf30cfab591c67f7550c0fd58e2bff394b53864dcdc658f5abd27ce5d6 - md5: bf2ddf70a9ce8f899b1082d17cbb3d1d + - pkg:pypi/setuptools?source=hash-mapping + size: 777736 + timestamp: 1740654030775 +- conda: https://prefix.dev/conda-forge/noarch/setuptools-78.1.0-pyhff2d567_0.conda + sha256: d4c74d2140f2fbc72fe5320cbd65f3fd1d1f7832ab4d7825c37c38ab82440ae2 + md5: a42da9837e46c53494df0044c3eb1f53 depends: - - __osx >=11.0 - - python >=3.13.0rc1,<3.14.0a0 - - python >=3.13.0rc1,<3.14.0a0 *_cp313 - - python_abi 3.13.* *_cp313 - - yaml >=0.2.5,<0.3.0a0 - arch: arm64 - platform: osx + - python >=3.9 license: MIT license_family: MIT purls: - - pkg:pypi/pyyaml?source=hash-mapping - size: 187550 - timestamp: 1725456463634 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py313h536fd9c_1 - build_number: 1 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/pyyaml-6.0.2-py313h536fd9c_1.conda - sha256: 86ae34bf2bab82c0fff2e31a37318c8977297776436df780a83c6efa5f84749d - md5: 3789f360de131c345e96fbfc955ca80b + - pkg:pypi/setuptools?source=compressed-mapping + size: 786557 + timestamp: 1743775941985 +- conda: https://prefix.dev/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 - - yaml >=0.2.5,<0.3.0a0 - arch: x86_64 - platform: linux + - python >=3.9 license: MIT license_family: MIT purls: - - pkg:pypi/pyyaml?source=hash-mapping - size: 205855 - timestamp: 1725456273924 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py313ha7868ed_1 - build_number: 1 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/pyyaml-6.0.2-py313ha7868ed_1.conda - sha256: ffa21c4715aa139d20c96ae7274fbb7de12a546f3332eb8d07cc794741fcbde6 - md5: c1743e5c4c7402a14b515cf276778e59 + - pkg:pypi/six?source=hash-mapping + size: 16385 + timestamp: 1733381032766 +- 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 + - libgcc >=13 + - libstdcxx >=13 + license: BSL-1.0 + purls: [] + size: 1920152 + timestamp: 1738089391074 +- conda: https://prefix.dev/conda-forge/osx-64/sleef-3.8-hfe0d17b_0.conda + sha256: e4e350c355e461b06eb911ce6e1db6af158cd21b06465303ec60b9632e6a2e1e + md5: 3b4ac13220d26d428ea675f9584acc66 + depends: + - __osx >=10.13 + - libcxx >=18 + - llvm-openmp >=18.1.8 + license: BSL-1.0 + purls: [] + 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 + - llvm-openmp >=18.1.8 + license: BSL-1.0 + purls: [] + size: 584685 + timestamp: 1738089615902 +- conda: https://prefix.dev/conda-forge/win-64/sleef-3.8-h7e360cc_0.conda + sha256: fc697f95797f5638baf68bb694cf461373fc36960a9d9d5260a20a21765b8148 + md5: 3ed2f55668830f6f5bcff16875c18db0 depends: - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - - yaml >=0.2.5,<0.3.0a0 - arch: x86_64 - platform: win - license: MIT - license_family: MIT - purls: - - pkg:pypi/pyyaml?source=hash-mapping - size: 181722 - timestamp: 1725456802746 -- kind: conda - name: readline - version: '8.2' - build: h8228510_1 - build_number: 1 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8228510_1.conda - sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 - md5: 47d31b792659ce70f470b5c82fdfb7a4 - depends: - - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 - arch: x86_64 - platform: linux - license: GPL-3.0-only - license_family: GPL + license: BSL-1.0 purls: [] - size: 281456 - timestamp: 1679532220005 -- kind: conda - name: readline - version: '8.2' - build: h92ec313_1 - build_number: 1 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 - md5: 8cbb776a2f641b943d413b3e19df71f4 - depends: - - ncurses >=6.3,<7.0a0 - arch: arm64 - platform: osx - license: GPL-3.0-only - license_family: GPL + size: 2098929 + timestamp: 1738089785163 +- 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 purls: [] - size: 250351 - timestamp: 1679532511311 -- kind: conda - name: requests - version: 2.32.3 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - sha256: 5845ffe82a6fa4d437a2eae1e32a1ad308d7ad349f61e337c0a890fe04c513cc - md5: 5ede4753180c7a550a443c430dc8ab52 + size: 42739 + timestamp: 1733501881851 +- conda: https://prefix.dev/conda-forge/osx-64/snappy-1.2.1-haf3c120_1.conda + sha256: 26e8a2edd2a12618d9adcdcfc6cfd9adaca8da71aa334615d29e803d225b52be + md5: 9d6ae6d5232233e1a01eb7db524078fb depends: - - certifi >=2017.4.17 - - charset-normalizer >=2,<4 - - idna >=2.5,<4 - - python >=3.8 - - urllib3 >=1.21.1,<3 - constrains: - - chardet >=3.0.2,<6 - license: Apache-2.0 - license_family: APACHE - purls: - - pkg:pypi/requests?source=hash-mapping - size: 58810 - timestamp: 1717057174842 -- kind: conda - name: setuptools - version: 75.6.0 - build: pyhff2d567_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - sha256: abb12e1dd515b13660aacb5d0fd43835bc2186cab472df25b7716cd65e095111 - md5: fc80f7995e396cbaeabd23cf46c413dc + - __osx >=10.13 + - libcxx >=18 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 36813 + timestamp: 1733502097580 +- conda: https://prefix.dev/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 depends: - - python >=3.9 - license: MIT - license_family: MIT - purls: - - pkg:pypi/setuptools?source=hash-mapping - size: 774252 - timestamp: 1732632769210 -- kind: conda - name: six - version: 1.16.0 - build: pyh6c4a22f_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6 - md5: e5f25f8dbc060e9a8d912e432202afc2 + - __osx >=11.0 + - libcxx >=18 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 35857 + timestamp: 1733502172664 +- conda: https://prefix.dev/conda-forge/win-64/snappy-1.2.1-h500f7fa_1.conda + sha256: 29753b51803c0396c3cb56e4f11e68c968a2f43b71b648634bef1f9193f9e78b + md5: e32fb978aaea855ddce624eb8c8eb69a depends: - - python - license: MIT - license_family: MIT - purls: - - pkg:pypi/six?source=hash-mapping - size: 14259 - timestamp: 1620240338595 -- kind: conda - name: snowballstemmer - version: 2.2.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 59757 + timestamp: 1733502109991 +- conda: https://prefix.dev/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 sha256: a0fd916633252d99efb6223b1050202841fa8d2d53dacca564b0ed77249d3228 md5: 4d22a9315e78c6827f806065957d566e depends: @@ -4705,14 +15282,18 @@ packages: - pkg:pypi/snowballstemmer?source=hash-mapping size: 58824 timestamp: 1637143137377 -- kind: conda - name: soupsieve - version: '2.5' - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda +- conda: https://prefix.dev/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda + sha256: d1e3e06b5cf26093047e63c8cc77b70d970411c5cbc0cb1fad461a8a8df599f7 + md5: 0401a17ae845fa72c7210e206ec5647d + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/sortedcontainers?source=hash-mapping + size: 28657 + timestamp: 1738440459037 +- conda: https://prefix.dev/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda sha256: 54ae221033db8fbcd4998ccb07f3c3828b4d77e73b0c72b18c1d6a507059059c md5: 3f144b2c34f8cb5a9abd9ed23a39c561 depends: @@ -4723,15 +15304,44 @@ packages: - pkg:pypi/soupsieve?source=hash-mapping size: 36754 timestamp: 1693929424267 -- kind: conda - name: sphinx - version: 8.1.3 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_0.conda - sha256: e9e3eaa7277934ba20314ffb92c941c4ec12c0c440e608b7b495c5ce579af1f7 - md5: 05706dd5a145a9c91861495cd435409a +- pypi: https://files.pythonhosted.org/packages/ca/4a/e59e0968ad52460bb997221fdf5a77d1385b0258f37bfbc84675977b0a62/sparse-0.16.0-py2.py3-none-any.whl + name: sparse + version: 0.16.0 + sha256: 25d4463cf36315ee16a19b6951f1d6b8e9128a07dafd58f846eb6dfb4cd5b9d8 + requires_dist: + - numpy>=1.17 + - numba>=0.49 + - mkdocs-material ; extra == 'docs' + - mkdocstrings[python] ; extra == 'docs' + - mkdocs-gen-files ; extra == 'docs' + - mkdocs-literate-nav ; extra == 'docs' + - mkdocs-section-index ; extra == 'docs' + - mkdocs-jupyter ; extra == 'docs' + - sparse[extras] ; extra == 'docs' + - dask[array] ; extra == 'extras' + - sparse[finch] ; extra == 'extras' + - scipy ; extra == 'extras' + - scikit-learn ; extra == 'extras' + - networkx ; extra == 'extras' + - sparse[extras] ; extra == 'tests' + - pytest>=3.5 ; extra == 'tests' + - pytest-cov ; extra == 'tests' + - pytest-xdist ; extra == 'tests' + - pre-commit ; extra == 'tests' + - pytest-codspeed ; extra == 'tests' + - sparse[tests] ; extra == 'tox' + - tox ; extra == 'tox' + - sparse[tests] ; extra == 'notebooks' + - nbmake ; extra == 'notebooks' + - matplotlib ; extra == 'notebooks' + - sparse[docs,mlir,notebooks,tox] ; extra == 'all' + - matrepr ; extra == 'all' + - finch-tensor>=0.2.10 ; extra == 'finch' + - finch-mlir>=0.0.2 ; extra == 'mlir' + requires_python: '>=3.10' +- conda: https://prefix.dev/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_1.conda + sha256: 3228eb332ce159f031d4b7d2e08117df973b0ba3ddcb8f5dbb7f429f71d27ea1 + md5: 1a3281a0dc355c02b5506d87db2d78ac depends: - alabaster >=0.7.14 - babel >=2.13 @@ -4755,68 +15365,87 @@ packages: license_family: BSD purls: - pkg:pypi/sphinx?source=hash-mapping - size: 1401233 - timestamp: 1728874101851 -- kind: pypi - name: sphinx-autodoc-typehints - version: 2.5.0 - url: https://files.pythonhosted.org/packages/fa/ae/322d05bec884977b89eced3af811c228652a9e25f9646ee6236890987214/sphinx_autodoc_typehints-2.5.0-py3-none-any.whl - sha256: 53def4753239683835b19bfa8b68c021388bd48a096efcb02cdab508ece27363 - requires_dist: - - sphinx>=8.0.2 - - furo>=2024.8.6 ; extra == 'docs' - - nptyping>=2.5 ; extra == 'numpy' - - covdefaults>=2.3 ; extra == 'testing' - - coverage>=7.6.1 ; extra == 'testing' - - defusedxml>=0.7.1 ; extra == 'testing' - - diff-cover>=9.1.1 ; extra == 'testing' - - pytest-cov>=5 ; extra == 'testing' - - pytest>=8.3.2 ; extra == 'testing' - - sphobjinv>=2.3.1.1 ; extra == 'testing' - - typing-extensions>=4.12.2 ; extra == 'testing' - requires_python: '>=3.10' -- kind: conda - name: sphinx-basic-ng - version: 1.0.0b2 - build: pyhd8ed1ab_2 - build_number: 2 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/sphinx-basic-ng-1.0.0b2-pyhd8ed1ab_2.conda - sha256: 091293964075ed1905731d09ff2691e053cd9d5335d99501f05683da29de0ee7 - md5: 463d989a8f1506bcf51cc37d7beebdf1 - depends: - - python >=3.7 + size: 1387076 + timestamp: 1733754175386 +- 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 + license: MIT + license_family: MIT + purls: + - pkg:pypi/sphinx-autodoc-typehints?source=hash-mapping + size: 24055 + timestamp: 1737099757820 +- conda: https://prefix.dev/conda-forge/noarch/sphinx-autodoc-typehints-3.1.0-pyhd8ed1ab_0.conda + sha256: 9e083d283e0c292b88fc6b8f684884558c0150bf96f5b73ed0e51246639d609a + md5: 809467e21a103ca15b17595d1396687d + depends: + - python >=3.11 + - sphinx >=8.2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/sphinx-autodoc-typehints?source=hash-mapping + size: 24168 + timestamp: 1740131669101 +- conda: https://prefix.dev/conda-forge/noarch/sphinx-basic-ng-1.0.0b2-pyhd8ed1ab_3.conda + sha256: 90d900d31afe0bd6f42cf1e529e23e6eac4284b48bc64e5e942f19f5bf8ef0f2 + md5: a090580065b21d9c56662ebe68f6e7a6 + depends: + - python >=3.9 - sphinx >=4.0 license: MIT license_family: MIT purls: - pkg:pypi/sphinx-basic-ng?source=hash-mapping - size: 20338 - timestamp: 1727436819491 -- kind: pypi - name: sphinx-copybutton - version: 0.5.2 - url: https://files.pythonhosted.org/packages/9e/48/1ea60e74949eecb12cdd6ac43987f9fd331156388dcc2319b45e2ebb81bf/sphinx_copybutton-0.5.2-py3-none-any.whl - sha256: fb543fd386d917746c9a2c50360c7905b605726b9355cd26e9974857afeae06e - requires_dist: - - sphinx>=1.8 - - pre-commit==2.12.1 ; extra == 'code-style' - - sphinx ; extra == 'rtd' - - ipython ; extra == 'rtd' - - myst-nb ; extra == 'rtd' - - sphinx-book-theme ; extra == 'rtd' - - sphinx-examples ; extra == 'rtd' - requires_python: '>=3.7' -- kind: conda - name: sphinxcontrib-applehelp - version: 2.0.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda - sha256: 8ac476358cf26098e3a360b2a9037bd809243f72934c103953e25f4fda4b9f31 - md5: 9075bd8c033f0257122300db914e49c9 + size: 20495 + timestamp: 1737748706101 +- conda: https://prefix.dev/conda-forge/noarch/sphinx-copybutton-0.5.2-pyhd8ed1ab_1.conda + sha256: 8cd892e49cb4d00501bc4439fb0c73ca44905f01a65b2b7fa05ba0e8f3924f19 + md5: bf22cb9c439572760316ce0748af3713 + depends: + - python >=3.9 + - sphinx >=1.8 + license: MIT + license_family: MIT + purls: + - pkg:pypi/sphinx-copybutton?source=hash-mapping + size: 17893 + timestamp: 1734573117732 +- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + sha256: d7433a344a9ad32a680b881c81b0034bc61618d12c39dd6e3309abeffa9577ba + md5: 16e3f039c0aa6446513e94ab18a8784b depends: - python >=3.9 - sphinx >=5 @@ -4824,17 +15453,11 @@ packages: license_family: BSD purls: - pkg:pypi/sphinxcontrib-applehelp?source=hash-mapping - size: 29617 - timestamp: 1722244567894 -- kind: conda - name: sphinxcontrib-devhelp - version: 2.0.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda - sha256: 6790efe55f168816dfc9c14235054d5156e5150d28546c5baf2ff4973eff8f6b - md5: b3bcc38c471ebb738854f52a36059b48 + size: 29752 + timestamp: 1733754216334 +- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + sha256: 55d5076005d20b84b20bee7844e686b7e60eb9f683af04492e598a622b12d53d + md5: 910f28a05c178feba832f842155cbfff depends: - python >=3.9 - sphinx >=5 @@ -4842,17 +15465,11 @@ packages: license_family: BSD purls: - pkg:pypi/sphinxcontrib-devhelp?source=hash-mapping - size: 24138 - timestamp: 1722245127289 -- kind: conda - name: sphinxcontrib-htmlhelp - version: 2.1.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda - sha256: 55e14b77ed786ab6ff752b8d75f8448536f385ed250f432bd408d2eff5ea4a9e - md5: e25640d692c02e8acfff0372f547e940 + size: 24536 + timestamp: 1733754232002 +- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + sha256: c1492c0262ccf16694bdcd3bb62aa4627878ea8782d5cd3876614ffeb62b3996 + md5: e9fb3fe8a5b758b4aff187d434f94f03 depends: - python >=3.9 - sphinx >=5 @@ -4860,34 +15477,22 @@ packages: license_family: BSD purls: - pkg:pypi/sphinxcontrib-htmlhelp?source=hash-mapping - size: 32798 - timestamp: 1722248429933 -- kind: conda - name: sphinxcontrib-jsmath - version: 1.0.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - sha256: d4337d83b8edba688547766fc80f1ac86d6ec86ceeeda93f376acc04079c5ce2 - md5: da1d979339e2714c30a8e806a33ec087 - depends: - - python >=3.5 + size: 32895 + timestamp: 1733754385092 +- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + sha256: 578bef5ec630e5b2b8810d898bbbf79b9ae66d49b7938bcc3efc364e679f2a62 + md5: fa839b5ff59e192f411ccc7dae6588bb + depends: + - python >=3.9 license: BSD-2-Clause license_family: BSD purls: - pkg:pypi/sphinxcontrib-jsmath?source=hash-mapping - size: 10431 - timestamp: 1691604844204 -- kind: conda - name: sphinxcontrib-qthelp - version: 2.0.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda - sha256: 7ae639b729844de2ec74dbaf1acccc14843868a82fa46cd2ceb735bc8266af5b - md5: d6e5ea5fe00164ac6c2dcc5d76a42192 + size: 10462 + timestamp: 1733753857224 +- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + sha256: c664fefae4acdb5fae973bdde25836faf451f41d04342b64a358f9a7753c92ca + md5: 00534ebcc0375929b45c3039b5ba7636 depends: - python >=3.9 - sphinx >=5 @@ -4895,17 +15500,11 @@ packages: license_family: BSD purls: - pkg:pypi/sphinxcontrib-qthelp?source=hash-mapping - size: 26794 - timestamp: 1722245959953 -- kind: conda - name: sphinxcontrib-serializinghtml - version: 1.1.10 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda - sha256: bf80e4c0ff97d5e8e5f6db0831ba60007e820a3a438e8f1afd868aa516d67d6f - md5: e507335cb4ca9cff4c3d0fa9cdab255e + size: 26959 + timestamp: 1733753505008 +- conda: https://prefix.dev/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + sha256: 64d89ecc0264347486971a94487cb8d7c65bfc0176750cf7502b8a272f4ab557 + md5: 3bc61f7161d28137797e038263c04c54 depends: - python >=3.9 - sphinx >=5 @@ -4913,267 +15512,341 @@ packages: license_family: BSD purls: - pkg:pypi/sphinxcontrib-serializinghtml?source=hash-mapping - size: 28776 - timestamp: 1705118378942 -- kind: conda - name: stack_data - version: 0.6.2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - sha256: a58433e75229bec39f3be50c02efbe9b7083e53a1f31d8ee247564f370191eec - md5: e7df0fdd404616638df5ece6e69ba7af + size: 28669 + timestamp: 1733750596111 +- conda: https://prefix.dev/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + sha256: 570da295d421661af487f1595045760526964f41471021056e993e73089e9c41 + md5: b1b505328da7a6b246787df4b5a49fbc depends: - asttokens - executing - pure_eval - - python >=3.5 + - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/stack-data?source=hash-mapping - size: 26205 - timestamp: 1669632203115 -- kind: conda - name: tbb - version: 2021.13.0 - build: hc790b64_0 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/tbb-2021.13.0-hc790b64_0.conda - sha256: 990dbe4fb42f14700c22bd434d8312607bf8d0bd9f922b054e51fda14c41994c - md5: 28496a1e6af43c63927da4f80260348d - depends: - - libhwloc >=2.11.1,<2.11.2.0a0 + size: 26988 + timestamp: 1733569565672 +- conda: https://prefix.dev/conda-forge/noarch/sympy-1.13.3-pyh04b8f61_5.conda + sha256: 07fcf6ad8d700e530bada93404892df83f927b3513ebb4ba2b474c90c129058e + md5: 1ae317a5e9a75da334ace7c8e6a4d9af + depends: + - mpmath >=0.19 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/sympy?source=hash-mapping + size: 4535347 + timestamp: 1736248344021 +- conda: https://prefix.dev/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + sha256: 929d939c5a8bcdc10a17501890918da68cf14a5883b36fddf77b8f0fbf040be2 + md5: 254cd5083ffa04d96e3173397a3d30f4 + depends: + - __unix + - cpython + - gmpy2 >=2.0.8 + - mpmath >=0.19 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/sympy?source=hash-mapping + size: 4523617 + timestamp: 1736248315124 +- conda: https://prefix.dev/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + sha256: 090023bddd40d83468ef86573976af8c514f64119b2bd814ee63a838a542720a + md5: 959484a66b4b76befcddc4fa97c95567 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/tabulate?source=hash-mapping + size: 37554 + timestamp: 1733589854804 +- conda: https://prefix.dev/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + sha256: 65463732129899770d54b1fbf30e1bb82fdebda9d7553caf08d23db4590cd691 + md5: ba7726b8df7b9d34ea80e82b097a4893 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libhwloc >=2.11.2,<2.11.3.0a0 + - libstdcxx >=13 + license: Apache-2.0 + license_family: APACHE + 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 + depends: + - libhwloc >=2.11.2,<2.11.3.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - arch: x86_64 - platform: win license: Apache-2.0 license_family: APACHE purls: [] - size: 151494 - timestamp: 1725532984828 -- kind: conda - name: tk - version: 8.6.13 - build: h5083fa2_1 - build_number: 1 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + size: 151460 + timestamp: 1732982860332 +- conda: https://prefix.dev/conda-forge/noarch/tblib-3.1.0-pyhd8ed1ab_0.conda + sha256: a83c83f5e622a2f34fb1d179c55c3ff912429cd0a54f9f3190ae44a0fdba2ad2 + md5: a15c62b8a306b8978f094f76da2f903f + depends: + - python >=3.9 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/tblib?source=compressed-mapping + size: 17914 + timestamp: 1743515657639 +- conda: https://prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + purls: [] + size: 3318875 + timestamp: 1699202167581 +- conda: https://prefix.dev/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + sha256: 30412b2e9de4ff82d8c2a7e5d06a15f4f4fef1809a72138b6ccb53a33b26faf5 + md5: bf830ba5afc507c6232d4ef0fb1a882d + depends: + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + purls: [] + size: 3270220 + timestamp: 1699202389792 +- conda: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 md5: b50a57ba89c32b62428b71a875291c9b depends: - libzlib >=1.2.13,<2.0.0a0 - arch: arm64 - platform: osx license: TCL license_family: BSD purls: [] size: 3145523 timestamp: 1699202432999 -- kind: conda - name: tk - version: 8.6.13 - build: h5226925_1 - build_number: 1 - subdir: win-64 - url: 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-h5226925_1.conda sha256: 2c4e914f521ccb2718946645108c9bd3fc3216ba69aea20c2c3cedbd8db32bb1 md5: fc048363eb8f03cd1737600a5d08aafe depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - arch: x86_64 - platform: win license: TCL license_family: BSD purls: [] size: 3503410 timestamp: 1699202577803 -- kind: conda - name: tk - version: 8.6.13 - build: noxft_h4845f30_101 - build_number: 101 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e - md5: d453b98d9c83e71da0741bb0ff4d76bc - depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - arch: x86_64 - platform: linux - license: TCL - license_family: BSD - purls: [] - size: 3318875 - timestamp: 1699202167581 -- kind: conda - name: toml - version: 0.10.2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - sha256: f0f3d697349d6580e4c2f35ba9ce05c65dc34f9f049e85e45da03800b46139c1 - md5: f832c45a477c78bebd107098db465095 +- conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + sha256: 34f3a83384ac3ac30aefd1309e69498d8a4aa0bf2d1f21c645f79b180e378938 + md5: b0dd904de08b7db706167240bf37b164 depends: - - python >=2.7 + - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/toml?source=hash-mapping - size: 18433 - timestamp: 1604308660817 -- kind: conda - name: tomli - version: 2.1.0 - build: pyhff2d567_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - sha256: 354b8a64d4f3311179d85aefc529ca201a36afc1af090d0010c46be7b79f9a47 - md5: 3fa1089b4722df3a900135925f4519d9 + size: 22132 + timestamp: 1734091907682 +- conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + sha256: 18636339a79656962723077df9a56c0ac7b8a864329eb8f847ee3d38495b863e + md5: ac944244f1fed2eb49bae07193ae8215 depends: - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/tomli?source=hash-mapping - size: 18741 - timestamp: 1731426862834 -- kind: conda - name: tomlkit - version: 0.13.2 - build: pyha770c72_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_0.conda - sha256: 2ccfe8dafdc1f1af944bca6bdf28fa97b5fa6125d84b8895a4e918a020853c12 - md5: 0062a5f3347733f67b0f33ca48cc21dd + size: 19167 + timestamp: 1733256819729 +- conda: https://prefix.dev/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_1.conda + sha256: 986fae65f5568e95dbf858d08d77a0f9cca031345a98550f1d4b51d36d8811e2 + md5: 1d9ab4fc875c52db83f9c9b40af4e2c8 depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/tomlkit?source=hash-mapping - size: 37279 - timestamp: 1723631592742 -- kind: conda - name: traitlets - version: 5.14.3 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - sha256: 8a64fa0f19022828513667c2c7176cfd125001f3f4b9bc00d33732e627dd2592 - md5: 3df84416a021220d8b5700c613af2dc5 + size: 37372 + timestamp: 1733230836889 +- conda: https://prefix.dev/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda + sha256: eda38f423c33c2eaeca49ed946a8d3bf466cc3364970e083a65eb2fd85258d87 + md5: 40d0ed782a8aaa16ef248e68c06c168d depends: - - python >=3.8 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - 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-64/tornado-6.4.2-py310hbb8c376_0.conda + sha256: 608a947fa9aad774d6dfdcc96c1af4e9522c52554e51a03992331a19b5abf27e + md5: 1988c632b07b884ee3e38ebac2dd1f35 + depends: + - __osx >=10.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: 651323 + timestamp: 1732616042024 +- 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 + depends: + - python >=3.9 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/traitlets?source=hash-mapping - size: 110187 - timestamp: 1713535244513 -- kind: conda - name: typing-extensions - version: 4.12.2 - build: hd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - sha256: d3b9a8ed6da7c9f9553c5fd8a4fca9c3e0ab712fa5f497859f82337d67533b73 - md5: 52d648bd608f5737b123f510bb5514b5 - depends: - - typing_extensions 4.12.2 pyha770c72_0 + - pkg:pypi/traitlets?source=hash-mapping + size: 110051 + timestamp: 1733367480074 +- conda: https://prefix.dev/conda-forge/linux-64/triton-3.2.0-cuda126py310h50ec074_1.conda + sha256: d8c2bc40cf25233e6a3c976198eeda1722d9bfa8ec0a23635521916bc9d76da2 + md5: 3aa52b0e76cb8ba795099f9f5742f859 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart + - cuda-cuobjdump + - cuda-cupti >=12.6.80,<13.0a0 + - cuda-nvcc-tools + - cuda-version >=12.6,<13 + - libgcc >=13 + - libllvm20 >=20.1.0,<20.2.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.10,<3.11.0a0 + - python_abi 3.10.* *_cp310 + - setuptools + license: MIT + license_family: MIT + purls: + - pkg:pypi/triton?source=hash-mapping + size: 102101472 + timestamp: 1741776175758 +- conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + sha256: 4865fce0897d3cb0ffc8998219157a8325f6011c136e6fd740a9a6b169419296 + md5: 568ed1300869dca0ba09fb750cda5dbb + depends: + - typing_extensions ==4.13.2 pyh29332c3_0 license: PSF-2.0 license_family: PSF purls: [] - size: 10097 - timestamp: 1717802659025 -- kind: conda - name: typing_extensions - version: 4.12.2 - build: pyha770c72_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - sha256: 0fce54f8ec3e59f5ef3bb7641863be4e1bf1279623e5af3d3fa726e8f7628ddb - md5: ebe6952715e1d5eb567eeebf25250fa7 + size: 89900 + timestamp: 1744302253997 +- conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + sha256: a8aaf351e6461de0d5d47e4911257e25eec2fa409d71f3b643bb2f748bde1c08 + md5: 83fc6ae00127671e301c9f44254c31b8 depends: - - python >=3.8 + - python >=3.9 + - python license: PSF-2.0 license_family: PSF purls: - - pkg:pypi/typing-extensions?source=hash-mapping - size: 39888 - timestamp: 1717802653893 -- kind: conda - name: tzdata - version: 2024b - build: hc8b5060_0 - subdir: noarch - noarch: generic - url: https://prefix.dev/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - sha256: 4fde5c3008bf5d2db82f2b50204464314cc3c91c1d953652f7bd01d9e52aefdf - md5: 8ac3367aafb1cc0a068483c580af8015 + - pkg:pypi/typing-extensions?source=compressed-mapping + size: 52189 + timestamp: 1744302253997 +- 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 -- kind: conda - name: ucrt - version: 10.0.22621.0 - build: h57928b3_1 - build_number: 1 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda + size: 122968 + timestamp: 1742727099393 +- conda: https://prefix.dev/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda sha256: db8dead3dd30fb1a032737554ce91e2819b43496a0db09927edf01c32b577450 md5: 6797b005cd0f439c4c5c9ac565783700 constrains: - vs2015_runtime >=14.29.30037 - arch: x86_64 - platform: win license: LicenseRef-MicrosoftWindowsSDK10 purls: [] size: 559710 timestamp: 1728377334097 -- kind: conda - name: ukkonen - version: 1.0.1 - build: py313h1ec8472_5 - build_number: 5 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/ukkonen-1.0.1-py313h1ec8472_5.conda - sha256: 4f57f2eccd5584421f1b4d8c96c167c1008cba660d7fab5bdec1de212a0e0ff0 - md5: 97337494471e4265a203327f9a194234 +- 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 - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - arch: x86_64 - platform: win + - 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: 17210 - timestamp: 1725784604368 -- kind: conda - name: ukkonen - version: 1.0.1 - build: py313h33d0bda_5 - build_number: 5 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/ukkonen-1.0.1-py313h33d0bda_5.conda + size: 13756 + timestamp: 1725784148759 +- conda: https://prefix.dev/conda-forge/linux-64/ukkonen-1.0.1-py313h33d0bda_5.conda sha256: 4edcb6a933bb8c03099ab2136118d5e5c25285e3fd2b0ff0fa781916c53a1fb7 md5: 5bcffe10a500755da4a71cc0fb62a420 depends: @@ -5183,21 +15856,59 @@ packages: - libstdcxx >=13 - python >=3.13.0rc1,<3.14.0a0 - python_abi 3.13.* *_cp313 - arch: x86_64 - platform: linux license: MIT license_family: MIT purls: - pkg:pypi/ukkonen?source=hash-mapping size: 13916 timestamp: 1725784177558 -- kind: conda - name: ukkonen - version: 1.0.1 - build: py313hf9c7212_5 - build_number: 5 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/ukkonen-1.0.1-py313hf9c7212_5.conda +- 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 depends: @@ -5207,84 +15918,86 @@ packages: - python >=3.13.0rc1,<3.14.0a0 - python >=3.13.0rc1,<3.14.0a0 *_cp313 - python_abi 3.13.* *_cp313 - arch: arm64 - platform: osx license: MIT license_family: MIT purls: - pkg:pypi/ukkonen?source=hash-mapping size: 13689 timestamp: 1725784235751 -- kind: conda - name: urllib3 - version: 2.2.3 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - sha256: b6bb34ce41cd93956ad6eeee275ed52390fb3788d6c75e753172ea7ac60b66e5 - md5: 6b55867f385dd762ed99ea687af32a69 +- 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 + depends: + - cffi + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - 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: 17210 + timestamp: 1725784604368 +- 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 - pysocks >=1.5.6,<2.0,!=1.5.7 - - python >=3.8 + - python >=3.9 - zstandard >=0.18.0 license: MIT license_family: MIT purls: - pkg:pypi/urllib3?source=hash-mapping - size: 98076 - timestamp: 1726496531769 -- kind: conda - name: vc - version: '14.3' - build: ha32ba9b_23 - build_number: 23 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/vc-14.3-ha32ba9b_23.conda - sha256: 986ddaf8feec2904eac9535a7ddb7acda1a1dfb9482088fdb8129f1595181663 - md5: 7c10ec3158d1eb4ddff7007c9101adb0 - depends: - - vc14_runtime >=14.38.33135 - arch: x86_64 - platform: win + 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.42.34433 track_features: - vc14 license: BSD-3-Clause license_family: BSD purls: [] - size: 17479 - timestamp: 1731710827215 -- kind: conda - name: vc14_runtime - version: 14.42.34433 - build: he29a5d6_23 - build_number: 23 - subdir: win-64 - url: 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 - arch: x86_64 - platform: win + - vs2015_runtime 14.42.34438.* *_26 license: LicenseRef-MicrosoftVisualCpp2015-2022Runtime license_family: Proprietary purls: [] - size: 754247 - timestamp: 1731710681163 -- kind: conda - name: virtualenv - version: 20.28.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/virtualenv-20.28.0-pyhd8ed1ab_0.conda - sha256: 82776f74e90a296b79415361faa6b10f360755c1fb8e6d59ca68509e6fe7e115 - md5: 1d601bc1d28b5ce6d112b90f4b9b8ede + size: 750733 + timestamp: 1743195092905 +- conda: https://prefix.dev/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + sha256: 1dbb24b144f7b8400b30cca760cdee1b7de61716cd7f06d7ea82b741645823ce + md5: c0e0b4a09aa5a698a1bdd4ebfe28be38 depends: - distlib >=0.3.7,<1 - filelock >=3.12.2,<4 @@ -5294,330 +16007,395 @@ packages: license_family: MIT purls: - pkg:pypi/virtualenv?source=hash-mapping - size: 3350255 - timestamp: 1732609542072 -- kind: conda - name: vs2015_runtime - version: 14.42.34433 - build: hdffcdeb_23 - build_number: 23 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/vs2015_runtime-14.42.34433-hdffcdeb_23.conda - sha256: 568ce8151eaae256f1cef752fc78651ad7a86ff05153cc7a4740b52ae6536118 - md5: 5c176975ca2b8366abad3c97b3cd1e83 + size: 3635535 + timestamp: 1743474070226 +- 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 - arch: x86_64 - platform: win + - vc14_runtime >=14.42.34438 license: BSD-3-Clause license_family: BSD purls: [] - size: 17572 - timestamp: 1731710685291 -- kind: conda - name: wcwidth - version: 0.2.13 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - sha256: b6cd2fee7e728e620ec736d8dfee29c6c9e2adbd4e695a31f1d8f834a83e57e3 - md5: 68f0738df502a14213624b288c60c9ad + size: 17873 + timestamp: 1743195097269 +- conda: https://prefix.dev/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + sha256: f21e63e8f7346f9074fd00ca3b079bd3d2fa4d71f1f89d5b6934bf31446dc2a5 + md5: b68980f2495d096e71c7fd9d7ccf63e6 depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/wcwidth?source=hash-mapping - size: 32709 - timestamp: 1704731373922 -- kind: conda - name: win_inet_pton - version: 1.1.0 - build: pyh7428d3b_7 - build_number: 7 - subdir: noarch - noarch: python - url: https://prefix.dev/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_7.conda - sha256: c5297692ab34aade5e21107abaf623d6f93847662e25f655320038d2bfa1a812 - md5: c998c13b2f998af57c3b88c7a47979e0 + size: 32581 + timestamp: 1733231433877 +- conda: https://prefix.dev/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda + sha256: 93807369ab91f230cf9e6e2a237eaa812492fe00face5b38068735858fba954f + md5: 46e441ba871f524e2b067929da3051c2 depends: - __win - - python >=3.6 + - python >=3.9 license: LicenseRef-Public-Domain purls: - pkg:pypi/win-inet-pton?source=hash-mapping - size: 9602 - timestamp: 1727796413384 -- kind: conda - name: xz - version: 5.2.6 - build: h166bdaf_0 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - sha256: 03a6d28ded42af8a347345f82f3eebdd6807a08526d47899a42d62d319609162 - md5: 2161070d867d1b1204ea749c8eec4ef0 + 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: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: LGPL-2.1 and GPL-2.0 - purls: [] - size: 418368 - timestamp: 1660346797927 -- kind: conda - name: xz - version: 5.2.6 - build: h57fd34a_0 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - sha256: 59d78af0c3e071021cfe82dc40134c19dab8cdf804324b62940f5c8cd71803ec - md5: 39c6b54e94014701dd157f4f576ed211 - arch: arm64 - platform: osx - license: LGPL-2.1 and GPL-2.0 - purls: [] - size: 235693 - timestamp: 1660346961024 -- kind: conda - name: xz - version: 5.2.6 - build: h8d14728_0 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 - sha256: 54d9778f75a02723784dc63aff4126ff6e6749ba21d11a6d03c1f4775f269fe0 - md5: 515d77642eaa3639413c6b1bc3f94219 + - __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-64/xorg-libxau-1.0.12-h6e16a3a_0.conda + sha256: b4d2225135aa44e551576c4f3cf999b3252da6ffe7b92f0ad45bb44b887976fc + md5: 4cf40e60b444d56512a64f39d12c20bd depends: - - vc >=14.1,<15 - - vs2015_runtime >=14.16.27033 - arch: x86_64 - platform: win - license: LGPL-2.1 and GPL-2.0 - purls: [] - size: 217804 - timestamp: 1660346976440 -- kind: conda - name: yaml - version: 0.2.5 - build: h3422bc3_2 - build_number: 2 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 - md5: 4bb3f014845110883a3c5ee811fd84b4 - arch: arm64 - platform: osx + - __osx >=10.13 license: MIT license_family: MIT purls: [] - size: 88016 - timestamp: 1641347076660 -- kind: conda - name: yaml - version: 0.2.5 - build: h7f98852_2 - build_number: 2 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + size: 13290 + timestamp: 1734229077182 +- 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-64/xorg-libxdmcp-1.1.5-h00291cd_0.conda + sha256: bb4d1ef9cafef535494adf9296130b6193b3a44375883185b5167de03eb1ac7f + md5: 9f438e1b6f4e73fd9e6d78bfe7c36743 + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + purls: [] + size: 18465 + timestamp: 1727794980957 +- 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-2025.1.0-pyhd8ed1ab_0.conda + sha256: 9978c22319e85026d5a4134944f73bac820c948ca6b6c32af6b6985b5221cd8a + md5: fdf07e281a9e5e10fc75b2dd444136e9 + depends: + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/xyzservices?source=hash-mapping + size: 48641 + timestamp: 1737234992057 +- conda: https://prefix.dev/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae depends: - libgcc-ng >=9.4.0 - arch: x86_64 - platform: linux license: MIT license_family: MIT purls: [] size: 89141 timestamp: 1641346969816 -- kind: conda - name: yaml - version: 0.2.5 - build: h8ffe710_2 - build_number: 2 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 +- 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 + license: MIT + license_family: MIT + purls: [] + size: 88016 + timestamp: 1641347076660 +- conda: https://prefix.dev/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 sha256: 4e2246383003acbad9682c7c63178e2e715ad0eb84f03a8df1fbfba455dfedc5 md5: adbfb9f45d1004a26763652246a33764 depends: - vc >=14.1,<15.0a0 - vs2015_runtime >=14.16.27012 - arch: x86_64 - platform: win license: MIT license_family: MIT purls: [] size: 63274 timestamp: 1641347623319 -- kind: conda - name: zlib - version: 1.3.1 - build: h8359307_2 - build_number: 2 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 - md5: e3170d898ca6cb48f1bb567afb92f775 +- conda: https://prefix.dev/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda + sha256: 5488542dceeb9f2874e726646548ecc5608060934d6f9ceaa7c6a48c61f9cc8d + md5: e52c2ef711ccf31bb7f70ca87d144b9e depends: - - __osx >=11.0 - - libzlib 1.3.1 h8359307_2 - arch: arm64 - platform: osx - license: Zlib - license_family: Other - purls: [] - size: 77606 - timestamp: 1727963209370 -- kind: conda - name: zlib - version: 1.3.1 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + 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 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/zipp?source=hash-mapping + size: 21809 + timestamp: 1732827613585 +- conda: https://prefix.dev/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib 1.3.1 hb9d3cd8_2 - arch: x86_64 - platform: linux license: Zlib license_family: Other purls: [] size: 92286 timestamp: 1727963153079 -- kind: conda - name: zstandard - version: 0.23.0 - build: py313h574b89f_1 - build_number: 1 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/zstandard-0.23.0-py313h574b89f_1.conda - sha256: 1d2744ec0e91da267ce749e19142081472539cb140a7dad0646cd249246691fe - md5: 8e017aca933f4dd25491151edd3e7820 +- 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 + depends: + - __osx >=11.0 + - libzlib 1.3.1 h8359307_2 + license: Zlib + license_family: Other + purls: [] + size: 77606 + timestamp: 1727963209370 +- conda: https://prefix.dev/conda-forge/linux-64/zstandard-0.23.0-py310ha75aee5_1.conda + sha256: 96f96336f76443f5efb05f8a7232cc62f8fff969c27d03aa4aae181745f6f961 + md5: 0316e8d0e00c00631a6de89207db5b09 depends: + - __glibc >=2.17,<3.0.a0 - cffi >=1.11 - - python >=3.13.0rc1,<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 - arch: x86_64 - platform: win + - libgcc >=13 + - 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: 325703 - timestamp: 1725305947138 -- kind: conda - name: zstandard - version: 0.23.0 - build: py313h80202fe_1 - build_number: 1 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/zstandard-0.23.0-py313h80202fe_1.conda - sha256: ea82f2b8964150a3aa7373b4697e48e64f2200fe68ae554ee85c641c692d1c97 - md5: c178558ff516cd507763ffee230c20b2 + size: 720871 + timestamp: 1741853413225 +- conda: https://prefix.dev/conda-forge/linux-64/zstandard-0.23.0-py313h536fd9c_1.conda + sha256: e884a1fc5e99904eb1c4895eb71ea7bebae35aa865422e2ff006e5b37c98d919 + md5: 22b773d9a4bcf7a25ad5bc8591abc80f 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 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: x86_64 - platform: linux license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/zstandard?source=hash-mapping - size: 424424 - timestamp: 1725305749031 -- kind: conda - name: zstandard - version: 0.23.0 - build: py313hf2da073_1 - build_number: 1 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/zstandard-0.23.0-py313hf2da073_1.conda - sha256: 12b4e34acff24d291e2626c6610dfd819b8d99a461025ae59affcb6e84bc1d57 - md5: deebca66926691fadaaf16da05ecb5f9 + size: 737893 + timestamp: 1741853442447 +- conda: https://prefix.dev/conda-forge/osx-64/zstandard-0.23.0-py310hbb8c376_1.conda + sha256: a99bcb153d218dbec2f84f9158319f57be3aa18a349cbc0f7da119657aba7d83 + md5: 1625936f8a2131f6f6e84f0c1c33c7bf + 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: 678651 + timestamp: 1741853496802 +- conda: https://prefix.dev/conda-forge/osx-64/zstandard-0.23.0-py313h63b0ddb_1.conda + sha256: 4b975a1ecff7947ec6fa365f01e363a0cb2521e5ef97c1561e85b7daea8581dd + md5: f00530abdc6e3dba5ae003598c8fb8a1 + depends: + - __osx >=10.13 + - cffi >=1.11 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=compressed-mapping + size: 692765 + timestamp: 1741853628130 +- conda: https://prefix.dev/conda-forge/osx-arm64/zstandard-0.23.0-py310h078409c_1.conda + sha256: dbcc4f2478aa418695a53ab7b7cd0074c0067173ad5301e20832820226a73220 + md5: bc00cf3860a0914d9ff009c3a19e1977 depends: - __osx >=11.0 - cffi >=1.11 - - python >=3.13.0rc1,<3.14.0a0 - - python >=3.13.0rc1,<3.14.0a0 *_cp313 + - 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/zstandard?source=hash-mapping + size: 520342 + timestamp: 1741853601584 +- conda: https://prefix.dev/conda-forge/osx-arm64/zstandard-0.23.0-py313h90d716c_1.conda + sha256: 7b5035d01ee9f5e80c7a28f198d61c818891306e3b28623a8d73eeb89e17c7ad + md5: fc9329ffb94f33dd18bfbaae4d9216c6 + depends: + - __osx >=11.0 + - cffi >=1.11 + - 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 - arch: arm64 - platform: osx license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/zstandard?source=hash-mapping - size: 336496 - timestamp: 1725305912716 -- kind: conda - name: zstd - version: 1.5.6 - build: h0ea2cb4_0 - subdir: win-64 - url: https://prefix.dev/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda - sha256: 768e30dc513568491818fb068ee867c57c514b553915536da09e5d10b4ebf3c3 - md5: 9a17230f95733c04dc40a2b1e5491d74 + size: 536091 + timestamp: 1741853541598 +- conda: https://prefix.dev/conda-forge/win-64/zstandard-0.23.0-py310ha8f682b_1.conda + sha256: 6bc275161380985ba7effabf53534e8b97479d0318329f345b2e936bd2e4dbe6 + md5: 831d9f1bfdfc3616b4c0f91cdb36ed38 depends: - - libzlib >=1.2.13,<2.0.0a0 + - cffi >=1.11 + - 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/zstandard?source=hash-mapping + size: 434540 + timestamp: 1741853818826 +- conda: https://prefix.dev/conda-forge/win-64/zstandard-0.23.0-py313ha7868ed_1.conda + sha256: 711145d9cc05efe48a093db3ceecadf18f451547c94dc15745430a39ee1556d9 + md5: 0fe8f97370e74acbc7814c4906a5824f + depends: + - cffi >=1.11 + - 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 - arch: x86_64 - platform: win + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 449910 + timestamp: 1741853538921 +- conda: https://prefix.dev/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda + sha256: a4166e3d8ff4e35932510aaff7aa90772f84b4d07e9f6f83c614cba7ceefe0eb + md5: 6432cb5d4ac0046c3ac0a8a0f95842f9 + depends: + - __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 -- kind: conda - name: zstd - version: 1.5.6 - build: ha6fb4c9_0 - subdir: linux-64 - url: https://prefix.dev/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda - sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b - md5: 4d056880988120e29d75bfff282e0f45 + size: 567578 + timestamp: 1742433379869 +- conda: https://prefix.dev/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda + sha256: c171c43d0c47eed45085112cb00c8c7d4f0caa5a32d47f2daca727e45fb98dca + md5: cd60a4a5a8d6a476b30d8aa4bb49251a depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - arch: x86_64 - platform: linux + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 554846 - timestamp: 1714722996770 -- kind: conda - name: zstd - version: 1.5.6 - build: hb46c0d2_0 - subdir: osx-arm64 - url: https://prefix.dev/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda - sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 - md5: d96942c06c3e84bfcc5efb038724a7fd + size: 485754 + timestamp: 1742433356230 +- conda: https://prefix.dev/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda + sha256: 0d02046f57f7a1a3feae3e9d1aa2113788311f3cf37a3244c71e61a93177ba67 + md5: e6f69c7bcccdefa417f056fa593b40f0 depends: - __osx >=11.0 - - libzlib >=1.2.13,<2.0.0a0 - arch: arm64 - platform: osx + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 399979 + timestamp: 1742433432699 +- conda: https://prefix.dev/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda + sha256: bc64864377d809b904e877a98d0584f43836c9f2ef27d3d2a1421fa6eae7ca04 + md5: 21f56217d6125fb30c3c3f10c786d751 + depends: + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 license: BSD-3-Clause license_family: BSD purls: [] - size: 405089 - timestamp: 1714723101397 + size: 354697 + timestamp: 1742433568506 diff --git a/pyproject.toml b/pyproject.toml index abe1a87d..cba9c4cf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,48 +5,32 @@ build-backend = "hatchling.build" [project] name = "array-api-extra" authors = [ - { name = "Lucas Colley", email = "lucas.colley8@gmail.com" }, - { name = "Open Source Contributors" }, + { 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", + "Typing :: Typed", ] dynamic = ["version"] -dependencies = ["typing-extensions"] - -[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.11.2,<2"] [project.urls] Homepage = "https://github.com/data-apis/array-api-extra" "Bug Tracker" = "https://github.com/data-apis/array-api-extra/issues" -Discussions = "https://github.com/data-apis/array-api-extra/discussions" Changelog = "https://github.com/data-apis/array-api-extra/releases" @@ -60,61 +44,81 @@ 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.15,<3.14" -typing_extensions = ">=4.12.2,<4.13" +python = ">=3.10,<3.14" +array-api-compat = ">=1.11.2,<2" [tool.pixi.pypi-dependencies] array-api-extra = { path = ".", editable = true } [tool.pixi.feature.lint.dependencies] -pre-commit = "*" -pylint = "*" -basedmypy = "*" -basedpyright = "*" +typing-extensions = ">=4.13.2" +pre-commit = ">=4.2.0" +pylint = ">=3.3.6" +basedmypy = ">=2.10.0" +basedpyright = ">=1.28.5" +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.3.5" +hypothesis = ">=6.131.8" +dask-core = ">=2025.3.0" # No distributed, tornado, etc. +# NOTE: don't add jax, pytorch, sparse, cupy here +# as they slow down mypy and are not portable across target OSs [tool.pixi.feature.lint.tasks] -pre-commit-install = { cmd = "pre-commit install" } -pre-commit = { cmd = "pre-commit run -v --all-files --show-diff-on-failure" } -mypy = { cmd = "mypy", cwd = "." } -pylint = { cmd = ["pylint", "array_api_extra"], cwd = "src" } -pyright = { cmd = "basedpyright", cwd = "." } -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.3.5" +pytest-cov = ">=6.1.1" +hypothesis = ">=6.131.8" +array-api-strict = ">=2.3.1" +numpy = ">=1.22.0" [tool.pixi.feature.tests.tasks] -tests = { cmd = "pytest" } -tests-ci = { cmd = "pytest -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"} -[tool.pixi.feature.docs.dependencies] -sphinx = ">=7.0" -furo = ">=2023.08.17" +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" } -[tool.pixi.feature.docs.pypi-dependencies] -myst_parser = ">=0.13" -sphinx_copybutton = "*" -sphinx_autodoc_typehints = "*" +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.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.3.0" +pytest = ">=8.3.5" +typing-extensions = ">=4.13.2" +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" } +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" @@ -122,14 +126,81 @@ 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.6.0" +dask = ">=2025.3.0" +numba = ">=0.61.2" # sparse dependency +llvmlite = ">=0.44.0" # sparse dependency + +[tool.pixi.feature.backends.pypi-dependencies] +sparse = { version = ">=0.16.0" } + +[tool.pixi.feature.backends.target.linux-64.dependencies] +jax = ">=0.5.2" + +[tool.pixi.feature.backends.target.osx-64.dependencies] +jax = ">=0.5.2" + +[tool.pixi.feature.backends.target.osx-arm64.dependencies] +jax = ">=0.5.2" + +[tool.pixi.feature.backends.target.win-64.dependencies] +# 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" } + +[tool.pixi.feature.cuda-backends.target.linux-64.dependencies] +cupy = ">=13.4.1" +jaxlib = { version = ">=0.5.2", build = "cuda12*" } +pytorch = { version = ">=2.6.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 = "*" # unavailable +# jaxlib = { version = "*", build = "cuda12*" } # unavailable +# pytorch = { version = "*", build = "cuda12*" } # unavailable + +[tool.pixi.feature.cuda-backends.target.win-64.dependencies] +cupy = ">=13.4.1" +# jaxlib = { version = "*", build = "cuda12*" } # unavailable +pytorch = { version = ">=2.6.0", build = "cuda12*" } + [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"] +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"] # pytest @@ -138,12 +209,12 @@ ci-py313 = ["py313", "tests"] minversion = "6.0" addopts = ["-ra", "--showlocals", "--strict-markers", "--strict-config"] xfail_strict = true -filterwarnings = [ - "error", -] +filterwarnings = ["error"] log_cli_level = "INFO" -testpaths = [ - "tests", +testpaths = ["tests"] +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", ] @@ -151,11 +222,6 @@ testpaths = [ [tool.coverage] run.source = ["array_api_extra"] -report.exclude_also = [ - '\.\.\.', - 'if typing.TYPE_CHECKING:', -] - # mypy @@ -164,18 +230,16 @@ files = ["src", "tests"] python_version = "3.10" warn_unused_configs = true strict = true -enable_error_code = ["ignore-without-code", "redundant-expr", "truthy-bool"] -warn_unreachable = true -disallow_untyped_defs = false -disallow_incomplete_defs = false -# data-apis/array-api#589 +enable_error_code = ["ignore-without-code", "truthy-bool"] +# https://github.com/data-apis/array-api-typing disallow_any_expr = false +# false positives with input validation +disable_error_code = ["redundant-expr", "unreachable", "no-any-return"] [[tool.mypy.overrides]] -module = "array_api_extra.*" -disallow_untyped_defs = true -disallow_incomplete_defs = true - +# slow/unavailable on Windows; do not add to the lint env +module = ["dask.*", "jax.*", "torch.*"] +ignore_missing_imports = true # pyright @@ -185,65 +249,101 @@ 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; 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" }, +] # Ruff [tool.ruff] -target-version = "py39" +target-version = "py310" [tool.ruff.lint] extend-select = [ - "B", # flake8-bugbear - "I", # isort - "ARG", # flake8-unused-arguments - "C4", # flake8-comprehensions - "EM", # flake8-errmsg - "ICN", # flake8-import-conventions - "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 + "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 + "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 ] -isort.required-imports = ["from __future__ import annotations"] - -[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", - "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 +] + + +# numpydoc + +[tool.numpydoc_validation] +checks = [ + "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_*', ] 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 46b1388f..aa0a484a 100644 --- a/src/array_api_extra/__init__.py +++ b/src/array_api_extra/__init__.py @@ -1,17 +1,38 @@ -from __future__ import annotations +"""Extra array functions built on top of the array API standard.""" -from ._funcs import atleast_nd, cov, create_diagonal, expand_dims, kron, setdiff1d, sinc +from ._delegation import isclose, pad +from ._lib._at import at +from ._lib._funcs import ( + apply_where, + atleast_nd, + broadcast_shapes, + cov, + create_diagonal, + expand_dims, + kron, + nunique, + setdiff1d, + sinc, +) +from ._lib._lazy import lazy_apply -__version__ = "0.2.1.dev0" +__version__ = "0.7.2.dev0" # pylint: disable=duplicate-code __all__ = [ "__version__", + "apply_where", + "at", "atleast_nd", + "broadcast_shapes", "cov", "create_diagonal", "expand_dims", + "isclose", "kron", + "lazy_apply", + "nunique", + "pad", "setdiff1d", "sinc", ] diff --git a/src/array_api_extra/_delegation.py b/src/array_api_extra/_delegation.py new file mode 100644 index 00000000..b52c23ae --- /dev/null +++ b/src/array_api_extra/_delegation.py @@ -0,0 +1,171 @@ +"""Delegation to existing implementations for Public API Functions.""" + +from collections.abc import Sequence +from types import ModuleType +from typing import Literal + +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._helpers import asarrays +from ._lib._utils._typing import Array + +__all__ = ["isclose", "pad"] + + +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 pad( + x: Array, + pad_width: int | tuple[int, int] | Sequence[tuple[int, int]], + mode: Literal["constant"] = "constant", + *, + constant_values: complex = 0, + xp: ModuleType | None = None, +) -> Array: + """ + Pad the input array. + + Parameters + ---------- + x : array + Input array. + 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 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. + mode : str, optional + Only "constant" mode is currently supported, which pads with + the value passed to `constant_values`. + constant_values : python scalar, optional + Use this value to pad the input. Default is zero. + xp : array_namespace, optional + The standard-compatible namespace for `x`. Default: infer. + + Returns + ------- + array + The input array, + padded with ``pad_width`` elements equal to ``constant_values``. + """ + xp = array_namespace(x) if xp is None else xp + + if mode != "constant": + 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 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] + + return _funcs.pad(x, pad_width, constant_values=constant_values, xp=xp) diff --git a/src/array_api_extra/_funcs.py b/src/array_api_extra/_funcs.py deleted file mode 100644 index 4062c56f..00000000 --- a/src/array_api_extra/_funcs.py +++ /dev/null @@ -1,541 +0,0 @@ -from __future__ import annotations # https://github.com/pylint-dev/pylint/pull/9990 - -import typing -import warnings - -if typing.TYPE_CHECKING: - from ._lib._typing import Array, ModuleType - -from ._lib import _utils - -__all__ = [ - "atleast_nd", - "cov", - "create_diagonal", - "expand_dims", - "kron", - "setdiff1d", - "sinc", -] - - -def atleast_nd(x: Array, /, *, ndim: int, xp: ModuleType) -> Array: - """ - Recursively expand the dimension of an array to at least `ndim`. - - Parameters - ---------- - x : array - ndim : int - The minimum number of dimensions for the result. - xp : array_namespace - The standard-compatible namespace for `x`. - - Returns - ------- - res : array - An array with ``res.ndim`` >= `ndim`. - If ``x.ndim`` >= `ndim`, `x` is returned. - If ``x.ndim`` < `ndim`, `x` is expanded by prepending new axes - until ``res.ndim`` equals `ndim`. - - Examples - -------- - >>> import array_api_strict as xp - >>> import array_api_extra as xpx - >>> x = xp.asarray([1]) - >>> xpx.atleast_nd(x, ndim=3, xp=xp) - Array([[[1]]], dtype=array_api_strict.int64) - - >>> x = xp.asarray([[[1, 2], - ... [3, 4]]]) - >>> xpx.atleast_nd(x, ndim=1, xp=xp) is x - True - - """ - if x.ndim < ndim: - x = xp.expand_dims(x, axis=0) - x = atleast_nd(x, ndim=ndim, xp=xp) - return x - - -def cov(m: Array, /, *, xp: ModuleType) -> Array: - """ - Estimate a covariance matrix. - - Covariance indicates the level to which two variables vary together. - If we examine N-dimensional samples, :math:`X = [x_1, x_2, ... x_N]^T`, - then the covariance matrix element :math:`C_{ij}` is the covariance of - :math:`x_i` and :math:`x_j`. The element :math:`C_{ii}` is the variance - of :math:`x_i`. - - This provides a subset of the functionality of ``numpy.cov``. - - Parameters - ---------- - m : array - A 1-D or 2-D array containing multiple variables and observations. - Each row of `m` represents a variable, and each column a single - observation of all those variables. - xp : array_namespace - The standard-compatible namespace for `m`. - - Returns - ------- - res : array - The covariance matrix of the variables. - - Examples - -------- - >>> import array_api_strict as xp - >>> import array_api_extra as xpx - - Consider two variables, :math:`x_0` and :math:`x_1`, which - correlate perfectly, but in opposite directions: - - >>> x = xp.asarray([[0, 2], [1, 1], [2, 0]]).T - >>> x - Array([[0, 1, 2], - [2, 1, 0]], dtype=array_api_strict.int64) - - Note how :math:`x_0` increases while :math:`x_1` decreases. The covariance - matrix shows this clearly: - - >>> xpx.cov(x, xp=xp) - Array([[ 1., -1.], - [-1., 1.]], dtype=array_api_strict.float64) - - - Note that element :math:`C_{0,1}`, which shows the correlation between - :math:`x_0` and :math:`x_1`, is negative. - - Further, note how `x` and `y` are combined: - - >>> x = xp.asarray([-2.1, -1, 4.3]) - >>> y = xp.asarray([3, 1.1, 0.12]) - >>> X = xp.stack((x, y), axis=0) - >>> xpx.cov(X, xp=xp) - Array([[11.71 , -4.286 ], - [-4.286 , 2.14413333]], dtype=array_api_strict.float64) - - >>> xpx.cov(x, xp=xp) - Array(11.71, dtype=array_api_strict.float64) - - >>> xpx.cov(y, xp=xp) - Array(2.14413333, dtype=array_api_strict.float64) - - """ - m = xp.asarray(m, copy=True) - dtype = ( - xp.float64 if xp.isdtype(m.dtype, "integral") else xp.result_type(m, xp.float64) - ) - - m = atleast_nd(m, ndim=2, xp=xp) - m = xp.astype(m, dtype) - - avg = _mean(m, axis=1, xp=xp) - fact = m.shape[1] - 1 - - if fact <= 0: - warnings.warn("Degrees of freedom <= 0 for slice", RuntimeWarning, stacklevel=2) - fact = 0.0 - - m -= avg[:, None] - m_transpose = m.T - if xp.isdtype(m_transpose.dtype, "complex floating"): - m_transpose = xp.conj(m_transpose) - c = m @ m_transpose - c /= fact - axes = tuple(axis for axis, length in enumerate(c.shape) if length == 1) - return xp.squeeze(c, axis=axes) - - -def create_diagonal(x: Array, /, *, offset: int = 0, xp: ModuleType) -> Array: - """ - Construct a diagonal array. - - Parameters - ---------- - x : array - A 1-D array - offset : int, optional - Offset from the leading diagonal (default is ``0``). - Use positive ints for diagonals above the leading diagonal, - and negative ints for diagonals below the leading diagonal. - xp : array_namespace - The standard-compatible namespace for `x`. - - Returns - ------- - res : array - A 2-D array with `x` on the diagonal (offset by `offset`). - - Examples - -------- - >>> import array_api_strict as xp - >>> import array_api_extra as xpx - >>> x = xp.asarray([2, 4, 8]) - - >>> xpx.create_diagonal(x, xp=xp) - Array([[2, 0, 0], - [0, 4, 0], - [0, 0, 8]], dtype=array_api_strict.int64) - - >>> xpx.create_diagonal(x, offset=-2, xp=xp) - Array([[0, 0, 0, 0, 0], - [0, 0, 0, 0, 0], - [2, 0, 0, 0, 0], - [0, 4, 0, 0, 0], - [0, 0, 8, 0, 0]], dtype=array_api_strict.int64) - - """ - if x.ndim != 1: - err_msg = "`x` must be 1-dimensional." - raise ValueError(err_msg) - n = x.shape[0] + abs(offset) - diag = xp.zeros(n**2, dtype=x.dtype) - i = offset if offset >= 0 else abs(offset) * n - diag[i : min(n * (n - offset), diag.shape[0]) : n + 1] = x - return xp.reshape(diag, (n, n)) - - -def _mean( - x: Array, - /, - *, - axis: int | tuple[int, ...] | None = None, - keepdims: bool = False, - xp: ModuleType, -) -> Array: - """ - Complex mean, https://github.com/data-apis/array-api/issues/846. - """ - if xp.isdtype(x.dtype, "complex floating"): - x_real = xp.real(x) - x_imag = xp.imag(x) - mean_real = xp.mean(x_real, axis=axis, keepdims=keepdims) - 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 expand_dims( - a: Array, /, *, axis: int | tuple[int, ...] = (0,), xp: ModuleType -) -> Array: - """ - Expand the shape of an array. - - Insert (a) new axis/axes that will appear at the position(s) specified by - `axis` in the expanded array shape. - - This is ``xp.expand_dims`` for `axis` an int *or a tuple of ints*. - Roughly equivalent to ``numpy.expand_dims`` for NumPy arrays. - - Parameters - ---------- - a : array - axis : int or tuple of ints, optional - Position(s) in the expanded axes where the new axis (or axes) is/are placed. - If multiple positions are provided, they should be unique (note that a position - given by a positive index could also be referred to by a negative index - - that will also result in an error). - Default: ``(0,)``. - xp : array_namespace - The standard-compatible namespace for `a`. - - Returns - ------- - res : array - `a` with an expanded shape. - - Examples - -------- - >>> import array_api_strict as xp - >>> import array_api_extra as xpx - >>> x = xp.asarray([1, 2]) - >>> x.shape - (2,) - - The following is equivalent to ``x[xp.newaxis, :]`` or ``x[xp.newaxis]``: - - >>> y = xpx.expand_dims(x, axis=0, xp=xp) - >>> y - Array([[1, 2]], dtype=array_api_strict.int64) - >>> y.shape - (1, 2) - - The following is equivalent to ``x[:, xp.newaxis]``: - - >>> y = xpx.expand_dims(x, axis=1, xp=xp) - >>> y - Array([[1], - [2]], dtype=array_api_strict.int64) - >>> y.shape - (2, 1) - - ``axis`` may also be a tuple: - - >>> y = xpx.expand_dims(x, axis=(0, 1), xp=xp) - >>> y - Array([[[1, 2]]], dtype=array_api_strict.int64) - - >>> y = xpx.expand_dims(x, axis=(2, 0), xp=xp) - >>> y - Array([[[1], - [2]]], dtype=array_api_strict.int64) - - """ - if not isinstance(axis, tuple): - axis = (axis,) - ndim = a.ndim + len(axis) - if axis != () and (min(axis) < -ndim or max(axis) >= ndim): - err_msg = ( - f"a provided axis position is out of bounds for array of dimension {a.ndim}" - ) - raise IndexError(err_msg) - axis = tuple(dim % ndim for dim in axis) - if len(set(axis)) != len(axis): - err_msg = "Duplicate dimensions specified in `axis`." - raise ValueError(err_msg) - for i in sorted(axis): - a = xp.expand_dims(a, axis=i) - return a - - -def kron(a: Array, b: Array, /, *, xp: ModuleType) -> Array: - """ - Kronecker product of two arrays. - - Computes the Kronecker product, a composite array made of blocks of the - second array scaled by the first. - - Equivalent to ``numpy.kron`` for NumPy arrays. - - Parameters - ---------- - a, b : array - xp : array_namespace - The standard-compatible namespace for `a` and `b`. - - Returns - ------- - res : array - The Kronecker product of `a` and `b`. - - Notes - ----- - The function assumes that the number of dimensions of `a` and `b` - are the same, if necessary prepending the smallest with ones. - If ``a.shape = (r0,r1,..,rN)`` and ``b.shape = (s0,s1,...,sN)``, - the Kronecker product has shape ``(r0*s0, r1*s1, ..., rN*SN)``. - The elements are products of elements from `a` and `b`, organized - explicitly by:: - - kron(a,b)[k0,k1,...,kN] = a[i0,i1,...,iN] * b[j0,j1,...,jN] - - where:: - - kt = it * st + jt, t = 0,...,N - - In the common 2-D case (N=1), the block structure can be visualized:: - - [[ a[0,0]*b, a[0,1]*b, ... , a[0,-1]*b ], - [ ... ... ], - [ a[-1,0]*b, a[-1,1]*b, ... , a[-1,-1]*b ]] - - - Examples - -------- - >>> import array_api_strict as xp - >>> import array_api_extra as xpx - >>> xpx.kron(xp.asarray([1, 10, 100]), xp.asarray([5, 6, 7]), xp=xp) - Array([ 5, 6, 7, 50, 60, 70, 500, - 600, 700], dtype=array_api_strict.int64) - - >>> xpx.kron(xp.asarray([5, 6, 7]), xp.asarray([1, 10, 100]), xp=xp) - Array([ 5, 50, 500, 6, 60, 600, 7, - 70, 700], dtype=array_api_strict.int64) - - >>> xpx.kron(xp.eye(2), xp.ones((2, 2)), xp=xp) - Array([[1., 1., 0., 0.], - [1., 1., 0., 0.], - [0., 0., 1., 1.], - [0., 0., 1., 1.]], dtype=array_api_strict.float64) - - - >>> a = xp.reshape(xp.arange(100), (2, 5, 2, 5)) - >>> b = xp.reshape(xp.arange(24), (2, 3, 4)) - >>> c = xpx.kron(a, b, xp=xp) - >>> c.shape - (2, 10, 6, 20) - >>> I = (1, 3, 0, 2) - >>> J = (0, 2, 1) - >>> J1 = (0,) + J # extend to ndim=4 - >>> S1 = (1,) + b.shape - >>> K = tuple(xp.asarray(I) * xp.asarray(S1) + xp.asarray(J1)) - >>> c[K] == a[I]*b[J] - Array(True, dtype=array_api_strict.bool) - - """ - - b = xp.asarray(b) - singletons = (1,) * (b.ndim - a.ndim) - a = xp.broadcast_to(xp.asarray(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 - - # Equalise the shapes by prepending smaller one with 1s - a_shape = (1,) * max(0, nd_b - nd_a) + a_shape - b_shape = (1,) * max(0, nd_a - nd_b) + b_shape - - # Insert empty dimensions - a_arr = expand_dims(a, axis=tuple(range(nd_b - nd_a)), xp=xp) - b_arr = expand_dims(b, axis=tuple(range(nd_a - nd_b)), xp=xp) - - # Compute the product - a_arr = expand_dims(a_arr, axis=tuple(range(1, nd_max * 2, 2)), xp=xp) - b_arr = expand_dims(b_arr, axis=tuple(range(0, nd_max * 2, 2)), xp=xp) - result = xp.multiply(a_arr, b_arr) - - # Reshape back and return - a_shape = xp.asarray(a_shape) - b_shape = xp.asarray(b_shape) - return xp.reshape(result, tuple(xp.multiply(a_shape, b_shape))) - - -def setdiff1d( - x1: Array, x2: Array, /, *, assume_unique: bool = False, xp: ModuleType -) -> Array: - """ - Find the set difference of two arrays. - - Return the unique values in `x1` that are not in `x2`. - - Parameters - ---------- - x1 : array - Input array. - x2 : array - Input comparison array. - assume_unique : bool - If ``True``, the input arrays are both assumed to be unique, which - can speed up the calculation. Default is ``False``. - xp : array_namespace - The standard-compatible namespace for `x1` and `x2`. - - Returns - ------- - res : array - 1D array of values in `x1` that are not in `x2`. The result - is sorted when `assume_unique` is ``False``, but otherwise only sorted - if the input is sorted. - - Examples - -------- - >>> import array_api_strict as xp - >>> import array_api_extra as xpx - - >>> x1 = xp.asarray([1, 2, 3, 2, 4, 1]) - >>> x2 = xp.asarray([3, 4, 5, 6]) - >>> xpx.setdiff1d(x1, x2, xp=xp) - Array([1, 2], dtype=array_api_strict.int64) - - """ - - if assume_unique: - x1 = xp.reshape(x1, (-1,)) - else: - x1 = xp.unique_values(x1) - x2 = xp.unique_values(x2) - return x1[_utils.in1d(x1, x2, assume_unique=True, invert=True, xp=xp)] - - -def sinc(x: Array, /, *, xp: ModuleType) -> Array: - r""" - Return the normalized sinc function. - - The sinc function is equal to :math:`\sin(\pi x)/(\pi x)` for any argument - :math:`x\ne 0`. ``sinc(0)`` takes the limit value 1, making ``sinc`` not - only everywhere continuous but also infinitely differentiable. - - .. note:: - - Note the normalization factor of ``pi`` used in the definition. - This is the most commonly used definition in signal processing. - Use ``sinc(x / xp.pi)`` to obtain the unnormalized sinc function - :math:`\sin(x)/x` that is more common in mathematics. - - Parameters - ---------- - x : array - Array (possibly multi-dimensional) of values for which to calculate - ``sinc(x)``. Must have a real floating point dtype. - xp : array_namespace - The standard-compatible namespace for `x`. - - Returns - ------- - res : array - ``sinc(x)`` calculated elementwise, which has the same shape as the input. - - Notes - ----- - The name sinc is short for "sine cardinal" or "sinus cardinalis". - - The sinc function is used in various signal processing applications, - including in anti-aliasing, in the construction of a Lanczos resampling - filter, and in interpolation. - - For bandlimited interpolation of discrete-time signals, the ideal - interpolation kernel is proportional to the sinc function. - - References - ---------- - #. Weisstein, Eric W. "Sinc Function." From MathWorld--A Wolfram Web - Resource. https://mathworld.wolfram.com/SincFunction.html - #. Wikipedia, "Sinc function", - https://en.wikipedia.org/wiki/Sinc_function - - Examples - -------- - >>> import array_api_strict as xp - >>> import array_api_extra as xpx - >>> x = xp.linspace(-4, 4, 41) - >>> xpx.sinc(x, xp=xp) - Array([-3.89817183e-17, -4.92362781e-02, - -8.40918587e-02, -8.90384387e-02, - -5.84680802e-02, 3.89817183e-17, - 6.68206631e-02, 1.16434881e-01, - 1.26137788e-01, 8.50444803e-02, - -3.89817183e-17, -1.03943254e-01, - -1.89206682e-01, -2.16236208e-01, - -1.55914881e-01, 3.89817183e-17, - 2.33872321e-01, 5.04551152e-01, - 7.56826729e-01, 9.35489284e-01, - 1.00000000e+00, 9.35489284e-01, - 7.56826729e-01, 5.04551152e-01, - 2.33872321e-01, 3.89817183e-17, - -1.55914881e-01, -2.16236208e-01, - -1.89206682e-01, -1.03943254e-01, - -3.89817183e-17, 8.50444803e-02, - 1.26137788e-01, 1.16434881e-01, - 6.68206631e-02, 3.89817183e-17, - -5.84680802e-02, -8.90384387e-02, - -8.40918587e-02, -4.92362781e-02, - -3.89817183e-17], dtype=array_api_strict.float64) - - """ - if not xp.isdtype(x.dtype, "real floating"): - err_msg = "`x` must have a real floating data type." - raise ValueError(err_msg) - # no scalars in `where` - array-api#807 - y = xp.pi * xp.where( - x, x, xp.asarray(xp.finfo(x.dtype).smallest_normal, dtype=x.dtype) - ) - return xp.sin(y) / y diff --git a/src/array_api_extra/_lib/__init__.py b/src/array_api_extra/_lib/__init__.py new file mode 100644 index 00000000..d7b32033 --- /dev/null +++ b/src/array_api_extra/_lib/__init__.py @@ -0,0 +1 @@ +"""Internals of array-api-extra.""" diff --git a/src/array_api_extra/_lib/_at.py b/src/array_api_extra/_lib/_at.py new file mode 100644 index 00000000..870884b8 --- /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: # type: ignore[explicit-override] # 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 new file mode 100644 index 00000000..f64e1479 --- /dev/null +++ b/src/array_api_extra/_lib/_backends.py @@ -0,0 +1,46 @@ +"""Backends against which array-api-extra runs its tests.""" + +from __future__ import annotations + +from enum import Enum + +__all__ = ["Backend"] + + +class Backend(Enum): # numpydoc ignore=PR02 + """ + All array library backends explicitly tested by array-api-extra. + + Parameters + ---------- + value : str + Tag of the backend's module, in the format ``[:]``. + """ + + # 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" + + def __str__(self) -> str: # type: ignore[explicit-override] # pyright: ignore[reportImplicitOverride] # numpydoc ignore=RT01 + """Pretty-print parameterized test names.""" + return ( + self.name.lower().replace("_gpu", ":gpu").replace("_readonly", ":readonly") + ) + + @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) diff --git a/src/array_api_extra/_lib/_compat.py b/src/array_api_extra/_lib/_compat.py deleted file mode 100644 index b9577ff3..00000000 --- a/src/array_api_extra/_lib/_compat.py +++ /dev/null @@ -1,168 +0,0 @@ -### Helpers borrowed from array-api-compat - -from __future__ import annotations # https://github.com/pylint-dev/pylint/pull/9990 - -import inspect -import sys -import typing - -from typing_extensions import override - -if typing.TYPE_CHECKING: - from ._typing import Array, Device - -__all__ = ["device"] - - -# Placeholder object to represent the dask device -# when the array backend is not the CPU. -# (since it is not easy to tell which device a dask array is on) -class _dask_device: # pylint: disable=invalid-name - @override - def __repr__(self) -> str: - return "DASK_DEVICE" - - -_DASK_DEVICE = _dask_device() - - -# device() is not on numpy.ndarray or dask.array and to_device() is not on numpy.ndarray -# or cupy.ndarray. They are not included in array objects of this library -# because this library just reuses the respective ndarray classes without -# wrapping or subclassing them. These helper functions can be used instead of -# the wrapper functions for libraries that need to support both NumPy/CuPy and -# other libraries that use devices. -def device(x: Array, /) -> Device: - """ - Hardware device the array data resides on. - - This is equivalent to `x.device` according to the `standard - `__. - This helper is included because some array libraries either do not have - the `device` attribute or include it with an incompatible API. - - Parameters - ---------- - x: array - array instance from an array API compatible library. - - Returns - ------- - out: device - a ``device`` object (see the `Device Support `__ - section of the array API specification). - - Notes - ----- - - For NumPy the device is always `"cpu"`. For Dask, the device is always a - special `DASK_DEVICE` object. - - See Also - -------- - - to_device : Move array data to a different device. - - """ - if _is_numpy_array(x): - return "cpu" - if _is_dask_array(x): - # Peek at the metadata of the jax array to determine type - try: - import numpy as np # pylint: disable=import-outside-toplevel - - if isinstance(x._meta, np.ndarray): # pylint: disable=protected-access - # Must be on CPU since backed by numpy - return "cpu" - except ImportError: - pass - return _DASK_DEVICE - if _is_jax_array(x): - # JAX has .device() as a method, but it is being deprecated so that it - # can become a property, in accordance with the standard. In order for - # this function to not break when JAX makes the flip, we check for - # both here. - if inspect.ismethod(x.device): - return x.device() - return x.device - if _is_pydata_sparse_array(x): - # `sparse` will gain `.device`, so check for this first. - x_device = getattr(x, "device", None) - if x_device is not None: - return x_device - # Everything but DOK has this attr. - try: - inner = x.data - except AttributeError: - return "cpu" - # Return the device of the constituent array - return device(inner) - return x.device - - -def _is_numpy_array(x: Array) -> bool: - """Return True if `x` is a NumPy array.""" - # Avoid importing NumPy if it isn't already - if "numpy" not in sys.modules: - return False - - import numpy as np # pylint: disable=import-outside-toplevel - - # TODO: Should we reject ndarray subclasses? - return isinstance(x, (np.ndarray, np.generic)) and not _is_jax_zero_gradient_array( - x - ) - - -def _is_dask_array(x: Array) -> bool: - """Return True if `x` is a dask.array Array.""" - # Avoid importing dask if it isn't already - if "dask.array" not in sys.modules: - return False - - # pylint: disable=import-error, import-outside-toplevel - import dask.array # type: ignore[import-not-found] # pyright: ignore[reportMissingImports] - - return isinstance(x, dask.array.Array) - - -def _is_jax_zero_gradient_array(x: Array) -> bool: - """Return True if `x` is a zero-gradient array. - - These arrays are a design quirk of Jax that may one day be removed. - See https://github.com/google/jax/issues/20620. - """ - if "numpy" not in sys.modules or "jax" not in sys.modules: - return False - - # pylint: disable=import-error, import-outside-toplevel - import jax # type: ignore[import-not-found] # pyright: ignore[reportMissingImports] - import numpy as np # pylint: disable=import-outside-toplevel - - return isinstance(x, np.ndarray) and x.dtype == jax.float0 # pyright: ignore[reportUnknownVariableType] - - -def _is_jax_array(x: Array) -> bool: - """Return True if `x` is a JAX array.""" - # Avoid importing jax if it isn't already - if "jax" not in sys.modules: - return False - - # pylint: disable=import-error, import-outside-toplevel - import jax # pyright: ignore[reportMissingImports] - - return isinstance(x, jax.Array) or _is_jax_zero_gradient_array(x) - - -def _is_pydata_sparse_array(x: Array) -> bool: - """Return True if `x` is an array from the `sparse` package.""" - - # Avoid importing jax if it isn't already - if "sparse" not in sys.modules: - return False - - # pylint: disable=import-error, import-outside-toplevel - import sparse # type: ignore[import-not-found] # pyright: ignore[reportMissingImports] - - # TODO: Account for other backends. - return isinstance(x, sparse.SparseArray) diff --git a/src/array_api_extra/_lib/_funcs.py b/src/array_api_extra/_lib/_funcs.py new file mode 100644 index 00000000..e552392b --- /dev/null +++ b/src/array_api_extra/_lib/_funcs.py @@ -0,0 +1,936 @@ +"""Array-agnostic implementations for the public API.""" + +import math +import warnings +from collections.abc import Callable, Sequence +from types import ModuleType, NoneType +from typing import cast, overload + +from ._at import at +from ._utils import _compat, _helpers +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 + +__all__ = [ + "apply_where", + "atleast_nd", + "broadcast_shapes", + "cov", + "create_diagonal", + "expand_dims", + "kron", + "nunique", + "pad", + "setdiff1d", + "sinc", +] + + +@overload +def apply_where( # type: ignore[explicit-any,decorated-any] # numpydoc ignore=GL08 + cond: Array, + args: Array | tuple[Array, ...], + f1: Callable[..., Array], + f2: Callable[..., Array], + /, + *, + xp: ModuleType | None = None, +) -> Array: ... + + +@overload +def apply_where( # type: ignore[explicit-any,decorated-any] # numpydoc ignore=GL08 + cond: Array, + args: Array | tuple[Array, ...], + f1: Callable[..., Array], + /, + *, + fill_value: Array | complex, + xp: ModuleType | None = None, +) -> Array: ... + + +def apply_where( # type: ignore[explicit-any] # 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( # type: ignore[explicit-any] # 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)["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`. + + Parameters + ---------- + x : array + Input array. + ndim : int + The minimum number of dimensions for the result. + xp : array_namespace, optional + The standard-compatible namespace for `x`. Default: infer. + + Returns + ------- + array + An array with ``res.ndim`` >= `ndim`. + If ``x.ndim`` >= `ndim`, `x` is returned. + If ``x.ndim`` < `ndim`, `x` is expanded by prepending new axes + until ``res.ndim`` equals `ndim`. + + Examples + -------- + >>> import array_api_strict as xp + >>> import array_api_extra as xpx + >>> x = xp.asarray([1]) + >>> xpx.atleast_nd(x, ndim=3, xp=xp) + Array([[[1]]], dtype=array_api_strict.int64) + + >>> x = xp.asarray([[[1, 2], + ... [3, 4]]]) + >>> xpx.atleast_nd(x, ndim=1, xp=xp) is x + True + """ + if xp is None: + xp = array_namespace(x) + + if x.ndim < ndim: + x = xp.expand_dims(x, axis=0) + x = atleast_nd(x, ndim=ndim, xp=xp) + 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. + + Covariance indicates the level to which two variables vary together. + If we examine N-dimensional samples, :math:`X = [x_1, x_2, ... x_N]^T`, + then the covariance matrix element :math:`C_{ij}` is the covariance of + :math:`x_i` and :math:`x_j`. The element :math:`C_{ii}` is the variance + of :math:`x_i`. + + This provides a subset of the functionality of ``numpy.cov``. + + Parameters + ---------- + m : array + A 1-D or 2-D array containing multiple variables and observations. + Each row of `m` represents a variable, and each column a single + observation of all those variables. + xp : array_namespace, optional + The standard-compatible namespace for `m`. Default: infer. + + Returns + ------- + array + The covariance matrix of the variables. + + Examples + -------- + >>> import array_api_strict as xp + >>> import array_api_extra as xpx + + Consider two variables, :math:`x_0` and :math:`x_1`, which + correlate perfectly, but in opposite directions: + + >>> x = xp.asarray([[0, 2], [1, 1], [2, 0]]).T + >>> x + Array([[0, 1, 2], + [2, 1, 0]], dtype=array_api_strict.int64) + + Note how :math:`x_0` increases while :math:`x_1` decreases. The covariance + matrix shows this clearly: + + >>> xpx.cov(x, xp=xp) + Array([[ 1., -1.], + [-1., 1.]], dtype=array_api_strict.float64) + + Note that element :math:`C_{0,1}`, which shows the correlation between + :math:`x_0` and :math:`x_1`, is negative. + + Further, note how `x` and `y` are combined: + + >>> x = xp.asarray([-2.1, -1, 4.3]) + >>> y = xp.asarray([3, 1.1, 0.12]) + >>> X = xp.stack((x, y), axis=0) + >>> xpx.cov(X, xp=xp) + Array([[11.71 , -4.286 ], + [-4.286 , 2.14413333]], dtype=array_api_strict.float64) + + >>> xpx.cov(x, xp=xp) + Array(11.71, dtype=array_api_strict.float64) + + >>> xpx.cov(y, xp=xp) + Array(2.14413333, dtype=array_api_strict.float64) + """ + if xp is None: + xp = array_namespace(m) + + m = xp.asarray(m, copy=True) + dtype = ( + xp.float64 if xp.isdtype(m.dtype, "integral") else xp.result_type(m, xp.float64) + ) + + m = atleast_nd(m, ndim=2, xp=xp) + m = xp.astype(m, dtype) + + avg = _helpers.mean(m, axis=1, xp=xp) + + 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 + + m -= avg[:, None] + m_transpose = m.T + if xp.isdtype(m_transpose.dtype, "complex floating"): + m_transpose = xp.conj(m_transpose) + c = m @ m_transpose + c /= fact + axes = tuple(axis for axis, length in enumerate(c.shape) if length == 1) + return xp.squeeze(c, axis=axes) + + +def create_diagonal( + x: Array, /, *, offset: int = 0, xp: ModuleType | None = None +) -> Array: + """ + Construct a diagonal array. + + Parameters + ---------- + x : 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, + and negative ints for diagonals below the leading diagonal. + xp : array_namespace, optional + The standard-compatible namespace for `x`. Default: infer. + + Returns + ------- + array + An array having shape ``(*batch_dims, k+abs(offset), k+abs(offset))`` with `x` + on the diagonal (offset by `offset`). + + Examples + -------- + >>> import array_api_strict as xp + >>> import array_api_extra as xpx + >>> x = xp.asarray([2, 4, 8]) + + >>> xpx.create_diagonal(x, xp=xp) + Array([[2, 0, 0], + [0, 4, 0], + [0, 0, 8]], dtype=array_api_strict.int64) + + >>> xpx.create_diagonal(x, offset=-2, xp=xp) + Array([[0, 0, 0, 0, 0], + [0, 0, 0, 0, 0], + [2, 0, 0, 0, 0], + [0, 4, 0, 0, 0], + [0, 0, 8, 0, 0]], dtype=array_api_strict.int64) + """ + if xp is None: + xp = array_namespace(x) + + if x.ndim == 0: + err_msg = "`x` must be at least 1-dimensional." + raise ValueError(err_msg) + + 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 expand_dims( + a: Array, /, *, axis: int | tuple[int, ...] = (0,), xp: ModuleType | None = None +) -> Array: + """ + Expand the shape of an array. + + Insert (a) new axis/axes that will appear at the position(s) specified by + `axis` in the expanded array shape. + + This is ``xp.expand_dims`` for `axis` an int *or a tuple of ints*. + Roughly equivalent to ``numpy.expand_dims`` for NumPy arrays. + + Parameters + ---------- + a : array + Array to have its shape expanded. + axis : int or tuple of ints, optional + Position(s) in the expanded axes where the new axis (or axes) is/are placed. + If multiple positions are provided, they should be unique (note that a position + given by a positive index could also be referred to by a negative index - + that will also result in an error). + Default: ``(0,)``. + xp : array_namespace, optional + The standard-compatible namespace for `a`. Default: infer. + + Returns + ------- + array + `a` with an expanded shape. + + Examples + -------- + >>> import array_api_strict as xp + >>> import array_api_extra as xpx + >>> x = xp.asarray([1, 2]) + >>> x.shape + (2,) + + The following is equivalent to ``x[xp.newaxis, :]`` or ``x[xp.newaxis]``: + + >>> y = xpx.expand_dims(x, axis=0, xp=xp) + >>> y + Array([[1, 2]], dtype=array_api_strict.int64) + >>> y.shape + (1, 2) + + The following is equivalent to ``x[:, xp.newaxis]``: + + >>> y = xpx.expand_dims(x, axis=1, xp=xp) + >>> y + Array([[1], + [2]], dtype=array_api_strict.int64) + >>> y.shape + (2, 1) + + ``axis`` may also be a tuple: + + >>> y = xpx.expand_dims(x, axis=(0, 1), xp=xp) + >>> y + Array([[[1, 2]]], dtype=array_api_strict.int64) + + >>> y = xpx.expand_dims(x, axis=(2, 0), xp=xp) + >>> y + Array([[[1], + [2]]], dtype=array_api_strict.int64) + """ + if xp is None: + xp = array_namespace(a) + + if not isinstance(axis, tuple): + axis = (axis,) + ndim = a.ndim + len(axis) + if axis != () and (min(axis) < -ndim or max(axis) >= ndim): + err_msg = ( + f"a provided axis position is out of bounds for array of dimension {a.ndim}" + ) + raise IndexError(err_msg) + axis = tuple(dim % ndim for dim in axis) + if len(set(axis)) != len(axis): + err_msg = "Duplicate dimensions specified in `axis`." + raise ValueError(err_msg) + for i in sorted(axis): + a = xp.expand_dims(a, axis=i) + return a + + +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. + + Computes the Kronecker product, a composite array made of blocks of the + second array scaled by the first. + + Equivalent to ``numpy.kron`` for NumPy arrays. + + Parameters + ---------- + 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. + + Returns + ------- + array + The Kronecker product of `a` and `b`. + + Notes + ----- + The function assumes that the number of dimensions of `a` and `b` + are the same, if necessary prepending the smallest with ones. + If ``a.shape = (r0,r1,..,rN)`` and ``b.shape = (s0,s1,...,sN)``, + the Kronecker product has shape ``(r0*s0, r1*s1, ..., rN*SN)``. + The elements are products of elements from `a` and `b`, organized + explicitly by:: + + kron(a,b)[k0,k1,...,kN] = a[i0,i1,...,iN] * b[j0,j1,...,jN] + + where:: + + kt = it * st + jt, t = 0,...,N + + In the common 2-D case (N=1), the block structure can be visualized:: + + [[ a[0,0]*b, a[0,1]*b, ... , a[0,-1]*b ], + [ ... ... ], + [ a[-1,0]*b, a[-1,1]*b, ... , a[-1,-1]*b ]] + + Examples + -------- + >>> import array_api_strict as xp + >>> import array_api_extra as xpx + >>> xpx.kron(xp.asarray([1, 10, 100]), xp.asarray([5, 6, 7]), xp=xp) + Array([ 5, 6, 7, 50, 60, 70, 500, + 600, 700], dtype=array_api_strict.int64) + + >>> xpx.kron(xp.asarray([5, 6, 7]), xp.asarray([1, 10, 100]), xp=xp) + Array([ 5, 50, 500, 6, 60, 600, 7, + 70, 700], dtype=array_api_strict.int64) + + >>> xpx.kron(xp.eye(2), xp.ones((2, 2)), xp=xp) + Array([[1., 1., 0., 0.], + [1., 1., 0., 0.], + [0., 0., 1., 1.], + [0., 0., 1., 1.]], dtype=array_api_strict.float64) + + >>> a = xp.reshape(xp.arange(100), (2, 5, 2, 5)) + >>> b = xp.reshape(xp.arange(24), (2, 3, 4)) + >>> c = xpx.kron(a, b, xp=xp) + >>> c.shape + (2, 10, 6, 20) + >>> I = (1, 3, 0, 2) + >>> J = (0, 2, 1) + >>> J1 = (0,) + J # extend to ndim=4 + >>> S1 = (1,) + b.shape + >>> K = tuple(xp.asarray(I) * xp.asarray(S1) + xp.asarray(J1)) + >>> c[K] == a[I]*b[J] + Array(True, dtype=array_api_strict.bool) + """ + if xp is None: + xp = array_namespace(a, b) + a, b = asarrays(a, b, xp=xp) + + singletons = (1,) * (b.ndim - a.ndim) + 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 = 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 + b_shape = (1,) * max(0, nd_a - nd_b) + b_shape + + # Insert empty dimensions + a_arr = expand_dims(a, axis=tuple(range(nd_b - nd_a)), xp=xp) + b_arr = expand_dims(b, axis=tuple(range(nd_a - nd_b)), xp=xp) + + # Compute the product + a_arr = expand_dims(a_arr, axis=tuple(range(1, nd_max * 2, 2)), xp=xp) + b_arr = expand_dims(b_arr, axis=tuple(range(0, nd_max * 2, 2)), xp=xp) + result = xp.multiply(a_arr, b_arr) + + # Reshape back and return + res_shape = tuple(a_s * b_s for a_s, b_s in zip(a_shape, b_shape, strict=True)) + 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)["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.sort(xp.reshape(x, -1)) + mask = x != xp.roll(x, -1) + default_int = xp.__array_namespace_info__().default_dtypes( + device=_compat.device(x) + )["integral"] + 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)) + + # https://github.com/python/typeshed/issues/13376 + slices: list[slice] = [] # type: ignore[explicit-any] + 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: + 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 | complex, + x2: Array | complex, + /, + *, + assume_unique: bool = False, + xp: ModuleType | None = None, +) -> Array: + """ + Find the set difference of two arrays. + + Return the unique values in `x1` that are not in `x2`. + + Parameters + ---------- + x1 : array | int | float | complex | bool + Input array. + x2 : array + Input comparison array. + assume_unique : bool + If ``True``, the input arrays are both assumed to be unique, which + can speed up the calculation. Default is ``False``. + xp : array_namespace, optional + The standard-compatible namespace for `x1` and `x2`. Default: infer. + + Returns + ------- + array + 1D array of values in `x1` that are not in `x2`. The result + is sorted when `assume_unique` is ``False``, but otherwise only sorted + if the input is sorted. + + Examples + -------- + >>> import array_api_strict as xp + >>> import array_api_extra as xpx + + >>> x1 = xp.asarray([1, 2, 3, 2, 4, 1]) + >>> x2 = xp.asarray([3, 4, 5, 6]) + >>> xpx.setdiff1d(x1, x2, xp=xp) + Array([1, 2], dtype=array_api_strict.int64) + """ + 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,)) + 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)] + + +def sinc(x: Array, /, *, xp: ModuleType | None = None) -> Array: + r""" + Return the normalized sinc function. + + The sinc function is equal to :math:`\sin(\pi x)/(\pi x)` for any argument + :math:`x\ne 0`. ``sinc(0)`` takes the limit value 1, making ``sinc`` not + only everywhere continuous but also infinitely differentiable. + + .. note:: + + Note the normalization factor of ``pi`` used in the definition. + This is the most commonly used definition in signal processing. + Use ``sinc(x / xp.pi)`` to obtain the unnormalized sinc function + :math:`\sin(x)/x` that is more common in mathematics. + + Parameters + ---------- + x : array + Array (possibly multi-dimensional) of values for which to calculate + ``sinc(x)``. Must have a real floating point dtype. + xp : array_namespace, optional + The standard-compatible namespace for `x`. Default: infer. + + Returns + ------- + array + ``sinc(x)`` calculated elementwise, which has the same shape as the input. + + Notes + ----- + The name sinc is short for "sine cardinal" or "sinus cardinalis". + + The sinc function is used in various signal processing applications, + including in anti-aliasing, in the construction of a Lanczos resampling + filter, and in interpolation. + + For bandlimited interpolation of discrete-time signals, the ideal + interpolation kernel is proportional to the sinc function. + + References + ---------- + #. Weisstein, Eric W. "Sinc Function." From MathWorld--A Wolfram Web + Resource. https://mathworld.wolfram.com/SincFunction.html + #. Wikipedia, "Sinc function", + https://en.wikipedia.org/wiki/Sinc_function + + Examples + -------- + >>> import array_api_strict as xp + >>> import array_api_extra as xpx + >>> x = xp.linspace(-4, 4, 41) + >>> xpx.sinc(x, xp=xp) + Array([-3.89817183e-17, -4.92362781e-02, + -8.40918587e-02, -8.90384387e-02, + -5.84680802e-02, 3.89817183e-17, + 6.68206631e-02, 1.16434881e-01, + 1.26137788e-01, 8.50444803e-02, + -3.89817183e-17, -1.03943254e-01, + -1.89206682e-01, -2.16236208e-01, + -1.55914881e-01, 3.89817183e-17, + 2.33872321e-01, 5.04551152e-01, + 7.56826729e-01, 9.35489284e-01, + 1.00000000e+00, 9.35489284e-01, + 7.56826729e-01, 5.04551152e-01, + 2.33872321e-01, 3.89817183e-17, + -1.55914881e-01, -2.16236208e-01, + -1.89206682e-01, -1.03943254e-01, + -3.89817183e-17, 8.50444803e-02, + 1.26137788e-01, 1.16434881e-01, + 6.68206631e-02, 3.89817183e-17, + -5.84680802e-02, -8.90384387e-02, + -8.40918587e-02, -4.92362781e-02, + -3.89817183e-17], dtype=array_api_strict.float64) + """ + if xp is None: + xp = array_namespace(x) + + if not xp.isdtype(x.dtype, "real floating"): + err_msg = "`x` must have a real floating data type." + raise ValueError(err_msg) + # no scalars in `where` - array-api#807 + y = xp.pi * xp.where( + xp.astype(x, xp.bool), + x, + xp.asarray(xp.finfo(x.dtype).eps, dtype=x.dtype, device=_compat.device(x)), + ) + return xp.sin(y) / y diff --git a/src/array_api_extra/_lib/_lazy.py b/src/array_api_extra/_lib/_lazy.py new file mode 100644 index 00000000..d13d08f8 --- /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 # type: ignore[explicit-any] +else: + # Sphinx hack + NumPyObject = Any + +P = ParamSpec("P") + + +@overload +def lazy_apply( # type: ignore[decorated-any, 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[decorated-any, 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( # type: ignore[explicit-any] # 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( # type: ignore[decorated-any,explicit-any] + *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)) # type: ignore[bad-cast] # 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 new file mode 100644 index 00000000..301a851f --- /dev/null +++ b/src/array_api_extra/_lib/_testing.py @@ -0,0 +1,223 @@ +""" +Testing utilities. + +Note that this is private API; don't expect it to be stable. +See also ..testing for public testing utilities. +""" + +import math +from types import ModuleType +from typing import cast + +import pytest + +from ._utils._compat import ( + array_namespace, + is_array_api_strict_namespace, + is_cupy_namespace, + is_dask_namespace, + is_pydata_sparse_namespace, + is_torch_namespace, +) +from ._utils._typing import Array + +__all__ = ["xp_assert_close", "xp_assert_equal"] + + +def _check_ns_shape_dtype( + actual: Array, desired: Array +) -> ModuleType: # numpydoc ignore=RT03 + """ + Assert that namespace, shape and dtype of the two arrays match. + + Parameters + ---------- + actual : Array + The array produced by the tested function. + desired : Array + The expected array (typically hardcoded). + + Returns + ------- + Arrays namespace. + """ + actual_xp = array_namespace(actual) # Raises on scalars and lists + desired_xp = array_namespace(desired) + + msg = f"namespaces do not match: {actual_xp} != f{desired_xp}" + assert actual_xp == desired_xp, msg + + actual_shape = actual.shape + desired_shape = desired.shape + if is_dask_namespace(desired_xp): + # Dask uses nan instead of None for unknown shapes + if any(math.isnan(i) for i in cast(tuple[float, ...], actual_shape)): + actual_shape = actual.compute().shape # type: ignore[attr-defined] # pyright: ignore[reportAttributeAccessIssue] + if any(math.isnan(i) for i in cast(tuple[float, ...], desired_shape)): + desired_shape = desired.compute().shape # type: ignore[attr-defined] # pyright: ignore[reportAttributeAccessIssue] + + msg = f"shapes do not match: {actual_shape} != f{desired_shape}" + assert actual_shape == desired_shape, msg + + msg = f"dtypes do not match: {actual.dtype} != {desired.dtype}" + assert actual.dtype == desired.dtype, msg + + return desired_xp + + +def _prepare_for_test(array: Array, xp: ModuleType) -> Array: + """ + Ensure that the array can be compared with xp.testing or np.testing. + + This involves transferring it from GPU to CPU memory, densifying it, etc. + """ + if is_torch_namespace(xp): + return array.cpu() # type: ignore[attr-defined] # pyright: ignore[reportAttributeAccessIssue] + if is_pydata_sparse_namespace(xp): + return array.todense() # type: ignore[attr-defined] # pyright: ignore[reportAttributeAccessIssue] + if is_array_api_strict_namespace(xp): + # Note: we deliberately did not add a `.to_device` method in _typing.pyi + # even if it is required by the standard as many backends don't support it + return array.to_device(xp.Device("CPU_DEVICE")) # type: ignore[attr-defined] # pyright: ignore[reportAttributeAccessIssue] + # Note: nothing to do for CuPy, because it uses a bespoke test function + return array + + +def xp_assert_equal(actual: Array, desired: Array, err_msg: str = "") -> None: + """ + Array-API compatible version of `np.testing.assert_array_equal`. + + Parameters + ---------- + actual : Array + The array produced by the tested function. + desired : Array + The expected array (typically hardcoded). + err_msg : str, optional + Error message to display on failure. + + 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) + actual = _prepare_for_test(actual, xp) + desired = _prepare_for_test(desired, xp) + + 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 + + np.testing.assert_array_equal(actual, desired, err_msg=err_msg) + + +def xp_assert_close( + actual: Array, + desired: Array, + *, + rtol: float | None = None, + atol: float = 0, + err_msg: str = "", +) -> None: + """ + Array-API compatible version of `np.testing.assert_allclose`. + + Parameters + ---------- + actual : Array + The array produced by the tested function. + desired : Array + The expected array (typically hardcoded). + rtol : float, optional + Relative tolerance. Default: dtype-dependent. + atol : float, optional + Absolute tolerance. Default: 0. + err_msg : str, optional + Error message to display on failure. + + 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) + + 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 + + actual = _prepare_for_test(actual, xp) + desired = _prepare_for_test(desired, xp) + + 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 + + # JAX/Dask arrays work directly with `np.testing` + assert isinstance(rtol, float) + np.testing.assert_allclose( # type: ignore[call-overload] # pyright: ignore[reportCallIssue] + actual, # pyright: ignore[reportArgumentType] + desired, # pyright: ignore[reportArgumentType] + 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/_typing.py b/src/array_api_extra/_lib/_typing.py deleted file mode 100644 index 13079807..00000000 --- a/src/array_api_extra/_lib/_typing.py +++ /dev/null @@ -1,10 +0,0 @@ -from __future__ import annotations # https://github.com/pylint-dev/pylint/pull/9990 - -from types import ModuleType -from typing import Any - -# 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] - -__all__ = ["Array", "Device", "ModuleType"] diff --git a/src/array_api_extra/_lib/_utils.py b/src/array_api_extra/_lib/_utils.py deleted file mode 100644 index bf65340e..00000000 --- a/src/array_api_extra/_lib/_utils.py +++ /dev/null @@ -1,65 +0,0 @@ -from __future__ import annotations # https://github.com/pylint-dev/pylint/pull/9990 - -import typing - -if typing.TYPE_CHECKING: - from ._typing import Array, ModuleType - -from . import _compat - -__all__ = ["in1d"] - - -def in1d( - x1: Array, - x2: Array, - /, - *, - assume_unique: bool = False, - invert: bool = False, - xp: ModuleType, -) -> Array: - """Checks whether each element of an array is also present in a - second array. - - Returns a boolean array the same length as `x1` that is True - where an element of `x1` is in `x2` and False otherwise. - - This function has been adapted using the original implementation - present in numpy: - https://github.com/numpy/numpy/blob/v1.26.0/numpy/lib/arraysetops.py#L524-L758 - """ - - # This code is run to make the code significantly faster - if x2.shape[0] < 10 * x1.shape[0] ** 0.145: - if invert: - mask = xp.ones(x1.shape[0], dtype=xp.bool, device=x1.device) - for a in x2: - mask &= x1 != a - else: - mask = xp.zeros(x1.shape[0], dtype=xp.bool, device=x1.device) - for a in x2: - mask |= x1 == a - return mask - - rev_idx = xp.empty(0) # placeholder - if not assume_unique: - x1, rev_idx = xp.unique_inverse(x1) - x2 = xp.unique_values(x2) - - ar = xp.concat((x1, x2)) - device_ = _compat.device(ar) - # We need this to be a stable sort. - order = xp.argsort(ar, stable=True) - reverse_order = xp.argsort(order, stable=True) - sar = xp.take(ar, order, axis=0) - if sar.size >= 1: - bool_ar = sar[1:] != sar[:-1] if invert else sar[1:] == sar[:-1] - else: - bool_ar = xp.asarray([False]) if invert else xp.asarray([True]) - flag = xp.concat((bool_ar, xp.asarray([invert], device=device_))) - ret = xp.take(flag, reverse_order, axis=0) - - if assume_unique: - return ret[: x1.shape[0]] - return xp.take(ret, rev_idx, axis=0) diff --git a/src/array_api_extra/_lib/_utils/__init__.py b/src/array_api_extra/_lib/_utils/__init__.py new file mode 100644 index 00000000..3628c45f --- /dev/null +++ b/src/array_api_extra/_lib/_utils/__init__.py @@ -0,0 +1 @@ +"""Modules housing private utility functions.""" diff --git a/src/array_api_extra/_lib/_utils/_compat.py b/src/array_api_extra/_lib/_utils/_compat.py new file mode 100644 index 00000000..c6eec4cd --- /dev/null +++ b/src/array_api_extra/_lib/_utils/_compat.py @@ -0,0 +1,73 @@ +"""Acquire helpers from array-api-compat.""" +# Allow packages that vendor both `array-api-extra` and +# `array-api-compat` to override the import location + +try: + 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 ( + 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 new file mode 100644 index 00000000..48addda4 --- /dev/null +++ b/src/array_api_extra/_lib/_utils/_compat.pyi @@ -0,0 +1,45 @@ +"""Static type stubs for `_compat.py`.""" + +# https://github.com/scikit-learn/scikit-learn/pull/27910#issuecomment-2568023972 +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 + +def array_namespace( + *xs: Array | complex | None, + api_version: str | None = None, + use_compat: bool | None = None, +) -> 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: ... +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_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( # type: ignore[explicit-any] + 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 new file mode 100644 index 00000000..64006270 --- /dev/null +++ b/src/array_api_extra/_lib/_utils/_helpers.py @@ -0,0 +1,308 @@ +"""Helper functions used by `array_api_extra/_funcs.py`.""" + +from __future__ import annotations + +import math +from collections.abc import Generator, Iterable +from types import ModuleType +from typing import TYPE_CHECKING, cast + +from . import _compat +from ._compat import ( + array_namespace, + is_array_api_obj, + is_dask_namespace, + is_jax_namespace, + is_numpy_array, + is_pydata_sparse_namespace, +) +from ._typing import Array + +if TYPE_CHECKING: # pragma: no cover + # TODO import from typing (requires Python >=3.13) + from typing_extensions import TypeIs + + +__all__ = [ + "asarrays", + "capabilities", + "eager_shape", + "in1d", + "is_python_scalar", + "mean", + "meta_namespace", +] + + +def in1d( + x1: Array, + x2: Array, + /, + *, + assume_unique: bool = False, + invert: bool = False, + xp: ModuleType | None = None, +) -> Array: # numpydoc ignore=PR01,RT01 + """ + Check whether each element of an array is also present in a second array. + + Returns a boolean array the same length as `x1` that is True + where an element of `x1` is in `x2` and False otherwise. + + This function has been adapted using the original implementation + present in numpy: + https://github.com/numpy/numpy/blob/v1.26.0/numpy/lib/arraysetops.py#L524-L758 + """ + if xp is None: + 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 and isinstance(x2, Iterable): + if invert: + 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)) + for a in x2: + mask |= x1 == a + return mask + + rev_idx = xp.empty(0) # placeholder + if not assume_unique: + x1, rev_idx = xp.unique_inverse(x1) + x2 = xp.unique_values(x2) + + ar = xp.concat((x1, x2)) + device_ = _compat.device(ar) + # We need this to be a stable sort. + order = xp.argsort(ar, stable=True) + reverse_order = xp.argsort(order, stable=True) + sar = xp.take(ar, order, axis=0) + ar_size = _compat.size(sar) + assert ar_size is not None, "xp.unique*() on lazy backends raises" + if ar_size >= 1: + bool_ar = sar[1:] != sar[:-1] if invert else sar[1:] == sar[:-1] + else: + bool_ar = xp.asarray([False]) if invert else xp.asarray([True]) + flag = xp.concat((bool_ar, xp.asarray([invert], device=device_))) + ret = xp.take(flag, reverse_order, axis=0) + + if assume_unique: + return ret[: x1.shape[0]] + return xp.take(ret, rev_idx, axis=0) + + +def mean( + x: Array, + /, + *, + axis: int | tuple[int, ...] | None = None, + keepdims: bool = False, + xp: ModuleType | None = None, +) -> Array: # numpydoc ignore=PR01,RT01 + """ + Complex mean, https://github.com/data-apis/array-api/issues/846. + """ + if xp is None: + xp = array_namespace(x) + + if xp.isdtype(x.dtype, "complex floating"): + x_real = xp.real(x) + x_imag = xp.imag(x) + mean_real = xp.mean(x_real, axis=axis, keepdims=keepdims) + 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))] # type: ignore[index] + 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) -> dict[str, int]: + """ + 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. + + Returns + ------- + dict + Capabilities of the namespace. + """ + if is_pydata_sparse_namespace(xp): + # No __array_namespace_info__(); no indexing by sparse arrays + return {"boolean indexing": False, "data-dependent shapes": True} + out = xp.__array_namespace_info__().capabilities() + if is_jax_namespace(xp): + # FIXME https://github.com/jax-ml/jax/issues/27418 + out = out.copy() + out["boolean indexing"] = False + if is_dask_namespace(xp): + # FIXME https://github.com/data-apis/array-api-compat/pull/290 + out = out.copy() + out["boolean indexing"] = True + out["data-dependent shapes"] = True + return out diff --git a/src/array_api_extra/_lib/_utils/_typing.py b/src/array_api_extra/_lib/_utils/_typing.py new file mode 100644 index 00000000..d32a3a07 --- /dev/null +++ b/src/array_api_extra/_lib/_utils/_typing.py @@ -0,0 +1,10 @@ +# numpydoc ignore=GL08 +# pylint: disable=missing-module-docstring + +Array = object +DType = object +Device = object +GetIndex = object +SetIndex = object + +__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..e32a59bd --- /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 = ( # type: ignore[explicit-any] + int | slice | EllipsisType | Array | tuple[int | slice | EllipsisType | Array, ...] +) +GetIndex: TypeAlias = ( # type: ignore[explicit-any] + 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..37e8e69e --- /dev/null +++ b/src/array_api_extra/testing.py @@ -0,0 +1,332 @@ +""" +Public testing utilities. + +See also _lib._testing for additional private testing utilities. +""" + +from __future__ import annotations + +import contextlib +from collections.abc import Callable, Iterable, 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 + +__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: object) -> object: + return func + + +P = ParamSpec("P") +T = TypeVar("T") + +_ufuncs_tags: dict[object, dict[str, Any]] = {} # type: ignore[explicit-any] + + +def lazy_xp_function( # type: ignore[explicit-any] + func: Callable[..., Any], + *, + allow_dask_compute: bool | int = False, + jax_jit: bool = True, + static_argnums: int | Sequence[int] | None = None, + static_argnames: str | Iterable[str] | None = None, +) -> 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 ``jax.jit(func)`` after calling the + :func:`patch_lazy_xp_functions` test helper with ``xp=jax.numpy``. Set to False + if `func` is only compatible with eager (non-jitted) JAX. Default: True. + static_argnums : int | Sequence[int], optional + Passed to jax.jit. Positional arguments to treat as static (compile-time + constant). Default: infer from `static_argnames` using + `inspect.signature(func)`. + static_argnames : str | Iterable[str], optional + Passed to jax.jit. Named arguments to treat as static (compile-time constant). + Default: infer from `static_argnums` using `inspect.signature(func)`. + + 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 the same as `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 + """ + tags = { + "allow_dask_compute": allow_dask_compute, + "jax_jit": jax_jit, + "static_argnums": static_argnums, + "static_argnames": static_argnames, + } + 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, *, xp: ModuleType +) -> 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, jax.numpy, dask.array]) + def xp(request, monkeypatch): + patch_lazy_xp_functions(request, monkeypatch, xp=request.param) + return 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 + Pytest fixture, as acquired by the test itself or by one of its fixtures. + 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. + """ + mod = cast(ModuleType, request.module) + mods = [mod, *cast(list[ModuleType], getattr(mod, "lazy_xp_modules", []))] + + def iter_tagged() -> ( # type: ignore[explicit-any] + 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 # type: ignore[explicit-any] + 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) + monkeypatch.setattr(mod, name, wrapped) + + elif is_jax_namespace(xp): + import jax + + for mod, name, func, tags in iter_tagged(): + if tags["jax_jit"]: + # suppress unused-ignore to run mypy in -e lint as well as -e dev + wrapped = cast( # type: ignore[explicit-any] + Callable[..., Any], + jax.jit( + func, + static_argnums=tags["static_argnums"], + static_argnames=tags["static_argnames"], + ), + ) + monkeypatch.setattr(mod, name, wrapped) + + +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: # type: ignore[decorated-any,explicit-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,no-untyped-call] # 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 + + 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. + return dask.persist(out, scheduler="threads")[0] # type: ignore[attr-defined,no-untyped-call,func-returns-value,index] # pyright: ignore[reportPrivateImportUsage] + + return wrapper diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 00000000..3ccaf52b --- /dev/null +++ b/tests/__init__.py @@ -0,0 +1 @@ +"""Needed to import .conftest from the test modules.""" diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 00000000..5676cc0d --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,202 @@ +"""Pytest fixtures.""" + +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._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") + +NUMPY_VERSION = tuple(int(v) for v in np.__version__.split(".")[2]) +np_compat = array_namespace(np.empty(0)) # type: ignore[arg-type] # pyright: ignore[reportArgumentType] + + +@pytest.fixture(params=tuple(Backend)) +def library(request: pytest.FixtureRequest) -> Backend: # numpydoc ignore=PR01,RT03 + """ + Parameterized fixture that iterates on all libraries. + + Returns + ------- + The current Backend enum. + """ + elem = cast(Backend, request.param) + + 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 + + +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 + JAX and Sparse simply don't define those methods, which makes calls to `+=` fall + back to `__add__`. + + Note that this is not a full read-only Array API library. Notably, + `array_namespace(x)` returns array_api_compat.numpy. This is actually the desired + behaviour, so that when a tested function internally calls `xp = + array_namespace(*args) or xp`, it will internally create writeable arrays. + For this reason, tests that explicitly pass xp=xp to the tested functions may + misbehave and should be skipped for NUMPY_READONLY. + """ + + def __getattr__(self, name: str) -> object: # numpydoc ignore=PR01,RT01 + """Wrap all functions that return arrays to make their output read-only.""" + func = getattr(np_compat, name) + if not callable(func) or isinstance(func, type): + return func + return self._wrap(func) + + @staticmethod + def _wrap(func: Callable[P, T]) -> Callable[P, T]: # numpydoc ignore=PR01,RT01 + """Wrap func to make all np.ndarrays it returns read-only.""" + + def as_readonly(o: T) -> T: # numpydoc ignore=PR01,RT01 + """Unset the writeable flag in o.""" + try: + # Don't use is_numpy_array(o), as it includes np.generic + if isinstance(o, np.ndarray): + o.flags.writeable = False + except TypeError: + # Cannot interpret as a data type + return o + + # This works with namedtuples too + if isinstance(o, tuple | list): + return type(o)(*(as_readonly(i) for i in o)) # type: ignore[arg-type,return-value] # pyright: ignore[reportArgumentType,reportUnknownArgumentType] + + return o + + @wraps(func) + def wrapper(*args: P.args, **kwargs: P.kwargs) -> T: # numpydoc ignore=GL08 + return as_readonly(func(*args, **kwargs)) + + return wrapper + + +@pytest.fixture +def xp( + library: Backend, request: pytest.FixtureRequest, monkeypatch: pytest.MonkeyPatch +) -> Generator[ModuleType]: # numpydoc ignore=PR01,RT03 + """ + Parameterized fixture that iterates on all libraries. + + Returns + ------- + The current array namespace. + """ + if library == Backend.NUMPY_READONLY: + yield NumPyReadOnly() # type: ignore[misc] # pyright: ignore[reportReturnType] + return + + if library.like(Backend.ARRAY_API_STRICT) and NUMPY_VERSION < (1, 26): + pytest.skip("array_api_strict is untested on NumPy <1.26") + + xp = pytest.importorskip(library.modname) + # Possibly wrap module with array_api_compat + 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 + + # On Dask and JAX, monkey-patch all functions tagged by `lazy_xp_function` + # in the global scope of the module containing the test function. + patch_lazy_xp_functions(request, monkeypatch, xp=xp) + + if library.like(Backend.JAX): + 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) + + elif library == Backend.TORCH_GPU: + import torch.cuda + + if not torch.cuda.is_available(): + pytest.skip("no CUDA device available") + xp.set_default_device("cuda") + + elif library == Backend.TORCH: # CPU + xp.set_default_device("cpu") + + yield xp + + +@pytest.fixture(params=[Backend.DASK]) # Can select the test with `pytest -k dask` +def da( + request: pytest.FixtureRequest, monkeypatch: pytest.MonkeyPatch +) -> 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)) + patch_lazy_xp_functions(request, monkeypatch, xp=xp) + return xp + + +@pytest.fixture +def device( + library: Backend, xp: ModuleType +) -> Device: # numpydoc ignore=PR01,RT01,RT03 + """ + Return a valid device for the backend. + + 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 get_device(xp.empty(0)) diff --git a/tests/test_at.py b/tests/test_at.py new file mode 100644 index 00000000..fa9bcdc8 --- /dev/null +++ b/tests/test_at.py @@ -0,0 +1,353 @@ +import math +import pickle +from collections.abc import Callable, Generator +from contextlib import contextmanager +from types import ModuleType +from typing import cast + +import numpy as np +import pytest + +from array_api_extra import at +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._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. + """ + if isinstance(idx, (slice | tuple)): + return _at_op(x, None, pickle.dumps(idx), op, y, copy=copy, xp=xp) + return _at_op(x, idx, None, op, y, copy=copy, xp=xp) + + +def _at_op( + x: Array, + idx: SetIndex | None, + idx_pickle: bytes | None, + op: _AtOp, + y: Array | object, + copy: bool | None, + xp: ModuleType | None = None, +) -> Array: + """jitted helper of at_op""" + if idx_pickle: + idx = pickle.loads(idx_pickle) + meth = cast(Callable[..., Array], getattr(at(x, cast(SetIndex, idx)), op.value)) # type: ignore[explicit-any] + return meth(y, copy=copy, xp=xp) + + +lazy_xp_function(_at_op, static_argnames=("op", "idx_pickle", "copy", "xp")) + + +@contextmanager +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 + return + + xp = array_namespace(array) + array_orig = xp.asarray(array, copy=True) + yield + + 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.parametrize("copy", [False, True, None]) +@pytest.mark.parametrize( + ("op", "y", "expect_list"), + [ + (_AtOp.SET, 40.0, [10.0, 40.0, 40.0]), + (_AtOp.ADD, 40.0, [10.0, 60.0, 70.0]), + (_AtOp.SUBTRACT, 100.0, [10.0, -80.0, -70.0]), + (_AtOp.MULTIPLY, 2.0, [10.0, 40.0, 60.0]), + (_AtOp.DIVIDE, 2.0, [10.0, 10.0, 15.0]), + (_AtOp.POWER, 2.0, [10.0, 400.0, 900.0]), + (_AtOp.MIN, 25.0, [10.0, 20.0, 25.0]), + (_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, + copy: bool | None, + op: _AtOp, + y: float, + expect_list: list[float], + bool_mask: bool, + x_ndim: int, + y_ndim: int, +): + 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] + + 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)) # type: ignore[explicit-any] + 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)) # type: ignore[explicit-any] + 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] + + +def test_xp(): + a = cast(Array, np.asarray([1, 2, 3])) # type: ignore[bad-cast] + _ = 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(): + xp = cast(ModuleType, np) # 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), 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) + with pytest.raises(ValueError, match="Index"): + _ = at(a, 0)[0].set(4) + + +@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. + + 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]) + >>> a /= 1.5 + UFuncTypeError: Cannot cast ufunc 'divide' output from dtype('float64') + to dtype('int64') with casting rule 'same_kind' + """ + 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 36411958..0cee0b4d 100644 --- a/tests/test_funcs.py +++ b/tests/test_funcs.py @@ -1,198 +1,770 @@ -from __future__ import annotations # https://github.com/pylint-dev/pylint/pull/9990 - -import contextlib -import typing +import math import warnings +from types import ModuleType +from typing import Any, cast -# data-apis/array-api-strict#6 -import array_api_strict as xp # type: ignore[import-untyped] # pyright: ignore[reportMissingTypeStubs] +import hypothesis +import hypothesis.extra.numpy as npst import numpy as np import pytest -from numpy.testing import assert_allclose, assert_array_equal, assert_equal +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, expand_dims, + isclose, kron, + nunique, + pad, setdiff1d, sinc, ) +from array_api_extra._lib._backends import 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 + +from .conftest import NUMPY_VERSION + +# some xp backends are untyped +# mypy: disable-error-code=no-untyped-def + +lazy_xp_function(apply_where, static_argnums=(2, 3), static_argnames="xp") +lazy_xp_function(atleast_nd, static_argnames=("ndim", "xp")) +lazy_xp_function(cov, static_argnames="xp") +lazy_xp_function(create_diagonal, static_argnames=("offset", "xp")) +lazy_xp_function(expand_dims, static_argnames=("axis", "xp")) +lazy_xp_function(kron, static_argnames="xp") +lazy_xp_function(nunique, static_argnames="xp") +lazy_xp_function(pad, static_argnames=("pad_width", "mode", "constant_values", "xp")) +# FIXME calls in1d which calls xp.unique_values without size +lazy_xp_function(setdiff1d, jax_jit=False, static_argnames=("assume_unique", "xp")) +lazy_xp_function(sinc, static_argnames="xp") + + +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) + + 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.xfail_xp_backend(Backend.SPARSE, reason="no isdtype") + @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( # type: ignore[explicit-any,decorated-any] + 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) -if typing.TYPE_CHECKING: - from array_api_extra._lib._typing import Array + xp_assert_close(res1, ref1, rtol=2e-16) + xp_assert_equal(res2, ref2) + xp_assert_equal(res3, ref3) class TestAtLeastND: - def test_0D(self): - x = xp.asarray(1) + def test_0D(self, xp: ModuleType): + x = xp.asarray(1.0) - y = atleast_nd(x, ndim=0, xp=xp) - assert_array_equal(y, x) + y = atleast_nd(x, ndim=0) + xp_assert_equal(y, x) - y = atleast_nd(x, ndim=1, xp=xp) - assert_array_equal(y, xp.ones((1,))) + y = atleast_nd(x, ndim=1) + xp_assert_equal(y, xp.ones((1,))) - y = atleast_nd(x, ndim=5, xp=xp) - assert_array_equal(y, xp.ones((1, 1, 1, 1, 1))) + y = atleast_nd(x, ndim=5) + xp_assert_equal(y, xp.ones((1, 1, 1, 1, 1))) - def test_1D(self): + def test_1D(self, xp: ModuleType): x = xp.asarray([0, 1]) - y = atleast_nd(x, ndim=0, xp=xp) - assert_array_equal(y, x) + y = atleast_nd(x, ndim=0) + xp_assert_equal(y, x) - y = atleast_nd(x, ndim=1, xp=xp) - assert_array_equal(y, x) + y = atleast_nd(x, ndim=1) + xp_assert_equal(y, x) - y = atleast_nd(x, ndim=2, xp=xp) - assert_array_equal(y, xp.asarray([[0, 1]])) + y = atleast_nd(x, ndim=2) + xp_assert_equal(y, xp.asarray([[0, 1]])) - y = atleast_nd(x, ndim=5, xp=xp) - assert_array_equal(y, xp.reshape(xp.arange(2), (1, 1, 1, 1, 2))) + y = atleast_nd(x, ndim=5) + xp_assert_equal(y, xp.asarray([[[[[0, 1]]]]])) - def test_2D(self): - x = xp.asarray([[3]]) + def test_2D(self, xp: ModuleType): + x = xp.asarray([[3.0]]) - y = atleast_nd(x, ndim=0, xp=xp) - assert_array_equal(y, x) + y = atleast_nd(x, ndim=0) + xp_assert_equal(y, x) - y = atleast_nd(x, ndim=2, xp=xp) - assert_array_equal(y, x) + y = atleast_nd(x, ndim=2) + xp_assert_equal(y, x) - y = atleast_nd(x, ndim=3, xp=xp) - assert_array_equal(y, 3 * xp.ones((1, 1, 1))) + y = atleast_nd(x, ndim=3) + xp_assert_equal(y, 3 * xp.ones((1, 1, 1))) - y = atleast_nd(x, ndim=5, xp=xp) - assert_array_equal(y, 3 * xp.ones((1, 1, 1, 1, 1))) + y = atleast_nd(x, ndim=5) + xp_assert_equal(y, 3 * xp.ones((1, 1, 1, 1, 1))) - def test_5D(self): + def test_5D(self, xp: ModuleType): x = xp.ones((1, 1, 1, 1, 1)) - y = atleast_nd(x, ndim=0, xp=xp) - assert_array_equal(y, x) + y = atleast_nd(x, ndim=0) + xp_assert_equal(y, x) + + y = atleast_nd(x, ndim=4) + xp_assert_equal(y, x) + + y = atleast_nd(x, ndim=5) + xp_assert_equal(y, x) + + y = atleast_nd(x, ndim=6) + xp_assert_equal(y, xp.ones((1, 1, 1, 1, 1, 1))) + + y = atleast_nd(x, ndim=9) + xp_assert_equal(y, xp.ones((1, 1, 1, 1, 1, 1, 1, 1, 1))) - y = atleast_nd(x, ndim=4, xp=xp) - assert_array_equal(y, x) + def test_device(self, xp: ModuleType, device: Device): + x = xp.asarray([1, 2, 3], device=device) + assert get_device(atleast_nd(x, ndim=2)) == device - y = atleast_nd(x, ndim=5, xp=xp) - assert_array_equal(y, x) + def test_xp(self, xp: ModuleType): + 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 - y = atleast_nd(x, ndim=6, xp=xp) - assert_array_equal(y, xp.ones((1, 1, 1, 1, 1, 1))) + @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) - y = atleast_nd(x, ndim=9, xp=xp) - assert_array_equal(y, xp.ones((1, 1, 1, 1, 1, 1, 1, 1, 1))) + @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.xfail_xp_backend(Backend.SPARSE, reason="no isdtype") class TestCov: - def test_basic(self): - assert_allclose( - cov(xp.asarray([[0, 2], [1, 1], [2, 0]]).T, xp=xp), - xp.asarray([[1.0, -1.0], [-1.0, 1.0]]), + def test_basic(self, xp: ModuleType): + xp_assert_close( + cov(xp.asarray([[0, 2], [1, 1], [2, 0]]).T), + xp.asarray([[1.0, -1.0], [-1.0, 1.0]], dtype=xp.float64), ) - def test_complex(self): - x = xp.asarray([[1, 2, 3], [1j, 2j, 3j]]) - res = xp.asarray([[1.0, -1.0j], [1.0j, 1.0]]) - assert_allclose(cov(x, xp=xp), res) + def test_complex(self, xp: ModuleType): + actual = cov(xp.asarray([[1, 2, 3], [1j, 2j, 3j]])) + expect = xp.asarray([[1.0, -1.0j], [1.0j, 1.0]], dtype=xp.complex128) + xp_assert_close(actual, expect) - def test_empty(self): + def test_empty(self, xp: ModuleType): with warnings.catch_warnings(record=True): warnings.simplefilter("always", RuntimeWarning) - assert_array_equal(cov(xp.asarray([]), xp=xp), xp.nan) - assert_array_equal( - cov(xp.reshape(xp.asarray([]), (0, 2)), xp=xp), - xp.reshape(xp.asarray([]), (0, 0)), + xp_assert_equal(cov(xp.asarray([])), xp.asarray(xp.nan, dtype=xp.float64)) + xp_assert_equal( + cov(xp.reshape(xp.asarray([]), (0, 2))), + xp.reshape(xp.asarray([], dtype=xp.float64), (0, 0)), ) - assert_array_equal( - cov(xp.reshape(xp.asarray([]), (2, 0)), xp=xp), - xp.asarray([[xp.nan, xp.nan], [xp.nan, xp.nan]]), + xp_assert_equal( + cov(xp.reshape(xp.asarray([]), (2, 0))), + xp.asarray([[xp.nan, xp.nan], [xp.nan, xp.nan]], dtype=xp.float64), ) - def test_combination(self): + def test_combination(self, xp: ModuleType): x = xp.asarray([-2.1, -1, 4.3]) y = xp.asarray([3, 1.1, 0.12]) X = xp.stack((x, y), axis=0) - desired = xp.asarray([[11.71, -4.286], [-4.286, 2.144133]]) - assert_allclose(cov(X, xp=xp), desired, rtol=1e-6) - assert_allclose(cov(x, xp=xp), xp.asarray(11.71)) - assert_allclose(cov(y, xp=xp), xp.asarray(2.144133), rtol=1e-6) + desired = xp.asarray([[11.71, -4.286], [-4.286, 2.144133]], dtype=xp.float64) + xp_assert_close(cov(X), desired, rtol=1e-6) + xp_assert_close(cov(x), xp.asarray(11.71, dtype=xp.float64)) + xp_assert_close(cov(y), xp.asarray(2.144133, dtype=xp.float64), rtol=1e-6) + + 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, 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), + xp.asarray([[1.0, -1.0], [-1.0, 1.0]], dtype=xp.float64), + ) +@pytest.mark.skip_xp_backend( + Backend.SPARSE, reason="read-only backend without .at support" +) class TestCreateDiagonal: - def test_1d(self): + 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)) + b = xp.zeros((5, 5), dtype=xp.float64) for k in range(5): - b[k, k] = vals[k] - assert_array_equal(create_diagonal(vals, xp=xp), b) - b = xp.zeros((7, 7)) + b = at(b)[k, k].set(vals[k]) + xp_assert_equal(create_diagonal(vals), b) + b = xp.zeros((7, 7), dtype=xp.float64) c = xp.asarray(b, copy=True) for k in range(5): - b[k, k + 2] = vals[k] - c[k + 2, k] = vals[k] - assert_array_equal(create_diagonal(vals, offset=2, xp=xp), b) - assert_array_equal(create_diagonal(vals, offset=-2, xp=xp), c) + b = at(b)[k, k + 2].set(vals[k]) + c = at(c)[k + 2, k].set(vals[k]) + xp_assert_equal(create_diagonal(vals, offset=2), b) + xp_assert_equal(create_diagonal(vals, offset=-2), c) @pytest.mark.parametrize("n", range(1, 10)) @pytest.mark.parametrize("offset", range(1, 10)) - def test_create_diagonal(self, 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) x = rng.random(n) - A = create_diagonal(xp.asarray(x, dtype=one.dtype), offset=offset, xp=xp) + A = create_diagonal(xp.asarray(x, dtype=one.dtype), offset=offset) B = xp.asarray(np.diag(x, offset), dtype=one.dtype) - assert_array_equal(A, B) + xp_assert_equal(A, B) - def test_0d(self): + def test_0d_raises(self, xp: ModuleType): with pytest.raises(ValueError, match="1-dimensional"): - create_diagonal(xp.asarray(1), xp=xp) + _ = create_diagonal(xp.asarray(1)) - def test_2d(self): - with pytest.raises(ValueError, match="1-dimensional"): - create_diagonal(xp.asarray([[1]]), xp=xp) + @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) + assert get_device(create_diagonal(x)) == device + + def test_xp(self, xp: ModuleType): + x = xp.asarray([1, 2]) + y = create_diagonal(x, xp=xp) + xp_assert_equal(y, xp.asarray([[1, 0], [0, 2]])) + + +class TestExpandDims: + 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) + xp_assert_equal(b, xp.expand_dims(a, axis=axis)) + + def test_axis_tuple(self, xp: ModuleType): + a = xp.empty((3, 3, 3)) + assert expand_dims(a, axis=(0, 1, 2)).shape == (1, 1, 1, 3, 3, 3) + assert expand_dims(a, axis=(0, -1, -2)).shape == (1, 3, 3, 3, 1, 1) + assert expand_dims(a, axis=(0, 3, 5)).shape == (1, 3, 3, 1, 3, 1) + assert expand_dims(a, axis=(0, -3, -5)).shape == (1, 1, 3, 1, 3, 3) + + def test_axis_out_of_range(self, xp: ModuleType): + a = xp.empty((2, 3, 4, 5)) + with pytest.raises(IndexError, match="out of bounds"): + _ = expand_dims(a, axis=-6) + with pytest.raises(IndexError, match="out of bounds"): + _ = 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)) + with pytest.raises(IndexError, match="out of bounds"): + _ = 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)) + + 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)) + + def test_device(self, xp: ModuleType, device: Device): + x = xp.asarray([1, 2, 3], device=device) + assert get_device(expand_dims(x, axis=0)) == device + + def test_xp(self, xp: ModuleType): + x = xp.asarray([1, 2, 3]) + y = expand_dims(x, axis=(0, 1, 2), xp=xp) + assert y.shape == (1, 1, 1, 3) + + +@pytest.mark.filterwarnings( # array_api_strictest + "ignore:invalid value encountered:RuntimeWarning:array_api_strict" +) +@pytest.mark.xfail_xp_backend(Backend.SPARSE, reason="no isdtype") +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.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.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 + xp_assert_equal( + isclose(a, b, equal_nan=equal_nan), xp.asarray([True, False, equal_nan]) + ) class TestKron: - def test_basic(self): + 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]]) - assert_array_equal(kron(a, b, xp=xp), k) - a = xp.asarray([[1, 2], [3, 4]]) - b = xp.asarray(1) - assert_array_equal(kron(a, b, xp=xp), 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]]) - assert_array_equal(kron(a, b, xp=xp), k) - a = xp.asarray([[1, 2], [3, 4]]) - b = xp.asarray([3]) - assert_array_equal(kron(a, b, xp=xp), k) + 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]]]) - assert_array_equal(kron(a, b, xp=xp), k) - a = xp.asarray([[1, 2], [3, 4]]) - b = xp.asarray([[[1]], [[2]]]) - k = xp.asarray([[[1, 2], [3, 4]], [[2, 4], [6, 8]]]) - assert_array_equal(kron(a, b, xp=xp), k) + xp_assert_equal(kron(a, b), k) + xp_assert_equal(kron(b, a), k) - def test_kron_smoke(self): + def test_kron_smoke(self, xp: ModuleType): a = xp.ones((3, 3)) b = xp.ones((3, 3)) k = xp.ones((9, 9)) - assert_array_equal(kron(a, b, xp=xp), k) + xp_assert_equal(kron(a, b), k) @pytest.mark.parametrize( ("shape_a", "shape_b"), @@ -205,7 +777,9 @@ def test_kron_smoke(self): ((2, 0, 0, 2), (2, 0, 2)), ], ) - def test_kron_shape(self, shape_a: tuple[int, ...], shape_b: tuple[int, ...]): + def test_kron_shape( + self, xp: ModuleType, shape_a: tuple[int, ...], shape_b: tuple[int, ...] + ): a = xp.ones(shape_a) b = xp.ones(shape_b) normalised_shape_a = xp.asarray( @@ -218,101 +792,247 @@ def test_kron_shape(self, shape_a: tuple[int, ...], shape_b: tuple[int, ...]): int(dim) for dim in xp.multiply(normalised_shape_a, normalised_shape_b) ) - k = kron(a, b, xp=xp) - assert_equal(k.shape, expected_shape, err_msg="Unexpected shape from kron") + k = kron(a, b) + assert k.shape == expected_shape + @pytest.mark.xfail_xp_backend(Backend.SPARSE, reason="no isdtype") + 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)) -class TestExpandDims: - def test_functionality(self): - 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) - for axis in range(-5, 4): - b = expand_dims(a, axis=axis, xp=xp) - assert b.shape[axis] == 1 - assert _squeeze_all(b).shape == s + def test_all_python_scalars(self): + with pytest.raises(TypeError, match="Unrecognized"): + _ = kron(1, 1) - def test_axis_tuple(self): - a = xp.empty((3, 3, 3)) - assert expand_dims(a, axis=(0, 1, 2), xp=xp).shape == (1, 1, 1, 3, 3, 3) - assert expand_dims(a, axis=(0, -1, -2), xp=xp).shape == (1, 3, 3, 3, 1, 1) - assert expand_dims(a, axis=(0, 3, 5), xp=xp).shape == (1, 3, 3, 1, 3, 1) - assert expand_dims(a, axis=(0, -3, -5), xp=xp).shape == (1, 1, 3, 1, 3, 3) - - def test_axis_out_of_range(self): - s = (2, 3, 4, 5) - a = xp.empty(s) - with pytest.raises(IndexError, match="out of bounds"): - expand_dims(a, axis=-6, xp=xp) - with pytest.raises(IndexError, match="out of bounds"): - expand_dims(a, axis=5, xp=xp) + def test_device(self, xp: ModuleType, device: Device): + x1 = xp.asarray([1, 2, 3], device=device) + x2 = xp.asarray([4, 5], device=device) + assert get_device(kron(x1, x2)) == device - a = xp.empty((3, 3, 3)) - with pytest.raises(IndexError, match="out of bounds"): - expand_dims(a, axis=(0, -6), xp=xp) - with pytest.raises(IndexError, match="out of bounds"): - expand_dims(a, axis=(0, 5), xp=xp) + def test_xp(self, xp: ModuleType): + a = xp.ones((3, 3)) + b = xp.ones((3, 3)) + k = xp.ones((9, 9)) + xp_assert_equal(kron(a, b, xp=xp), k) - def test_repeated_axis(self): - a = xp.empty((3, 3, 3)) - with pytest.raises(ValueError, match="Duplicate dimensions"): - expand_dims(a, axis=(1, 1), xp=xp) - def test_positive_negative_repeated(self): - # 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), xp=xp) +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: - def test_setdiff1d(self): + @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]) expected = xp.asarray([6, 7]) - actual = setdiff1d(x1, x2, xp=xp) - assert_array_equal(actual, expected) + actual = setdiff1d(x1, x2) + xp_assert_equal(actual, expected) x1 = xp.arange(21) x2 = xp.arange(19) expected = xp.asarray([19, 20]) - actual = setdiff1d(x1, x2, xp=xp) - assert_array_equal(actual, expected) + actual = setdiff1d(x1, x2) + xp_assert_equal(actual, expected) - assert_array_equal(setdiff1d(xp.empty(0), xp.empty(0), xp=xp), xp.empty(0)) + xp_assert_equal(setdiff1d(xp.empty(0), xp.empty(0)), xp.empty(0)) x1 = xp.empty(0, dtype=xp.uint32) x2 = x1 - assert_equal(setdiff1d(x1, x2, xp=xp).dtype, xp.uint32) + assert xp.isdtype(setdiff1d(x1, x2).dtype, xp.uint32) - def test_assume_unique(self): + def test_assume_unique(self, xp: ModuleType): x1 = xp.asarray([3, 2, 1]) x2 = xp.asarray([7, 5, 2]) expected = xp.asarray([3, 1]) + actual = setdiff1d(x1, x2, assume_unique=True) + xp_assert_equal(actual, expected) + + @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 + 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, assume_unique=assume_unique)) == device + + @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, assume_unique=True, xp=xp) - assert_array_equal(actual, expected) + xp_assert_equal(actual, expected) +@pytest.mark.xfail_xp_backend(Backend.SPARSE, reason="no isdtype") class TestSinc: - def test_simple(self): - assert_array_equal(sinc(xp.asarray(0.0), xp=xp), xp.asarray(1.0)) - w = sinc(xp.linspace(-1, 1, 100), xp=xp) + 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)) # check symmetry - assert_allclose(w, xp.flip(w, axis=0)) + xp_assert_close(w, xp.flip(w, axis=0)) @pytest.mark.parametrize("x", [0, 1 + 3j]) - def test_dtype(self, x: int | complex): + def test_dtype(self, xp: ModuleType, x: int | complex): with pytest.raises(ValueError, match="real floating data type"): - sinc(xp.asarray(x), xp=xp) + _ = sinc(xp.asarray(x)) - def test_3d(self): + def test_3d(self, xp: ModuleType): x = xp.reshape(xp.arange(18, dtype=xp.float64), (3, 3, 2)) - expected = xp.zeros((3, 3, 2)) - expected[0, 0, 0] = 1.0 - assert_allclose(sinc(x, xp=xp), expected, atol=1e-15) + expected = xp.zeros((3, 3, 2), dtype=xp.float64) + expected = at(expected)[0, 0, 0].set(1.0) + xp_assert_close(sinc(x), expected, atol=1e-15) + + def test_device(self, xp: ModuleType, device: Device): + x = xp.asarray(0.0, device=device) + assert get_device(sinc(x)) == device + + def test_xp(self, xp: ModuleType): + xp_assert_equal(sinc(xp.asarray(0.0), xp=xp), xp.asarray(1.0)) diff --git a/tests/test_helpers.py b/tests/test_helpers.py new file mode 100644 index 00000000..a104e93c --- /dev/null +++ b/tests/test_helpers.py @@ -0,0 +1,206 @@ +from types import ModuleType +from typing import 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, + meta_namespace, + ndindex, +) +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 + +# mypy: disable-error-code=no-untyped-usage + +# FIXME calls xp.unique_values without size +lazy_xp_function(in1d, jax_jit=False, static_argnames=("assume_unique", "invert", "xp")) + + +@pytest.mark.skip_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.xfail_xp_backend(Backend.SPARSE, reason="no isdtype") + @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) + + +def test_capabilities(xp: ModuleType): + expect = {"boolean indexing", "data-dependent shapes"} + if xp.__array_api_version__ >= "2024.12": + expect.add("max dimensions") + assert capabilities(xp).keys() == expect diff --git a/tests/test_lazy.py b/tests/test_lazy.py new file mode 100644 index 00000000..f40df277 --- /dev/null +++ b/tests/test_lazy.py @@ -0,0 +1,453 @@ +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, static_argnames=("func", "shape", "dtype", "as_numpy", "xp") +) + +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)) # type: ignore[bad-cast] + 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(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_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, static_argnames=("expect_cls", "as_numpy")) + + +@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 new file mode 100644 index 00000000..fb9ba581 --- /dev/null +++ b/tests/test_testing.py @@ -0,0 +1,313 @@ +from collections.abc import Callable +from types import ModuleType +from typing import cast + +import numpy as np +import pytest + +from array_api_extra._lib._backends import Backend +from array_api_extra._lib._testing import xp_assert_close, xp_assert_equal +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 +from array_api_extra.testing import lazy_xp_function + +# mypy: disable-error-code=decorated-any +# pyright: reportUnknownParameterType=false,reportMissingParameterType=false + +param_assert_equal_close = pytest.mark.parametrize( + "func", + [ + xp_assert_equal, + pytest.param( + xp_assert_close, + marks=pytest.mark.xfail_xp_backend(Backend.SPARSE, reason="no isdtype"), + ), + ], +) + + +@param_assert_equal_close +def test_assert_close_equal_basic(xp: ModuleType, func: Callable[..., None]): # type: ignore[explicit-any] + 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, 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]) +def test_assert_close_equal_namespace(xp: ModuleType, func: Callable[..., None]): # type: ignore[explicit-any] + 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.xfail_xp_backend(Backend.SPARSE, reason="no isdtype") +def test_assert_close_tolerance(xp: ModuleType): + 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) + + +@param_assert_equal_close +@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_assert_close_equal_none_shape(xp: ModuleType, func: Callable[..., None]): # type: ignore[explicit-any] + """On Dask and other lazy backends, test that a shape with NaN's or None's + can be compared to a real shape. + """ + a = xp.asarray([1, 2]) + a = a[a > 1] + + func(a, xp.asarray([2])) + with pytest.raises(AssertionError): + func(a, xp.asarray([2, 3])) + with pytest.raises(AssertionError): + func(a, xp.asarray(2)) + with pytest.raises(AssertionError): + func(a, xp.asarray([3])) + + # Swap actual and desired + func(xp.asarray([2]), a) + with pytest.raises(AssertionError): + func(xp.asarray([2, 3]), a) + with pytest.raises(AssertionError): + func(xp.asarray(2), a) + with pytest.raises(AssertionError): + func(xp.asarray([3]), a) + + +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 + + +def static_params1(x: Array, n: int, flag: bool = False) -> Array: + return static_params(x, n, flag) + + +def static_params2(x: Array, n: int, flag: bool = False) -> Array: + return static_params(x, n, flag) + + +def static_params3(x: Array, n: int, flag: bool = False) -> Array: + return static_params(x, n, flag) + + +lazy_xp_function(static_params1, static_argnums=(1, 2)) +lazy_xp_function(static_params2, static_argnames=("n", "flag")) +lazy_xp_function(static_params3, static_argnums=1, static_argnames="flag") + + +@pytest.mark.parametrize("func", [static_params1, static_params2, static_params3]) +def test_lazy_xp_function_static_params(xp: ModuleType, func: Callable[..., Array]): # type: ignore[explicit-any] + x = xp.asarray([1.0, 2.0]) + xp_assert_equal(func(x, 1), xp.asarray([3.0, 6.0])) + xp_assert_equal(func(x, 1, True), xp.asarray([2.0, 4.0])) + xp_assert_equal(func(x, 1, False), xp.asarray([3.0, 6.0])) + xp_assert_equal(func(x, 0, False), xp.asarray([3.0, 6.0])) + xp_assert_equal(func(x, 1, flag=True), xp.asarray([2.0, 4.0])) + xp_assert_equal(func(x, n=1, flag=True), xp.asarray([2.0, 4.0])) + + +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-not-found] + + 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) + + +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) diff --git a/tests/test_utils.py b/tests/test_utils.py deleted file mode 100644 index a34ec56f..00000000 --- a/tests/test_utils.py +++ /dev/null @@ -1,24 +0,0 @@ -from __future__ import annotations # https://github.com/pylint-dev/pylint/pull/9990 - -import typing - -# data-apis/array-api-strict#6 -import array_api_strict as xp # type: ignore[import-untyped] # pyright: ignore[reportMissingTypeStubs] -import pytest -from numpy.testing import assert_array_equal - -from array_api_extra._lib._utils import in1d - -if typing.TYPE_CHECKING: - from array_api_extra._lib._typing import Array - - -# some test coverage already provided by TestSetDiff1D -class TestIn1D: - # cover both code paths - @pytest.mark.parametrize("x2", [xp.arange(9), xp.arange(15)]) - def test_no_invert_assume_unique(self, x2: Array): - x1 = xp.asarray([3, 8, 20]) - expected = xp.asarray([True, True, False]) - actual = in1d(x1, x2, xp=xp) - assert_array_equal(actual, expected) diff --git a/tests/test_version.py b/tests/test_version.py index 1b20232f..b9717a50 100644 --- a/tests/test_version.py +++ b/tests/test_version.py @@ -1,5 +1,3 @@ -from __future__ import annotations # https://github.com/pylint-dev/pylint/pull/9990 - import importlib.metadata import array_api_extra as xpx diff --git a/vendor_tests/__init__.py b/vendor_tests/__init__.py new file mode 100644 index 00000000..9fd27fde --- /dev/null +++ b/vendor_tests/__init__.py @@ -0,0 +1 @@ +"""Allow for relative imports in `test_vendor.py`.""" diff --git a/vendor_tests/_array_api_compat_vendor.py b/vendor_tests/_array_api_compat_vendor.py new file mode 100644 index 00000000..cd31a9c4 --- /dev/null +++ b/vendor_tests/_array_api_compat_vendor.py @@ -0,0 +1,10 @@ +"""This file is a hook imported by `src/array_api_extra/_lib/_compat.py`.""" + +from .array_api_compat import * # noqa: F403 +from .array_api_compat import array_namespace as array_namespace_compat + + +# Let unit tests check with `is` that we are picking up the function from this module +# and not from the original array_api_compat module. +def array_namespace(*xs, **kwargs): # numpydoc ignore=GL08 + return array_namespace_compat(*xs, **kwargs) diff --git a/vendor_tests/test_vendor.py b/vendor_tests/test_vendor.py new file mode 100644 index 00000000..374cba11 --- /dev/null +++ b/vendor_tests/test_vendor.py @@ -0,0 +1,72 @@ +import array_api_strict as xp +from numpy.testing import assert_array_equal + + +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 + 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 + + +def test_vendor_extra(): + from .array_api_extra import atleast_nd + + x = xp.asarray(1) + y = atleast_nd(x, ndim=0) + 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 + + assert n1 is n2