]` section.
+- Development-only tools belong in `[dependency-groups].dev` and the matching
+ `[tool.pixi.feature.dev]` dependency section.
+- In Pixi sections, use `dependencies` for Conda packages and `pypi-dependencies` for packages that
+ must be installed from PyPI or a Git source.
+- Do not add test, linting, formatting, documentation, or release tooling to the base runtime
+ dependencies unless it is actually needed by QUEENS at runtime.
+
+After editing `pyproject.toml`, run the dependency integrity check. The same check is installed as a
+pre-commit hook and also runs in CI:
+```bash
+pixi run -e dev pre-commit run check-pyproject-dependency-integrity --files pyproject.toml
+```
+
+If dependency declarations changed, refresh the lockfile and commit it together with
+`pyproject.toml`:
+```bash
+pixi lock
+git add pyproject.toml pixi.lock
+```
+
+The CI pipeline checks this as well: if dependency-relevant sections in `pyproject.toml` changed and
+`pixi lock --check --dry-run` would update `pixi.lock`, the code quality job fails. Before opening
+or updating a pull request, it is useful to verify the lockfile locally:
+```bash
+pixi lock --check --dry-run
+```
+
+Finally, reinstall or update the affected Pixi environment and run a focused test or smoke check:
+```bash
+pixi install --environment dev
+pixi run -e dev install-editable
+pixi run -e dev pytest
+```
+
##### Commit messages
Please provide meaningful commit messages based on the
[Conventional Commits guidelines](https://www.conventionalcommits.org/en/v1.0.0/).
diff --git a/README.md b/README.md
index 789777edb..c17508927 100644
--- a/README.md
+++ b/README.md
@@ -20,7 +20,7 @@
-[](https://github.com/queens-py/queens/actions/workflows/tests_local.yml?query=branch:main)
+[](https://github.com/queens-py/queens/actions/workflows/local_testsuite.yml?query=branch:main)
[](https://github.com/queens-py/queens/actions/workflows/build_documentation.yml?query=branch:main)
@@ -51,22 +51,49 @@ QUEENS (**Q**uantification of **U**ncertain **E**ffects in **En**gineering **S**
## :rocket: Getting started
->**Prerequisites**: Unix system and environment management system (we recommend [miniforge](https://conda-forge.org/download/))
+>**Prerequisites**: Python 3.12 or newer. For development, use [Pixi](https://pixi.sh/latest/).
-
+### Easy installation
-Clone the QUEENS repository to your local machine. Navigate to its base directory, then:
+Clone the QUEENS repository and install it from the source checkout with:
```bash
-conda env create
-conda activate queens
-pip install -e .
+pip install .
```
+We recommend using some form of environment management instead of installing into your system Python.
+For more details, see [the QUEENS documentation](https://queens-py.github.io/queens/introduction.html#installation).
-**Note**: This installs QUEENS without any fixed dependency versions. In most cases this is no problem and gives you more freedom to install additional packages within your environment. Should there be a problem you can play it safe with fixed versions via
+Optional runtime extras can be installed with:
```bash
-pip install -e .[safe]
+pip install ".[tutorials]"
+pip install ".[fourc]"
+pip install ".[all]"
```
+### Recommended installation
+We recommend a modern project-based workflow based on [Pixi](https://pixi.sh/latest/) especially for development.
+After cloning the repository, installing with Pixi is as easy as:
+```bash
+pixi install
+pixi run install-editable
+```
+The default Pixi environment contains the core QUEENS dependencies. Use `all` for runtime
+extras without development tools. For named Pixi environments, run
+`pixi run -e install-editable` once for each environment you want to use.
+
+### Development installation
+For development, we recommend using [Pixi](https://pixi.sh/latest/) together with the `dev` environment.
+`dev` contains the full contributor setup, including development tools, tutorials, and the
+4C interface dependencies.
+Clone the repository and install with:
+```bash
+pixi install --environment dev
+pixi run -e dev install-editable
+```
+Useful development commands then look like:
+```bash
+pixi run -e dev pytest
+pixi run -e dev pre-commit run --all-files
+```
## :crown: Workflow example
diff --git a/dev-requirements.in b/dev-requirements.in
deleted file mode 100644
index 014cafade..000000000
--- a/dev-requirements.in
+++ /dev/null
@@ -1,26 +0,0 @@
-# This file contains all the requirements for QUEENS (production runs).
-
-# Do not fix the version of a package if not strictly necessary. We use pip-tools in order to create a requirements.txt file where the version of the different packages are fixed to the latest stable version w.r.t. QUEENS. From time to time pip-tools is used to upgrade to the newer available versions.
-
-# Development
-pylint>=2.16
-pylint-exit
-isort>=5.0
-pre-commit
-pre-commit-hooks>=4.4.0
-liccheck
-licenseheaders
-sphinx
-nbsphinx
-pydata-sphinx-theme
-pandoc
-pip-tools
-commitizen>=3.12.0
-docformatter>=1.5.1
-yamllint>=1.19.0
-ruff
-nbstripout
-myst-parser
-testbook
-ipykernel
-mypy
diff --git a/dev-requirements.txt b/dev-requirements.txt
deleted file mode 100644
index e95ba2c2c..000000000
--- a/dev-requirements.txt
+++ /dev/null
@@ -1,380 +0,0 @@
-#
-# This file is autogenerated by pip-compile with Python 3.11
-# by the following command:
-#
-# pip-compile --constraint=requirements.txt --output-file=dev-requirements.txt dev-requirements.in
-#
-accessible-pygments==0.0.5
- # via pydata-sphinx-theme
-alabaster==1.0.0
- # via sphinx
-argcomplete==3.5.1
- # via commitizen
-astroid==3.3.5
- # via pylint
-asttokens==3.0.0
- # via stack-data
-attrs==24.2.0
- # via
- # jsonschema
- # referencing
-babel==2.16.0
- # via
- # pydata-sphinx-theme
- # sphinx
-beautifulsoup4==4.12.3
- # via
- # nbconvert
- # pydata-sphinx-theme
-bleach==6.1.0
- # via nbconvert
-build==1.2.2.post1
- # via pip-tools
-certifi==2024.8.30
- # via
- # -c requirements.txt
- # requests
-cfgv==3.4.0
- # via pre-commit
-charset-normalizer==3.4.0
- # via
- # -c requirements.txt
- # commitizen
- # docformatter
- # requests
-click==8.1.7
- # via
- # -c requirements.txt
- # pip-tools
-colorama==0.4.6
- # via commitizen
-comm==0.2.3
- # via ipykernel
-commitizen==3.30.0
- # via -r dev-requirements.in
-debugpy==1.8.16
- # via ipykernel
-decli==0.6.2
- # via commitizen
-decorator==5.1.1
- # via
- # -c requirements.txt
- # ipython
-defusedxml==0.7.1
- # via nbconvert
-dill==0.3.9
- # via
- # -c requirements.txt
- # pylint
-distlib==0.3.9
- # via virtualenv
-docformatter==1.7.5
- # via -r dev-requirements.in
-docutils==0.21.2
- # via
- # myst-parser
- # nbsphinx
- # pydata-sphinx-theme
- # sphinx
-executing==2.2.0
- # via stack-data
-fastjsonschema==2.20.0
- # via nbformat
-filelock==3.16.1
- # via
- # -c requirements.txt
- # virtualenv
-identify==2.6.1
- # via pre-commit
-idna==3.10
- # via
- # -c requirements.txt
- # requests
-imagesize==1.4.1
- # via sphinx
-ipykernel==6.30.1
- # via -r dev-requirements.in
-ipython==8.18.0
- # via ipykernel
-isort==5.13.2
- # via
- # -r dev-requirements.in
- # pylint
-jedi==0.19.2
- # via ipython
-jinja2==3.1.4
- # via
- # -c requirements.txt
- # commitizen
- # myst-parser
- # nbconvert
- # nbsphinx
- # sphinx
-jsonschema==4.23.0
- # via nbformat
-jsonschema-specifications==2024.10.1
- # via jsonschema
-jupyter-client==8.6.3
- # via
- # ipykernel
- # nbclient
-jupyter-core==5.7.2
- # via
- # ipykernel
- # jupyter-client
- # nbclient
- # nbconvert
- # nbformat
-jupyterlab-pygments==0.3.0
- # via nbconvert
-liccheck==0.9.2
- # via -r dev-requirements.in
-licenseheaders==0.8.8
- # via -r dev-requirements.in
-markdown-it-py==3.0.0
- # via
- # -c requirements.txt
- # mdit-py-plugins
- # myst-parser
-markupsafe==3.0.2
- # via
- # -c requirements.txt
- # jinja2
- # nbconvert
-matplotlib-inline==0.1.7
- # via
- # ipykernel
- # ipython
-mccabe==0.7.0
- # via pylint
-mdit-py-plugins==0.4.2
- # via myst-parser
-mdurl==0.1.2
- # via
- # -c requirements.txt
- # markdown-it-py
-mistune==3.0.2
- # via nbconvert
-mypy==1.18.2
- # via -r dev-requirements.in
-mypy-extensions==1.0.0
- # via
- # -c requirements.txt
- # mypy
-myst-parser==4.0.0
- # via -r dev-requirements.in
-nbclient==0.10.0
- # via
- # nbconvert
- # testbook
-nbconvert==7.16.4
- # via nbsphinx
-nbformat==5.10.4
- # via
- # nbclient
- # nbconvert
- # nbsphinx
- # nbstripout
- # testbook
-nbsphinx==0.9.5
- # via -r dev-requirements.in
-nbstripout==0.8.1
- # via -r dev-requirements.in
-nest-asyncio==1.6.0
- # via ipykernel
-nodeenv==1.9.1
- # via pre-commit
-packaging==24.1
- # via
- # -c requirements.txt
- # build
- # commitizen
- # ipykernel
- # nbconvert
- # sphinx
-pandoc==2.4
- # via -r dev-requirements.in
-pandocfilters==1.5.1
- # via nbconvert
-parso==0.8.4
- # via jedi
-pathspec==0.12.1
- # via
- # -c requirements.txt
- # mypy
- # yamllint
-pexpect==4.9.0
- # via ipython
-pip-tools==7.4.1
- # via -r dev-requirements.in
-platformdirs==4.3.6
- # via
- # -c requirements.txt
- # jupyter-core
- # pylint
- # virtualenv
-plumbum==1.9.0
- # via pandoc
-ply==3.11
- # via pandoc
-pre-commit==4.0.1
- # via -r dev-requirements.in
-pre-commit-hooks==5.0.0
- # via -r dev-requirements.in
-prompt-toolkit==3.0.36
- # via
- # ipython
- # questionary
-psutil==6.1.0
- # via
- # -c requirements.txt
- # ipykernel
-ptyprocess==0.7.0
- # via pexpect
-pure-eval==0.2.3
- # via stack-data
-pydata-sphinx-theme==0.16.0
- # via -r dev-requirements.in
-pygments==2.18.0
- # via
- # -c requirements.txt
- # accessible-pygments
- # ipython
- # nbconvert
- # pydata-sphinx-theme
- # sphinx
-pylint==3.3.1
- # via -r dev-requirements.in
-pylint-exit==1.2.0
- # via -r dev-requirements.in
-pyproject-hooks==1.2.0
- # via
- # build
- # pip-tools
-python-dateutil==2.9.0.post0
- # via
- # -c requirements.txt
- # jupyter-client
-pyyaml==6.0.2
- # via
- # -c requirements.txt
- # commitizen
- # myst-parser
- # pre-commit
- # yamllint
-pyzmq==26.2.0
- # via
- # ipykernel
- # jupyter-client
-questionary==2.0.1
- # via commitizen
-referencing==0.35.1
- # via
- # jsonschema
- # jsonschema-specifications
-regex==2024.11.6
- # via licenseheaders
-requests==2.32.3
- # via
- # -c requirements.txt
- # sphinx
-rpds-py==0.20.0
- # via
- # jsonschema
- # referencing
-ruamel-yaml==0.18.6
- # via pre-commit-hooks
-ruamel-yaml-clib==0.2.12
- # via ruamel-yaml
-ruff==0.9.2
- # via -r dev-requirements.in
-semantic-version==2.10.0
- # via liccheck
-six==1.16.0
- # via
- # -c requirements.txt
- # bleach
- # python-dateutil
-snowballstemmer==2.2.0
- # via sphinx
-soupsieve==2.6
- # via beautifulsoup4
-sphinx==8.1.3
- # via
- # -r dev-requirements.in
- # myst-parser
- # nbsphinx
- # pydata-sphinx-theme
-sphinxcontrib-applehelp==2.0.0
- # via sphinx
-sphinxcontrib-devhelp==2.0.0
- # via sphinx
-sphinxcontrib-htmlhelp==2.1.0
- # via sphinx
-sphinxcontrib-jsmath==1.0.1
- # via sphinx
-sphinxcontrib-qthelp==2.0.0
- # via sphinx
-sphinxcontrib-serializinghtml==2.0.0
- # via sphinx
-stack-data==0.6.3
- # via ipython
-termcolor==2.5.0
- # via
- # -c requirements.txt
- # commitizen
-testbook==0.4.2
- # via -r dev-requirements.in
-tinycss2==1.4.0
- # via nbconvert
-toml==0.10.2
- # via liccheck
-tomlkit==0.13.2
- # via
- # commitizen
- # pylint
-tornado==6.4.1
- # via
- # -c requirements.txt
- # ipykernel
- # jupyter-client
-traitlets==5.14.3
- # via
- # ipykernel
- # ipython
- # jupyter-client
- # jupyter-core
- # matplotlib-inline
- # nbclient
- # nbconvert
- # nbformat
- # nbsphinx
-typing-extensions==4.12.2
- # via
- # -c requirements.txt
- # mypy
- # pydata-sphinx-theme
-untokenize==0.1.1
- # via docformatter
-urllib3==2.2.3
- # via
- # -c requirements.txt
- # requests
-virtualenv==20.27.1
- # via pre-commit
-wcwidth==0.2.13
- # via prompt-toolkit
-webencodings==0.5.1
- # via
- # bleach
- # tinycss2
-wheel==0.44.0
- # via
- # -c requirements.txt
- # pip-tools
-yamllint==1.35.1
- # via -r dev-requirements.in
-
-# The following packages are considered to be unsafe in a requirements file:
-# pip
-# setuptools
diff --git a/doc/README.md b/doc/README.md
index 56089b1ac..b1bb68260 100644
--- a/doc/README.md
+++ b/doc/README.md
@@ -1,31 +1,35 @@
# :book: HTML documentation
-We use [Sphinx](https://www.sphinx-doc.org/en/master/#) to generate the [QUEENS documentation](https://queens-py.github.io/queens). It automatically builds the html documentation from the docstrings.
+We use [Sphinx](https://www.sphinx-doc.org/en/master/#) to generate the [QUEENS documentation](https://queens-py.github.io/queens).
+It automatically builds the html documentation from the docstrings.
We believe that documentation is essential and therefore welcome any improvements :blush:
## :woman_teacher: Build the documentation
-To build the documentation, you first need to set up a QUEENS environment as described in the [README.md](../README.md).
-In this Python environment, you also need to install packages for QUEENS development and tutorials and register the environment as a Jupyter kernel:
+To build the documentation, first set up the QUEENS development environment as described in the
+[README](../README.md).
+
+Next, register the environment as a Jupyter kernel such that the tutorial notbooks can be run while
+building the documentation:
```bash
-pip install -e .[safe_develop,tutorial]
-python -m ipykernel install --user --name queens --display-name "Python (queens)"
+pixi run -e dev python -m ipykernel install --user --name queens --display-name "Python (queens)"
```
-When building the documentation on your machine for the first time or after adding new modules or classes to QUEENS, one needs to first rebuild the `autodoc index` by running:
+When building the documentation on your machine for the first time or after adding new modules or
+classes to QUEENS, one needs to first rebuild the `autodoc index` by running:
```bash
-cd
-sphinx-apidoc -o doc/source src/ -fMT
+cd
+pixi run -e dev sphinx-apidoc -o doc/source src/ -fMT
```
To actually build the html-documentation, navigate into the doc folder and run the make command:
```bash
cd doc
-sphinx-build -b html -d build/doctrees source build/html -W
+pixi run -e dev sphinx-build -b html -d build/doctrees source build/html -W
```
You can now view the documentation in your favorite browser by opening `build/html/index.html`.
diff --git a/doc/source/_ext/create_documentation_files.py b/doc/source/_ext/create_documentation_files.py
index 667e82820..8f2280d3f 100644
--- a/doc/source/_ext/create_documentation_files.py
+++ b/doc/source/_ext/create_documentation_files.py
@@ -24,7 +24,7 @@
import requests
from queens.utils.injector import inject
-from queens.utils.path import relative_path_from_root
+from test_utils.path import relative_path_from_root
sys.path.insert(1, str(relative_path_from_root("test_utils").resolve()))
from get_queens_example_from_readme import ( # pylint: disable=import-error, wrong-import-position,wrong-import-order
diff --git a/doc/source/_ext/templates/introduction.md.j2 b/doc/source/_ext/templates/introduction.md.j2
index 91cc48686..e89524f13 100644
--- a/doc/source/_ext/templates/introduction.md.j2
+++ b/doc/source/_ext/templates/introduction.md.j2
@@ -26,14 +26,69 @@
{{ extract_from_markdown_by_marker("installation", readme_path) }}
-For development, install the additional required packages via:
-{{ extract_from_markdown_by_marker("installation_develop", contributing_path) }}
+### User-managed environments
-> Note: We recommend using conda/mamba environments and installing performance-critical packages (e.g., numpy, scipy, ...) using `conda install .` The reason for this is the choice of BLAS library (linear algebra packages). Conda (depending on the channel) installs numpy and the [mkl](https://www.intel.com/content/www/us/en/developer/articles/technical/intel-mkl-and-third-party-applications-how-to-use-them-together.html) library from Intel, in contrast to pip which defaults back to the linear algebra package installed on the system. According to certain benchmarks ([here](http://markus-beuckelmann.de/blog/boosting-numpy-blas.html) or [here](https://medium.com/analytics-vidhya/why-conda-install-instead-of-pip-install-ba4c6826a0ae)), the mkl library is able to outperform other linear algebra libraries, especially on Intel devices. Particularly for use cases where linear algebra operations dominate the computational costs, the benefit can be huge.
+QUEENS should be installed into an isolated Python environment rather than into your system Python.
+The examples below use different environment managers, but the idea is always the same:
+1. Create an environment with Python 3.12 or newer.
+2. Activate that environment.
+3. Check that `python` points to the environment and has the expected version.
+4. Install QUEENS from the repository root with `python -m pip install .`.
+
+#### `venv`
+
+Use `venv` if you already have Python 3.12 installed on your system:
+
+```bash
+git clone https://github.com/queens-py/queens.git
+cd queens
+python3.12 -m venv .venv
+source .venv/bin/activate
+python --version
+python -m pip install --upgrade pip
+python -m pip install .
+```
+
+After activation, `python --version` should report Python 3.12 or newer. If `python3.12` is not
+available, install Python 3.12 first with your system package manager or another Python installer.
+
+#### `uv venv`
+
+If you use [uv](https://docs.astral.sh/uv/), let uv install and select Python 3.12:
+
+```bash
+git clone https://github.com/queens-py/queens.git
+cd queens
+uv python install 3.12
+uv venv --python 3.12
+source .venv/bin/activate
+python --version
+python -m pip install .
+```
+
+#### Conda
+
+Conda-style environment managers can create an environment with the required Python version directly:
+
+```bash
+git clone https://github.com/queens-py/queens.git
+cd queens
+conda create -n queens python=3.12
+conda activate queens
+python --version
+python -m pip install .
+```
+
+The same pattern also applies to compatible tools such as Mamba or Micromamba.
+
+For development, prefer the locked Pixi environments shown above because they keep dependency
+resolution and editable installs aligned with CI.
+
+### Testing installation
To test for a successful installation, run the test suite:
```
-pytest -n
+pixi run -e dev pytest
```
Consult the [documentation of QUEENS tests](testing) for more details on testing.
diff --git a/doc/source/conf.py b/doc/source/conf.py
index 002427a3f..f4f6294dd 100644
--- a/doc/source/conf.py
+++ b/doc/source/conf.py
@@ -153,6 +153,11 @@
# Warn about all references where the target cannot be found
nitpicky = True
+# Ignore TypeVar references used for generic type annotations.
+nitpick_ignore = [
+ ("py:obj", "queens.variational_distributions._variational_distribution.V"),
+]
+
# Suppress specific warnings
suppress_warnings = ["misc.copy_overwrite", "ref.attr", "ref.class", "ref.func"]
diff --git a/doc/source/faqs/requirements.md b/doc/source/faqs/requirements.md
index 4d7be5161..a24ae8e76 100644
--- a/doc/source/faqs/requirements.md
+++ b/doc/source/faqs/requirements.md
@@ -2,6 +2,19 @@
## What are the requirements for QUEENS?
-Currently, QUEENS is only tested on UNIX systems. Besides Python, QUEENS requires [rsync](https://rsync.samba.org/) in order to copy simulation files.
+Currently, QUEENS is only tested on UNIX systems (Ubuntu and macOS on arm64). Besides Python 3.12
+or newer, QUEENS requires [rsync](https://rsync.samba.org/) in order to copy simulation files.
-The Python dependencies for QUEENS can be found in the `requirements.txt` file. There are a lot of them and we are working on reducing them, or at least making them optional.
+QUEENS declares its Python dependencies in `pyproject.toml`.
+For development and CI-like reproducibility, dependencies are managed with Pixi. The Pixi
+environments are declared in `pyproject.toml` and locked in `pixi.lock`:
+
+- `default`: core QUEENS dependencies
+- `all`: runtime extras without development tools
+- `dev`: full contributor setup, including development tools, tutorials, and 4C support
+
+For installation information see the [README.md](https://github.com/queens-py/queens/blob/main/README.md).
+
+## Changing the requirements
+For instructions on adding, removing, or updating dependencies, see the
+[contributing guide](../contributing.md).
diff --git a/environment.yml b/environment.yml
deleted file mode 100644
index e3d344481..000000000
--- a/environment.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-name: queens
-channels:
- - conda-forge
-# We want to have a reproducible setup, so we don't want default channels,
-# which may be different for different users. All required channels should
-# be listed explicitly here.
- - nodefaults
-dependencies:
- - python==3.11
-# to ensure that performance optimized backends are used,
-# the following packages are installed from conda
-# for example BLAS libraries like Intel MKL for numpy
- - cython==3.0.11
- - numba==0.60.0
- - numpy==1.26.4
- - pandas==2.2.3
- - scikit-learn==1.5.2
- - scipy==1.14.1
- - libopenblas==0.3.28
-# required for jupyter notebook integration into the sphinx documentation
- - pandoc
-# required because newer versions have deprecated the pkg_resources module, which is needed for
-# liccheck==0.9.2, gpflow==2.9.2
- - setuptools<82
-# Only install pip-tools via pip itself since
-# all other pip dependencies should be managed
-# via pip-tools in the requirements.in files
- - pip
- - pip:
- - pip-tools
diff --git a/pixi.lock b/pixi.lock
new file mode 100644
index 000000000..abd507dca
--- /dev/null
+++ b/pixi.lock
@@ -0,0 +1,16376 @@
+version: 7
+platforms:
+- name: linux-64
+- name: osx-arm64
+environments:
+ all:
+ channels:
+ - url: https://conda.anaconda.org/conda-forge/
+ - url: https://conda.anaconda.org/nodefaults/
+ indexes:
+ - https://pypi.org/simple
+ packages:
+ linux-64:
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-7_kmp_llvm.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.13.5-py312h5d8c7f2_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.15.3-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.10.1-ha62d5e7_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.9.13-h2c9d079_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.12.6-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.2-h8b1a151_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.7.0-h9b893ba_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.10.13-h4bacb7b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.26.3-h692f434_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.15.2-hc1936db_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.12.2-he6ee468_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.4-h8b1a151_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.10-h8b1a151_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.38.3-h745e52d_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.747-h41c0014_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.16.2-h206d751_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.13.3-hed0cdb0_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.16.0-hdd73cc9_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.12.0-ha7a2c86_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.14.0-h52c5a47_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.5.0-py312h90b7ffd_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/bcrypt-5.0.0-py312h868fb18_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-default_hfdba357_102.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.306-mkl.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.11.0-6_hcf00494_mkl.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.2.0-hed03a55_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.2.0-hb03c661_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py312hdb49522_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py312h460c074_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.5-py312h4f23490_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/cli11-2.6.2-h54a6638_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-15.2.0-h53410ce_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py312h0a2e395_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-48.0.0-py312ha4b625e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.28-hac629b4_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/cytoolz-1.1.0-py312h4c3975b_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h24cb091_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/dm-tree-0.1.10-py312hecca40a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.4.0-hecca717_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-5.0.1-hc65338a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-abi-5.0.1.80-hf414acd_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-hb03c661_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.8.0-hecca717_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-8.1.1-gpl_hee00b0e_901.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/flatbuffers-25.9.23-hb7d4c21_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-12.1.0-hff5e90c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.62.1-py312h8a5da7c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.3-ha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.7.0-py312h447239a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-15.2.0-h0dff253_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.2.0-he0086c7_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.6-h2b0a6b4_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-hd590300_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gl2ps-1.4.2-h36e74d4_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/glew-2.3.0-h71661d4_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.88.1-hee1de02_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/glslang-16.3.0-h96af755_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.3.0-py312hcaba1f9_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-hecca717_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-14.1.2-h8b86629_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/grpcio-1.78.1-py312h39ee1c6_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.52-ha5ea40c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx-15.2.0-h76987e4_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-15.2.0-hda75c37_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gymnasium-1.2.3-np2py312hcdd156d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/h5py-3.16.0-nompi_py312ha4f8f14_102.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.2.0-h6083320_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h19486de_109.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/intel-gmmlib-22.10.0-hb700be7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/intel-media-driver-26.1.6-hecca717_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.9.2-cpu_py312hc81e8bd_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/jsoncpp-1.9.6-hf42df4d_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.0-py312h0a2e395_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-ha1258a1_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.19.1-h0c24ade_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/level-zero-1.28.4-hb700be7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20260107.1-cxx17_h7b12aa8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.5-h088129d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-24.0.0-h0935d00_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-24.0.0-h635bf11_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-24.0.0-h53684a4_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-24.0.0-h635bf11_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-24.0.0-hb4dd7c2_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libass-0.17.4-h96ad9f0_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-6_h5875eb1_mkl.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-1.90.0-hd24cca6_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-devel-1.90.0-hfcd1e18_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-headers-1.90.0-ha770c72_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-hb03c661_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-hb03c661_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-hb03c661_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.77-hd0affe5_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-6_hfef963f_mkl.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-22.1.5-default_h746c552_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.20.0-hcf29cc6_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libdovi-3.3.2-ha23c83e_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.125-hb03c661_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-devel-1.7.0-ha4b6fd6_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.0-hecca717_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.5.0-he200343_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h5fbf134_12.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-devel-1.7.0-ha4b6fd6_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.88.1-h0d30a3d_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.3-h5888daf_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-devel-1.7.0-ha4b6fd6_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-3.3.0-h25dbb67_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-3.3.0-hdbdcf42_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.78.1-h1d1128b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.13.0-default_he001693_1000.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.4.0-h10be129_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.4.1-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.2-h174a0a3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-6_h5e43f62_mkl.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.11.0-6_hdba1596_mkl.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm22-22.1.5-hf7376ad_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.3-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.10.0-nompi_hb6f1874_104.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.68.1-h877daf1_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.8-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-hd0c01bc_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-devel-1.7.0-ha4b6fd6_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.26.0-h9692893_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.26.0-ha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-2026.0.0-hb56ce9e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-batch-plugin-2026.0.0-hd85de46_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-plugin-2026.0.0-hd85de46_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-hetero-plugin-2026.0.0-hd41364c_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-cpu-plugin-2026.0.0-hb56ce9e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-gpu-plugin-2026.0.0-hb56ce9e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-npu-plugin-2026.0.0-hb56ce9e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-ir-frontend-2026.0.0-hd41364c_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-onnx-frontend-2026.0.0-h7a07914_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-paddle-frontend-2026.0.0-h7a07914_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-pytorch-frontend-2026.0.0-hecca717_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-frontend-2026.0.0-h78e8023_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-lite-frontend-2026.0.0-hecca717_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.6.1-h280c20c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-24.0.0-h7376487_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.18-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libplacebo-7.360.1-h9eeb4b2_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.58-h421ea60_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.3-h9abb657_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.33.5-h2b00c02_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.11.05-h0dc7533_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.62.1-h4c96295_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-15.2.0-h90f66d4_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc7d488a_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.21-h280c20c_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.1-h0c1763c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.13-hd0affe5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libtensorflow_cc-2.19.1-cpu_ha812d39_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libtensorflow_framework-2.19.1-cpu_h0a5eddc_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libtheora-1.1.1-h4ab18f5_1006.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.22.0-h7d032f7_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libtorch-2.10.0-cpu_mkl_h7058990_103.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.13-hd0affe5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libunwind-1.8.3-h65a8314_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/liburing-2.14-hb700be7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libusb-1.0.29-h73b1eb8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.11.3-hfe17d71_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42-h5347b49_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb03c661_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libva-2.23.0-he1eb515_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h54a6638_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libvpl-2.16.0-h54a6638_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libvpx-1.15.2-hecca717_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libvulkan-loader-1.4.341.0-h5279c79_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.13.1-hca5e8e5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.3-hca6bf5a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.3-h49c6c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.43-h711ed8c_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.2-h6991a6a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-22.1.5-h4922eb0_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.47.0-py312h7424e68_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py312h3d67a73_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py312h8a5da7c_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.10.9-py312h7900ff3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.9-py312he3d6523_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/mesalib-26.0.3-h8cca3c9_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2025.3.1-h0e700b2_12.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2025.3.1-ha770c72_12.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2025.3.1-hf2ce2f3_12.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-service-2.7.1-py312h4307cf8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.4-np2py312h0f77346_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.4.0-he0a73b1_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.2-he0a73b1_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.1.2-py312hd9148b4_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.7.1-py312h8a5da7c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.19-py312h5253ce2_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/netcdf4-1.7.4-nompi_py311ha0596eb_107.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/numba-0.65.1-py312hd1dde6f_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/numpoly-1.3.9-py312h4c3975b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.4-py312h33ff503_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.3-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/onednn-3.11.1-threadpool_h77e0eb8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/onednn-cpu-threadpool-3.11.1-threadpool_h3c4d5c8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/onemkl-license-2025.3.1-hf2ce2f3_12.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2025.06.13-hecca717_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/openh264-2.6.0-hc22cd8d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.13-hbde042b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.2-h35e630c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/optree-0.19.1-py312hd9148b4_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.3.0-h21090e2_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.3-py312h8ecdadd_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hda50119_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.2.0-py312h50c33e8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.8.1-he0df7b0_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.3.1-py312h178313f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-6.33.5-py312ha7b3241_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py312h5253ce2_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pugixml-1.15-h3f63f65_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-h9a6aba3_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-24.0.0-py312h7900ff3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-24.0.0-py312h2054cf2_0_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.6.2-py312h587e1b2_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.11.0-py312h50ac2ff_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pytensor-2.38.3-py312hc487a0d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pytensor-base-2.38.3-np2py312h0f77346_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.13-hd63d673_0_cpython.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pytorch-2.10.0-cpu_mkl_py312_hca44ed5_103.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py312h8a5da7c_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.11.0-pl5321h16c4a6b_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.11.05-h5301d42_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.7.2-hc5a330e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.8.0-np2py312h3226591_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.17.1-py312h54fa4ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.56-h54a6638_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.4.8-hdeec2a5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/shaderc-2026.2-h718be3e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/sleef-3.9.0-ha0421bc_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h03e3b7b_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/spirv-tools-2026.1-hb700be7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.53.1-hbc0de68_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.6-py312h4f23490_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-4.0.1-hecca717_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2023.0.0-hab88423_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-devel-2023.0.0-hab88423_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/tensorboard-data-server-0.7.0-py312h4eba8b5_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/tensorflow-2.19.1-cpu_py312h3336143_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/tensorflow-base-2.19.1-cpu_py312h9edca52_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.5-py312h4c3975b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-17.0.1-py312h4c3975b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/utfcpp-4.09-ha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/viskores-1.1.1-cpu_hc82bd48_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-9.6.1-py312h244374b_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-base-9.6.1-py312hb8f95c7_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-io-ffmpeg-9.6.1-py312hf1e11e2_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.25.0-hd6090a7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.1.2-py312h4c3975b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/x264-1!164.3095-h166bdaf_2.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h924138e_3.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.1-h4f16b4b_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-cursor-0.1.6-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-image-0.4.0-hb711507_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.1-hb711507_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.10-hb711507_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.2-hb711507_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.47-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.7-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.6-hecca717_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.5-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxscrnsaver-1.2.4-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxshmfence-1.3.3-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.7-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.23.0-py312h8a5da7c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/zfp-1.0.1-h909a3a2_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.2-h25fd6f3_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.3-hceb46e0_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/_x86_64-microarch-level-1-3_x86_64.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/absl-py-2.4.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-49.0-unix_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.6.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/arviz-0.23.4-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/astunparse-1.6.3-pyhd8ed1ab_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.9.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.4.22-hbd8a1cb_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cachetools-6.2.6-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.4.22-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/chaospy-4.3.20-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/check_shapes-1.1.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.3-pyhc90fa1f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-pyhcf101f3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cons-0.4.7-pyhd8ed1ab_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.13-py312hd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cyclopts-4.11.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.3.0-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.3.0-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/dask-jobqueue-0.9.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.4.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.3.0-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/docstring_parser-0.18.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.22.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/dropstackframe-0.1.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/etuples-0.3.10-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/fabric-3.2.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/farama-notifications-0.0.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.4.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/gast-0.7.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/google-pasta-0.2.0-pyhd8ed1ab_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/gpflow-2.9.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.8.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.13-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.8.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.8.0-h8f7a5dd_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/invoke-2.2.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.9.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jax-jumpy-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/keras-3.14.1-pyh753f3f9_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.3.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.2.0-hcc6f6b0_119.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/libml_dtypes-headers-0.5.4-h707e725_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-15.2.0-hd446a21_119.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/logical-unification-0.4.7-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.10.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/meshio-5.3.5-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/minikanren-1.0.5-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/multipledispatch-0.6.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/namex-0.1.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.21.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.2-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/paramiko-5.0.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pathos-0.3.5-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pip-26.1.1-pyh8b19718_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.6-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.6.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pooch-1.9.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pox-0.3.7-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ppft-1.7.8-pyhcf101f3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-3.0.1-pyh7a1b43c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-11-hc364b38_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-3.0.1-pyhc7ab6ef_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pydoe-0.9.9-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pymc-5.28.5-h73fd4fa_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pymc-base-5.28.5-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-25.9.23-pyh1e1bc0e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.13-hd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.21-pyhbacfb6d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pyvista-0.48.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/rich-15.0.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/rich-rst-1.3.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/salib-1.5.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/scikit-fem-12.0.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/scooby-0.11.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-81.0.0-pyh332efcf_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/stable-baselines3-2.8.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.14.0-pyh2585a3b_106.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.10.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tblib-3.2.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tensorboard-2.19.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tensorflow-probability-0.25.0-pyh8b42bfb_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/termcolor-3.3.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tf-keras-2.19.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/toolz-1.1.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/wayland-protocols-1.47-hd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.1.8-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.47.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/wslink-2.5.6-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2026.4.0-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-einstats-0.10.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2026.3.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.1-pyhcf101f3_0.conda
+ - pypi: git+https://github.com/nchopin/particles#f71e94a21a11c73b58e2d694775b1b1d379b8854
+ - pypi: https://files.pythonhosted.org/packages/02/c3/253a89ee03fc9b9682f1541728eb66db7db22148cd94f89ab22528cd1e1b/deprecation-2.1.0-py2.py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/39/1f/54ddd9171840bbf2437287ffab18268d7ccbca7752a7f290252ddabbcef8/numpysane-0.42.tar.gz
+ - pypi: https://files.pythonhosted.org/packages/4a/49/bb935b2e68cf31e2b2face9d0841ac97447b6d0387d0c2d2255c7a2867da/scikit_activeml-1.0.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/53/f6/136e03239c2205497b482b04e05c961add0638e92d26b0d13b6499fedb40/diversipy-0.9.tar.gz
+ - pypi: https://files.pythonhosted.org/packages/7c/45/7c7a8bcbfe68595c6ad82612dae409bf8c2f7dbad7cb0a30ad0637ce828f/jsonschema_rs-0.46.4-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
+ - pypi: https://files.pythonhosted.org/packages/7c/e9/9876105d1c238f82b44211d73913784ce8f53e382960b0858c0e38ac2ced/gnuplotlib-0.46.tar.gz
+ - pypi: https://files.pythonhosted.org/packages/af/cb/87da89ae11d0de562928a7e8ca40d5daee55049408019d5d1b918af6800b/rapidyaml-0.12.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
+ - pypi: https://files.pythonhosted.org/packages/b7/c0/4bc973defd1270b89ccaae04cef0d5fa3ea85b59b108ad2c08aeea9afb76/makefun-1.16.0-py2.py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/cc/1e/3fbe2fa1e8cebd62f3bb7d3321cff1640aca2e240b51d9bd624aad949260/regex-2026.5.9-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
+ - pypi: https://files.pythonhosted.org/packages/f8/cb/91d8f07f08e86f03e0e9b5ba9db350d751119c9ba27eff4c418e4f27ee9c/fourcipp-1.103.0-py3-none-any.whl
+ osx-arm64:
+ - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/absl-py-2.4.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-49.0-unix_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.6.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/arviz-0.23.4-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/astunparse-1.6.3-pyhd8ed1ab_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.9.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.4.22-hbd8a1cb_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cachetools-6.2.6-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.4.22-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/chaospy-4.3.20-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/check_shapes-1.1.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.3-pyhc90fa1f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-pyhcf101f3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt22_osx-arm64-22.1.5-h7e67a1e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-arm64-22.1.5-hce30654_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cons-0.4.7-pyhd8ed1ab_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.13-py312hd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cyclopts-4.11.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.3.0-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.3.0-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/dask-jobqueue-0.9.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.4.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.3.0-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/docstring_parser-0.18.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.22.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/dropstackframe-0.1.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/etuples-0.3.10-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/fabric-3.2.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/farama-notifications-0.0.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.4.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/gast-0.7.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/google-pasta-0.2.0-pyhd8ed1ab_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/gpflow-2.9.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.8.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.13-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.8.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.8.0-h8f7a5dd_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/invoke-2.2.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.9.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jax-jumpy-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/keras-3.14.1-pyh753f3f9_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.3.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/libcxx-headers-22.1.5-h707e725_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/libml_dtypes-headers-0.5.4-h707e725_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/logical-unification-0.4.7-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.10.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/meshio-5.3.5-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/minikanren-1.0.5-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/multipledispatch-0.6.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/namex-0.1.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.21.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/numpoly-1.2.14-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.2-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/paramiko-5.0.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pathos-0.3.5-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pip-26.1.1-pyh8b19718_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.6-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.6.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pooch-1.9.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pox-0.3.7-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ppft-1.7.8-pyhcf101f3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-3.0.1-pyh7a1b43c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-11-hc364b38_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-3.0.1-pyhc7ab6ef_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pydoe-0.9.9-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pymc-5.28.5-h73fd4fa_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pymc-base-5.28.5-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-25.9.23-pyh1e1bc0e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.13-hd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.21-pyhbacfb6d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pyvista-0.48.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/rich-15.0.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/rich-rst-1.3.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/salib-1.5.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/scikit-fem-12.0.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/scooby-0.11.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-81.0.0-pyh332efcf_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/stable-baselines3-2.8.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.14.0-pyh2585a3b_106.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.10.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tblib-3.2.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tensorboard-2.19.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tensorflow-probability-0.25.0-pyh8b42bfb_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/termcolor-3.3.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tf-keras-2.19.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/toolz-1.1.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.1.8-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.47.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/wslink-2.5.6-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2026.4.0-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-einstats-0.10.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2026.3.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/_openmp_mutex-4.5-7_kmp_llvm.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.13.5-py312h9f8c436_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.10.1-ha7d4cc1_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.9.13-h6ee9776_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.12.6-hc919400_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.2-h3e7f9b5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.7.0-h351c84d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.10.13-h95cdebe_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.26.3-h4137820_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.15.2-h8860bc9_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.12.2-h07b101a_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.4-h16f91aa_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.10-h3e7f9b5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.38.3-hba17502_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.747-h30a6df1_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.16.2-he5ae378_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.13.3-h810541e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.16.0-hc57151b_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.12.0-he467506_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.14.0-hf8a9d22_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/backports.zstd-1.5.0-py312h87c4bb7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bcrypt-5.0.0-py312h6ef9ec0_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/blas-2.307-accelerate.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/blas-devel-3.11.0-7_h55bc449_accelerate.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/blosc-1.21.6-h7dd00d9_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.2.0-h7d5ae5b_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.2.0-hc919400_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.2.0-py312h0dfefe5_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_9.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.6-hc919400_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-he0f2337_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools-1030.6.3-llvm22_1_hbe26303_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_impl_osx-arm64-1030.6.3-llvm22_1_hb5e89dc_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-2.0.0-py312h1b4d9a2_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cftime-1.6.5-py312hf57c059_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-22-22.1.5-default_hd632d02_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-22.1.5-default_cfg_hb78b91e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-scan-deps-22.1.5-default_h8e162e0_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_impl_osx-arm64-22.1.5-default_h17d1ed9_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx-22.1.5-default_cfg_h76039ee_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_impl_osx-arm64-22.1.5-default_h17d1ed9_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cli11-2.6.2-h784d473_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/compiler-rt-22.1.5-hce30654_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/compiler-rt22-22.1.5-hd34ed20_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.3.3-py312h3093aea_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-48.0.0-py312h1238841_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cyrus-sasl-2.1.28-hb961e35_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cytoolz-1.1.0-py312h2bbb03f_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dbus-1.16.2-h3ff7a7c_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dm-tree-0.1.10-py312h5ac6f9e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/double-conversion-3.4.0-hf6b4638_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/eigen-5.0.1-h44d0d2d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/eigen-abi-5.0.1.100-h485a483_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-hc919400_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.8.0-hf6b4638_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ffmpeg-8.1.1-gpl_h246f3d5_101.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/flatbuffers-25.9.23-h9e8ef45_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fmt-12.1.0-h403dcb5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.17.1-h2b252f5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fonttools-4.62.1-py312h04c11ed_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.14.3-hce30654_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.16-hc919400_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.7.0-py312h512c567_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.44.6-h4e57454_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/giflib-5.2.2-h93a5062_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glew-2.3.0-hf163413_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.88.1-h37541a8_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glslang-16.3.0-h7cb4797_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.3.0-py312he1ee7cc_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-hec049ff_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-14.1.2-hec8c438_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/grpcio-1.78.1-py312h0c23288_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.52-hc0f3e19_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gymnasium-1.2.3-np2py312hcf3ad39_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/h5py-3.16.0-nompi_py312hdd01ddf_102.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-14.2.0-h3103d1b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf4-4.2.15-h2ee6834_7.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-1.14.6-nompi_had3affe_109.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-78.3-hef89b57_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.9.2-cpu_py312h8d61f43_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsoncpp-1.9.6-h726d253_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/kiwisolver-1.5.0-py312h3093aea_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.22.2-h385eeb1_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lame-3.100-h1a8c8d9_1003.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.19.1-hdfa7624_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64-956.6-llvm22_1_h5b97f1b_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-956.6-llvm22_1_h692d5aa_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.1.0-h1eee2c3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20260107.1-cxx17_h2062a1b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libaec-1.1.5-h8664d51_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-24.0.0-h37fbca7_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-24.0.0-hee8fe31_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-compute-24.0.0-h3b6a98a_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-24.0.0-hee8fe31_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-24.0.0-h05be00f_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libass-0.17.4-hcbd7ca7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.11.0-7_h3d1d584_accelerate.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-1.90.0-h0419b56_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-devel-1.90.0-hf450f58_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-headers-1.90.0-hce30654_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.2.0-hc919400_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.2.0-hc919400_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.2.0-hc919400_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.11.0-7_h752f6bc_accelerate.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang-cpp22.1-22.1.5-default_h8e162e0_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang13-22.1.5-default_h6dd9417_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcompiler-rt-22.1.5-hd34ed20_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.20.0-hd5a2499_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-22.1.5-h55c6f16_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-devel-22.1.5-h6dc3340_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.25-hc11a715_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdovi-3.3.2-h78f8ca3_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.8.0-hf6b4638_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-hcf2aa1b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.14.3-hce30654_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.14.3-hdfa99f5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgcc-15.2.0-hcbb3090_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-h05bcc79_12.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-h07b0088_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-hdae7583_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.88.1-ha08bb59_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-3.3.0-he41eb1d_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-3.3.0-ha114238_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.78.1-h3e3f78d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libhwloc-2.13.0-default_ha97f43a_1000.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libhwy-1.4.0-ha332bbd_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-h23cfdf5_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.4.1-h84a0fba_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjxl-0.11.2-h934fa54_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.11.0-7_hcb0d94e_accelerate.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapacke-3.11.0-7_hbdd07e9_accelerate.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm22-22.1.5-h89af1be_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.3-h8088a28_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.8.3-h8088a28_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnetcdf-4.10.0-nompi_h7a8d41e_104.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.68.1-h8f3e76b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libntlm-1.8-h5505292_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h48c0fde_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.26.0-h08d5cc3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.26.0-hce30654_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-2026.0.0-h3e6d54f_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-arm-cpu-plugin-2026.0.0-h3e6d54f_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-auto-batch-plugin-2026.0.0-h2406d2e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-auto-plugin-2026.0.0-h2406d2e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-hetero-plugin-2026.0.0-h85cbfa6_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-ir-frontend-2026.0.0-h85cbfa6_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-onnx-frontend-2026.0.0-h41365f2_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-paddle-frontend-2026.0.0-h41365f2_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-pytorch-frontend-2026.0.0-hf6b4638_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-tensorflow-frontend-2026.0.0-hc295da0_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-tensorflow-lite-frontend-2026.0.0-hf6b4638_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.6.1-h1a92334_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-24.0.0-h16c0493_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libplacebo-7.360.1-h176d363_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.58-h132b30e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpq-18.3-hd341ff2_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-6.33.5-h4a5acfd_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2025.11.05-h4c27e2a_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.62.1-he8aa2a2_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsigtool-0.1.3-h98dc951_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.21-h1a92334_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.53.1-h1b79a29_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h1590b86_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtensorflow_cc-2.19.1-cpu_he004e32_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtensorflow_framework-2.19.1-cpu_h3441331_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtheora-1.1.1-h99b78c6_1006.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.22.0-h1fb9c8a_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.1-h4030677_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtorch-2.10.0-cpu_generic_hf7cc835_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libusb-1.0.29-hbc156a2_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.11.3-h2431656_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.51.0-h6caf38d_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvorbis-1.3.7-h81086ad_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvpx-1.15.2-ha759d40_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvulkan-loader-1.4.341.0-h3feff0a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.3-h5ef1a60_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.3-h5654f7c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzip-1.11.2-h1336266_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.2-h8088a28_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-22.1.5-hc7d1edf_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-22-22.1.5-hb545844_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-22.1.5-hd34ed20_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvmlite-0.47.0-py312h7ca588d_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-4.4.5-py312h2b25a0d_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.3-py312h04c11ed_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-3.10.9-py312h1f38498_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.9-py312hf3defc7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mesalib-26.0.3-h6616f17_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.5.4-np2py312h60fbb24_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.4.0-h169892a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.2-h6bc93b0_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/msgpack-python-1.1.2-py312h84eede6_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.7.1-py312h43af8aa_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.19-py312hb3ab3e3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.6-h1d4f5a5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/netcdf4-1.7.4-nompi_py311h8d5b1ca_107.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.12.0-h784d473_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numba-0.65.1-py312h2d3d6e9_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.4.4-py312ha003a3f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openh264-2.6.0-hb5b2745_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.4-hd9e9057_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openldap-2.6.13-hf7f56bc_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.2-hd24854e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/optree-0.19.1-py312h766f71e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.3.0-hd11884d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-3.0.3-py312h6510ced_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.4-hf80efc4_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.47-h30297fc_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.2.0-py312h4e908a4_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.4-h81086ad_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/proj-9.8.1-ha88f16d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.3.1-py312h998013c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-6.33.5-py312h857ab9a_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.2.2-py312hb3ab3e3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pugixml-1.15-hd3d436d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-24.0.0-py312h1f38498_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-24.0.0-py312h21b41d0_0_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pynacl-1.6.2-py312h6831925_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytensor-2.38.3-py312ha7b44dd_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytensor-base-2.38.3-np2py312h60fbb24_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.13-h8561d8f_0_cpython.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytorch-2.10.0-cpu_generic_py312_h2470ad0_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.3-py312h04c11ed_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/qhull-2020.2-h420ef59_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/qt6-main-6.11.1-pl5321h01fc3ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2025.11.05-ha480c28_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.3-h46df422_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scikit-learn-1.8.0-np2py312he5ca3e3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.17.1-py312h0f234b1_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.32.56-h248ca61_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl3-3.4.8-h6fa9c73_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/shaderc-2026.2-hf31e910_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sigtool-codesign-0.1.3-h98dc951_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sleef-3.9.0-hb028509_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.2-hada39a4_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/spirv-tools-2026.1-h4ddebb9_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlite-3.53.1-h85ec8f2_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/statsmodels-0.14.6-py312ha11c99a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-4.0.1-h0cb729a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tapi-1600.0.11.8-h997e182_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tbb-2023.0.0-he0260a5_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tbb-devel-2023.0.0-h7f394f9_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tensorboard-data-server-0.7.0-py312h9536bd2_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tensorflow-2.19.1-cpu_py312hc65d1cb_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tensorflow-base-2.19.1-cpu_py312h66a5cad_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h010d191_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.5-py312h2bbb03f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/unicodedata2-17.0.1-py312h2bbb03f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/utfcpp-4.09-hce30654_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/viskores-1.1.1-cpu_h841489f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/vtk-9.6.1-py312hee49c5b_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/vtk-base-9.6.1-py312h12f95e6_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/vtk-io-ffmpeg-9.6.1-py312h199f87a_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-2.1.2-py312h2bbb03f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/x264-1!164.3095-h57fd34a_2.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/x265-3.5-hbc6ce65_3.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-hc919400_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hc919400_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h925e9cb_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.23.0-py312h04c11ed_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zfp-1.0.1-ha86207d_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.2-h8088a28_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-ng-2.3.3-hed4e4f5_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hbf9d68e_6.conda
+ - pypi: git+https://github.com/nchopin/particles#f71e94a21a11c73b58e2d694775b1b1d379b8854
+ - pypi: https://files.pythonhosted.org/packages/02/c3/253a89ee03fc9b9682f1541728eb66db7db22148cd94f89ab22528cd1e1b/deprecation-2.1.0-py2.py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/39/1f/54ddd9171840bbf2437287ffab18268d7ccbca7752a7f290252ddabbcef8/numpysane-0.42.tar.gz
+ - pypi: https://files.pythonhosted.org/packages/44/ca/2ecd4529be078797bda8d662d1ecb67b1bb884ee7531a4b1646162d21658/jsonschema_rs-0.46.4-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
+ - pypi: https://files.pythonhosted.org/packages/4a/49/bb935b2e68cf31e2b2face9d0841ac97447b6d0387d0c2d2255c7a2867da/scikit_activeml-1.0.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/53/f6/136e03239c2205497b482b04e05c961add0638e92d26b0d13b6499fedb40/diversipy-0.9.tar.gz
+ - pypi: https://files.pythonhosted.org/packages/54/4b/ee27938d1b2c443e89a9a10e00d2d19aa5ee300cd3d61140644e93bb083e/regex-2026.5.9-cp312-cp312-macosx_11_0_arm64.whl
+ - pypi: https://files.pythonhosted.org/packages/7c/e9/9876105d1c238f82b44211d73913784ce8f53e382960b0858c0e38ac2ced/gnuplotlib-0.46.tar.gz
+ - pypi: https://files.pythonhosted.org/packages/90/d6/42d441eeceac1d8fc7d2a7480654db661282dd1f94deef344c5421ba0c3c/rapidyaml-0.12.1-cp312-cp312-macosx_11_0_arm64.whl
+ - pypi: https://files.pythonhosted.org/packages/b7/c0/4bc973defd1270b89ccaae04cef0d5fa3ea85b59b108ad2c08aeea9afb76/makefun-1.16.0-py2.py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/f8/cb/91d8f07f08e86f03e0e9b5ba9db350d751119c9ba27eff4c418e4f27ee9c/fourcipp-1.103.0-py3-none-any.whl
+ default:
+ channels:
+ - url: https://conda.anaconda.org/conda-forge/
+ - url: https://conda.anaconda.org/nodefaults/
+ indexes:
+ - https://pypi.org/simple
+ packages:
+ linux-64:
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-7_kmp_llvm.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.13.5-py312h5d8c7f2_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.15.3-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.10.1-ha62d5e7_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.9.13-h2c9d079_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.12.6-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.2-h8b1a151_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.7.0-h9b893ba_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.10.13-h4bacb7b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.26.3-h692f434_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.15.2-hc1936db_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.12.2-he6ee468_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.4-h8b1a151_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.10-h8b1a151_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.38.3-h745e52d_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.747-h41c0014_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.16.2-h206d751_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.13.3-hed0cdb0_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.16.0-hdd73cc9_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.12.0-ha7a2c86_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.14.0-h52c5a47_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.5.0-py312h90b7ffd_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/bcrypt-5.0.0-py312h868fb18_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-default_hfdba357_102.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.306-mkl.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.11.0-6_hcf00494_mkl.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.2.0-hed03a55_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.2.0-hb03c661_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py312hdb49522_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py312h460c074_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/cli11-2.6.2-h54a6638_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-15.2.0-h53410ce_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py312h0a2e395_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-48.0.0-py312ha4b625e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.28-hac629b4_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/cytoolz-1.1.0-py312h4c3975b_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h24cb091_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/dm-tree-0.1.10-py312hecca40a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.4.0-hecca717_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-5.0.1-hc65338a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-abi-5.0.1.80-hf414acd_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-hb03c661_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.8.0-hecca717_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-8.1.1-gpl_hee00b0e_901.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/flatbuffers-25.9.23-hb7d4c21_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-12.1.0-hff5e90c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.62.1-py312h8a5da7c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.3-ha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.7.0-py312h447239a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-15.2.0-h0dff253_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.2.0-he0086c7_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.6-h2b0a6b4_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-hd590300_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gl2ps-1.4.2-h36e74d4_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/glew-2.3.0-h71661d4_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.88.1-hee1de02_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/glslang-16.3.0-h96af755_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.3.0-py312hcaba1f9_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-hecca717_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-14.1.2-h8b86629_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/grpcio-1.78.1-py312h39ee1c6_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.52-ha5ea40c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx-15.2.0-h76987e4_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-15.2.0-hda75c37_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gymnasium-1.2.3-np2py312hcdd156d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/h5py-3.16.0-nompi_py312ha4f8f14_102.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.2.0-h6083320_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h19486de_109.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/intel-gmmlib-22.10.0-hb700be7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/intel-media-driver-26.1.6-hecca717_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.9.2-cpu_py312hc81e8bd_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/jsoncpp-1.9.6-hf42df4d_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.0-py312h0a2e395_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-ha1258a1_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.19.1-h0c24ade_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/level-zero-1.28.4-hb700be7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20260107.1-cxx17_h7b12aa8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.5-h088129d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-24.0.0-h0935d00_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-24.0.0-h635bf11_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-24.0.0-h53684a4_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-24.0.0-h635bf11_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-24.0.0-hb4dd7c2_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libass-0.17.4-h96ad9f0_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-6_h5875eb1_mkl.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-1.90.0-hd24cca6_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-devel-1.90.0-hfcd1e18_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-headers-1.90.0-ha770c72_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-hb03c661_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-hb03c661_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-hb03c661_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.77-hd0affe5_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-6_hfef963f_mkl.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-22.1.5-default_h746c552_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.20.0-hcf29cc6_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libdovi-3.3.2-ha23c83e_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.125-hb03c661_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-devel-1.7.0-ha4b6fd6_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.0-hecca717_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.5.0-he200343_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h5fbf134_12.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-devel-1.7.0-ha4b6fd6_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.88.1-h0d30a3d_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.3-h5888daf_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-devel-1.7.0-ha4b6fd6_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-3.3.0-h25dbb67_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-3.3.0-hdbdcf42_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.78.1-h1d1128b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.13.0-default_he001693_1000.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.4.0-h10be129_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.4.1-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.2-h174a0a3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-6_h5e43f62_mkl.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.11.0-6_hdba1596_mkl.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm22-22.1.5-hf7376ad_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.3-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.10.0-nompi_hb6f1874_104.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.68.1-h877daf1_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.8-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-hd0c01bc_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-devel-1.7.0-ha4b6fd6_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.26.0-h9692893_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.26.0-ha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-2026.0.0-hb56ce9e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-batch-plugin-2026.0.0-hd85de46_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-plugin-2026.0.0-hd85de46_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-hetero-plugin-2026.0.0-hd41364c_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-cpu-plugin-2026.0.0-hb56ce9e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-gpu-plugin-2026.0.0-hb56ce9e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-npu-plugin-2026.0.0-hb56ce9e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-ir-frontend-2026.0.0-hd41364c_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-onnx-frontend-2026.0.0-h7a07914_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-paddle-frontend-2026.0.0-h7a07914_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-pytorch-frontend-2026.0.0-hecca717_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-frontend-2026.0.0-h78e8023_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-lite-frontend-2026.0.0-hecca717_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.6.1-h280c20c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-24.0.0-h7376487_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.18-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libplacebo-7.360.1-h9eeb4b2_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.58-h421ea60_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.3-h9abb657_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.33.5-h2b00c02_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.11.05-h0dc7533_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.62.1-h4c96295_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-15.2.0-h90f66d4_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc7d488a_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.21-h280c20c_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.1-h0c1763c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.13-hd0affe5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libtensorflow_cc-2.19.1-cpu_ha812d39_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libtensorflow_framework-2.19.1-cpu_h0a5eddc_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libtheora-1.1.1-h4ab18f5_1006.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.22.0-h7d032f7_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libtorch-2.10.0-cpu_mkl_h7058990_103.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.13-hd0affe5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libunwind-1.8.3-h65a8314_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/liburing-2.14-hb700be7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libusb-1.0.29-h73b1eb8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.11.3-hfe17d71_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42-h5347b49_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb03c661_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libva-2.23.0-he1eb515_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h54a6638_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libvpl-2.16.0-h54a6638_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libvpx-1.15.2-hecca717_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libvulkan-loader-1.4.341.0-h5279c79_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.13.1-hca5e8e5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.3-hca6bf5a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.3-h49c6c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.43-h711ed8c_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.2-h6991a6a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-22.1.5-h4922eb0_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.47.0-py312h7424e68_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py312h3d67a73_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py312h8a5da7c_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.10.9-py312h7900ff3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.9-py312he3d6523_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/mesalib-26.0.3-h8cca3c9_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2025.3.1-h0e700b2_12.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2025.3.1-ha770c72_12.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2025.3.1-hf2ce2f3_12.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-service-2.7.1-py312h4307cf8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.4-np2py312h0f77346_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.4.0-he0a73b1_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.2-he0a73b1_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.1.2-py312hd9148b4_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.7.1-py312h8a5da7c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.19-py312h5253ce2_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/numba-0.65.1-py312hd1dde6f_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/numpoly-1.3.9-py312h4c3975b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.4-py312h33ff503_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.3-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/onednn-3.11.1-threadpool_h77e0eb8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/onednn-cpu-threadpool-3.11.1-threadpool_h3c4d5c8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/onemkl-license-2025.3.1-hf2ce2f3_12.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2025.06.13-hecca717_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/openh264-2.6.0-hc22cd8d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.13-hbde042b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.2-h35e630c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/optree-0.19.1-py312hd9148b4_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.3.0-h21090e2_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.3-py312h8ecdadd_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hda50119_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.2.0-py312h50c33e8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.8.1-he0df7b0_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.3.1-py312h178313f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-6.33.5-py312ha7b3241_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py312h5253ce2_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pugixml-1.15-h3f63f65_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-h9a6aba3_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-24.0.0-py312h7900ff3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-24.0.0-py312h2054cf2_0_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.6.2-py312h587e1b2_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.11.0-py312h50ac2ff_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pytensor-2.38.3-py312hc487a0d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pytensor-base-2.38.3-np2py312h0f77346_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.13-hd63d673_0_cpython.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pytorch-2.10.0-cpu_mkl_py312_hca44ed5_103.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py312h8a5da7c_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.11.0-pl5321h16c4a6b_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.11.05-h5301d42_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.7.2-hc5a330e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.8.0-np2py312h3226591_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.17.1-py312h54fa4ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.56-h54a6638_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.4.8-hdeec2a5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/shaderc-2026.2-h718be3e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/sleef-3.9.0-ha0421bc_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h03e3b7b_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/spirv-tools-2026.1-hb700be7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.53.1-hbc0de68_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.6-py312h4f23490_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-4.0.1-hecca717_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2023.0.0-hab88423_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-devel-2023.0.0-hab88423_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/tensorboard-data-server-0.7.0-py312h4eba8b5_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/tensorflow-2.19.1-cpu_py312h3336143_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/tensorflow-base-2.19.1-cpu_py312h9edca52_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.5-py312h4c3975b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-17.0.1-py312h4c3975b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/utfcpp-4.09-ha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/viskores-1.1.1-cpu_hc82bd48_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-9.6.1-py312h244374b_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-base-9.6.1-py312hb8f95c7_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-io-ffmpeg-9.6.1-py312hf1e11e2_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.25.0-hd6090a7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.1.2-py312h4c3975b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/x264-1!164.3095-h166bdaf_2.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h924138e_3.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.1-h4f16b4b_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-cursor-0.1.6-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-image-0.4.0-hb711507_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.1-hb711507_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.10-hb711507_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.2-hb711507_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.47-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.7-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.6-hecca717_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.5-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxscrnsaver-1.2.4-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxshmfence-1.3.3-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.7-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.23.0-py312h8a5da7c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/zfp-1.0.1-h909a3a2_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.2-h25fd6f3_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.3-hceb46e0_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/_x86_64-microarch-level-1-3_x86_64.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/absl-py-2.4.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-49.0-unix_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.6.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/arviz-0.23.4-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/astunparse-1.6.3-pyhd8ed1ab_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.9.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.4.22-hbd8a1cb_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cachetools-6.2.6-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.4.22-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/chaospy-4.3.20-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/check_shapes-1.1.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.3-pyhc90fa1f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-pyhcf101f3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cons-0.4.7-pyhd8ed1ab_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.13-py312hd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cyclopts-4.11.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.3.0-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.3.0-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/dask-jobqueue-0.9.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.4.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.3.0-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/docstring_parser-0.18.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.22.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/dropstackframe-0.1.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/etuples-0.3.10-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/fabric-3.2.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/farama-notifications-0.0.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.4.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/gast-0.7.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/google-pasta-0.2.0-pyhd8ed1ab_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/gpflow-2.9.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.8.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.13-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.8.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/invoke-2.2.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.9.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jax-jumpy-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/keras-3.14.1-pyh753f3f9_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.3.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.2.0-hcc6f6b0_119.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/libml_dtypes-headers-0.5.4-h707e725_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-15.2.0-hd446a21_119.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/logical-unification-0.4.7-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.10.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/minikanren-1.0.5-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/multipledispatch-0.6.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/namex-0.1.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.21.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.2-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/paramiko-5.0.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pathos-0.3.5-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pip-26.1.1-pyh8b19718_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.6-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.6.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pooch-1.9.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pox-0.3.7-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ppft-1.7.8-pyhcf101f3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-3.0.1-pyh7a1b43c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-11-hc364b38_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-3.0.1-pyhc7ab6ef_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pydoe-0.9.9-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pymc-5.28.5-h73fd4fa_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pymc-base-5.28.5-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-25.9.23-pyh1e1bc0e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.21-pyhbacfb6d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pyvista-0.48.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/rich-15.0.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/rich-rst-1.3.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/salib-1.5.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/scooby-0.11.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-81.0.0-pyh332efcf_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/stable-baselines3-2.8.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.14.0-pyh2585a3b_106.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.10.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tblib-3.2.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tensorboard-2.19.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tensorflow-probability-0.25.0-pyh8b42bfb_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/termcolor-3.3.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tf-keras-2.19.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/toolz-1.1.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/wayland-protocols-1.47-hd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.1.8-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.47.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/wslink-2.5.6-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2026.4.0-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-einstats-0.10.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2026.3.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.1-pyhcf101f3_0.conda
+ - pypi: git+https://github.com/nchopin/particles#f71e94a21a11c73b58e2d694775b1b1d379b8854
+ - pypi: https://files.pythonhosted.org/packages/39/1f/54ddd9171840bbf2437287ffab18268d7ccbca7752a7f290252ddabbcef8/numpysane-0.42.tar.gz
+ - pypi: https://files.pythonhosted.org/packages/4a/49/bb935b2e68cf31e2b2face9d0841ac97447b6d0387d0c2d2255c7a2867da/scikit_activeml-1.0.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/53/f6/136e03239c2205497b482b04e05c961add0638e92d26b0d13b6499fedb40/diversipy-0.9.tar.gz
+ - pypi: https://files.pythonhosted.org/packages/7c/e9/9876105d1c238f82b44211d73913784ce8f53e382960b0858c0e38ac2ced/gnuplotlib-0.46.tar.gz
+ - pypi: https://files.pythonhosted.org/packages/b7/c0/4bc973defd1270b89ccaae04cef0d5fa3ea85b59b108ad2c08aeea9afb76/makefun-1.16.0-py2.py3-none-any.whl
+ osx-arm64:
+ - conda: https://conda.anaconda.org/conda-forge/noarch/absl-py-2.4.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-49.0-unix_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.6.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/arviz-0.23.4-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/astunparse-1.6.3-pyhd8ed1ab_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.9.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.4.22-hbd8a1cb_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cachetools-6.2.6-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.4.22-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/chaospy-4.3.20-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/check_shapes-1.1.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.3-pyhc90fa1f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-pyhcf101f3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt22_osx-arm64-22.1.5-h7e67a1e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-arm64-22.1.5-hce30654_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cons-0.4.7-pyhd8ed1ab_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.13-py312hd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cyclopts-4.11.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.3.0-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.3.0-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/dask-jobqueue-0.9.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.4.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.3.0-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/docstring_parser-0.18.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.22.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/dropstackframe-0.1.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/etuples-0.3.10-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/fabric-3.2.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/farama-notifications-0.0.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.4.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/gast-0.7.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/google-pasta-0.2.0-pyhd8ed1ab_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/gpflow-2.9.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.8.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.13-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.8.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/invoke-2.2.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.9.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jax-jumpy-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/keras-3.14.1-pyh753f3f9_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.3.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/libcxx-headers-22.1.5-h707e725_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/libml_dtypes-headers-0.5.4-h707e725_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/logical-unification-0.4.7-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.10.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/minikanren-1.0.5-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/multipledispatch-0.6.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/namex-0.1.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.21.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/numpoly-1.2.14-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.2-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/paramiko-5.0.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pathos-0.3.5-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pip-26.1.1-pyh8b19718_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.6-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.6.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pooch-1.9.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pox-0.3.7-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ppft-1.7.8-pyhcf101f3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-3.0.1-pyh7a1b43c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-11-hc364b38_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-3.0.1-pyhc7ab6ef_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pydoe-0.9.9-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pymc-5.28.5-h73fd4fa_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pymc-base-5.28.5-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-25.9.23-pyh1e1bc0e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.21-pyhbacfb6d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pyvista-0.48.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/rich-15.0.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/rich-rst-1.3.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/salib-1.5.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/scooby-0.11.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-81.0.0-pyh332efcf_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/stable-baselines3-2.8.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.14.0-pyh2585a3b_106.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.10.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tblib-3.2.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tensorboard-2.19.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tensorflow-probability-0.25.0-pyh8b42bfb_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/termcolor-3.3.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tf-keras-2.19.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/toolz-1.1.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.1.8-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.47.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/wslink-2.5.6-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2026.4.0-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-einstats-0.10.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2026.3.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/_openmp_mutex-4.5-7_kmp_llvm.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.13.5-py312h9f8c436_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.10.1-ha7d4cc1_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.9.13-h6ee9776_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.12.6-hc919400_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.2-h3e7f9b5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.7.0-h351c84d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.10.13-h95cdebe_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.26.3-h4137820_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.15.2-h8860bc9_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.12.2-h07b101a_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.4-h16f91aa_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.10-h3e7f9b5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.38.3-hba17502_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.747-h30a6df1_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.16.2-he5ae378_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.13.3-h810541e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.16.0-hc57151b_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.12.0-he467506_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.14.0-hf8a9d22_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/backports.zstd-1.5.0-py312h87c4bb7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bcrypt-5.0.0-py312h6ef9ec0_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/blas-2.307-accelerate.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/blas-devel-3.11.0-7_h55bc449_accelerate.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/blosc-1.21.6-h7dd00d9_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.2.0-h7d5ae5b_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.2.0-hc919400_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.2.0-py312h0dfefe5_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_9.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.6-hc919400_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-he0f2337_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools-1030.6.3-llvm22_1_hbe26303_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_impl_osx-arm64-1030.6.3-llvm22_1_hb5e89dc_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-2.0.0-py312h1b4d9a2_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-22-22.1.5-default_hd632d02_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-22.1.5-default_cfg_hb78b91e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-scan-deps-22.1.5-default_h8e162e0_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_impl_osx-arm64-22.1.5-default_h17d1ed9_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx-22.1.5-default_cfg_h76039ee_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_impl_osx-arm64-22.1.5-default_h17d1ed9_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cli11-2.6.2-h784d473_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/compiler-rt-22.1.5-hce30654_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/compiler-rt22-22.1.5-hd34ed20_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.3.3-py312h3093aea_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-48.0.0-py312h1238841_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cyrus-sasl-2.1.28-hb961e35_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cytoolz-1.1.0-py312h2bbb03f_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dbus-1.16.2-h3ff7a7c_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dm-tree-0.1.10-py312h5ac6f9e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/double-conversion-3.4.0-hf6b4638_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/eigen-5.0.1-h44d0d2d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/eigen-abi-5.0.1.100-h485a483_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-hc919400_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.8.0-hf6b4638_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ffmpeg-8.1.1-gpl_h246f3d5_101.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/flatbuffers-25.9.23-h9e8ef45_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fmt-12.1.0-h403dcb5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.17.1-h2b252f5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fonttools-4.62.1-py312h04c11ed_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.14.3-hce30654_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.16-hc919400_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.7.0-py312h512c567_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.44.6-h4e57454_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/giflib-5.2.2-h93a5062_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glew-2.3.0-hf163413_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.88.1-h37541a8_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glslang-16.3.0-h7cb4797_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.3.0-py312he1ee7cc_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-hec049ff_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-14.1.2-hec8c438_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/grpcio-1.78.1-py312h0c23288_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.52-hc0f3e19_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gymnasium-1.2.3-np2py312hcf3ad39_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/h5py-3.16.0-nompi_py312hdd01ddf_102.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-14.2.0-h3103d1b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf4-4.2.15-h2ee6834_7.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-1.14.6-nompi_had3affe_109.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-78.3-hef89b57_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.9.2-cpu_py312h8d61f43_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsoncpp-1.9.6-h726d253_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/kiwisolver-1.5.0-py312h3093aea_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.22.2-h385eeb1_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lame-3.100-h1a8c8d9_1003.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.19.1-hdfa7624_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64-956.6-llvm22_1_h5b97f1b_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-956.6-llvm22_1_h692d5aa_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.1.0-h1eee2c3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20260107.1-cxx17_h2062a1b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libaec-1.1.5-h8664d51_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-24.0.0-h37fbca7_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-24.0.0-hee8fe31_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-compute-24.0.0-h3b6a98a_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-24.0.0-hee8fe31_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-24.0.0-h05be00f_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libass-0.17.4-hcbd7ca7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.11.0-7_h3d1d584_accelerate.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-1.90.0-h0419b56_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-devel-1.90.0-hf450f58_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-headers-1.90.0-hce30654_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.2.0-hc919400_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.2.0-hc919400_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.2.0-hc919400_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.11.0-7_h752f6bc_accelerate.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang-cpp22.1-22.1.5-default_h8e162e0_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang13-22.1.5-default_h6dd9417_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcompiler-rt-22.1.5-hd34ed20_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.20.0-hd5a2499_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-22.1.5-h55c6f16_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-devel-22.1.5-h6dc3340_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.25-hc11a715_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdovi-3.3.2-h78f8ca3_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.8.0-hf6b4638_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-hcf2aa1b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.14.3-hce30654_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.14.3-hdfa99f5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgcc-15.2.0-hcbb3090_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-h05bcc79_12.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-h07b0088_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-hdae7583_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.88.1-ha08bb59_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-3.3.0-he41eb1d_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-3.3.0-ha114238_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.78.1-h3e3f78d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libhwloc-2.13.0-default_ha97f43a_1000.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libhwy-1.4.0-ha332bbd_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-h23cfdf5_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.4.1-h84a0fba_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjxl-0.11.2-h934fa54_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.11.0-7_hcb0d94e_accelerate.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapacke-3.11.0-7_hbdd07e9_accelerate.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm22-22.1.5-h89af1be_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.3-h8088a28_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.8.3-h8088a28_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnetcdf-4.10.0-nompi_h7a8d41e_104.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.68.1-h8f3e76b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libntlm-1.8-h5505292_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h48c0fde_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.26.0-h08d5cc3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.26.0-hce30654_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-2026.0.0-h3e6d54f_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-arm-cpu-plugin-2026.0.0-h3e6d54f_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-auto-batch-plugin-2026.0.0-h2406d2e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-auto-plugin-2026.0.0-h2406d2e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-hetero-plugin-2026.0.0-h85cbfa6_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-ir-frontend-2026.0.0-h85cbfa6_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-onnx-frontend-2026.0.0-h41365f2_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-paddle-frontend-2026.0.0-h41365f2_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-pytorch-frontend-2026.0.0-hf6b4638_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-tensorflow-frontend-2026.0.0-hc295da0_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-tensorflow-lite-frontend-2026.0.0-hf6b4638_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.6.1-h1a92334_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-24.0.0-h16c0493_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libplacebo-7.360.1-h176d363_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.58-h132b30e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpq-18.3-hd341ff2_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-6.33.5-h4a5acfd_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2025.11.05-h4c27e2a_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.62.1-he8aa2a2_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsigtool-0.1.3-h98dc951_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.21-h1a92334_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.53.1-h1b79a29_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h1590b86_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtensorflow_cc-2.19.1-cpu_he004e32_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtensorflow_framework-2.19.1-cpu_h3441331_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtheora-1.1.1-h99b78c6_1006.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.22.0-h1fb9c8a_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.1-h4030677_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtorch-2.10.0-cpu_generic_hf7cc835_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libusb-1.0.29-hbc156a2_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.11.3-h2431656_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.51.0-h6caf38d_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvorbis-1.3.7-h81086ad_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvpx-1.15.2-ha759d40_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvulkan-loader-1.4.341.0-h3feff0a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.3-h5ef1a60_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.3-h5654f7c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzip-1.11.2-h1336266_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.2-h8088a28_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-22.1.5-hc7d1edf_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-22-22.1.5-hb545844_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-22.1.5-hd34ed20_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvmlite-0.47.0-py312h7ca588d_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-4.4.5-py312h2b25a0d_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.3-py312h04c11ed_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-3.10.9-py312h1f38498_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.9-py312hf3defc7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mesalib-26.0.3-h6616f17_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.5.4-np2py312h60fbb24_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.4.0-h169892a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.2-h6bc93b0_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/msgpack-python-1.1.2-py312h84eede6_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.7.1-py312h43af8aa_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.19-py312hb3ab3e3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.6-h1d4f5a5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.12.0-h784d473_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numba-0.65.1-py312h2d3d6e9_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.4.4-py312ha003a3f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openh264-2.6.0-hb5b2745_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.4-hd9e9057_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openldap-2.6.13-hf7f56bc_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.2-hd24854e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/optree-0.19.1-py312h766f71e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.3.0-hd11884d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-3.0.3-py312h6510ced_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.4-hf80efc4_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.47-h30297fc_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.2.0-py312h4e908a4_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.4-h81086ad_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/proj-9.8.1-ha88f16d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.3.1-py312h998013c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-6.33.5-py312h857ab9a_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.2.2-py312hb3ab3e3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pugixml-1.15-hd3d436d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-24.0.0-py312h1f38498_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-24.0.0-py312h21b41d0_0_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pynacl-1.6.2-py312h6831925_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytensor-2.38.3-py312ha7b44dd_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytensor-base-2.38.3-np2py312h60fbb24_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.13-h8561d8f_0_cpython.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytorch-2.10.0-cpu_generic_py312_h2470ad0_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.3-py312h04c11ed_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/qhull-2020.2-h420ef59_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/qt6-main-6.11.1-pl5321h01fc3ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2025.11.05-ha480c28_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.3-h46df422_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scikit-learn-1.8.0-np2py312he5ca3e3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.17.1-py312h0f234b1_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.32.56-h248ca61_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl3-3.4.8-h6fa9c73_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/shaderc-2026.2-hf31e910_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sigtool-codesign-0.1.3-h98dc951_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sleef-3.9.0-hb028509_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.2-hada39a4_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/spirv-tools-2026.1-h4ddebb9_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlite-3.53.1-h85ec8f2_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/statsmodels-0.14.6-py312ha11c99a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-4.0.1-h0cb729a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tapi-1600.0.11.8-h997e182_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tbb-2023.0.0-he0260a5_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tbb-devel-2023.0.0-h7f394f9_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tensorboard-data-server-0.7.0-py312h9536bd2_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tensorflow-2.19.1-cpu_py312hc65d1cb_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tensorflow-base-2.19.1-cpu_py312h66a5cad_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h010d191_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.5-py312h2bbb03f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/unicodedata2-17.0.1-py312h2bbb03f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/utfcpp-4.09-hce30654_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/viskores-1.1.1-cpu_h841489f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/vtk-9.6.1-py312hee49c5b_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/vtk-base-9.6.1-py312h12f95e6_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/vtk-io-ffmpeg-9.6.1-py312h199f87a_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-2.1.2-py312h2bbb03f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/x264-1!164.3095-h57fd34a_2.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/x265-3.5-hbc6ce65_3.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-hc919400_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hc919400_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h925e9cb_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.23.0-py312h04c11ed_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zfp-1.0.1-ha86207d_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.2-h8088a28_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-ng-2.3.3-hed4e4f5_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hbf9d68e_6.conda
+ - pypi: git+https://github.com/nchopin/particles#f71e94a21a11c73b58e2d694775b1b1d379b8854
+ - pypi: https://files.pythonhosted.org/packages/39/1f/54ddd9171840bbf2437287ffab18268d7ccbca7752a7f290252ddabbcef8/numpysane-0.42.tar.gz
+ - pypi: https://files.pythonhosted.org/packages/4a/49/bb935b2e68cf31e2b2face9d0841ac97447b6d0387d0c2d2255c7a2867da/scikit_activeml-1.0.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/53/f6/136e03239c2205497b482b04e05c961add0638e92d26b0d13b6499fedb40/diversipy-0.9.tar.gz
+ - pypi: https://files.pythonhosted.org/packages/7c/e9/9876105d1c238f82b44211d73913784ce8f53e382960b0858c0e38ac2ced/gnuplotlib-0.46.tar.gz
+ - pypi: https://files.pythonhosted.org/packages/b7/c0/4bc973defd1270b89ccaae04cef0d5fa3ea85b59b108ad2c08aeea9afb76/makefun-1.16.0-py2.py3-none-any.whl
+ dev:
+ channels:
+ - url: https://conda.anaconda.org/conda-forge/
+ - url: https://conda.anaconda.org/nodefaults/
+ indexes:
+ - https://pypi.org/simple
+ packages:
+ linux-64:
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-7_kmp_llvm.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.13.5-py312h5d8c7f2_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.15.3-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/astroid-4.0.4-py312h7900ff3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.10.1-ha62d5e7_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.9.13-h2c9d079_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.12.6-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.2-h8b1a151_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.7.0-h9b893ba_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.10.13-h4bacb7b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.26.3-h692f434_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.15.2-hc1936db_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.12.2-he6ee468_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.4-h8b1a151_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.10-h8b1a151_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.38.3-h745e52d_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.747-h41c0014_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.16.2-h206d751_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.13.3-hed0cdb0_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.16.0-hdd73cc9_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.12.0-ha7a2c86_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.14.0-h52c5a47_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.5.0-py312h90b7ffd_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/bcrypt-5.0.0-py312h868fb18_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-default_hfdba357_102.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.306-mkl.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.11.0-6_hcf00494_mkl.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.2.0-hed03a55_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.2.0-hb03c661_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py312hdb49522_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py312h460c074_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.5-py312h4f23490_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/cli11-2.6.2-h54a6638_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/commitizen-4.15.1-py312h7900ff3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-15.2.0-h53410ce_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py312h0a2e395_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.14.0-py312h8a5da7c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-48.0.0-py312ha4b625e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.28-hac629b4_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/cytoolz-1.1.0-py312h4c3975b_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h24cb091_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.20-py312h8285ef7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/dm-tree-0.1.10-py312hecca40a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.4.0-hecca717_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-5.0.1-hc65338a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-abi-5.0.1.80-hf414acd_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-hb03c661_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.8.0-hecca717_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-8.1.1-gpl_hee00b0e_901.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/flatbuffers-25.9.23-hb7d4c21_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-12.1.0-hff5e90c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.62.1-py312h8a5da7c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.3-ha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.7.0-py312h447239a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-15.2.0-h0dff253_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.2.0-he0086c7_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.6-h2b0a6b4_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-hd590300_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gl2ps-1.4.2-h36e74d4_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/glew-2.3.0-h71661d4_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.88.1-hee1de02_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/glslang-16.3.0-h96af755_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.3.0-py312hcaba1f9_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-hecca717_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-14.1.2-h8b86629_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/grpcio-1.78.1-py312h39ee1c6_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.52-ha5ea40c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx-15.2.0-h76987e4_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-15.2.0-hda75c37_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gymnasium-1.2.3-np2py312hcdd156d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/h5py-3.16.0-nompi_py312ha4f8f14_102.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.2.0-h6083320_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h19486de_109.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/intel-gmmlib-22.10.0-hb700be7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/intel-media-driver-26.1.6-hecca717_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.9.2-cpu_py312hc81e8bd_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/jsoncpp-1.9.6-hf42df4d_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.0-py312h0a2e395_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-ha1258a1_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.19.1-h0c24ade_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/level-zero-1.28.4-hb700be7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20260107.1-cxx17_h7b12aa8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.5-h088129d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-24.0.0-h0935d00_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-24.0.0-h635bf11_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-24.0.0-h53684a4_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-24.0.0-h635bf11_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-24.0.0-hb4dd7c2_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libass-0.17.4-h96ad9f0_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-6_h5875eb1_mkl.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-1.90.0-hd24cca6_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-devel-1.90.0-hfcd1e18_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-headers-1.90.0-ha770c72_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-hb03c661_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-hb03c661_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-hb03c661_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.77-hd0affe5_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-6_hfef963f_mkl.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-22.1.5-default_h746c552_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.20.0-hcf29cc6_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libdovi-3.3.2-ha23c83e_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.125-hb03c661_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-devel-1.7.0-ha4b6fd6_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.0-hecca717_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.5.0-he200343_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h5fbf134_12.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-devel-1.7.0-ha4b6fd6_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.88.1-h0d30a3d_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.3-h5888daf_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-devel-1.7.0-ha4b6fd6_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-3.3.0-h25dbb67_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-3.3.0-hdbdcf42_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.78.1-h1d1128b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.13.0-default_he001693_1000.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.4.0-h10be129_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.4.1-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.2-h174a0a3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-6_h5e43f62_mkl.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.11.0-6_hdba1596_mkl.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm22-22.1.5-hf7376ad_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.3-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.10.0-nompi_hb6f1874_104.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.68.1-h877daf1_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.8-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-hd0c01bc_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-devel-1.7.0-ha4b6fd6_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.26.0-h9692893_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.26.0-ha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-2026.0.0-hb56ce9e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-batch-plugin-2026.0.0-hd85de46_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-plugin-2026.0.0-hd85de46_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-hetero-plugin-2026.0.0-hd41364c_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-cpu-plugin-2026.0.0-hb56ce9e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-gpu-plugin-2026.0.0-hb56ce9e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-npu-plugin-2026.0.0-hb56ce9e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-ir-frontend-2026.0.0-hd41364c_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-onnx-frontend-2026.0.0-h7a07914_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-paddle-frontend-2026.0.0-h7a07914_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-pytorch-frontend-2026.0.0-hecca717_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-frontend-2026.0.0-h78e8023_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-lite-frontend-2026.0.0-hecca717_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.6.1-h280c20c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-24.0.0-h7376487_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.18-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libplacebo-7.360.1-h9eeb4b2_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.58-h421ea60_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.3-h9abb657_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.33.5-h2b00c02_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.11.05-h0dc7533_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.62.1-h4c96295_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-15.2.0-h90f66d4_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc7d488a_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.21-h280c20c_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.1-h0c1763c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.13-hd0affe5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libtensorflow_cc-2.19.1-cpu_ha812d39_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libtensorflow_framework-2.19.1-cpu_h0a5eddc_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libtheora-1.1.1-h4ab18f5_1006.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.22.0-h7d032f7_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libtorch-2.10.0-cpu_mkl_h7058990_103.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.13-hd0affe5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libunwind-1.8.3-h65a8314_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/liburing-2.14-hb700be7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libusb-1.0.29-h73b1eb8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.11.3-hfe17d71_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42-h5347b49_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb03c661_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libva-2.23.0-he1eb515_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h54a6638_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libvpl-2.16.0-h54a6638_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libvpx-1.15.2-hecca717_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libvulkan-loader-1.4.341.0-h5279c79_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.13.1-hca5e8e5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.3-hca6bf5a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.3-h49c6c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.43-h711ed8c_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.2-h6991a6a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-22.1.5-h4922eb0_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.47.0-py312h7424e68_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py312h3d67a73_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py312h8a5da7c_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.10.9-py312h7900ff3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.9-py312he3d6523_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/mesalib-26.0.3-h8cca3c9_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2025.3.1-h0e700b2_12.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2025.3.1-ha770c72_12.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2025.3.1-hf2ce2f3_12.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-service-2.7.1-py312h4307cf8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.4-np2py312h0f77346_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.4.0-he0a73b1_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.2-he0a73b1_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.1.2-py312hd9148b4_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.7.1-py312h8a5da7c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.19-py312h5253ce2_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.20.2-py312h4c3975b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/netcdf4-1.7.4-nompi_py311ha0596eb_107.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/numba-0.65.1-py312hd1dde6f_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/numpoly-1.3.9-py312h4c3975b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.4-py312h33ff503_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.3-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/onednn-3.11.1-threadpool_h77e0eb8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/onednn-cpu-threadpool-3.11.1-threadpool_h3c4d5c8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/onemkl-license-2025.3.1-hf2ce2f3_12.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2025.06.13-hecca717_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/openh264-2.6.0-hc22cd8d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.13-hbde042b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.2-h35e630c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/optree-0.19.1-py312hd9148b4_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.3.0-h21090e2_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.3-py312h8ecdadd_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.9.0.2-ha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hda50119_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.2.0-py312h50c33e8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.8.1-he0df7b0_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.3.1-py312h178313f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-6.33.5-py312ha7b3241_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py312h5253ce2_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pugixml-1.15-h3f63f65_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-h9a6aba3_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-24.0.0-py312h7900ff3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-24.0.0-py312h2054cf2_0_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.6.2-py312h587e1b2_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.11.0-py312h50ac2ff_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pytensor-2.38.3-py312hc487a0d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pytensor-base-2.38.3-np2py312h0f77346_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.13-hd63d673_0_cpython.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.11.0-py312h5253ce2_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pytokens-0.4.1-py312h5253ce2_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pytorch-2.10.0-cpu_mkl_py312_hca44ed5_103.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py312h8a5da7c_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.1.0-py312hda471dd_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.11.0-pl5321h16c4a6b_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.11.05-h5301d42_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.30.0-py312h868fb18_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.15-py312h5253ce2_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.15.12-h994f30f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.7.2-hc5a330e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.8.0-np2py312h3226591_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.17.1-py312h54fa4ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.56-h54a6638_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.4.8-hdeec2a5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/shaderc-2026.2-h718be3e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/sleef-3.9.0-ha0421bc_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h03e3b7b_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/spirv-tools-2026.1-hb700be7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.53.1-hbc0de68_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.6-py312h4f23490_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-4.0.1-hecca717_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2023.0.0-hab88423_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-devel-2023.0.0-hab88423_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/tensorboard-data-server-0.7.0-py312h4eba8b5_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/tensorflow-2.19.1-cpu_py312h3336143_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/tensorflow-base-2.19.1-cpu_py312h9edca52_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.5-py312h4c3975b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.1.0-py312hd9148b4_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-17.0.1-py312h4c3975b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/utfcpp-4.09-ha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/viskores-1.1.1-cpu_hc82bd48_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-9.6.1-py312h244374b_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-base-9.6.1-py312hb8f95c7_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-io-ffmpeg-9.6.1-py312hf1e11e2_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.25.0-hd6090a7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.1.2-py312h4c3975b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/x264-1!164.3095-h166bdaf_2.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h924138e_3.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.1-h4f16b4b_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-cursor-0.1.6-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-image-0.4.0-hb711507_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.1-hb711507_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.10-hb711507_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.2-hb711507_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.47-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.7-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.6-hecca717_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.5-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxscrnsaver-1.2.4-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxshmfence-1.3.3-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.7-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.23.0-py312h8a5da7c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h41580af_10.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/zfp-1.0.1-h909a3a2_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.2-h25fd6f3_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.3-hceb46e0_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/_x86_64-microarch-level-1-3_x86_64.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/absl-py-2.4.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/accessible-pygments-0.0.5-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-49.0-unix_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.6.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.6.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/arviz-0.23.4-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/astunparse-1.6.3-pyhd8ed1ab_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.14.3-pyha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/black-26.3.1-pyh866005b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.3.0-pyhcf101f3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.3.0-hbca2aae_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.9.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.4.22-hbd8a1cb_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cachetools-6.2.6-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.4.22-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/chaospy-4.3.20-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/check_shapes-1.1.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.3-pyhc90fa1f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-pyhcf101f3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.3-pyhe01879c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cons-0.4.7-pyhd8ed1ab_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.13-py312hd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cyclopts-4.11.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.3.0-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.3.0-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/dask-jobqueue-0.9.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/decli-0.6.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.4.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.3.0-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/docformatter-1.7.8-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/docstring_parser-0.18.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.22.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/dropstackframe-0.1.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/etuples-0.3.10-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/fabric-3.2.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/farama-notifications-0.0.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.4.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/gast-0.7.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/google-pasta-0.2.0-pyhd8ed1ab_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/gpflow-2.9.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.8.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.19-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.13-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-2.0.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.8.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.8.0-h8f7a5dd_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/invoke-2.2.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.2.0-pyha191276_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.13.0-pyh53cf698_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/isort-8.0.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.9.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jax-jumpy-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.8.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.9.1-pyhc90fa1f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/keras-3.14.1-pyh753f3f9_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.3.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.2.0-hcc6f6b0_119.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/libml_dtypes-headers-0.5.4-h707e725_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-15.2.0-hd446a21_119.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/logical-unification-0.4.7-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.10.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.5.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/meshio-5.3.5-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/minikanren-1.0.5-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.2.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/mock-5.2.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/multipledispatch-0.6.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/myst-parser-5.0.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/namex-0.1.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.21.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.17.1-hb502eef_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.17.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.17.1-h08b4883_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/nbsphinx-0.9.8-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/nbstripout-0.9.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.2-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/paramiko-5.0.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.7-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pathos-0.3.5-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.1.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pip-26.1.1-pyh8b19718_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pip-licenses-5.5.1-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.6-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.6.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pooch-1.9.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pox-0.3.7-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ppft-1.7.8-pyhcf101f3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.6.0-pyha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-hooks-5.0.0-pyhd8ed1ab_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/prettytable-3.17.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.51-hd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-3.0.1-pyh7a1b43c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-11-hc364b38_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-3.0.1-pyhc7ab6ef_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.14.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.17.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pydoe-0.9.9-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pylint-4.0.5-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pymc-5.28.5-h73fd4fa_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pymc-base-5.28.5-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.3-pyhc364b38_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-codestyle-2.0.1-py_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-7.1.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-mock-3.15.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.3.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.2-pyhe01879c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-25.9.23-pyh1e1bc0e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.13-hd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.21-pyhbacfb6d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pyvista-0.48.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/questionary-2.1.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/rich-15.0.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/rich-rst-1.3.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-4.1.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ruamel.yaml-0.19.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/salib-1.5.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/scikit-fem-12.0.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/scooby-0.11.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-81.0.0-pyh332efcf_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-9.1.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/stable-baselines3-2.8.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.14.0-pyh2585a3b_106.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.10.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tblib-3.2.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tensorboard-2.19.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tensorflow-probability-0.25.0-pyh8b42bfb_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/termcolor-3.3.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/testbook-0.4.2-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tf-keras-2.19.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.15.0-pyha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/toolz-1.1.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.15.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.3.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/wayland-protocols-1.47-hd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.7.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.1.8-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.47.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/wslink-2.5.6-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2026.4.0-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-einstats-0.10.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2026.3.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/yamllint-1.38.0-pyhcf101f3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.1-pyhcf101f3_0.conda
+ - pypi: git+https://github.com/nchopin/particles#f71e94a21a11c73b58e2d694775b1b1d379b8854
+ - pypi: https://files.pythonhosted.org/packages/02/c3/253a89ee03fc9b9682f1541728eb66db7db22148cd94f89ab22528cd1e1b/deprecation-2.1.0-py2.py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/10/9a/e3186e760c57ee5f1c27ea5cea577a0ff9abfca51eefcb4d9a4cd39aff2e/pandoc-2.4.tar.gz
+ - pypi: https://files.pythonhosted.org/packages/39/1f/54ddd9171840bbf2437287ffab18268d7ccbca7752a7f290252ddabbcef8/numpysane-0.42.tar.gz
+ - pypi: https://files.pythonhosted.org/packages/4a/49/bb935b2e68cf31e2b2face9d0841ac97447b6d0387d0c2d2255c7a2867da/scikit_activeml-1.0.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/53/f6/136e03239c2205497b482b04e05c961add0638e92d26b0d13b6499fedb40/diversipy-0.9.tar.gz
+ - pypi: https://files.pythonhosted.org/packages/79/ad/45312df6b63ba64ea35b8d8f5f0c577aac16e6b416eafe8e1cb34e03f9a7/plumbum-1.10.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/7c/45/7c7a8bcbfe68595c6ad82612dae409bf8c2f7dbad7cb0a30ad0637ce828f/jsonschema_rs-0.46.4-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
+ - pypi: https://files.pythonhosted.org/packages/7c/e9/9876105d1c238f82b44211d73913784ce8f53e382960b0858c0e38ac2ced/gnuplotlib-0.46.tar.gz
+ - pypi: https://files.pythonhosted.org/packages/94/ed/5d45bbd42d5407250dd46ce1b9c098d612c3a9bb538858d09da2df77c961/pylint_exit-1.2.0-py2.py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/af/cb/87da89ae11d0de562928a7e8ca40d5daee55049408019d5d1b918af6800b/rapidyaml-0.12.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
+ - pypi: https://files.pythonhosted.org/packages/b7/c0/4bc973defd1270b89ccaae04cef0d5fa3ea85b59b108ad2c08aeea9afb76/makefun-1.16.0-py2.py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/c8/03/99102b3772bdc5d25fc7fe5f5fb862c54bb6e863991f50d02667999942c1/licenseheaders-0.8.8-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/cc/1e/3fbe2fa1e8cebd62f3bb7d3321cff1640aca2e240b51d9bd624aad949260/regex-2026.5.9-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
+ - pypi: https://files.pythonhosted.org/packages/f8/cb/91d8f07f08e86f03e0e9b5ba9db350d751119c9ba27eff4c418e4f27ee9c/fourcipp-1.103.0-py3-none-any.whl
+ osx-arm64:
+ - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/absl-py-2.4.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/accessible-pygments-0.0.5-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-49.0-unix_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.6.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.6.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/arviz-0.23.4-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/astunparse-1.6.3-pyhd8ed1ab_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.14.3-pyha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/black-26.3.1-pyh866005b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.3.0-pyhcf101f3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.3.0-hbca2aae_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.9.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.4.22-hbd8a1cb_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cachetools-6.2.6-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.4.22-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/chaospy-4.3.20-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/check_shapes-1.1.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.3-pyhc90fa1f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-pyhcf101f3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.3-pyhe01879c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt22_osx-arm64-22.1.5-h7e67a1e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-arm64-22.1.5-hce30654_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cons-0.4.7-pyhd8ed1ab_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.13-py312hd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/cyclopts-4.11.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.3.0-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.3.0-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/dask-jobqueue-0.9.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/decli-0.6.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.4.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.3.0-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/docformatter-1.7.8-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/docstring_parser-0.18.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.22.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/dropstackframe-0.1.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/etuples-0.3.10-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/fabric-3.2.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/farama-notifications-0.0.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.4.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/gast-0.7.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/google-pasta-0.2.0-pyhd8ed1ab_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/gpflow-2.9.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.8.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.19-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.13-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-2.0.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.8.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.8.0-h8f7a5dd_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/invoke-2.2.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.2.0-pyh5552912_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.13.0-pyh53cf698_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/isort-8.0.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.9.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jax-jumpy-1.0.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.8.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.9.1-pyhc90fa1f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/keras-3.14.1-pyh753f3f9_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.3.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/libcxx-headers-22.1.5-h707e725_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/libml_dtypes-headers-0.5.4-h707e725_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/logical-unification-0.4.7-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.10.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.5.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/meshio-5.3.5-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/minikanren-1.0.5-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.2.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/mock-5.2.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/multipledispatch-0.6.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/myst-parser-5.0.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/namex-0.1.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.21.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.4-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.17.1-hb502eef_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.17.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.17.1-h08b4883_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/nbsphinx-0.9.8-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/nbstripout-0.9.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/numpoly-1.2.14-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.2-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/paramiko-5.0.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.7-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pathos-0.3.5-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.1.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pip-26.1.1-pyh8b19718_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pip-licenses-5.5.1-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.6-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.6.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pooch-1.9.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pox-0.3.7-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ppft-1.7.8-pyhcf101f3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.6.0-pyha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-hooks-5.0.0-pyhd8ed1ab_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/prettytable-3.17.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.51-hd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-3.0.1-pyh7a1b43c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-11-hc364b38_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-3.0.1-pyhc7ab6ef_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.14.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.17.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pydoe-0.9.9-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pylint-4.0.5-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pymc-5.28.5-h73fd4fa_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pymc-base-5.28.5-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.3-pyhc364b38_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-codestyle-2.0.1-py_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-7.1.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-mock-3.15.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.3.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.2-pyhe01879c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-25.9.23-pyh1e1bc0e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.13-hd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.21-pyhbacfb6d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/pyvista-0.48.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/questionary-2.1.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/rich-15.0.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/rich-rst-1.3.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-4.1.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ruamel.yaml-0.19.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/salib-1.5.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/scikit-fem-12.0.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/scooby-0.11.2-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-81.0.0-pyh332efcf_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8.3-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-9.1.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/stable-baselines3-2.8.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.14.0-pyh2585a3b_106.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.10.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tblib-3.2.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tensorboard-2.19.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tensorflow-probability-0.25.0-pyh8b42bfb_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/termcolor-3.3.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/testbook-0.4.2-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tf-keras-2.19.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.15.0-pyha770c72_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/toolz-1.1.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.15.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.3.2-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.7.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.1.8-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.47.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/wslink-2.5.6-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2026.4.0-pyhc364b38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-einstats-0.10.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2026.3.0-pyhd8ed1ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/yamllint-1.38.0-pyhcf101f3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.1-pyhcf101f3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/_openmp_mutex-4.5-7_kmp_llvm.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.13.5-py312h9f8c436_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/astroid-4.0.4-py312h81bd7bf_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.10.1-ha7d4cc1_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.9.13-h6ee9776_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.12.6-hc919400_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.2-h3e7f9b5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.7.0-h351c84d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.10.13-h95cdebe_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.26.3-h4137820_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.15.2-h8860bc9_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.12.2-h07b101a_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.4-h16f91aa_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.10-h3e7f9b5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.38.3-hba17502_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.747-h30a6df1_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.16.2-he5ae378_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.13.3-h810541e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.16.0-hc57151b_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.12.0-he467506_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.14.0-hf8a9d22_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/backports.zstd-1.5.0-py312h87c4bb7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bcrypt-5.0.0-py312h6ef9ec0_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/blas-2.307-accelerate.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/blas-devel-3.11.0-7_h55bc449_accelerate.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/blosc-1.21.6-h7dd00d9_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.2.0-h7d5ae5b_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.2.0-hc919400_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.2.0-py312h0dfefe5_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_9.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.6-hc919400_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-he0f2337_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools-1030.6.3-llvm22_1_hbe26303_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_impl_osx-arm64-1030.6.3-llvm22_1_hb5e89dc_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-2.0.0-py312h1b4d9a2_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cftime-1.6.5-py312hf57c059_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-22-22.1.5-default_hd632d02_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-22.1.5-default_cfg_hb78b91e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-scan-deps-22.1.5-default_h8e162e0_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_impl_osx-arm64-22.1.5-default_h17d1ed9_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx-22.1.5-default_cfg_h76039ee_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_impl_osx-arm64-22.1.5-default_h17d1ed9_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cli11-2.6.2-h784d473_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/commitizen-4.15.1-py312h81bd7bf_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/compiler-rt-22.1.5-hce30654_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/compiler-rt22-22.1.5-hd34ed20_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.3.3-py312h3093aea_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.14.0-py312h04c11ed_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-48.0.0-py312h1238841_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cyrus-sasl-2.1.28-hb961e35_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cytoolz-1.1.0-py312h2bbb03f_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dbus-1.16.2-h3ff7a7c_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.20-py312h6510ced_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dm-tree-0.1.10-py312h5ac6f9e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/double-conversion-3.4.0-hf6b4638_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/eigen-5.0.1-h44d0d2d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/eigen-abi-5.0.1.100-h485a483_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-hc919400_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.8.0-hf6b4638_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ffmpeg-8.1.1-gpl_h246f3d5_101.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/flatbuffers-25.9.23-h9e8ef45_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fmt-12.1.0-h403dcb5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.17.1-h2b252f5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fonttools-4.62.1-py312h04c11ed_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.14.3-hce30654_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.16-hc919400_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.7.0-py312h512c567_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.44.6-h4e57454_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/giflib-5.2.2-h93a5062_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glew-2.3.0-hf163413_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.88.1-h37541a8_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glslang-16.3.0-h7cb4797_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.3.0-py312he1ee7cc_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-hec049ff_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-14.1.2-hec8c438_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/grpcio-1.78.1-py312h0c23288_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.52-hc0f3e19_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gymnasium-1.2.3-np2py312hcf3ad39_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/h5py-3.16.0-nompi_py312hdd01ddf_102.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-14.2.0-h3103d1b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf4-4.2.15-h2ee6834_7.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-1.14.6-nompi_had3affe_109.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-78.3-hef89b57_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.9.2-cpu_py312h8d61f43_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsoncpp-1.9.6-h726d253_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/kiwisolver-1.5.0-py312h3093aea_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.22.2-h385eeb1_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lame-3.100-h1a8c8d9_1003.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.19.1-hdfa7624_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64-956.6-llvm22_1_h5b97f1b_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-956.6-llvm22_1_h692d5aa_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.1.0-h1eee2c3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20260107.1-cxx17_h2062a1b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libaec-1.1.5-h8664d51_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-24.0.0-h37fbca7_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-24.0.0-hee8fe31_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-compute-24.0.0-h3b6a98a_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-24.0.0-hee8fe31_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-24.0.0-h05be00f_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libass-0.17.4-hcbd7ca7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.11.0-7_h3d1d584_accelerate.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-1.90.0-h0419b56_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-devel-1.90.0-hf450f58_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-headers-1.90.0-hce30654_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.2.0-hc919400_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.2.0-hc919400_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.2.0-hc919400_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.11.0-7_h752f6bc_accelerate.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang-cpp22.1-22.1.5-default_h8e162e0_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang13-22.1.5-default_h6dd9417_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcompiler-rt-22.1.5-hd34ed20_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.20.0-hd5a2499_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-22.1.5-h55c6f16_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-devel-22.1.5-h6dc3340_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.25-hc11a715_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdovi-3.3.2-h78f8ca3_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.8.0-hf6b4638_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-hcf2aa1b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.14.3-hce30654_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.14.3-hdfa99f5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgcc-15.2.0-hcbb3090_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-h05bcc79_12.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-h07b0088_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-hdae7583_19.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.88.1-ha08bb59_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-3.3.0-he41eb1d_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-3.3.0-ha114238_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.78.1-h3e3f78d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libhwloc-2.13.0-default_ha97f43a_1000.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libhwy-1.4.0-ha332bbd_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-h23cfdf5_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.4.1-h84a0fba_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjxl-0.11.2-h934fa54_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.11.0-7_hcb0d94e_accelerate.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapacke-3.11.0-7_hbdd07e9_accelerate.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm22-22.1.5-h89af1be_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.3-h8088a28_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.8.3-h8088a28_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnetcdf-4.10.0-nompi_h7a8d41e_104.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.68.1-h8f3e76b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libntlm-1.8-h5505292_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h48c0fde_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.26.0-h08d5cc3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.26.0-hce30654_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-2026.0.0-h3e6d54f_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-arm-cpu-plugin-2026.0.0-h3e6d54f_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-auto-batch-plugin-2026.0.0-h2406d2e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-auto-plugin-2026.0.0-h2406d2e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-hetero-plugin-2026.0.0-h85cbfa6_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-ir-frontend-2026.0.0-h85cbfa6_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-onnx-frontend-2026.0.0-h41365f2_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-paddle-frontend-2026.0.0-h41365f2_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-pytorch-frontend-2026.0.0-hf6b4638_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-tensorflow-frontend-2026.0.0-hc295da0_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-tensorflow-lite-frontend-2026.0.0-hf6b4638_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.6.1-h1a92334_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-24.0.0-h16c0493_1_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libplacebo-7.360.1-h176d363_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.58-h132b30e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpq-18.3-hd341ff2_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-6.33.5-h4a5acfd_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2025.11.05-h4c27e2a_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.62.1-he8aa2a2_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsigtool-0.1.3-h98dc951_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.21-h1a92334_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.53.1-h1b79a29_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h1590b86_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtensorflow_cc-2.19.1-cpu_he004e32_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtensorflow_framework-2.19.1-cpu_h3441331_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtheora-1.1.1-h99b78c6_1006.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.22.0-h1fb9c8a_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.1-h4030677_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtorch-2.10.0-cpu_generic_hf7cc835_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libusb-1.0.29-hbc156a2_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.11.3-h2431656_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.51.0-h6caf38d_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvorbis-1.3.7-h81086ad_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvpx-1.15.2-ha759d40_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvulkan-loader-1.4.341.0-h3feff0a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.3-h5ef1a60_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.3-h5654f7c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzip-1.11.2-h1336266_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.2-h8088a28_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-22.1.5-hc7d1edf_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-22-22.1.5-hb545844_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-22.1.5-hd34ed20_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvmlite-0.47.0-py312h7ca588d_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-4.4.5-py312h2b25a0d_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.3-py312h04c11ed_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-3.10.9-py312h1f38498_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.9-py312hf3defc7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mesalib-26.0.3-h6616f17_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.5.4-np2py312h60fbb24_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.4.0-h169892a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.2-h6bc93b0_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/msgpack-python-1.1.2-py312h84eede6_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.7.1-py312h43af8aa_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.19-py312hb3ab3e3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-1.20.2-py312hefc2c51_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.6-h1d4f5a5_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/netcdf4-1.7.4-nompi_py311h8d5b1ca_107.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.12.0-h784d473_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numba-0.65.1-py312h2d3d6e9_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.4.4-py312ha003a3f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openh264-2.6.0-hb5b2745_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.4-hd9e9057_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openldap-2.6.13-hf7f56bc_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.2-hd24854e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/optree-0.19.1-py312h766f71e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.3.0-hd11884d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-3.0.3-py312h6510ced_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandoc-3.9.0.2-hce30654_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.4-hf80efc4_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.47-h30297fc_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.2.0-py312h4e908a4_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.4-h81086ad_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/proj-9.8.1-ha88f16d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.3.1-py312h998013c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-6.33.5-py312h857ab9a_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.2.2-py312hb3ab3e3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pugixml-1.15-hd3d436d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-24.0.0-py312h1f38498_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-24.0.0-py312h21b41d0_0_cpu.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pynacl-1.6.2-py312h6831925_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytensor-2.38.3-py312ha7b44dd_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytensor-base-2.38.3-np2py312h60fbb24_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.13-h8561d8f_0_cpython.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-librt-0.11.0-py312hb3ab3e3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytokens-0.4.1-py312hb3ab3e3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytorch-2.10.0-cpu_generic_py312_h2470ad0_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.3-py312h04c11ed_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.1.0-py312h022ad19_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/qhull-2020.2-h420ef59_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/qt6-main-6.11.1-pl5321h01fc3ab_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2025.11.05-ha480c28_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.3-h46df422_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.30.0-py312h6ef9ec0_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml.clib-0.2.15-py312hb3ab3e3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.15.12-hbd3f8a3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scikit-learn-1.8.0-np2py312he5ca3e3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.17.1-py312h0f234b1_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.32.56-h248ca61_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl3-3.4.8-h6fa9c73_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/shaderc-2026.2-hf31e910_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sigtool-codesign-0.1.3-h98dc951_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sleef-3.9.0-hb028509_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.2-hada39a4_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/spirv-tools-2026.1-h4ddebb9_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlite-3.53.1-h85ec8f2_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/statsmodels-0.14.6-py312ha11c99a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-4.0.1-h0cb729a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tapi-1600.0.11.8-h997e182_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tbb-2023.0.0-he0260a5_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tbb-devel-2023.0.0-h7f394f9_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tensorboard-data-server-0.7.0-py312h9536bd2_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tensorflow-2.19.1-cpu_py312hc65d1cb_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tensorflow-base-2.19.1-cpu_py312h66a5cad_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h010d191_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.5-py312h2bbb03f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.1.0-py312h766f71e_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/unicodedata2-17.0.1-py312h2bbb03f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/utfcpp-4.09-hce30654_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/viskores-1.1.1-cpu_h841489f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/vtk-9.6.1-py312hee49c5b_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/vtk-base-9.6.1-py312h12f95e6_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/vtk-io-ffmpeg-9.6.1-py312h199f87a_4.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-2.1.2-py312h2bbb03f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/x264-1!164.3095-h57fd34a_2.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/x265-3.5-hbc6ce65_3.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-hc919400_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hc919400_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h925e9cb_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.23.0-py312h04c11ed_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-h4818236_10.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zfp-1.0.1-ha86207d_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.2-h8088a28_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-ng-2.3.3-hed4e4f5_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hbf9d68e_6.conda
+ - pypi: git+https://github.com/nchopin/particles#f71e94a21a11c73b58e2d694775b1b1d379b8854
+ - pypi: https://files.pythonhosted.org/packages/02/c3/253a89ee03fc9b9682f1541728eb66db7db22148cd94f89ab22528cd1e1b/deprecation-2.1.0-py2.py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/10/9a/e3186e760c57ee5f1c27ea5cea577a0ff9abfca51eefcb4d9a4cd39aff2e/pandoc-2.4.tar.gz
+ - pypi: https://files.pythonhosted.org/packages/39/1f/54ddd9171840bbf2437287ffab18268d7ccbca7752a7f290252ddabbcef8/numpysane-0.42.tar.gz
+ - pypi: https://files.pythonhosted.org/packages/44/ca/2ecd4529be078797bda8d662d1ecb67b1bb884ee7531a4b1646162d21658/jsonschema_rs-0.46.4-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
+ - pypi: https://files.pythonhosted.org/packages/4a/49/bb935b2e68cf31e2b2face9d0841ac97447b6d0387d0c2d2255c7a2867da/scikit_activeml-1.0.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/53/f6/136e03239c2205497b482b04e05c961add0638e92d26b0d13b6499fedb40/diversipy-0.9.tar.gz
+ - pypi: https://files.pythonhosted.org/packages/54/4b/ee27938d1b2c443e89a9a10e00d2d19aa5ee300cd3d61140644e93bb083e/regex-2026.5.9-cp312-cp312-macosx_11_0_arm64.whl
+ - pypi: https://files.pythonhosted.org/packages/79/ad/45312df6b63ba64ea35b8d8f5f0c577aac16e6b416eafe8e1cb34e03f9a7/plumbum-1.10.0-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/7c/e9/9876105d1c238f82b44211d73913784ce8f53e382960b0858c0e38ac2ced/gnuplotlib-0.46.tar.gz
+ - pypi: https://files.pythonhosted.org/packages/90/d6/42d441eeceac1d8fc7d2a7480654db661282dd1f94deef344c5421ba0c3c/rapidyaml-0.12.1-cp312-cp312-macosx_11_0_arm64.whl
+ - pypi: https://files.pythonhosted.org/packages/94/ed/5d45bbd42d5407250dd46ce1b9c098d612c3a9bb538858d09da2df77c961/pylint_exit-1.2.0-py2.py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/b7/c0/4bc973defd1270b89ccaae04cef0d5fa3ea85b59b108ad2c08aeea9afb76/makefun-1.16.0-py2.py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/c8/03/99102b3772bdc5d25fc7fe5f5fb862c54bb6e863991f50d02667999942c1/licenseheaders-0.8.8-py3-none-any.whl
+ - pypi: https://files.pythonhosted.org/packages/f8/cb/91d8f07f08e86f03e0e9b5ba9db350d751119c9ba27eff4c418e4f27ee9c/fourcipp-1.103.0-py3-none-any.whl
+packages:
+- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-7_kmp_llvm.conda
+ build_number: 7
+ sha256: c0cddb66070dd6355311f7667ce2acccf70d1013edaa6e97f22859502fefdb22
+ md5: 887b70e1d607fba7957aa02f9ee0d939
+ depends:
+ - llvm-openmp >=9.0.1
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 8244
+ timestamp: 1764092331208
+- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.13.5-py312h5d8c7f2_0.conda
+ sha256: 52f4d07b10fe4a1ded570b0708594d2d9075223e1dd94d0c5988eb71f724a5f2
+ md5: 68edaee7692efb8bbef5e95375090189
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - aiohappyeyeballs >=2.5.0
+ - aiosignal >=1.4.0
+ - attrs >=17.3.0
+ - frozenlist >=1.1.1
+ - libgcc >=14
+ - multidict >=4.5,<7.0
+ - propcache >=0.2.0
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - yarl >=1.17.0,<2.0
+ license: MIT AND Apache-2.0
+ license_family: Apache
+ purls:
+ - pkg:pypi/aiohttp?source=hash-mapping
+ size: 1034187
+ timestamp: 1775000054521
+- conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.15.3-hb03c661_0.conda
+ sha256: d88aa7ae766cf584e180996e92fef2aa7d8e0a0a5ab1d4d49c32390c1b5fff31
+ md5: dcdc58c15961dbf17a0621312b01f5cb
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ license: LGPL-2.1-or-later
+ license_family: GPL
+ purls: []
+ size: 584660
+ timestamp: 1768327524772
+- conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda
+ sha256: b08ef033817b5f9f76ce62dfcac7694e7b6b4006420372de22494503decac855
+ md5: 346722a0be40f6edc53f12640d301338
+ depends:
+ - libgcc-ng >=12
+ - libstdcxx-ng >=12
+ license: BSD-2-Clause
+ license_family: BSD
+ purls: []
+ size: 2706396
+ timestamp: 1718551242397
+- conda: https://conda.anaconda.org/conda-forge/linux-64/astroid-4.0.4-py312h7900ff3_0.conda
+ sha256: 50d706c0700ee47617de6a850cab0bb4a3419c2ed86804c21f449735f09e1c48
+ md5: 78bdb6d3da524bdea10ef44e5ec7658d
+ depends:
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: LGPL-2.1-or-later
+ license_family: LGPL
+ purls:
+ - pkg:pypi/astroid?source=hash-mapping
+ size: 509570
+ timestamp: 1770634488093
+- conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2
+ sha256: 26ab9386e80bf196e51ebe005da77d57decf6d989b4f34d96130560bc133479c
+ md5: 6b889f174df1e0f816276ae69281af4d
+ depends:
+ - at-spi2-core >=2.40.0,<2.41.0a0
+ - atk-1.0 >=2.36.0
+ - dbus >=1.13.6,<2.0a0
+ - libgcc-ng >=9.3.0
+ - libglib >=2.68.1,<3.0a0
+ license: LGPL-2.1-or-later
+ license_family: LGPL
+ purls: []
+ size: 339899
+ timestamp: 1619122953439
+- conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2
+ sha256: c4f9b66bd94c40d8f1ce1fad2d8b46534bdefda0c86e3337b28f6c25779f258d
+ md5: 8cb2fc4cd6cc63f1369cfa318f581cc3
+ depends:
+ - dbus >=1.13.6,<2.0a0
+ - libgcc-ng >=9.3.0
+ - libglib >=2.68.3,<3.0a0
+ - xorg-libx11
+ - xorg-libxi
+ - xorg-libxtst
+ license: LGPL-2.1-or-later
+ license_family: LGPL
+ purls: []
+ size: 658390
+ timestamp: 1625848454791
+- conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda
+ sha256: df682395d05050cd1222740a42a551281210726a67447e5258968dd55854302e
+ md5: f730d54ba9cd543666d7220c9f7ed563
+ depends:
+ - libgcc-ng >=12
+ - libglib >=2.80.0,<3.0a0
+ - libstdcxx-ng >=12
+ constrains:
+ - atk-1.0 2.38.0
+ license: LGPL-2.0-or-later
+ license_family: LGPL
+ purls: []
+ size: 355900
+ timestamp: 1713896169874
+- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.10.1-ha62d5e7_3.conda
+ sha256: ccbf2cc4bea4aab6e071d67ecc2743197759f6df855787e7a5f57f7973f913a2
+ md5: 55eaf7066da1299d217ab32baedc7fa8
+ depends:
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ - aws-c-io >=0.26.3,<0.26.4.0a0
+ - aws-c-sdkutils >=0.2.4,<0.2.5.0a0
+ - aws-c-common >=0.12.6,<0.12.7.0a0
+ - aws-c-http >=0.10.13,<0.10.14.0a0
+ - aws-c-cal >=0.9.13,<0.9.14.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 134427
+ timestamp: 1777489423676
+- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.9.13-h2c9d079_1.conda
+ sha256: f21d648349a318f4ae457ea5403d542ba6c0e0343b8642038523dd612b2a5064
+ md5: 3c3d02681058c3d206b562b2e3bc337f
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - aws-c-common >=0.12.6,<0.12.7.0a0
+ - libgcc >=14
+ - openssl >=3.5.4,<4.0a0
+ license: Apache-2.0
+ license_family: Apache
+ purls: []
+ size: 56230
+ timestamp: 1764593147526
+- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.12.6-hb03c661_0.conda
+ sha256: 926a5b9de0a586e88669d81de717c8dd3218c51ce55658e8a16af7e7fe87c833
+ md5: e36ad70a7e0b48f091ed6902f04c23b8
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ license: Apache-2.0
+ license_family: Apache
+ purls: []
+ size: 239605
+ timestamp: 1763585595898
+- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.2-h8b1a151_0.conda
+ sha256: 1838bdc077b77168416801f4715335b65e9223f83641a2c28644f8acd8f9db0e
+ md5: f16f498641c9e05b645fe65902df661a
+ depends:
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ - aws-c-common >=0.12.6,<0.12.7.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 22278
+ timestamp: 1767790836624
+- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.7.0-h9b893ba_0.conda
+ sha256: 9692edaeaf90f7710b7ec49c7ca42961c59344dafa6fadbaec8c283b0606ca68
+ md5: 60076118b1579967748f0c9a2912de7c
+ depends:
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ - libstdcxx >=14
+ - aws-c-common >=0.12.6,<0.12.7.0a0
+ - aws-checksums >=0.2.10,<0.2.11.0a0
+ - aws-c-io >=0.26.3,<0.26.4.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 59054
+ timestamp: 1774479894768
+- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.10.13-h4bacb7b_0.conda
+ sha256: 38cfc8894db6729770ac18f900296c3f7c20f349a5586a8d8e1a62571fce61d5
+ md5: 77f70a9ab785a146dbf66fba00131403
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - aws-c-compression >=0.3.2,<0.3.3.0a0
+ - aws-c-common >=0.12.6,<0.12.7.0a0
+ - aws-c-cal >=0.9.13,<0.9.14.0a0
+ - aws-c-io >=0.26.3,<0.26.4.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 225826
+ timestamp: 1774488399486
+- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.26.3-h692f434_1.conda
+ sha256: e3e33031d641864128ab11f9b8585ad5beb82fa988fe833bb0767dd01878a371
+ md5: 14260392d0b491c537b5e26e9a506fff
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - aws-c-common >=0.12.6,<0.12.7.0a0
+ - s2n >=1.7.2,<1.7.3.0a0
+ - aws-c-cal >=0.9.13,<0.9.14.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 181583
+ timestamp: 1777471132287
+- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.15.2-hc1936db_2.conda
+ sha256: 236ab4138ff4600f95903d2da94125df78577055f6687afa8806db0f6ed2e1a8
+ md5: 9120bc47b6f837f3cea90928c3e9a8fa
+ depends:
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ - aws-c-http >=0.10.13,<0.10.14.0a0
+ - aws-c-common >=0.12.6,<0.12.7.0a0
+ - aws-c-io >=0.26.3,<0.26.4.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 221638
+ timestamp: 1777488145895
+- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.12.2-he6ee468_1.conda
+ sha256: 4cecb4d595b7cf558087c37b8131cae5204b2c64d75f6b951dc3731d3f872bb8
+ md5: 50ae8372984b8b98e056ac8f6b70ab29
+ depends:
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ - aws-c-common >=0.12.6,<0.12.7.0a0
+ - aws-checksums >=0.2.10,<0.2.11.0a0
+ - aws-c-cal >=0.9.13,<0.9.14.0a0
+ - aws-c-io >=0.26.3,<0.26.4.0a0
+ - openssl >=3.5.6,<4.0a0
+ - aws-c-http >=0.10.13,<0.10.14.0a0
+ - aws-c-auth >=0.10.1,<0.10.2.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 152657
+ timestamp: 1777824812393
+- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.4-h8b1a151_4.conda
+ sha256: 9d62c5029f6f8219368a8665f0a549da572dc777f52413b7d75609cacdbc02cc
+ md5: c7e3e08b7b1b285524ab9d74162ce40b
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - aws-c-common >=0.12.6,<0.12.7.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 59383
+ timestamp: 1764610113765
+- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.10-h8b1a151_0.conda
+ sha256: 09472dd5fa4473cffd44741ee4c1112f2c76d7168d1343de53c2ad283dc1efa6
+ md5: f8e1bcc5c7d839c5882e94498791be08
+ depends:
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ - aws-c-common >=0.12.6,<0.12.7.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 101435
+ timestamp: 1771063496927
+- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.38.3-h745e52d_1.conda
+ sha256: 5616649034662ab7846b78b344891f49b895807cabd83918aebb3439aa9ca405
+ md5: 6a65b3595a8933808c03ff065dfb7702
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libstdcxx >=14
+ - libgcc >=14
+ - aws-c-auth >=0.10.1,<0.10.2.0a0
+ - aws-c-cal >=0.9.13,<0.9.14.0a0
+ - aws-c-common >=0.12.6,<0.12.7.0a0
+ - aws-c-s3 >=0.12.2,<0.12.3.0a0
+ - aws-c-mqtt >=0.15.2,<0.15.3.0a0
+ - aws-c-io >=0.26.3,<0.26.4.0a0
+ - aws-c-event-stream >=0.7.0,<0.7.1.0a0
+ - aws-c-http >=0.10.13,<0.10.14.0a0
+ - aws-c-sdkutils >=0.2.4,<0.2.5.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 412541
+ timestamp: 1778019077033
+- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.747-h41c0014_4.conda
+ sha256: f17585991350e00084614faaa704166a07fdcf58e80c76003e35111093c6e5e9
+ md5: 169a79ea1127077d8dc36dc963ff55ac
+ depends:
+ - libstdcxx >=14
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ - aws-c-common >=0.12.6,<0.12.7.0a0
+ - libzlib >=1.3.2,<2.0a0
+ - aws-crt-cpp >=0.38.3,<0.38.4.0a0
+ - libcurl >=8.20.0,<9.0a0
+ - aws-c-event-stream >=0.7.0,<0.7.1.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 3624409
+ timestamp: 1778156208464
+- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.16.2-h206d751_0.conda
+ sha256: 321d1070905e467b6bc6f5067b97c1868d7345c272add82b82e08a0224e326f0
+ md5: 5492abf806c45298ae642831c670bba0
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libcurl >=8.18.0,<9.0a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - openssl >=3.5.4,<4.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 348729
+ timestamp: 1768837519361
+- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.13.3-hed0cdb0_1.conda
+ sha256: 2beb6ae8406f946b8963a67e72fe74453e1411c5ae7e992978340de6c512d13c
+ md5: 68bfb556bdf56d56e9f38da696e752ca
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - azure-core-cpp >=1.16.2,<1.16.3.0a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - openssl >=3.5.5,<4.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 250511
+ timestamp: 1770344967948
+- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.16.0-hdd73cc9_1.conda
+ sha256: cef75b91bdd5a65c560b501df78905437cc2090a64b4c5ecd7da9e08e9e9af7c
+ md5: 939d9ce324e51961c7c4c0046733dbb7
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - azure-core-cpp >=1.16.2,<1.16.3.0a0
+ - azure-storage-common-cpp >=12.12.0,<12.12.1.0a0
+ - libgcc >=14
+ - libstdcxx >=14
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 579825
+ timestamp: 1770321459546
+- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.12.0-ha7a2c86_1.conda
+ sha256: ef7d1cae36910b21385d0816f8524a84dee1513e0306927e41a6bd32b5b9a0d0
+ md5: 6400f73fe5ebe19fe7aca3616f1f1de7
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - azure-core-cpp >=1.16.2,<1.16.3.0a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - libxml2
+ - libxml2-16 >=2.14.6
+ - openssl >=3.5.5,<4.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 150405
+ timestamp: 1770240307002
+- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.14.0-h52c5a47_1.conda
+ sha256: 55aa8ad5217d358e0ccf4a715bd1f9bafef3cd1c2ea4021f0e916f174c20f8e3
+ md5: 6d10339800840562b7dad7775f5d2c16
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - azure-core-cpp >=1.16.2,<1.16.3.0a0
+ - azure-storage-blobs-cpp >=12.16.0,<12.16.1.0a0
+ - azure-storage-common-cpp >=12.12.0,<12.12.1.0a0
+ - libgcc >=14
+ - libstdcxx >=14
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 302524
+ timestamp: 1770384269834
+- conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.5.0-py312h90b7ffd_0.conda
+ sha256: a2b08a4e5e549b5f67c38edffd175437e2208547a7e67b5fa5373b67ef419e50
+ md5: b31dba71fe091e7201826e57e0f7b261
+ depends:
+ - python
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ - zstd >=1.5.7,<1.6.0a0
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause AND MIT AND EPL-2.0
+ purls:
+ - pkg:pypi/backports-zstd?source=compressed-mapping
+ size: 239928
+ timestamp: 1778594049826
+- conda: https://conda.anaconda.org/conda-forge/linux-64/bcrypt-5.0.0-py312h868fb18_1.conda
+ sha256: 22020286e3d27eba7c9efef79c1020782885992aea0e7d28d7274c4405001521
+ md5: 8fbbd949c452efde5a75b62b22a88938
+ depends:
+ - python
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - __glibc >=2.17
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/bcrypt?source=hash-mapping
+ size: 292835
+ timestamp: 1762497719397
+- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-default_hfdba357_102.conda
+ sha256: 0a7d405064f53b9d91d92515f1460f7906ee5e8523f3cd8973430e81219f4917
+ md5: 8165352fdce2d2025bf884dc0ee85700
+ depends:
+ - ld_impl_linux-64 2.45.1 default_hbd61a6d_102
+ - sysroot_linux-64
+ - zstd >=1.5.7,<1.6.0a0
+ license: GPL-3.0-only
+ license_family: GPL
+ purls: []
+ size: 3661455
+ timestamp: 1774197460085
+- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.306-mkl.conda
+ build_number: 6
+ sha256: 1b842287b09877ec11062bdcd4cb6bc24fddd1d71b3dea893163207ed2b7c7ad
+ md5: 51424ae4b1ba5521ee838721d63d4390
+ depends:
+ - blas-devel 3.11.0 6*_mkl
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 18733
+ timestamp: 1774503215756
+- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.11.0-6_hcf00494_mkl.conda
+ build_number: 6
+ sha256: c4d089d892dc277d2f63462d4d5cd8d26f22ced12d862d45c4cc9c0dba10667a
+ md5: b789b886f2b45c3a9c91935639717808
+ depends:
+ - libblas 3.11.0 6_h5875eb1_mkl
+ - libcblas 3.11.0 6_hfef963f_mkl
+ - liblapack 3.11.0 6_h5e43f62_mkl
+ - liblapacke 3.11.0 6_hdba1596_mkl
+ - mkl >=2025.3.1,<2026.0a0
+ - mkl-devel 2025.3.*
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 18446
+ timestamp: 1774503092047
+- conda: https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda
+ sha256: e7af5d1183b06a206192ff440e08db1c4e8b2ca1f8376ee45fb2f3a85d4ee45d
+ md5: 2c2fae981fd2afd00812c92ac47d023d
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - libstdcxx >=13
+ - libzlib >=1.3.1,<2.0a0
+ - lz4-c >=1.10.0,<1.11.0a0
+ - snappy >=1.2.1,<1.3.0a0
+ - zstd >=1.5.6,<1.6.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 48427
+ timestamp: 1733513201413
+- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.2.0-hed03a55_1.conda
+ sha256: e511644d691f05eb12ebe1e971fd6dc3ae55a4df5c253b4e1788b789bdf2dfa6
+ md5: 8ccf913aaba749a5496c17629d859ed1
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - brotli-bin 1.2.0 hb03c661_1
+ - libbrotlidec 1.2.0 hb03c661_1
+ - libbrotlienc 1.2.0 hb03c661_1
+ - libgcc >=14
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 20103
+ timestamp: 1764017231353
+- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.2.0-hb03c661_1.conda
+ sha256: 64b137f30b83b1dd61db6c946ae7511657eead59fdf74e84ef0ded219605aa94
+ md5: af39b9a8711d4a8d437b52c1d78eb6a1
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libbrotlidec 1.2.0 hb03c661_1
+ - libbrotlienc 1.2.0 hb03c661_1
+ - libgcc >=14
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 21021
+ timestamp: 1764017221344
+- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py312hdb49522_1.conda
+ sha256: 49df13a1bb5e388ca0e4e87022260f9501ed4192656d23dc9d9a1b4bf3787918
+ md5: 64088dffd7413a2dd557ce837b4cbbdb
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - libbrotlicommon 1.2.0 hb03c661_1
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/brotli?source=hash-mapping
+ size: 368300
+ timestamp: 1764017300621
+- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda
+ sha256: 0b75d45f0bba3e95dc693336fa51f40ea28c980131fec438afb7ce6118ed05f6
+ md5: d2ffd7602c02f2b316fd921d39876885
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ license: bzip2-1.0.6
+ license_family: BSD
+ purls: []
+ size: 260182
+ timestamp: 1771350215188
+- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda
+ sha256: cc9accf72fa028d31c2a038460787751127317dcfa991f8d1f1babf216bb454e
+ md5: 920bb03579f15389b9e512095ad995b7
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 207882
+ timestamp: 1765214722852
+- conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda
+ sha256: 06525fa0c4e4f56e771a3b986d0fdf0f0fc5a3270830ee47e127a5105bde1b9a
+ md5: bb6c4808bfa69d6f7f6b07e5846ced37
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - fontconfig >=2.15.0,<3.0a0
+ - fonts-conda-ecosystem
+ - icu >=78.1,<79.0a0
+ - libexpat >=2.7.3,<3.0a0
+ - libfreetype >=2.14.1
+ - libfreetype6 >=2.14.1
+ - libgcc >=14
+ - libglib >=2.86.3,<3.0a0
+ - libpng >=1.6.53,<1.7.0a0
+ - libstdcxx >=14
+ - libxcb >=1.17.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - pixman >=0.46.4,<1.0a0
+ - xorg-libice >=1.1.2,<2.0a0
+ - xorg-libsm >=1.2.6,<2.0a0
+ - xorg-libx11 >=1.8.12,<2.0a0
+ - xorg-libxext >=1.3.6,<2.0a0
+ - xorg-libxrender >=0.9.12,<0.10.0a0
+ license: LGPL-2.1-only or MPL-1.1
+ purls: []
+ size: 989514
+ timestamp: 1766415934926
+- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py312h460c074_1.conda
+ sha256: 7dafe8173d5f94e46cf9cd597cc8ff476a8357fbbd4433a8b5697b2864845d9c
+ md5: 648ee28dcd4e07a1940a17da62eccd40
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libffi >=3.5.2,<3.6.0a0
+ - libgcc >=14
+ - pycparser
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/cffi?source=hash-mapping
+ size: 295716
+ timestamp: 1761202958833
+- conda: https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.5-py312h4f23490_1.conda
+ sha256: 02c483817cce596ab0fb79f0f64027a166e20db0c84973e61a08285d53ee463d
+ md5: 84bf349fad55056ed326fc550671b65c
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - numpy >=1.21.2
+ - numpy >=1.23,<3
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/cftime?source=hash-mapping
+ size: 426552
+ timestamp: 1768510920948
+- conda: https://conda.anaconda.org/conda-forge/linux-64/cli11-2.6.2-h54a6638_0.conda
+ sha256: 1d635e8963e094d95d35148df4b46e495f93bb0750ad5069f4e0e6bbb47ac3bf
+ md5: 83dae3dfadcfec9b37a9fbff6f7f7378
+ depends:
+ - libstdcxx >=14
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 99051
+ timestamp: 1772207728613
+- conda: https://conda.anaconda.org/conda-forge/linux-64/commitizen-4.15.1-py312h7900ff3_0.conda
+ sha256: 97dc6281d5bef4a7f6979f50ea5964eee358183d11675b5c6d22e810829f5682
+ md5: 9f1d76f573c5022ca2160e196374f6cc
+ depends:
+ - argcomplete <3.7,>=1.12.1
+ - charset-normalizer <4,>=2.1.0
+ - colorama <1.0,>=0.4.1
+ - decli <1.0,>=0.6.0
+ - deprecated <2,>=1.2.13
+ - jinja2 >=2.10.3
+ - packaging >=26
+ - prompt-toolkit !=3.0.52
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - pyyaml >=3.8
+ - questionary <3.0,>=2.0
+ - termcolor <4.0.0,>=1.1.0
+ - tomlkit <1.0.0,>=0.8.0
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/commitizen?source=hash-mapping
+ size: 226714
+ timestamp: 1778095575843
+- conda: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-15.2.0-h53410ce_19.conda
+ sha256: 1a53d0bd9d8197a7dc57f9b154e24d908ade29934e0a450ee6e40294d0a237f9
+ md5: 3b482cadfc77f094c8b3016166292dfb
+ depends:
+ - gcc_impl_linux-64 >=15.2.0,<15.2.1.0a0
+ license: GPL-3.0-only WITH GCC-exception-3.1
+ license_family: GPL
+ purls: []
+ size: 31857
+ timestamp: 1778269225076
+- conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py312h0a2e395_4.conda
+ sha256: 62447faf7e8eb691e407688c0b4b7c230de40d5ecf95bf301111b4d05c5be473
+ md5: 43c2bc96af3ae5ed9e8a10ded942aa50
+ depends:
+ - numpy >=1.25
+ - python
+ - __glibc >=2.17,<3.0.a0
+ - libstdcxx >=14
+ - libgcc >=14
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/contourpy?source=hash-mapping
+ size: 320386
+ timestamp: 1769155979897
+- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.14.0-py312h8a5da7c_0.conda
+ sha256: 6ed9b689e92c5e202d834d5a4eeba990ecbfda104ef40ac455f3d006d439a926
+ md5: c78de13127e71cb1e581f473ac76f360
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - tomli
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/coverage?source=hash-mapping
+ size: 390409
+ timestamp: 1778444934285
+- conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-48.0.0-py312ha4b625e_0.conda
+ sha256: 16d3d1e8df34a36430a28f423380fbd93abe5670ca7b52e9f4a64c091fd3ddd9
+ md5: c5a8e173200adf567dc2818d8bf1325f
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - cffi >=2.0
+ - libgcc >=14
+ - openssl >=3.5.6,<4.0a0
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - __glibc >=2.17
+ license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT
+ license_family: BSD
+ purls:
+ - pkg:pypi/cryptography?source=hash-mapping
+ size: 1912222
+ timestamp: 1777966300032
+- conda: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.28-hac629b4_1.conda
+ sha256: 7684da83306bb69686c0506fb09aa7074e1a55ade50c3a879e4e5df6eebb1009
+ md5: af491aae930edc096b58466c51c4126c
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - krb5 >=1.22.2,<1.23.0a0
+ - libgcc >=13
+ - libntlm >=1.8,<2.0a0
+ - libstdcxx >=13
+ - libxcrypt >=4.4.36
+ - openssl >=3.5.5,<4.0a0
+ license: BSD-3-Clause-Attribution
+ license_family: BSD
+ purls: []
+ size: 210103
+ timestamp: 1771943128249
+- conda: https://conda.anaconda.org/conda-forge/linux-64/cytoolz-1.1.0-py312h4c3975b_2.conda
+ sha256: 75b3d3c9497cded41e029b7a0ce4cc157334bbc864d6701221b59bb76af4396d
+ md5: 29fd0bdf551881ab3d2801f7deaba528
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - toolz >=0.10.0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/cytoolz?source=hash-mapping
+ size: 623770
+ timestamp: 1771855837505
+- conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda
+ sha256: 22053a5842ca8ee1cf8e1a817138cdb5e647eb2c46979f84153f6ad7bde73020
+ md5: 418c6ca5929a611cbd69204907a83995
+ depends:
+ - libgcc-ng >=12
+ license: BSD-2-Clause
+ license_family: BSD
+ purls: []
+ size: 760229
+ timestamp: 1685695754230
+- conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h24cb091_1.conda
+ sha256: 8bb557af1b2b7983cf56292336a1a1853f26555d9c6cecf1e5b2b96838c9da87
+ md5: ce96f2f470d39bd96ce03945af92e280
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - libzlib >=1.3.1,<2.0a0
+ - libglib >=2.86.2,<3.0a0
+ - libexpat >=2.7.3,<3.0a0
+ license: AFL-2.1 OR GPL-2.0-or-later
+ purls: []
+ size: 447649
+ timestamp: 1764536047944
+- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.20-py312h8285ef7_0.conda
+ sha256: f20121b67149ff80bf951ccae7442756586d8789204cd08ade59397b22bfd098
+ md5: ee1b48795ceb07311dd3e665dd4f5f33
+ depends:
+ - python
+ - libgcc >=14
+ - libstdcxx >=14
+ - __glibc >=2.17,<3.0.a0
+ - python_abi 3.12.* *_cp312
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/debugpy?source=hash-mapping
+ size: 2858582
+ timestamp: 1769744978783
+- conda: https://conda.anaconda.org/conda-forge/linux-64/dm-tree-0.1.10-py312hecca40a_0.conda
+ sha256: f03671b4e628ffbb8ca85c0756890d911abe16686c71f41ae941e6c743cbda03
+ md5: 063b754d00ecebf13abb8fcdb1947e89
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - absl-py >=0.6.1
+ - attrs >=18.2.0
+ - libabseil * cxx17*
+ - libabseil >=20260107.1,<20260108.0a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - numpy >=1.21
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - wrapt >=1.11.2
+ license: Apache-2.0
+ license_family: Apache
+ purls:
+ - pkg:pypi/dm-tree?source=hash-mapping
+ size: 135819
+ timestamp: 1775827137564
+- conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.4.0-hecca717_0.conda
+ sha256: 40cdd1b048444d3235069d75f9c8e1f286db567f6278a93b4f024e5642cfaecc
+ md5: dbe3ec0f120af456b3477743ffd99b74
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 71809
+ timestamp: 1765193127016
+- conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-5.0.1-hc65338a_0.conda
+ sha256: f122c5bb618532eb40124f34dc3d467b9142c4a573c206e3e6a51df671345d6a
+ md5: fcc98d38ae074ee72ee9152e357bcbf2
+ license: MPL-2.0
+ license_family: MOZILLA
+ purls: []
+ size: 1311364
+ timestamp: 1773744756289
+- conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-abi-5.0.1.80-hf414acd_0.conda
+ sha256: acde70d55f7dbbc043d733427fd6f1ec6ca49db7cbabcf7a656dd29a952b8ad8
+ md5: a85c1768af7780d67c6446c17848b76f
+ constrains:
+ - eigen >=5.0.1,<5.0.2.0a0
+ license: MPL-2.0
+ license_family: MOZILLA
+ purls: []
+ size: 13265
+ timestamp: 1773744756289
+- conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-hb03c661_2.conda
+ sha256: a5b51e491fec22bcc1765f5b2c8fff8a97428e9a5a7ee6730095fb9d091b0747
+ md5: 057083b06ccf1c2778344b6dabace38b
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libdrm >=2.4.125,<2.5.0a0
+ - libegl >=1.7.0,<2.0a0
+ - libegl-devel
+ - libgcc >=14
+ - libgl >=1.7.0,<2.0a0
+ - libgl-devel
+ - libglx >=1.7.0,<2.0a0
+ - libglx-devel
+ - xorg-libx11 >=1.8.12,<2.0a0
+ - xorg-libxdamage >=1.1.6,<2.0a0
+ - xorg-libxext >=1.3.6,<2.0a0
+ - xorg-libxfixes >=6.0.1,<7.0a0
+ - xorg-libxxf86vm >=1.1.6,<2.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 411735
+ timestamp: 1758743520805
+- conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.8.0-hecca717_0.conda
+ sha256: ca4dc1da00a8aaa56c1088e7f45f1859ecea6f75874e67584f1af6e5cf8179f8
+ md5: 992e529e407c9d67d50be1d7543fde4c
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libexpat 2.8.0 hecca717_0
+ - libgcc >=14
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 148114
+ timestamp: 1777846120303
+- conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-8.1.1-gpl_hee00b0e_901.conda
+ sha256: 6af3f45857478c28fa134e23a8ab7a81ce63cdd29aa2d899232eb7d9410b26e7
+ md5: 57b938a79ebb6b996505ea79394bd0c9
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - alsa-lib >=1.2.15.3,<1.3.0a0
+ - aom >=3.9.1,<3.10.0a0
+ - bzip2 >=1.0.8,<2.0a0
+ - dav1d >=1.2.1,<1.2.2.0a0
+ - fontconfig >=2.17.1,<3.0a0
+ - fonts-conda-ecosystem
+ - gmp >=6.3.0,<7.0a0
+ - harfbuzz >=14.2.0
+ - lame >=3.100,<3.101.0a0
+ - libass >=0.17.4,<0.17.5.0a0
+ - libexpat >=2.8.0,<3.0a0
+ - libfreetype >=2.14.3
+ - libfreetype6 >=2.14.3
+ - libgcc >=14
+ - libiconv >=1.18,<2.0a0
+ - libjxl >=0.11,<1.0a0
+ - liblzma >=5.8.3,<6.0a0
+ - libopenvino >=2026.0.0,<2026.0.1.0a0
+ - libopenvino-auto-batch-plugin >=2026.0.0,<2026.0.1.0a0
+ - libopenvino-auto-plugin >=2026.0.0,<2026.0.1.0a0
+ - libopenvino-hetero-plugin >=2026.0.0,<2026.0.1.0a0
+ - libopenvino-intel-cpu-plugin >=2026.0.0,<2026.0.1.0a0
+ - libopenvino-intel-gpu-plugin >=2026.0.0,<2026.0.1.0a0
+ - libopenvino-intel-npu-plugin >=2026.0.0,<2026.0.1.0a0
+ - libopenvino-ir-frontend >=2026.0.0,<2026.0.1.0a0
+ - libopenvino-onnx-frontend >=2026.0.0,<2026.0.1.0a0
+ - libopenvino-paddle-frontend >=2026.0.0,<2026.0.1.0a0
+ - libopenvino-pytorch-frontend >=2026.0.0,<2026.0.1.0a0
+ - libopenvino-tensorflow-frontend >=2026.0.0,<2026.0.1.0a0
+ - libopenvino-tensorflow-lite-frontend >=2026.0.0,<2026.0.1.0a0
+ - libopus >=1.6.1,<2.0a0
+ - libplacebo >=7.360.1,<7.361.0a0
+ - librsvg >=2.62.1,<3.0a0
+ - libstdcxx >=14
+ - libva >=2.23.0,<3.0a0
+ - libvorbis >=1.3.7,<1.4.0a0
+ - libvpl >=2.16.0,<2.17.0a0
+ - libvpx >=1.15.2,<1.16.0a0
+ - libvulkan-loader >=1.4.341.0,<2.0a0
+ - libwebp-base >=1.6.0,<2.0a0
+ - libxcb >=1.17.0,<2.0a0
+ - libxml2
+ - libxml2-16 >=2.14.6
+ - libzlib >=1.3.2,<2.0a0
+ - openh264 >=2.6.0,<2.6.1.0a0
+ - openssl >=3.5.6,<4.0a0
+ - pulseaudio-client >=17.0,<17.1.0a0
+ - sdl2 >=2.32.56,<3.0a0
+ - shaderc >=2026.2,<2026.3.0a0
+ - svt-av1 >=4.0.1,<4.0.2.0a0
+ - x264 >=1!164.3095,<1!165
+ - x265 >=3.5,<3.6.0a0
+ - xorg-libx11 >=1.8.13,<2.0a0
+ constrains:
+ - __cuda >=12.8
+ license: GPL-2.0-or-later
+ license_family: GPL
+ purls: []
+ size: 12983934
+ timestamp: 1777900506207
+- conda: https://conda.anaconda.org/conda-forge/linux-64/flatbuffers-25.9.23-hb7d4c21_0.conda
+ sha256: e5f90c2fd61012d6ad332657a5bf5455620f0db8524f0b005d91e1c2737bad69
+ md5: 10a330bfd5345af730b0fc1349d15eaf
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 1584732
+ timestamp: 1761142459651
+- conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-12.1.0-hff5e90c_0.conda
+ sha256: d4e92ba7a7b4965341dc0fca57ec72d01d111b53c12d11396473115585a9ead6
+ md5: f7d7a4104082b39e3b3473fbd4a38229
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 198107
+ timestamp: 1767681153946
+- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_0.conda
+ sha256: aa4a44dba97151221100a637c7f4bde619567afade9c0265f8e1c8eed8d7bd8c
+ md5: 867127763fbe935bab59815b6e0b7b5c
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libexpat >=2.7.4,<3.0a0
+ - libfreetype >=2.14.1
+ - libfreetype6 >=2.14.1
+ - libgcc >=14
+ - libuuid >=2.41.3,<3.0a0
+ - libzlib >=1.3.1,<2.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 270705
+ timestamp: 1771382710863
+- conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.62.1-py312h8a5da7c_0.conda
+ sha256: e81f6e1ddadbc81ce56b158790148835256d2a3d5762016d389daaa06decfeab
+ md5: 2396fee22e84f69dffc6e23135905ce8
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - brotli
+ - libgcc >=14
+ - munkres
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - unicodedata2 >=15.1.0
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/fonttools?source=hash-mapping
+ size: 2953293
+ timestamp: 1776708606358
+- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.3-ha770c72_0.conda
+ sha256: c934c385889c7836f034039b43b05ccfa98f53c900db03d8411189892ced090b
+ md5: 8462b5322567212beeb025f3519fb3e2
+ depends:
+ - libfreetype 2.14.3 ha770c72_0
+ - libfreetype6 2.14.3 h73754d4_0
+ license: GPL-2.0-only OR FTL
+ purls: []
+ size: 173839
+ timestamp: 1774298173462
+- conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda
+ sha256: 858283ff33d4c033f4971bf440cebff217d5552a5222ba994c49be990dacd40d
+ md5: f9f81ea472684d75b9dd8d0b328cf655
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ license: LGPL-2.1-or-later
+ purls: []
+ size: 61244
+ timestamp: 1757438574066
+- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.7.0-py312h447239a_0.conda
+ sha256: f4e0e6cd241bc24afb2d6d08e5d2ba170fad2475e522bdf297b7271bba268be6
+ md5: 63e20cf7b7460019b423fc06abb96c60
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/frozenlist?source=hash-mapping
+ size: 55037
+ timestamp: 1752167383781
+- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-15.2.0-h0dff253_19.conda
+ sha256: 54a0d9ee655ba83b78b7a796f12224b26c24943d8970559ecc47ccd6c2b0fa72
+ md5: 18ec2ee87e4f532afa459ce8ea9a6b02
+ depends:
+ - conda-gcc-specs
+ - gcc_impl_linux-64 15.2.0 he0086c7_19
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 29561
+ timestamp: 1778269371353
+- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.2.0-he0086c7_19.conda
+ sha256: a48400ec4b73369c1c59babe4ad35821b63a88bba0ec40a80cea5f8c53a26b83
+ md5: e3be72048d3c4a78b8e27ec48ba06252
+ depends:
+ - binutils_impl_linux-64 >=2.45
+ - libgcc >=15.2.0
+ - libgcc-devel_linux-64 15.2.0 hcc6f6b0_119
+ - libgomp >=15.2.0
+ - libsanitizer 15.2.0 h90f66d4_19
+ - libstdcxx >=15.2.0
+ - libstdcxx-devel_linux-64 15.2.0 hd446a21_119
+ - sysroot_linux-64
+ license: GPL-3.0-only WITH GCC-exception-3.1
+ license_family: GPL
+ purls: []
+ size: 81180457
+ timestamp: 1778269124617
+- conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.6-h2b0a6b4_0.conda
+ sha256: c5594497f0646e9079705b3199dbb2d5b13c48173cf110000fa1c8818e2b3e0c
+ md5: 7892f39a39ed39591a89a28eba03e987
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libglib >=2.86.4,<3.0a0
+ - libjpeg-turbo >=3.1.2,<4.0a0
+ - liblzma >=5.8.2,<6.0a0
+ - libpng >=1.6.56,<1.7.0a0
+ - libtiff >=4.7.1,<4.8.0a0
+ license: LGPL-2.1-or-later
+ license_family: LGPL
+ purls: []
+ size: 577414
+ timestamp: 1774985848058
+- conda: https://conda.anaconda.org/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://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-hd590300_0.conda
+ sha256: aac402a8298f0c0cc528664249170372ef6b37ac39fdc92b40601a6aed1e32ff
+ md5: 3bf7b9fd5a7136126e0234db4b87c8b6
+ depends:
+ - libgcc-ng >=12
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 77248
+ timestamp: 1712692454246
+- conda: https://conda.anaconda.org/conda-forge/linux-64/gl2ps-1.4.2-h36e74d4_2.conda
+ sha256: e28a214c71590a09f75f1aaccf5795bbcfb99b00c2d6ef55d34320b4f47485bd
+ md5: 787c780ff43f9f79d78d01e476b81a7c
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libgl >=1.7.0,<2.0a0
+ - libpng >=1.6.55,<1.7.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - xorg-libxfixes >=6.0.2,<7.0a0
+ license: LGPL-2.0-or-later
+ license_family: LGPL
+ purls: []
+ size: 75835
+ timestamp: 1773985381918
+- conda: https://conda.anaconda.org/conda-forge/linux-64/glew-2.3.0-h71661d4_0.conda
+ sha256: 535d152ee06e3d3015a5ab410dfea9574e1678e226fa166f859a0b9e1153e597
+ md5: 7eefecda1c71c380bfc406d16e78bbee
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libgl >=1.7.0,<2.0a0
+ - libglu >=9.0.3,<9.1.0a0
+ - xorg-libx11 >=1.8.12,<2.0a0
+ - xorg-libxext
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 492673
+ timestamp: 1766373546677
+- conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.88.1-hee1de02_2.conda
+ sha256: ae41fd5c867bc4e713a8cc1dc06f5b418026fec116cc222abe33e94235c6b241
+ md5: e5a459d2bb98edb88de5a44bfad66b9d
+ depends:
+ - libglib ==2.88.1 h0d30a3d_2
+ - libffi
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ license: LGPL-2.1-or-later
+ purls: []
+ size: 236955
+ timestamp: 1778508800134
+- conda: https://conda.anaconda.org/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://conda.anaconda.org/conda-forge/linux-64/glslang-16.3.0-h96af755_0.conda
+ sha256: 3c9b6a90937a96ad27d160304cdbe5e9961db613aba2b84ff673429f0c61d48e
+ md5: d175cb2c14104728ada04883786a309d
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - spirv-tools >=2026,<2027.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 1366082
+ timestamp: 1777747028121
+- conda: https://conda.anaconda.org/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://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.3.0-py312hcaba1f9_1.conda
+ sha256: 6fbdd686d04a0d8c48efe92795137d3bba55a4325acd7931978fd8ea5e24684d
+ md5: fedbe80d864debab03541e1b447fc12a
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - gmp >=6.3.0,<7.0a0
+ - libgcc >=14
+ - mpc >=1.3.1,<2.0a0
+ - mpfr >=4.2.1,<5.0a0
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: LGPL-3.0-or-later
+ license_family: LGPL
+ purls:
+ - pkg:pypi/gmpy2?source=hash-mapping
+ size: 253171
+ timestamp: 1773245116314
+- conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-hecca717_2.conda
+ sha256: 25ba37da5c39697a77fce2c9a15e48cf0a84f1464ad2aafbe53d8357a9f6cc8c
+ md5: 2cd94587f3a401ae05e03a6caf09539d
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ license: LGPL-2.0-or-later
+ license_family: LGPL
+ purls: []
+ size: 99596
+ timestamp: 1755102025473
+- conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-14.1.2-h8b86629_0.conda
+ sha256: 48d4aae8d2f7dd038b8c2b6a1b68b7bca13fa6b374b78c09fcc0757fa21234a1
+ md5: 341fc61cfe8efa5c72d24db56c776f44
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - adwaita-icon-theme
+ - cairo >=1.18.4,<2.0a0
+ - fonts-conda-ecosystem
+ - gdk-pixbuf >=2.44.4,<3.0a0
+ - gtk3 >=3.24.43,<4.0a0
+ - gts >=0.7.6,<0.8.0a0
+ - libexpat >=2.7.3,<3.0a0
+ - libgcc >=14
+ - libgd >=2.3.3,<2.4.0a0
+ - libglib >=2.86.3,<3.0a0
+ - librsvg >=2.60.0,<3.0a0
+ - libstdcxx >=14
+ - libwebp-base >=1.6.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - pango >=1.56.4,<2.0a0
+ license: EPL-1.0
+ license_family: Other
+ purls: []
+ size: 2426455
+ timestamp: 1769427102743
+- conda: https://conda.anaconda.org/conda-forge/linux-64/grpcio-1.78.1-py312h39ee1c6_0.conda
+ sha256: 43b09e083e0c3141cb118f84924b498b32d86da5f6a458b60e56e65cd5b97c4e
+ md5: b1995dadc14463d8f914c54cf2061a07
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libabseil * cxx17*
+ - libabseil >=20260107.1,<20260108.0a0
+ - libgcc >=14
+ - libgrpc 1.78.1 h1d1128b_0
+ - libstdcxx >=14
+ - libzlib >=1.3.1,<2.0a0
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - typing-extensions >=4.12,<5
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/grpcio?source=hash-mapping
+ size: 875590
+ timestamp: 1774020588709
+- conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.52-ha5ea40c_0.conda
+ sha256: c6bb4f06331bcb0a566d84e0f0fad7af4b9035a03b13e2d5ecfaf13be57e6e10
+ md5: bcaea22d85999a4f17918acfab877e61
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - at-spi2-atk >=2.38.0,<3.0a0
+ - atk-1.0 >=2.38.0
+ - cairo >=1.18.4,<2.0a0
+ - epoxy >=1.5.10,<1.6.0a0
+ - fontconfig >=2.17.1,<3.0a0
+ - fonts-conda-ecosystem
+ - fribidi >=1.0.16,<2.0a0
+ - gdk-pixbuf >=2.44.5,<3.0a0
+ - glib-tools
+ - harfbuzz >=13.2.1
+ - hicolor-icon-theme
+ - libcups >=2.3.3,<2.4.0a0
+ - libcups >=2.3.3,<3.0a0
+ - libexpat >=2.7.4,<3.0a0
+ - libfreetype >=2.14.2
+ - libfreetype6 >=2.14.2
+ - libgcc >=14
+ - libglib >=2.86.4,<3.0a0
+ - liblzma >=5.8.2,<6.0a0
+ - libxkbcommon >=1.13.1,<2.0a0
+ - libzlib >=1.3.2,<2.0a0
+ - pango >=1.56.4,<2.0a0
+ - wayland >=1.25.0,<2.0a0
+ - xorg-libx11 >=1.8.13,<2.0a0
+ - xorg-libxcomposite >=0.4.7,<1.0a0
+ - xorg-libxcursor >=1.2.3,<2.0a0
+ - xorg-libxdamage >=1.1.6,<2.0a0
+ - xorg-libxext >=1.3.7,<2.0a0
+ - xorg-libxfixes >=6.0.2,<7.0a0
+ - xorg-libxi >=1.8.2,<2.0a0
+ - xorg-libxinerama >=1.1.6,<1.2.0a0
+ - xorg-libxrandr >=1.5.5,<2.0a0
+ - xorg-libxrender >=0.9.12,<0.10.0a0
+ license: LGPL-2.0-or-later
+ license_family: LGPL
+ purls: []
+ size: 5939083
+ timestamp: 1774288645605
+- conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda
+ sha256: b5cd16262fefb836f69dc26d879b6508d29f8a5c5948a966c47fe99e2e19c99b
+ md5: 4d8df0b0db060d33c9a702ada998a8fe
+ depends:
+ - libgcc-ng >=12
+ - libglib >=2.76.3,<3.0a0
+ - libstdcxx-ng >=12
+ license: LGPL-2.0-or-later
+ license_family: LGPL
+ purls: []
+ size: 318312
+ timestamp: 1686545244763
+- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx-15.2.0-h76987e4_19.conda
+ sha256: b00817919d7b2d68e3299031c5332855576ae086ac80032aa0a78b7f6f12dae4
+ md5: 327876a856b3a45001cfb9a855efa65f
+ depends:
+ - gcc 15.2.0 h0dff253_19
+ - gxx_impl_linux-64 15.2.0 hda75c37_19
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 28945
+ timestamp: 1778269389494
+- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-15.2.0-hda75c37_19.conda
+ sha256: 3f5288346b9fe233352443b3c2e31f1fde845e39d3e96475fc05ec2e782af158
+ md5: 9d41f3899b512199af0a4bb939b83e21
+ depends:
+ - gcc_impl_linux-64 15.2.0 he0086c7_19
+ - libstdcxx-devel_linux-64 15.2.0 hd446a21_119
+ - sysroot_linux-64
+ - tzdata
+ license: GPL-3.0-only WITH GCC-exception-3.1
+ license_family: GPL
+ purls: []
+ size: 16356816
+ timestamp: 1778269332159
+- conda: https://conda.anaconda.org/conda-forge/linux-64/gymnasium-1.2.3-np2py312hcdd156d_0.conda
+ sha256: 0397c3bd4866ef9dd493e5c0e3efa1c8ef876275fdfb9251f192aace7c4098b4
+ md5: dbda080a441d3753aad7308cd14a6dbc
+ depends:
+ - python
+ - cloudpickle >=1.2.0
+ - farama-notifications
+ - jax-jumpy >=1.0.0
+ - typing_extensions >=4.3.0
+ - python_abi 3.12.* *_cp312
+ - numpy >=1.23,<3
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/gymnasium?source=hash-mapping
+ size: 1126603
+ timestamp: 1769938730543
+- conda: https://conda.anaconda.org/conda-forge/linux-64/h5py-3.16.0-nompi_py312ha4f8f14_102.conda
+ sha256: de9ec9b1b01b90f2da2d896a5835a2fd8049859aff0c6331ca4594327ec79a8b
+ md5: b270340809d19ae40ff9913f277b803a
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - cached-property
+ - hdf5 >=1.14.6,<1.14.7.0a0
+ - libgcc >=14
+ - numpy >=1.23,<3
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/h5py?source=hash-mapping
+ size: 1335314
+ timestamp: 1775581269364
+- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.2.0-h6083320_0.conda
+ sha256: 232c95b56d16d33d8256026a3b1ad34f7f9a75c179d388854be0fd624ddba9e3
+ md5: e194f6a2f498f0c7b1e6498bd0b12645
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - cairo >=1.18.4,<2.0a0
+ - graphite2 >=1.3.14,<2.0a0
+ - icu >=78.3,<79.0a0
+ - libexpat >=2.7.5,<3.0a0
+ - libfreetype >=2.14.3
+ - libfreetype6 >=2.14.3
+ - libgcc >=14
+ - libglib >=2.86.4,<3.0a0
+ - libstdcxx >=14
+ - libzlib >=1.3.2,<2.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 2333599
+ timestamp: 1776778392713
+- conda: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda
+ sha256: 0d09b6dc1ce5c4005ae1c6a19dc10767932ef9a5e9c755cfdbb5189ac8fb0684
+ md5: bd77f8da987968ec3927990495dc22e4
+ depends:
+ - libgcc-ng >=12
+ - libjpeg-turbo >=3.0.0,<4.0a0
+ - libstdcxx-ng >=12
+ - libzlib >=1.2.13,<2.0.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 756742
+ timestamp: 1695661547874
+- conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h19486de_109.conda
+ sha256: 9d2ea00599e2874b295baa7e719c79823ed61fec885e25c55e7dad666fb1cf50
+ md5: c0ca97fff3fff46f837c69efedf838b1
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libaec >=1.1.5,<2.0a0
+ - libcurl >=8.20.0,<9.0a0
+ - libgcc >=14
+ - libgfortran
+ - libgfortran5 >=14.3.0
+ - libstdcxx >=14
+ - libzlib >=1.3.2,<2.0a0
+ - openssl >=3.5.6,<4.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 3719822
+ timestamp: 1777518369641
+- conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_3.conda
+ sha256: 6d7e6e1286cb521059fe69696705100a03b006efb914ffe82a2ae97ecbae66b7
+ md5: 129e404c5b001f3ef5581316971e3ea0
+ license: GPL-2.0-or-later
+ license_family: GPL
+ purls: []
+ size: 17625
+ timestamp: 1771539597968
+- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda
+ sha256: fbf86c4a59c2ed05bbffb2ba25c7ed94f6185ec30ecb691615d42342baa1a16a
+ md5: c80d8a3b84358cb967fa81e7075fbc8a
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 12723451
+ timestamp: 1773822285671
+- conda: https://conda.anaconda.org/conda-forge/linux-64/intel-gmmlib-22.10.0-hb700be7_0.conda
+ sha256: bc231d69eb6663db0e09738fb916c5e5507147cf1ac60f364f964004e0b29bab
+ md5: 10909406c1b0e4b57f9f4f0eb0999af8
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 1013714
+ timestamp: 1774422680665
+- conda: https://conda.anaconda.org/conda-forge/linux-64/intel-media-driver-26.1.6-hecca717_0.conda
+ sha256: 7cbd7fda22db70c64af64c9173434a4ede58e4f220bda52a044e469aa94c65cb
+ md5: aaf7c3db8c7c4533deb5449d3ba1c51f
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - intel-gmmlib >=22.10.0,<23.0a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - libva >=2.23.0,<3.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 8782375
+ timestamp: 1776080148587
+- conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.9.2-cpu_py312hc81e8bd_0.conda
+ sha256: 1ba7ff13d58b9ff56b8cca144c52db12260ac20fa0c664697fb0d576989696d6
+ md5: 5aea3e396b0c3e18a6fe0e6d0c65afeb
+ depends:
+ - python
+ - scipy >=1.9
+ - ml_dtypes >=0.2.0
+ - onednn-cpu-threadpool
+ - __glibc >=2.17,<3.0.a0
+ - libstdcxx >=15
+ - libgcc >=15
+ - libabseil >=20260107.1,<20260108.0a0
+ - libabseil * cxx17*
+ - numpy >=1.23,<3
+ - libzlib >=1.3.2,<2.0a0
+ - python_abi 3.12.* *_cp312
+ - flatbuffers >=25.9.23,<25.9.24.0a0
+ - openssl >=3.5.5,<4.0a0
+ - onednn >=3.11.1,<4.0a0
+ - libre2-11 >=2025.11.5
+ - re2
+ - libgrpc >=1.78.1,<1.79.0a0
+ constrains:
+ - jax >=0.9.2
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/jaxlib?source=hash-mapping
+ size: 61169713
+ timestamp: 1774456652705
+- conda: https://conda.anaconda.org/conda-forge/linux-64/jsoncpp-1.9.6-hf42df4d_1.conda
+ sha256: ed4b1878be103deb2e4c6d0eea3c9bdddfd7fc3178383927dce7578fb1063520
+ md5: 7bdc5e2cc11cb0a0f795bdad9732b0f2
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - libstdcxx >=13
+ license: LicenseRef-Public-Domain OR MIT
+ purls: []
+ size: 169093
+ timestamp: 1733780223643
+- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda
+ sha256: 0960d06048a7185d3542d850986d807c6e37ca2e644342dd0c72feefcf26c2a4
+ md5: b38117a3c920364aff79f870c984b4a3
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ license: LGPL-2.1-or-later
+ purls: []
+ size: 134088
+ timestamp: 1754905959823
+- conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.0-py312h0a2e395_0.conda
+ sha256: eec7654c2d68f06590862c6e845cc70987b6d6559222b6f0e619dea4268f5dd5
+ md5: cd74a9525dc74bbbf93cf8aa2fa9eb5b
+ depends:
+ - python
+ - libstdcxx >=14
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/kiwisolver?source=hash-mapping
+ size: 77120
+ timestamp: 1773067050308
+- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-ha1258a1_0.conda
+ sha256: 3e307628ca3527448dd1cb14ad7bb9d04d1d28c7d4c5f97ba196ae984571dd25
+ md5: fb53fb07ce46a575c5d004bbc96032c2
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - keyutils >=1.6.3,<2.0a0
+ - libedit >=3.1.20250104,<3.2.0a0
+ - libedit >=3.1.20250104,<4.0a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - openssl >=3.5.5,<4.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 1386730
+ timestamp: 1769769569681
+- conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2
+ sha256: aad2a703b9d7b038c0f745b853c6bb5f122988fe1a7a096e0e606d9cbec4eaab
+ md5: a8832b479f93521a9e7b5b743803be51
+ depends:
+ - libgcc-ng >=12
+ license: LGPL-2.0-only
+ license_family: LGPL
+ purls: []
+ size: 508258
+ timestamp: 1664996250081
+- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.19.1-h0c24ade_0.conda
+ sha256: eb89c6c39f2f6a93db55723dbb2f6bba8c8e63e6312bf1abf13e6e9ff45849c8
+ md5: f92f984b558e6e6204014b16d212b271
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libjpeg-turbo >=3.1.4.1,<4.0a0
+ - libtiff >=4.7.1,<4.8.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 251086
+ timestamp: 1778079286384
+- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda
+ sha256: 3d584956604909ff5df353767f3a2a2f60e07d070b328d109f30ac40cd62df6c
+ md5: 18335a698559cdbcd86150a48bf54ba6
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - zstd >=1.5.7,<1.6.0a0
+ constrains:
+ - binutils_impl_linux-64 2.45.1
+ license: GPL-3.0-only
+ license_family: GPL
+ purls: []
+ size: 728002
+ timestamp: 1774197446916
+- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda
+ sha256: f84cb54782f7e9cea95e810ea8fef186e0652d0fa73d3009914fa2c1262594e1
+ md5: a752488c68f2e7c456bcbd8f16eec275
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ license: Apache-2.0
+ license_family: Apache
+ purls: []
+ size: 261513
+ timestamp: 1773113328888
+- conda: https://conda.anaconda.org/conda-forge/linux-64/level-zero-1.28.4-hb700be7_0.conda
+ sha256: ed1eb569df9bbfcb4b451478eaba03cbd2d26efed88152ad2e4b7b7b2297ef84
+ md5: c44c0485271b7b4c92dec39e9f7d096e
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 858263
+ timestamp: 1777157859593
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20260107.1-cxx17_h7b12aa8_0.conda
+ sha256: a7a4481a4d217a3eadea0ec489826a69070fcc3153f00443aa491ed21527d239
+ md5: 6f7b4302263347698fd24565fbf11310
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ constrains:
+ - libabseil-static =20260107.1=cxx17*
+ - abseil-cpp =20260107.1
+ license: Apache-2.0
+ license_family: Apache
+ purls: []
+ size: 1384817
+ timestamp: 1770863194876
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.5-h088129d_0.conda
+ sha256: 822e4ae421a7e9c04e841323526321185f6659222325e1a9aedec811c686e688
+ md5: 86f7414544ae606282352fa1e116b41f
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ license: BSD-2-Clause
+ license_family: BSD
+ purls: []
+ size: 36544
+ timestamp: 1769221884824
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-24.0.0-h0935d00_1_cpu.conda
+ build_number: 1
+ sha256: d2325979993c71580e571eaa470e0ca33b86acb23c653909fecaef688a1c44b4
+ md5: aed984d45692d6211ebf013b62c9fa02
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - aws-crt-cpp >=0.38.3,<0.38.4.0a0
+ - aws-sdk-cpp >=1.11.747,<1.11.748.0a0
+ - azure-core-cpp >=1.16.2,<1.16.3.0a0
+ - azure-identity-cpp >=1.13.3,<1.13.4.0a0
+ - azure-storage-blobs-cpp >=12.16.0,<12.16.1.0a0
+ - azure-storage-files-datalake-cpp >=12.14.0,<12.14.1.0a0
+ - bzip2 >=1.0.8,<2.0a0
+ - glog >=0.7.1,<0.8.0a0
+ - libabseil * cxx17*
+ - libabseil >=20260107.1,<20260108.0a0
+ - libbrotlidec >=1.2.0,<1.3.0a0
+ - libbrotlienc >=1.2.0,<1.3.0a0
+ - libgcc >=14
+ - libgoogle-cloud >=3.3.0,<3.4.0a0
+ - libgoogle-cloud-storage >=3.3.0,<3.4.0a0
+ - libopentelemetry-cpp >=1.26.0,<1.27.0a0
+ - libprotobuf >=6.33.5,<6.33.6.0a0
+ - libstdcxx >=14
+ - libzlib >=1.3.2,<2.0a0
+ - lz4-c >=1.10.0,<1.11.0a0
+ - orc >=2.3.0,<2.3.1.0a0
+ - snappy >=1.2.2,<1.3.0a0
+ - 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: 6508876
+ timestamp: 1778175634414
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-24.0.0-h635bf11_1_cpu.conda
+ build_number: 1
+ sha256: d5e2ca1557393490eb0b921d0dabe6203c685da97c0cf8c5b15c21c2d69b517a
+ md5: fa76d2ed4b435617a0fe5b8e7b9ae9c1
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libarrow 24.0.0 h0935d00_1_cpu
+ - libarrow-compute 24.0.0 h53684a4_1_cpu
+ - libgcc >=14
+ - libstdcxx >=14
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 591773
+ timestamp: 1778175876713
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-24.0.0-h53684a4_1_cpu.conda
+ build_number: 1
+ sha256: e4ca855698a8005508114a8c197ae7fe48ea37430064253a2055dbb0122f8a39
+ md5: 0aac1926c3b2f8c35570af6be677f8ad
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libarrow 24.0.0 h0935d00_1_cpu
+ - libgcc >=14
+ - libre2-11 >=2025.11.5
+ - libstdcxx >=14
+ - libutf8proc >=2.11.3,<2.12.0a0
+ - re2
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 2992759
+ timestamp: 1778175759450
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-24.0.0-h635bf11_1_cpu.conda
+ build_number: 1
+ sha256: 38ce55721b4d2cc776d0e34078ccba63dfd5c141f1f49bb41cd6ae4da10c21e4
+ md5: 021214e64486a6ba4df95d64b703f1fb
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libarrow 24.0.0 h0935d00_1_cpu
+ - libarrow-acero 24.0.0 h635bf11_1_cpu
+ - libarrow-compute 24.0.0 h53684a4_1_cpu
+ - libgcc >=14
+ - libparquet 24.0.0 h7376487_1_cpu
+ - libstdcxx >=14
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 591861
+ timestamp: 1778175957189
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-24.0.0-hb4dd7c2_1_cpu.conda
+ build_number: 1
+ sha256: 9479a863e61e5cc3e3ef395267f23dc1475199f53a96c0d04a168f4b0c97db2a
+ md5: e3e42803a838c2177759e6aef1363512
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libabseil * cxx17*
+ - libabseil >=20260107.1,<20260108.0a0
+ - libarrow 24.0.0 h0935d00_1_cpu
+ - libarrow-acero 24.0.0 h635bf11_1_cpu
+ - libarrow-dataset 24.0.0 h635bf11_1_cpu
+ - libgcc >=14
+ - libprotobuf >=6.33.5,<6.33.6.0a0
+ - libstdcxx >=14
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 501879
+ timestamp: 1778175984173
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libass-0.17.4-h96ad9f0_0.conda
+ sha256: 035eb8b54e03e72e42ef707420f9979c7427776ea99e0f1e3c969f92eb573f19
+ md5: d3be7b2870bf7aff45b12ea53165babd
+ depends:
+ - libgcc >=13
+ - __glibc >=2.17,<3.0.a0
+ - libzlib >=1.3.1,<2.0a0
+ - libfreetype >=2.13.3
+ - libfreetype6 >=2.13.3
+ - fribidi >=1.0.10,<2.0a0
+ - libiconv >=1.18,<2.0a0
+ - fontconfig >=2.15.0,<3.0a0
+ - fonts-conda-ecosystem
+ - harfbuzz >=11.0.1
+ license: ISC
+ purls: []
+ size: 152179
+ timestamp: 1749328931930
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-6_h5875eb1_mkl.conda
+ build_number: 6
+ sha256: a73ec64c0f60a7733f82a679342bdad88e0230ba8243b12ece13a23aded431f4
+ md5: d03e4571f7876dcd4e530f3d07faf333
+ depends:
+ - mkl >=2025.3.1,<2026.0a0
+ constrains:
+ - libcblas 3.11.0 6*_mkl
+ - liblapack 3.11.0 6*_mkl
+ - liblapacke 3.11.0 6*_mkl
+ - blas 2.306 mkl
+ track_features:
+ - blas_mkl
+ - blas_mkl_2
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 18980
+ timestamp: 1774503032324
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-1.90.0-hd24cca6_1.conda
+ sha256: fef9f2977ac341fd0fd7802bccffff0f220e4896f6fef29040428071d0aa863b
+ md5: 4dfa9b413062a24e09938fb6f91af821
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - bzip2 >=1.0.8,<2.0a0
+ - icu >=78.1,<79.0a0
+ - libgcc >=14
+ - liblzma >=5.8.1,<6.0a0
+ - libstdcxx >=14
+ - libzlib >=1.3.1,<2.0a0
+ - zstd >=1.5.7,<1.6.0a0
+ constrains:
+ - boost-cpp <0.0a0
+ license: BSL-1.0
+ purls: []
+ size: 3229874
+ timestamp: 1766347309472
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-devel-1.90.0-hfcd1e18_1.conda
+ sha256: a46970575b8ec39fe103833ed988bc9d56292146b417aeddb333a94e980053b0
+ md5: 5e5227b43bdd65d0028a322b2636d02e
+ depends:
+ - libboost 1.90.0 hd24cca6_1
+ - libboost-headers 1.90.0 ha770c72_1
+ constrains:
+ - boost-cpp <0.0a0
+ license: BSL-1.0
+ purls: []
+ size: 38562
+ timestamp: 1766347475462
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-headers-1.90.0-ha770c72_1.conda
+ sha256: be43ec008a4fd297b5cdccea6c8e05bedd1d40315bdaefe4cc2f75363dab3f73
+ md5: a1da1e4c15eb57bb506b33e283107dc5
+ constrains:
+ - boost-cpp <0.0a0
+ license: BSL-1.0
+ purls: []
+ size: 14676487
+ timestamp: 1766347330772
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-hb03c661_1.conda
+ sha256: 318f36bd49ca8ad85e6478bd8506c88d82454cc008c1ac1c6bf00a3c42fa610e
+ md5: 72c8fd1af66bd67bf580645b426513ed
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 79965
+ timestamp: 1764017188531
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-hb03c661_1.conda
+ sha256: 12fff21d38f98bc446d82baa890e01fd82e3b750378fedc720ff93522ffb752b
+ md5: 366b40a69f0ad6072561c1d09301c886
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libbrotlicommon 1.2.0 hb03c661_1
+ - libgcc >=14
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 34632
+ timestamp: 1764017199083
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-hb03c661_1.conda
+ sha256: a0c15c79997820bbd3fbc8ecf146f4fe0eca36cc60b62b63ac6cf78857f1dd0d
+ md5: 4ffbb341c8b616aa2494b6afb26a0c5f
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libbrotlicommon 1.2.0 hb03c661_1
+ - libgcc >=14
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 298378
+ timestamp: 1764017210931
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.77-hd0affe5_1.conda
+ sha256: 37c41b1024d0c75da76822e3c079aabaf121618a32fe05e53a897b35a88008fc
+ md5: 499cd8e2d4358986dbe3b30e8fe1bf6a
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 124432
+ timestamp: 1774333989027
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-6_hfef963f_mkl.conda
+ build_number: 6
+ sha256: d98a39a8e61af301bf67bf3fb946baff9686864886560cdd48d5259c080c58a5
+ md5: 72cf77ee057f87d826f9b98cacd67a59
+ depends:
+ - libblas 3.11.0 6_h5875eb1_mkl
+ constrains:
+ - liblapack 3.11.0 6*_mkl
+ - liblapacke 3.11.0 6*_mkl
+ - blas 2.306 mkl
+ track_features:
+ - blas_mkl
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 18635
+ timestamp: 1774503047304
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-22.1.5-default_h746c552_1.conda
+ sha256: 7f479f796ba05f22324fb484f53da6f9948395499d7558cc4ff5ec24e91448b1
+ md5: af8c5fb71cb5aa4861365af2784fc9ce
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libllvm22 >=22.1.5,<22.2.0a0
+ - libstdcxx >=14
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
+ purls: []
+ size: 12827971
+ timestamp: 1778479852868
+- conda: https://conda.anaconda.org/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://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda
+ sha256: 205c4f19550f3647832ec44e35e6d93c8c206782bdd620c1d7cf66237580ff9c
+ md5: 49c553b47ff679a6a1e9fc80b9c5a2d4
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - krb5 >=1.22.2,<1.23.0a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - libzlib >=1.3.1,<2.0a0
+ license: Apache-2.0
+ license_family: Apache
+ purls: []
+ size: 4518030
+ timestamp: 1770902209173
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.20.0-hcf29cc6_0.conda
+ sha256: 75963a5dd913311f59a35dbd307592f4fa754c4808aff9c33edb430c415e38eb
+ md5: c3cc2864f82a944bc90a7beb4d3b0e88
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - krb5 >=1.22.2,<1.23.0a0
+ - libgcc >=14
+ - libnghttp2 >=1.68.1,<2.0a0
+ - libssh2 >=1.11.1,<2.0a0
+ - libzlib >=1.3.2,<2.0a0
+ - openssl >=3.5.6,<4.0a0
+ - zstd >=1.5.7,<1.6.0a0
+ license: curl
+ license_family: MIT
+ purls: []
+ size: 468706
+ timestamp: 1777461492876
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda
+ sha256: aa8e8c4be9a2e81610ddf574e05b64ee131fab5e0e3693210c9d6d2fba32c680
+ md5: 6c77a605a7a689d17d4819c0f8ac9a00
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 73490
+ timestamp: 1761979956660
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libdovi-3.3.2-ha23c83e_4.conda
+ sha256: d15432f07f654583978712e034d308b103a8b4650f0fdec172b5031a8af2b6c9
+ md5: b26a64dfb24fef32d3330e37ce5e4f44
+ depends:
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ constrains:
+ - __glibc >=2.17
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 311420
+ timestamp: 1777838991858
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.125-hb03c661_1.conda
+ sha256: c076a213bd3676cc1ef22eeff91588826273513ccc6040d9bea68bccdc849501
+ md5: 9314bc5a1fe7d1044dc9dfd3ef400535
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libpciaccess >=0.18,<0.19.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 310785
+ timestamp: 1757212153962
+- conda: https://conda.anaconda.org/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://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_2.conda
+ sha256: 7fd5408d359d05a969133e47af580183fbf38e2235b562193d427bb9dad79723
+ md5: c151d5eb730e9b7480e6d48c0fc44048
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libglvnd 1.7.0 ha4b6fd6_2
+ license: LicenseRef-libglvnd
+ purls: []
+ size: 44840
+ timestamp: 1731330973553
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-devel-1.7.0-ha4b6fd6_2.conda
+ sha256: f6e7095260305dc05238062142fb8db4b940346329b5b54894a90610afa6749f
+ md5: b513eb83b3137eca1192c34bf4f013a7
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libegl 1.7.0 ha4b6fd6_2
+ - libgl-devel 1.7.0 ha4b6fd6_2
+ - xorg-libx11
+ license: LicenseRef-libglvnd
+ purls: []
+ size: 30380
+ timestamp: 1731331017249
+- conda: https://conda.anaconda.org/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://conda.anaconda.org/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://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.0-hecca717_0.conda
+ sha256: ea33c40977ea7a2c3658c522230058395bc2ee0d89d99f0711390b6a1ee80d12
+ md5: a3b390520c563d78cc58974de95a03e5
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ constrains:
+ - expat 2.8.0.*
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 77241
+ timestamp: 1777846112704
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda
+ sha256: 31f19b6a88ce40ebc0d5a992c131f57d919f73c0b92cd1617a5bec83f6e961e6
+ md5: a360c33a5abe61c07959e449fa1453eb
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 58592
+ timestamp: 1769456073053
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.5.0-he200343_1.conda
+ sha256: e755e234236bdda3d265ae82e5b0581d259a9279e3e5b31d745dc43251ad64fb
+ md5: 47595b9d53054907a00d95e4d47af1d6
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libiconv >=1.18,<2.0a0
+ - libogg >=1.3.5,<1.4.0a0
+ - libstdcxx >=14
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 424563
+ timestamp: 1764526740626
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_0.conda
+ sha256: 38f014a7129e644636e46064ecd6b1945e729c2140e21d75bb476af39e692db2
+ md5: e289f3d17880e44b633ba911d57a321b
+ depends:
+ - libfreetype6 >=2.14.3
+ license: GPL-2.0-only OR FTL
+ purls: []
+ size: 8049
+ timestamp: 1774298163029
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_0.conda
+ sha256: 16f020f96da79db1863fcdd8f2b8f4f7d52f177dd4c58601e38e9182e91adf1d
+ md5: fb16b4b69e3f1dcfe79d80db8fd0c55d
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libpng >=1.6.55,<1.7.0a0
+ - libzlib >=1.3.2,<2.0a0
+ constrains:
+ - freetype >=2.14.3
+ license: GPL-2.0-only OR FTL
+ purls: []
+ size: 384575
+ timestamp: 1774298162622
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_19.conda
+ sha256: 8e0a3b5e41272e5678499b5dfc4cddb673f9e935de01eb0767ce857001229f46
+ md5: 57736f29cc2b0ec0b6c2952d3f101b6a
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - _openmp_mutex >=4.5
+ constrains:
+ - libgcc-ng ==15.2.0=*_19
+ - libgomp 15.2.0 he0feb66_19
+ license: GPL-3.0-only WITH GCC-exception-3.1
+ license_family: GPL
+ purls: []
+ size: 1041084
+ timestamp: 1778269013026
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_19.conda
+ sha256: 9dcf54adfaa5e861123c2da4f2f0451a685464ea7e5a41ad91cf67b31d658d98
+ md5: 331ee9b72b9dff570d56b1302c5ab37d
+ depends:
+ - libgcc 15.2.0 he0feb66_19
+ license: GPL-3.0-only WITH GCC-exception-3.1
+ license_family: GPL
+ purls: []
+ size: 27694
+ timestamp: 1778269016987
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h5fbf134_12.conda
+ sha256: 245be793e831170504f36213134f4c24eedaf39e634679809fd5391ad214480b
+ md5: 88c1c66987cd52a712eea89c27104be6
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - fontconfig >=2.15.0,<3.0a0
+ - fonts-conda-ecosystem
+ - icu >=78.1,<79.0a0
+ - libexpat >=2.7.3,<3.0a0
+ - libfreetype >=2.14.1
+ - libfreetype6 >=2.14.1
+ - libgcc >=14
+ - libjpeg-turbo >=3.1.2,<4.0a0
+ - libpng >=1.6.53,<1.7.0a0
+ - libtiff >=4.7.1,<4.8.0a0
+ - libwebp-base >=1.6.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ license: GD
+ license_family: BSD
+ purls: []
+ size: 177306
+ timestamp: 1766331805898
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_19.conda
+ sha256: 561a42758ef25b9ce308c4e2cf56daee4f06138385a17e29a492cd928e00be6f
+ md5: 42bf7eca1a951735fa06c0e3c0d5c8e6
+ depends:
+ - libgfortran5 15.2.0 h68bc16d_19
+ constrains:
+ - libgfortran-ng ==15.2.0=*_19
+ license: GPL-3.0-only WITH GCC-exception-3.1
+ license_family: GPL
+ purls: []
+ size: 27655
+ timestamp: 1778269042954
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_19.conda
+ sha256: 057978bb69fea29ed715a9b98adf71015c31baecc4aeb2bfc20d4fd5d83579d4
+ md5: 85072b0ad177c966294f129b7c04a2d5
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=15.2.0
+ constrains:
+ - libgfortran 15.2.0
+ license: GPL-3.0-only WITH GCC-exception-3.1
+ license_family: GPL
+ purls: []
+ size: 2483673
+ timestamp: 1778269025089
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda
+ sha256: dc2752241fa3d9e40ce552c1942d0a4b5eeb93740c9723873f6fcf8d39ef8d2d
+ md5: 928b8be80851f5d8ffb016f9c81dae7a
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libglvnd 1.7.0 ha4b6fd6_2
+ - libglx 1.7.0 ha4b6fd6_2
+ license: LicenseRef-libglvnd
+ purls: []
+ size: 134712
+ timestamp: 1731330998354
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-devel-1.7.0-ha4b6fd6_2.conda
+ sha256: e281356c0975751f478c53e14f3efea6cd1e23c3069406d10708d6c409525260
+ md5: 53e7cbb2beb03d69a478631e23e340e9
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgl 1.7.0 ha4b6fd6_2
+ - libglx-devel 1.7.0 ha4b6fd6_2
+ license: LicenseRef-libglvnd
+ purls: []
+ size: 113911
+ timestamp: 1731331012126
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.88.1-h0d30a3d_2.conda
+ sha256: 33eb5d5310a5c2c0a4707a0afa644801c2e08c8f70c45e1f62f354116dfe0970
+ md5: 17d484ab9c8179c6a6e5b7dbb5065afc
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libffi >=3.5.2,<3.6.0a0
+ - pcre2 >=10.47,<10.48.0a0
+ - libzlib >=1.3.2,<2.0a0
+ - libiconv >=1.18,<2.0a0
+ constrains:
+ - glib >2.66
+ license: LGPL-2.1-or-later
+ purls: []
+ size: 4754097
+ timestamp: 1778508800134
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.3-h5888daf_1.conda
+ sha256: a0105eb88f76073bbb30169312e797ed5449ebb4e964a756104d6e54633d17ef
+ md5: 8422fcc9e5e172c91e99aef703b3ce65
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - libopengl >=1.7.0,<2.0a0
+ - libstdcxx >=13
+ license: SGI-B-2.0
+ purls: []
+ size: 325262
+ timestamp: 1748692137626
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda
+ sha256: 1175f8a7a0c68b7f81962699751bb6574e6f07db4c9f72825f978e3016f46850
+ md5: 434ca7e50e40f4918ab701e3facd59a0
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ license: LicenseRef-libglvnd
+ purls: []
+ size: 132463
+ timestamp: 1731330968309
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda
+ sha256: 2d35a679624a93ce5b3e9dd301fff92343db609b79f0363e6d0ceb3a6478bfa7
+ md5: c8013e438185f33b13814c5c488acd5c
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libglvnd 1.7.0 ha4b6fd6_2
+ - xorg-libx11 >=1.8.10,<2.0a0
+ license: LicenseRef-libglvnd
+ purls: []
+ size: 75504
+ timestamp: 1731330988898
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-devel-1.7.0-ha4b6fd6_2.conda
+ sha256: 0a930e0148ab6e61089bbcdba25a2e17ee383e7de82e7af10cc5c12c82c580f3
+ md5: 27ac5ae872a21375d980bd4a6f99edf3
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libglx 1.7.0 ha4b6fd6_2
+ - xorg-libx11 >=1.8.10,<2.0a0
+ - xorg-xorgproto
+ license: LicenseRef-libglvnd
+ purls: []
+ size: 26388
+ timestamp: 1731331003255
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_19.conda
+ sha256: 5abe4ab9d93f6c9757d654f1969ae2267d4505315c1f2f8fe705fd60af084f1b
+ md5: faac990cb7aedc7f3a2224f2c9b0c26c
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ license: GPL-3.0-only WITH GCC-exception-3.1
+ license_family: GPL
+ purls: []
+ size: 603817
+ timestamp: 1778268942614
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-3.3.0-h25dbb67_1.conda
+ sha256: 17ea802cef3942b0a850b8e33b03fc575f79734f3c829cdd6a4e56e2dae60791
+ md5: b2baa4ce6a9d9472aaa602b88f8d40ac
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libabseil * cxx17*
+ - libabseil >=20260107.1,<20260108.0a0
+ - libcurl >=8.19.0,<9.0a0
+ - libgcc >=14
+ - libgrpc >=1.78.1,<1.79.0a0
+ - libopentelemetry-cpp >=1.26.0,<1.27.0a0
+ - libprotobuf >=6.33.5,<6.33.6.0a0
+ - libstdcxx >=14
+ - openssl >=3.5.5,<4.0a0
+ constrains:
+ - libgoogle-cloud 3.3.0 *_1
+ license: Apache-2.0
+ license_family: Apache
+ purls: []
+ size: 2558266
+ timestamp: 1774212240265
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-3.3.0-hdbdcf42_1.conda
+ sha256: 838b6798962039e7f1ed97be85c3a36ceacfd4611bdf76e7cc0b6cd8741edf57
+ md5: da94b149c8eea6ceef10d9e408dcfeb3
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libabseil
+ - libcrc32c >=1.1.2,<1.2.0a0
+ - libcurl
+ - libgcc >=14
+ - libgoogle-cloud 3.3.0 h25dbb67_1
+ - libstdcxx >=14
+ - libzlib >=1.3.2,<2.0a0
+ - openssl
+ license: Apache-2.0
+ license_family: Apache
+ purls: []
+ size: 779217
+ timestamp: 1774212426084
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.78.1-h1d1128b_0.conda
+ sha256: 5bb935188999fd70f67996746fd2dca85ec6204289e11695c316772e19451eb8
+ md5: b5fb6d6c83f63d83ef2721dca6ff7091
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - c-ares >=1.34.6,<2.0a0
+ - libabseil * cxx17*
+ - libabseil >=20260107.1,<20260108.0a0
+ - libgcc >=14
+ - libprotobuf >=6.33.5,<6.33.6.0a0
+ - libre2-11 >=2025.11.5
+ - libstdcxx >=14
+ - libzlib >=1.3.1,<2.0a0
+ - openssl >=3.5.5,<4.0a0
+ - re2
+ constrains:
+ - grpc-cpp =1.78.1
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 7021360
+ timestamp: 1774020290672
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.13.0-default_he001693_1000.conda
+ sha256: 5041d295813dfb84652557839825880aae296222ab725972285c5abe3b6e4288
+ md5: c197985b58bc813d26b42881f0021c82
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - libxml2
+ - libxml2-16 >=2.14.6
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 2436378
+ timestamp: 1770953868164
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.4.0-h10be129_0.conda
+ sha256: 8b70955d5e9a49d08945d4f8e2eab855b2efa5fce9cb9bc5e75d86764e6f2f38
+ md5: 3a9428b74c403c71048104d38437b48c
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ license: Apache-2.0 OR BSD-3-Clause
+ purls: []
+ size: 1435782
+ timestamp: 1776989559668
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda
+ sha256: c467851a7312765447155e071752d7bf9bf44d610a5687e32706f480aad2833f
+ md5: 915f5995e94f60e9a4826e0b0920ee88
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ license: LGPL-2.1-only
+ purls: []
+ size: 790176
+ timestamp: 1754908768807
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.4.1-hb03c661_0.conda
+ sha256: 10056646c28115b174de81a44e23e3a0a3b95b5347d2e6c45cc6d49d35294256
+ md5: 6178c6f2fb254558238ef4e6c56fb782
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ constrains:
+ - jpeg <0.0.0a
+ license: IJG AND BSD-3-Clause AND Zlib
+ purls: []
+ size: 633831
+ timestamp: 1775962768273
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.2-h174a0a3_1.conda
+ sha256: 0c8a78c6a42a6e4c6de3a5e82d692f60400d43f4cc80591745f28b37daad9c70
+ md5: 850f48943d6b4589800a303f0de6a816
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - libhwy >=1.4.0,<1.5.0a0
+ - libbrotlienc >=1.2.0,<1.3.0a0
+ - libbrotlidec >=1.2.0,<1.3.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 1846962
+ timestamp: 1777065125966
+- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-6_h5e43f62_mkl.conda
+ build_number: 6
+ sha256: 8715428e721a63880d4e548375a744f177200a5161aec3ebe533f33eaf7ec3a5
+ md5: 8b13738802df008211c9ecd08775ca21
+ depends:
+ - libblas 3.11.0 6_h5875eb1_mkl
+ constrains:
+ - libcblas 3.11.0 6*_mkl
+ - liblapacke 3.11.0 6*_mkl
+ - blas 2.306 mkl
+ track_features:
+ - blas_mkl
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 18634
+ timestamp: 1774503062183
+- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.11.0-6_hdba1596_mkl.conda
+ build_number: 6
+ sha256: 6cfab7df054c7935ed7551ec367332a1134d3b8b0d7060261e2e624c845147cc
+ md5: 5efff83ae645656f28c826aa192e7651
+ depends:
+ - libblas 3.11.0 6_h5875eb1_mkl
+ - libcblas 3.11.0 6_hfef963f_mkl
+ - liblapack 3.11.0 6_h5e43f62_mkl
+ constrains:
+ - blas 2.306 mkl
+ track_features:
+ - blas_mkl
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 18668
+ timestamp: 1774503077124
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm22-22.1.5-hf7376ad_1.conda
+ sha256: 094198dc5c7fbd85e3719d192d5b77c3f0dccf657dfd9ba0c79e391f11f7ace2
+ md5: 6adc0202fa7fcf0a5fce8c31ef2ed866
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - libxml2
+ - libxml2-16 >=2.14.6
+ - libzlib >=1.3.2,<2.0a0
+ - zstd >=1.5.7,<1.6.0a0
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
+ purls: []
+ size: 44241856
+ timestamp: 1778417624650
+- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda
+ sha256: ec30e52a3c1bf7d0425380a189d209a52baa03f22fb66dd3eb587acaa765bd6d
+ md5: b88d90cad08e6bc8ad540cb310a761fb
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ constrains:
+ - xz 5.8.3.*
+ license: 0BSD
+ purls: []
+ size: 113478
+ timestamp: 1775825492909
+- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.3-hb03c661_0.conda
+ sha256: 7858f6a173206bc8a5bdc8e75690483bb66c0dcc3809ac1cb43c561a4723623a
+ md5: 55c20edec8e90c4703787acaade60808
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - liblzma 5.8.3 hb03c661_0
+ license: 0BSD
+ purls: []
+ size: 491429
+ timestamp: 1775825511214
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.10.0-nompi_hb6f1874_104.conda
+ sha256: 7deab19f51934a5bfdf8eec10721d91a02c6a27632471527b07ece8f0d2c7a8e
+ md5: e9e60f617e5545e1a7de60c2d01f8029
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - blosc >=1.21.6,<2.0a0
+ - bzip2 >=1.0.8,<2.0a0
+ - hdf4 >=4.2.15,<4.2.16.0a0
+ - hdf5 >=1.14.6,<1.14.7.0a0
+ - libaec >=1.1.5,<2.0a0
+ - libcurl >=8.19.0,<9.0a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - libxml2
+ - libxml2-16 >=2.14.6
+ - libzip >=1.11.2,<2.0a0
+ - libzlib >=1.3.2,<2.0a0
+ - openssl >=3.5.6,<4.0a0
+ - zstd >=1.5.7,<1.6.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 862900
+ timestamp: 1776686244733
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.68.1-h877daf1_0.conda
+ sha256: 663444d77a42f2265f54fb8b48c5450bfff4388d9c0f8253dd7855f0d993153f
+ md5: 2a45e7f8af083626f009645a6481f12d
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - c-ares >=1.34.6,<2.0a0
+ - libev >=4.33,<4.34.0a0
+ - libev >=4.33,<5.0a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - libzlib >=1.3.1,<2.0a0
+ - openssl >=3.5.5,<4.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 663344
+ timestamp: 1773854035739
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda
+ sha256: 927fe72b054277cde6cb82597d0fcf6baf127dcbce2e0a9d8925a68f1265eef5
+ md5: d864d34357c3b65a4b731f78c0801dc4
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ license: LGPL-2.1-only
+ license_family: GPL
+ purls: []
+ size: 33731
+ timestamp: 1750274110928
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.8-hb9d3cd8_0.conda
+ sha256: 3b3f19ced060013c2dd99d9d46403be6d319d4601814c772a3472fe2955612b0
+ md5: 7c7927b404672409d9917d49bff5f2d6
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ license: LGPL-2.1-or-later
+ purls: []
+ size: 33418
+ timestamp: 1734670021371
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-hd0c01bc_1.conda
+ sha256: ffb066ddf2e76953f92e06677021c73c85536098f1c21fcd15360dbc859e22e4
+ md5: 68e52064ed3897463c0e958ab5c8f91b
+ depends:
+ - libgcc >=13
+ - __glibc >=2.17,<3.0.a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 218500
+ timestamp: 1745825989535
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_2.conda
+ sha256: 215086c108d80349e96051ad14131b751d17af3ed2cb5a34edd62fa89bfe8ead
+ md5: 7df50d44d4a14d6c31a2c54f2cd92157
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libglvnd 1.7.0 ha4b6fd6_2
+ license: LicenseRef-libglvnd
+ purls: []
+ size: 50757
+ timestamp: 1731330993524
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-devel-1.7.0-ha4b6fd6_2.conda
+ sha256: b347798eba61ce8d7a65372cf0cf6066c328e5717ab69ae251c6822e6f664f23
+ md5: 75b039b1e51525f4572f828be8441970
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libopengl 1.7.0 ha4b6fd6_2
+ license: LicenseRef-libglvnd
+ purls: []
+ size: 15460
+ timestamp: 1731331007610
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.26.0-h9692893_0.conda
+ sha256: 5126b75e7733de31e261aa275c0a1fd38b25fdfff23e7d7056ebd6ca76d11532
+ md5: c360be6f9e0947b64427603e91f9651f
+ depends:
+ - libabseil * cxx17*
+ - libabseil >=20260107.1,<20260108.0a0
+ - libcurl >=8.19.0,<9.0a0
+ - libgrpc >=1.78.0,<1.79.0a0
+ - libopentelemetry-cpp-headers 1.26.0 ha770c72_0
+ - libprotobuf >=6.33.5,<6.33.6.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - nlohmann_json
+ - prometheus-cpp >=1.3.0,<1.4.0a0
+ constrains:
+ - cpp-opentelemetry-sdk =1.26.0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 934274
+ timestamp: 1774001192674
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.26.0-ha770c72_0.conda
+ sha256: fec2ba047f7000c213ca7ace5452435197c79fbcb1690da7ce85e99312245984
+ md5: cb93c6e226a7bed5557601846555153d
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 396403
+ timestamp: 1774001149705
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-2026.0.0-hb56ce9e_1.conda
+ sha256: a396a2d1aa267f21c98717ac097138b32e41e4c40ae501729bded3801476eeb5
+ md5: 9f0596e995efe372c470ff45c93131cb
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - pugixml >=1.15,<1.16.0a0
+ - tbb >=2022.3.0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 6582302
+ timestamp: 1772727204779
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-batch-plugin-2026.0.0-hd85de46_1.conda
+ sha256: 286de85805dc69ce0bd25367ae2a20c8096ddef35eb2483474eb246dacd5387e
+ md5: ee41df976413676f794af2785b291b0c
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libopenvino 2026.0.0 hb56ce9e_1
+ - libstdcxx >=14
+ - tbb >=2022.3.0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 114431
+ timestamp: 1772727230331
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-plugin-2026.0.0-hd85de46_1.conda
+ sha256: 9988ed6339a5eb044ae8d079e2b22f5a310c41e49a0cf716057f30b21ef9cec2
+ md5: ca025fa5c42ba94453636a2ae333de6b
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libopenvino 2026.0.0 hb56ce9e_1
+ - libstdcxx >=14
+ - tbb >=2022.3.0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 249056
+ timestamp: 1772727247597
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-hetero-plugin-2026.0.0-hd41364c_1.conda
+ sha256: c7db498aeda5b0f36b347f4211b93b66ba108faaf54157a08bae8fa3c3af5f81
+ md5: 07a23e96db38f63d9763f666b2db66aa
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libopenvino 2026.0.0 hb56ce9e_1
+ - libstdcxx >=14
+ - pugixml >=1.15,<1.16.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 211582
+ timestamp: 1772727264950
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-cpu-plugin-2026.0.0-hb56ce9e_1.conda
+ sha256: 01a28c0bd1f205b3800e7759e30bc8e8a75836e0d5a73a745b4da42837bbb174
+ md5: b43b96578573ddbcc8d084ae6e44c964
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libopenvino 2026.0.0 hb56ce9e_1
+ - libstdcxx >=14
+ - pugixml >=1.15,<1.16.0a0
+ - tbb >=2022.3.0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 13173323
+ timestamp: 1772727282718
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-gpu-plugin-2026.0.0-hb56ce9e_1.conda
+ sha256: 720b87e1d5f1a10c577e040d4bf425072a978e925c6dfab8b1551bc848007c94
+ md5: 26e8e92c90d1a22af6eac8e9507d9b8f
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libopenvino 2026.0.0 hb56ce9e_1
+ - libstdcxx >=14
+ - ocl-icd >=2.3.3,<3.0a0
+ - pugixml >=1.15,<1.16.0a0
+ - tbb >=2022.3.0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 11402462
+ timestamp: 1772727323957
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-npu-plugin-2026.0.0-hb56ce9e_1.conda
+ sha256: df7eb2b23a1af38f2cd2281353309f2e2a04da1374ecedc7c6745c2a67ba617c
+ md5: 01ba8b179ac45b2b37fe2d4225dddcc7
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - level-zero >=1.28.2,<2.0a0
+ - libgcc >=14
+ - libopenvino 2026.0.0 hb56ce9e_1
+ - libstdcxx >=14
+ - pugixml >=1.15,<1.16.0a0
+ - tbb >=2022.3.0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 1994640
+ timestamp: 1772727360780
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-ir-frontend-2026.0.0-hd41364c_1.conda
+ sha256: 8e7356b0b80b3f180615e264694d6811d388b210155d419553ff64e42f78ffa0
+ md5: aa002c4d343b01cdcc458c95cd071d1b
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libopenvino 2026.0.0 hb56ce9e_1
+ - libstdcxx >=14
+ - pugixml >=1.15,<1.16.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 192778
+ timestamp: 1772727380069
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-onnx-frontend-2026.0.0-h7a07914_1.conda
+ sha256: 35a68214201e807bd9a31f94e618cb6a5385198e89eef46dde6c122cff77da58
+ md5: 218084544c2e7e78e4b8877ec37b8cdb
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libabseil * cxx17*
+ - libabseil >=20260107.1,<20260108.0a0
+ - libgcc >=14
+ - libopenvino 2026.0.0 hb56ce9e_1
+ - libprotobuf >=6.33.5,<6.33.6.0a0
+ - libstdcxx >=14
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 1860687
+ timestamp: 1772727397981
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-paddle-frontend-2026.0.0-h7a07914_1.conda
+ sha256: cb37b717480207a66443a93d4342cf88210a74c0820fc0edd70e4fc791a64779
+ md5: 74915e5e271ef76a89f711eff5959a75
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libabseil * cxx17*
+ - libabseil >=20260107.1,<20260108.0a0
+ - libgcc >=14
+ - libopenvino 2026.0.0 hb56ce9e_1
+ - libprotobuf >=6.33.5,<6.33.6.0a0
+ - libstdcxx >=14
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 684224
+ timestamp: 1772727417276
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-pytorch-frontend-2026.0.0-hecca717_1.conda
+ sha256: 086469e5cd8bfde48975fe8641a7d6924e3da00d75dd06c99e03a78df03a0568
+ md5: 559ef86008749861a53025f669004f18
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libopenvino 2026.0.0 hb56ce9e_1
+ - libstdcxx >=14
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 1185558
+ timestamp: 1772727435039
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-frontend-2026.0.0-h78e8023_1.conda
+ sha256: 3a9a404bc9fd39e7395d49f4bd8facb58a01a31aeceabe8723a9d4f8eb5cc381
+ md5: fb20f4234bc0e29af1baa13d35e36785
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libabseil * cxx17*
+ - libabseil >=20260107.1,<20260108.0a0
+ - libgcc >=14
+ - libopenvino 2026.0.0 hb56ce9e_1
+ - libprotobuf >=6.33.5,<6.33.6.0a0
+ - libstdcxx >=14
+ - snappy >=1.2.2,<1.3.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 1257870
+ timestamp: 1772727453738
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-lite-frontend-2026.0.0-hecca717_1.conda
+ sha256: e7cee37c92ed0b62c0458c13937b6ad66319f1879f236a31c3a67391a999f429
+ md5: 0f0281435478b981f672a44d0029018c
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libopenvino 2026.0.0 hb56ce9e_1
+ - libstdcxx >=14
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 456585
+ timestamp: 1772727473378
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.6.1-h280c20c_0.conda
+ sha256: f1061a26213b9653bbb8372bfa3f291787ca091a9a3060a10df4d5297aad74fd
+ md5: 2446ac1fe030c2aa6141386c1f5a6aed
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 324993
+ timestamp: 1768497114401
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-24.0.0-h7376487_1_cpu.conda
+ build_number: 1
+ sha256: 65d6ba055d872911d30f55b8bf2880ff05f57f2a9cc59447be1dccce07f68109
+ md5: 5e60f3c311d00d456f089177bb75ebaf
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libarrow 24.0.0 h0935d00_1_cpu
+ - libgcc >=14
+ - libstdcxx >=14
+ - libthrift >=0.22.0,<0.22.1.0a0
+ - openssl >=3.5.6,<4.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 1426881
+ timestamp: 1778175848424
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.18-hb9d3cd8_0.conda
+ sha256: 0bd91de9b447a2991e666f284ae8c722ffb1d84acb594dbd0c031bd656fa32b2
+ md5: 70e3400cbbfa03e96dcde7fc13e38c7b
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 28424
+ timestamp: 1749901812541
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libplacebo-7.360.1-h9eeb4b2_0.conda
+ sha256: 26cbbd3d7b91801826c779c3f7e87d071856d5cbe3d55b22777ca0d984fb02ed
+ md5: e6324dfe6c02e0736bb9235f8ef3c8a6
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - libdovi >=3.3.2,<4.0a0
+ - libvulkan-loader >=1.4.341.0,<2.0a0
+ - lcms2 >=2.19,<3.0a0
+ - shaderc >=2026.2,<2026.3.0a0
+ license: LGPL-2.1-or-later
+ purls: []
+ size: 549348
+ timestamp: 1777835950707
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.58-h421ea60_0.conda
+ sha256: 377cfe037f3eeb3b1bf3ad333f724a64d32f315ee1958581fc671891d63d3f89
+ md5: eba48a68a1a2b9d3c0d9511548db85db
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libzlib >=1.3.2,<2.0a0
+ license: zlib-acknowledgement
+ purls: []
+ size: 317729
+ timestamp: 1776315175087
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.3-h9abb657_0.conda
+ sha256: c7e61b86c273ec1ce92c0e087d1a0f3ed3b9485507c6cd35e03bc63de1b6b03f
+ md5: 405ec206d230d9d37ad7c2636114cbf4
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - icu >=78.2,<79.0a0
+ - krb5 >=1.22.2,<1.23.0a0
+ - libgcc >=14
+ - openldap >=2.6.10,<2.7.0a0
+ - openssl >=3.5.5,<4.0a0
+ license: PostgreSQL
+ purls: []
+ size: 2865686
+ timestamp: 1772136328077
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.33.5-h2b00c02_0.conda
+ sha256: afbf195443269ae10a940372c1d37cda749355d2bd96ef9587a962abd87f2429
+ md5: 11ac478fa72cf12c214199b8a96523f4
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libabseil * cxx17*
+ - libabseil >=20260107.0,<20260108.0a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - libzlib >=1.3.1,<2.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 3638698
+ timestamp: 1769749419271
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.11.05-h0dc7533_1.conda
+ sha256: 138fc85321a8c0731c1715688b38e2be4fb71db349c9ab25f685315095ae70ff
+ md5: ced7f10b6cfb4389385556f47c0ad949
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libabseil * cxx17*
+ - libabseil >=20260107.0,<20260108.0a0
+ - libgcc >=14
+ - libstdcxx >=14
+ constrains:
+ - re2 2025.11.05.*
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 213122
+ timestamp: 1768190028309
+- conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.62.1-h4c96295_0.conda
+ sha256: dc4698b32b2ca3fc0715d7d307476a71622bee0f2f708f9dadec8af21e1047c8
+ md5: a4b87f1fbcdbb8ad32e99c2611120f2e
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - cairo >=1.18.4,<2.0a0
+ - fontconfig >=2.17.1,<3.0a0
+ - fonts-conda-ecosystem
+ - gdk-pixbuf >=2.44.5,<3.0a0
+ - harfbuzz >=13.1.1
+ - libgcc >=14
+ - libglib >=2.86.4,<3.0a0
+ - libxml2-16 >=2.14.6
+ - pango >=1.56.4,<2.0a0
+ constrains:
+ - __glibc >=2.17
+ license: LGPL-2.1-or-later
+ purls: []
+ size: 3474421
+ timestamp: 1773814909137
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-15.2.0-h90f66d4_19.conda
+ sha256: 7a58892a52739ce4c0f7109de9e91b4353104748eb04fc6441d88e8af444ba99
+ md5: 67eef12ce33f7ff99900c212d7076fc2
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=15.2.0
+ - libstdcxx >=15.2.0
+ license: GPL-3.0-only WITH GCC-exception-3.1
+ license_family: GPL
+ purls: []
+ size: 7930689
+ timestamp: 1778269054623
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc7d488a_2.conda
+ sha256: 57cb5f92110324c04498b96563211a1bca6a74b2918b1e8df578bfed03cc32e4
+ md5: 067590f061c9f6ea7e61e3b2112ed6b3
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - lame >=3.100,<3.101.0a0
+ - libflac >=1.5.0,<1.6.0a0
+ - libgcc >=14
+ - libogg >=1.3.5,<1.4.0a0
+ - libopus >=1.5.2,<2.0a0
+ - libstdcxx >=14
+ - libvorbis >=1.3.7,<1.4.0a0
+ - mpg123 >=1.32.9,<1.33.0a0
+ license: LGPL-2.1-or-later
+ license_family: LGPL
+ purls: []
+ size: 355619
+ timestamp: 1765181778282
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.21-h280c20c_3.conda
+ sha256: 64e5c80cbce4680a2d25179949739a6def695d72c40ca28f010711764e372d97
+ md5: 7af961ef4aa2c1136e11dd43ded245ab
+ depends:
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ license: ISC
+ purls: []
+ size: 277661
+ timestamp: 1772479381288
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.1-h0c1763c_0.conda
+ sha256: 54cdcd3214313b62c2a8ee277e6f42150d9b748264c1b70d958bf735e420ef8d
+ md5: 7dc38adcbf71e6b38748e919e16e0dce
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libzlib >=1.3.2,<2.0a0
+ license: blessing
+ purls: []
+ size: 954962
+ timestamp: 1777986471789
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda
+ sha256: fa39bfd69228a13e553bd24601332b7cfeb30ca11a3ca50bb028108fe90a7661
+ md5: eecce068c7e4eddeb169591baac20ac4
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - libzlib >=1.3.1,<2.0a0
+ - openssl >=3.5.0,<4.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 304790
+ timestamp: 1745608545575
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda
+ sha256: dff1058c76ec6b8759e41cefa2508162d00e4a5e6721aa68ec3fd10094e702dc
+ md5: 5794b3bdc38177caf969dabd3af08549
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc 15.2.0 he0feb66_19
+ constrains:
+ - libstdcxx-ng ==15.2.0=*_19
+ license: GPL-3.0-only WITH GCC-exception-3.1
+ license_family: GPL
+ purls: []
+ size: 5852044
+ timestamp: 1778269036376
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_19.conda
+ sha256: 0672b6b6e1791c92e8eccad58081a99d614fcf82bca5841f9dfa3c3e658f83b9
+ md5: e5ce228e579726c07255dbf90dc62101
+ depends:
+ - libstdcxx 15.2.0 h934c35e_19
+ license: GPL-3.0-only WITH GCC-exception-3.1
+ license_family: GPL
+ purls: []
+ size: 27776
+ timestamp: 1778269074600
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.13-hd0affe5_0.conda
+ sha256: c5008b602cb5c819f7b52d418b3ed17e1818cbbf6705b189e7ab36bb70cce3d8
+ md5: 8ee3cb7f64be0e8c4787f3a4dbe024e6
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libcap >=2.77,<2.78.0a0
+ - libgcc >=14
+ license: LGPL-2.1-or-later
+ purls: []
+ size: 492799
+ timestamp: 1773797095649
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libtensorflow_cc-2.19.1-cpu_ha812d39_5.conda
+ sha256: 324ca9745318b6ea5d4b208bfea2ac81005289cd339ddb0dcce850ceca61acbb
+ md5: 05ebb4d47388230ef273ce047083c991
+ depends:
+ - libml_dtypes-headers >=0.5.1,<0.6
+ - libtensorflow_framework ==2.19.1 cpu_h0a5eddc_5
+ - libstdcxx >=14
+ - libgcc >=14
+ - _x86_64-microarch-level >=1
+ - __glibc >=2.17,<3.0.a0
+ - openssl >=3.5.6,<4.0a0
+ - libjpeg-turbo >=3.1.4.1,<4.0a0
+ - flatbuffers >=25.9.23,<25.9.24.0a0
+ - libabseil >=20260107.1,<20260108.0a0
+ - libabseil * cxx17*
+ - giflib >=5.2.2,<5.3.0a0
+ - libzlib >=1.3.2,<2.0a0
+ - snappy >=1.2.2,<1.3.0a0
+ - libpng >=1.6.58,<1.7.0a0
+ - libsqlite >=3.53.1,<4.0a0
+ - libcurl >=8.20.0,<9.0a0
+ - libprotobuf >=6.33.5,<6.33.6.0a0
+ - libgrpc >=1.78.1,<1.79.0a0
+ - icu >=78.3,<79.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 159026496
+ timestamp: 1778107988940
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libtensorflow_framework-2.19.1-cpu_h0a5eddc_5.conda
+ sha256: 83cf93ea6c2ce1eb11e1bffd5ac84e4120add4c4005300f07f869a980f7537a8
+ md5: cfc4b8f6b8e2df761155fbf67280832c
+ depends:
+ - libstdcxx >=14
+ - libgcc >=14
+ - _x86_64-microarch-level >=1
+ - __glibc >=2.17,<3.0.a0
+ - openssl >=3.5.6,<4.0a0
+ - libjpeg-turbo >=3.1.4.1,<4.0a0
+ - flatbuffers >=25.9.23,<25.9.24.0a0
+ - libabseil >=20260107.1,<20260108.0a0
+ - libabseil * cxx17*
+ - giflib >=5.2.2,<5.3.0a0
+ - libzlib >=1.3.2,<2.0a0
+ - snappy >=1.2.2,<1.3.0a0
+ - libpng >=1.6.58,<1.7.0a0
+ - libsqlite >=3.53.1,<4.0a0
+ - libcurl >=8.20.0,<9.0a0
+ - libprotobuf >=6.33.5,<6.33.6.0a0
+ - libgrpc >=1.78.1,<1.79.0a0
+ - icu >=78.3,<79.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 10327786
+ timestamp: 1778107988940
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libtheora-1.1.1-h4ab18f5_1006.conda
+ sha256: 50c8cd416ac8425e415264de167b41ae8442de22a91098dfdd993ddbf9f13067
+ md5: 553281a034e9cf8693c9df49f6c78ea1
+ depends:
+ - libgcc-ng >=12
+ - libogg 1.3.*
+ - libogg >=1.3.5,<1.4.0a0
+ - libvorbis 1.3.*
+ - libvorbis >=1.3.7,<1.4.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 328924
+ timestamp: 1719667859099
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.22.0-h7d032f7_2.conda
+ sha256: af6025aa4a4fc3f4e71334000d2739d927e2f678607b109ec630cc17d716918a
+ md5: b6e326fbe1e3948da50ec29cee0380db
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libevent >=2.1.12,<2.1.13.0a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - libzlib >=1.3.2,<2.0a0
+ - openssl >=3.5.6,<4.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 423861
+ timestamp: 1777018957474
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda
+ sha256: e5f8c38625aa6d567809733ae04bb71c161a42e44a9fa8227abe61fa5c60ebe0
+ md5: cd5a90476766d53e901500df9215e927
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - lerc >=4.0.0,<5.0a0
+ - libdeflate >=1.25,<1.26.0a0
+ - libgcc >=14
+ - libjpeg-turbo >=3.1.0,<4.0a0
+ - liblzma >=5.8.1,<6.0a0
+ - libstdcxx >=14
+ - libwebp-base >=1.6.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - zstd >=1.5.7,<1.6.0a0
+ license: HPND
+ purls: []
+ size: 435273
+ timestamp: 1762022005702
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libtorch-2.10.0-cpu_mkl_h7058990_103.conda
+ sha256: 92d93119edc7a058987a72984e07a434f999031fcc7a0c851d28cb87c372128a
+ md5: 2df90510834746b1f52c5299bc99a81f
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - _openmp_mutex * *_llvm
+ - _openmp_mutex >=4.5
+ - fmt >=12.1.0,<12.2.0a0
+ - libabseil * cxx17*
+ - libabseil >=20260107.1,<20260108.0a0
+ - libblas * *mkl
+ - libcblas >=3.11.0,<4.0a0
+ - libgcc >=14
+ - libprotobuf >=6.33.5,<6.33.6.0a0
+ - libstdcxx >=14
+ - libuv >=1.51.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - llvm-openmp >=22.1.0
+ - mkl >=2025.3.0,<2026.0a0
+ - pybind11-abi 11
+ - sleef >=3.9.0,<4.0a0
+ constrains:
+ - pytorch-cpu 2.10.0
+ - pytorch-gpu <0.0a0
+ - pytorch 2.10.0 cpu_mkl_*_103
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 61645121
+ timestamp: 1772260200165
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.13-hd0affe5_0.conda
+ sha256: 1a1e367c04d66030aa93b4d33905f7f6fbb59cfc292e816fe3e9c1e8b3f4d1e2
+ md5: 2c2270f93d6f9073cbf72d821dfc7d72
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libcap >=2.77,<2.78.0a0
+ - libgcc >=14
+ license: LGPL-2.1-or-later
+ purls: []
+ size: 145087
+ timestamp: 1773797108513
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libunwind-1.8.3-h65a8314_0.conda
+ sha256: 71c8b9d5c72473752a0bb6e91b01dd209a03916cb71f36cc6a564e3a2a132d7a
+ md5: e179a69edd30d75c0144d7a380b88f28
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 75995
+ timestamp: 1757032240102
+- conda: https://conda.anaconda.org/conda-forge/linux-64/liburing-2.14-hb700be7_0.conda
+ sha256: 3d17b7aa90610afc65356e9e6149aeac0b2df19deda73a51f0a09cf04fd89286
+ md5: 56f65185b520e016d29d01657ac02c0d
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 154203
+ timestamp: 1770566529700
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libusb-1.0.29-h73b1eb8_0.conda
+ sha256: 89c84f5b26028a9d0f5c4014330703e7dff73ba0c98f90103e9cef6b43a5323c
+ md5: d17e3fb595a9f24fa9e149239a33475d
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - libudev1 >=257.4
+ license: LGPL-2.1-or-later
+ purls: []
+ size: 89551
+ timestamp: 1748856210075
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.11.3-hfe17d71_0.conda
+ sha256: ecbf4b7520296ed580498dc66a72508b8a79da5126e1d6dc650a7087171288f9
+ md5: 1247168fe4a0b8912e3336bccdbf98a5
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 85969
+ timestamp: 1768735071295
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42-h5347b49_0.conda
+ sha256: bc1b08c92626c91500fd9f26f2c797f3eb153b627d53e9c13cd167f1e12b2829
+ md5: 38ffe67b78c9d4de527be8315e5ada2c
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 40297
+ timestamp: 1775052476770
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb03c661_1.conda
+ sha256: c180f4124a889ac343fc59d15558e93667d894a966ec6fdb61da1604481be26b
+ md5: 0f03292cc56bf91a077a134ea8747118
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 895108
+ timestamp: 1753948278280
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libva-2.23.0-he1eb515_0.conda
+ sha256: 255c7d00b54e26f19fad9340db080716bced1d8539606e2b8396c57abd40007c
+ md5: 25813fe38b3e541fc40007592f12bae5
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libdrm >=2.4.125,<2.5.0a0
+ - libegl >=1.7.0,<2.0a0
+ - libgcc >=14
+ - libgl >=1.7.0,<2.0a0
+ - libglx >=1.7.0,<2.0a0
+ - libxcb >=1.17.0,<2.0a0
+ - wayland >=1.24.0,<2.0a0
+ - wayland-protocols
+ - xorg-libx11 >=1.8.12,<2.0a0
+ - xorg-libxext >=1.3.6,<2.0a0
+ - xorg-libxfixes >=6.0.2,<7.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 221308
+ timestamp: 1765652453244
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h54a6638_2.conda
+ sha256: ca494c99c7e5ecc1b4cd2f72b5584cef3d4ce631d23511184411abcbb90a21a5
+ md5: b4ecbefe517ed0157c37f8182768271c
+ depends:
+ - libogg
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ - libstdcxx >=14
+ - libgcc >=14
+ - libogg >=1.3.5,<1.4.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 285894
+ timestamp: 1753879378005
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libvpl-2.16.0-h54a6638_0.conda
+ sha256: 38850657dd6835613ef16b34895a54bea98bc7639db6a649c886b331635714fc
+ md5: 9f6b0090c3902b2c763a16f7dace7b6e
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - intel-media-driver >=26.1.2,<26.2.0a0
+ - libva >=2.23.0,<3.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 287992
+ timestamp: 1772980546550
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libvpx-1.15.2-hecca717_0.conda
+ sha256: 8e1119977f235b488ab32d540c018d3fd1eccefc3dd3859921a0ff555d8c10d2
+ md5: 10f5008f1c89a40b09711b5a9cdbd229
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 1070048
+ timestamp: 1762010217363
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libvulkan-loader-1.4.341.0-h5279c79_0.conda
+ sha256: a68280d57dfd29e3d53400409a39d67c4b9515097eba733aa6fe00c880620e2b
+ md5: 31ad065eda3c2d88f8215b1289df9c89
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libstdcxx >=14
+ - libgcc >=14
+ - xorg-libx11 >=1.8.12,<2.0a0
+ - xorg-libxrandr >=1.5.5,<2.0a0
+ constrains:
+ - libvulkan-headers 1.4.341.0.*
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 199795
+ timestamp: 1770077125520
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda
+ sha256: 3aed21ab28eddffdaf7f804f49be7a7d701e8f0e46c856d801270b470820a37b
+ md5: aea31d2e5b1091feca96fcfe945c3cf9
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ constrains:
+ - libwebp 1.6.0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 429011
+ timestamp: 1752159441324
+- conda: https://conda.anaconda.org/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://conda.anaconda.org/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://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.13.1-hca5e8e5_0.conda
+ sha256: d2195b5fbcb0af1ff7b345efdf89290c279b8d1d74f325ae0ac98148c375863c
+ md5: 2bca1fbb221d9c3c8e3a155784bbc2e9
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - libxcb >=1.17.0,<2.0a0
+ - libxml2
+ - libxml2-16 >=2.14.6
+ - xkeyboard-config
+ - xorg-libxau >=1.0.12,<2.0a0
+ license: MIT/X11 Derivative
+ license_family: MIT
+ purls: []
+ size: 837922
+ timestamp: 1764794163823
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.3-hca6bf5a_0.conda
+ sha256: 3d44f737c5ae52d5af32682cc1530df433f401f8e58a7533926536244127572a
+ md5: e79d2c2f24b027aa8d5ab1b1ba3061e7
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - icu >=78.3,<79.0a0
+ - libgcc >=14
+ - libiconv >=1.18,<2.0a0
+ - liblzma >=5.8.3,<6.0a0
+ - libzlib >=1.3.2,<2.0a0
+ constrains:
+ - libxml2 2.15.3
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 559775
+ timestamp: 1776376739004
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.3-h49c6c72_0.conda
+ sha256: 3bc5551720c58591f6ea1146f7d1539c734ed1c40e7b9f5cb8cb7e900c509aba
+ md5: 995d8c8bad2a3cc8db14675a153dec2b
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - icu >=78.3,<79.0a0
+ - libgcc >=14
+ - libiconv >=1.18,<2.0a0
+ - liblzma >=5.8.3,<6.0a0
+ - libxml2-16 2.15.3 hca6bf5a_0
+ - libzlib >=1.3.2,<2.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 46810
+ timestamp: 1776376751152
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.43-h711ed8c_1.conda
+ sha256: 0694760a3e62bdc659d90a14ae9c6e132b525a7900e59785b18a08bb52a5d7e5
+ md5: 87e6096ec6d542d1c1f8b33245fe8300
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libxml2
+ - libxml2-16 >=2.14.6
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 245434
+ timestamp: 1757963724977
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.2-h6991a6a_0.conda
+ sha256: 991e7348b0f650d495fb6d8aa9f8c727bdf52dabf5853c0cc671439b160dce48
+ md5: a7b27c075c9b7f459f1c022090697cba
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - bzip2 >=1.0.8,<2.0a0
+ - libgcc >=13
+ - libzlib >=1.3.1,<2.0a0
+ - openssl >=3.3.2,<4.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 109043
+ timestamp: 1730442108429
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda
+ sha256: 55044c403570f0dc26e6364de4dc5368e5f3fc7ff103e867c487e2b5ab2bcda9
+ md5: d87ff7921124eccd67248aa483c23fec
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ constrains:
+ - zlib 1.3.2 *_2
+ license: Zlib
+ license_family: Other
+ purls: []
+ size: 63629
+ timestamp: 1774072609062
+- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-22.1.5-h4922eb0_1.conda
+ sha256: dae1fe2195dd1da5a8a565255c738f19c0b71490ddeee5d0fc9c5b037b19107c
+ md5: f66101d2eb5de2924c10a63bbfa2926e
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ constrains:
+ - openmp 22.1.5|22.1.5.*
+ - intel-openmp <0.0a0
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: APACHE
+ purls: []
+ size: 6128130
+ timestamp: 1778447746870
+- conda: https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.47.0-py312h7424e68_1.conda
+ sha256: 27b34a24cc4c872d328b07319ae5ab6673d5c94ec923cde5b1f3ac7f59b95dd0
+ md5: 49f23211559c82cf8c5ffac112fe73b4
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - libzlib >=1.3.2,<2.0a0
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - zstd >=1.5.7,<1.6.0a0
+ license: BSD-2-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/llvmlite?source=hash-mapping
+ size: 34127488
+ timestamp: 1776076739766
+- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py312h3d67a73_1.conda
+ sha256: e8ae9141c7afcc95555fca7ff5f91d7a84f094536715211e750569fd4bb2caa4
+ md5: a669145a2c834895bdf3fcba1f1e5b9c
+ depends:
+ - python
+ - lz4-c
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - python_abi 3.12.* *_cp312
+ - lz4-c >=1.10.0,<1.11.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/lz4?source=hash-mapping
+ size: 44154
+ timestamp: 1765026394687
+- conda: https://conda.anaconda.org/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://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py312h8a5da7c_1.conda
+ sha256: 5f3aad1f3a685ed0b591faad335957dbdb1b73abfd6fc731a0d42718e0653b33
+ md5: 93a4752d42b12943a355b682ee43285b
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - jinja2 >=3.0.0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/markupsafe?source=hash-mapping
+ size: 26057
+ timestamp: 1772445297924
+- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.10.9-py312h7900ff3_0.conda
+ sha256: cdd59bb1a52b09979f11c68909d53120b2e749edd1992853a74e1604db19c8b0
+ md5: 579c6a324b197594fabc9240bddf2d8b
+ depends:
+ - matplotlib-base >=3.10.9,<3.10.10.0a0
+ - pyside6 >=6.7.2
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - tornado >=5
+ license: PSF-2.0
+ license_family: PSF
+ purls: []
+ size: 17831
+ timestamp: 1777000588302
+- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.9-py312he3d6523_0.conda
+ sha256: c7e133837376e53e6a52719c205a3067c42f05769bc3e8307417f8d817dfc63e
+ md5: 7d499b5b6d150f133800dc3a582771c7
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - contourpy >=1.0.1
+ - cycler >=0.10
+ - fonttools >=4.22.0
+ - freetype
+ - kiwisolver >=1.3.1
+ - libfreetype >=2.14.3
+ - libfreetype6 >=2.14.3
+ - libgcc >=14
+ - libstdcxx >=14
+ - numpy >=1.23
+ - numpy >=1.23,<3
+ - packaging >=20.0
+ - pillow >=8
+ - pyparsing >=2.3.1
+ - python >=3.12,<3.13.0a0
+ - python-dateutil >=2.7
+ - python_abi 3.12.* *_cp312
+ - qhull >=2020.2,<2020.3.0a0
+ - tk >=8.6.13,<8.7.0a0
+ license: PSF-2.0
+ license_family: PSF
+ purls:
+ - pkg:pypi/matplotlib?source=hash-mapping
+ size: 8336056
+ timestamp: 1777000573501
+- conda: https://conda.anaconda.org/conda-forge/linux-64/mesalib-26.0.3-h8cca3c9_0.conda
+ sha256: 3e6385e04e5a8f62599a5eb72b9a8c65ac143f0621d57f24688f103276d686eb
+ md5: 823e4ae1d60e97845773f7358585fc56
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - xorg-libxshmfence >=1.3.3,<2.0a0
+ - zstd >=1.5.7,<1.6.0a0
+ - xorg-libx11 >=1.8.13,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - xorg-libxrandr >=1.5.5,<2.0a0
+ - libexpat >=2.7.4,<3.0a0
+ - spirv-tools >=2026,<2027.0a0
+ - libllvm22 >=22.1.1,<22.2.0a0
+ - libxcb >=1.17.0,<2.0a0
+ - libdrm >=2.4.125,<2.5.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 2964576
+ timestamp: 1773867966762
+- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2025.3.1-h0e700b2_12.conda
+ sha256: ed9609e4687c64532d829e466eda9fa1a8ae25938144fba3a3a20df804d796fd
+ md5: 1a4a54fad5e36b8282ec6208dcb9bfb7
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - _openmp_mutex * *_llvm
+ - _openmp_mutex >=4.5
+ - libgcc >=14
+ - libstdcxx >=14
+ - llvm-openmp >=22.1.4
+ - onemkl-license 2025.3.1 hf2ce2f3_12
+ - tbb >=2022.3.0
+ license: LicenseRef-IntelSimplifiedSoftwareOct2022
+ license_family: Proprietary
+ purls: []
+ size: 125389937
+ timestamp: 1778104806895
+- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2025.3.1-ha770c72_12.conda
+ sha256: 8591a94c590696f68a296a7e5bddc5f302682e150223343435e8a8e41d39fa57
+ md5: db484eb7d5c23ca2a3129ddf5943de76
+ depends:
+ - mkl 2025.3.1 h0e700b2_12
+ - mkl-include 2025.3.1 hf2ce2f3_12
+ license: LicenseRef-IntelSimplifiedSoftwareOct2022
+ license_family: Proprietary
+ purls: []
+ size: 40096
+ timestamp: 1778104976625
+- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2025.3.1-hf2ce2f3_12.conda
+ sha256: ce12982af07a2a18e4c3189b2d95226cd74f0e7d7e3f31129d50e05f928b956e
+ md5: c6e7262ad8afd5fe1d64554cfa456060
+ depends:
+ - onemkl-license 2025.3.1 hf2ce2f3_12
+ license: LicenseRef-IntelSimplifiedSoftwareOct2022
+ license_family: Proprietary
+ purls: []
+ size: 692947
+ timestamp: 1778105007431
+- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-service-2.7.1-py312h4307cf8_0.conda
+ sha256: e4a60b68d4fbf6030e4a59c9adfa5f35e8a6e3db0ad9ac460717b1892c692919
+ md5: 7a21dfd59f3c33ed62c7f47b67032726
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - mkl >=2025.3.1,<2026.0a0
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/mkl-service?source=hash-mapping
+ size: 77620
+ timestamp: 1778374074379
+- conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.4-np2py312h0f77346_1.conda
+ sha256: e4d06cb57b23319ecee6c2a488c43c6e91c215cdc47a47eb08316beaf3412951
+ md5: 657a00c06d327012fb3002e5600b2976
+ depends:
+ - python
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - python_abi 3.12.* *_cp312
+ - numpy >=1.23,<3
+ license: MPL-2.0 AND Apache-2.0
+ purls:
+ - pkg:pypi/ml-dtypes?source=hash-mapping
+ size: 344784
+ timestamp: 1771362527782
+- conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.4.0-he0a73b1_0.conda
+ sha256: c1fdeebc9f8e4f51df265efca4ea20c7a13911193cc255db73cccb6e422ae486
+ md5: 770d00bf57b5599c4544d61b61d8c6c6
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - gmp >=6.3.0,<7.0a0
+ - libgcc >=14
+ - mpfr >=4.2.2,<5.0a0
+ license: LGPL-3.0-or-later
+ license_family: LGPL
+ purls: []
+ size: 100245
+ timestamp: 1774472435333
+- conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.2-he0a73b1_0.conda
+ sha256: 8690f550a780f75d9c47f7ffc15f5ff1c149d36ac17208e50eda101ca16611b9
+ md5: 85ce2ffa51ab21da5efa4a9edc5946aa
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - gmp >=6.3.0,<7.0a0
+ - libgcc >=14
+ license: LGPL-3.0-only
+ license_family: LGPL
+ purls: []
+ size: 730422
+ timestamp: 1773413915171
+- conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda
+ sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200
+ md5: c7f302fd11eeb0987a6a5e1f3aed6a21
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - libstdcxx >=13
+ license: LGPL-2.1-only
+ license_family: LGPL
+ purls: []
+ size: 491140
+ timestamp: 1730581373280
+- conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.1.2-py312hd9148b4_1.conda
+ sha256: 94068fd39d1a672f8799e3146a18ba4ef553f0fcccefddb3c07fbdabfd73667a
+ md5: 2e489969e38f0b428c39492619b5e6e5
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: Apache-2.0
+ license_family: Apache
+ purls:
+ - pkg:pypi/msgpack?source=hash-mapping
+ size: 102525
+ timestamp: 1762504116832
+- conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.7.1-py312h8a5da7c_0.conda
+ sha256: 0da7e7f4e69bfd6c98eff92523e93a0eceeaec1c6d503d4a4cd0af816c3fe3dc
+ md5: 17c77acc59407701b54404cfd3639cac
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/multidict?source=hash-mapping
+ size: 100056
+ timestamp: 1771611023053
+- conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.19-py312h5253ce2_0.conda
+ sha256: 12e6f7a136ddd7e254d79e18f8815d268967a22e66617b377599fe51dc1269f6
+ md5: 7efbcffe0c84f219ae981478106c55f5
+ depends:
+ - python
+ - dill >=0.4.1
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/multiprocess?source=hash-mapping
+ size: 368525
+ timestamp: 1769086764893
+- conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.20.2-py312h4c3975b_0.conda
+ sha256: 2c03499b0f267a29321ce198a86285449eca2bb685e883703ef564a2ce641802
+ md5: e3174d3f01d539ffd867a85639a8d9b5
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - mypy_extensions >=1.0.0
+ - pathspec >=1.0.0
+ - psutil >=4.0
+ - python >=3.12,<3.13.0a0
+ - python-librt >=0.8.0
+ - python_abi 3.12.* *_cp312
+ - typing_extensions >=4.6.0
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/mypy?source=hash-mapping
+ size: 22035539
+ timestamp: 1776802000447
+- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_0.conda
+ sha256: fc89f74bbe362fb29fa3c037697a89bec140b346a2469a90f7936d1d7ea4d8a3
+ md5: fc21868a1a5aacc937e7a18747acb8a5
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ license: X11 AND BSD-3-Clause
+ purls: []
+ size: 918956
+ timestamp: 1777422145199
+- conda: https://conda.anaconda.org/conda-forge/linux-64/netcdf4-1.7.4-nompi_py311ha0596eb_107.conda
+ noarch: python
+ sha256: e78690e717e0d7a7ea73ff378f28b6eeaf6341e2ee7123e54b6a64bcf738d80c
+ md5: ef14eaaa377836b3b18ab8a6b07bf9fa
+ depends:
+ - python
+ - certifi
+ - cftime
+ - numpy
+ - packaging
+ - hdf5
+ - libnetcdf
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ - libzlib >=1.3.2,<2.0a0
+ - _python_abi3_support 1.*
+ - cpython >=3.11
+ - hdf5 >=1.14.6,<1.14.7.0a0
+ - numpy >=1.23,<3
+ - libnetcdf >=4.10.0,<4.10.1.0a0
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/netcdf4?source=hash-mapping
+ size: 1093921
+ timestamp: 1774640040842
+- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_1.conda
+ sha256: fd2cbd8dfc006c72f45843672664a8e4b99b2f8137654eaae8c3d46dca776f63
+ md5: 16c2a0e9c4a166e53632cfca4f68d020
+ constrains:
+ - nlohmann_json-abi ==3.12.0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 136216
+ timestamp: 1758194284857
+- conda: https://conda.anaconda.org/conda-forge/linux-64/numba-0.65.1-py312hd1dde6f_1.conda
+ sha256: 6c758c97b06e0bb99e425edce981610b2db9f95c0996f48288a031d847981193
+ md5: acd0d3547b3cb443a5ce9124412b6295
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - _openmp_mutex >=4.5
+ - libgcc >=14
+ - libstdcxx >=14
+ - llvmlite >=0.47.0,<0.48.0a0
+ - numpy >=1.22.3,<2.5
+ - numpy >=1.23,<3
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - cudatoolkit >=11.2
+ - tbb >=2021.6.0
+ - cuda-version >=11.2
+ - cuda-python >=11.6
+ - libopenblas !=0.3.6
+ - scipy >=1.0
+ license: BSD-2-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/numba?source=hash-mapping
+ size: 5707782
+ timestamp: 1778390479325
+- conda: https://conda.anaconda.org/conda-forge/linux-64/numpoly-1.3.9-py312h4c3975b_0.conda
+ sha256: 2c4fea0a720e804d2123fa8dee10e5bcefca90b57261e16dd840c221584340d9
+ md5: ffdb995c61931c580daf240d3c9c8af1
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - numpy
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - setuptools
+ - six
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/numpoly?source=hash-mapping
+ size: 248872
+ timestamp: 1767373959403
+- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.4-py312h33ff503_0.conda
+ sha256: 77f301d5e31c91935aaeebf7d1f408dbd927e04d43a5991de52d26f92b2267f2
+ md5: 98f04b59a222970c45c78208aeac8df8
+ depends:
+ - python
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ - libstdcxx >=14
+ - libcblas >=3.9.0,<4.0a0
+ - python_abi 3.12.* *_cp312
+ - libblas >=3.9.0,<4.0a0
+ - liblapack >=3.9.0,<4.0a0
+ constrains:
+ - numpy-base <0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/numpy?source=compressed-mapping
+ size: 8756150
+ timestamp: 1778655435430
+- conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.3-hb9d3cd8_0.conda
+ sha256: 2254dae821b286fb57c61895f2b40e3571a070910fdab79a948ff703e1ea807b
+ md5: 56f8947aa9d5cf37b0b3d43b83f34192
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - opencl-headers >=2024.10.24
+ license: BSD-2-Clause
+ license_family: BSD
+ purls: []
+ size: 106742
+ timestamp: 1743700382939
+- conda: https://conda.anaconda.org/conda-forge/linux-64/onednn-3.11.1-threadpool_h77e0eb8_0.conda
+ sha256: 727b2ab3ed9c07a5dd037b385075d60fa6003ae092ea7096dc6a0f514b512f7f
+ md5: 3098db15ec2d7215e1799fa14feb18a2
+ depends:
+ - libstdcxx >=14
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ track_features:
+ - onednn-p-0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 12922846
+ timestamp: 1773758695054
+- conda: https://conda.anaconda.org/conda-forge/linux-64/onednn-cpu-threadpool-3.11.1-threadpool_h3c4d5c8_0.conda
+ sha256: 16c52b70ea1645408de246ae09e51b36a9a15343930ba681cf3017e8f2110da5
+ md5: 03d6d4b1ca5fff17bda0e937e7810c2c
+ depends:
+ - onednn ==3.11.1 threadpool_h77e0eb8_0
+ - onednn >=3.11.1,<4.0a0
+ track_features:
+ - onednn-cpu-threadpool-p-0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 10835
+ timestamp: 1773758695054
+- conda: https://conda.anaconda.org/conda-forge/linux-64/onemkl-license-2025.3.1-hf2ce2f3_12.conda
+ sha256: bdc5e2eec18512a21ab330d5b2b3dd8b285410f4076efc5379a2ef193d81b832
+ md5: 95321ce2d03500a23a6e80034cbd4804
+ license: LicenseRef-IntelSimplifiedSoftwareOct2022
+ license_family: Proprietary
+ purls: []
+ size: 40041
+ timestamp: 1778104572837
+- conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2025.06.13-hecca717_0.conda
+ sha256: 8de2f0cd8a659b01abf86e7fbb8cea4f28ada62fd288429a2bbc040db1b98dd0
+ md5: c930c8052d780caa41216af7de472226
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 55754
+ timestamp: 1773844383536
+- conda: https://conda.anaconda.org/conda-forge/linux-64/openh264-2.6.0-hc22cd8d_0.conda
+ sha256: 3f231f2747a37a58471c82a9a8a80d92b7fece9f3fce10901a5ac888ce00b747
+ md5: b28cf020fd2dead0ca6d113608683842
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - libstdcxx >=13
+ license: BSD-2-Clause
+ license_family: BSD
+ purls: []
+ size: 731471
+ timestamp: 1739400677213
+- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda
+ sha256: 3900f9f2dbbf4129cf3ad6acf4e4b6f7101390b53843591c53b00f034343bc4d
+ md5: 11b3379b191f63139e29c0d19dee24cd
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libpng >=1.6.50,<1.7.0a0
+ - libstdcxx >=14
+ - libtiff >=4.7.1,<4.8.0a0
+ - libzlib >=1.3.1,<2.0a0
+ license: BSD-2-Clause
+ license_family: BSD
+ purls: []
+ size: 355400
+ timestamp: 1758489294972
+- conda: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.13-hbde042b_0.conda
+ sha256: 21c4f6c7f41dc9bec2ea2f9c80440d9a4d45a6f2ac13243e658f10dcf1044146
+ md5: 680608784722880fbfe1745067570b00
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - cyrus-sasl >=2.1.28,<3.0a0
+ - krb5 >=1.22.2,<1.23.0a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - openssl >=3.5.6,<4.0a0
+ license: OLDAP-2.8
+ license_family: BSD
+ purls: []
+ size: 786149
+ timestamp: 1775741359582
+- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.2-h35e630c_0.conda
+ sha256: c0ef482280e38c71a08ad6d71448194b719630345b0c9c60744a2010e8a8e0cb
+ md5: da1b85b6a87e141f5140bb9924cecab0
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - ca-certificates
+ - libgcc >=14
+ license: Apache-2.0
+ license_family: Apache
+ purls: []
+ size: 3167099
+ timestamp: 1775587756857
+- conda: https://conda.anaconda.org/conda-forge/linux-64/optree-0.19.1-py312hd9148b4_0.conda
+ sha256: ff6a3f9124d112541f2557e8b40c00dbca9aaf5e254cd16fb485e8ad925c48d6
+ md5: 5a9273e06750ca36e478c142813e59a8
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - typing-extensions >=4.6
+ license: Apache-2.0
+ license_family: Apache
+ purls:
+ - pkg:pypi/optree?source=hash-mapping
+ size: 492574
+ timestamp: 1778047684091
+- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.3.0-h21090e2_0.conda
+ sha256: a60c2578c8422e0c67206d269767feb4d3e627511558b6866e5daf2231d5214d
+ md5: 8027fce94fdfdf2e54f9d18cbae496df
+ depends:
+ - tzdata
+ - libstdcxx >=14
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ - lz4-c >=1.10.0,<1.11.0a0
+ - snappy >=1.2.2,<1.3.0a0
+ - libabseil >=20260107.1,<20260108.0a0
+ - libabseil * cxx17*
+ - libprotobuf >=6.33.5,<6.33.6.0a0
+ - zstd >=1.5.7,<1.6.0a0
+ - libzlib >=1.3.1,<2.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 1468651
+ timestamp: 1773230208923
+- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.3-py312h8ecdadd_0.conda
+ sha256: 009408dcfdc789b8a1748d6a63fd2134ea2edc8474231ea7beba0ac3ad772a37
+ md5: 15c437bfa4cbddd379b95357c9aa4150
+ depends:
+ - python
+ - numpy >=1.26.0
+ - python-dateutil >=2.8.2
+ - libgcc >=14
+ - libstdcxx >=14
+ - __glibc >=2.17,<3.0.a0
+ - python_abi 3.12.* *_cp312
+ - numpy >=1.23,<3
+ constrains:
+ - adbc-driver-postgresql >=1.2.0
+ - adbc-driver-sqlite >=1.2.0
+ - beautifulsoup4 >=4.12.3
+ - blosc >=1.21.3
+ - bottleneck >=1.4.2
+ - fastparquet >=2024.11.0
+ - fsspec >=2024.10.0
+ - gcsfs >=2024.10.0
+ - html5lib >=1.1
+ - hypothesis >=6.116.0
+ - jinja2 >=3.1.5
+ - lxml >=5.3.0
+ - matplotlib >=3.9.3
+ - numba >=0.60.0
+ - numexpr >=2.10.2
+ - odfpy >=1.4.1
+ - openpyxl >=3.1.5
+ - psycopg2 >=2.9.10
+ - pyarrow >=13.0.0
+ - pyiceberg >=0.8.1
+ - pymysql >=1.1.1
+ - pyqt5 >=5.15.9
+ - pyreadstat >=1.2.8
+ - pytables >=3.10.1
+ - pytest >=8.3.4
+ - pytest-xdist >=3.6.1
+ - python-calamine >=0.3.0
+ - pytz >=2024.2
+ - pyxlsb >=1.0.10
+ - qtpy >=2.4.2
+ - scipy >=1.14.1
+ - s3fs >=2024.10.0
+ - sqlalchemy >=2.0.36
+ - tabulate >=0.9.0
+ - xarray >=2024.10.0
+ - xlrd >=2.0.1
+ - xlsxwriter >=3.2.0
+ - zstandard >=0.23.0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/pandas?source=compressed-mapping
+ size: 14872605
+ timestamp: 1778602625175
+- conda: https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.9.0.2-ha770c72_0.conda
+ sha256: d46f76ed09396e3bd1dc11030b3d0d222c25ba8d92f3cde08bc6fbd1eec4f9e0
+ md5: de8ccf9ffba55bd20ee56301cfc7e6db
+ license: GPL-2.0-or-later
+ license_family: GPL
+ purls: []
+ size: 22364689
+ timestamp: 1773933354952
+- conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hda50119_1.conda
+ sha256: 315b52bfa6d1a820f4806f6490d472581438a28e21df175290477caec18972b0
+ md5: d53ffc0edc8eabf4253508008493c5bc
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - cairo >=1.18.4,<2.0a0
+ - fontconfig >=2.17.1,<3.0a0
+ - fonts-conda-ecosystem
+ - fribidi >=1.0.16,<2.0a0
+ - harfbuzz >=13.2.1
+ - libexpat >=2.7.4,<3.0a0
+ - libfreetype >=2.14.2
+ - libfreetype6 >=2.14.2
+ - libgcc >=14
+ - libglib >=2.86.4,<3.0a0
+ - libpng >=1.6.55,<1.7.0a0
+ - libzlib >=1.3.2,<2.0a0
+ license: LGPL-2.1-or-later
+ purls: []
+ size: 458036
+ timestamp: 1774281947855
+- conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda
+ sha256: 5e6f7d161356fefd981948bea5139c5aa0436767751a6930cb1ca801ebb113ff
+ md5: 7a3bff861a6583f1889021facefc08b1
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - bzip2 >=1.0.8,<2.0a0
+ - libgcc >=14
+ - libzlib >=1.3.1,<2.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 1222481
+ timestamp: 1763655398280
+- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.2.0-py312h50c33e8_0.conda
+ sha256: fa291f8915114733dc1df9f1627b8c63c517217c1eee1a6ede2ceb5e368cf27a
+ md5: 9e5609720e31213d4f39afe377f6217e
+ depends:
+ - python
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ - lcms2 >=2.18,<3.0a0
+ - libxcb >=1.17.0,<2.0a0
+ - libjpeg-turbo >=3.1.2,<4.0a0
+ - libtiff >=4.7.1,<4.8.0a0
+ - libwebp-base >=1.6.0,<2.0a0
+ - openjpeg >=2.5.4,<3.0a0
+ - python_abi 3.12.* *_cp312
+ - tk >=8.6.13,<8.7.0a0
+ - libfreetype >=2.14.3
+ - libfreetype6 >=2.14.3
+ - zlib-ng >=2.3.3,<2.4.0a0
+ license: HPND
+ purls:
+ - pkg:pypi/pillow?source=hash-mapping
+ size: 1039561
+ timestamp: 1775060059882
+- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda
+ sha256: 43d37bc9ca3b257c5dd7bf76a8426addbdec381f6786ff441dc90b1a49143b6a
+ md5: c01af13bdc553d1a8fbfff6e8db075f0
+ depends:
+ - libgcc >=14
+ - libstdcxx >=14
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 450960
+ timestamp: 1754665235234
+- conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.8.1-he0df7b0_0.conda
+ sha256: dff6f355025b9a510d9093e29fd970fa1091e758b848c9dec814d96ae63a09ba
+ md5: b23619e5e9009eaa070ead0342034027
+ depends:
+ - sqlite
+ - libtiff
+ - libcurl
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - libtiff >=4.7.1,<4.8.0a0
+ - libsqlite >=3.53.0,<4.0a0
+ - libcurl >=8.19.0,<9.0a0
+ constrains:
+ - proj4 ==999999999999
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 3652144
+ timestamp: 1775840249166
+- conda: https://conda.anaconda.org/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: 199544
+ timestamp: 1730769112346
+- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.3.1-py312h178313f_0.conda
+ sha256: d0ff67d89cf379a9f0367f563320621f0bc3969fe7f5c85e020f437de0927bb4
+ md5: 0cf580c1b73146bb9ff1bbdb4d4c8cf9
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/propcache?source=hash-mapping
+ size: 54233
+ timestamp: 1744525107433
+- conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-6.33.5-py312ha7b3241_2.conda
+ sha256: 53997629b27a2465989f23e3a6212cfcc19f51c474d8f89905bb99859140ee88
+ md5: 0aee4f9ff95fc4bc78264a93e2a74adf
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libabseil * cxx17*
+ - libabseil >=20260107.1,<20260108.0a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - libzlib >=1.3.1,<2.0a0
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - libprotobuf 6.33.5
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/protobuf?source=hash-mapping
+ size: 481654
+ timestamp: 1773265949321
+- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py312h5253ce2_0.conda
+ sha256: d834fd656133c9e4eaf63ffe9a117c7d0917d86d89f7d64073f4e3a0020bd8a7
+ md5: dd94c506b119130aef5a9382aed648e7
+ depends:
+ - python
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/psutil?source=hash-mapping
+ size: 225545
+ timestamp: 1769678155334
+- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda
+ sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973
+ md5: b3c17d95b5a10c6e64a21fa17573e70e
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 8252
+ timestamp: 1726802366959
+- conda: https://conda.anaconda.org/conda-forge/linux-64/pugixml-1.15-h3f63f65_0.conda
+ sha256: 23c98a5000356e173568dc5c5770b53393879f946f3ace716bbdefac2a8b23d2
+ md5: b11a4c6bf6f6f44e5e143f759ffa2087
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - libstdcxx >=13
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 118488
+ timestamp: 1736601364156
+- conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-h9a6aba3_3.conda
+ sha256: 0a0858c59805d627d02bdceee965dd84fde0aceab03a2f984325eec08d822096
+ md5: b8ea447fdf62e3597cb8d2fae4eb1a90
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - dbus >=1.16.2,<2.0a0
+ - libgcc >=14
+ - libglib >=2.86.1,<3.0a0
+ - libiconv >=1.18,<2.0a0
+ - libsndfile >=1.2.2,<1.3.0a0
+ - libsystemd0 >=257.10
+ - libxcb >=1.17.0,<2.0a0
+ constrains:
+ - pulseaudio 17.0 *_3
+ license: LGPL-2.1-or-later
+ license_family: LGPL
+ purls: []
+ size: 750785
+ timestamp: 1763148198088
+- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-24.0.0-py312h7900ff3_0.conda
+ sha256: ce11f466f0dcfc41bd0ef3719adb396fbffa6b866aac75c9242938fa58e546d5
+ md5: f9ced0be11f0d3120336e4171a121c2a
+ depends:
+ - libarrow-acero 24.0.0.*
+ - libarrow-dataset 24.0.0.*
+ - libarrow-substrait 24.0.0.*
+ - libparquet 24.0.0.*
+ - pyarrow-core 24.0.0 *_0_*
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 26787
+ timestamp: 1776927989772
+- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-24.0.0-py312h2054cf2_0_cpu.conda
+ sha256: cb2c89aeb97a97572869200e37c153098c5877c7be4774f045459976e0f70233
+ md5: fe5033add07e3cf4876fd091b5fecf31
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libarrow 24.0.0.* *cpu
+ - libarrow-compute 24.0.0.* *cpu
+ - libgcc >=14
+ - libstdcxx >=14
+ - libzlib >=1.3.2,<2.0a0
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - numpy >=1.23,<3
+ - apache-arrow-proc * cpu
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/pyarrow?source=hash-mapping
+ size: 5401544
+ timestamp: 1776927982900
+- conda: https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.6.2-py312h587e1b2_1.conda
+ sha256: cc84dd07811861c800fb3f0df3fb64ea579adcb518a5daac6e1089baabd697d1
+ md5: 6e4d8ed581cc576435d366372054ac71
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - cffi >=1.4.1
+ - libgcc >=14
+ - libsodium >=1.0.21,<1.0.22.0a0
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - six
+ license: Apache-2.0
+ license_family: Apache
+ purls:
+ - pkg:pypi/pynacl?source=hash-mapping
+ size: 1159724
+ timestamp: 1772171238138
+- conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.11.0-py312h50ac2ff_3.conda
+ sha256: c30432bb07d396600db971a775cd54506c8cb9e3fe494a4df3f169b8c1d15a1e
+ md5: 3cc6b6c3dce5070ae78f106bb3840e7b
+ depends:
+ - python
+ - qt6-main 6.11.0.*
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - libvulkan-loader >=1.4.341.0,<2.0a0
+ - libxml2
+ - libxml2-16 >=2.14.6
+ - qt6-main >=6.11.0,<6.12.0a0
+ - libgl >=1.7.0,<2.0a0
+ - libxslt >=1.1.43,<2.0a0
+ - python_abi 3.12.* *_cp312
+ - libegl >=1.7.0,<2.0a0
+ - libclang13 >=21.1.8
+ - libopengl >=1.7.0,<2.0a0
+ license: LGPL-3.0-only
+ license_family: LGPL
+ purls:
+ - pkg:pypi/pyside6?source=hash-mapping
+ - pkg:pypi/shiboken6?source=hash-mapping
+ size: 13642640
+ timestamp: 1778540462882
+- conda: https://conda.anaconda.org/conda-forge/linux-64/pytensor-2.38.3-py312hc487a0d_0.conda
+ sha256: 01d6ce3754dfba3221f833498cb8acb06539d1d50242bf01b9a27bc6075f7c40
+ md5: 941e257b3ce5a125a96845295f452831
+ depends:
+ - python
+ - pytensor-base ==2.38.3 np2py312h0f77346_0
+ - gxx
+ - blas * mkl
+ - mkl-service
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 11731
+ timestamp: 1777368340257
+- conda: https://conda.anaconda.org/conda-forge/linux-64/pytensor-base-2.38.3-np2py312h0f77346_0.conda
+ sha256: 9c7bbc16e983fb4182e716ab0edbc2bd695a5c4d62490502b86d42102ad3d77b
+ md5: 5fbd698baa8be761d82d1c0c063b959b
+ depends:
+ - python
+ - setuptools >=59.0.0
+ - scipy >=1,<2
+ - numpy >=2.0
+ - numba >=0.58,<=0.65.1
+ - filelock >=3.15
+ - etuples
+ - logical-unification
+ - minikanren
+ - cons
+ - libgcc >=14
+ - libstdcxx >=14
+ - __glibc >=2.17,<3.0.a0
+ - numpy >=1.23,<3
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/pytensor?source=hash-mapping
+ size: 2783027
+ timestamp: 1777368340257
+- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.13-hd63d673_0_cpython.conda
+ sha256: a44655c1c3e1d43ed8704890a91e12afd68130414ea2c0872e154e5633a13d7e
+ md5: 7eccb41177e15cc672e1babe9056018e
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - bzip2 >=1.0.8,<2.0a0
+ - ld_impl_linux-64 >=2.36.1
+ - libexpat >=2.7.4,<3.0a0
+ - libffi >=3.5.2,<3.6.0a0
+ - libgcc >=14
+ - liblzma >=5.8.2,<6.0a0
+ - libnsl >=2.0.1,<2.1.0a0
+ - libsqlite >=3.51.2,<4.0a0
+ - libuuid >=2.41.3,<3.0a0
+ - libxcrypt >=4.4.36
+ - libzlib >=1.3.1,<2.0a0
+ - ncurses >=6.5,<7.0a0
+ - openssl >=3.5.5,<4.0a0
+ - readline >=8.3,<9.0a0
+ - tk >=8.6.13,<8.7.0a0
+ - tzdata
+ constrains:
+ - python_abi 3.12.* *_cp312
+ license: Python-2.0
+ purls: []
+ size: 31608571
+ timestamp: 1772730708989
+- conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.11.0-py312h5253ce2_0.conda
+ sha256: 6aa36a62db36c2aa144640a3fba1cd3c61dd679a979288eae2fd3b9f89ef4eac
+ md5: 0a73899771633857390eac009995e5f9
+ depends:
+ - python
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ - python_abi 3.12.* *_cp312
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/librt?source=hash-mapping
+ size: 157857
+ timestamp: 1778511616936
+- conda: https://conda.anaconda.org/conda-forge/linux-64/pytokens-0.4.1-py312h5253ce2_1.conda
+ sha256: 489b60e2f05899e90968dda78284c6f4de3dbd0f448d120b643e0b13204d6a1f
+ md5: 0f13f49b4b337e03e76e2fda784a3e25
+ depends:
+ - python
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ - python_abi 3.12.* *_cp312
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/pytokens?source=hash-mapping
+ size: 279237
+ timestamp: 1771613646515
+- conda: https://conda.anaconda.org/conda-forge/linux-64/pytorch-2.10.0-cpu_mkl_py312_hca44ed5_103.conda
+ sha256: 0ac2511916f1e82e436e432e9e2c08471e58480f95435716f28ec5bd618ee9ce
+ md5: 4ecb7390be8580b0b2116bbc1fdda486
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - _openmp_mutex * *_llvm
+ - _openmp_mutex >=4.5
+ - filelock
+ - fmt >=12.1.0,<12.2.0a0
+ - fsspec
+ - jinja2
+ - libabseil * cxx17*
+ - libabseil >=20260107.1,<20260108.0a0
+ - libblas * *mkl
+ - libcblas >=3.11.0,<4.0a0
+ - libgcc >=14
+ - libprotobuf >=6.33.5,<6.33.6.0a0
+ - libstdcxx >=14
+ - libtorch 2.10.0 cpu_mkl_h7058990_103
+ - libuv >=1.51.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - llvm-openmp >=22.1.0
+ - mkl >=2025.3.0,<2026.0a0
+ - mpmath <1.4
+ - networkx
+ - numpy >=1.23,<3
+ - optree >=0.13.0
+ - pybind11 <3.0.2
+ - pybind11-abi 11
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - setuptools
+ - sleef >=3.9.0,<4.0a0
+ - sympy >=1.13.3
+ - typing_extensions >=4.10.0
+ constrains:
+ - pytorch-cpu 2.10.0
+ - pytorch-gpu <0.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/torch?source=hash-mapping
+ size: 24291825
+ timestamp: 1772260740719
+- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py312h8a5da7c_1.conda
+ sha256: cb142bfd92f6e55749365ddc244294fa7b64db6d08c45b018ff1c658907bfcbf
+ md5: 15878599a87992e44c059731771591cb
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - yaml >=0.2.5,<0.3.0a0
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/pyyaml?source=hash-mapping
+ size: 198293
+ timestamp: 1770223620706
+- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.1.0-py312hda471dd_2.conda
+ noarch: python
+ sha256: be66c1f85c3b48137200d62c12d918f4f8ad329423daef04fed292818efd3c28
+ md5: 082985717303dab433c976986c674b35
+ depends:
+ - python
+ - libgcc >=14
+ - libstdcxx >=14
+ - __glibc >=2.17,<3.0.a0
+ - zeromq >=4.3.5,<4.4.0a0
+ - _python_abi3_support 1.*
+ - cpython >=3.12
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/pyzmq?source=hash-mapping
+ size: 211567
+ timestamp: 1771716961404
+- conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda
+ sha256: 776363493bad83308ba30bcb88c2552632581b143e8ee25b1982c8c743e73abc
+ md5: 353823361b1d27eb3960efb076dfcaf6
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc-ng >=12
+ - libstdcxx-ng >=12
+ license: LicenseRef-Qhull
+ purls: []
+ size: 552937
+ timestamp: 1720813982144
+- conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.11.0-pl5321h16c4a6b_4.conda
+ sha256: d2cb212a4abd66c13df44771c22ee23c0b013ba1d5dbb5e10e8a13e261a47c6b
+ md5: c81127acb50fdc7760682495fc9ab088
+ depends:
+ - libxcb
+ - xcb-util
+ - xcb-util-wm
+ - xcb-util-keysyms
+ - xcb-util-image
+ - xcb-util-renderutil
+ - xcb-util-cursor
+ - libgl-devel
+ - libegl-devel
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ - libstdcxx >=14
+ - libvulkan-loader >=1.4.341.0,<2.0a0
+ - libwebp-base >=1.6.0,<2.0a0
+ - libgl >=1.7.0,<2.0a0
+ - libegl >=1.7.0,<2.0a0
+ - openssl >=3.5.6,<4.0a0
+ - dbus >=1.16.2,<2.0a0
+ - libxkbcommon >=1.13.1,<2.0a0
+ - pcre2 >=10.47,<10.48.0a0
+ - krb5 >=1.22.2,<1.23.0a0
+ - fontconfig >=2.17.1,<3.0a0
+ - fonts-conda-ecosystem
+ - libxcb >=1.17.0,<2.0a0
+ - zstd >=1.5.7,<1.6.0a0
+ - xcb-util >=0.4.1,<0.5.0a0
+ - xorg-libxcomposite >=0.4.7,<1.0a0
+ - xorg-libxxf86vm >=1.1.7,<2.0a0
+ - icu >=78.3,<79.0a0
+ - xorg-libxdamage >=1.1.6,<2.0a0
+ - xcb-util-renderutil >=0.3.10,<0.4.0a0
+ - xcb-util-image >=0.4.0,<0.5.0a0
+ - wayland >=1.25.0,<2.0a0
+ - libzlib >=1.3.2,<2.0a0
+ - xcb-util-keysyms >=0.4.1,<0.5.0a0
+ - xorg-libxcursor >=1.2.3,<2.0a0
+ - double-conversion >=3.4.0,<3.5.0a0
+ - alsa-lib >=1.2.15.3,<1.3.0a0
+ - xorg-libxext >=1.3.7,<2.0a0
+ - harfbuzz >=14.1.0
+ - libsqlite >=3.53.0,<4.0a0
+ - libfreetype >=2.14.3
+ - libfreetype6 >=2.14.3
+ - libtiff >=4.7.1,<4.8.0a0
+ - libdrm >=2.4.125,<2.5.0a0
+ - libjpeg-turbo >=3.1.4.1,<4.0a0
+ - xcb-util-wm >=0.4.2,<0.5.0a0
+ - libcups >=2.3.3,<2.4.0a0
+ - xorg-libx11 >=1.8.13,<2.0a0
+ - libpng >=1.6.58,<1.7.0a0
+ - xorg-libxtst >=1.2.5,<2.0a0
+ - xorg-libice >=1.1.2,<2.0a0
+ - xorg-libxrandr >=1.5.5,<2.0a0
+ - libbrotlicommon >=1.2.0,<1.3.0a0
+ - libbrotlienc >=1.2.0,<1.3.0a0
+ - libbrotlidec >=1.2.0,<1.3.0a0
+ - xcb-util-cursor >=0.1.6,<0.2.0a0
+ - libxml2
+ - libxml2-16 >=2.14.6
+ - xorg-libsm >=1.2.6,<2.0a0
+ - libpq >=18.3,<19.0a0
+ - libglib >=2.86.4,<3.0a0
+ constrains:
+ - qt ==6.11.0
+ license: LGPL-3.0-only
+ license_family: LGPL
+ purls: []
+ size: 59928585
+ timestamp: 1776322501700
+- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.11.05-h5301d42_1.conda
+ sha256: 3fc684b81631348540e9a42f6768b871dfeab532d3f47d5c341f1f83e2a2b2b2
+ md5: 66a715bc01c77d43aca1f9fcb13dde3c
+ depends:
+ - libre2-11 2025.11.05 h0dc7533_1
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 27469
+ timestamp: 1768190052132
+- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda
+ sha256: 12ffde5a6f958e285aa22c191ca01bbd3d6e710aa852e00618fa6ddc59149002
+ md5: d7d95fc8287ea7bf33e0e7116d2b95ec
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - ncurses >=6.5,<7.0a0
+ license: GPL-3.0-only
+ license_family: GPL
+ purls: []
+ size: 345073
+ timestamp: 1765813471974
+- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.30.0-py312h868fb18_0.conda
+ sha256: 62f46e85caaba30b459da7dfcf3e5488ca24fd11675c33ce4367163ab191a42c
+ md5: 3ffc5a3572db8751c2f15bacf6a0e937
+ depends:
+ - python
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - __glibc >=2.17
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/rpds-py?source=hash-mapping
+ size: 383750
+ timestamp: 1764543174231
+- conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.15-py312h5253ce2_1.conda
+ sha256: dc520329bdfd356e2f464393f8ad9b8450fd5a269699907b2b8d629300c2c068
+ md5: 84aa470567e2211a2f8e5c8491cdd78c
+ depends:
+ - python
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - python_abi 3.12.* *_cp312
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/ruamel-yaml-clib?source=hash-mapping
+ size: 148221
+ timestamp: 1766159515069
+- conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.15.12-h994f30f_0.conda
+ noarch: python
+ sha256: 98c771464ed93a2733bae460c39cfa9640feb20972d2e651b44e85db296942eb
+ md5: 3c8f229055ad244fa3a97c6c45b77099
+ depends:
+ - python
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ constrains:
+ - __glibc >=2.17
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/ruff?source=hash-mapping
+ size: 9266480
+ timestamp: 1778119386343
+- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.7.2-hc5a330e_1.conda
+ sha256: 856866fd519b812db3e092aba308248dd87b5c308186fcffe593f309373ae94c
+ md5: 3f578c7d2b0bb52469340e4060d48d94
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - openssl >=3.5.6,<4.0a0
+ license: Apache-2.0
+ license_family: Apache
+ purls: []
+ size: 387306
+ timestamp: 1777466173323
+- conda: https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.8.0-np2py312h3226591_1.conda
+ sha256: 23c643c37fafa14ba3f2b7a407126ea5e732a3655ea8157cf9f977098f863448
+ md5: 38decbeae260892040709cafc0514162
+ depends:
+ - python
+ - numpy >=1.24.1
+ - scipy >=1.10.0
+ - joblib >=1.3.0
+ - threadpoolctl >=3.2.0
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ - libstdcxx >=14
+ - _openmp_mutex >=4.5
+ - numpy >=1.23,<3
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/scikit-learn?source=hash-mapping
+ size: 9726193
+ timestamp: 1765801245538
+- conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.17.1-py312h54fa4ab_0.conda
+ sha256: e3ad577361d67f6c078a6a7a3898bf0617b937d44dc4ccd57aa3336f2b5778dd
+ md5: 3e38daeb1fb05a95656ff5af089d2e4c
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libblas >=3.9.0,<4.0a0
+ - libcblas >=3.9.0,<4.0a0
+ - libgcc >=14
+ - libgfortran
+ - libgfortran5 >=14.3.0
+ - liblapack >=3.9.0,<4.0a0
+ - libstdcxx >=14
+ - numpy <2.7
+ - numpy >=1.23,<3
+ - numpy >=1.25.2
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/scipy?source=hash-mapping
+ size: 17109648
+ timestamp: 1771880675810
+- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.56-h54a6638_0.conda
+ sha256: 987ad072939fdd51c92ea8d3544b286bb240aefda329f9b03a51d9b7e777f9de
+ md5: cdd138897d94dc07d99afe7113a07bec
+ depends:
+ - libstdcxx >=14
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ - libgl >=1.7.0,<2.0a0
+ - sdl3 >=3.2.22,<4.0a0
+ - libegl >=1.7.0,<2.0a0
+ license: Zlib
+ purls: []
+ size: 589145
+ timestamp: 1757842881000
+- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.4.8-hdeec2a5_0.conda
+ sha256: bec327fffc08369afe4c1384a5b50cac9b38e7af42ebdf5f89628633bd980dbd
+ md5: 508bad511e617479f0ad60cc49fba903
+ depends:
+ - libstdcxx >=14
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ - pulseaudio-client >=17.0,<17.1.0a0
+ - libgl >=1.7.0,<2.0a0
+ - libunwind >=1.8.3,<1.9.0a0
+ - xorg-libxtst >=1.2.5,<2.0a0
+ - xorg-libxcursor >=1.2.3,<2.0a0
+ - libegl >=1.7.0,<2.0a0
+ - xorg-libxfixes >=6.0.2,<7.0a0
+ - libudev1 >=257.13
+ - xorg-libxext >=1.3.7,<2.0a0
+ - libusb >=1.0.29,<2.0a0
+ - wayland >=1.25.0,<2.0a0
+ - xorg-libxi >=1.8.2,<2.0a0
+ - libvulkan-loader >=1.4.341.0,<2.0a0
+ - liburing >=2.14,<2.15.0a0
+ - xorg-libxscrnsaver >=1.2.4,<2.0a0
+ - dbus >=1.16.2,<2.0a0
+ - libxkbcommon >=1.13.1,<2.0a0
+ - libdrm >=2.4.125,<2.5.0a0
+ - xorg-libx11 >=1.8.13,<2.0a0
+ license: Zlib
+ purls: []
+ size: 2146080
+ timestamp: 1777693555942
+- conda: https://conda.anaconda.org/conda-forge/linux-64/shaderc-2026.2-h718be3e_0.conda
+ sha256: c6e3280867e54c97996a4fedda0ab72c92d48d1d69258bddf910130df72c169d
+ md5: 6438976979721e2f60ec47327d8d38df
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - glslang >=16,<17.0a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - spirv-tools >=2026,<2027.0a0
+ license: Apache-2.0
+ license_family: Apache
+ purls: []
+ size: 113684
+ timestamp: 1777360595361
+- conda: https://conda.anaconda.org/conda-forge/linux-64/sleef-3.9.0-ha0421bc_0.conda
+ sha256: 57afc2ab5bdb24cf979964018dddbc5dfaee130b415e6863765e45aed2175ee4
+ md5: e8a0b4f5e82ecacffaa5e805020473cb
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - _openmp_mutex >=4.5
+ - libgcc >=14
+ - libstdcxx >=14
+ license: BSL-1.0
+ purls: []
+ size: 1951720
+ timestamp: 1756274576844
+- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h03e3b7b_1.conda
+ sha256: 48f3f6a76c34b2cfe80de9ce7f2283ecb55d5ed47367ba91e8bb8104e12b8f11
+ md5: 98b6c9dc80eb87b2519b97bcf7e578dd
+ depends:
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ - libstdcxx >=14
+ - libgcc >=14
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 45829
+ timestamp: 1762948049098
+- conda: https://conda.anaconda.org/conda-forge/linux-64/spirv-tools-2026.1-hb700be7_0.conda
+ sha256: 003180b3a2e0c6490b1f3461cf9e0ed740b1bbf88ee4b73ee177b94bea0dc95d
+ md5: 8809e0bd5ec279bfe4bb6651c3ed2730
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ constrains:
+ - spirv-headers >=1.4.341.0,<1.4.341.1.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 2296977
+ timestamp: 1770089626195
+- conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.53.1-hbc0de68_0.conda
+ sha256: d167fa92781bcdcd3b9aaa6bb1cd50c5b108f6190c170098a118b5cf5df2f881
+ md5: 8e0b8654ead18e50af552e54b5a08a61
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libsqlite 3.53.1 h0c1763c_0
+ - libzlib >=1.3.2,<2.0a0
+ - ncurses >=6.6,<7.0a0
+ - readline >=8.3,<9.0a0
+ license: blessing
+ purls: []
+ size: 205399
+ timestamp: 1777986477546
+- conda: https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.6-py312h4f23490_0.conda
+ sha256: 0c61eccf3f71b9812da8ced747b1f22bafd6f66f9a64abe06bbe147a03b7322e
+ md5: 423b8676bd6eed60e97097b33f13ea3f
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - numpy <3,>=1.22.3
+ - numpy >=1.23,<3
+ - packaging >=21.3
+ - pandas !=2.1.0,>=1.4
+ - patsy >=0.5.6
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - scipy !=1.9.2,>=1.8
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/statsmodels?source=hash-mapping
+ size: 11903737
+ timestamp: 1764983555676
+- conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-4.0.1-hecca717_0.conda
+ sha256: 4a1d2005153b9454fc21c9bad1b539df189905be49e851ec62a6212c2e045381
+ md5: 2a2170a3e5c9a354d09e4be718c43235
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ license: BSD-2-Clause
+ license_family: BSD
+ purls: []
+ size: 2619743
+ timestamp: 1769664536467
+- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2023.0.0-hab88423_2.conda
+ sha256: 30cb9355c2fefc20ff1a3d6566b9714d5614086a2524c07721fc344eb20515ae
+ md5: 7073b15f9364ebc118998601ac6ca6a6
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libhwloc >=2.13.0,<2.13.1.0a0
+ - libstdcxx >=14
+ license: Apache-2.0
+ purls: []
+ size: 182331
+ timestamp: 1778673758649
+- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-devel-2023.0.0-hab88423_2.conda
+ sha256: 47c82725569413b079632f5ad161b3bf2fa877d65dee1ff5c2c70a308a6150b5
+ md5: 64a1e69ab772dd965d78be2734212667
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - tbb 2023.0.0 hab88423_2
+ purls: []
+ size: 1139342
+ timestamp: 1778673771784
+- conda: https://conda.anaconda.org/conda-forge/linux-64/tensorboard-data-server-0.7.0-py312h4eba8b5_4.conda
+ sha256: 9a3faf2dd703667683feee3cb0ecb9ed035b0a5193b95da3a633ff9da029fea9
+ md5: 7d6b10ed9058f6a97cd8007605b61c33
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - openssl >=3.5.4,<4.0a0
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - __glibc >=2.17
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/tensorboard-data-server?source=hash-mapping
+ size: 3491485
+ timestamp: 1764929907168
+- conda: https://conda.anaconda.org/conda-forge/linux-64/tensorflow-2.19.1-cpu_py312h3336143_5.conda
+ sha256: 5c8d7fd25ab2dcbd93615aa2050471082c5280e10b3ed23198979cbc822553fe
+ md5: 50c6712df349db8c7ed5b7ad4fbd202f
+ depends:
+ - python
+ - tensorflow-base ==2.19.1 cpu_py312h9edca52_5
+ - python_abi 3.12.* *_cp312
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 48712
+ timestamp: 1778107988940
+- conda: https://conda.anaconda.org/conda-forge/linux-64/tensorflow-base-2.19.1-cpu_py312h9edca52_5.conda
+ sha256: 91a713f7af98269e1d23324d7f376de54dc33f75f71b7acc2c7ca1ec5e1e275e
+ md5: a412cf6cf13a017db097c88aa89cf94a
+ depends:
+ - python
+ - packaging
+ - absl-py >=1.0.0
+ - astunparse >=1.6.0
+ - gast >=0.2.1,!=0.5.0,!=0.5.1,!=0.5.2
+ - google-pasta >=0.1.1
+ - grpcio 1.78.*
+ - h5py >=3.11
+ - ml_dtypes >=0.5.1,<1.0
+ - opt_einsum >=2.3.2
+ - protobuf >=5.26
+ - python-flatbuffers >=24.3.25
+ - requests >=2.21.0,<3
+ - six >=1.12
+ - termcolor >=1.1.0
+ - typing_extensions >=3.6.6
+ - wrapt >=1.11.0
+ - tensorboard >=2.19,<2.20
+ - keras >=3.5
+ - libtensorflow_framework ==2.19.1 cpu_h0a5eddc_5
+ - libtensorflow_cc ==2.19.1 cpu_ha812d39_5
+ - _x86_64-microarch-level >=1
+ - libstdcxx >=14
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ - python_abi 3.12.* *_cp312
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/tensorflow?source=hash-mapping
+ size: 325310955
+ timestamp: 1778107988940
+- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda
+ sha256: cafeec44494f842ffeca27e9c8b0c27ed714f93ac77ddadc6aaf726b5554ebac
+ md5: cffd3bdd58090148f4cfcd831f4b26ab
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libzlib >=1.3.1,<2.0a0
+ constrains:
+ - xorg-libx11 >=1.8.12,<2.0a0
+ license: TCL
+ license_family: BSD
+ purls: []
+ size: 3301196
+ timestamp: 1769460227866
+- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.5-py312h4c3975b_0.conda
+ sha256: 4629b1c9139858fb08bb357df917ffc12e4d284c57ff389806bb3ae476ef4e0a
+ md5: 2b37798adbc54fd9e591d24679d2133a
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: Apache-2.0
+ license_family: Apache
+ purls:
+ - pkg:pypi/tornado?source=hash-mapping
+ size: 859665
+ timestamp: 1774358032165
+- conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.1.0-py312hd9148b4_0.conda
+ sha256: c975070ac28fe23a5bbb2b8aeca5976b06630eb2de2dc149782f74018bf07ae8
+ md5: 55fd03988b1b1bc6faabbfb5b481ecd7
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - cffi
+ - libgcc >=14
+ - libstdcxx >=14
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/ukkonen?source=hash-mapping
+ size: 14882
+ timestamp: 1769438717830
+- conda: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-17.0.1-py312h4c3975b_0.conda
+ sha256: 895bbfe9ee25c98c922799de901387d842d7c01cae45c346879865c6a907f229
+ md5: 0b6c506ec1f272b685240e70a29261b8
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: Apache-2.0
+ license_family: Apache
+ purls:
+ - pkg:pypi/unicodedata2?source=hash-mapping
+ size: 410641
+ timestamp: 1770909099497
+- conda: https://conda.anaconda.org/conda-forge/linux-64/utfcpp-4.09-ha770c72_0.conda
+ sha256: 18f84366d84b83bb4b2a6e0ac4487a5b4ee33c531faa2d822027fddf8225eed5
+ md5: 99884244028fe76046e3914f90d4ad05
+ license: BSL-1.0
+ purls: []
+ size: 14226
+ timestamp: 1767012219987
+- conda: https://conda.anaconda.org/conda-forge/linux-64/viskores-1.1.1-cpu_hc82bd48_0.conda
+ sha256: 2ebe8d6ae8c302ca5bf4aec532cd75ebfb00240db1c14dad9a91bace65aa083d
+ md5: 24676eb7fd23ea3d8d69417f5f1224e0
+ depends:
+ - libstdcxx >=14
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ - _openmp_mutex >=4.5
+ - hdf5 >=1.14.6,<1.14.7.0a0
+ - mesalib >=26.0.3,<26.1.0a0
+ - glew >=2.3.0,<2.4.0a0
+ - zfp >=1.0.1,<2.0a0
+ track_features:
+ - viskores-p-0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 25058279
+ timestamp: 1777494673829
+- conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-9.6.1-py312h244374b_4.conda
+ sha256: 964d33bf2d534bfd5e450c962cc1f11edb6c93b433adb55324e0afe3dc6d546c
+ md5: ac787c9c5e55a50c6f13500380d665d7
+ depends:
+ - vtk-base >=9.6.1,<9.6.2.0a0
+ - vtk-io-ffmpeg >=9.6.1,<9.6.2.0a0
+ - libgl-devel
+ - libopengl-devel
+ - libboost-devel
+ - liblzma-devel
+ - tbb-devel
+ - eigen
+ - expat
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 28284
+ timestamp: 1778024918008
+- conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-base-9.6.1-py312hb8f95c7_4.conda
+ sha256: a662c9e086c2d40aecc900d93e1b2a22ba193fe15c262f6001da3015a8ce3f8e
+ md5: 0910787812203a454f4a48bce5a6f331
+ depends:
+ - python
+ - utfcpp
+ - nlohmann_json
+ - cli11
+ - numpy
+ - wslink
+ - matplotlib-base >=2.0.0
+ - __glibc >=2.17,<3.0.a0
+ - libstdcxx >=14
+ - libgcc >=14
+ - tbb >=2022.3.0
+ - fmt >=12.1.0,<12.2.0a0
+ - libtiff >=4.7.1,<4.8.0a0
+ - proj >=9.8.1,<9.9.0a0
+ - libglu >=9.0.3,<9.1.0a0
+ - libexpat >=2.8.0,<3.0a0
+ - libxml2
+ - libxml2-16 >=2.14.6
+ - python_abi 3.12.* *_cp312
+ - libogg >=1.3.5,<1.4.0a0
+ - libsqlite >=3.53.1,<4.0a0
+ - libfreetype >=2.14.3
+ - libfreetype6 >=2.14.3
+ - liblzma >=5.8.3,<6.0a0
+ - gl2ps >=1.4.2,<1.4.3.0a0
+ - lz4-c >=1.10.0,<1.11.0a0
+ - viskores >=1.1.1,<1.2.0a0
+ - libnetcdf >=4.10.0,<4.10.1.0a0
+ - libjpeg-turbo >=3.1.4.1,<4.0a0
+ - double-conversion >=3.4.0,<3.5.0a0
+ - libglvnd >=1.7.0,<2.0a0
+ - libzlib >=1.3.2,<2.0a0
+ - libopengl >=1.7.0,<2.0a0
+ - eigen-abi >=5.0.1.80,<5.0.1.81.0a0
+ - jsoncpp >=1.9.6,<1.9.7.0a0
+ - xorg-libx11 >=1.8.13,<2.0a0
+ - pugixml >=1.15,<1.16.0a0
+ - hdf5 >=1.14.6,<1.14.7.0a0
+ - libpng >=1.6.58,<1.7.0a0
+ - qt6-main >=6.11.0,<6.12.0a0
+ - xorg-libxcursor >=1.2.3,<2.0a0
+ - libglx >=1.7.0,<2.0a0
+ - libtheora >=1.1.1,<1.2.0a0
+ constrains:
+ - libboost-headers >=1.90.0,<1.91.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/vtk?source=hash-mapping
+ size: 85627117
+ timestamp: 1778024918008
+- conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-io-ffmpeg-9.6.1-py312hf1e11e2_4.conda
+ sha256: 69282c87aa5ab3eb97ca11191c3301179f98dbd0f0dabbb5ecea2686c106960d
+ md5: 4bc0f0442ff379021ef74528871b7765
+ depends:
+ - vtk-base ==9.6.1 py312hb8f95c7_4
+ - ffmpeg
+ - ffmpeg >=8.1.1,<9.0a0
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 112851
+ timestamp: 1778024918008
+- conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.25.0-hd6090a7_0.conda
+ sha256: ea374d57a8fcda281a0a89af0ee49a2c2e99cc4ac97cf2e2db7064e74e764bdb
+ md5: 996583ea9c796e5b915f7d7580b51ea6
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libexpat >=2.7.4,<3.0a0
+ - libffi >=3.5.2,<3.6.0a0
+ - libgcc >=14
+ - libstdcxx >=14
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 334139
+ timestamp: 1773959575393
+- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.1.2-py312h4c3975b_0.conda
+ sha256: 5bf21e14a364018a36869a16d9f706fb662c6cb6da3066100ba6822a70f93d2d
+ md5: 7f2ef073d94036f8b16b6ee7d3562a88
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: BSD-2-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/wrapt?source=hash-mapping
+ size: 87514
+ timestamp: 1772794814485
+- conda: https://conda.anaconda.org/conda-forge/linux-64/x264-1!164.3095-h166bdaf_2.tar.bz2
+ sha256: 175315eb3d6ea1f64a6ce470be00fa2ee59980108f246d3072ab8b977cb048a5
+ md5: 6c99772d483f566d59e25037fea2c4b1
+ depends:
+ - libgcc-ng >=12
+ license: GPL-2.0-or-later
+ license_family: GPL
+ purls: []
+ size: 897548
+ timestamp: 1660323080555
+- conda: https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h924138e_3.tar.bz2
+ sha256: 76c7405bcf2af639971150f342550484efac18219c0203c5ee2e38b8956fe2a0
+ md5: e7f6ed84d4623d52ee581325c1587a6b
+ depends:
+ - libgcc-ng >=10.3.0
+ - libstdcxx-ng >=10.3.0
+ license: GPL-2.0-or-later
+ license_family: GPL
+ purls: []
+ size: 3357188
+ timestamp: 1646609687141
+- conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.1-h4f16b4b_2.conda
+ sha256: ad8cab7e07e2af268449c2ce855cbb51f43f4664936eff679b1f3862e6e4b01d
+ md5: fdc27cb255a7a2cc73b7919a968b48f0
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - libxcb >=1.17.0,<2.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 20772
+ timestamp: 1750436796633
+- conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-cursor-0.1.6-hb03c661_0.conda
+ sha256: c2be9cae786fdb2df7c2387d2db31b285cf90ab3bfabda8fa75a596c3d20fc67
+ md5: 4d1fc190b99912ed557a8236e958c559
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libxcb >=1.13
+ - libxcb >=1.17.0,<2.0a0
+ - xcb-util-image >=0.4.0,<0.5.0a0
+ - xcb-util-renderutil >=0.3.10,<0.4.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 20829
+ timestamp: 1763366954390
+- conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-image-0.4.0-hb711507_2.conda
+ sha256: 94b12ff8b30260d9de4fd7a28cca12e028e572cbc504fd42aa2646ec4a5bded7
+ md5: a0901183f08b6c7107aab109733a3c91
+ depends:
+ - libgcc-ng >=12
+ - libxcb >=1.16,<2.0.0a0
+ - xcb-util >=0.4.1,<0.5.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 24551
+ timestamp: 1718880534789
+- conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.1-hb711507_0.conda
+ sha256: 546e3ee01e95a4c884b6401284bb22da449a2f4daf508d038fdfa0712fe4cc69
+ md5: ad748ccca349aec3e91743e08b5e2b50
+ depends:
+ - libgcc-ng >=12
+ - libxcb >=1.16,<2.0.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 14314
+ timestamp: 1718846569232
+- conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.10-hb711507_0.conda
+ sha256: 2d401dadc43855971ce008344a4b5bd804aca9487d8ebd83328592217daca3df
+ md5: 0e0cbe0564d03a99afd5fd7b362feecd
+ depends:
+ - libgcc-ng >=12
+ - libxcb >=1.16,<2.0.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 16978
+ timestamp: 1718848865819
+- conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.2-hb711507_0.conda
+ sha256: 31d44f297ad87a1e6510895740325a635dd204556aa7e079194a0034cdd7e66a
+ md5: 608e0ef8256b81d04456e8d211eee3e8
+ depends:
+ - libgcc-ng >=12
+ - libxcb >=1.16,<2.0.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 51689
+ timestamp: 1718844051451
+- conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.47-hb03c661_0.conda
+ sha256: 19c2bb14bec84b0e995b56b752369775c75f1589314b43733948bb5f471a6915
+ md5: b56e0c8432b56decafae7e78c5f29ba5
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - xorg-libx11 >=1.8.13,<2.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 399291
+ timestamp: 1772021302485
+- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda
+ sha256: c12396aabb21244c212e488bbdc4abcdef0b7404b15761d9329f5a4a39113c4b
+ md5: fb901ff28063514abb6046c9ec2c4a45
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 58628
+ timestamp: 1734227592886
+- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda
+ sha256: 277841c43a39f738927145930ff963c5ce4c4dacf66637a3d95d802a64173250
+ md5: 1c74ff8c35dcadf952a16f752ca5aa49
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - libuuid >=2.38.1,<3.0a0
+ - xorg-libice >=1.1.2,<2.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 27590
+ timestamp: 1741896361728
+- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_0.conda
+ sha256: 516d4060139dbb4de49a4dcdc6317a9353fb39ebd47789c14e6fe52de0deee42
+ md5: 861fb6ccbc677bb9a9fb2468430b9c6a
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libxcb >=1.17.0,<2.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 839652
+ timestamp: 1770819209719
+- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda
+ sha256: 6bc6ab7a90a5d8ac94c7e300cc10beb0500eeba4b99822768ca2f2ef356f731b
+ md5: b2895afaf55bf96a8c8282a2e47a5de0
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 15321
+ timestamp: 1762976464266
+- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.7-hb03c661_0.conda
+ sha256: 048c103000af9541c919deef03ae7c5e9c570ffb4024b42ecb58dbde402e373a
+ md5: f2ba4192d38b6cef2bb2c25029071d90
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - xorg-libx11 >=1.8.12,<2.0a0
+ - xorg-libxfixes >=6.0.2,<7.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 14415
+ timestamp: 1770044404696
+- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda
+ sha256: 832f538ade441b1eee863c8c91af9e69b356cd3e9e1350fff4fe36cc573fc91a
+ md5: 2ccd714aa2242315acaf0a67faea780b
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - xorg-libx11 >=1.8.10,<2.0a0
+ - xorg-libxfixes >=6.0.1,<7.0a0
+ - xorg-libxrender >=0.9.11,<0.10.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 32533
+ timestamp: 1730908305254
+- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda
+ sha256: 43b9772fd6582bf401846642c4635c47a9b0e36ca08116b3ec3df36ab96e0ec0
+ md5: b5fcc7172d22516e1f965490e65e33a4
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - xorg-libx11 >=1.8.10,<2.0a0
+ - xorg-libxext >=1.3.6,<2.0a0
+ - xorg-libxfixes >=6.0.1,<7.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 13217
+ timestamp: 1727891438799
+- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda
+ sha256: 25d255fb2eef929d21ff660a0c687d38a6d2ccfbcbf0cc6aa738b12af6e9d142
+ md5: 1dafce8548e38671bea82e3f5c6ce22f
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 20591
+ timestamp: 1762976546182
+- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-hb03c661_0.conda
+ sha256: 79c60fc6acfd3d713d6340d3b4e296836a0f8c51602327b32794625826bd052f
+ md5: 34e54f03dfea3e7a2dcf1453a85f1085
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - xorg-libx11 >=1.8.12,<2.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 50326
+ timestamp: 1769445253162
+- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-hb03c661_0.conda
+ sha256: 83c4c99d60b8784a611351220452a0a85b080668188dce5dfa394b723d7b64f4
+ md5: ba231da7fccf9ea1e768caf5c7099b84
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - xorg-libx11 >=1.8.12,<2.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 20071
+ timestamp: 1759282564045
+- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda
+ sha256: 1a724b47d98d7880f26da40e45f01728e7638e6ec69f35a3e11f92acd05f9e7a
+ md5: 17dcc85db3c7886650b8908b183d6876
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - xorg-libx11 >=1.8.10,<2.0a0
+ - xorg-libxext >=1.3.6,<2.0a0
+ - xorg-libxfixes >=6.0.1,<7.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 47179
+ timestamp: 1727799254088
+- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.6-hecca717_0.conda
+ sha256: 3a9da41aac6dca9d3ff1b53ee18b9d314de88add76bafad9ca2287a494abcd86
+ md5: 93f5d4b5c17c8540479ad65f206fea51
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - xorg-libx11 >=1.8.12,<2.0a0
+ - xorg-libxext >=1.3.6,<2.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 14818
+ timestamp: 1769432261050
+- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.5-hb03c661_0.conda
+ sha256: 80ed047a5cb30632c3dc5804c7716131d767089f65877813d4ae855ee5c9d343
+ md5: e192019153591938acf7322b6459d36e
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - xorg-libx11 >=1.8.12,<2.0a0
+ - xorg-libxext >=1.3.6,<2.0a0
+ - xorg-libxrender >=0.9.12,<0.10.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 30456
+ timestamp: 1769445263457
+- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda
+ sha256: 044c7b3153c224c6cedd4484dd91b389d2d7fd9c776ad0f4a34f099b3389f4a1
+ md5: 96d57aba173e878a2089d5638016dc5e
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - xorg-libx11 >=1.8.10,<2.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 33005
+ timestamp: 1734229037766
+- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxscrnsaver-1.2.4-hb9d3cd8_0.conda
+ sha256: 58e8fc1687534124832d22e102f098b5401173212ac69eb9fd96b16a3e2c8cb2
+ md5: 303f7a0e9e0cd7d250bb6b952cecda90
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - xorg-libx11 >=1.8.10,<2.0a0
+ - xorg-libxext >=1.3.6,<2.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 14412
+ timestamp: 1727899730073
+- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxshmfence-1.3.3-hb9d3cd8_0.conda
+ sha256: c0830fe9fa78d609cd9021f797307e7e0715ef5122be3f784765dad1b4d8a193
+ md5: 9a809ce9f65460195777f2f2116bae02
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 12302
+ timestamp: 1734168591429
+- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda
+ sha256: 752fdaac5d58ed863bbf685bb6f98092fe1a488ea8ebb7ed7b606ccfce08637a
+ md5: 7bbe9a0cc0df0ac5f5a8ad6d6a11af2f
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=13
+ - xorg-libx11 >=1.8.10,<2.0a0
+ - xorg-libxext >=1.3.6,<2.0a0
+ - xorg-libxi >=1.7.10,<2.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 32808
+ timestamp: 1727964811275
+- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.7-hb03c661_0.conda
+ sha256: 64db17baaf36fa03ed8fae105e2e671a7383e22df4077486646f7dbf12842c9f
+ md5: 665d152b9c6e78da404086088077c844
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - xorg-libx11 >=1.8.12,<2.0a0
+ - xorg-libxext >=1.3.6,<2.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 18701
+ timestamp: 1769434732453
+- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-hb03c661_0.conda
+ sha256: 7a8c64938428c2bfd016359f9cb3c44f94acc256c6167dbdade9f2a1f5ca7a36
+ md5: aa8d21be4b461ce612d8f5fb791decae
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 570010
+ timestamp: 1766154256151
+- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda
+ sha256: 6d9ea2f731e284e9316d95fa61869fe7bbba33df7929f82693c121022810f4ad
+ md5: a77f85f77be52ff59391544bfe73390a
+ depends:
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 85189
+ timestamp: 1753484064210
+- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.23.0-py312h8a5da7c_0.conda
+ sha256: 5d991a8f418675338528ea8097e55143ad833807a110c4251879040351e0d4af
+ md5: 4b403cb52e72211c489a884b29290c2c
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - idna >=2.0
+ - libgcc >=14
+ - multidict >=4.0
+ - propcache >=0.2.1
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: Apache-2.0
+ license_family: Apache
+ purls:
+ - pkg:pypi/yarl?source=hash-mapping
+ size: 147028
+ timestamp: 1772409590700
+- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h41580af_10.conda
+ sha256: 325d370b28e2b9cc1f765c5b4cdb394c91a5d958fbd15da1a14607a28fee09f6
+ md5: 755b096086851e1193f3b10347415d7c
+ depends:
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ - libstdcxx >=14
+ - krb5 >=1.22.2,<1.23.0a0
+ - libsodium >=1.0.21,<1.0.22.0a0
+ license: MPL-2.0
+ license_family: MOZILLA
+ purls: []
+ size: 311150
+ timestamp: 1772476812121
+- conda: https://conda.anaconda.org/conda-forge/linux-64/zfp-1.0.1-h909a3a2_5.conda
+ sha256: 5fabe6cccbafc1193038862b0b0d784df3dae84bc48f12cac268479935f9c8b7
+ md5: 6a0eb48e58684cca4d7acc8b7a0fd3c7
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - _openmp_mutex >=4.5
+ - libgcc >=14
+ - libstdcxx >=14
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 277694
+ timestamp: 1766549572069
+- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.2-h25fd6f3_2.conda
+ sha256: 245c9ee8d688e23661b95e3c6dd7272ca936fabc03d423cdb3cdee1bbcf9f2f2
+ md5: c2a01a08fc991620a74b32420e97868a
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libzlib 1.3.2 h25fd6f3_2
+ license: Zlib
+ license_family: Other
+ purls: []
+ size: 95931
+ timestamp: 1774072620848
+- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.3-hceb46e0_1.conda
+ sha256: ea4e50c465d70236408cb0bfe0115609fd14db1adcd8bd30d8918e0291f8a75f
+ md5: 2aadb0d17215603a82a2a6b0afd9a4cb
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ license: Zlib
+ license_family: Other
+ purls: []
+ size: 122618
+ timestamp: 1770167931827
+- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda
+ sha256: 68f0206ca6e98fea941e5717cec780ed2873ffabc0e1ed34428c061e2c6268c7
+ md5: 4a13eeac0b5c8e5b8ab496e6c4ddd829
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libzlib >=1.3.1,<2.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 601375
+ timestamp: 1764777111296
+- conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda
+ sha256: a3967b937b9abf0f2a99f3173fa4630293979bd1644709d89580e7c62a544661
+ md5: aaa2a381ccc56eac91d63b6c1240312f
+ depends:
+ - cpython
+ - python-gil
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 8191
+ timestamp: 1744137672556
+- conda: https://conda.anaconda.org/conda-forge/noarch/_x86_64-microarch-level-1-3_x86_64.conda
+ build_number: 3
+ sha256: 5f9029eaa78eb13a5499b7a2b012a47a18136b2d41bad99bb7b1796d1fc2b179
+ md5: 225cb2e9b9512730a92f83696b8fbab8
+ depends:
+ - __archspec 1.* x86_64
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 9818
+ timestamp: 1764034326319
+- conda: https://conda.anaconda.org/conda-forge/noarch/absl-py-2.4.0-pyhd8ed1ab_0.conda
+ sha256: 0e5e34179a52e0f3aa3c92904bd326de1d1cd74c6fe3bd98f8b8b6889491c7e4
+ md5: a46362fa67f5138d526715107be0ee32
+ depends:
+ - python >=3.10
+ license: Apache-2.0
+ license_family: Apache
+ purls:
+ - pkg:pypi/absl-py?source=hash-mapping
+ size: 109955
+ timestamp: 1769637168641
+- conda: https://conda.anaconda.org/conda-forge/noarch/accessible-pygments-0.0.5-pyhd8ed1ab_1.conda
+ sha256: 1307719f0d8ee694fc923579a39c0621c23fdaa14ccdf9278a5aac5665ac58e9
+ md5: 74ac5069774cdbc53910ec4d631a3999
+ depends:
+ - pygments
+ - python >=3.9
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/accessible-pygments?source=hash-mapping
+ size: 1326096
+ timestamp: 1734956217254
+- conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-49.0-unix_0.conda
+ sha256: a362b4f5c96a0bf4def96be1a77317e2730af38915eb9bec85e2a92836501ed7
+ md5: b3f0179590f3c0637b7eb5309898f79e
+ depends:
+ - __unix
+ - hicolor-icon-theme
+ - librsvg
+ license: LGPL-3.0-or-later OR CC-BY-SA-3.0
+ license_family: LGPL
+ purls: []
+ size: 631452
+ timestamp: 1758743294412
+- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.6.1-pyhd8ed1ab_0.conda
+ sha256: 7842ddc678e77868ba7b92a726b437575b23aaec293bca0d40826f1026d90e27
+ md5: 18fd895e0e775622906cdabfc3cf0fb4
+ depends:
+ - python >=3.9
+ license: PSF-2.0
+ license_family: PSF
+ purls:
+ - pkg:pypi/aiohappyeyeballs?source=hash-mapping
+ size: 19750
+ timestamp: 1741775303303
+- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda
+ sha256: 8dc149a6828d19bf104ea96382a9d04dae185d4a03cc6beb1bc7b84c428e3ca2
+ md5: 421a865222cd0c9d83ff08bc78bf3a61
+ depends:
+ - frozenlist >=1.1.0
+ - python >=3.9
+ - typing_extensions >=4.2
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/aiosignal?source=hash-mapping
+ size: 13688
+ timestamp: 1751626573984
+- conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda
+ sha256: 6c4456a138919dae9edd3ac1a74b6fbe5fd66c05675f54df2f8ab8c8d0cc6cea
+ md5: 1fd9696649f65fd6611fcdb4ffec738a
+ depends:
+ - python >=3.10
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/alabaster?source=hash-mapping
+ size: 18684
+ timestamp: 1733750512696
+- conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda
+ sha256: 8f032b140ea4159806e4969a68b4a3c0a7cab1ad936eb958a2b5ffe5335e19bf
+ md5: 54898d0f524c9dee622d44bbb081a8ab
+ depends:
+ - python >=3.9
+ license: BSD-2-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/appnope?source=hash-mapping
+ size: 10076
+ timestamp: 1733332433806
+- conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.6.3-pyhd8ed1ab_0.conda
+ sha256: a2a1879c53b7a8438c898d20fa5f6274e4b1c30161f93b7818236e9df6adffde
+ md5: 8f37c8fb7116a18da04e52fa9e2c8df9
+ depends:
+ - python >=3.10
+ license: Apache-2.0
+ license_family: Apache
+ purls:
+ - pkg:pypi/argcomplete?source=hash-mapping
+ size: 42386
+ timestamp: 1760975036972
+- conda: https://conda.anaconda.org/conda-forge/noarch/arviz-0.23.4-pyhcf101f3_0.conda
+ sha256: d4e638ca192077e0dd7f60d33ae416f34d1d2b1f032e775eaeb38f07556b79ed
+ md5: f64907fda280c6f731d240572ca7956c
+ depends:
+ - python >=3.10
+ - setuptools >=60.0.0
+ - matplotlib-base >=3.8
+ - numpy >=1.26.0
+ - scipy >=1.11.0
+ - packaging
+ - pandas >=2.1.0
+ - xarray >=2023.7.0
+ - h5netcdf >=1.0.2
+ - typing_extensions >=4.1.0
+ - xarray-einstats >=0.3
+ - h5py
+ - platformdirs
+ - python
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/arviz?source=hash-mapping
+ size: 1499441
+ timestamp: 1770281563537
+- conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.1-pyhd8ed1ab_0.conda
+ sha256: ee4da0f3fe9d59439798ee399ef3e482791e48784873d546e706d0935f9ff010
+ md5: 9673a61a297b00016442e022d689faa6
+ depends:
+ - python >=3.10
+ constrains:
+ - astroid >=2,<5
+ license: Apache-2.0
+ license_family: Apache
+ purls:
+ - pkg:pypi/asttokens?source=hash-mapping
+ size: 28797
+ timestamp: 1763410017955
+- conda: https://conda.anaconda.org/conda-forge/noarch/astunparse-1.6.3-pyhd8ed1ab_3.conda
+ sha256: 7304f265f146235c34e24db310a94648aa306ca0b2a4a12042bf96da1881f99c
+ md5: d3f195dfdbbf736e4ec178bbec2a975c
+ depends:
+ - python >=3.9
+ - six >=1.6.1,<2.0
+ license: BSD-3-Clause AND PSF-2.0
+ purls:
+ - pkg:pypi/astunparse?source=hash-mapping
+ size: 18143
+ timestamp: 1736248194225
+- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda
+ sha256: 1b6124230bb4e571b1b9401537ecff575b7b109cc3a21ee019f65e083b8399ab
+ md5: c6b0543676ecb1fb2d7643941fe375f2
+ depends:
+ - python >=3.10
+ - python
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/attrs?source=hash-mapping
+ size: 64927
+ timestamp: 1773935801332
+- conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_1.conda
+ sha256: a14a9ad02101aab25570543a59c5193043b73dc311a25650134ed9e6cb691770
+ md5: f1976ce927373500cc19d3c0b2c85177
+ depends:
+ - python >=3.10
+ - python
+ constrains:
+ - pytz >=2015.7
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/babel?source=hash-mapping
+ size: 7684321
+ timestamp: 1772555330347
+- conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.14.3-pyha770c72_0.conda
+ sha256: bf1e71c3c0a5b024e44ff928225a0874fc3c3356ec1a0b6fe719108e6d1288f6
+ md5: 5267bef8efea4127aacd1f4e1f149b6e
+ depends:
+ - python >=3.10
+ - soupsieve >=1.2
+ - typing-extensions
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/beautifulsoup4?source=hash-mapping
+ size: 90399
+ timestamp: 1764520638652
+- conda: https://conda.anaconda.org/conda-forge/noarch/black-26.3.1-pyh866005b_0.conda
+ sha256: 671b78df3fd288e4c99762d9a1b0391b70be2c7a46df564d6e6b3862db2ec799
+ md5: c7e43448266209d766a229cada982884
+ depends:
+ - click >=8.0.0
+ - mypy_extensions >=0.4.3
+ - packaging >=22.0
+ - pathspec >=0.9
+ - platformdirs >=2
+ - python >=3.11
+ - pytokens >=0.4
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/black?source=hash-mapping
+ size: 171751
+ timestamp: 1773315364851
+- conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.3.0-pyhcf101f3_1.conda
+ sha256: f8ff1f98423674278964a46c93a1766f9e91960d44efd91c6c3ed56a33813f46
+ md5: 7c5ebdc286220e8021bf55e6384acd67
+ depends:
+ - python >=3.10
+ - webencodings
+ - python
+ constrains:
+ - tinycss2 >=1.1.0,<1.5
+ license: Apache-2.0 AND MIT
+ purls:
+ - pkg:pypi/bleach?source=hash-mapping
+ size: 142008
+ timestamp: 1770719370680
+- conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.3.0-hbca2aae_1.conda
+ sha256: 7c07a865e5e4cca233cc4e0eb3f0f5ff6c90776461687b4fb0b1764133e1fd61
+ md5: f11a319b9700b203aa14c295858782b6
+ depends:
+ - bleach ==6.3.0 pyhcf101f3_1
+ - tinycss2
+ license: Apache-2.0 AND MIT
+ purls: []
+ size: 4409
+ timestamp: 1770719370682
+- conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.9.0-pyhd8ed1ab_0.conda
+ sha256: 96a6486d4fe27c02c1092a40096dfd82043929b3a7da156a49b28d851159c551
+ md5: b9a6da57e94cd12bd71e7ab0713ef052
+ depends:
+ - contourpy >=1.2
+ - jinja2 >=2.9
+ - narwhals >=1.13
+ - numpy >=1.16
+ - packaging >=16.8
+ - 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: 4240579
+ timestamp: 1773302678722
+- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.4.22-hbd8a1cb_0.conda
+ sha256: c9dbcc8039a52023660d6d1bbf87594a93dd69c6ac5a2a44323af2c92976728d
+ md5: e18ad67cf881dcadee8b8d9e2f8e5f73
+ depends:
+ - __unix
+ license: ISC
+ purls: []
+ size: 131039
+ timestamp: 1776865545798
+- conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2
+ noarch: python
+ sha256: 561e6660f26c35d137ee150187d89767c988413c978e1b712d53f27ddf70ea17
+ md5: 9b347a7ec10940d3f7941ff6c460b551
+ depends:
+ - cached_property >=1.5.2,<1.5.3.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 4134
+ timestamp: 1615209571450
+- conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2
+ sha256: 6dbf7a5070cc43d90a1e4c2ec0c541c69d8e30a0e25f50ce9f6e4a432e42c5d7
+ md5: 576d629e47797577ab0f1b351297ef4a
+ depends:
+ - python >=3.6
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/cached-property?source=hash-mapping
+ size: 11065
+ timestamp: 1615209567874
+- conda: https://conda.anaconda.org/conda-forge/noarch/cachetools-6.2.6-pyhd8ed1ab_0.conda
+ sha256: 040e2feb74c5d85881d727a7ac5d707eccf9e6499e6a1608ddea8bb9e59c5ed1
+ md5: 9e5f8e2fe9770c4730163d2e289adb53
+ depends:
+ - python >=3.10
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/cachetools?source=hash-mapping
+ size: 17249
+ timestamp: 1769721401289
+- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.4.22-pyhd8ed1ab_0.conda
+ sha256: 989db6e5957c4b44fa600c68c681ec2f36a55e48f7c7f1c073d5e91caa8cd878
+ md5: 929471569c93acefb30282a22060dcd5
+ depends:
+ - python >=3.10
+ license: ISC
+ purls:
+ - pkg:pypi/certifi?source=hash-mapping
+ size: 135656
+ timestamp: 1776866680878
+- conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda
+ sha256: aa589352e61bb221351a79e5946d56916e3c595783994884accdb3b97fe9d449
+ md5: 381bd45fb7aa032691f3063aff47e3a1
+ depends:
+ - python >=3.10
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/cfgv?source=hash-mapping
+ size: 13589
+ timestamp: 1763607964133
+- conda: https://conda.anaconda.org/conda-forge/noarch/chaospy-4.3.20-pyhd8ed1ab_0.conda
+ sha256: 0a09fb5406c43999d27cb68f9f37f823fbca55ec1bbf0d8c346b735e7d4ac2fa
+ md5: 4f08e6bbb4eac520612a4389f0ef3eca
+ depends:
+ - numpoly >=1.2.12
+ - numpy >=1.20
+ - python >=3.7
+ - scikit-learn
+ - scipy
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/chaospy?source=hash-mapping
+ size: 169175
+ timestamp: 1751416459328
+- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda
+ sha256: 3f9483d62ce24ecd063f8a5a714448445dc8d9e201147c46699fc0033e824457
+ md5: a9167b9571f3baa9d448faa2139d1089
+ depends:
+ - python >=3.10
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/charset-normalizer?source=hash-mapping
+ size: 58872
+ timestamp: 1775127203018
+- conda: https://conda.anaconda.org/conda-forge/noarch/check_shapes-1.1.1-pyhd8ed1ab_0.conda
+ sha256: f54c06b3ef10b17816e615dab872ef92f62111f48a8573f82b17c5ec6919f786
+ md5: 9e4cb25398b53b36c5ae1d862d38d780
+ depends:
+ - dropstackframe >=0.1.0
+ - lark >=1.1.0
+ - python >=3.7
+ license: Apache-2.0
+ license_family: Apache
+ purls:
+ - pkg:pypi/check-shapes?source=hash-mapping
+ size: 37043
+ timestamp: 1719415287108
+- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.3-pyhc90fa1f_0.conda
+ sha256: 37a5d8b10ea3516e2c42f870c9c351b9f7b31ff48c66d83490039f417e1e5228
+ md5: 2266262ce8a425ecb6523d765f79b303
+ depends:
+ - __unix
+ - python
+ - python >=3.10
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/click?source=hash-mapping
+ size: 100048
+ timestamp: 1777219902525
+- conda: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-pyhcf101f3_1.conda
+ sha256: 4c287c2721d8a34c94928be8fe0e9a85754e90189dd4384a31b1806856b50a67
+ md5: 61b8078a0905b12529abc622406cb62c
+ depends:
+ - python >=3.10
+ - python
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/cloudpickle?source=hash-mapping
+ size: 27353
+ timestamp: 1765303462831
+- conda: https://conda.anaconda.org/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://conda.anaconda.org/conda-forge/noarch/comm-0.2.3-pyhe01879c_0.conda
+ sha256: 576a44729314ad9e4e5ebe055fbf48beb8116b60e58f9070278985b2b634f212
+ md5: 2da13f2b299d8e1995bafbbe9689a2f7
+ depends:
+ - python >=3.9
+ - python
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/comm?source=hash-mapping
+ size: 14690
+ timestamp: 1753453984907
+- conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt22_osx-arm64-22.1.5-h7e67a1e_1.conda
+ sha256: 8fd9c06368cf109359b5790dd52bb2c567649eea4ac803003e8bc10e49e8ef24
+ md5: 6b4aa1f07476cdefbd872f38df71b3e2
+ constrains:
+ - compiler-rt >=9.0.1
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: APACHE
+ purls: []
+ size: 10867797
+ timestamp: 1778193575528
+- conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-arm64-22.1.5-hce30654_1.conda
+ sha256: b8d2ac6246cef588054a267979ce67298faa695830341bf17a1f8e8b466bc9d2
+ md5: 55b5854d13383c8ab1e467dba3cd5373
+ depends:
+ - compiler-rt22_osx-arm64 22.1.5 h7e67a1e_1
+ constrains:
+ - clang 22.1.5
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: APACHE
+ purls: []
+ size: 16629
+ timestamp: 1778193616082
+- conda: https://conda.anaconda.org/conda-forge/noarch/cons-0.4.7-pyhd8ed1ab_2.conda
+ sha256: 2edb605f79d96a2e05bc86bd153c6f03239981f68b25e129429640ebaf316d3b
+ md5: 31b1db820db9a562fb374ed9339d844c
+ depends:
+ - logical-unification >=0.4.0
+ - python >=3.9
+ license: LGPL-3.0-only
+ license_family: LGPL
+ purls:
+ - pkg:pypi/cons?source=hash-mapping
+ size: 14816
+ timestamp: 1752393486187
+- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.13-py312hd8ed1ab_0.conda
+ noarch: generic
+ sha256: d3e9bbd7340199527f28bbacf947702368f31de60c433a16446767d3c6aaf6fe
+ md5: f54c1ffb8ecedb85a8b7fcde3a187212
+ depends:
+ - python >=3.12,<3.13.0a0
+ - python_abi * *_cp312
+ license: Python-2.0
+ purls: []
+ size: 46463
+ timestamp: 1772728929620
+- conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda
+ sha256: bb47aec5338695ff8efbddbc669064a3b10fe34ad881fb8ad5d64fbfa6910ed1
+ md5: 4c2a8fef270f6c69591889b93f9f55c1
+ depends:
+ - python >=3.10
+ - python
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/cycler?source=hash-mapping
+ size: 14778
+ timestamp: 1764466758386
+- conda: https://conda.anaconda.org/conda-forge/noarch/cyclopts-4.11.2-pyhcf101f3_0.conda
+ sha256: a8c8c87add7547efc02b3b4273ca03b65b2c757afd63dab0c04b322da8985782
+ md5: 94238d5e6b8a19177d39e21663de27c9
+ depends:
+ - python >=3.10
+ - attrs >=23.1.0
+ - rich >=13.6.0
+ - docstring_parser >=0.15,<4.0
+ - rich-rst >=1.3.1,<2.0.0
+ - typing_extensions >=4.8.0
+ - tomli >=2.0.0
+ - python
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/cyclopts?source=hash-mapping
+ size: 171294
+ timestamp: 1777904956128
+- conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.3.0-pyhc364b38_0.conda
+ sha256: fe59c26dc20a47aa56fc38a2326f2a62403f3eed366837c1a0fba166a220d2b7
+ md5: f9761ef056ba0ccef16e01cfceee62c2
+ depends:
+ - python >=3.10
+ - dask-core >=2026.3.0,<2026.3.1.0a0
+ - distributed >=2026.3.0,<2026.3.1.0a0
+ - cytoolz >=0.11.2
+ - lz4 >=4.3.2
+ - numpy >=1.26
+ - pandas >=2.0
+ - bokeh >=3.1.0
+ - jinja2 >=2.10.3
+ - pyarrow >=16.0
+ - python
+ constrains:
+ - openssl !=1.1.1e
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 11383
+ timestamp: 1773913283482
+- conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.3.0-pyhc364b38_0.conda
+ sha256: 5497e56b12b8a07921668f6469d725be9826ffe5ae8a2f6f71d26369400b41ca
+ md5: 809f4cde7c853f437becc43415a2ecdf
+ depends:
+ - python >=3.10
+ - click >=8.1
+ - cloudpickle >=3.0.0
+ - fsspec >=2021.9.0
+ - packaging >=20.0
+ - partd >=1.4.0
+ - pyyaml >=5.3.1
+ - toolz >=0.12.0
+ - importlib-metadata >=4.13.0
+ - python
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/dask?source=hash-mapping
+ size: 1066502
+ timestamp: 1773823162829
+- conda: https://conda.anaconda.org/conda-forge/noarch/dask-jobqueue-0.9.0-pyhd8ed1ab_0.conda
+ sha256: 18a2b682c3d9b978e2ce37d1bfec87f72b54ed6415753833831c095ec61b2668
+ md5: a201de7d36907f2355426e019168d337
+ depends:
+ - dask-core >=2022.02.0
+ - distributed >=2022.02.0
+ - python >=3.10
+ - setuptools
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/dask-jobqueue?source=hash-mapping
+ size: 40446
+ timestamp: 1724342296802
+- conda: https://conda.anaconda.org/conda-forge/noarch/decli-0.6.3-pyhd8ed1ab_0.conda
+ sha256: fea36c409534882d6dc724312833db2a6ecf7adc268a2fa7fc0c5cc66b554dab
+ md5: be08df21a103c765f7f38fcc5b4df4b4
+ depends:
+ - python >=3.9
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/decli?source=hash-mapping
+ size: 14182
+ timestamp: 1748864502223
+- conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda
+ sha256: c17c6b9937c08ad63cb20a26f403a3234088e57d4455600974a0ce865cb14017
+ md5: 9ce473d1d1be1cc3810856a48b3fab32
+ depends:
+ - python >=3.9
+ license: BSD-2-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/decorator?source=hash-mapping
+ size: 14129
+ timestamp: 1740385067843
+- conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2
+ sha256: 9717a059677553562a8f38ff07f3b9f61727bd614f505658b0a5ecbcf8df89be
+ md5: 961b3a227b437d82ad7054484cfa71b2
+ depends:
+ - python >=3.6
+ license: PSF-2.0
+ license_family: PSF
+ purls:
+ - pkg:pypi/defusedxml?source=hash-mapping
+ size: 24062
+ timestamp: 1615232388757
+- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_1.conda
+ sha256: 7d57a7b8266043ffb99d092ebc25e89a0a2490bed4146b9432c83c2c476fa94d
+ md5: 5498feb783ab29db6ca8845f68fa0f03
+ depends:
+ - python >=3.10
+ - wrapt <3,>=1.10
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/deprecated?source=hash-mapping
+ size: 15896
+ timestamp: 1768934186726
+- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.4.1-pyhcf101f3_0.conda
+ sha256: 1ef84c0cc4efd0c2d58c3cb365945edbd9ee42a1c54514d1ccba4b641005f757
+ md5: 080a808fce955026bf82107d955d32da
+ depends:
+ - python >=3.10
+ - python
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/dill?source=hash-mapping
+ size: 95462
+ timestamp: 1768863743943
+- conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda
+ sha256: 6d977f0b2fc24fee21a9554389ab83070db341af6d6f09285360b2e09ef8b26e
+ md5: 003b8ba0a94e2f1e117d0bd46aebc901
+ depends:
+ - python >=3.9
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/distlib?source=hash-mapping
+ size: 275642
+ timestamp: 1752823081585
+- conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.3.0-pyhc364b38_0.conda
+ sha256: 49cbb318f7a1797b9f17c135c9b5c48ba2086570a58c99054d3b40bf13a5b815
+ md5: 8efb90a27e3b948514a428cb99f3fc70
+ depends:
+ - python >=3.10
+ - click >=8.0
+ - cloudpickle >=3.0.0
+ - cytoolz >=0.12.0
+ - dask-core >=2026.3.0,<2026.3.1.0a0
+ - jinja2 >=2.10.3
+ - locket >=1.0.0
+ - msgpack-python >=1.0.2
+ - packaging >=20.0
+ - psutil >=5.8.0
+ - pyyaml >=5.4.1
+ - sortedcontainers >=2.0.5
+ - tblib >=1.6.0
+ - toolz >=0.12.0
+ - tornado >=6.2.0
+ - urllib3 >=1.26.5
+ - zict >=3.0.0
+ - python
+ constrains:
+ - openssl !=1.1.1e
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/distributed?source=hash-mapping
+ size: 845608
+ timestamp: 1773858577032
+- conda: https://conda.anaconda.org/conda-forge/noarch/docformatter-1.7.8-pyhc364b38_0.conda
+ sha256: 3e57149faca76593a869d91242dd166a9cc816cb7f01e3b39bda90e44407818e
+ md5: 2207be19c7b2f72e46e9d4049cb4cabc
+ depends:
+ - charset-normalizer >=3.0.0
+ - python >=3.10
+ - python
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/docformatter?source=hash-mapping
+ size: 41556
+ timestamp: 1777489364203
+- conda: https://conda.anaconda.org/conda-forge/noarch/docstring_parser-0.18.0-pyhd8ed1ab_0.conda
+ sha256: 0994f88d4257dbfcbf67f10c886d84a531e13e6d36dee3a77ddcca6ffc37d7ca
+ md5: b0c7c29a60c82d57c5b4c4c38f0642c8
+ depends:
+ - python >=3.10
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/docstring-parser?source=compressed-mapping
+ size: 23903
+ timestamp: 1778609891474
+- conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.22.4-pyhd8ed1ab_0.conda
+ sha256: 0d605569a77350fb681f9ed8d357cc71649b59a304099dc9d09fbeec5e84a65e
+ md5: d6bd3cd217e62bbd7efe67ff224cd667
+ depends:
+ - python >=3.10
+ license: CC-PDDC AND BSD-3-Clause AND BSD-2-Clause AND ZPL-2.1
+ purls:
+ - pkg:pypi/docutils?source=hash-mapping
+ size: 438002
+ timestamp: 1766092633160
+- conda: https://conda.anaconda.org/conda-forge/noarch/dropstackframe-0.1.1-pyhd8ed1ab_0.conda
+ sha256: 3091e233ae1c89a3ae6bf9846b5bd8f54f619e545f4ca8222b4a7062118a8108
+ md5: aead49e0c1fde7995f1e0355d7728961
+ depends:
+ - python >=3.7
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/dropstackframe?source=hash-mapping
+ size: 10109
+ timestamp: 1723593107359
+- conda: https://conda.anaconda.org/conda-forge/noarch/etuples-0.3.10-pyhd8ed1ab_1.conda
+ sha256: 92b79c5f79eefcee3dc604a96f5546f52bb65329eea043ccb541b692956c8fb5
+ md5: 315e9d823f7763da48e072e59bfd0e8e
+ depends:
+ - cons
+ - multipledispatch
+ - python >=3.9
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/etuples?source=hash-mapping
+ size: 18084
+ timestamp: 1752608449672
+- conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda
+ sha256: ee6cf346d017d954255bbcbdb424cddea4d14e4ed7e9813e429db1d795d01144
+ md5: 8e662bd460bda79b1ea39194e3c4c9ab
+ depends:
+ - python >=3.10
+ - typing_extensions >=4.6.0
+ license: MIT and PSF-2.0
+ purls:
+ - pkg:pypi/exceptiongroup?source=hash-mapping
+ size: 21333
+ timestamp: 1763918099466
+- conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.2-pyhd8ed1ab_0.conda
+ sha256: 1acc6a420efc5b64c384c1f35f49129966f8a12c93b4bb2bdc30079e5dc9d8a8
+ md5: a57b4be42619213a94f31d2c69c5dda7
+ depends:
+ - python >=3.10
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/execnet?source=hash-mapping
+ size: 39499
+ timestamp: 1762974150770
+- conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda
+ sha256: 210c8165a58fdbf16e626aac93cc4c14dbd551a01d1516be5ecad795d2422cad
+ md5: ff9efb7f7469aed3c4a8106ffa29593c
+ depends:
+ - python >=3.10
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/executing?source=hash-mapping
+ size: 30753
+ timestamp: 1756729456476
+- conda: https://conda.anaconda.org/conda-forge/noarch/fabric-3.2.3-pyhd8ed1ab_0.conda
+ sha256: 2b40cedb829d5edef303b2cc182847b5f1a1a24454bc0cfd59a56552c6e058d9
+ md5: 4117dc2692ae84eb9da51d7d7820c45c
+ depends:
+ - decorator >=5
+ - deprecated >=1.2
+ - invoke >=2.0,<3.0
+ - paramiko >=2.4
+ - python >=3.10
+ license: BSD-2-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/fabric?source=hash-mapping
+ size: 55825
+ timestamp: 1775457354890
+- conda: https://conda.anaconda.org/conda-forge/noarch/farama-notifications-0.0.4-pyhd8ed1ab_0.conda
+ sha256: 8df190d75bac104c6c2317b13397eed9adfa6889b12405b0288ca2ca86855c06
+ md5: 61f63fcf1c2deddeae7a85a516d46c94
+ depends:
+ - python >=3.6
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/farama-notifications?source=hash-mapping
+ size: 8406
+ timestamp: 1684258265351
+- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.0-pyhd8ed1ab_0.conda
+ sha256: 6b471a18372bbd52bdf32fc965f71de3bc1b5219418b8e6b3875a67a7b08c483
+ md5: 8fa8358d022a3a9bd101384a808044c6
+ depends:
+ - python >=3.10
+ license: Unlicense
+ purls:
+ - pkg:pypi/filelock?source=hash-mapping
+ size: 34211
+ timestamp: 1776621506566
+- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2
+ sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b
+ md5: 0c96522c6bdaed4b1566d11387caaf45
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 397370
+ timestamp: 1566932522327
+- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2
+ sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c
+ md5: 34893075a5c9e55cdafac56607368fc6
+ license: OFL-1.1
+ license_family: Other
+ purls: []
+ size: 96530
+ timestamp: 1620479909603
+- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2
+ sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139
+ md5: 4d59c254e01d9cde7957100457e2d5fb
+ license: OFL-1.1
+ license_family: Other
+ purls: []
+ size: 700814
+ timestamp: 1620479612257
+- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda
+ sha256: 2821ec1dc454bd8b9a31d0ed22a7ce22422c0aef163c59f49dfdf915d0f0ca14
+ md5: 49023d73832ef61042f6a237cb2687e7
+ license: LicenseRef-Ubuntu-Font-Licence-Version-1.0
+ license_family: Other
+ purls: []
+ size: 1620504
+ timestamp: 1727511233259
+- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2
+ sha256: a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61
+ md5: fee5683a3f04bd15cbd8318b096a27ab
+ depends:
+ - fonts-conda-forge
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 3667
+ timestamp: 1566974674465
+- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda
+ sha256: 54eea8469786bc2291cc40bca5f46438d3e062a399e8f53f013b6a9f50e98333
+ md5: a7970cd949a077b7cb9696379d338681
+ depends:
+ - font-ttf-ubuntu
+ - font-ttf-inconsolata
+ - font-ttf-dejavu-sans-mono
+ - font-ttf-source-code-pro
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 4059
+ timestamp: 1762351264405
+- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.4.0-pyhd8ed1ab_0.conda
+ sha256: 079701b4ff3b317a1a158cabd48cf2b856b8b8d3ef44f152809d9acf20cc8e10
+ md5: 2c11aa96ea85ced419de710c1c3a78ff
+ depends:
+ - python >=3.10
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/fsspec?source=hash-mapping
+ size: 149694
+ timestamp: 1777547807038
+- conda: https://conda.anaconda.org/conda-forge/noarch/gast-0.7.0-pyhd8ed1ab_0.conda
+ sha256: 587a0e2606026716760af58e5d7c15ea02a848bd076a324946798be29d0229db
+ md5: 377a825d91b5d6fcc0e6cdb98bbe9799
+ depends:
+ - python >=3.10
+ constrains:
+ - pythran >=0.12.2
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/gast?source=hash-mapping
+ size: 27047
+ timestamp: 1764507196904
+- conda: https://conda.anaconda.org/conda-forge/noarch/google-pasta-0.2.0-pyhd8ed1ab_2.conda
+ sha256: 9f668fe562a9cf71a5d1f348645ac041af3f2e4bc634b18d6374e838e1c55dd8
+ md5: 005b9749218cb8c9e94ac2a77ca3c8c0
+ depends:
+ - python >=3.9
+ - six
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/google-pasta?source=hash-mapping
+ size: 49210
+ timestamp: 1733852592869
+- conda: https://conda.anaconda.org/conda-forge/noarch/gpflow-2.9.2-pyhd8ed1ab_0.conda
+ sha256: 4942d8a6524fe72f92bc5db8c1f04bdf8c1ddc345c10589015f7c79172c5f413
+ md5: 5a415839ee9fe473f91c861d21799e8f
+ depends:
+ - check_shapes >=1.0.0
+ - deprecated
+ - lark >=1.1.0
+ - multipledispatch >=0.6
+ - numpy
+ - packaging
+ - python >=3.7
+ - scipy
+ - setuptools >=41.0.0
+ - tabulate
+ - tensorflow >=2.4.0
+ - tensorflow-probability >=0.12.0
+ - typing-extensions
+ license: Apache-2.0
+ license_family: Apache
+ purls:
+ - pkg:pypi/gpflow?source=hash-mapping
+ size: 144728
+ timestamp: 1719418935367
+- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda
+ sha256: 84c64443368f84b600bfecc529a1194a3b14c3656ee2e832d15a20e0329b6da3
+ md5: 164fc43f0b53b6e3a7bc7dce5e4f1dc9
+ depends:
+ - python >=3.10
+ - hyperframe >=6.1,<7
+ - hpack >=4.1,<5
+ - python
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/h2?source=hash-mapping
+ size: 95967
+ timestamp: 1756364871835
+- conda: https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.8.1-pyhd8ed1ab_0.conda
+ sha256: 5bf081c0f21a57fc84b5000d53f043d63638b77dcc2137f87511a4581838c9f6
+ md5: ca7f9ba8762d3e360e47917a10e23760
+ depends:
+ - h5py
+ - numpy
+ - packaging
+ - python >=3.9
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/h5netcdf?source=hash-mapping
+ size: 57732
+ timestamp: 1769241877548
+- conda: https://conda.anaconda.org/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://conda.anaconda.org/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://conda.anaconda.org/conda-forge/noarch/identify-2.6.19-pyhd8ed1ab_0.conda
+ sha256: 381cedccf0866babfc135d65ee40b778bd20e927d2a5ec810f750c5860a7c5b8
+ md5: 84a3233b709a289a4ddd7a2fd27dd988
+ depends:
+ - python >=3.10
+ - ukkonen
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/identify?source=hash-mapping
+ size: 79757
+ timestamp: 1776455344188
+- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.13-pyhcf101f3_0.conda
+ sha256: 9ab620e6f64bb67737bd7bc1ad6f480770124e304c6710617aba7fe60b089f48
+ md5: fb7130c190f9b4ec91219840a05ba3ac
+ depends:
+ - python >=3.10
+ - python
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/idna?source=hash-mapping
+ size: 59038
+ timestamp: 1776947141407
+- conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-2.0.0-pyhd8ed1ab_0.conda
+ sha256: 5a047f9eac290e679b4e6f6f4cbfcc5acdfbf031a4f06824d4ddb590cdbb850b
+ md5: 92617c2ba2847cca7a6ed813b6f4ab79
+ depends:
+ - python >=3.10
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/imagesize?source=hash-mapping
+ size: 15729
+ timestamp: 1773752188889
+- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.8.0-pyhcf101f3_0.conda
+ sha256: 82ab2a0d91ca1e7e63ab6a4939356667ef683905dea631bc2121aa534d347b16
+ md5: 080594bf4493e6bae2607e65390c520a
+ depends:
+ - python >=3.10
+ - zipp >=3.20
+ - python
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/importlib-metadata?source=hash-mapping
+ size: 34387
+ timestamp: 1773931568510
+- conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.8.0-h8f7a5dd_0.conda
+ sha256: 09f2b26f8c727fd2138fd4846b91708c32d5684120b59d5c8d38472c0eefbf33
+ md5: 12e7a110add59a05b337484568a83a4d
+ depends:
+ - importlib-metadata ==8.8.0 pyhcf101f3_0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 21425
+ timestamp: 1773931568510
+- conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda
+ sha256: e1a9e3b1c8fe62dc3932a616c284b5d8cbe3124bbfbedcf4ce5c828cb166ee19
+ md5: 9614359868482abba1bd15ce465e3c42
+ depends:
+ - python >=3.10
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/iniconfig?source=hash-mapping
+ size: 13387
+ timestamp: 1760831448842
+- conda: https://conda.anaconda.org/conda-forge/noarch/invoke-2.2.1-pyhd8ed1ab_0.conda
+ sha256: 5a4e3a01f626c8de15ddada622d364e94ff28e8d6bdedf1665442ef03a4e0140
+ md5: 3a804714ed59be1969ffca10f703ec2a
+ depends:
+ - python >=3.10
+ license: BSD-2-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/invoke?source=hash-mapping
+ size: 132825
+ timestamp: 1760146119847
+- conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.2.0-pyh5552912_1.conda
+ sha256: 5c1f3e874adaf603449f2b135d48f168c5d510088c78c229bda0431268b43b27
+ md5: 4b53d436f3fbc02ce3eeaf8ae9bebe01
+ depends:
+ - appnope
+ - __osx
+ - comm >=0.1.1
+ - debugpy >=1.6.5
+ - ipython >=7.23.1
+ - jupyter_client >=8.8.0
+ - jupyter_core >=5.1,!=6.0.*
+ - matplotlib-inline >=0.1
+ - nest-asyncio >=1.4
+ - packaging >=22
+ - psutil >=5.7
+ - python >=3.10
+ - pyzmq >=25
+ - tornado >=6.4.1
+ - traitlets >=5.4.0
+ - python
+ constrains:
+ - appnope >=0.1.2
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/ipykernel?source=hash-mapping
+ size: 132260
+ timestamp: 1770566135697
+- conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.2.0-pyha191276_1.conda
+ sha256: b77ed58eb235e5ad80e742b03caeed4bbc2a2ef064cb9a2deee3b75dfae91b2a
+ md5: 8b267f517b81c13594ed68d646fd5dcb
+ depends:
+ - __linux
+ - comm >=0.1.1
+ - debugpy >=1.6.5
+ - ipython >=7.23.1
+ - jupyter_client >=8.8.0
+ - jupyter_core >=5.1,!=6.0.*
+ - matplotlib-inline >=0.1
+ - nest-asyncio >=1.4
+ - packaging >=22
+ - psutil >=5.7
+ - python >=3.10
+ - pyzmq >=25
+ - tornado >=6.4.1
+ - traitlets >=5.4.0
+ - python
+ constrains:
+ - appnope >=0.1.2
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/ipykernel?source=hash-mapping
+ size: 133644
+ timestamp: 1770566133040
+- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.13.0-pyh53cf698_0.conda
+ sha256: a0af49948a1842dfd15a0b0b2fd56c94ddbd07e07a6c8b4bc70d43015eafaff0
+ md5: 73e9657cd19605740d21efb14d8d0cb9
+ depends:
+ - __unix
+ - decorator >=5.1.0
+ - ipython_pygments_lexers >=1.0.0
+ - jedi >=0.18.2
+ - matplotlib-inline >=0.1.6
+ - prompt-toolkit >=3.0.41,<3.1.0
+ - psutil >=7
+ - pygments >=2.14.0
+ - python >=3.11
+ - stack_data >=0.6.0
+ - traitlets >=5.13.0
+ - typing_extensions >=4.6
+ - pexpect >4.6
+ - python
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/ipython?source=hash-mapping
+ size: 651632
+ timestamp: 1777038396606
+- conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda
+ sha256: 894682a42a7d659ae12878dbcb274516a7031bbea9104e92f8e88c1f2765a104
+ md5: bd80ba060603cc228d9d81c257093119
+ depends:
+ - pygments
+ - python >=3.9
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/ipython-pygments-lexers?source=hash-mapping
+ size: 13993
+ timestamp: 1737123723464
+- conda: https://conda.anaconda.org/conda-forge/noarch/isort-8.0.1-pyhd8ed1ab_0.conda
+ sha256: cc5c2b513143ea9675ba5b3570182f7568fd1029b299ee3bc58424dcce8c5539
+ md5: 98cdd8615792e90da1023bc546f806d9
+ depends:
+ - importlib-metadata >=4.6.0
+ - python >=3.10,<4.0
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/isort?source=hash-mapping
+ size: 72146
+ timestamp: 1772278531671
+- conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.9.2-pyhd8ed1ab_0.conda
+ sha256: 12880c60e459ebb79456965792d4392cff0cb488de7de463b2d098f96f1b9430
+ md5: dd0988318fb84ee03d41376109fbe851
+ depends:
+ - importlib-metadata >=4.6
+ - jaxlib >=0.9.2,<=0.9.2
+ - ml_dtypes >=0.5.0
+ - numpy >=2.0
+ - opt_einsum
+ - python >=3.11
+ - scipy >=1.13
+ constrains:
+ - cudnn >=9.8,<10.0
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/jax?source=hash-mapping
+ size: 2038954
+ timestamp: 1775680194539
+- conda: https://conda.anaconda.org/conda-forge/noarch/jax-jumpy-1.0.0-pyhd8ed1ab_1.conda
+ sha256: c414b2be28e7d963e55c962caad1a25833d2e415a3d7a16e4f9da9e187dd37b3
+ md5: d15bad1eca61880b5e465c4038d7c3f4
+ depends:
+ - numpy >=1.18.0
+ - python >=3.9
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/jax-jumpy?source=hash-mapping
+ size: 20757
+ timestamp: 1734210042598
+- conda: https://conda.anaconda.org/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://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda
+ sha256: fc9ca7348a4f25fed2079f2153ecdcf5f9cf2a0bc36c4172420ca09e1849df7b
+ md5: 04558c96691bed63104678757beb4f8d
+ depends:
+ - markupsafe >=2.0
+ - python >=3.10
+ - python
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/jinja2?source=hash-mapping
+ size: 120685
+ timestamp: 1764517220861
+- conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.3-pyhd8ed1ab_0.conda
+ sha256: 301539229d7be6420c084490b8145583291123f0ce6b92f56be5948a2c83a379
+ md5: 615de2a4d97af50c350e5cf160149e77
+ depends:
+ - python >=3.10
+ - setuptools
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/joblib?source=hash-mapping
+ size: 226448
+ timestamp: 1765794135253
+- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda
+ sha256: db973a37d75db8e19b5f44bbbdaead0c68dde745407f281e2a7fe4db74ec51d7
+ md5: ada41c863af263cc4c5fcbaff7c3e4dc
+ depends:
+ - attrs >=22.2.0
+ - jsonschema-specifications >=2023.3.6
+ - python >=3.10
+ - referencing >=0.28.4
+ - rpds-py >=0.25.0
+ - python
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/jsonschema?source=hash-mapping
+ size: 82356
+ timestamp: 1767839954256
+- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda
+ sha256: 0a4f3b132f0faca10c89fdf3b60e15abb62ded6fa80aebfc007d05965192aa04
+ md5: 439cd0f567d697b20a8f45cb70a1005a
+ depends:
+ - python >=3.10
+ - referencing >=0.31.0
+ - python
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/jsonschema-specifications?source=hash-mapping
+ size: 19236
+ timestamp: 1757335715225
+- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.8.0-pyhcf101f3_0.conda
+ sha256: e402bd119720862a33229624ec23645916a7d47f30e1711a4af9e005162b84f3
+ md5: 8a3d6d0523f66cf004e563a50d9392b3
+ depends:
+ - jupyter_core >=5.1
+ - python >=3.10
+ - python-dateutil >=2.8.2
+ - pyzmq >=25.0
+ - tornado >=6.4.1
+ - traitlets >=5.3
+ - python
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/jupyter-client?source=hash-mapping
+ size: 112785
+ timestamp: 1767954655912
+- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.9.1-pyhc90fa1f_0.conda
+ sha256: 1d34b80e5bfcd5323f104dbf99a2aafc0e5d823019d626d0dce5d3d356a2a52a
+ md5: b38fe4e78ee75def7e599843ef4c1ab0
+ depends:
+ - __unix
+ - python
+ - platformdirs >=2.5
+ - python >=3.10
+ - traitlets >=5.3
+ - python
+ constrains:
+ - pywin32 >=300
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/jupyter-core?source=hash-mapping
+ size: 65503
+ timestamp: 1760643864586
+- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda
+ sha256: dc24b900742fdaf1e077d9a3458fd865711de80bca95fe3c6d46610c532c6ef0
+ md5: fd312693df06da3578383232528c468d
+ depends:
+ - pygments >=2.4.1,<3
+ - python >=3.9
+ constrains:
+ - jupyterlab >=4.0.8,<5.0.0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/jupyterlab-pygments?source=hash-mapping
+ size: 18711
+ timestamp: 1733328194037
+- conda: https://conda.anaconda.org/conda-forge/noarch/keras-3.14.1-pyh753f3f9_0.conda
+ sha256: 13141e166f73e8688c441f548a743175d0bfb0590c450e7406493eca7121958a
+ md5: b3d345d389695c26f9f8e06607c7491f
+ depends:
+ - absl-py
+ - h5py
+ - ml_dtypes
+ - namex
+ - numpy
+ - optree
+ - packaging
+ - python >=3.11
+ - rich
+ constrains:
+ - pytorch >=2.6.0
+ - jax >=0.5.0
+ - tensorflow >=2.18.0
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/keras?source=hash-mapping
+ size: 938226
+ timestamp: 1778246365721
+- conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda
+ sha256: 41557eeadf641de6aeae49486cef30d02a6912d8da98585d687894afd65b356a
+ md5: 86d9cba083cd041bfbf242a01a7a1999
+ constrains:
+ - sysroot_linux-64 ==2.28
+ license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later
+ license_family: GPL
+ purls: []
+ size: 1278712
+ timestamp: 1765578681495
+- conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.3.1-pyhd8ed1ab_0.conda
+ sha256: 49570840fb15f5df5d4b4464db8ee43a6d643031a2bc70ef52120a52e3809699
+ md5: 9b965c999135d43a3d0f7bd7d024e26a
+ depends:
+ - python >=3.10
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/lark?source=hash-mapping
+ size: 94312
+ timestamp: 1761596921009
+- conda: https://conda.anaconda.org/conda-forge/noarch/libcxx-headers-22.1.5-h707e725_1.conda
+ sha256: aebe5d9d45bb61b64834e39cd86865ea043149af37fec698b4adff341ef08a74
+ md5: ddbf7b15609299629cf5e859c1d33953
+ depends:
+ - __unix
+ constrains:
+ - gxx_linux-64 >=14
+ - clangxx >=19
+ - gxx_osx-64 >=14
+ - libcxx-devel 22.1.5
+ - gxx_osx-arm64 >=14
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
+ purls: []
+ size: 1176462
+ timestamp: 1778191549544
+- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.2.0-hcc6f6b0_119.conda
+ sha256: 38a557eba305468ac1f90ac85e50d8defd76141cb0b8a43b2fc1aca71dd5d5f2
+ md5: 683fcb168e1df9a21fa80d5aa2d9330b
+ depends:
+ - __unix
+ license: GPL-3.0-only WITH GCC-exception-3.1
+ license_family: GPL
+ purls: []
+ size: 3095909
+ timestamp: 1778268932148
+- conda: https://conda.anaconda.org/conda-forge/noarch/libml_dtypes-headers-0.5.4-h707e725_0.conda
+ sha256: 37e3fe66ec86b8fff9db741a1e6fcc19874646702aaa74c97bf26852ffbd0276
+ md5: 597a39bc0946262b29644366059cd109
+ depends:
+ - __unix
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 23946
+ timestamp: 1764082185215
+- conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-15.2.0-hd446a21_119.conda
+ sha256: a2385f3611d5cd25378f9cf2367183320731709c067ddd08d43330d3170f15b8
+ md5: bcfe7eae40158c3e355d2f9d3ed41230
+ depends:
+ - __unix
+ license: GPL-3.0-only WITH GCC-exception-3.1
+ license_family: GPL
+ purls: []
+ size: 20765069
+ timestamp: 1778268963689
+- conda: https://conda.anaconda.org/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://conda.anaconda.org/conda-forge/noarch/logical-unification-0.4.7-pyhd8ed1ab_0.conda
+ sha256: 5a3995f2b6c47d0b4842f3842490920e2dbf074854667d8649dd5abe81914a54
+ md5: f2815c465aa44db830f0b31b7e6baaff
+ depends:
+ - multipledispatch
+ - python >=3.10
+ - toolz
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/logical-unification?source=hash-mapping
+ size: 18830
+ timestamp: 1761054211310
+- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.10.2-pyhcf101f3_0.conda
+ sha256: 20e0892592a3e7c683e3d66df704a9425d731486a97c34fc56af4da1106b2b6b
+ md5: ba0a9221ce1063f31692c07370d062f3
+ depends:
+ - importlib-metadata >=4.4
+ - python >=3.10
+ - python
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/markdown?source=hash-mapping
+ size: 85893
+ timestamp: 1770694658918
+- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda
+ sha256: 7b1da4b5c40385791dbc3cc85ceea9fad5da680a27d5d3cb8bfaa185e304a89e
+ md5: 5b5203189eb668f042ac2b0826244964
+ depends:
+ - mdurl >=0.1,<1
+ - python >=3.10
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/markdown-it-py?source=hash-mapping
+ size: 64736
+ timestamp: 1754951288511
+- conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.2-pyhd8ed1ab_0.conda
+ sha256: 35b43d7343f74452307fd018a1cca92b8f68961ff8e2ab6a81ce0a703c9a3764
+ md5: 9acc1c385be401d533ff70ef5b50dae6
+ depends:
+ - python >=3.10
+ - traitlets
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/matplotlib-inline?source=hash-mapping
+ size: 15725
+ timestamp: 1778264403247
+- conda: https://conda.anaconda.org/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://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.5.0-pyhd8ed1ab_0.conda
+ sha256: 123cc004e2946879708cdb6a9eff24acbbb054990d6131bb94bca7a374ebebfc
+ md5: 1997a083ef0b4c9331f9191564be275e
+ depends:
+ - markdown-it-py >=2.0.0,<5.0.0
+ - python >=3.10
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/mdit-py-plugins?source=hash-mapping
+ size: 43805
+ timestamp: 1754946862113
+- conda: https://conda.anaconda.org/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://conda.anaconda.org/conda-forge/noarch/meshio-5.3.5-pyhd8ed1ab_0.conda
+ sha256: 8818467a7490dea7876e1c6d112af7c0e326a5a54cd829a384a493a152d8596a
+ md5: 2ea6ce24274096bf2df6c8c50f373d5b
+ depends:
+ - h5py
+ - importlib_metadata
+ - netcdf4
+ - numpy
+ - python >=3.7
+ - rich
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/meshio?source=hash-mapping
+ size: 383105
+ timestamp: 1706720749456
+- conda: https://conda.anaconda.org/conda-forge/noarch/minikanren-1.0.5-pyhd8ed1ab_1.conda
+ sha256: aced546f3dbc7f8710182b1f1ec30d2aaec2f4f9b48513d7d95fb2004ee775f6
+ md5: ef7868bd5e40d31a8a41312e91ec6a9c
+ depends:
+ - cons >=0.4.0
+ - etuples >=0.3.1
+ - logical-unification >=0.4.1
+ - multipledispatch
+ - python >=3.10
+ - toolz
+ - typing_extensions
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/minikanren?source=hash-mapping
+ size: 27317
+ timestamp: 1755897118661
+- conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.2.1-pyhcf101f3_0.conda
+ sha256: b52dc6c78fbbe7a3008535cb8bfd87d70d8053e9250bbe16e387470a9df07070
+ md5: b97e84d1553b4a1c765b87fff83453ad
+ depends:
+ - python >=3.10
+ - typing_extensions
+ - python
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/mistune?source=hash-mapping
+ size: 74567
+ timestamp: 1777824616382
+- conda: https://conda.anaconda.org/conda-forge/noarch/mock-5.2.0-pyhd8ed1ab_0.conda
+ sha256: ecf2c7b886193c7a4c583faab3deedaa897008dc2e2259ea2733a6ab78143ce2
+ md5: 1353e330df2cc41271afac3b0f88db28
+ depends:
+ - python >=3.9
+ license: BSD-2-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/mock?source=hash-mapping
+ size: 34346
+ timestamp: 1741074069714
+- conda: https://conda.anaconda.org/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://conda.anaconda.org/conda-forge/noarch/multipledispatch-0.6.0-pyhd8ed1ab_1.conda
+ sha256: c6216a21154373b340c64f321f22fec51db4ee6156c2e642fa58368103ac5d09
+ md5: 121a57fce7fff0857ec70fa03200962f
+ depends:
+ - python >=3.6
+ - six
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/multipledispatch?source=hash-mapping
+ size: 17254
+ timestamp: 1721907640382
+- conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda
+ sha256: d09c47c2cf456de5c09fa66d2c3c5035aa1fa228a1983a433c47b876aa16ce90
+ md5: 37293a85a0f4f77bbd9cf7aaefc62609
+ depends:
+ - python >=3.9
+ license: Apache-2.0
+ license_family: Apache
+ purls:
+ - pkg:pypi/munkres?source=hash-mapping
+ size: 15851
+ timestamp: 1749895533014
+- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda
+ sha256: 6ed158e4e5dd8f6a10ad9e525631e35cee8557718f83de7a4e3966b1f772c4b1
+ md5: e9c622e0d00fa24a6292279af3ab6d06
+ depends:
+ - python >=3.9
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/mypy-extensions?source=hash-mapping
+ size: 11766
+ timestamp: 1745776666688
+- conda: https://conda.anaconda.org/conda-forge/noarch/myst-parser-5.0.0-pyhd8ed1ab_0.conda
+ sha256: f352d594d968acd31052c5f894ae70718be56481ffa9c304fdfcbe78ddf66eb1
+ md5: a65e2c3c764766f0b28a3ac5052502a6
+ depends:
+ - docutils >=0.20,<0.23
+ - jinja2
+ - markdown-it-py >=4.0.0,<4.1.0
+ - mdit-py-plugins >=0.5,<0.6
+ - python >=3.11
+ - pyyaml
+ - sphinx >=8,<10
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/myst-parser?source=hash-mapping
+ size: 73535
+ timestamp: 1768942892170
+- conda: https://conda.anaconda.org/conda-forge/noarch/namex-0.1.0-pyhd8ed1ab_0.conda
+ sha256: 295e0ef6aae0185b55752c981eca5c11443ba9ea4c236d45112128799fd99f51
+ md5: 3eb854547a0183b994431957fa0e05d2
+ depends:
+ - python >=3.9
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/namex?source=hash-mapping
+ size: 11936
+ timestamp: 1748346473739
+- conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.21.0-pyhcf101f3_0.conda
+ sha256: 41e391ec624b67586e1d2d5ae1651f88b283fa0b68cce998c281e69e2e5d7573
+ md5: d2ec42db1d2fcd69003c8b069fb4301c
+ depends:
+ - python >=3.10
+ - python
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/narwhals?source=hash-mapping
+ size: 285016
+ timestamp: 1778254540766
+- conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.4-pyhd8ed1ab_0.conda
+ sha256: 1b66960ee06874ddceeebe375d5f17fb5f393d025a09e15b830ad0c4fffb585b
+ md5: 00f5b8dafa842e0c27c1cd7296aa4875
+ depends:
+ - jupyter_client >=6.1.12
+ - jupyter_core >=4.12,!=5.0.*
+ - nbformat >=5.1
+ - python >=3.8
+ - traitlets >=5.4
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/nbclient?source=hash-mapping
+ size: 28473
+ timestamp: 1766485646962
+- conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.17.1-hb502eef_0.conda
+ sha256: 6b6d96cca8e9dd34e0735b59534831e1f8206b7366c79c71e08da6ee55c50683
+ md5: 02669c36935d23e5258c5dd1a5e601ab
+ depends:
+ - nbconvert-core ==7.17.1 pyhcf101f3_0
+ - nbconvert-pandoc ==7.17.1 h08b4883_0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 5364
+ timestamp: 1775615493260
+- conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.17.1-pyhcf101f3_0.conda
+ sha256: ab2ac79c5892c5434d50b3542d96645bdaa06d025b6e03734be29200de248ac2
+ md5: 2bce0d047658a91b99441390b9b27045
+ depends:
+ - beautifulsoup4
+ - bleach-with-css !=5.0.0
+ - defusedxml
+ - importlib-metadata >=3.6
+ - jinja2 >=3.0
+ - jupyter_core >=4.7
+ - jupyterlab_pygments
+ - markupsafe >=2.0
+ - mistune >=2.0.3,<4
+ - nbclient >=0.5.0
+ - nbformat >=5.7
+ - packaging
+ - pandocfilters >=1.4.1
+ - pygments >=2.4.1
+ - python >=3.10
+ - traitlets >=5.1
+ - python
+ constrains:
+ - pandoc >=2.9.2,<4.0.0
+ - nbconvert ==7.17.1 *_0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/nbconvert?source=hash-mapping
+ size: 202229
+ timestamp: 1775615493260
+- conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.17.1-h08b4883_0.conda
+ sha256: b576268b5b3da13b703a15d28d218fd1b552511726253575025930091e6206ae
+ md5: f635af333701d2ed89d70ba9adb8e2ee
+ depends:
+ - nbconvert-core ==7.17.1 pyhcf101f3_0
+ - pandoc
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 5840
+ timestamp: 1775615493260
+- conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda
+ sha256: 7a5bd30a2e7ddd7b85031a5e2e14f290898098dc85bea5b3a5bf147c25122838
+ md5: bbe1963f1e47f594070ffe87cdf612ea
+ depends:
+ - jsonschema >=2.6
+ - jupyter_core >=4.12,!=5.0.*
+ - python >=3.9
+ - python-fastjsonschema >=2.15
+ - traitlets >=5.1
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/nbformat?source=hash-mapping
+ size: 100945
+ timestamp: 1733402844974
+- conda: https://conda.anaconda.org/conda-forge/noarch/nbsphinx-0.9.8-pyhd8ed1ab_0.conda
+ sha256: 4cc750523756e61751c9a07d7e8b0dc265190ca8218f815e5e24779872748f9e
+ md5: c46b9814fb20a07bc294318c3eca5aed
+ depends:
+ - docutils
+ - jinja2
+ - nbconvert
+ - nbformat
+ - python >=3.6
+ - sphinx
+ - traitlets
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/nbsphinx?source=hash-mapping
+ size: 35023
+ timestamp: 1764354193797
+- conda: https://conda.anaconda.org/conda-forge/noarch/nbstripout-0.9.1-pyhd8ed1ab_0.conda
+ sha256: e5029a1ca06d5f02c9366ec8686f64c942d77f297bfa90a0a8215083d85a7a01
+ md5: 948b10290b9f4ebbb26de6da5c6b7c51
+ depends:
+ - nbformat
+ - python >=3.10
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/nbstripout?source=hash-mapping
+ size: 24331
+ timestamp: 1771778886946
+- conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda
+ sha256: bb7b21d7fd0445ddc0631f64e66d91a179de4ba920b8381f29b9d006a42788c0
+ md5: 598fd7d4d0de2455fb74f56063969a97
+ depends:
+ - python >=3.9
+ license: BSD-2-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/nest-asyncio?source=hash-mapping
+ size: 11543
+ timestamp: 1733325673691
+- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda
+ sha256: f6a82172afc50e54741f6f84527ef10424326611503c64e359e25a19a8e4c1c6
+ md5: a2c1eeadae7a309daed9d62c96012a2b
+ depends:
+ - python >=3.11
+ - python
+ constrains:
+ - numpy >=1.25
+ - scipy >=1.11.2
+ - matplotlib-base >=3.8
+ - pandas >=2.0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/networkx?source=hash-mapping
+ size: 1587439
+ timestamp: 1765215107045
+- conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda
+ sha256: 4fa40e3e13fc6ea0a93f67dfc76c96190afd7ea4ffc1bac2612d954b42cdc3ee
+ md5: eb52d14a901e23c39e9e7b4a1a5c015f
+ depends:
+ - python >=3.10
+ - setuptools
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/nodeenv?source=hash-mapping
+ size: 40866
+ timestamp: 1766261270149
+- conda: https://conda.anaconda.org/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://conda.anaconda.org/conda-forge/noarch/numpoly-1.2.14-pyhd8ed1ab_0.conda
+ sha256: 46c6860a4ab51de9f0e87c2973b41e9162a26effc1770f64718f777421699b04
+ md5: 755ce6ebdf765eeb2170d99e45f50b8d
+ depends:
+ - numpy
+ - python >=3.5
+ - setuptools
+ - six
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/numpoly?source=hash-mapping
+ size: 77871
+ timestamp: 1728351111178
+- conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda
+ sha256: af71aabb2bfa4b2c89b7b06403e5cec23b418452cae9f9772bd7ac3f9ea1ff44
+ md5: 52919815cd35c4e1a0298af658ccda04
+ depends:
+ - python >=3.9
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/opt-einsum?source=hash-mapping
+ size: 62479
+ timestamp: 1733688053334
+- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.2-pyhc364b38_0.conda
+ sha256: 3906abfb6511a3bb309e39b9b1b7bc38f50a723971de2395489fd1f379255890
+ md5: 4c06a92e74452cfa53623a81592e8934
+ depends:
+ - python >=3.8
+ - python
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/packaging?source=hash-mapping
+ size: 91574
+ timestamp: 1777103621679
+- conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2
+ sha256: 2bb9ba9857f4774b85900c2562f7e711d08dd48e2add9bee4e1612fbee27e16f
+ md5: 457c2c8c08e54905d6954e79cb5b5db9
+ depends:
+ - python !=3.0,!=3.1,!=3.2,!=3.3
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/pandocfilters?source=hash-mapping
+ size: 11627
+ timestamp: 1631603397334
+- conda: https://conda.anaconda.org/conda-forge/noarch/paramiko-5.0.0-pyhd8ed1ab_0.conda
+ sha256: 1b64a1b91b57c2a4c42a9e73b9a544e22fcdac55a953d2c09644b184edde7c3f
+ md5: e7fa4da3b74ededb2fa7ab4171f63d21
+ depends:
+ - bcrypt >=3.2
+ - cryptography >=3.3
+ - invoke >=2.0
+ - pynacl >=1.5
+ - python >=3.10
+ license: LGPL-2.1-or-later
+ license_family: LGPL
+ purls:
+ - pkg:pypi/paramiko?source=hash-mapping
+ size: 152584
+ timestamp: 1778365181112
+- conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.7-pyhcf101f3_0.conda
+ sha256: 611882f7944b467281c46644ffde6c5145d1a7730388bcde26e7e86819b0998e
+ md5: 39894c952938276405a1bd30e4ce2caf
+ depends:
+ - python >=3.10
+ - python
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/parso?source=hash-mapping
+ size: 82472
+ timestamp: 1777722955579
+- conda: https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda
+ sha256: 472fc587c63ec4f6eba0cc0b06008a6371e0a08a5986de3cf4e8024a47b4fe6c
+ md5: 0badf9c54e24cecfb0ad2f99d680c163
+ depends:
+ - locket
+ - python >=3.9
+ - toolz
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/partd?source=hash-mapping
+ size: 20884
+ timestamp: 1715026639309
+- conda: https://conda.anaconda.org/conda-forge/noarch/pathos-0.3.5-pyhcf101f3_0.conda
+ sha256: 981d6961cfceaa0cec7c4f4b61e482f076bd7726b5a60edf82fe14d0a3297027
+ md5: 695df55c5f29f186b33fcc32b7723930
+ depends:
+ - dill >=0.4.1
+ - multiprocess >=0.70.19
+ - pox >=0.3.7
+ - ppft >=1.7.8
+ - python >=3.10
+ - python
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/pathos?source=hash-mapping
+ size: 55743
+ timestamp: 1769180435982
+- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.1.1-pyhd8ed1ab_0.conda
+ sha256: 6eaee417d33f298db79bc7185ab1208604c0e6cf51dade34cd513c6f9db9c6f3
+ md5: 11adc78451c998c0fd162584abfa3559
+ depends:
+ - python >=3.10
+ license: MPL-2.0
+ license_family: MOZILLA
+ purls:
+ - pkg:pypi/pathspec?source=hash-mapping
+ size: 56559
+ timestamp: 1777271601895
+- conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.2-pyhcf101f3_0.conda
+ sha256: 9678f4745e6b82b36fab9657a19665081862268cb079cf9acf878ab2c4fadee9
+ md5: 8678577a52161cc4e1c93fcc18e8a646
+ depends:
+ - numpy >=1.4.0
+ - python >=3.10
+ - python
+ license: BSD-2-Clause AND PSF-2.0
+ purls:
+ - pkg:pypi/patsy?source=hash-mapping
+ size: 193450
+ timestamp: 1760998269054
+- conda: https://conda.anaconda.org/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=hash-mapping
+ size: 53561
+ timestamp: 1733302019362
+- conda: https://conda.anaconda.org/conda-forge/noarch/pip-26.1.1-pyh8b19718_0.conda
+ sha256: 1bd94ef1ae08fd811ef3b26857e46ba460c7430bf1f3ccd94a4d6614fd619bd5
+ md5: 35870d32aed92041d31cbb15e822dca3
+ depends:
+ - python >=3.10,<3.13.0a0
+ - setuptools
+ - wheel
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/pip?source=hash-mapping
+ size: 1201616
+ timestamp: 1777924080196
+- conda: https://conda.anaconda.org/conda-forge/noarch/pip-licenses-5.5.1-pyhc364b38_0.conda
+ sha256: 6ab47c2e333b9ae698c62af8cb9399ac82b0c9f454ab1bd1e66517ae2311132d
+ md5: e0f3fd9e93475fe22d8d688efdf9db40
+ depends:
+ - python >=3.11
+ - prettytable >=3.12.0
+ - python
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/pip-licenses?source=hash-mapping
+ size: 28389
+ timestamp: 1774533372159
+- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.6-pyhcf101f3_0.conda
+ sha256: 8f29915c172f1f7f4f7c9391cd5dac3ebf5d13745c8b7c8006032615246345a5
+ md5: 89c0b6d1793601a2a3a3f7d2d3d8b937
+ depends:
+ - python >=3.10
+ - python
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/platformdirs?source=hash-mapping
+ size: 25862
+ timestamp: 1775741140609
+- conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.6.0-pyhd8ed1ab_0.conda
+ sha256: c418d325359fc7a0074cea7f081ef1bce26e114d2da8a0154c5d27ecc87a08e7
+ md5: 3e9427ee186846052e81fadde8ebe96a
+ depends:
+ - narwhals >=1.15.1
+ - packaging
+ - python >=3.10
+ constrains:
+ - ipywidgets >=7.6
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/plotly?source=hash-mapping
+ size: 5251872
+ timestamp: 1772628857717
+- conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda
+ sha256: e14aafa63efa0528ca99ba568eaf506eb55a0371d12e6250aaaa61718d2eb62e
+ md5: d7585b6550ad04c8c5e21097ada2888e
+ depends:
+ - python >=3.9
+ - python
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/pluggy?source=hash-mapping
+ size: 25877
+ timestamp: 1764896838868
+- conda: https://conda.anaconda.org/conda-forge/noarch/pooch-1.9.0-pyhd8ed1ab_0.conda
+ sha256: 081e52c4612830bf1fd4a9c78eebaf335d1385d74ddfd328b1b2f26b983848eb
+ md5: dd4b6337bf8886855db6905b336db3c8
+ depends:
+ - packaging >=20.0
+ - platformdirs >=2.5.0
+ - python >=3.10
+ - requests >=2.19.0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/pooch?source=hash-mapping
+ size: 56833
+ timestamp: 1769816568869
+- conda: https://conda.anaconda.org/conda-forge/noarch/pox-0.3.7-pyhcf101f3_0.conda
+ sha256: 15e0135a1cc1edf09b143d094b951c4f48e71f98cfe7ae09c0a9d2ff23990ab7
+ md5: 318742fc0a09220302170733a21206c2
+ depends:
+ - python >=3.10
+ - python
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/pox?source=hash-mapping
+ size: 28265
+ timestamp: 1768998241130
+- conda: https://conda.anaconda.org/conda-forge/noarch/ppft-1.7.8-pyhcf101f3_1.conda
+ sha256: b3c908eb1452e0cc314d5b8f10a2f684c6f6c8ab3d6fa7ce7434a6690db8e8f6
+ md5: 5ac5ee1ebf1061beaec5f5dbb39f5980
+ depends:
+ - python >=3.10
+ - python
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/ppft?source=hash-mapping
+ size: 35537
+ timestamp: 1769007436649
+- conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.6.0-pyha770c72_0.conda
+ sha256: 716960bf0a9eb334458a26b3bdcb17b8d0786062138a4f48c7f335c8418c5d0b
+ md5: 7859736b4f8ebe6c8481bf48d91c9a1e
+ depends:
+ - cfgv >=2.0.0
+ - identify >=1.0.0
+ - nodeenv >=0.11.1
+ - python >=3.10
+ - pyyaml >=5.1
+ - virtualenv >=20.10.0
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/pre-commit?source=hash-mapping
+ size: 201606
+ timestamp: 1776858157327
+- conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-hooks-5.0.0-pyhd8ed1ab_2.conda
+ sha256: b3c0e650280e660268c5c3a609c1d008fab598c41eb310f5c6993590889625e7
+ md5: f41a1e00c55bc911fcc9cab2a88b4a66
+ depends:
+ - python >=3.9
+ - ruamel.yaml >=0.15
+ - tomli >=1.1.0
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/pre-commit-hooks?source=hash-mapping
+ size: 34986
+ timestamp: 1734603755600
+- conda: https://conda.anaconda.org/conda-forge/noarch/prettytable-3.17.0-pyhd8ed1ab_0.conda
+ sha256: a1cc667bd683f26c319ccab257cd3e17b33f34ef90ff4f548a811a342358c952
+ md5: 9a12c482f559d39f3ed9550ba9e0eeb0
+ depends:
+ - python >=3.10
+ - wcwidth
+ constrains:
+ - ptable >=9999
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/prettytable?source=hash-mapping
+ size: 35808
+ timestamp: 1763199361018
+- conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda
+ sha256: ebc1bb62ac612af6d40667da266ff723662394c0ca78935340a5b5c14831227b
+ md5: d17ae9db4dc594267181bd199bf9a551
+ depends:
+ - python >=3.9
+ - wcwidth
+ constrains:
+ - prompt_toolkit 3.0.51
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/prompt-toolkit?source=hash-mapping
+ size: 271841
+ timestamp: 1744724188108
+- conda: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.51-hd8ed1ab_0.conda
+ sha256: 936189f0373836c1c77cd2d6e71ba1e583e2d3920bf6d015e96ee2d729b5e543
+ md5: 1e61ab85dd7c60e5e73d853ea035dc29
+ depends:
+ - prompt-toolkit >=3.0.51,<3.0.52.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 7182
+ timestamp: 1744724189376
+- conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda
+ sha256: a7713dfe30faf17508ec359e0bc7e0983f5d94682492469bd462cdaae9c64d83
+ md5: 7d9daffbb8d8e0af0f769dbbcd173a54
+ depends:
+ - python >=3.9
+ license: ISC
+ purls:
+ - pkg:pypi/ptyprocess?source=hash-mapping
+ size: 19457
+ timestamp: 1733302371990
+- conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda
+ sha256: 71bd24600d14bb171a6321d523486f6a06f855e75e547fa0cb2a0953b02047f0
+ md5: 3bfdfb8dbcdc4af1ae3f9a8eb3948f04
+ depends:
+ - python >=3.9
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/pure-eval?source=hash-mapping
+ size: 16668
+ timestamp: 1733569518868
+- conda: https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyhd8ed1ab_1.conda
+ sha256: f2660eb121032dcbe1f3f5d53a120625698ca6602f32a2aba131bb1023286722
+ md5: 9eb1496f8aa577322f293ee0c72983fd
+ depends:
+ - python >=3.9
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/apipkg?source=hash-mapping
+ - pkg:pypi/iniconfig?source=hash-mapping
+ - pkg:pypi/py?source=hash-mapping
+ size: 80791
+ timestamp: 1734003519402
+- conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-3.0.1-pyh7a1b43c_0.conda
+ sha256: 2558727093f13d4c30e124724566d16badd7de532fd8ee7483628977117d02be
+ md5: 70ece62498c769280f791e836ac53fff
+ depends:
+ - python >=3.8
+ - pybind11-global ==3.0.1 *_0
+ - python
+ constrains:
+ - pybind11-abi ==11
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/pybind11?source=hash-mapping
+ size: 232875
+ timestamp: 1755953378112
+- conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-11-hc364b38_1.conda
+ sha256: 9e7fe12f727acd2787fb5816b2049cef4604b7a00ad3e408c5e709c298ce8bf1
+ md5: f0599959a2447c1e544e216bddf393fa
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 14671
+ timestamp: 1752769938071
+- conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-3.0.1-pyhc7ab6ef_0.conda
+ sha256: f11a5903879fe3a24e0d28329cb2b1945127e85a4cdb444b45545cf079f99e2d
+ md5: fe10b422ce8b5af5dab3740e4084c3f9
+ depends:
+ - python >=3.8
+ - __unix
+ - python
+ constrains:
+ - pybind11-abi ==11
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/pybind11-global?source=hash-mapping
+ size: 228871
+ timestamp: 1755953338243
+- conda: https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.14.0-pyhd8ed1ab_0.conda
+ sha256: 1950f71ff44e64163e176b1ca34812afc1a104075c3190de50597e1623eb7d53
+ md5: 85815c6a22905c080111ec8d56741454
+ depends:
+ - python >=3.9
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/pycodestyle?source=hash-mapping
+ size: 35182
+ timestamp: 1750616054854
+- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda
+ sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6
+ md5: 12c566707c80111f9799308d9e265aef
+ depends:
+ - python >=3.9
+ - python
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/pycparser?source=hash-mapping
+ size: 110100
+ timestamp: 1733195786147
+- conda: https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.17.1-pyhcf101f3_0.conda
+ sha256: 71161705133df512054177ad03f394e073c39e369dda52fda8e8e0a5371df8c2
+ md5: 620cee61c85cf6a407f80e8d502796ec
+ depends:
+ - accessible-pygments
+ - babel
+ - beautifulsoup4
+ - docutils !=0.17.0
+ - pygments >=2.7
+ - python >=3.10
+ - sphinx >=7.0
+ - typing_extensions
+ - python
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/pydata-sphinx-theme?source=hash-mapping
+ size: 1657335
+ timestamp: 1776777605561
+- conda: https://conda.anaconda.org/conda-forge/noarch/pydoe-0.9.9-pyhd8ed1ab_0.conda
+ sha256: a3c4d48de24b3d172ed07de6fa9a44b444d9e0c6c579ca7b96000e03c75adafc
+ md5: 7b9e66e6ff28c17f5891c08b1ee30dd1
+ depends:
+ - numpy >=2.2.6
+ - python >=3.11
+ - scipy >=1.15.3
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/pydoe?source=hash-mapping
+ size: 58860
+ timestamp: 1775519304555
+- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda
+ sha256: cf70b2f5ad9ae472b71235e5c8a736c9316df3705746de419b59d442e8348e86
+ md5: 16c18772b340887160c79a6acc022db0
+ depends:
+ - python >=3.10
+ license: BSD-2-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/pygments?source=hash-mapping
+ size: 893031
+ timestamp: 1774796815820
+- conda: https://conda.anaconda.org/conda-forge/noarch/pylint-4.0.5-pyhcf101f3_0.conda
+ sha256: a8e7736982409a56d2aa329d3052259fd45910f98fb7d3f2816f1a6d59624d60
+ md5: 7d9916ed19ecda71f0b00963365252a7
+ depends:
+ - astroid >=4.0.2,<=4.1.dev0
+ - colorama >=0.4.5
+ - isort >=5,!=5.13,<9
+ - mccabe >=0.6,<0.8
+ - platformdirs >=2.2
+ - python >=3.10
+ - tomli >=1.1
+ - tomlkit >=0.10.1
+ - dill >=0.3.7
+ - python
+ license: GPL-2.0-or-later
+ license_family: GPL
+ purls:
+ - pkg:pypi/pylint?source=hash-mapping
+ size: 391910
+ timestamp: 1771619020969
+- conda: https://conda.anaconda.org/conda-forge/noarch/pymc-5.28.5-h73fd4fa_0.conda
+ sha256: c3d89e9d2189f74062295e79fd5661115126ecccdd8a042b6ce4476ec9abf6ac
+ md5: e736c8f9de5defbd75dd8892b065f3cb
+ depends:
+ - pymc-base ==5.28.5 pyhc364b38_0
+ - pytensor
+ - python-graphviz
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 10397
+ timestamp: 1777723530496
+- conda: https://conda.anaconda.org/conda-forge/noarch/pymc-base-5.28.5-pyhc364b38_0.conda
+ sha256: 964b13ae62872e1fe0b26049cdc68cc00643de5c1cff48e40b3d8d928e33871b
+ md5: 1e1c9cc051ccf06acae004447519daba
+ depends:
+ - python >=3.11
+ - arviz >=0.13.0,<1.0
+ - cachetools >=4.2.1,<7
+ - cloudpickle
+ - numpy >=1.25.0
+ - pandas >=0.24.0
+ - pytensor-base >=2.38.2,<2.39
+ - rich >=13.7.1
+ - scipy >=1.4.1
+ - threadpoolctl >=3.1.0,<4.0.0
+ - typing_extensions >=3.7.4
+ - python
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/pymc?source=hash-mapping
+ size: 397309
+ timestamp: 1777723530496
+- conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda
+ sha256: 417fba4783e528ee732afa82999300859b065dc59927344b4859c64aae7182de
+ md5: 3687cc0b82a8b4c17e1f0eb7e47163d5
+ depends:
+ - python >=3.10
+ - python
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/pyparsing?source=hash-mapping
+ size: 110893
+ timestamp: 1769003998136
+- conda: https://conda.anaconda.org/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/pysocks?source=hash-mapping
+ size: 21085
+ timestamp: 1733217331982
+- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.3-pyhc364b38_1.conda
+ sha256: 960f59442173eee0731906a9077bd5ccf60f4b4226f05a22d1728ab9a21a879c
+ md5: 6a991452eadf2771952f39d43615bb3e
+ depends:
+ - colorama >=0.4
+ - pygments >=2.7.2
+ - python >=3.10
+ - iniconfig >=1.0.1
+ - packaging >=22
+ - pluggy >=1.5,<2
+ - tomli >=1
+ - exceptiongroup >=1
+ - python
+ constrains:
+ - pytest-faulthandler >=2
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/pytest?source=hash-mapping
+ size: 299984
+ timestamp: 1775644472530
+- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-codestyle-2.0.1-py_0.tar.bz2
+ sha256: 8d6a66942e455cd32fb208b45877bcce11d48452f703bb3ad41f7afc2e768d6b
+ md5: 74135a4626e6c4bed80955c0adc4d8be
+ depends:
+ - pycodestyle
+ - pytest
+ - python >3
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/pytest-codestyle?source=hash-mapping
+ size: 7701
+ timestamp: 1596903015641
+- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-7.1.0-pyhcf101f3_0.conda
+ sha256: 44e42919397bd00bfaa47358a6ca93d4c21493a8c18600176212ec21a8d25ca5
+ md5: 67d1790eefa81ed305b89d8e314c7923
+ depends:
+ - coverage >=7.10.6
+ - pluggy >=1.2
+ - pytest >=7
+ - python >=3.10
+ - python
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/pytest-cov?source=hash-mapping
+ size: 29559
+ timestamp: 1774139250481
+- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-mock-3.15.1-pyhd8ed1ab_0.conda
+ sha256: 2936717381a2740c7bef3d96827c042a3bba3ba1496c59892989296591e3dabb
+ md5: 0511afbe860b1a653125d77c719ece53
+ depends:
+ - pytest >=6.2.5
+ - python >=3.10
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/pytest-mock?source=hash-mapping
+ size: 22968
+ timestamp: 1758101248317
+- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda
+ sha256: b7b58a5be090883198411337b99afb6404127809c3d1c9f96e99b59f36177a96
+ md5: 8375cfbda7c57fbceeda18229be10417
+ depends:
+ - execnet >=2.1
+ - pytest >=7.0.0
+ - python >=3.9
+ constrains:
+ - psutil >=3.0
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/pytest-xdist?source=hash-mapping
+ size: 39300
+ timestamp: 1751452761594
+- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda
+ sha256: d6a17ece93bbd5139e02d2bd7dbfa80bee1a4261dced63f65f679121686bf664
+ md5: 5b8d21249ff20967101ffa321cab24e8
+ depends:
+ - python >=3.9
+ - six >=1.5
+ - python
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/python-dateutil?source=hash-mapping
+ size: 233310
+ timestamp: 1751104122689
+- conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.3.1-pyhcf101f3_0.conda
+ sha256: 4a44f16a36fec7125b72d5a57bea963fa9deadccf65e29bb5ca610cd1d5cc0af
+ md5: 45ea5eceb1c2e35a08a834869837a090
+ depends:
+ - python >=3.10
+ - filelock >=3.15.4
+ - platformdirs <5,>=4.3.6
+ - python
+ license: MIT
+ purls:
+ - pkg:pypi/python-discovery?source=compressed-mapping
+ size: 35067
+ timestamp: 1778678120896
+- conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.2-pyhe01879c_0.conda
+ sha256: df9aa74e9e28e8d1309274648aac08ec447a92512c33f61a8de0afa9ce32ebe8
+ md5: 23029aae904a2ba587daba708208012f
+ depends:
+ - python >=3.9
+ - python
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/fastjsonschema?source=hash-mapping
+ size: 244628
+ timestamp: 1755304154927
+- conda: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-25.9.23-pyh1e1bc0e_0.conda
+ sha256: 1933243d9f839bb7bc6c9b75481b6445f50f8b727eb926086e8a2a347fb0467d
+ md5: 611207751a2c0b5b999b07b78985d7a0
+ depends:
+ - python >=3.10
+ license: Apache-2.0
+ license_family: Apache
+ purls:
+ - pkg:pypi/flatbuffers?source=hash-mapping
+ size: 34827
+ timestamp: 1758880404905
+- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.13-hd8ed1ab_0.conda
+ sha256: 97327b9509ae3aae28d27217a5d7bd31aff0ab61a02041e9c6f98c11d8a53b29
+ md5: 32780d6794b8056b78602103a04e90ef
+ depends:
+ - cpython 3.12.13.*
+ - python_abi * *_cp312
+ license: Python-2.0
+ purls: []
+ size: 46449
+ timestamp: 1772728979370
+- conda: https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.21-pyhbacfb6d_0.conda
+ sha256: b0139f80dea17136451975e4c0fefb5c86893d8b7bc6360626e8b025b8d8003a
+ md5: 606d94da4566aa177df7615d68b29176
+ depends:
+ - graphviz >=2.46.1
+ - python >=3.9
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/graphviz?source=hash-mapping
+ size: 38837
+ timestamp: 1749998558249
+- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda
+ build_number: 8
+ sha256: 80677180dd3c22deb7426ca89d6203f1c7f1f256f2d5a94dc210f6e758229809
+ md5: c3efd25ac4d74b1584d2f7a57195ddf1
+ constrains:
+ - python 3.12.* *_cpython
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 6958
+ timestamp: 1752805918820
+- conda: https://conda.anaconda.org/conda-forge/noarch/pyvista-0.48.2-pyhd8ed1ab_0.conda
+ sha256: 1b888022034b884921c239c0467275f6b4973b65350435a9e323b0795d5f9bfb
+ md5: d90d43289d75931f7be528f8eb4ffe3d
+ depends:
+ - cyclopts >=4.0.0
+ - matplotlib-base >=3.0.1
+ - numpy
+ - pillow
+ - pooch
+ - python >=3.10
+ - scooby >=0.5.1
+ - typing-extensions
+ - vtk-base !=9.4.0,!=9.4.1,<9.7.0
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/pyvista?source=compressed-mapping
+ size: 2259790
+ timestamp: 1778405078289
+- conda: https://conda.anaconda.org/conda-forge/noarch/questionary-2.1.1-pyhd8ed1ab_0.conda
+ sha256: 0604c6dff3af5f53e34fceb985395d08287137f220450108a795bcd1959caf14
+ md5: 34fa231b5c5927684b03bb296bb94ddc
+ depends:
+ - prompt_toolkit >=2.0,<4.0
+ - python >=3.10
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/questionary?source=hash-mapping
+ size: 31257
+ timestamp: 1757356458097
+- conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda
+ sha256: 0577eedfb347ff94d0f2fa6c052c502989b028216996b45c7f21236f25864414
+ md5: 870293df500ca7e18bedefa5838a22ab
+ depends:
+ - attrs >=22.2.0
+ - python >=3.10
+ - rpds-py >=0.7.0
+ - typing_extensions >=4.4.0
+ - python
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/referencing?source=hash-mapping
+ size: 51788
+ timestamp: 1760379115194
+- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.0-pyhcf101f3_0.conda
+ sha256: 4487fdb341537e2df47159ed8e546add99080974c52d5b2dc2a710910619115a
+ md5: a5985537dab1ba7034b5ff4ea22e2fa9
+ depends:
+ - python >=3.10
+ - certifi >=2023.5.7
+ - charset-normalizer >=2,<4
+ - idna >=2.5,<4
+ - urllib3 >=1.26,<3
+ - python
+ constrains:
+ - chardet >=3.0.2,<8
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/requests?source=hash-mapping
+ size: 68658
+ timestamp: 1778534036810
+- conda: https://conda.anaconda.org/conda-forge/noarch/rich-15.0.0-pyhcf101f3_0.conda
+ sha256: 3d6ba2c0fcdac3196ba2f0615b4104e532525ffa1335b50a2878be5ff488814a
+ md5: 0242025a3c804966bf71aa04eee82f66
+ depends:
+ - markdown-it-py >=2.2.0
+ - pygments >=2.13.0,<3.0.0
+ - python >=3.10
+ - typing_extensions >=4.0.0,<5.0.0
+ - python
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/rich?source=hash-mapping
+ size: 208577
+ timestamp: 1775991661559
+- conda: https://conda.anaconda.org/conda-forge/noarch/rich-rst-1.3.2-pyhd8ed1ab_0.conda
+ sha256: 202e90d6624abc924e185166f6fcfdd29c6749ec26d60480a0a34c898c0b67fd
+ md5: cbd84dbdb3f5a7d762b5fb2b0d49e7cd
+ depends:
+ - docutils
+ - python >=3.10
+ - rich >=12.0.0
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/rich-rst?source=hash-mapping
+ size: 18299
+ timestamp: 1760519277784
+- conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-4.1.0-pyhd8ed1ab_0.conda
+ sha256: 30f3c04fcfb64c44d821d392a4a0b8915650dbd900c8befc20ade8fde8ec6aa2
+ md5: 0dc48b4b570931adc8641e55c6c17fe4
+ depends:
+ - python >=3.10
+ license: 0BSD OR CC0-1.0
+ purls:
+ - pkg:pypi/roman-numerals?source=hash-mapping
+ size: 13814
+ timestamp: 1766003022813
+- conda: https://conda.anaconda.org/conda-forge/noarch/ruamel.yaml-0.19.1-pyhcf101f3_0.conda
+ sha256: b48bebe297a63ae60f52e50be328262e880702db4d9b4e86731473ada459c2a1
+ md5: 06ad944772941d5dae1e0d09848d8e49
+ depends:
+ - python >=3.10
+ - ruamel.yaml.clib >=0.2.15
+ - python
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/ruamel-yaml?source=hash-mapping
+ size: 98448
+ timestamp: 1767538149184
+- conda: https://conda.anaconda.org/conda-forge/noarch/salib-1.5.2-pyhd8ed1ab_0.conda
+ sha256: fc971e80731e39b4e09d05430ccb434cf72cb6a98dd6fcd7db806f59d5e87c6e
+ md5: 2b46f618a11ce94c030d371707350991
+ depends:
+ - matplotlib-base
+ - multiprocess
+ - numpy >=2.0
+ - pandas >=1.1.2
+ - pathos >=0.2.5
+ - python >=3.10
+ - scipy >=1.7.3
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/salib?source=hash-mapping
+ size: 663211
+ timestamp: 1760238055106
+- conda: https://conda.anaconda.org/conda-forge/noarch/scikit-fem-12.0.1-pyhd8ed1ab_0.conda
+ sha256: 3021a0de693765ff2d9a591beac2439b2b9b249ce81776df40e0138987d8541f
+ md5: f616a0c02e18879d8b15a72434a29df7
+ depends:
+ - matplotlib
+ - meshio >=4.0.4
+ - numpy
+ - python >=3.10
+ - scipy
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/scikit-fem?source=hash-mapping
+ size: 117108
+ timestamp: 1769671073967
+- conda: https://conda.anaconda.org/conda-forge/noarch/scooby-0.11.2-pyhd8ed1ab_0.conda
+ sha256: f9c82b8e992963b8c61e20536d7009a6675d3136fcdd737dfc6b60e000d57d3f
+ md5: c5b13fecbbd3984f12a70599973c6551
+ depends:
+ - python >=3.10
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/scooby?source=hash-mapping
+ size: 24816
+ timestamp: 1776995060561
+- conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda
+ noarch: python
+ sha256: ea29a69b14dd6be5cdeeaa551bf50d78cafeaf0351e271e358f9b820fcab4cb0
+ md5: 62afb877ca2c2b4b6f9ecb37320085b6
+ depends:
+ - seaborn-base 0.13.2 pyhd8ed1ab_3
+ - statsmodels >=0.12
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 6876
+ timestamp: 1733730113224
+- conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda
+ sha256: f209c9c18187570b85ec06283c72d64b8738f825b1b82178f194f4866877f8aa
+ md5: fd96da444e81f9e6fcaac38590f3dd42
+ depends:
+ - matplotlib-base >=3.4,!=3.6.1
+ - numpy >=1.20,!=1.24.0
+ - pandas >=1.2
+ - python >=3.9
+ - scipy >=1.7
+ constrains:
+ - seaborn =0.13.2=*_3
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/seaborn?source=hash-mapping
+ size: 227843
+ timestamp: 1733730112409
+- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-81.0.0-pyh332efcf_0.conda
+ sha256: 6ecf738d5590bf228f09c4ecd1ea91d811f8e0bd9acdef341bc4d6c36beb13a3
+ md5: d629a398d7bf872f9ed7b27ab959de15
+ depends:
+ - python >=3.10
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/setuptools?source=hash-mapping
+ size: 676888
+ timestamp: 1770456470072
+- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda
+ sha256: 458227f759d5e3fcec5d9b7acce54e10c9e1f4f4b7ec978f3bfd54ce4ee9853d
+ md5: 3339e3b65d58accf4ca4fb8748ab16b3
+ depends:
+ - python >=3.9
+ - python
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/six?source=hash-mapping
+ size: 18455
+ timestamp: 1753199211006
+- conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda
+ sha256: 17007a4cfbc564dc3e7310dcbe4932c6ecb21593d4fec3c68610720f19e73fb2
+ md5: 755cf22df8693aa0d1aec1c123fa5863
+ depends:
+ - python >=3.9
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/snowballstemmer?source=hash-mapping
+ size: 73009
+ timestamp: 1747749529809
+- conda: https://conda.anaconda.org/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://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8.3-pyhd8ed1ab_0.conda
+ sha256: 23b71ecf089967d2900126920e7f9ff18cdcef82dbff3e2f54ffa360243a17ac
+ md5: 18de09b20462742fe093ba39185d9bac
+ depends:
+ - python >=3.10
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/soupsieve?source=hash-mapping
+ size: 38187
+ timestamp: 1769034509657
+- conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-9.1.0-pyhd8ed1ab_0.conda
+ sha256: 035ca4b17afca3d53650380dd94c564555b7ec2b4f8818111f98c15c7a991b7b
+ md5: aabfbc2813712b71ba8beb217a978498
+ depends:
+ - alabaster >=0.7.14
+ - babel >=2.13
+ - colorama >=0.4.6
+ - docutils >=0.21,<0.23
+ - imagesize >=1.3
+ - jinja2 >=3.1
+ - packaging >=23.0
+ - pygments >=2.17
+ - python >=3.12
+ - requests >=2.30.0
+ - roman-numerals >=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: 1584836
+ timestamp: 1767271941650
+- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda
+ sha256: d7433a344a9ad32a680b881c81b0034bc61618d12c39dd6e3309abeffa9577ba
+ md5: 16e3f039c0aa6446513e94ab18a8784b
+ depends:
+ - python >=3.9
+ - sphinx >=5
+ license: BSD-2-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/sphinxcontrib-applehelp?source=hash-mapping
+ size: 29752
+ timestamp: 1733754216334
+- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda
+ sha256: 55d5076005d20b84b20bee7844e686b7e60eb9f683af04492e598a622b12d53d
+ md5: 910f28a05c178feba832f842155cbfff
+ depends:
+ - python >=3.9
+ - sphinx >=5
+ license: BSD-2-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/sphinxcontrib-devhelp?source=hash-mapping
+ size: 24536
+ timestamp: 1733754232002
+- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda
+ sha256: c1492c0262ccf16694bdcd3bb62aa4627878ea8782d5cd3876614ffeb62b3996
+ md5: e9fb3fe8a5b758b4aff187d434f94f03
+ depends:
+ - python >=3.9
+ - sphinx >=5
+ license: BSD-2-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/sphinxcontrib-htmlhelp?source=hash-mapping
+ size: 32895
+ timestamp: 1733754385092
+- conda: https://conda.anaconda.org/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: 10462
+ timestamp: 1733753857224
+- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda
+ sha256: c664fefae4acdb5fae973bdde25836faf451f41d04342b64a358f9a7753c92ca
+ md5: 00534ebcc0375929b45c3039b5ba7636
+ depends:
+ - python >=3.9
+ - sphinx >=5
+ license: BSD-2-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/sphinxcontrib-qthelp?source=hash-mapping
+ size: 26959
+ timestamp: 1733753505008
+- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda
+ sha256: 64d89ecc0264347486971a94487cb8d7c65bfc0176750cf7502b8a272f4ab557
+ md5: 3bc61f7161d28137797e038263c04c54
+ depends:
+ - python >=3.9
+ - sphinx >=5
+ license: BSD-2-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/sphinxcontrib-serializinghtml?source=hash-mapping
+ size: 28669
+ timestamp: 1733750596111
+- conda: https://conda.anaconda.org/conda-forge/noarch/stable-baselines3-2.8.0-pyhd8ed1ab_0.conda
+ sha256: d39227b724ed9a6b6420b017cbdd4e4324a1e0e0a285646683960355b87f9f3c
+ md5: f48306269defdd7294978d1f740dfa3e
+ depends:
+ - cloudpickle
+ - gymnasium >=0.29.1,<1.3.0
+ - matplotlib-base
+ - numpy >=1.20,<3.0
+ - pandas
+ - python >=3.10
+ - pytorch >=2.3,<3.0
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/stable-baselines3?source=hash-mapping
+ size: 126501
+ timestamp: 1775803758824
+- conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda
+ sha256: 570da295d421661af487f1595045760526964f41471021056e993e73089e9c41
+ md5: b1b505328da7a6b246787df4b5a49fbc
+ depends:
+ - asttokens
+ - executing
+ - pure_eval
+ - python >=3.9
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/stack-data?source=hash-mapping
+ size: 26988
+ timestamp: 1733569565672
+- conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.14.0-pyh2585a3b_106.conda
+ sha256: 1c8057e6875eba958aa8b3c1a072dc9a75d013f209c26fd8125a5ebd3abbec0c
+ md5: 32d866e43b25275f61566b9391ccb7b5
+ depends:
+ - __unix
+ - cpython
+ - gmpy2 >=2.0.8
+ - mpmath >=1.1.0,<1.5
+ - python >=3.10
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/sympy?source=hash-mapping
+ size: 4661767
+ timestamp: 1771952371059
+- conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda
+ sha256: c47299fe37aebb0fcf674b3be588e67e4afb86225be4b0d452c7eb75c086b851
+ md5: 13dc3adbc692664cd3beabd216434749
+ depends:
+ - __glibc >=2.28
+ - kernel-headers_linux-64 4.18.0 he073ed8_9
+ - tzdata
+ license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later
+ license_family: GPL
+ purls: []
+ size: 24008591
+ timestamp: 1765578833462
+- conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.10.0-pyhcf101f3_0.conda
+ sha256: 3f661e98a09f976775a494488beb3d35ebb00f535b169c6bd891f2e280d55783
+ md5: 3b887b7b3468b0f494b4fad40178b043
+ depends:
+ - python >=3.10
+ - python
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/tabulate?source=hash-mapping
+ size: 43964
+ timestamp: 1772732795746
+- conda: https://conda.anaconda.org/conda-forge/noarch/tblib-3.2.2-pyhcf101f3_0.conda
+ sha256: 6b549360f687ee4d11bf85a6d6a276a30f9333df1857adb0fe785f0f8e9bcd60
+ md5: f88bb644823094f436792f80fba3207e
+ depends:
+ - python >=3.10
+ - python
+ license: BSD-2-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/tblib?source=hash-mapping
+ size: 19397
+ timestamp: 1762956379123
+- conda: https://conda.anaconda.org/conda-forge/noarch/tensorboard-2.19.0-pyhd8ed1ab_0.conda
+ sha256: 348a60f31eb14fd2e10f00d3c7b5036981b9b2d957cf56b1c9fecbfa6c0782d5
+ md5: 59cc119240f48dc05369fa8bea07ea05
+ depends:
+ - absl-py >=0.4
+ - grpcio >=1.48.2
+ - markdown >=2.6.8
+ - numpy >=1.12.0
+ - packaging
+ - protobuf >=3.19.6,!=4.24.0
+ - python >=3.9
+ - setuptools >=41.0.0
+ - six >1.9
+ - tensorboard-data-server >=0.7.0,<0.8.0
+ - werkzeug >=1.0.1
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/tensorboard?source=hash-mapping
+ size: 5188674
+ timestamp: 1740522550333
+- conda: https://conda.anaconda.org/conda-forge/noarch/tensorflow-probability-0.25.0-pyh8b42bfb_1.conda
+ sha256: 39baf82f0adc46fd8bbfb376dc355a4144c1bf1c361d94d505aaba4c2b345ef2
+ md5: 95886b482047fa2f5e74ef238377a579
+ depends:
+ - absl-py
+ - cloudpickle >=1.3
+ - decorator
+ - dm-tree
+ - gast >=0.3.2
+ - numpy >=1.13.3
+ - python >=3.10
+ - six >=1.10.0
+ constrains:
+ - jax >=0.4.35
+ - tf-keras >=2.18.0
+ - tensorflow-base >=2.18.0
+ - tensorflow-datasets >=2.2.0
+ license: Apache-2.0
+ license_family: Apache
+ purls:
+ - pkg:pypi/tfp-nightly?source=hash-mapping
+ size: 2240747
+ timestamp: 1762338910685
+- conda: https://conda.anaconda.org/conda-forge/noarch/termcolor-3.3.0-pyhd8ed1ab_0.conda
+ sha256: 2107f959cd2a8a804d52e124434088e1a28c843942b62a7f8a3d84072861f0ef
+ md5: bc6228906129e420c74a5ebaf0d63936
+ depends:
+ - python >=3.10
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/termcolor?source=hash-mapping
+ size: 13259
+ timestamp: 1767096412722
+- conda: https://conda.anaconda.org/conda-forge/noarch/testbook-0.4.2-pyhd8ed1ab_1.conda
+ sha256: 9c9118730d41238a91e9866957ab530ebb40dc08404a279a57d97b113e199838
+ md5: 08222f749321b4ca300a2afecdb13e77
+ depends:
+ - nbclient >=0.4.0
+ - nbformat >=5.0.4
+ - python >=3.9
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/testbook?source=hash-mapping
+ size: 16831
+ timestamp: 1736154170462
+- conda: https://conda.anaconda.org/conda-forge/noarch/tf-keras-2.19.0-pyhd8ed1ab_0.conda
+ sha256: f52e5c8ee9e7beb08fb2f4d963ddf15ffb154a68f66749907440189ac26a3293
+ md5: 7798ccb8b8fcf77ad35eb72151791786
+ depends:
+ - numpy >=1.23
+ - python >=3.10
+ - tensorflow >=2.19,<2.20
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/tf-keras?source=hash-mapping
+ size: 912796
+ timestamp: 1773470434035
+- conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda
+ sha256: 6016672e0e72c4cf23c0cf7b1986283bd86a9c17e8d319212d78d8e9ae42fdfd
+ md5: 9d64911b31d57ca443e9f1e36b04385f
+ depends:
+ - python >=3.9
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/threadpoolctl?source=hash-mapping
+ size: 23869
+ timestamp: 1741878358548
+- conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda
+ sha256: cad582d6f978276522f84bd209a5ddac824742fe2d452af6acf900f8650a73a2
+ md5: f1acf5fdefa8300de697982bcb1761c9
+ depends:
+ - python >=3.5
+ - webencodings >=0.4
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/tinycss2?source=hash-mapping
+ size: 28285
+ timestamp: 1729802975370
+- conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda
+ sha256: 91cafdb64268e43e0e10d30bd1bef5af392e69f00edd34dfaf909f69ab2da6bd
+ md5: b5325cf06a000c5b14970462ff5e4d58
+ depends:
+ - python >=3.10
+ - python
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/tomli?source=hash-mapping
+ size: 21561
+ timestamp: 1774492402955
+- conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.15.0-pyha770c72_0.conda
+ sha256: 1cd52f9ccb4854c4d731438afe0e833b6b71edaf5ede661152aa98efb3a7cc70
+ md5: 42ef10a8f7f5d55a2e267c0d5daa6387
+ depends:
+ - python >=3.10
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/tomlkit?source=hash-mapping
+ size: 41169
+ timestamp: 1778423744478
+- conda: https://conda.anaconda.org/conda-forge/noarch/toolz-1.1.0-pyhd8ed1ab_1.conda
+ sha256: 4e379e1c18befb134247f56021fdf18e112fb35e64dd1691858b0a0f3bea9a45
+ md5: c07a6153f8306e45794774cf9b13bd32
+ depends:
+ - python >=3.10
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/toolz?source=hash-mapping
+ size: 53978
+ timestamp: 1760707830681
+- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda
+ sha256: 9ef8e47cf00e4d6dcc114eb32a1504cc18206300572ef14d76634ba29dfe1eb6
+ md5: e5ce43272193b38c2e9037446c1d9206
+ depends:
+ - python >=3.10
+ - __unix
+ - python
+ license: MPL-2.0 and MIT
+ purls:
+ - pkg:pypi/tqdm?source=hash-mapping
+ size: 94132
+ timestamp: 1770153424136
+- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.15.0-pyhcf101f3_0.conda
+ sha256: dfb681579be59c2e790c95f7f49b7529a9b0511d6385ad276e3c8988cbd54d2c
+ md5: 4bada6a6d908a27262af8ebddf4f7492
+ depends:
+ - python >=3.10
+ - python
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/traitlets?source=hash-mapping
+ size: 115165
+ timestamp: 1778074251714
+- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda
+ sha256: 7c2df5721c742c2a47b2c8f960e718c930031663ac1174da67c1ed5999f7938c
+ md5: edd329d7d3a4ab45dcf905899a7a6115
+ depends:
+ - typing_extensions ==4.15.0 pyhcf101f3_0
+ license: PSF-2.0
+ license_family: PSF
+ purls: []
+ size: 91383
+ timestamp: 1756220668932
+- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda
+ sha256: 032271135bca55aeb156cee361c81350c6f3fb203f57d024d7e5a1fc9ef18731
+ md5: 0caa1af407ecff61170c9437a808404d
+ depends:
+ - python >=3.10
+ - python
+ license: PSF-2.0
+ license_family: PSF
+ purls:
+ - pkg:pypi/typing-extensions?source=hash-mapping
+ size: 51692
+ timestamp: 1756220668932
+- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda
+ sha256: 1d30098909076af33a35017eed6f2953af1c769e273a0626a04722ac4acaba3c
+ md5: ad659d0a2b3e47e38d829aa8cad2d610
+ license: LicenseRef-Public-Domain
+ purls: []
+ size: 119135
+ timestamp: 1767016325805
+- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda
+ sha256: feff959a816f7988a0893201aa9727bbb7ee1e9cec2c4f0428269b489eb93fb4
+ md5: cbb88288f74dbe6ada1c6c7d0a97223e
+ depends:
+ - backports.zstd >=1.0.0
+ - brotli-python >=1.2.0
+ - h2 >=4,<5
+ - pysocks >=1.5.6,<2.0,!=1.5.7
+ - python >=3.10
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/urllib3?source=hash-mapping
+ size: 103560
+ timestamp: 1778188657149
+- conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.3.2-pyhcf101f3_0.conda
+ sha256: 087716b31239125800be5a78033e2015a59ade164dafdcd4bea232096928394a
+ md5: 8c59af2e72a3660082705902fa6ab23b
+ depends:
+ - python >=3.10
+ - distlib >=0.3.7,<1
+ - filelock <4,>=3.24.2
+ - importlib-metadata >=6.6
+ - platformdirs >=3.9.1,<5
+ - python-discovery >=1
+ - typing_extensions >=4.13.2
+ - python
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/virtualenv?source=compressed-mapping
+ size: 5154898
+ timestamp: 1778616159099
+- conda: https://conda.anaconda.org/conda-forge/noarch/wayland-protocols-1.47-hd8ed1ab_0.conda
+ sha256: 9ab2c12053ea8984228dd573114ffc6d63df42c501d59fda3bf3aeb1eaa1d23e
+ md5: 7da1571f560d4ba3343f7f4c48a79c76
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 140476
+ timestamp: 1765821981856
+- conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.7.0-pyhd8ed1ab_0.conda
+ sha256: 1ee2d8384972ecbf8630ce8a3ea9d16858358ad3e8566675295e66996d5352da
+ md5: eb9538b8e55069434a18547f43b96059
+ depends:
+ - python >=3.10
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/wcwidth?source=hash-mapping
+ size: 82917
+ timestamp: 1777744489106
+- conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda
+ sha256: 19ff205e138bb056a46f9e3839935a2e60bd1cf01c8241a5e172a422fed4f9c6
+ md5: 2841eb5bfc75ce15e9a0054b98dcd64d
+ depends:
+ - python >=3.9
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/webencodings?source=hash-mapping
+ size: 15496
+ timestamp: 1733236131358
+- conda: https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.1.8-pyhcf101f3_0.conda
+ sha256: 5108c1bf2f0512e5c9dc8191e31b144c23b7cf0e73423a246173006002368d79
+ md5: 3eeca039e7316268627f4116da9df64c
+ depends:
+ - markupsafe >=2.1.1
+ - python >=3.10
+ - python
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/werkzeug?source=hash-mapping
+ size: 258232
+ timestamp: 1775160081069
+- conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.47.0-pyhd8ed1ab_0.conda
+ sha256: 9e156ffaefb8463437144326ada4b85d1de17961b9997ac5f1cbbaf747bd8bed
+ md5: d0e3b2f0030cf4fca58bde71d246e94c
+ depends:
+ - packaging >=24.0
+ - python >=3.10
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/wheel?source=hash-mapping
+ size: 33491
+ timestamp: 1776878563806
+- conda: https://conda.anaconda.org/conda-forge/noarch/wslink-2.5.6-pyhd8ed1ab_0.conda
+ sha256: 0754558be231485ee835b0db11bace246ecd5465143a355029b039803ea716b0
+ md5: d34454e27bb9ec7025cefccfa92908ad
+ depends:
+ - aiohttp <4
+ - msgpack-python >=1,<2
+ - python >=3.10
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/wslink?source=hash-mapping
+ size: 36729
+ timestamp: 1773305846931
+- conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2026.4.0-pyhc364b38_0.conda
+ sha256: 9f5f5905afea6e0188aa6887aed0809033143343a7af06983f4b390c2286d2d7
+ md5: 099794df685f800c3f319ff4742dc1bb
+ depends:
+ - python >=3.11
+ - numpy >=1.26
+ - packaging >=24.2
+ - pandas >=2.2
+ - python
+ constrains:
+ - bottleneck >=1.4
+ - cartopy >=0.23
+ - cftime >=1.6
+ - dask-core >=2024.6
+ - distributed >=2024.6
+ - flox >=0.9
+ - h5netcdf >=1.3
+ - h5py >=3.11
+ - hdf5 >=1.14
+ - iris >=3.9
+ - matplotlib-base >=3.8
+ - nc-time-axis >=1.4
+ - netcdf4 >=1.6.0
+ - numba >=0.60
+ - numbagg >=0.8
+ - pint >=0.24
+ - pydap >=3.5.0
+ - scipy >=1.13
+ - seaborn-base >=0.13
+ - sparse >=0.15
+ - toolz >=0.12
+ - zarr >=2.18
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/xarray?source=hash-mapping
+ size: 1017999
+ timestamp: 1776122774298
+- conda: https://conda.anaconda.org/conda-forge/noarch/xarray-einstats-0.10.0-pyhd8ed1ab_0.conda
+ sha256: 02943091700f860bc3fc117deabe5fd609ed7bae64fd97da2f70241167c2719d
+ md5: b82273c95432c78efe98f14cbc46be7d
+ depends:
+ - numpy >=2.0
+ - python >=3.12
+ - scipy >=1.13
+ - xarray >=2024.02.0
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/xarray-einstats?source=hash-mapping
+ size: 38256
+ timestamp: 1771933879255
+- conda: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2026.3.0-pyhd8ed1ab_0.conda
+ sha256: 663ea9b00d68c2da309114923924686ab6d3f59ef1b196c5029ba16799e7bb07
+ md5: 4487b9c371d0161d54b5c7bbd890c0fc
+ depends:
+ - python >=3.9
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/xyzservices?source=hash-mapping
+ size: 51732
+ timestamp: 1774900074457
+- conda: https://conda.anaconda.org/conda-forge/noarch/yamllint-1.38.0-pyhcf101f3_1.conda
+ sha256: 7f5bcc0f059c607ccd65fa1b82d8b369c2598a6e86c31f7a4995bc2f2753e2eb
+ md5: db30cb6c0910cc35e35d3955cf373df2
+ depends:
+ - pathspec >=1.0.0
+ - python >=3.10
+ - pyyaml
+ - python
+ license: GPL-3.0-or-later
+ license_family: GPL
+ purls:
+ - pkg:pypi/yamllint?source=hash-mapping
+ size: 111901
+ timestamp: 1770937575481
+- conda: https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda
+ sha256: 5488542dceeb9f2874e726646548ecc5608060934d6f9ceaa7c6a48c61f9cc8d
+ md5: e52c2ef711ccf31bb7f70ca87d144b9e
+ depends:
+ - python >=3.9
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/zict?source=hash-mapping
+ size: 36341
+ timestamp: 1733261642963
+- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.1-pyhcf101f3_0.conda
+ sha256: 523616c0530d305d2216c2b4a8dfd3872628b60083255b89c5e0d8c42e738cca
+ md5: e1c36c6121a7c9c76f2f148f1e83b983
+ depends:
+ - python >=3.10
+ - python
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/zipp?source=hash-mapping
+ size: 24461
+ timestamp: 1776131454755
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/_openmp_mutex-4.5-7_kmp_llvm.conda
+ build_number: 7
+ sha256: 7acaa2e0782cad032bdaf756b536874346ac1375745fb250e9bdd6a48a7ab3cd
+ md5: a44032f282e7d2acdeb1c240308052dd
+ depends:
+ - llvm-openmp >=9.0.1
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 8325
+ timestamp: 1764092507920
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.13.5-py312h9f8c436_0.conda
+ sha256: 11b13962c9c9a4edc831876f448a908ca6b62cf3f71bd5f0f33387f4d8a7955c
+ md5: 99fe4bfba47fd1304c087922a3d0e0f8
+ depends:
+ - __osx >=11.0
+ - aiohappyeyeballs >=2.5.0
+ - aiosignal >=1.4.0
+ - attrs >=17.3.0
+ - frozenlist >=1.1.1
+ - multidict >=4.5,<7.0
+ - propcache >=0.2.0
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ - yarl >=1.17.0,<2.0
+ license: MIT AND Apache-2.0
+ license_family: Apache
+ purls:
+ - pkg:pypi/aiohttp?source=hash-mapping
+ size: 1001884
+ timestamp: 1774999993903
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda
+ sha256: ec238f18ce8140485645252351a0eca9ef4f7a1c568a420f240a585229bc12ef
+ md5: 7adba36492a1bb22d98ffffe4f6fc6de
+ depends:
+ - __osx >=11.0
+ - libcxx >=16
+ license: BSD-2-Clause
+ license_family: BSD
+ purls: []
+ size: 2235747
+ timestamp: 1718551382432
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/astroid-4.0.4-py312h81bd7bf_0.conda
+ sha256: a4b8f314e2ced66f99d7d5948d3e481f24f336be0db64e6417f6bb9aa0df5fb3
+ md5: 6d1f4744a6b483b7738b60f4cd508a20
+ depends:
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ license: LGPL-2.1-or-later
+ license_family: LGPL
+ purls:
+ - pkg:pypi/astroid?source=hash-mapping
+ size: 509900
+ timestamp: 1770634914230
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda
+ sha256: b0747f9b1bc03d1932b4d8c586f39a35ac97e7e72fe6e63f2b2a2472d466f3c1
+ md5: 57301986d02d30d6805fdce6c99074ee
+ depends:
+ - __osx >=11.0
+ - libcxx >=16
+ - libglib >=2.80.0,<3.0a0
+ - libintl >=0.22.5,<1.0a0
+ constrains:
+ - atk-1.0 2.38.0
+ license: LGPL-2.0-or-later
+ license_family: LGPL
+ purls: []
+ size: 347530
+ timestamp: 1713896411580
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.10.1-ha7d4cc1_3.conda
+ sha256: ce023981f49a96074bc84d6249c7097b71c27e8d3bd750fc07c520579159521c
+ md5: 4fbd86a4d1efeb954b0d559d6717bd2b
+ depends:
+ - __osx >=11.0
+ - aws-c-http >=0.10.13,<0.10.14.0a0
+ - aws-c-io >=0.26.3,<0.26.4.0a0
+ - aws-c-common >=0.12.6,<0.12.7.0a0
+ - aws-c-sdkutils >=0.2.4,<0.2.5.0a0
+ - aws-c-cal >=0.9.13,<0.9.14.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 116717
+ timestamp: 1777489477698
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.9.13-h6ee9776_1.conda
+ sha256: 13c42cb54619df0a1c3e5e5b0f7c8e575460b689084024fd23abeb443aac391b
+ md5: 8baab664c541d6f059e83423d9fc5e30
+ depends:
+ - __osx >=11.0
+ - aws-c-common >=0.12.6,<0.12.7.0a0
+ license: Apache-2.0
+ license_family: Apache
+ purls: []
+ size: 45233
+ timestamp: 1764593742187
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.12.6-hc919400_0.conda
+ sha256: cd3817c82470826167b1d8008485676862640cff65750c34062e6c20aeac419b
+ md5: b759f02a7fa946ea9fd9fb035422c848
+ depends:
+ - __osx >=11.0
+ license: Apache-2.0
+ license_family: Apache
+ purls: []
+ size: 224116
+ timestamp: 1763585987935
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.2-h3e7f9b5_0.conda
+ sha256: ce405171612acef0924a1ff9729d556db7936ad380a81a36325b7df5405a6214
+ md5: 6edccad10fc1c76a7a34b9c14efbeaa3
+ depends:
+ - __osx >=11.0
+ - aws-c-common >=0.12.6,<0.12.7.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 21470
+ timestamp: 1767790900862
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.7.0-h351c84d_0.conda
+ sha256: 454c02593d88246ac0fd4fc5e306147dd4f6c4866931c436ddeccdb37a70250f
+ md5: cb6d3b9905ffa47de2628e1ba9666c33
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - aws-c-io >=0.26.3,<0.26.4.0a0
+ - aws-c-common >=0.12.6,<0.12.7.0a0
+ - aws-checksums >=0.2.10,<0.2.11.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 53822
+ timestamp: 1774480046539
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.10.13-h95cdebe_0.conda
+ sha256: 7a008a5a2f76256e841a8565b373a7dcfd2a439e5d9dbec320322468637f69e5
+ md5: fc4478bc51e76c5d26ea2c4f1e3ba366
+ depends:
+ - __osx >=11.0
+ - aws-c-cal >=0.9.13,<0.9.14.0a0
+ - aws-c-compression >=0.3.2,<0.3.3.0a0
+ - aws-c-io >=0.26.3,<0.26.4.0a0
+ - aws-c-common >=0.12.6,<0.12.7.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 173575
+ timestamp: 1774488444724
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.26.3-h4137820_1.conda
+ sha256: e03ce71af986541d79fae88f7636d7a252b215d4560b47f005050dc9e1dc3c11
+ md5: af3d15f053619ca43ea0943de01d368b
+ depends:
+ - __osx >=11.0
+ - aws-c-common >=0.12.6,<0.12.7.0a0
+ - aws-c-cal >=0.9.13,<0.9.14.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 176967
+ timestamp: 1777471210683
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.15.2-h8860bc9_2.conda
+ sha256: 19a97f5d06ef994d7f48e77de3f998cc0a72d750d9363f2ba3894234c7bc799e
+ md5: 826c667323e95b2af0223641c69f327c
+ depends:
+ - __osx >=11.0
+ - aws-c-io >=0.26.3,<0.26.4.0a0
+ - aws-c-http >=0.10.13,<0.10.14.0a0
+ - aws-c-common >=0.12.6,<0.12.7.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 156329
+ timestamp: 1777488187414
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.12.2-h07b101a_1.conda
+ sha256: 236b4acfc8b0757e427087b53ebaf090190d106a7e73b6b1e8f80388988e89ac
+ md5: 7a520ebd6ae9efe641cb207b650d004c
+ depends:
+ - __osx >=11.0
+ - aws-c-common >=0.12.6,<0.12.7.0a0
+ - aws-c-http >=0.10.13,<0.10.14.0a0
+ - aws-c-cal >=0.9.13,<0.9.14.0a0
+ - aws-c-auth >=0.10.1,<0.10.2.0a0
+ - aws-c-io >=0.26.3,<0.26.4.0a0
+ - aws-checksums >=0.2.10,<0.2.11.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 131374
+ timestamp: 1777824889044
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.4-h16f91aa_4.conda
+ sha256: 8a4ee03ea6e14d5a498657e5fe96875a133b4263b910c5b60176db1a1a0aaa27
+ md5: 658a8236f3f1ebecaaa937b5ccd5d730
+ depends:
+ - __osx >=11.0
+ - aws-c-common >=0.12.6,<0.12.7.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 53430
+ timestamp: 1764755714246
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.10-h3e7f9b5_0.conda
+ sha256: 06661bc848b27aa38a85d8018ace8d4f4a3069e22fa0963e2431dc6c0dc30450
+ md5: 07f6c5a5238f5deeed6e985826b30de8
+ depends:
+ - __osx >=11.0
+ - aws-c-common >=0.12.6,<0.12.7.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 91917
+ timestamp: 1771063496505
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.38.3-hba17502_1.conda
+ sha256: 917ca9bcd9271a55be1c39dc1b07ce2e6c268c1fd507750d86138d98f708724a
+ md5: 40aa7f64708aef33749bcedd53d04d2e
+ depends:
+ - libcxx >=19
+ - __osx >=11.0
+ - aws-c-auth >=0.10.1,<0.10.2.0a0
+ - aws-c-event-stream >=0.7.0,<0.7.1.0a0
+ - aws-c-sdkutils >=0.2.4,<0.2.5.0a0
+ - aws-c-common >=0.12.6,<0.12.7.0a0
+ - aws-c-cal >=0.9.13,<0.9.14.0a0
+ - aws-c-http >=0.10.13,<0.10.14.0a0
+ - aws-c-io >=0.26.3,<0.26.4.0a0
+ - aws-c-s3 >=0.12.2,<0.12.3.0a0
+ - aws-c-mqtt >=0.15.2,<0.15.3.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 271073
+ timestamp: 1778019218424
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.747-h30a6df1_4.conda
+ sha256: 29c21176bc47051ed20db066dc4917b1c9d8e209f936a1737998755061ee133f
+ md5: 45bb0d0e776ed7cd12597710058c2d50
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - aws-crt-cpp >=0.38.3,<0.38.4.0a0
+ - libcurl >=8.20.0,<9.0a0
+ - libzlib >=1.3.2,<2.0a0
+ - aws-c-event-stream >=0.7.0,<0.7.1.0a0
+ - aws-c-common >=0.12.6,<0.12.7.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 3261086
+ timestamp: 1778156290937
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.16.2-he5ae378_0.conda
+ sha256: d9a04af33d9200fcd9f6c954e2a882c5ac78af4b82025623e59cb7f7e590b451
+ md5: 7efe92d28599c224a24de11bb14d395e
+ depends:
+ - __osx >=11.0
+ - libcurl >=8.18.0,<9.0a0
+ - libcxx >=19
+ - openssl >=3.5.4,<4.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 290928
+ timestamp: 1768837810218
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.13.3-h810541e_1.conda
+ sha256: 428fa73808a688a252639080b6751953ad7ecd8a4cbd8f23147b954d6902b31b
+ md5: ca46cc84466b5e05f15a4c4f263b6e80
+ depends:
+ - __osx >=11.0
+ - azure-core-cpp >=1.16.2,<1.16.3.0a0
+ - libcxx >=19
+ - openssl >=3.5.5,<4.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 167424
+ timestamp: 1770345338067
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.16.0-hc57151b_1.conda
+ sha256: 9de2f050a49597e5b98b59bf90880e00bfdff79a3afbb18828565c3a645d62d6
+ md5: f08b3b9d7333dc427b79897e6e3e7f29
+ depends:
+ - __osx >=11.0
+ - azure-core-cpp >=1.16.2,<1.16.3.0a0
+ - azure-storage-common-cpp >=12.12.0,<12.12.1.0a0
+ - libcxx >=19
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 426735
+ timestamp: 1770322058844
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.12.0-he467506_1.conda
+ sha256: 541be427e681d129c8722e81548d2e51c4b1a817f88333f3fbb3dcdef7eacafb
+ md5: b658a3fb0fc412b2a4d30da3fcec036f
+ depends:
+ - __osx >=11.0
+ - azure-core-cpp >=1.16.2,<1.16.3.0a0
+ - libcxx >=19
+ - libxml2
+ - libxml2-16 >=2.14.6
+ - openssl >=3.5.5,<4.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 121500
+ timestamp: 1770240531430
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.14.0-hf8a9d22_1.conda
+ sha256: 1891df88b68768bc042ea766c1be279bff0fdaf471470bfa3fa599284dbd0975
+ md5: 601ac4f945ba078955557edf743f1f78
+ depends:
+ - __osx >=11.0
+ - azure-core-cpp >=1.16.2,<1.16.3.0a0
+ - azure-storage-blobs-cpp >=12.16.0,<12.16.1.0a0
+ - azure-storage-common-cpp >=12.12.0,<12.12.1.0a0
+ - libcxx >=19
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 198153
+ timestamp: 1770384528646
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/backports.zstd-1.5.0-py312h87c4bb7_0.conda
+ sha256: a492dcf07b1c58797b3192f11aef7e3beb18ec91646d6a5acfe5c6e61e66118d
+ md5: 6ec306e02579965dc9c01092a5f4ce4c
+ depends:
+ - python
+ - __osx >=11.0
+ - zstd >=1.5.7,<1.6.0a0
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause AND MIT AND EPL-2.0
+ purls:
+ - pkg:pypi/backports-zstd?source=compressed-mapping
+ size: 240840
+ timestamp: 1778594074672
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bcrypt-5.0.0-py312h6ef9ec0_1.conda
+ sha256: f93cb3d56e002e0c2a8e37a4a8c555aaacf2e1eeee751bd838d9f2f58b2446c4
+ md5: 93bc90afdb07688a2ff63fbd11950033
+ depends:
+ - python
+ - __osx >=11.0
+ - python 3.12.* *_cpython
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - __osx >=11.0
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/bcrypt?source=hash-mapping
+ size: 267217
+ timestamp: 1762497792005
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/blas-2.307-accelerate.conda
+ build_number: 7
+ sha256: 9fd953a26fbbbe833e174a9a130521d3455c0d9ae560c2c76264098fe81b1dca
+ md5: 671f3e508a42a0a1f962354e7a635bc2
+ depends:
+ - blas-devel 3.11.0 7*_accelerate
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 19150
+ timestamp: 1778490017653
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/blas-devel-3.11.0-7_h55bc449_accelerate.conda
+ build_number: 7
+ sha256: 7791d19638bd2bae1395c0f0d2cba444489caaf8266e274c03b1cb300a84d487
+ md5: 0b334b13525ef443af35642e18f9284a
+ depends:
+ - libblas 3.11.0 7_h3d1d584_accelerate
+ - libcblas 3.11.0 7_h752f6bc_accelerate
+ - liblapack 3.11.0 7_hcb0d94e_accelerate
+ - liblapacke 3.11.0 7_hbdd07e9_accelerate
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 18423
+ timestamp: 1778489995129
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/blosc-1.21.6-h7dd00d9_1.conda
+ sha256: c3fe902114b9a3ac837e1a32408cc2142c147ec054c1038d37aec6814343f48a
+ md5: 925acfb50a750aa178f7a0aced77f351
+ depends:
+ - __osx >=11.0
+ - libcxx >=18
+ - libzlib >=1.3.1,<2.0a0
+ - lz4-c >=1.10.0,<1.11.0a0
+ - snappy >=1.2.1,<1.3.0a0
+ - zstd >=1.5.6,<1.6.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 33602
+ timestamp: 1733513285902
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.2.0-h7d5ae5b_1.conda
+ sha256: 422ac5c91f8ef07017c594d9135b7ae068157393d2a119b1908c7e350938579d
+ md5: 48ece20aa479be6ac9a284772827d00c
+ depends:
+ - __osx >=11.0
+ - brotli-bin 1.2.0 hc919400_1
+ - libbrotlidec 1.2.0 hc919400_1
+ - libbrotlienc 1.2.0 hc919400_1
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 20237
+ timestamp: 1764018058424
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.2.0-hc919400_1.conda
+ sha256: e2d142052a83ff2e8eab3fe68b9079cad80d109696dc063a3f92275802341640
+ md5: 377d015c103ad7f3371be1777f8b584c
+ depends:
+ - __osx >=11.0
+ - libbrotlidec 1.2.0 hc919400_1
+ - libbrotlienc 1.2.0 hc919400_1
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 18628
+ timestamp: 1764018033635
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.2.0-py312h0dfefe5_1.conda
+ sha256: 6178775a86579d5e8eec6a7ab316c24f1355f6c6ccbe84bb341f342f1eda2440
+ md5: 311fcf3f6a8c4eb70f912798035edd35
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - libbrotlicommon 1.2.0 hc919400_1
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/brotli?source=hash-mapping
+ size: 359503
+ timestamp: 1764018572368
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_9.conda
+ sha256: 540fe54be35fac0c17feefbdc3e29725cce05d7367ffedfaaa1bdda234b019df
+ md5: 620b85a3f45526a8bc4d23fd78fc22f0
+ depends:
+ - __osx >=11.0
+ license: bzip2-1.0.6
+ license_family: BSD
+ purls: []
+ size: 124834
+ timestamp: 1771350416561
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.6-hc919400_0.conda
+ sha256: 2995f2aed4e53725e5efbc28199b46bf311c3cab2648fc4f10c2227d6d5fa196
+ md5: bcb3cba70cf1eec964a03b4ba7775f01
+ depends:
+ - __osx >=11.0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 180327
+ timestamp: 1765215064054
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-he0f2337_1.conda
+ sha256: cde9b79ee206fe3ba6ca2dc5906593fb7a1350515f85b2a1135a4ce8ec1539e3
+ md5: 36200ecfbbfbcb82063c87725434161f
+ depends:
+ - __osx >=11.0
+ - fontconfig >=2.15.0,<3.0a0
+ - fonts-conda-ecosystem
+ - icu >=78.1,<79.0a0
+ - libcxx >=19
+ - libexpat >=2.7.3,<3.0a0
+ - libfreetype >=2.14.1
+ - libfreetype6 >=2.14.1
+ - libglib >=2.86.3,<3.0a0
+ - libpng >=1.6.53,<1.7.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - pixman >=0.46.4,<1.0a0
+ license: LGPL-2.1-only or MPL-1.1
+ purls: []
+ size: 900035
+ timestamp: 1766416416791
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools-1030.6.3-llvm22_1_hbe26303_4.conda
+ sha256: a8d8f9a6ae4c149d2174f8f52c61da079cc793b87e2f76441a43daf7f394631f
+ md5: aea08dd508f71d6ca3cfa4e8694e7953
+ depends:
+ - cctools_impl_osx-arm64 1030.6.3 llvm22_1_hb5e89dc_4
+ - ld64 956.6 llvm22_1_h5b97f1b_4
+ - libllvm22 >=22.1.0,<22.2.0a0
+ license: APSL-2.0
+ license_family: Other
+ purls: []
+ size: 24551
+ timestamp: 1772019751097
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_impl_osx-arm64-1030.6.3-llvm22_1_hb5e89dc_4.conda
+ sha256: 97075a1afeac8a7a4dca258ac10efb70638e3c734cbf5a6328ca1e0718e09c41
+ md5: 97768bb89683757d7e535f9b7dcba39d
+ depends:
+ - __osx >=11.0
+ - ld64_osx-arm64 >=956.6,<956.7.0a0
+ - libcxx
+ - libllvm22 >=22.1.0,<22.2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - llvm-tools 22.1.*
+ - sigtool-codesign
+ constrains:
+ - clang 22.1.*
+ - ld64 956.6.*
+ - cctools 1030.6.3.*
+ license: APSL-2.0
+ license_family: Other
+ purls: []
+ size: 749166
+ timestamp: 1772019681419
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-2.0.0-py312h1b4d9a2_1.conda
+ sha256: 597e986ac1a1bd1c9b29d6850e1cdea4a075ce8292af55568952ec670e7dd358
+ md5: 503ac138ad3cfc09459738c0f5750705
+ depends:
+ - __osx >=11.0
+ - libffi >=3.5.2,<3.6.0a0
+ - pycparser
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/cffi?source=hash-mapping
+ size: 288080
+ timestamp: 1761203317419
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cftime-1.6.5-py312hf57c059_1.conda
+ sha256: 80bb769852c90c763cdb90e55a9f2a392164de907a6df579cc8b94bff85d0158
+ md5: bd54402123a03de02e03c509597c635b
+ depends:
+ - __osx >=11.0
+ - numpy >=1.21.2
+ - numpy >=1.23,<3
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/cftime?source=hash-mapping
+ size: 387077
+ timestamp: 1768511266483
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-22-22.1.5-default_hd632d02_1.conda
+ sha256: 661be9d7e197ac2eeeff52a18f5e2c385497fb523fd91a3e50cf62c792ce3d06
+ md5: d440f7fc2d44b55cd806e5a033dcf0a1
+ depends:
+ - __osx >=11.0
+ - compiler-rt22 22.1.5.*
+ - libclang-cpp22.1 22.1.5 default_h8e162e0_1
+ - libcxx >=22.1.5
+ - libllvm22 >=22.1.5,<22.2.0a0
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
+ purls: []
+ size: 825331
+ timestamp: 1778476335771
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-22.1.5-default_cfg_hb78b91e_1.conda
+ sha256: 7861600cd2506d2945c4254c089fe1083b4643146b93f98df58e4dc8d5bbf586
+ md5: df62aad1251047d963da339efbc495ad
+ depends:
+ - cctools
+ - clang-22 22.1.5 default_hd632d02_1
+ - clang_impl_osx-arm64 22.1.5 default_h17d1ed9_1
+ - ld64
+ - ld64_osx-arm64 * llvm22_1_*
+ - llvm-openmp >=22.1.5
+ - llvm-tools 22.1.5.*
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
+ purls: []
+ size: 28682
+ timestamp: 1778476413617
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-scan-deps-22.1.5-default_h8e162e0_1.conda
+ sha256: 1348683f1bb903e9a63e3ad003e2530291884fd7a3127f695ea622f86effa32c
+ md5: ff91dfd45cffd50b06d22d7df575821e
+ depends:
+ - __osx >=11.0
+ - libclang-cpp22.1 >=22.1.5,<22.2.0a0
+ - libclang13 >=22.1.5
+ - libcxx >=22.1.5
+ - libllvm22 >=22.1.5,<22.2.0a0
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
+ purls: []
+ size: 102846
+ timestamp: 1778476581308
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_impl_osx-arm64-22.1.5-default_h17d1ed9_1.conda
+ sha256: 05a2d99ba55f4b401c11a750fac9bee879b3f09a16c1df2415836c46c9fd629f
+ md5: 743068a5a4061084f22a5f8b6675a3e8
+ depends:
+ - cctools_impl_osx-arm64
+ - clang-22 22.1.5 default_hd632d02_1
+ - compiler-rt 22.1.5.*
+ - compiler-rt_osx-arm64
+ - ld64_osx-arm64 * llvm22_1_*
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
+ purls: []
+ size: 28091
+ timestamp: 1778476400908
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx-22.1.5-default_cfg_h76039ee_1.conda
+ sha256: 1f0bf998f0c819c58524e73732c1032f16a96528bd7c4ffd2f1c06047fd10a0e
+ md5: 613b4558ecec63d30af7fd947b5e07fb
+ depends:
+ - clang 22.1.5 default_cfg_hb78b91e_1
+ - clangxx_impl_osx-arm64 22.1.5 default_h17d1ed9_1
+ - libcxx-devel 22.1.*
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
+ purls: []
+ size: 28392
+ timestamp: 1778476613862
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_impl_osx-arm64-22.1.5-default_h17d1ed9_1.conda
+ sha256: adfc5fa04aecf4a5229d4975bf375aa0cb9f82c7264d45ddab6b4b58443b6718
+ md5: c557ba34549e137502e0a59b8715d730
+ depends:
+ - clang-22 22.1.5 default_hd632d02_1
+ - clang-scan-deps 22.1.5 default_h8e162e0_1
+ - clang_impl_osx-arm64 22.1.5 default_h17d1ed9_1
+ - libcxx-devel 22.1.*
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
+ purls: []
+ size: 28111
+ timestamp: 1778476592829
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cli11-2.6.2-h784d473_0.conda
+ sha256: f89ec6763a27e7c33a60ff193478cb48be8416adddd05d72f012401e2ef1ae01
+ md5: d7fa57f42bc657a10352a044daa141e2
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 100635
+ timestamp: 1772207835581
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/commitizen-4.15.1-py312h81bd7bf_0.conda
+ sha256: a5610b00b86ee67d8b66b24c91f7b157188cf5ed5d603ab850eea7168c8144da
+ md5: 505ff88c8bdeae6a2dc6339327c54eda
+ depends:
+ - argcomplete <3.7,>=1.12.1
+ - charset-normalizer <4,>=2.1.0
+ - colorama <1.0,>=0.4.1
+ - decli <1.0,>=0.6.0
+ - deprecated <2,>=1.2.13
+ - jinja2 >=2.10.3
+ - packaging >=26
+ - prompt-toolkit !=3.0.52
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ - pyyaml >=3.8
+ - questionary <3.0,>=2.0
+ - termcolor <4.0.0,>=1.1.0
+ - tomlkit <1.0.0,>=0.8.0
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/commitizen?source=hash-mapping
+ size: 163210
+ timestamp: 1778096010824
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/compiler-rt-22.1.5-hce30654_1.conda
+ sha256: a442d55ea02f8615e74b3763b3621598fe432f973bcd6f4cf876704d7e854203
+ md5: 98d56b1f4f0ded3a5fc68a22f7b168cc
+ depends:
+ - compiler-rt22 22.1.5 hd34ed20_1
+ - libcompiler-rt 22.1.5 hd34ed20_1
+ constrains:
+ - clang 22.1.5
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: APACHE
+ purls: []
+ size: 16462
+ timestamp: 1778193616563
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/compiler-rt22-22.1.5-hd34ed20_1.conda
+ sha256: 96478509ecb21e4882034351565f756fcc15f7200032539d37baba9bd290c3e5
+ md5: 211e29460c00fa540f34f7710d01c2d4
+ depends:
+ - __osx >=11.0
+ - compiler-rt22_osx-arm64 22.1.5.*
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: APACHE
+ purls: []
+ size: 99528
+ timestamp: 1778193615341
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.3.3-py312h3093aea_4.conda
+ sha256: fa1b3967c644c1ffaf8beba3d7aee2301a8db32c0e9a56649a0e496cf3abd27c
+ md5: f9cce0bc86b46533489a994a47d3c7d2
+ depends:
+ - numpy >=1.25
+ - python
+ - python 3.12.* *_cpython
+ - __osx >=11.0
+ - libcxx >=19
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/contourpy?source=hash-mapping
+ size: 286084
+ timestamp: 1769156157865
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.14.0-py312h04c11ed_0.conda
+ sha256: f96b3c7ebd947defc940cb53c6cb508b8e53db7e21e30426e154a0b69f528192
+ md5: 7568d1be300c1b10faac484fdf425241
+ depends:
+ - __osx >=11.0
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ - tomli
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/coverage?source=hash-mapping
+ size: 389749
+ timestamp: 1778445251509
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-48.0.0-py312h1238841_0.conda
+ sha256: f2560a639d9f67c53f495d75289a63b840744be04669dc949afb0e694f971fdb
+ md5: 7a4c2757d53e6a36c45f0eeaf50dac34
+ depends:
+ - __osx >=11.0
+ - cffi >=2.0
+ - openssl >=3.5.6,<4.0a0
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - __osx >=11.0
+ license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT
+ license_family: BSD
+ purls:
+ - pkg:pypi/cryptography?source=hash-mapping
+ size: 1853060
+ timestamp: 1777966201485
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cyrus-sasl-2.1.28-hb961e35_1.conda
+ sha256: 2bb1a8cfc2534b05718c21ffacd806c5c3d5289c9e8be12270d9fc5606c859bf
+ md5: 784c64a42b083798c5acd2373df5b825
+ depends:
+ - __osx >=11.0
+ - krb5 >=1.22.2,<1.23.0a0
+ - libcxx >=19
+ - libntlm >=1.8,<2.0a0
+ - openssl >=3.5.5,<4.0a0
+ license: BSD-3-Clause-Attribution
+ license_family: BSD
+ purls: []
+ size: 194397
+ timestamp: 1771943557428
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cytoolz-1.1.0-py312h2bbb03f_2.conda
+ sha256: be8d2bf477d0bf8d19a7916c2ceccef33cbfecf918508c18b89098aa7b20017e
+ md5: 49389c14c49a416f458ce91491f62c67
+ depends:
+ - __osx >=11.0
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ - toolz >=0.10.0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/cytoolz?source=hash-mapping
+ size: 591797
+ timestamp: 1771856474133
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda
+ sha256: 93e077b880a85baec8227e8c72199220c7f87849ad32d02c14fb3807368260b8
+ md5: 5a74cdee497e6b65173e10d94582fae6
+ license: BSD-2-Clause
+ license_family: BSD
+ purls: []
+ size: 316394
+ timestamp: 1685695959391
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/dbus-1.16.2-h3ff7a7c_1.conda
+ sha256: a8207751ed261764061866880da38e4d3063e167178bfe85b6db9501432462ba
+ md5: 5a3506971d2d53023c1c4450e908a8da
+ depends:
+ - libcxx >=19
+ - __osx >=11.0
+ - libglib >=2.86.2,<3.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - libexpat >=2.7.3,<3.0a0
+ license: AFL-2.1 OR GPL-2.0-or-later
+ purls: []
+ size: 393811
+ timestamp: 1764536084131
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.20-py312h6510ced_0.conda
+ sha256: f0ca130b5ffd6949673d3c61d7b8562ab76ad8debafb83f8b3443d30c172f5eb
+ md5: da3b5efcb0caabcede61a6ce4e0a7669
+ depends:
+ - python
+ - __osx >=11.0
+ - python 3.12.* *_cpython
+ - libcxx >=19
+ - python_abi 3.12.* *_cp312
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/debugpy?source=hash-mapping
+ size: 2752978
+ timestamp: 1769744996462
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/dm-tree-0.1.10-py312h5ac6f9e_0.conda
+ sha256: 7b2e6ddff2647d02b3f2cbc48ef26892f8b7809d488a72fa9d9fae2194fe2b03
+ md5: 8be5e9d293cbd4512ef38134c56172fe
+ depends:
+ - __osx >=11.0
+ - absl-py >=0.6.1
+ - attrs >=18.2.0
+ - libabseil * cxx17*
+ - libabseil >=20260107.1,<20260108.0a0
+ - libcxx >=19
+ - numpy >=1.21
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ - wrapt >=1.11.2
+ license: Apache-2.0
+ license_family: Apache
+ purls:
+ - pkg:pypi/dm-tree?source=hash-mapping
+ size: 120335
+ timestamp: 1775827592725
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/double-conversion-3.4.0-hf6b4638_0.conda
+ sha256: 777f73f137c56f390e14d03bae9538f66e4b42025c5fe304531537aca9261060
+ md5: 5c2db157899dc09a20dcc87638066120
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 64561
+ timestamp: 1773480255077
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/eigen-5.0.1-h44d0d2d_0.conda
+ sha256: 078a5e52e3a845585b39ad441db4445a61eb033ab272991351bfbf722dcb1a72
+ md5: 56a644c825e7ea8da0866fcc016190f3
+ license: MPL-2.0
+ license_family: MOZILLA
+ purls: []
+ size: 1314362
+ timestamp: 1773744888755
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/eigen-abi-5.0.1.100-h485a483_0.conda
+ sha256: 75a022706a04890db2d56d2967f06773cbef3e257ae4ce898d60d7a4b8aa99a4
+ md5: 517f7185d37c1fab8c8220c1110d82cb
+ constrains:
+ - eigen >=5.0.1,<5.0.2.0a0
+ license: MPL-2.0
+ license_family: MOZILLA
+ purls: []
+ size: 13293
+ timestamp: 1773744888755
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-hc919400_2.conda
+ sha256: ba685b87529c95a4bf9de140a33d703d57dc46b036e9586ed26890de65c1c0d5
+ md5: 3b87dabebe54c6d66a07b97b53ac5874
+ depends:
+ - __osx >=11.0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 296347
+ timestamp: 1758743805063
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.8.0-hf6b4638_0.conda
+ sha256: 9f8657c32bcff353b218b1bd7369de34c0534dc5a461630b296265e65e94e2d8
+ md5: 90f3b6fa818b07e9402d5ee89f3892d5
+ depends:
+ - __osx >=11.0
+ - libexpat 2.8.0 hf6b4638_0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 135334
+ timestamp: 1777846191235
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ffmpeg-8.1.1-gpl_h246f3d5_101.conda
+ sha256: 0ae2fddd81ad657d18eee5f8273d290f039f2f0075c0da74c2edd60110c62243
+ md5: 99b1ce7a32a3bb4da59b7f1a73acc29f
+ depends:
+ - __osx >=11.0
+ - aom >=3.9.1,<3.10.0a0
+ - bzip2 >=1.0.8,<2.0a0
+ - dav1d >=1.2.1,<1.2.2.0a0
+ - fontconfig >=2.17.1,<3.0a0
+ - fonts-conda-ecosystem
+ - gmp >=6.3.0,<7.0a0
+ - harfbuzz >=14.2.0
+ - lame >=3.100,<3.101.0a0
+ - libass >=0.17.4,<0.17.5.0a0
+ - libcxx >=19
+ - libexpat >=2.8.0,<3.0a0
+ - libfreetype >=2.14.3
+ - libfreetype6 >=2.14.3
+ - libiconv >=1.18,<2.0a0
+ - libjxl >=0.11,<1.0a0
+ - liblzma >=5.8.3,<6.0a0
+ - libopenvino >=2026.0.0,<2026.0.1.0a0
+ - libopenvino-arm-cpu-plugin >=2026.0.0,<2026.0.1.0a0
+ - libopenvino-auto-batch-plugin >=2026.0.0,<2026.0.1.0a0
+ - libopenvino-auto-plugin >=2026.0.0,<2026.0.1.0a0
+ - libopenvino-hetero-plugin >=2026.0.0,<2026.0.1.0a0
+ - libopenvino-ir-frontend >=2026.0.0,<2026.0.1.0a0
+ - libopenvino-onnx-frontend >=2026.0.0,<2026.0.1.0a0
+ - libopenvino-paddle-frontend >=2026.0.0,<2026.0.1.0a0
+ - libopenvino-pytorch-frontend >=2026.0.0,<2026.0.1.0a0
+ - libopenvino-tensorflow-frontend >=2026.0.0,<2026.0.1.0a0
+ - libopenvino-tensorflow-lite-frontend >=2026.0.0,<2026.0.1.0a0
+ - libopus >=1.6.1,<2.0a0
+ - libplacebo >=7.360.1,<7.361.0a0
+ - librsvg >=2.62.1,<3.0a0
+ - libvorbis >=1.3.7,<1.4.0a0
+ - libvpx >=1.15.2,<1.16.0a0
+ - libvulkan-loader >=1.4.341.0,<2.0a0
+ - libwebp-base >=1.6.0,<2.0a0
+ - libxml2
+ - libxml2-16 >=2.14.6
+ - libzlib >=1.3.2,<2.0a0
+ - openh264 >=2.6.0,<2.6.1.0a0
+ - openssl >=3.5.6,<4.0a0
+ - sdl2 >=2.32.56,<3.0a0
+ - shaderc >=2026.2,<2026.3.0a0
+ - svt-av1 >=4.0.1,<4.0.2.0a0
+ - x264 >=1!164.3095,<1!165
+ - x265 >=3.5,<3.6.0a0
+ license: GPL-2.0-or-later
+ license_family: GPL
+ purls: []
+ size: 9677592
+ timestamp: 1777901770154
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/flatbuffers-25.9.23-h9e8ef45_0.conda
+ sha256: b8f4ce2919f2542c6688af909c18f9672b2a19efdb57118c5f415dd5ff0fb3cd
+ md5: 1d6e0829bc8d6907fae9a81f169414ce
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 1299156
+ timestamp: 1761143339517
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fmt-12.1.0-h403dcb5_0.conda
+ sha256: dba5d4a93dc62f20e4c2de813ccf7beefed1fb54313faff9c4f2383e4744c8e5
+ md5: ae2f556fbb43e5a75cc80a47ac942a8e
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 180970
+ timestamp: 1767681372955
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.17.1-h2b252f5_0.conda
+ sha256: 851e9c778bfc54645dcab7038c0383445cbebf16f6bb2d3f62ce422b1605385a
+ md5: d06ae1a11b46cc4c74177ecd28de7c7a
+ depends:
+ - __osx >=11.0
+ - libexpat >=2.7.4,<3.0a0
+ - libfreetype >=2.14.1
+ - libfreetype6 >=2.14.1
+ - libzlib >=1.3.1,<2.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 237308
+ timestamp: 1771382999247
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fonttools-4.62.1-py312h04c11ed_0.conda
+ sha256: bb1a702f2297768c7e4f38e8a97572c7dc4043e2f0180c85388bc8a485fc131f
+ md5: 796ee212ade2e31537ace26c569b6eaa
+ depends:
+ - __osx >=11.0
+ - brotli
+ - munkres
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ - unicodedata2 >=15.1.0
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/fonttools?source=hash-mapping
+ size: 2897154
+ timestamp: 1776708811824
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.14.3-hce30654_0.conda
+ sha256: 5952bd9db12207a18a112e8924aa2ce8c2f9d57b62584d58a97d2f6afe1ea324
+ md5: 6dcc75ba2e04c555e881b72793d3282f
+ depends:
+ - libfreetype 2.14.3 hce30654_0
+ - libfreetype6 2.14.3 hdfa99f5_0
+ license: GPL-2.0-only OR FTL
+ purls: []
+ size: 173313
+ timestamp: 1774298702053
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.16-hc919400_0.conda
+ sha256: d856dc6744ecfba78c5f7df3378f03a75c911aadac803fa2b41a583667b4b600
+ md5: 04bdce8d93a4ed181d1d726163c2d447
+ depends:
+ - __osx >=11.0
+ license: LGPL-2.1-or-later
+ purls: []
+ size: 59391
+ timestamp: 1757438897523
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.7.0-py312h512c567_0.conda
+ sha256: 690af95d69d97b6e1ffead1edd413ca0f8b9189fb867b6bd8fd351f8ad509043
+ md5: 9f016ae66f8ef7195561dbf7ce0e5944
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/frozenlist?source=hash-mapping
+ size: 52265
+ timestamp: 1752167495152
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.44.6-h4e57454_0.conda
+ sha256: 07cbba4e12430de35ea608eb3006cf1f7f63832c4f89a081cd6f3872944c1aa6
+ md5: e67ebd2f639f46e52af8531622fa6051
+ depends:
+ - __osx >=11.0
+ - libglib >=2.86.4,<3.0a0
+ - libintl >=0.25.1,<1.0a0
+ - libjpeg-turbo >=3.1.2,<4.0a0
+ - liblzma >=5.8.2,<6.0a0
+ - libpng >=1.6.56,<1.7.0a0
+ - libtiff >=4.7.1,<4.8.0a0
+ license: LGPL-2.1-or-later
+ license_family: LGPL
+ purls: []
+ size: 548309
+ timestamp: 1774986047281
+- conda: https://conda.anaconda.org/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://conda.anaconda.org/conda-forge/osx-arm64/giflib-5.2.2-h93a5062_0.conda
+ sha256: 843b3f364ff844137e37d5c0a181f11f6d51adcedd216f019d074e5aa5d7e09c
+ md5: 95fa1486c77505330c20f7202492b913
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 71613
+ timestamp: 1712692611426
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glew-2.3.0-hf163413_0.conda
+ sha256: ee35fae07596ea935e268890d6ff735921dc64e0e914d7a572325e27134506b0
+ md5: 3fb37080547d6ecb5e887569cd181819
+ depends:
+ - __osx >=11.0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 458581
+ timestamp: 1766373683267
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.88.1-h37541a8_2.conda
+ sha256: 414bdf86a8096d5706293d163359def2e61b8ffd3fe106bbf2028d79e58e6a97
+ md5: 8d4580a91948a6c3383a7c2fbfe5311c
+ depends:
+ - libglib ==2.88.1 ha08bb59_2
+ - libffi
+ - __osx >=11.0
+ - libintl >=0.25.1,<1.0a0
+ license: LGPL-2.1-or-later
+ purls: []
+ size: 204902
+ timestamp: 1778508895255
+- conda: https://conda.anaconda.org/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://conda.anaconda.org/conda-forge/osx-arm64/glslang-16.3.0-h7cb4797_0.conda
+ sha256: d5bb8e2373cb39d1404ef7dc8019e764b27180c8a0f88ba234a595dc330caabb
+ md5: 85d9c709161737695252660b174b36f2
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - spirv-tools >=2026,<2027.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 875961
+ timestamp: 1777747792638
+- conda: https://conda.anaconda.org/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://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.3.0-py312he1ee7cc_1.conda
+ sha256: 5f30afd0ef54b4744eb61f71a5ccc9965d9b07830cecc0db9dc6ce73f39b05c4
+ md5: bd0f515e01326c13cc81424233ac7b18
+ depends:
+ - __osx >=11.0
+ - gmp >=6.3.0,<7.0a0
+ - mpc >=1.3.1,<2.0a0
+ - mpfr >=4.2.1,<5.0a0
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ license: LGPL-3.0-or-later
+ license_family: LGPL
+ purls:
+ - pkg:pypi/gmpy2?source=hash-mapping
+ size: 194024
+ timestamp: 1773245811244
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-hec049ff_2.conda
+ sha256: c507ae9989dbea7024aa6feaebb16cbf271faac67ac3f0342ef1ab747c20475d
+ md5: 0fc46fee39e88bbcf5835f71a9d9a209
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ license: LGPL-2.0-or-later
+ license_family: LGPL
+ purls: []
+ size: 81202
+ timestamp: 1755102333712
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-14.1.2-hec8c438_0.conda
+ sha256: 755c72d469330265f80a615912a3b522aef6f26cbc52763862b6a3c492fbf97c
+ md5: 1f3d859de3ca2bcaa845e92e87d73660
+ depends:
+ - __osx >=11.0
+ - adwaita-icon-theme
+ - cairo >=1.18.4,<2.0a0
+ - fonts-conda-ecosystem
+ - gdk-pixbuf >=2.44.4,<3.0a0
+ - gtk3 >=3.24.43,<4.0a0
+ - gts >=0.7.6,<0.8.0a0
+ - libcxx >=19
+ - libexpat >=2.7.3,<3.0a0
+ - libgd >=2.3.3,<2.4.0a0
+ - libglib >=2.86.3,<3.0a0
+ - librsvg >=2.60.0,<3.0a0
+ - libwebp-base >=1.6.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - pango >=1.56.4,<2.0a0
+ license: EPL-1.0
+ license_family: Other
+ purls: []
+ size: 2218284
+ timestamp: 1769427599940
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/grpcio-1.78.1-py312h0c23288_0.conda
+ sha256: 47ca1a2b85df8c16cab5f364e41aea61c70b22c1c23f3656e19947fe442fd783
+ md5: b498051579243a7f68016a90ee3c83d2
+ depends:
+ - __osx >=11.0
+ - libabseil * cxx17*
+ - libabseil >=20260107.1,<20260108.0a0
+ - libcxx >=19
+ - libgrpc 1.78.1 h3e3f78d_0
+ - libzlib >=1.3.1,<2.0a0
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ - typing-extensions >=4.12,<5
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/grpcio?source=hash-mapping
+ size: 762460
+ timestamp: 1774013064868
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.52-hc0f3e19_0.conda
+ sha256: 26862a9898054b8552e55e609e5ce73c7ef1eb28bbe6fb87f0b9109d73cd09df
+ md5: 5557a2433b1339b8e536c264afea41ef
+ depends:
+ - __osx >=11.0
+ - atk-1.0 >=2.38.0
+ - cairo >=1.18.4,<2.0a0
+ - epoxy >=1.5.10,<1.6.0a0
+ - fribidi >=1.0.16,<2.0a0
+ - gdk-pixbuf >=2.44.5,<3.0a0
+ - glib-tools
+ - harfbuzz >=13.2.1
+ - hicolor-icon-theme
+ - libexpat >=2.7.4,<3.0a0
+ - libfreetype >=2.14.2
+ - libfreetype6 >=2.14.2
+ - libglib >=2.86.4,<3.0a0
+ - libintl >=0.25.1,<1.0a0
+ - liblzma >=5.8.2,<6.0a0
+ - libzlib >=1.3.2,<2.0a0
+ - pango >=1.56.4,<2.0a0
+ license: LGPL-2.0-or-later
+ license_family: LGPL
+ purls: []
+ size: 9385734
+ timestamp: 1774288504338
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda
+ sha256: e0f8c7bc1b9ea62ded78ffa848e37771eeaaaf55b3146580513c7266862043ba
+ md5: 21b4dd3098f63a74cf2aa9159cbef57d
+ depends:
+ - libcxx >=15.0.7
+ - libglib >=2.76.3,<3.0a0
+ license: LGPL-2.0-or-later
+ license_family: LGPL
+ purls: []
+ size: 304331
+ timestamp: 1686545503242
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gymnasium-1.2.3-np2py312hcf3ad39_0.conda
+ sha256: 2909bfd76b896405b7a2c6901d68ee6ec4ac184bf3d4ecb0467b9b8723256cec
+ md5: 48600eff20be955e6ee15d995f95da26
+ depends:
+ - python
+ - cloudpickle >=1.2.0
+ - farama-notifications
+ - jax-jumpy >=1.0.0
+ - typing_extensions >=4.3.0
+ - python 3.12.* *_cpython
+ - python_abi 3.12.* *_cp312
+ - numpy >=1.23,<3
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/gymnasium?source=hash-mapping
+ size: 1131351
+ timestamp: 1769938812373
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/h5py-3.16.0-nompi_py312hdd01ddf_102.conda
+ sha256: 68bf1ed50a983c4eea17bab8cb91e7b2bfd19b92f3846e2a057ab1bb78b5b1cd
+ md5: d6561da751793e9f534b175e070b19d3
+ depends:
+ - __osx >=11.0
+ - cached-property
+ - hdf5 >=1.14.6,<1.14.7.0a0
+ - numpy >=1.23,<3
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/h5py?source=hash-mapping
+ size: 1180081
+ timestamp: 1775582311942
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-14.2.0-h3103d1b_0.conda
+ sha256: 40ccd6a589c60a4cedb2f9921dfa60ea5845b5ce323477b042b6f90218b239f6
+ md5: ea75b03886981362d93bb4708ee14811
+ depends:
+ - __osx >=11.0
+ - cairo >=1.18.4,<2.0a0
+ - graphite2 >=1.3.14,<2.0a0
+ - icu >=78.3,<79.0a0
+ - libcxx >=19
+ - libexpat >=2.7.5,<3.0a0
+ - libfreetype >=2.14.3
+ - libfreetype6 >=2.14.3
+ - libglib >=2.86.4,<3.0a0
+ - libzlib >=1.3.2,<2.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 2023669
+ timestamp: 1776779039314
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf4-4.2.15-h2ee6834_7.conda
+ sha256: c3b01e3c3fe4ca1c4d28c287eaa5168a4f2fd3ffd76690082ac919244c22fa90
+ md5: ff5d749fd711dc7759e127db38005924
+ depends:
+ - libcxx >=15.0.7
+ - libjpeg-turbo >=3.0.0,<4.0a0
+ - libzlib >=1.2.13,<2.0.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 762257
+ timestamp: 1695661864625
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-1.14.6-nompi_had3affe_109.conda
+ sha256: 5c49a8d636c4cd712652012a4a6d96188cff26032eb0c56a80e428c121b1596f
+ md5: fa70cb619977ab679abfe4b4c4202a35
+ depends:
+ - __osx >=11.0
+ - libaec >=1.1.5,<2.0a0
+ - libcurl >=8.20.0,<9.0a0
+ - libcxx >=19
+ - libgfortran
+ - libgfortran5 >=14.3.0
+ - libzlib >=1.3.2,<2.0a0
+ - openssl >=3.5.6,<4.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 3296683
+ timestamp: 1777519194055
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_3.conda
+ sha256: 46a4958f2f916c5938f2a6dc0709f78b175ece42f601d79a04e0276d55d25d07
+ md5: cfb39109ac5fa8601eb595d66d5bf156
+ license: GPL-2.0-or-later
+ license_family: GPL
+ purls: []
+ size: 17616
+ timestamp: 1771539622983
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-78.3-hef89b57_0.conda
+ sha256: 3a7907a17e9937d3a46dfd41cffaf815abad59a569440d1e25177c15fd0684e5
+ md5: f1182c91c0de31a7abd40cedf6a5ebef
+ depends:
+ - __osx >=11.0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 12361647
+ timestamp: 1773822915649
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.9.2-cpu_py312h8d61f43_0.conda
+ sha256: 3ba5666c9910a045cb4175aa6d47f555b897e08a32f4e70130e13ef442c26d83
+ md5: 87c8022a3fa27834572248287ea81d6c
+ depends:
+ - python
+ - scipy >=1.9
+ - ml_dtypes >=0.2.0
+ - libcxx >=20
+ - __osx >=11.0
+ - libzlib >=1.3.2,<2.0a0
+ - libre2-11 >=2025.11.5
+ - re2
+ - python_abi 3.12.* *_cp312
+ - openssl >=3.5.5,<4.0a0
+ - flatbuffers >=25.9.23,<25.9.24.0a0
+ - libgrpc >=1.78.1,<1.79.0a0
+ - numpy >=1.23,<3
+ - libabseil >=20260107.1,<20260108.0a0
+ - libabseil * cxx17*
+ constrains:
+ - jax >=0.9.2
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/jaxlib?source=hash-mapping
+ size: 70088922
+ timestamp: 1774537047767
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsoncpp-1.9.6-h726d253_1.conda
+ sha256: 415c2376eef1bb47f8cc07279ecc54a2fa92f6dfdb508d337dd21d0157e3c8ad
+ md5: 0ff996d1cf523fa1f7ed63113f6cc052
+ depends:
+ - __osx >=11.0
+ - libcxx >=18
+ license: LicenseRef-Public-Domain OR MIT
+ purls: []
+ size: 145287
+ timestamp: 1733780601066
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/kiwisolver-1.5.0-py312h3093aea_0.conda
+ sha256: 8de440f0e33ab6895e81f2c47c51e59d177349a832087a0367e8e259c97f4833
+ md5: 58261af35f0d33fd28e2257b208a1be0
+ depends:
+ - python
+ - __osx >=11.0
+ - libcxx >=19
+ - python 3.12.* *_cpython
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/kiwisolver?source=hash-mapping
+ size: 68490
+ timestamp: 1773067215781
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.22.2-h385eeb1_0.conda
+ sha256: c0a0bf028fe7f3defcdcaa464e536cf1b202d07451e18ad83fdd169d15bef6ed
+ md5: e446e1822f4da8e5080a9de93474184d
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - libedit >=3.1.20250104,<3.2.0a0
+ - libedit >=3.1.20250104,<4.0a0
+ - openssl >=3.5.5,<4.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 1160828
+ timestamp: 1769770119811
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lame-3.100-h1a8c8d9_1003.tar.bz2
+ sha256: f40ce7324b2cf5338b766d4cdb8e0453e4156a4f83c2f31bbfff750785de304c
+ md5: bff0e851d66725f78dc2fd8b032ddb7e
+ license: LGPL-2.0-only
+ license_family: LGPL
+ purls: []
+ size: 528805
+ timestamp: 1664996399305
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.19.1-hdfa7624_0.conda
+ sha256: d589ff5294e42576563b22bdea0860cb80b0cbe0f3852836eddaadedf6eec4ef
+ md5: e5ba982008c0ac1a1c0154617371bab5
+ depends:
+ - __osx >=11.0
+ - libjpeg-turbo >=3.1.4.1,<4.0a0
+ - libtiff >=4.7.1,<4.8.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 212998
+ timestamp: 1778079809873
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64-956.6-llvm22_1_h5b97f1b_4.conda
+ sha256: 405f08540aedb58fa070b097143b3fe0fcb2b92e3b4aca723780e2f3d754803b
+ md5: 8254e40b35e6c3159de53275801a6ebc
+ depends:
+ - ld64_osx-arm64 956.6 llvm22_1_h692d5aa_4
+ - libllvm22 >=22.1.0,<22.2.0a0
+ constrains:
+ - cctools_osx-arm64 1030.6.3.*
+ - cctools 1030.6.3.*
+ license: APSL-2.0
+ license_family: Other
+ purls: []
+ size: 21907
+ timestamp: 1772019717408
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-956.6-llvm22_1_h692d5aa_4.conda
+ sha256: e4ae2ef85672c094aa3467d466f932ccdc1dda9bd4adac64f4252cc796149091
+ md5: 4c2255bf859bff6c52ed38960e3bc963
+ depends:
+ - __osx >=11.0
+ - libcxx
+ - libllvm22 >=22.1.0,<22.2.0a0
+ - sigtool-codesign
+ - tapi >=1600.0.11.8,<1601.0a0
+ constrains:
+ - clang 22.1.*
+ - ld64 956.6.*
+ - cctools_impl_osx-arm64 1030.6.3.*
+ - cctools 1030.6.3.*
+ license: APSL-2.0
+ license_family: Other
+ purls: []
+ size: 1038027
+ timestamp: 1772019602406
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.1.0-h1eee2c3_0.conda
+ sha256: 66e5ffd301a44da696f3efc2f25d6d94f42a9adc0db06c44ad753ab844148c51
+ md5: 095e5749868adab9cae42d4b460e5443
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ license: Apache-2.0
+ license_family: Apache
+ purls: []
+ size: 164222
+ timestamp: 1773114244984
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20260107.1-cxx17_h2062a1b_0.conda
+ sha256: 756611fbb8d2957a5b4635d9772bd8432cb6ddac05580a6284cca6fdc9b07fca
+ md5: bb65152e0d7c7178c0f1ee25692c9fd1
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ constrains:
+ - abseil-cpp =20260107.1
+ - libabseil-static =20260107.1=cxx17*
+ license: Apache-2.0
+ license_family: Apache
+ purls: []
+ size: 1229639
+ timestamp: 1770863511331
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libaec-1.1.5-h8664d51_0.conda
+ sha256: af9cd8db11eb719e38a3340c88bb4882cf19b5b4237d93845224489fc2a13b46
+ md5: 13e6d9ae0efbc9d2e9a01a91f4372b41
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ license: BSD-2-Clause
+ license_family: BSD
+ purls: []
+ size: 30390
+ timestamp: 1769222133373
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-24.0.0-h37fbca7_1_cpu.conda
+ build_number: 1
+ sha256: 814e775718a3ccafcbcd704b11dc402374513ec6f66241780ff7ffbe7f2ffcda
+ md5: 9efaddf61a69aeb93cff572fed6baccc
+ depends:
+ - __osx >=11.0
+ - aws-crt-cpp >=0.38.3,<0.38.4.0a0
+ - aws-sdk-cpp >=1.11.747,<1.11.748.0a0
+ - azure-core-cpp >=1.16.2,<1.16.3.0a0
+ - azure-identity-cpp >=1.13.3,<1.13.4.0a0
+ - azure-storage-blobs-cpp >=12.16.0,<12.16.1.0a0
+ - azure-storage-files-datalake-cpp >=12.14.0,<12.14.1.0a0
+ - bzip2 >=1.0.8,<2.0a0
+ - glog >=0.7.1,<0.8.0a0
+ - libabseil * cxx17*
+ - libabseil >=20260107.1,<20260108.0a0
+ - libbrotlidec >=1.2.0,<1.3.0a0
+ - libbrotlienc >=1.2.0,<1.3.0a0
+ - libcxx >=21
+ - libgoogle-cloud >=3.3.0,<3.4.0a0
+ - libgoogle-cloud-storage >=3.3.0,<3.4.0a0
+ - libopentelemetry-cpp >=1.26.0,<1.27.0a0
+ - libprotobuf >=6.33.5,<6.33.6.0a0
+ - libzlib >=1.3.2,<2.0a0
+ - lz4-c >=1.10.0,<1.11.0a0
+ - orc >=2.3.0,<2.3.1.0a0
+ - snappy >=1.2.2,<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: 4239511
+ timestamp: 1778174861358
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-24.0.0-hee8fe31_1_cpu.conda
+ build_number: 1
+ sha256: 4d0f25e14c02a08a9843bf7cb9af8fe00772151ac95a93809482aa7e1002c0ea
+ md5: 4c849c657fd2f7676c6935a17d9a6c04
+ depends:
+ - __osx >=11.0
+ - libabseil * cxx17*
+ - libabseil >=20260107.1,<20260108.0a0
+ - libarrow 24.0.0 h37fbca7_1_cpu
+ - libarrow-compute 24.0.0 h3b6a98a_1_cpu
+ - libcxx >=21
+ - libopentelemetry-cpp >=1.26.0,<1.27.0a0
+ - libprotobuf >=6.33.5,<6.33.6.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 519410
+ timestamp: 1778175198375
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-compute-24.0.0-h3b6a98a_1_cpu.conda
+ build_number: 1
+ sha256: 04076544c1797753b4ba145a68727bf68827591de9870867bac5e4e7ca39a829
+ md5: 548f34b1374e772de97cdba8774c5f58
+ depends:
+ - __osx >=11.0
+ - libabseil * cxx17*
+ - libabseil >=20260107.1,<20260108.0a0
+ - libarrow 24.0.0 h37fbca7_1_cpu
+ - libcxx >=21
+ - libopentelemetry-cpp >=1.26.0,<1.27.0a0
+ - libprotobuf >=6.33.5,<6.33.6.0a0
+ - libre2-11 >=2025.11.5
+ - libutf8proc >=2.11.3,<2.12.0a0
+ - re2
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 2243159
+ timestamp: 1778174967068
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-24.0.0-hee8fe31_1_cpu.conda
+ build_number: 1
+ sha256: 2557536377f7e3ae986e47b3584b53ca148d91f6d1b836f3371ff56b15082379
+ md5: bfcfc8dc98740cd7577cc25933ce6a62
+ depends:
+ - __osx >=11.0
+ - libabseil * cxx17*
+ - libabseil >=20260107.1,<20260108.0a0
+ - libarrow 24.0.0 h37fbca7_1_cpu
+ - libarrow-acero 24.0.0 hee8fe31_1_cpu
+ - libarrow-compute 24.0.0 h3b6a98a_1_cpu
+ - libcxx >=21
+ - libopentelemetry-cpp >=1.26.0,<1.27.0a0
+ - libparquet 24.0.0 h16c0493_1_cpu
+ - libprotobuf >=6.33.5,<6.33.6.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 519773
+ timestamp: 1778175399688
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-24.0.0-h05be00f_1_cpu.conda
+ build_number: 1
+ sha256: 9ba4cd38cfb7d2830b0e6905a2bfa6dd6c435d81ec3f923dc664b45b91cc742b
+ md5: e9d4414f2487505ea94cbb0852aa0c51
+ depends:
+ - __osx >=11.0
+ - libabseil * cxx17*
+ - libabseil >=20260107.1,<20260108.0a0
+ - libarrow 24.0.0 h37fbca7_1_cpu
+ - libarrow-acero 24.0.0 hee8fe31_1_cpu
+ - libarrow-dataset 24.0.0 hee8fe31_1_cpu
+ - libcxx >=21
+ - libprotobuf >=6.33.5,<6.33.6.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 455365
+ timestamp: 1778175475107
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libass-0.17.4-hcbd7ca7_0.conda
+ sha256: 079f5fdf7aace970a0db91cd2cc493c754dfdc4520d422ecec43d2561021167a
+ md5: 0977f4a79496437ff3a2c97d13c4c223
+ depends:
+ - __osx >=11.0
+ - fontconfig >=2.15.0,<3.0a0
+ - fonts-conda-ecosystem
+ - libzlib >=1.3.1,<2.0a0
+ - fribidi >=1.0.10,<2.0a0
+ - libiconv >=1.18,<2.0a0
+ - harfbuzz >=11.0.1
+ - libfreetype >=2.13.3
+ - libfreetype6 >=2.13.3
+ license: ISC
+ purls: []
+ size: 138339
+ timestamp: 1749328988096
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.11.0-7_h3d1d584_accelerate.conda
+ build_number: 7
+ sha256: 56436546803abbc1944516122cda0ccd017ea5420051e3aac6050e2b18982d00
+ md5: bb818f20b2e79bc3ff9c01cc55b7786b
+ depends:
+ - __osx >=11.0
+ - libgfortran
+ - libgfortran5 >=14.3.0
+ constrains:
+ - liblapacke 3.11.0 7*_accelerate
+ - mkl <2027
+ - blas 2.307 accelerate
+ - liblapack 3.11.0 7*_accelerate
+ - libcblas 3.11.0 7*_accelerate
+ track_features:
+ - blas_accelerate
+ - blas_accelerate_2
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 2832885
+ timestamp: 1778489963495
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-1.90.0-h0419b56_1.conda
+ sha256: 6f1450cdde346f12cdfa4f6862cc9aa288a8967a7017cf4ccdbbeb403604e148
+ md5: c0cc232de93ca04196d6b4e46037d1f3
+ depends:
+ - __osx >=11.0
+ - bzip2 >=1.0.8,<2.0a0
+ - icu >=78.1,<79.0a0
+ - libcxx >=19
+ - liblzma >=5.8.1,<6.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - zstd >=1.5.7,<1.6.0a0
+ constrains:
+ - boost-cpp <0.0a0
+ license: BSL-1.0
+ purls: []
+ size: 2154080
+ timestamp: 1766347492076
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-devel-1.90.0-hf450f58_1.conda
+ sha256: 8007d99f1740f67469a6356bc1bce30ba927828848bd749392478213d2975a1b
+ md5: 26b4c1e484fb6e462721f9d3d15c764b
+ depends:
+ - libboost 1.90.0 h0419b56_1
+ - libboost-headers 1.90.0 hce30654_1
+ constrains:
+ - boost-cpp <0.0a0
+ license: BSL-1.0
+ purls: []
+ size: 38383
+ timestamp: 1766347659405
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-headers-1.90.0-hce30654_1.conda
+ sha256: 460b71679d163e305aef91f8e692e20ce3536042d0ce9537692a17a3b024cd51
+ md5: d1a15433e40a71e9a879483e4f7bf307
+ constrains:
+ - boost-cpp <0.0a0
+ license: BSL-1.0
+ purls: []
+ size: 14684234
+ timestamp: 1766347522812
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.2.0-hc919400_1.conda
+ sha256: a7cb9e660531cf6fbd4148cff608c85738d0b76f0975c5fc3e7d5e92840b7229
+ md5: 006e7ddd8a110771134fcc4e1e3a6ffa
+ depends:
+ - __osx >=11.0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 79443
+ timestamp: 1764017945924
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.2.0-hc919400_1.conda
+ sha256: 2eae444039826db0454b19b52a3390f63bfe24f6b3e63089778dd5a5bf48b6bf
+ md5: 079e88933963f3f149054eec2c487bc2
+ depends:
+ - __osx >=11.0
+ - libbrotlicommon 1.2.0 hc919400_1
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 29452
+ timestamp: 1764017979099
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.2.0-hc919400_1.conda
+ sha256: 01436c32bb41f9cb4bcf07dda647ce4e5deb8307abfc3abdc8da5317db8189d1
+ md5: b2b7c8288ca1a2d71ff97a8e6a1e8883
+ depends:
+ - __osx >=11.0
+ - libbrotlicommon 1.2.0 hc919400_1
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 290754
+ timestamp: 1764018009077
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.11.0-7_h752f6bc_accelerate.conda
+ build_number: 7
+ sha256: 49dca6d075e7a23d19a6640370e25e3ac046d672b28c6467f517a572ea14c860
+ md5: 10646f90b6ae4c58d7e6989f1ba24681
+ depends:
+ - libblas 3.11.0 7_h3d1d584_accelerate
+ constrains:
+ - liblapacke 3.11.0 7*_accelerate
+ - liblapack 3.11.0 7*_accelerate
+ - blas 2.307 accelerate
+ track_features:
+ - blas_accelerate
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 18823
+ timestamp: 1778489976942
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang-cpp22.1-22.1.5-default_h8e162e0_1.conda
+ sha256: e55e200773e111b021ff60bb47d69033204f9b48590a00e439646968757c4504
+ md5: 091664d061ddbca7594cd306fe82d648
+ depends:
+ - __osx >=11.0
+ - libcxx >=22.1.5
+ - libllvm22 >=22.1.5,<22.2.0a0
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
+ purls: []
+ size: 14186675
+ timestamp: 1778476259538
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang13-22.1.5-default_h6dd9417_1.conda
+ sha256: d1f50e70f2276dec7d7b0595769deec791080c77e5fb8585d287973305bd6277
+ md5: 98ecd7b37d923081e402c3c2f6e39008
+ depends:
+ - __osx >=11.0
+ - libcxx >=22.1.5
+ - libllvm22 >=22.1.5,<22.2.0a0
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
+ purls: []
+ size: 8936209
+ timestamp: 1778476466526
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcompiler-rt-22.1.5-hd34ed20_1.conda
+ sha256: 4be653c88cce088080b1b47e3a7a4f3cb85a1d7a8103d9ac4db22e8cf65c624e
+ md5: 4104db0e6821aa62e2eb48a65e06da24
+ depends:
+ - __osx >=11.0
+ constrains:
+ - compiler-rt >=9.0.1
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: APACHE
+ purls: []
+ size: 1376087
+ timestamp: 1778193605976
+- conda: https://conda.anaconda.org/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://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.20.0-hd5a2499_0.conda
+ sha256: 38c0bc634b61e542776e97cfd15d5d41edd304d4e47c333004d2d622439b2381
+ md5: 2f57b7d0c6adda88957586b7afd78438
+ depends:
+ - __osx >=11.0
+ - krb5 >=1.22.2,<1.23.0a0
+ - libnghttp2 >=1.68.1,<2.0a0
+ - libssh2 >=1.11.1,<2.0a0
+ - libzlib >=1.3.2,<2.0a0
+ - openssl >=3.5.6,<4.0a0
+ - zstd >=1.5.7,<1.6.0a0
+ license: curl
+ license_family: MIT
+ purls: []
+ size: 400568
+ timestamp: 1777462251987
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-22.1.5-h55c6f16_1.conda
+ sha256: dddd01bd6b338221342a89530a1caffe6051a70cc8f8b1d8bb591d5447a3c603
+ md5: ff484b683fecf1e875dfc7aa01d19796
+ depends:
+ - __osx >=11.0
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
+ purls: []
+ size: 569359
+ timestamp: 1778191546305
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-devel-22.1.5-h6dc3340_1.conda
+ sha256: bff4b86a8d890571c53ba8306ae6a0077829b2c1c1bc136d36f1423a6c674830
+ md5: b877f90f38166751b0c29b5b58ad9009
+ depends:
+ - libcxx >=22.1.5
+ - libcxx-headers >=22.1.5,<22.1.6.0a0
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
+ purls: []
+ size: 22129
+ timestamp: 1778191560604
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.25-hc11a715_0.conda
+ sha256: 5e0b6961be3304a5f027a8c00bd0967fc46ae162cffb7553ff45c70f51b8314c
+ md5: a6130c709305cd9828b4e1bd9ba0000c
+ depends:
+ - __osx >=11.0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 55420
+ timestamp: 1761980066242
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdovi-3.3.2-h78f8ca3_4.conda
+ sha256: 0eff0b03662d30b14b6f95a930fedf19948d45b05653389f59ae964ddf92ba9c
+ md5: 6ece15d35513fb9543cf45310cda72e1
+ depends:
+ - __osx >=11.0
+ constrains:
+ - __osx >=11.0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 278373
+ timestamp: 1777839138867
+- conda: https://conda.anaconda.org/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://conda.anaconda.org/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://conda.anaconda.org/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://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.8.0-hf6b4638_0.conda
+ sha256: f4b1cafc59afaede8fa0a2d9cf376840f1c553001acd72f6ead18bbc8ac8c49c
+ md5: 65466e82c09e888ca7560c11a97d5450
+ depends:
+ - __osx >=11.0
+ constrains:
+ - expat 2.8.0.*
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 68789
+ timestamp: 1777846180142
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-hcf2aa1b_0.conda
+ sha256: 6686a26466a527585e6a75cc2a242bf4a3d97d6d6c86424a441677917f28bec7
+ md5: 43c04d9cb46ef176bb2a4c77e324d599
+ depends:
+ - __osx >=11.0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 40979
+ timestamp: 1769456747661
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.14.3-hce30654_0.conda
+ sha256: a047a2f238362a37d484f9620e8cba29f513a933cd9eb68571ad4b270d6f8f3e
+ md5: f73b109d49568d5d1dda43bb147ae37f
+ depends:
+ - libfreetype6 >=2.14.3
+ license: GPL-2.0-only OR FTL
+ purls: []
+ size: 8091
+ timestamp: 1774298691258
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.14.3-hdfa99f5_0.conda
+ sha256: ff764608e1f2839e95e2cf9b243681475f8778c36af7a42b3f78f476fdbb1dd3
+ md5: e98ba7b5f09a5f450eca083d5a1c4649
+ depends:
+ - __osx >=11.0
+ - libpng >=1.6.55,<1.7.0a0
+ - libzlib >=1.3.2,<2.0a0
+ constrains:
+ - freetype >=2.14.3
+ license: GPL-2.0-only OR FTL
+ purls: []
+ size: 338085
+ timestamp: 1774298689297
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgcc-15.2.0-hcbb3090_19.conda
+ sha256: 06644fa4d34d57c9e48f4d84b1256f9e5f654fdb37f43acc8a58a396952d42b7
+ md5: 644058123986582db33aebd4ae2ca184
+ depends:
+ - _openmp_mutex
+ constrains:
+ - libgcc-ng ==15.2.0=*_19
+ - libgomp 15.2.0 19
+ license: GPL-3.0-only WITH GCC-exception-3.1
+ license_family: GPL
+ purls: []
+ size: 404080
+ timestamp: 1778273064154
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-h05bcc79_12.conda
+ sha256: 269edce527e204a80d3d05673301e0207efcd0dbeebc036a118ceb52690d6341
+ md5: fa4a92cfaae9570d89700a292a9ca714
+ depends:
+ - __osx >=11.0
+ - fontconfig >=2.15.0,<3.0a0
+ - fonts-conda-ecosystem
+ - icu >=78.1,<79.0a0
+ - libexpat >=2.7.3,<3.0a0
+ - libfreetype >=2.14.1
+ - libfreetype6 >=2.14.1
+ - libiconv >=1.18,<2.0a0
+ - libjpeg-turbo >=3.1.2,<4.0a0
+ - libpng >=1.6.53,<1.7.0a0
+ - libtiff >=4.7.1,<4.8.0a0
+ - libwebp-base >=1.6.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ license: GD
+ license_family: BSD
+ purls: []
+ size: 159247
+ timestamp: 1766331953491
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-h07b0088_19.conda
+ sha256: d4837b3b9b30af3132d260225e91ab9dde83be04c59513f500cc81050fb37486
+ md5: 1ea03f87cdb1078fbc0e2b2deb63752c
+ depends:
+ - libgfortran5 15.2.0 hdae7583_19
+ constrains:
+ - libgfortran-ng ==15.2.0=*_19
+ license: GPL-3.0-only WITH GCC-exception-3.1
+ license_family: GPL
+ purls: []
+ size: 139675
+ timestamp: 1778273280875
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-hdae7583_19.conda
+ sha256: d0a68b7a121d115b80c169e24d1265dcc25a3fe58d107df1bbc430797e226d88
+ md5: ba36d8c606a6a53fe0b8c12d47267b3d
+ depends:
+ - libgcc >=15.2.0
+ constrains:
+ - libgfortran 15.2.0
+ license: GPL-3.0-only WITH GCC-exception-3.1
+ license_family: GPL
+ purls: []
+ size: 599691
+ timestamp: 1778273075448
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.88.1-ha08bb59_2.conda
+ sha256: 3b32a7a710132d509f2ea38b2f0384414c863533e0fc7ac71b6a0763e4c67424
+ md5: 62d6f3b832d7d79ae0c0aa1bb3c325fa
+ depends:
+ - __osx >=11.0
+ - libintl >=0.25.1,<1.0a0
+ - libffi >=3.5.2,<3.6.0a0
+ - pcre2 >=10.47,<10.48.0a0
+ - libiconv >=1.18,<2.0a0
+ - libzlib >=1.3.2,<2.0a0
+ constrains:
+ - glib >2.66
+ license: LGPL-2.1-or-later
+ purls: []
+ size: 4439458
+ timestamp: 1778508895255
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-3.3.0-he41eb1d_1.conda
+ sha256: 632d23ea1c00b2f439d8846d4925646dafa6c0380ecc3353d8a9afa878829539
+ md5: b4e0ec13e232efea554bb5155dc1ef32
+ depends:
+ - __osx >=11.0
+ - libabseil * cxx17*
+ - libabseil >=20260107.1,<20260108.0a0
+ - libcurl >=8.19.0,<9.0a0
+ - libcxx >=19
+ - libgrpc >=1.78.1,<1.79.0a0
+ - libopentelemetry-cpp >=1.26.0,<1.27.0a0
+ - libprotobuf >=6.33.5,<6.33.6.0a0
+ - openssl >=3.5.5,<4.0a0
+ constrains:
+ - libgoogle-cloud 3.3.0 *_1
+ license: Apache-2.0
+ license_family: Apache
+ purls: []
+ size: 1773417
+ timestamp: 1774214139261
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-3.3.0-ha114238_1.conda
+ sha256: 024e3e099a478b3b89e0dee32348a55c6a1237fe66aa730172ae642f63ffc093
+ md5: 7fb98178c58d71ba046a451968d8579f
+ depends:
+ - __osx >=11.0
+ - libabseil
+ - libcrc32c >=1.1.2,<1.2.0a0
+ - libcurl
+ - libcxx >=19
+ - libgoogle-cloud 3.3.0 he41eb1d_1
+ - libzlib >=1.3.2,<2.0a0
+ - openssl
+ license: Apache-2.0
+ license_family: Apache
+ purls: []
+ size: 523970
+ timestamp: 1774214725148
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.78.1-h3e3f78d_0.conda
+ sha256: a6e01573795484c2200e499ddffb825d24184888be6a596d4beaceebe6f8f525
+ md5: 17b9e07ba9b46754a6953999a948dcf7
+ depends:
+ - __osx >=11.0
+ - c-ares >=1.34.6,<2.0a0
+ - libabseil * cxx17*
+ - libabseil >=20260107.1,<20260108.0a0
+ - libcxx >=19
+ - libprotobuf >=6.33.5,<6.33.6.0a0
+ - libre2-11 >=2025.11.5
+ - libzlib >=1.3.1,<2.0a0
+ - openssl >=3.5.5,<4.0a0
+ - re2
+ constrains:
+ - grpc-cpp =1.78.1
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 4820402
+ timestamp: 1774012715207
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libhwloc-2.13.0-default_ha97f43a_1000.conda
+ sha256: d47c3c030671d196ff1cdd343e93eb2ae0d7b665cb79f8164cc91488796db437
+ md5: fed55ddd65a830cb62e78f07cfffcd41
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - libxml2
+ - libxml2-16 >=2.14.6
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 2339152
+ timestamp: 1770953916323
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libhwy-1.4.0-ha332bbd_0.conda
+ sha256: 4fcad3cbec60da940312e883b7866816517acc5f9baecfe9a778de57327a1b1b
+ md5: 7394850583ca88325244b68b532c7a39
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ license: Apache-2.0 OR BSD-3-Clause
+ purls: []
+ size: 609931
+ timestamp: 1776990524407
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-h23cfdf5_2.conda
+ sha256: de0336e800b2af9a40bdd694b03870ac4a848161b35c8a2325704f123f185f03
+ md5: 4d5a7445f0b25b6a3ddbb56e790f5251
+ depends:
+ - __osx >=11.0
+ license: LGPL-2.1-only
+ purls: []
+ size: 750379
+ timestamp: 1754909073836
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda
+ sha256: 99d2cebcd8f84961b86784451b010f5f0a795ed1c08f1e7c76fbb3c22abf021a
+ md5: 5103f6a6b210a3912faf8d7db516918c
+ depends:
+ - __osx >=11.0
+ - libiconv >=1.18,<2.0a0
+ license: LGPL-2.1-or-later
+ purls: []
+ size: 90957
+ timestamp: 1751558394144
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.4.1-h84a0fba_0.conda
+ sha256: 17e035ae6a520ff6a6bb5dd93a4a7c3895891f4f9743bcb8c6ef607445a31cd0
+ md5: b8a7544c83a67258b0e8592ec6a5d322
+ depends:
+ - __osx >=11.0
+ constrains:
+ - jpeg <0.0.0a
+ license: IJG AND BSD-3-Clause AND Zlib
+ purls: []
+ size: 555681
+ timestamp: 1775962975624
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjxl-0.11.2-h934fa54_1.conda
+ sha256: 948cf1370abb58e06a7c9554838c68672ef1d78e01c3fc4e62ccfc3072579645
+ md5: 05bead8980f5ae6a070117dacec38b5b
+ depends:
+ - libcxx >=19
+ - __osx >=11.0
+ - libhwy >=1.4.0,<1.5.0a0
+ - libbrotlienc >=1.2.0,<1.3.0a0
+ - libbrotlidec >=1.2.0,<1.3.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 1032419
+ timestamp: 1777065264956
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.11.0-7_hcb0d94e_accelerate.conda
+ build_number: 7
+ sha256: 9ecf0466775c9f754e8ffa37c0773fe20b2cd3652d6c6c9fe2ef347a7629aeb5
+ md5: 6f9583c773e6e4888826118967413c03
+ depends:
+ - libblas 3.11.0 7_h3d1d584_accelerate
+ constrains:
+ - liblapacke 3.11.0 7*_accelerate
+ - blas 2.307 accelerate
+ - libcblas 3.11.0 7*_accelerate
+ track_features:
+ - blas_accelerate
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 18836
+ timestamp: 1778489984337
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapacke-3.11.0-7_hbdd07e9_accelerate.conda
+ build_number: 7
+ sha256: e2847da6e52411b59fb8a98ac50a8b61f883f9736c03e30b82fc5fc9af65b558
+ md5: bb32266f21b01dc0e37a51fb0b3373c3
+ depends:
+ - libblas 3.11.0 7_h3d1d584_accelerate
+ - libcblas 3.11.0 7_h752f6bc_accelerate
+ - liblapack 3.11.0 7_hcb0d94e_accelerate
+ constrains:
+ - blas 2.307 accelerate
+ track_features:
+ - blas_accelerate
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 18846
+ timestamp: 1778489992110
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm22-22.1.5-h89af1be_1.conda
+ sha256: 23dec5565018f13742b63cdc401d403411fc68713bc6f49dab3854fd4fc4fcc3
+ md5: 2d7889ebb30d8b3425e369f4f262a789
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - libxml2
+ - libxml2-16 >=2.14.6
+ - libzlib >=1.3.2,<2.0a0
+ - zstd >=1.5.7,<1.6.0a0
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
+ purls: []
+ size: 30038795
+ timestamp: 1778412238119
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.3-h8088a28_0.conda
+ sha256: 34878d87275c298f1a732c6806349125cebbf340d24c6c23727268184bba051e
+ md5: b1fd823b5ae54fbec272cea0811bd8a9
+ depends:
+ - __osx >=11.0
+ constrains:
+ - xz 5.8.3.*
+ license: 0BSD
+ purls: []
+ size: 92472
+ timestamp: 1775825802659
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.8.3-h8088a28_0.conda
+ sha256: 3002be39c0e98ec6cd103b0dc2963dc9e0d7cab127fb2fe9a8de9707a76ed1f0
+ md5: ebe1f5418d6e2d4bbc26b2c906a0a470
+ depends:
+ - __osx >=11.0
+ - liblzma 5.8.3 h8088a28_0
+ license: 0BSD
+ purls: []
+ size: 118482
+ timestamp: 1775825828010
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnetcdf-4.10.0-nompi_h7a8d41e_104.conda
+ sha256: db5bd198e5b22277beab224f2e89527fa260d97081bc32dfad797c8530b5eca6
+ md5: a78ca7f5fd6a7431bc0c128c2ce759be
+ depends:
+ - __osx >=11.0
+ - blosc >=1.21.6,<2.0a0
+ - bzip2 >=1.0.8,<2.0a0
+ - hdf4 >=4.2.15,<4.2.16.0a0
+ - hdf5 >=1.14.6,<1.14.7.0a0
+ - libaec >=1.1.5,<2.0a0
+ - libcurl >=8.19.0,<9.0a0
+ - libcxx >=19
+ - libxml2
+ - libxml2-16 >=2.14.6
+ - libzip >=1.11.2,<2.0a0
+ - libzlib >=1.3.2,<2.0a0
+ - openssl >=3.5.6,<4.0a0
+ - zstd >=1.5.7,<1.6.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 679634
+ timestamp: 1776687193083
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.68.1-h8f3e76b_0.conda
+ sha256: 2bc7bc3978066f2c274ebcbf711850cc9ab92e023e433b9631958a098d11e10a
+ md5: 6ea18834adbc3b33df9bd9fb45eaf95b
+ depends:
+ - __osx >=11.0
+ - c-ares >=1.34.6,<2.0a0
+ - libcxx >=19
+ - libev >=4.33,<4.34.0a0
+ - libev >=4.33,<5.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - openssl >=3.5.5,<4.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 576526
+ timestamp: 1773854624224
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libntlm-1.8-h5505292_0.conda
+ sha256: ea8c680924d957e12270dca549620327d5e986f23c4bd5f45627167ca6ef7a3b
+ md5: c90c1d3bd778f5ec0d4bb4ef36cbd5b6
+ depends:
+ - __osx >=11.0
+ license: LGPL-2.1-or-later
+ purls: []
+ size: 31099
+ timestamp: 1734670168822
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h48c0fde_1.conda
+ sha256: 28bd1fe20fe43da105da41b95ac201e95a1616126f287985df8e86ddebd1c3d8
+ md5: 29b8b11f6d7e6bd0e76c029dcf9dd024
+ depends:
+ - __osx >=11.0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 216719
+ timestamp: 1745826006052
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.26.0-h08d5cc3_0.conda
+ sha256: 47ce35cc7b903d546cc8ac0a09abfab7aea955147dc18bb2c9eaa5dc7c378a37
+ md5: 8cb49289db7cfec1dea3bf7e0e4f0c8d
+ depends:
+ - libabseil * cxx17*
+ - libabseil >=20260107.1,<20260108.0a0
+ - libcurl >=8.19.0,<9.0a0
+ - libgrpc >=1.78.0,<1.79.0a0
+ - libopentelemetry-cpp-headers 1.26.0 hce30654_0
+ - libprotobuf >=6.33.5,<6.33.6.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - nlohmann_json
+ - prometheus-cpp >=1.3.0,<1.4.0a0
+ constrains:
+ - cpp-opentelemetry-sdk =1.26.0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 579527
+ timestamp: 1774001294901
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.26.0-hce30654_0.conda
+ sha256: 17f18bab128650598d2f09ae653ab406b9f049e0692b4519a2cf09a6f1603ee9
+ md5: efdb13315f1041c7750214a20c1ab162
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 396412
+ timestamp: 1774001222028
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-2026.0.0-h3e6d54f_1.conda
+ sha256: ffbd4a3c8540dfaddbdd68cf3073967a3c8faadd97d7df912f73734e53f9213e
+ md5: 8e140a6e2a1db294892a8da72c9afb0e
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - pugixml >=1.15,<1.16.0a0
+ - tbb >=2022.3.0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 4515660
+ timestamp: 1772716610278
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-arm-cpu-plugin-2026.0.0-h3e6d54f_1.conda
+ sha256: 352ebc24805cb756ef11afa5c9606b3e19da99e434afc35cddc356538b5ec49d
+ md5: 48f3117552be579619620f3b6768b52f
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - libopenvino 2026.0.0 h3e6d54f_1
+ - pugixml >=1.15,<1.16.0a0
+ - tbb >=2022.3.0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 8759182
+ timestamp: 1772716648998
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-auto-batch-plugin-2026.0.0-h2406d2e_1.conda
+ sha256: 1cbbf43149334ccf793f782bd0924e08e5952c667578ac33a33076a4ab54ad47
+ md5: 6012967b53bf790c2ad9160c2779d7bc
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - libopenvino 2026.0.0 h3e6d54f_1
+ - tbb >=2022.3.0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 105710
+ timestamp: 1772716704250
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-auto-plugin-2026.0.0-h2406d2e_1.conda
+ sha256: fa6c01a897ccc92998cae1e75ac65c68f311ad0834182801d5d3139ac307309f
+ md5: 52839e682c6bde645a9f4cdcdfc33639
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - libopenvino 2026.0.0 h3e6d54f_1
+ - tbb >=2022.3.0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 213574
+ timestamp: 1772716732087
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-hetero-plugin-2026.0.0-h85cbfa6_1.conda
+ sha256: 18e6b6d061d27049e2a34fbd1a633209294eb700aa7eee7a3d2877ce4d45888b
+ md5: 77d314ff80fb262dbe061527dec60263
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - libopenvino 2026.0.0 h3e6d54f_1
+ - pugixml >=1.15,<1.16.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 184975
+ timestamp: 1772716757394
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-ir-frontend-2026.0.0-h85cbfa6_1.conda
+ sha256: 166792875fe62f90a528a4931f29ea18cf74694469870e98c8772460f92fc653
+ md5: c7f37a124ab9a53444d213a3db5f9747
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - libopenvino 2026.0.0 h3e6d54f_1
+ - pugixml >=1.15,<1.16.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 172169
+ timestamp: 1772716782643
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-onnx-frontend-2026.0.0-h41365f2_1.conda
+ sha256: eb307ee1ad8eb47aa011d03d77995bfd1153b80893ab5880fd928093ad50cab4
+ md5: 8d32df9ac0c17ba2735e26be190399f6
+ depends:
+ - __osx >=11.0
+ - libabseil * cxx17*
+ - libabseil >=20260107.1,<20260108.0a0
+ - libcxx >=19
+ - libopenvino 2026.0.0 h3e6d54f_1
+ - libprotobuf >=6.33.5,<6.33.6.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 1425474
+ timestamp: 1772716809587
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-paddle-frontend-2026.0.0-h41365f2_1.conda
+ sha256: e3ca93158beac502b65256ae78736889e8b40184b0dc938a1b8136ae2a0c3a4d
+ md5: 6c821b72c8e5b0467f3d39a33e357064
+ depends:
+ - __osx >=11.0
+ - libabseil * cxx17*
+ - libabseil >=20260107.1,<20260108.0a0
+ - libcxx >=19
+ - libopenvino 2026.0.0 h3e6d54f_1
+ - libprotobuf >=6.33.5,<6.33.6.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 434092
+ timestamp: 1772716839090
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-pytorch-frontend-2026.0.0-hf6b4638_1.conda
+ sha256: c694e5dc1bbb2ea876e65c8c33b148a24f56b5f7a60f8449ca62b159d9020709
+ md5: 7cd9c1d466e5be74f5cb32f545b1b887
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - libopenvino 2026.0.0 h3e6d54f_1
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 823766
+ timestamp: 1772716865028
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-tensorflow-frontend-2026.0.0-hc295da0_1.conda
+ sha256: f680809aef09ca68d7446e3f1810ca3f3d9f744cbfe3a8d8ec9bd807f17d80fd
+ md5: 09d1d2b4e5648afd706e2252299087f4
+ depends:
+ - __osx >=11.0
+ - libabseil * cxx17*
+ - libabseil >=20260107.1,<20260108.0a0
+ - libcxx >=19
+ - libopenvino 2026.0.0 h3e6d54f_1
+ - libprotobuf >=6.33.5,<6.33.6.0a0
+ - snappy >=1.2.2,<1.3.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 910147
+ timestamp: 1772716892527
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-tensorflow-lite-frontend-2026.0.0-hf6b4638_1.conda
+ sha256: 3079cdc940a7e0b84376845accefd084f9a01c37af5901083ae47cc02fd5723d
+ md5: 361b9eb57e71939cf3d35fa1145a6325
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - libopenvino 2026.0.0 h3e6d54f_1
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 379126
+ timestamp: 1772716918802
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.6.1-h1a92334_0.conda
+ sha256: 5c95a5f7712f543c59083e62fc3a95efec8b7f3773fbf4542ad1fb87fbf51ff4
+ md5: 7f414dd3fd1cb7a76e51fec074a9c49e
+ depends:
+ - __osx >=11.0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 308000
+ timestamp: 1768497248058
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-24.0.0-h16c0493_1_cpu.conda
+ build_number: 1
+ sha256: 72e5dc5747144cc4e8ea4c287509c69c6f8d1c72a678285e39e3df76867cef5b
+ md5: 5b32ce08a542383f4c72cdee323979e8
+ depends:
+ - __osx >=11.0
+ - libabseil * cxx17*
+ - libabseil >=20260107.1,<20260108.0a0
+ - libarrow 24.0.0 h37fbca7_1_cpu
+ - libcxx >=21
+ - libopentelemetry-cpp >=1.26.0,<1.27.0a0
+ - libprotobuf >=6.33.5,<6.33.6.0a0
+ - libthrift >=0.22.0,<0.22.1.0a0
+ - openssl >=3.5.6,<4.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 1098422
+ timestamp: 1778175143698
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libplacebo-7.360.1-h176d363_0.conda
+ sha256: e9b39572e2feaef496167ba9f4ab75ed3afa4c16c3aeb0bb8c71adc515a74536
+ md5: 7402fdef0c155dcd18c0ff4c5853c4b2
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - libdovi >=3.3.2,<4.0a0
+ - shaderc >=2026.2,<2026.3.0a0
+ - libvulkan-loader >=1.4.341.0,<2.0a0
+ - lcms2 >=2.19,<3.0a0
+ license: LGPL-2.1-or-later
+ purls: []
+ size: 529463
+ timestamp: 1777836126438
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.58-h132b30e_0.conda
+ sha256: 66eae34546df1f098a67064970c92aa14ae7a7505091889e00468294d2882c36
+ md5: 2259ae0949dbe20c0665850365109b27
+ depends:
+ - __osx >=11.0
+ - libzlib >=1.3.2,<2.0a0
+ license: zlib-acknowledgement
+ purls: []
+ size: 289546
+ timestamp: 1776315246750
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpq-18.3-hd341ff2_0.conda
+ sha256: 625b59f5b3c750a2e4c5a0a4ade5b4f1c3d6b8d6a781797324344c03270a529a
+ md5: fc064efe5042bcaf994307822ccbb1f1
+ depends:
+ - __osx >=11.0
+ - icu >=78.2,<79.0a0
+ - krb5 >=1.22.2,<1.23.0a0
+ - openldap >=2.6.10,<2.7.0a0
+ - openssl >=3.5.5,<4.0a0
+ license: PostgreSQL
+ purls: []
+ size: 2705141
+ timestamp: 1772136813226
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-6.33.5-h4a5acfd_0.conda
+ sha256: 626852cd50690526c9eac216a9f467edd4cbb01060d0efe41b7def10b54bdb08
+ md5: b839e3295b66434f20969c8b940f056a
+ depends:
+ - __osx >=11.0
+ - libabseil * cxx17*
+ - libabseil >=20260107.0,<20260108.0a0
+ - libcxx >=19
+ - libzlib >=1.3.1,<2.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 2713660
+ timestamp: 1769748299578
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2025.11.05-h4c27e2a_1.conda
+ sha256: 1e2d23bbc1ffca54e4912365b7b59992b7ae5cbeb892779a6dcd9eca9f71c428
+ md5: 40d8ad21be4ccfff83a314076c3563f4
+ depends:
+ - __osx >=11.0
+ - libabseil * cxx17*
+ - libabseil >=20260107.0,<20260108.0a0
+ - libcxx >=19
+ constrains:
+ - re2 2025.11.05.*
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 165851
+ timestamp: 1768190225157
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.62.1-he8aa2a2_0.conda
+ sha256: 4d28ad0213fca6f93624c27f13493b986ce63e05386d2ff7a2ad723c4e7c7cec
+ md5: 4766fd69e64e477b500eb901dbe7bb6b
+ depends:
+ - __osx >=11.0
+ - cairo >=1.18.4,<2.0a0
+ - fontconfig >=2.17.1,<3.0a0
+ - fonts-conda-ecosystem
+ - gdk-pixbuf >=2.44.5,<3.0a0
+ - harfbuzz >=13.1.1
+ - libglib >=2.86.4,<3.0a0
+ - libxml2-16 >=2.14.6
+ - pango >=1.56.4,<2.0a0
+ constrains:
+ - __osx >=11.0
+ license: LGPL-2.1-or-later
+ purls: []
+ size: 2402915
+ timestamp: 1773816188394
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsigtool-0.1.3-h98dc951_0.conda
+ sha256: 421f7bd7caaa945d9cd5d374cc3f01e75637ca7372a32d5e7695c825a48a30d1
+ md5: c08557d00807785decafb932b5be7ef5
+ depends:
+ - __osx >=11.0
+ - openssl >=3.5.4,<4.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 36416
+ timestamp: 1767045062496
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.21-h1a92334_3.conda
+ sha256: df603472ea1ebd8e7d4fb71e4360fe48d10b11c240df51c129de1da2ff9e8227
+ md5: 7cc5247987e6d115134ebab15186bc13
+ depends:
+ - __osx >=11.0
+ license: ISC
+ purls: []
+ size: 248039
+ timestamp: 1772479570912
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.53.1-h1b79a29_0.conda
+ sha256: 49daec7c83e70d4efc17b813547824bc2bcf2f7256d84061d24fbfe537da9f74
+ md5: 6681822ea9d362953206352371b6a904
+ depends:
+ - __osx >=11.0
+ - libzlib >=1.3.2,<2.0a0
+ license: blessing
+ purls: []
+ size: 920047
+ timestamp: 1777987051643
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h1590b86_0.conda
+ sha256: 8bfe837221390ffc6f111ecca24fa12d4a6325da0c8d131333d63d6c37f27e0a
+ md5: b68e8f66b94b44aaa8de4583d3d4cc40
+ depends:
+ - libzlib >=1.3.1,<2.0a0
+ - openssl >=3.5.0,<4.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 279193
+ timestamp: 1745608793272
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtensorflow_cc-2.19.1-cpu_he004e32_5.conda
+ sha256: c837eabe8f2c7b525528066591893b4ef5824586699546e0d2fb88c19f73e178
+ md5: b3ce8a2d91f9e512afb54b1c275edca9
+ depends:
+ - libml_dtypes-headers >=0.5.1,<0.6
+ - libtensorflow_framework ==2.19.1 cpu_h3441331_5
+ - __osx >=11.0
+ - libcxx >=19
+ - libprotobuf >=6.33.5,<6.33.6.0a0
+ - openssl >=3.5.6,<4.0a0
+ - libabseil >=20260107.1,<20260108.0a0
+ - libabseil * cxx17*
+ - icu >=78.3,<79.0a0
+ - libcurl >=8.20.0,<9.0a0
+ - snappy >=1.2.2,<1.3.0a0
+ - libjpeg-turbo >=3.1.4.1,<4.0a0
+ - flatbuffers >=25.9.23,<25.9.24.0a0
+ - libsqlite >=3.53.1,<4.0a0
+ - libzlib >=1.3.2,<2.0a0
+ - libgrpc >=1.78.1,<1.79.0a0
+ - libpng >=1.6.58,<1.7.0a0
+ - giflib >=5.2.2,<5.3.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 137616400
+ timestamp: 1778106412562
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtensorflow_framework-2.19.1-cpu_h3441331_5.conda
+ sha256: 8873ad429159f54a36eceecc21615a9e7a8f82b30c0731da9d8abfb65ddb8401
+ md5: a74afedaa52fde24ac79bbb04ab7a9ac
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - libprotobuf >=6.33.5,<6.33.6.0a0
+ - openssl >=3.5.6,<4.0a0
+ - libabseil >=20260107.1,<20260108.0a0
+ - libabseil * cxx17*
+ - icu >=78.3,<79.0a0
+ - libcurl >=8.20.0,<9.0a0
+ - snappy >=1.2.2,<1.3.0a0
+ - libjpeg-turbo >=3.1.4.1,<4.0a0
+ - flatbuffers >=25.9.23,<25.9.24.0a0
+ - libsqlite >=3.53.1,<4.0a0
+ - libzlib >=1.3.2,<2.0a0
+ - libgrpc >=1.78.1,<1.79.0a0
+ - libpng >=1.6.58,<1.7.0a0
+ - giflib >=5.2.2,<5.3.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 8850906
+ timestamp: 1778106412562
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtheora-1.1.1-h99b78c6_1006.conda
+ sha256: 05d8f9a4ae6669ebf8d69ec7f62c47b197b885ff989641d8a8043a1159d50c22
+ md5: 4b0af7570b8af42ac6796da8777589d1
+ depends:
+ - __osx >=11.0
+ - libogg 1.3.*
+ - libogg >=1.3.5,<1.4.0a0
+ - libvorbis 1.3.*
+ - libvorbis >=1.3.7,<1.4.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 282764
+ timestamp: 1719667898064
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.22.0-h1fb9c8a_2.conda
+ sha256: 568bb23db02b050c3903bec05edbcab84960c8c7e5a1710dac3109df997ac7f1
+ md5: d006875f9a58a44f92aec9a7ebeb7150
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - libevent >=2.1.12,<2.1.13.0a0
+ - libzlib >=1.3.2,<2.0a0
+ - openssl >=3.5.6,<4.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 323017
+ timestamp: 1777019893083
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.1-h4030677_1.conda
+ sha256: e9248077b3fa63db94caca42c8dbc6949c6f32f94d1cafad127f9005d9b1507f
+ md5: e2a72ab2fa54ecb6abab2b26cde93500
+ depends:
+ - __osx >=11.0
+ - lerc >=4.0.0,<5.0a0
+ - libcxx >=19
+ - libdeflate >=1.25,<1.26.0a0
+ - libjpeg-turbo >=3.1.0,<4.0a0
+ - liblzma >=5.8.1,<6.0a0
+ - libwebp-base >=1.6.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - zstd >=1.5.7,<1.6.0a0
+ license: HPND
+ purls: []
+ size: 373892
+ timestamp: 1762022345545
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtorch-2.10.0-cpu_generic_hf7cc835_3.conda
+ sha256: a47f1ec77004982a78e3e1533d841bea0930c22594c12bc67e2cb74cd7709b97
+ md5: 98f89ad42eaba858443d31336677aed2
+ depends:
+ - __osx >=11.0
+ - fmt >=12.1.0,<12.2.0a0
+ - libabseil * cxx17*
+ - libabseil >=20260107.1,<20260108.0a0
+ - libblas >=3.9.0,<4.0a0
+ - libcblas >=3.9.0,<4.0a0
+ - libcxx >=19
+ - liblapack >=3.9.0,<4.0a0
+ - libprotobuf >=6.33.5,<6.33.6.0a0
+ - libuv >=1.51.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - llvm-openmp >=19.1.7
+ - pybind11-abi 11
+ - sleef >=3.9.0,<4.0a0
+ constrains:
+ - pytorch-cpu 2.10.0
+ - openblas * openmp_*
+ - pytorch-gpu <0.0a0
+ - libopenblas * openmp_*
+ - pytorch 2.10.0 cpu_generic_*_3
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 30298089
+ timestamp: 1772181525404
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libusb-1.0.29-hbc156a2_0.conda
+ sha256: 5eee9a2bf359e474d4548874bcfc8d29ebad0d9ba015314439c256904e40aaad
+ md5: f6654e9e96e9d973981b3b2f898a5bfa
+ depends:
+ - __osx >=11.0
+ license: LGPL-2.1-or-later
+ purls: []
+ size: 83849
+ timestamp: 1748856224950
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.11.3-h2431656_0.conda
+ sha256: ae1a82e62cd4e3c18e005ae7ff4358ed72b2bfbfe990d5a6a5587f81e9a100dc
+ md5: 2255add2f6ae77d0a96624a5cbde6d45
+ depends:
+ - __osx >=11.0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 87916
+ timestamp: 1768735311947
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.51.0-h6caf38d_1.conda
+ sha256: 042c7488ad97a5629ec0a991a8b2a3345599401ecc75ad6a5af73b60e6db9689
+ md5: c0d87c3c8e075daf1daf6c31b53e8083
+ depends:
+ - __osx >=11.0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 421195
+ timestamp: 1753948426421
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvorbis-1.3.7-h81086ad_2.conda
+ sha256: 95768e4eceaffb973081fd986d03da15d93aa10609ed202e6fd5ca1e490a3dce
+ md5: 719e7653178a09f5ca0aa05f349b41f7
+ depends:
+ - libogg
+ - libcxx >=19
+ - __osx >=11.0
+ - libogg >=1.3.5,<1.4.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 259122
+ timestamp: 1753879389702
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvpx-1.15.2-ha759d40_0.conda
+ sha256: d21729b04fe101d1b2f8cdd607faacf1070abba3702db699787a3fe026eeaca6
+ md5: 0d2febd301e25a48e00447b300d68f9c
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 1192913
+ timestamp: 1762010603501
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvulkan-loader-1.4.341.0-h3feff0a_0.conda
+ sha256: d2790dafc9149b1acd45b9033d02cfa3f3e9ee5af97bd61e0a5718c414a0a135
+ md5: 6b4c9a5b130759136a0dde0c373cb0ea
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ constrains:
+ - libvulkan-headers 1.4.341.0.*
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 180304
+ timestamp: 1770077143460
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda
+ sha256: a4de3f371bb7ada325e1f27a4ef7bcc81b2b6a330e46fac9c2f78ac0755ea3dd
+ md5: e5e7d467f80da752be17796b87fe6385
+ depends:
+ - __osx >=11.0
+ constrains:
+ - libwebp 1.6.0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 294974
+ timestamp: 1752159906788
+- conda: https://conda.anaconda.org/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://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.3-h5ef1a60_0.conda
+ sha256: ff75b84cdb9e8d123db2fa694a8ac2c2059516b6cbc98ac21fb68e235d0fd354
+ md5: 19edaa53885fc8205614b03da2482282
+ depends:
+ - __osx >=11.0
+ - icu >=78.3,<79.0a0
+ - libiconv >=1.18,<2.0a0
+ - liblzma >=5.8.3,<6.0a0
+ - libzlib >=1.3.2,<2.0a0
+ constrains:
+ - libxml2 2.15.3
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 466360
+ timestamp: 1776377102261
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.3-h5654f7c_0.conda
+ sha256: 2fe1d8de0854342ae9cabe408b476935f82f5636e153b3b497456264dc8ff3a1
+ md5: 8e037d73747d6fe34e12d7bcac10cf21
+ depends:
+ - __osx >=11.0
+ - icu >=78.3,<79.0a0
+ - libiconv >=1.18,<2.0a0
+ - liblzma >=5.8.3,<6.0a0
+ - libxml2-16 2.15.3 h5ef1a60_0
+ - libzlib >=1.3.2,<2.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 41102
+ timestamp: 1776377119495
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzip-1.11.2-h1336266_0.conda
+ sha256: 507599a77c1ce823c2d3acaefaae4ead0686f183f3980467a4c4b8ba209eff40
+ md5: 7177414f275db66735a17d316b0a81d6
+ depends:
+ - __osx >=11.0
+ - bzip2 >=1.0.8,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - openssl >=3.3.2,<4.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 125507
+ timestamp: 1730442214849
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.2-h8088a28_2.conda
+ sha256: 361415a698514b19a852f5d1123c5da746d4642139904156ddfca7c922d23a05
+ md5: bc5a5721b6439f2f62a84f2548136082
+ depends:
+ - __osx >=11.0
+ constrains:
+ - zlib 1.3.2 *_2
+ license: Zlib
+ license_family: Other
+ purls: []
+ size: 47759
+ timestamp: 1774072956767
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-22.1.5-hc7d1edf_1.conda
+ sha256: 2cd49562feda2bf324651050b2b035080fd635ed0f1c96c9ce7a59eff3cc0029
+ md5: 8a4e2a54034b35bc6fa5bf9282913f45
+ depends:
+ - __osx >=11.0
+ constrains:
+ - openmp 22.1.5|22.1.5.*
+ - intel-openmp <0.0a0
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: APACHE
+ purls: []
+ size: 285806
+ timestamp: 1778447786965
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-22-22.1.5-hb545844_1.conda
+ sha256: b07a4e463a52e5a1bdaf9ca413a6495fa46aa1446ceadd6ba1ff168f386716e5
+ md5: c33fcec235638c72a2084657b038c541
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - libllvm22 22.1.5 h89af1be_1
+ - libzlib >=1.3.2,<2.0a0
+ - zstd >=1.5.7,<1.6.0a0
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
+ purls: []
+ size: 17835396
+ timestamp: 1778412358363
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-22.1.5-hd34ed20_1.conda
+ sha256: 9e791556dddfd53363732fa369655536c21f7492d0ff35587172b810d8d9fad4
+ md5: 9db24df0a236587f7fd247cbc6f66d92
+ depends:
+ - __osx >=11.0
+ - libllvm22 22.1.5 h89af1be_1
+ - llvm-tools-22 22.1.5 hb545844_1
+ constrains:
+ - llvm 22.1.5
+ - clang 22.1.5
+ - clang-tools 22.1.5
+ - llvmdev 22.1.5
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
+ purls: []
+ size: 52214
+ timestamp: 1778412425638
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvmlite-0.47.0-py312h7ca588d_1.conda
+ sha256: dc8477d74574e5b4bd4b45882f021a95f8a311b66633869e9b4d750e00a81add
+ md5: 24c6c9295e1048c90b8b1c3e9b6340f0
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - libzlib >=1.3.2,<2.0a0
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ - zstd >=1.5.7,<1.6.0a0
+ license: BSD-2-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/llvmlite?source=hash-mapping
+ size: 24314492
+ timestamp: 1776077372867
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-4.4.5-py312h2b25a0d_1.conda
+ sha256: fb2c6c6d0078cc7097f71ca4117adfb013163dd7845d3a7b90c80cf8c324b2e3
+ md5: 43132aaf61e6d8a59624b2da26aec518
+ depends:
+ - python
+ - lz4-c
+ - __osx >=11.0
+ - python 3.12.* *_cpython
+ - lz4-c >=1.10.0,<1.11.0a0
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/lz4?source=hash-mapping
+ size: 125772
+ timestamp: 1765026411222
+- conda: https://conda.anaconda.org/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://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.3-py312h04c11ed_1.conda
+ sha256: 330394fb9140995b29ae215a19fad46fcc6691bdd1b7654513d55a19aaa091c1
+ md5: 11d95ab83ef0a82cc2de12c1e0b47fe4
+ depends:
+ - __osx >=11.0
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - jinja2 >=3.0.0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/markupsafe?source=hash-mapping
+ size: 25564
+ timestamp: 1772445846939
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-3.10.9-py312h1f38498_0.conda
+ sha256: 79d518d9556ce81ff4e55e3e947a5a8cb6b1c4a101536e86ab90c34d2c80efcf
+ md5: 94174d301ce2f5962197fb9b880ea8ff
+ depends:
+ - matplotlib-base >=3.10.9,<3.10.10.0a0
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - tornado >=5
+ license: PSF-2.0
+ license_family: PSF
+ purls: []
+ size: 17770
+ timestamp: 1777001080046
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.9-py312hf3defc7_0.conda
+ sha256: c2dc997012fb8a901163cdad333ba5ba27733aa26d67a28a6501f4b4d69fcbce
+ md5: e5d83f3ae6ada32d4e64e366a41f9ff6
+ depends:
+ - __osx >=11.0
+ - contourpy >=1.0.1
+ - cycler >=0.10
+ - fonttools >=4.22.0
+ - freetype
+ - kiwisolver >=1.3.1
+ - libcxx >=19
+ - libfreetype >=2.14.3
+ - libfreetype6 >=2.14.3
+ - numpy >=1.23
+ - numpy >=1.23,<3
+ - packaging >=20.0
+ - pillow >=8
+ - pyparsing >=2.3.1
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python-dateutil >=2.7
+ - python_abi 3.12.* *_cp312
+ - qhull >=2020.2,<2020.3.0a0
+ license: PSF-2.0
+ license_family: PSF
+ purls:
+ - pkg:pypi/matplotlib?source=hash-mapping
+ size: 8191891
+ timestamp: 1777001043842
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mesalib-26.0.3-h6616f17_0.conda
+ sha256: 1e20c96b96d0ca05fbacc6e0d0f3839e9dce5cf93bd7dc96ab3ce238fa732680
+ md5: 6fa08e5346520c364de1b96b231e959e
+ depends:
+ - libcxx >=20
+ - __osx >=12.3
+ - libexpat >=2.7.4,<3.0a0
+ - zstd >=1.5.7,<1.6.0a0
+ - spirv-tools >=2026,<2027.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - libllvm22 >=22.1.1,<22.2.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 2547385
+ timestamp: 1773868300799
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.5.4-np2py312h60fbb24_1.conda
+ sha256: 8a0d3e818b44af3b300d169396d807467eebd292505a96ffce5dd4d7c8731942
+ md5: 75b22b97f4e00dd1bcdf6e9c9d8610bb
+ depends:
+ - python
+ - python 3.12.* *_cpython
+ - libcxx >=19
+ - __osx >=11.0
+ - numpy >=1.23,<3
+ - python_abi 3.12.* *_cp312
+ license: MPL-2.0 AND Apache-2.0
+ purls:
+ - pkg:pypi/ml-dtypes?source=hash-mapping
+ size: 243518
+ timestamp: 1771362387850
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.4.0-h169892a_0.conda
+ sha256: a9774664adea222e4165efddcd902641c03c7d08fda3a83a5b0885e675ead309
+ md5: 2845c3a1d0d8da1db92aba8323892475
+ depends:
+ - __osx >=11.0
+ - gmp >=6.3.0,<7.0a0
+ - mpfr >=4.2.2,<5.0a0
+ license: LGPL-3.0-or-later
+ license_family: LGPL
+ purls: []
+ size: 86181
+ timestamp: 1774472395307
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.2-h6bc93b0_0.conda
+ sha256: af5eca85f7ffdd403275e916f1de40a7d4b48ae138f12479523d9500c6a073ba
+ md5: a47a14da2103c9c7a390f7c8bc8d7f9b
+ depends:
+ - __osx >=11.0
+ - gmp >=6.3.0,<7.0a0
+ license: LGPL-3.0-only
+ license_family: LGPL
+ purls: []
+ size: 348767
+ timestamp: 1773414111071
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/msgpack-python-1.1.2-py312h84eede6_1.conda
+ sha256: 1540339678e13365001453fdcb698887075a2b326d5fab05cfd0f4fdefae4eab
+ md5: e3973f0ac5ac854bf86f0d5674a1a289
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ license: Apache-2.0
+ license_family: Apache
+ purls:
+ - pkg:pypi/msgpack?source=hash-mapping
+ size: 91268
+ timestamp: 1762504467174
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.7.1-py312h43af8aa_0.conda
+ sha256: d7f2c4137271b158a452d02a5a3c4ceade8e8e75352fc90a4360f4a7eda9be9f
+ md5: 8094abe00f22955a9396d91c690f36e8
+ depends:
+ - __osx >=11.0
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/multidict?source=hash-mapping
+ size: 87852
+ timestamp: 1771611147963
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.19-py312hb3ab3e3_0.conda
+ sha256: e6684816e5cd74b664ba2adbcfdbfa9434702690a2ba10f62ed41566ed5b38d1
+ md5: 7aa7f3104e4fe84565e0b9a77086736f
+ depends:
+ - python
+ - dill >=0.4.1
+ - python 3.12.* *_cpython
+ - __osx >=11.0
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/multiprocess?source=hash-mapping
+ size: 371957
+ timestamp: 1769086875473
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-1.20.2-py312hefc2c51_0.conda
+ sha256: 1e51597a605b2160bce7348cfa98ba50bb9d1f8a9c84c900ec439bde5c7da255
+ md5: 7b0f9713b276fe257a55a4a0087bafa7
+ depends:
+ - __osx >=11.0
+ - mypy_extensions >=1.0.0
+ - pathspec >=1.0.0
+ - psutil >=4.0
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python-librt >=0.8.0
+ - python_abi 3.12.* *_cp312
+ - typing_extensions >=4.6.0
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/mypy?source=hash-mapping
+ size: 11889344
+ timestamp: 1776803962764
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.6-h1d4f5a5_0.conda
+ sha256: 4ea6c620b87bd1d42bb2ccc2c87cd2483fa2d7f9e905b14c223f11ff3f4c455d
+ md5: 343d10ed5b44030a2f67193905aea159
+ depends:
+ - __osx >=11.0
+ license: X11 AND BSD-3-Clause
+ purls: []
+ size: 805509
+ timestamp: 1777423252320
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/netcdf4-1.7.4-nompi_py311h8d5b1ca_107.conda
+ noarch: python
+ sha256: 7a970ec23c8bbc28ca4b9e87f9f433e88652be4a486b985b734a24aa99a390e3
+ md5: d8b44220d12594fcfb4461fde6c4e803
+ depends:
+ - python
+ - certifi
+ - cftime
+ - numpy
+ - packaging
+ - hdf5
+ - libnetcdf
+ - __osx >=11.0
+ - libzlib >=1.3.2,<2.0a0
+ - numpy >=1.23,<3
+ - _python_abi3_support 1.*
+ - cpython >=3.11
+ - hdf5 >=1.14.6,<1.14.7.0a0
+ - libnetcdf >=4.10.0,<4.10.1.0a0
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/netcdf4?source=hash-mapping
+ size: 996533
+ timestamp: 1774640101490
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.12.0-h784d473_1.conda
+ sha256: 1945fd5b64b74ef3d57926156fb0bfe88ee637c49f3273067f7231b224f1d26d
+ md5: 755cfa6c08ed7b7acbee20ccbf15a47c
+ constrains:
+ - nlohmann_json-abi ==3.12.0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 137595
+ timestamp: 1768670878127
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numba-0.65.1-py312h2d3d6e9_1.conda
+ sha256: 304cc4894ed021d6101801219449afcca1179c7f1c700cc7a87b543a9bbbc7e7
+ md5: 489bd27f778c3194664c82447b73bc96
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - llvm-openmp >=19.1.7
+ - llvmlite >=0.47.0,<0.48.0a0
+ - numpy >=1.22.3,<2.5
+ - numpy >=1.23,<3
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - libopenblas >=0.3.18,!=0.3.20
+ - scipy >=1.0
+ - tbb >=2021.6.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: 5721304
+ timestamp: 1778390934553
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.4.4-py312ha003a3f_0.conda
+ sha256: 817fd3c66965a3d9750bd420af52a12e85dfc769a1fe1162170680f4cd58d873
+ md5: 47a61f04473bcc6121d449ee7f67f799
+ depends:
+ - python
+ - libcxx >=19
+ - __osx >=11.0
+ - python_abi 3.12.* *_cp312
+ - libblas >=3.9.0,<4.0a0
+ - liblapack >=3.9.0,<4.0a0
+ - libcblas >=3.9.0,<4.0a0
+ constrains:
+ - numpy-base <0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/numpy?source=compressed-mapping
+ size: 6840412
+ timestamp: 1778655476542
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openh264-2.6.0-hb5b2745_0.conda
+ sha256: fbea05722a8e8abfb41c989e2cec7ba6597eabe27cb6b88ff0b6443a5abb9069
+ md5: 6ff0890a94972aca7cc7f8f8ef1ff142
+ depends:
+ - __osx >=11.0
+ - libcxx >=18
+ license: BSD-2-Clause
+ license_family: BSD
+ purls: []
+ size: 601538
+ timestamp: 1739400923874
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.4-hd9e9057_0.conda
+ sha256: 60aca8b9f94d06b852b296c276b3cf0efba5a6eb9f25feb8708570d3a74f00e4
+ md5: 4b5d3a91320976eec71678fad1e3569b
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - libpng >=1.6.55,<1.7.0a0
+ - libtiff >=4.7.1,<4.8.0a0
+ - libzlib >=1.3.1,<2.0a0
+ license: BSD-2-Clause
+ license_family: BSD
+ purls: []
+ size: 319697
+ timestamp: 1772625397692
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openldap-2.6.13-hf7f56bc_0.conda
+ sha256: 4a7b691a5b2241ee10f59a9e51f68be4cf1e4294829cebb40d198139a561e780
+ md5: 7940b03e5c1e85b0c8b8a74f3011783f
+ depends:
+ - __osx >=11.0
+ - cyrus-sasl >=2.1.28,<3.0a0
+ - krb5 >=1.22.2,<1.23.0a0
+ - libcxx >=19
+ - openssl >=3.5.6,<4.0a0
+ license: OLDAP-2.8
+ license_family: BSD
+ purls: []
+ size: 844724
+ timestamp: 1775742074928
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.2-hd24854e_0.conda
+ sha256: c91bf510c130a1ea1b6ff023e28bac0ccaef869446acd805e2016f69ebdc49ea
+ md5: 25dcccd4f80f1638428613e0d7c9b4e1
+ depends:
+ - __osx >=11.0
+ - ca-certificates
+ license: Apache-2.0
+ license_family: Apache
+ purls: []
+ size: 3106008
+ timestamp: 1775587972483
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/optree-0.19.1-py312h766f71e_0.conda
+ sha256: 9a5d3944bd6281fb2f2004d06ff3caa60846c642c7a739a9026b037833cda57f
+ md5: af48088edf339bdea37725f49d4fefea
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ - typing-extensions >=4.6
+ license: Apache-2.0
+ license_family: Apache
+ purls:
+ - pkg:pypi/optree?source=hash-mapping
+ size: 437049
+ timestamp: 1778048481638
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.3.0-hd11884d_0.conda
+ sha256: 8594f064828cca9b8d625e2ebe79436fd4ffc030c950573380c54a8f4329f955
+ md5: 77bfe521901c1a247cc66c1276826a85
+ depends:
+ - tzdata
+ - libcxx >=19
+ - __osx >=11.0
+ - zstd >=1.5.7,<1.6.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - snappy >=1.2.2,<1.3.0a0
+ - libprotobuf >=6.33.5,<6.33.6.0a0
+ - libabseil >=20260107.1,<20260108.0a0
+ - libabseil * cxx17*
+ - lz4-c >=1.10.0,<1.11.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 548180
+ timestamp: 1773230270828
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-3.0.3-py312h6510ced_0.conda
+ sha256: 7202013525593f57a452dac7e5fee9f26478822be3ba5c893643517b8627406d
+ md5: 4581a32b837950217327fcab93214313
+ depends:
+ - python
+ - numpy >=1.26.0
+ - python-dateutil >=2.8.2
+ - __osx >=11.0
+ - python 3.12.* *_cpython
+ - libcxx >=19
+ - python_abi 3.12.* *_cp312
+ - numpy >=1.23,<3
+ constrains:
+ - adbc-driver-postgresql >=1.2.0
+ - adbc-driver-sqlite >=1.2.0
+ - beautifulsoup4 >=4.12.3
+ - blosc >=1.21.3
+ - bottleneck >=1.4.2
+ - fastparquet >=2024.11.0
+ - fsspec >=2024.10.0
+ - gcsfs >=2024.10.0
+ - html5lib >=1.1
+ - hypothesis >=6.116.0
+ - jinja2 >=3.1.5
+ - lxml >=5.3.0
+ - matplotlib >=3.9.3
+ - numba >=0.60.0
+ - numexpr >=2.10.2
+ - odfpy >=1.4.1
+ - openpyxl >=3.1.5
+ - psycopg2 >=2.9.10
+ - pyarrow >=13.0.0
+ - pyiceberg >=0.8.1
+ - pymysql >=1.1.1
+ - pyqt5 >=5.15.9
+ - pyreadstat >=1.2.8
+ - pytables >=3.10.1
+ - pytest >=8.3.4
+ - pytest-xdist >=3.6.1
+ - python-calamine >=0.3.0
+ - pytz >=2024.2
+ - pyxlsb >=1.0.10
+ - qtpy >=2.4.2
+ - scipy >=1.14.1
+ - s3fs >=2024.10.0
+ - sqlalchemy >=2.0.36
+ - tabulate >=0.9.0
+ - xarray >=2024.10.0
+ - xlrd >=2.0.1
+ - xlsxwriter >=3.2.0
+ - zstandard >=0.23.0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/pandas?source=compressed-mapping
+ size: 13926263
+ timestamp: 1778602825408
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandoc-3.9.0.2-hce30654_0.conda
+ sha256: 2074598145bf286490d232c6f0a3d301403305d56f5c45a0170f44bc00fde8e5
+ md5: 81203e2c973f049afba930cf6f79c695
+ license: GPL-2.0-or-later
+ license_family: GPL
+ purls: []
+ size: 23192144
+ timestamp: 1773933643305
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.4-hf80efc4_1.conda
+ sha256: b57c59cf5abb06d407b3a79017b990ca5bfb10c15a10c62fc29e113f2b12d9a9
+ md5: 4b433508ebb295c05dd3d03daf27f7bb
+ depends:
+ - __osx >=11.0
+ - cairo >=1.18.4,<2.0a0
+ - fontconfig >=2.17.1,<3.0a0
+ - fonts-conda-ecosystem
+ - fribidi >=1.0.16,<2.0a0
+ - harfbuzz >=13.2.1
+ - libexpat >=2.7.4,<3.0a0
+ - libfreetype >=2.14.2
+ - libfreetype6 >=2.14.2
+ - libglib >=2.86.4,<3.0a0
+ - libpng >=1.6.55,<1.7.0a0
+ - libzlib >=1.3.2,<2.0a0
+ license: LGPL-2.1-or-later
+ purls: []
+ size: 425743
+ timestamp: 1774282709773
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.47-h30297fc_0.conda
+ sha256: 5e2e443f796f2fd92adf7978286a525fb768c34e12b1ee9ded4000a41b2894ba
+ md5: 9b4190c4055435ca3502070186eba53a
+ depends:
+ - __osx >=11.0
+ - bzip2 >=1.0.8,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 850231
+ timestamp: 1763655726735
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.2.0-py312h4e908a4_0.conda
+ sha256: f7ee5d45bf16184d2b53f0d35c98c06e4e82e21688ce93e52b55c02ec7153bf3
+ md5: 0634560e556adb3e7924668e49ad53fc
+ depends:
+ - python
+ - __osx >=11.0
+ - python 3.12.* *_cpython
+ - libxcb >=1.17.0,<2.0a0
+ - libtiff >=4.7.1,<4.8.0a0
+ - libjpeg-turbo >=3.1.2,<4.0a0
+ - zlib-ng >=2.3.3,<2.4.0a0
+ - tk >=8.6.13,<8.7.0a0
+ - libfreetype >=2.14.3
+ - libfreetype6 >=2.14.3
+ - lcms2 >=2.18,<3.0a0
+ - python_abi 3.12.* *_cp312
+ - openjpeg >=2.5.4,<3.0a0
+ - libwebp-base >=1.6.0,<2.0a0
+ license: HPND
+ purls:
+ - pkg:pypi/pillow?source=hash-mapping
+ size: 965082
+ timestamp: 1775060469004
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.4-h81086ad_1.conda
+ sha256: 29c9b08a9b8b7810f9d4f159aecfd205fce051633169040005c0b7efad4bc718
+ md5: 17c3d745db6ea72ae2fce17e7338547f
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 248045
+ timestamp: 1754665282033
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/proj-9.8.1-ha88f16d_0.conda
+ sha256: f5818ac1741aa91b43185989b35319e6dd819c7beab271fc2bb7fda4be089128
+ md5: 1d135fa1ea825987507d1e14e4187b1e
+ depends:
+ - sqlite
+ - libtiff
+ - libcurl
+ - __osx >=11.0
+ - libcxx >=19
+ - libsqlite >=3.53.0,<4.0a0
+ - libtiff >=4.7.1,<4.8.0a0
+ - libcurl >=8.19.0,<9.0a0
+ constrains:
+ - proj4 ==999999999999
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 3146690
+ timestamp: 1775840276015
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda
+ sha256: 851a77ae1a8e90db9b9f3c4466abea7afb52713c3d98ceb0d37ba6ff27df2eff
+ md5: 7172339b49c94275ba42fec3eaeda34f
+ depends:
+ - __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: 173220
+ timestamp: 1730769371051
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.3.1-py312h998013c_0.conda
+ sha256: dd97df075f5198d42cc4be6773f1c41a9c07d631d95f91bfee8e9953eccc965b
+ md5: d8280c97e09e85c72916a3d98a4076d7
+ depends:
+ - __osx >=11.0
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/propcache?source=hash-mapping
+ size: 51972
+ timestamp: 1744525285336
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-6.33.5-py312h857ab9a_2.conda
+ sha256: 3e8720f23829f60103f61fc5e53ac36535da5896855a98d2bbbc6a35e78be430
+ md5: db3dd88ca6652ab2485d11f88a2b1d59
+ depends:
+ - __osx >=11.0
+ - libabseil * cxx17*
+ - libabseil >=20260107.1,<20260108.0a0
+ - libcxx >=19
+ - libzlib >=1.3.1,<2.0a0
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - libprotobuf 6.33.5
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/protobuf?source=hash-mapping
+ size: 465012
+ timestamp: 1773265421534
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.2.2-py312hb3ab3e3_0.conda
+ sha256: 6d0e21c76436374635c074208cfeee62a94d3c37d0527ad67fd8a7615e546a05
+ md5: fd856899666759403b3c16dcba2f56ff
+ depends:
+ - python
+ - __osx >=11.0
+ - python 3.12.* *_cpython
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/psutil?source=hash-mapping
+ size: 239031
+ timestamp: 1769678393511
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda
+ sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3
+ md5: 415816daf82e0b23a736a069a75e9da7
+ depends:
+ - __osx >=11.0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 8381
+ timestamp: 1726802424786
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pugixml-1.15-hd3d436d_0.conda
+ sha256: 5ad8d036040b095f85d23c70624d3e5e1e4c00bc5cea97831542f2dcae294ec9
+ md5: b9a4004e46de7aeb005304a13b35cb94
+ depends:
+ - __osx >=11.0
+ - libcxx >=18
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 91283
+ timestamp: 1736601509593
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-24.0.0-py312h1f38498_0.conda
+ sha256: c7cc2c75525c6522f9b948cd9ead2d5ceec55ba8b78cfd6f222fbc581219d0ff
+ md5: 2b3892c12915851e12955ee753eaedbb
+ depends:
+ - libarrow-acero 24.0.0.*
+ - libarrow-dataset 24.0.0.*
+ - libarrow-substrait 24.0.0.*
+ - libparquet 24.0.0.*
+ - pyarrow-core 24.0.0 *_0_*
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 26799
+ timestamp: 1776928498495
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-24.0.0-py312h21b41d0_0_cpu.conda
+ sha256: 38049b8b098fa02446e97bedebdde2ff4cae4b579581a7125da3e751bcf5a54d
+ md5: 7020684cfd5c066e86cee8affad06e83
+ depends:
+ - __osx >=11.0
+ - libarrow 24.0.0.* *cpu
+ - libarrow-compute 24.0.0.* *cpu
+ - libcxx >=21
+ - libzlib >=1.3.2,<2.0a0
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - apache-arrow-proc * cpu
+ - numpy >=1.23,<3
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/pyarrow?source=hash-mapping
+ size: 4322018
+ timestamp: 1776928464897
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pynacl-1.6.2-py312h6831925_1.conda
+ sha256: cd8574cb3843e5da683df861e7f0a819f37d10ea15a0a9867ea10fbda77a86aa
+ md5: e0e4cac5a7ccebc36a3945cd8f39c489
+ depends:
+ - __osx >=11.0
+ - cffi >=1.4.1
+ - libsodium >=1.0.21,<1.0.22.0a0
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ - six
+ license: Apache-2.0
+ license_family: Apache
+ purls:
+ - pkg:pypi/pynacl?source=hash-mapping
+ size: 1192691
+ timestamp: 1772171510253
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytensor-2.38.3-py312ha7b44dd_0.conda
+ sha256: f09fe9981426eb8ba0014673abdb0ccbc6425741299c26f2e485875ec9be7dd3
+ md5: 7cddb6eab7a389d4493402a6644f01ba
+ depends:
+ - python
+ - pytensor-base ==2.38.3 np2py312h60fbb24_0
+ - clangxx
+ - blas * *accelerate
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 10159
+ timestamp: 1777368424687
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytensor-base-2.38.3-np2py312h60fbb24_0.conda
+ sha256: bfed8d60f8ff104f627558158e676e35b41fd694f19d7984ac0704a52b935d1f
+ md5: 3d54c491648939a43a48b3df4a2568b6
+ depends:
+ - python
+ - setuptools >=59.0.0
+ - scipy >=1,<2
+ - numpy >=2.0
+ - numba >=0.58,<=0.65.1
+ - filelock >=3.15
+ - etuples
+ - logical-unification
+ - minikanren
+ - cons
+ - python 3.12.* *_cpython
+ - libcxx >=19
+ - __osx >=11.0
+ - numpy >=1.23,<3
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/pytensor?source=hash-mapping
+ size: 2779994
+ timestamp: 1777368424687
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.13-h8561d8f_0_cpython.conda
+ sha256: e658e647a4a15981573d6018928dec2c448b10c77c557c29872043ff23c0eb6a
+ md5: 8e7608172fa4d1b90de9a745c2fd2b81
+ depends:
+ - __osx >=11.0
+ - bzip2 >=1.0.8,<2.0a0
+ - libexpat >=2.7.4,<3.0a0
+ - libffi >=3.5.2,<3.6.0a0
+ - liblzma >=5.8.2,<6.0a0
+ - libsqlite >=3.51.2,<4.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - ncurses >=6.5,<7.0a0
+ - openssl >=3.5.5,<4.0a0
+ - readline >=8.3,<9.0a0
+ - tk >=8.6.13,<8.7.0a0
+ - tzdata
+ constrains:
+ - python_abi 3.12.* *_cp312
+ license: Python-2.0
+ purls: []
+ size: 12127424
+ timestamp: 1772730755512
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-librt-0.11.0-py312hb3ab3e3_0.conda
+ sha256: 3e4a920f8be7ddc863e25fa430377f6fc1d1db301726a42dffc64b94d8cbe544
+ md5: ce26b141512a4261080d10847bc7afe3
+ depends:
+ - python
+ - python 3.12.* *_cpython
+ - __osx >=11.0
+ - python_abi 3.12.* *_cp312
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/librt?source=compressed-mapping
+ size: 129095
+ timestamp: 1778511902080
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytokens-0.4.1-py312hb3ab3e3_1.conda
+ sha256: 6dd98f113e5fe7e13249fd74124f0fb7e67f5d3be568c7df3527b4e850b0914c
+ md5: d655e82f6e1ae67f3eca46e0094f2c73
+ depends:
+ - python
+ - __osx >=11.0
+ - python 3.12.* *_cpython
+ - python_abi 3.12.* *_cp312
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/pytokens?source=hash-mapping
+ size: 167672
+ timestamp: 1771613855566
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytorch-2.10.0-cpu_generic_py312_h2470ad0_3.conda
+ sha256: 6da6392a6d89f043c914c658cdaf98c49e6860ab7e91a0afcb8463723bca4364
+ md5: b4c7ecd785628fbd767d9cb854ec2c0c
+ depends:
+ - __osx >=11.0
+ - filelock
+ - fmt >=12.1.0,<12.2.0a0
+ - fsspec
+ - jinja2
+ - libabseil * cxx17*
+ - libabseil >=20260107.1,<20260108.0a0
+ - libcblas >=3.9.0,<4.0a0
+ - libcxx >=19
+ - liblapack >=3.9.0,<4.0a0
+ - libprotobuf >=6.33.5,<6.33.6.0a0
+ - libtorch 2.10.0 cpu_generic_hf7cc835_3
+ - libuv >=1.51.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - llvm-openmp >=19.1.7
+ - mpmath <1.4
+ - networkx
+ - nomkl
+ - numpy >=1.23,<3
+ - optree >=0.13.0
+ - pybind11 <3.0.2
+ - pybind11-abi 11
+ - python >=3.12,<3.13.0a0
+ - python_abi 3.12.* *_cp312
+ - setuptools
+ - sleef >=3.9.0,<4.0a0
+ - sympy >=1.13.3
+ - typing_extensions >=4.10.0
+ constrains:
+ - pytorch-cpu 2.10.0
+ - pytorch-gpu <0.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/torch?source=hash-mapping
+ size: 22846148
+ timestamp: 1772185000775
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.3-py312h04c11ed_1.conda
+ sha256: 737959262d03c9c305618f2d48c7f1691fb996f14ae420bfd05932635c99f873
+ md5: 95a5f0831b5e0b1075bbd80fcffc52ac
+ depends:
+ - __osx >=11.0
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ - yaml >=0.2.5,<0.3.0a0
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/pyyaml?source=hash-mapping
+ size: 187278
+ timestamp: 1770223990452
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.1.0-py312h022ad19_2.conda
+ noarch: python
+ sha256: 2f31f799a46ed75518fae0be75ecc8a1b84360dbfd55096bc2fe8bd9c797e772
+ md5: 2f6b79700452ef1e91f45a99ab8ffe5a
+ depends:
+ - python
+ - libcxx >=19
+ - __osx >=11.0
+ - _python_abi3_support 1.*
+ - cpython >=3.12
+ - zeromq >=4.3.5,<4.4.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/pyzmq?source=hash-mapping
+ size: 191641
+ timestamp: 1771717073430
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/qhull-2020.2-h420ef59_5.conda
+ sha256: 873ac689484262a51fd79bc6103c1a1bedbf524924d7f0088fb80703042805e4
+ md5: 6483b1f59526e05d7d894e466b5b6924
+ depends:
+ - __osx >=11.0
+ - libcxx >=16
+ license: LicenseRef-Qhull
+ purls: []
+ size: 516376
+ timestamp: 1720814307311
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/qt6-main-6.11.1-pl5321h01fc3ab_0.conda
+ sha256: 66905589313ff0eceacf548f48fde7eb2165d17f53d8610e7020e1804bcac3e2
+ md5: c77a6f66fc72d0c85f0d55fd3630379a
+ depends:
+ - libcxx >=19
+ - __osx >=11.0
+ - double-conversion >=3.4.0,<3.5.0a0
+ - libpng >=1.6.58,<1.7.0a0
+ - libbrotlicommon >=1.2.0,<1.3.0a0
+ - libbrotlienc >=1.2.0,<1.3.0a0
+ - libbrotlidec >=1.2.0,<1.3.0a0
+ - libwebp-base >=1.6.0,<2.0a0
+ - icu >=78.3,<79.0a0
+ - openssl >=3.5.6,<4.0a0
+ - libpq >=18.3,<19.0a0
+ - libjpeg-turbo >=3.1.4.1,<4.0a0
+ - libglib >=2.88.1,<3.0a0
+ - libsqlite >=3.53.1,<4.0a0
+ - libtiff >=4.7.1,<4.8.0a0
+ - pcre2 >=10.47,<10.48.0a0
+ - krb5 >=1.22.2,<1.23.0a0
+ - harfbuzz >=14.2.0
+ - zstd >=1.5.7,<1.6.0a0
+ - libzlib >=1.3.2,<2.0a0
+ constrains:
+ - qt ==6.11.1
+ license: LGPL-3.0-only
+ license_family: LGPL
+ purls: []
+ size: 48062647
+ timestamp: 1778618847691
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2025.11.05-ha480c28_1.conda
+ sha256: 5bab972e8f2bff1b5b3574ffec8ecb89f7937578bd107584ed3fde507ff132f9
+ md5: a1ff22f664b0affa3de712749ccfbf04
+ depends:
+ - libre2-11 2025.11.05 h4c27e2a_1
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 27445
+ timestamp: 1768190259003
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.3-h46df422_0.conda
+ sha256: a77010528efb4b548ac2a4484eaf7e1c3907f2aec86123ed9c5212ae44502477
+ md5: f8381319127120ce51e081dce4865cf4
+ depends:
+ - __osx >=11.0
+ - ncurses >=6.5,<7.0a0
+ license: GPL-3.0-only
+ license_family: GPL
+ purls: []
+ size: 313930
+ timestamp: 1765813902568
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.30.0-py312h6ef9ec0_0.conda
+ sha256: ea06f6f66b1bea97244c36fd2788ccd92fd1fb06eae98e469dd95ee80831b057
+ md5: a7cfbbdeb93bb9a3f249bc4c3569cd4c
+ depends:
+ - python
+ - __osx >=11.0
+ - python 3.12.* *_cpython
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - __osx >=11.0
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/rpds-py?source=hash-mapping
+ size: 358853
+ timestamp: 1764543161524
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml.clib-0.2.15-py312hb3ab3e3_1.conda
+ sha256: ee60a8409096aec04e713c7d98b744689eabb0a98a6cd7b122e896636ec28696
+ md5: b3f01912f92602e178c7106d5191f06e
+ depends:
+ - python
+ - python 3.12.* *_cpython
+ - __osx >=11.0
+ - python_abi 3.12.* *_cp312
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/ruamel-yaml-clib?source=hash-mapping
+ size: 131636
+ timestamp: 1766159558170
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.15.12-hbd3f8a3_0.conda
+ noarch: python
+ sha256: 91992a557456cbe9980e8ffb0f0d1200f65f741adeefc7ecf568d1935690a7bc
+ md5: 7151a0851207b88c0031f388a7825e9b
+ depends:
+ - python
+ - __osx >=11.0
+ constrains:
+ - __osx >=11.0
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/ruff?source=hash-mapping
+ size: 8485007
+ timestamp: 1778119519471
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/scikit-learn-1.8.0-np2py312he5ca3e3_1.conda
+ sha256: 5f640a06e001666f9d4dca7cca992f1753e722e9f6e50899d7d250c02ddf7398
+ md5: ed7887c51edfa304c69a424279cec675
+ depends:
+ - python
+ - numpy >=1.24.1
+ - scipy >=1.10.0
+ - joblib >=1.3.0
+ - threadpoolctl >=3.2.0
+ - libcxx >=19
+ - python 3.12.* *_cpython
+ - __osx >=11.0
+ - llvm-openmp >=19.1.7
+ - numpy >=1.23,<3
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/scikit-learn?source=hash-mapping
+ size: 9124177
+ timestamp: 1766550900752
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.17.1-py312h0f234b1_0.conda
+ sha256: 7082a8c87ae32b6090681a1376e3335cf23c95608c68a3f96f3581c847f8b840
+ md5: fd035cd01bb171090a990ae4f4143090
+ depends:
+ - __osx >=11.0
+ - libblas >=3.9.0,<4.0a0
+ - libcblas >=3.9.0,<4.0a0
+ - libcxx >=19
+ - libgfortran
+ - libgfortran5 >=14.3.0
+ - liblapack >=3.9.0,<4.0a0
+ - numpy <2.7
+ - numpy >=1.23,<3
+ - numpy >=1.25.2
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/scipy?source=hash-mapping
+ size: 13966986
+ timestamp: 1771881089893
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.32.56-h248ca61_0.conda
+ sha256: 704c5cae4bc839a18c70cbf3387d7789f1902828c79c6ddabcd34daf594f4103
+ md5: 092c5b693dc6adf5f409d12f33295a2a
+ depends:
+ - libcxx >=19
+ - __osx >=11.0
+ - sdl3 >=3.2.22,<4.0a0
+ license: Zlib
+ purls: []
+ size: 542508
+ timestamp: 1757842919681
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl3-3.4.8-h6fa9c73_0.conda
+ sha256: 0c15a7f3f46d175c70ca7b032cee3eee9ef602492688a79a6e734f2efc466dad
+ md5: 53311362c6da21e58442bfb959991455
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - libvulkan-loader >=1.4.341.0,<2.0a0
+ - libusb >=1.0.29,<2.0a0
+ - dbus >=1.16.2,<2.0a0
+ license: Zlib
+ purls: []
+ size: 1561566
+ timestamp: 1777693640800
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/shaderc-2026.2-hf31e910_0.conda
+ sha256: 97870b15002b9e78a169681655a148049cd1763d4062114155268e84b3ef8793
+ md5: 6e50dd641e624d5921f25a82aea39ae9
+ depends:
+ - __osx >=11.0
+ - glslang >=16,<17.0a0
+ - libcxx >=19
+ - spirv-tools >=2026,<2027.0a0
+ license: Apache-2.0
+ license_family: Apache
+ purls: []
+ size: 112111
+ timestamp: 1777361061717
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sigtool-codesign-0.1.3-h98dc951_0.conda
+ sha256: f3d006e2441f110160a684744d90921bbedbffa247d7599d7e76b5cd048116dc
+ md5: ade77ad7513177297b1d75e351e136ce
+ depends:
+ - __osx >=11.0
+ - libsigtool 0.1.3 h98dc951_0
+ - openssl >=3.5.4,<4.0a0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 114331
+ timestamp: 1767045086274
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sleef-3.9.0-hb028509_0.conda
+ sha256: 799d0578369e67b6d0d6ecdacada411c259629fc4a500b99703c5e85d0a68686
+ md5: 68f833178f171cfffdd18854c0e9b7f9
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - llvm-openmp >=19.1.7
+ license: BSL-1.0
+ purls: []
+ size: 587027
+ timestamp: 1756274982526
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.2-hada39a4_1.conda
+ sha256: cb9305ede19584115f43baecdf09a3866bfcd5bcca0d9e527bd76d9a1dbe2d8d
+ md5: fca4a2222994acd7f691e57f94b750c5
+ depends:
+ - libcxx >=19
+ - __osx >=11.0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 38883
+ timestamp: 1762948066818
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/spirv-tools-2026.1-h4ddebb9_0.conda
+ sha256: 8c7b7b1f7a42f1a878f08e44ee94023285eb51ba8e5042f28d61dce305b10242
+ md5: 2e34a5f251c18163da9bfbb4733cc1d9
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ constrains:
+ - spirv-headers >=1.4.341.0,<1.4.341.1.0a0
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 1613001
+ timestamp: 1770089883327
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlite-3.53.1-h85ec8f2_0.conda
+ sha256: b26e0b8d945799f53a505192694599c0dd0ee422d9afa7d98c15e6144b6f99f9
+ md5: f7a7a885f173730179da53e02b98ca93
+ depends:
+ - __osx >=11.0
+ - libsqlite 3.53.1 h1b79a29_0
+ - libzlib >=1.3.2,<2.0a0
+ - ncurses >=6.6,<7.0a0
+ - readline >=8.3,<9.0a0
+ license: blessing
+ purls: []
+ size: 181970
+ timestamp: 1777987071018
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/statsmodels-0.14.6-py312ha11c99a_0.conda
+ sha256: 18f8711f235e32d793938e1738057e7be1d0bfe98f7d27e3e4b98aa757deae92
+ md5: 31f49265d8de9776cd15b421f24b23e0
+ depends:
+ - __osx >=11.0
+ - numpy <3,>=1.22.3
+ - numpy >=1.23,<3
+ - packaging >=21.3
+ - pandas !=2.1.0,>=1.4
+ - patsy >=0.5.6
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ - scipy !=1.9.2,>=1.8
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/statsmodels?source=hash-mapping
+ size: 11537488
+ timestamp: 1764984166760
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-4.0.1-h0cb729a_0.conda
+ sha256: bdef3c1c4d2a396ad4f7dc64c5e9a02d4c5a21ff93ed07a33e49574de5d2d18d
+ md5: 8badc3bf16b62272aa2458f138223821
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ license: BSD-2-Clause
+ license_family: BSD
+ purls: []
+ size: 1456245
+ timestamp: 1769664727051
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tapi-1600.0.11.8-h997e182_2.conda
+ sha256: de6893e53664e769c1b1c4103a666d436e3d307c0eb6a09a164e749d116e80f7
+ md5: 555070ad1e18b72de36e9ee7ed3236b3
+ depends:
+ - libcxx >=19.0.0.a0
+ - __osx >=11.0
+ - ncurses >=6.5,<7.0a0
+ license: NCSA
+ purls: []
+ size: 200192
+ timestamp: 1775657222120
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tbb-2023.0.0-he0260a5_2.conda
+ sha256: 6f72a2984052444b9381020fa329b83dace95f335573dc21199f1b1d1a5f5473
+ md5: 440c0a36cc20db1f28877a69afbb5e88
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - libhwloc >=2.13.0,<2.13.1.0a0
+ license: Apache-2.0
+ purls: []
+ size: 122303
+ timestamp: 1778675142610
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tbb-devel-2023.0.0-h7f394f9_2.conda
+ sha256: 384b8f9a3fb0e49e0f083d5d760aae2e8b45eba6ff38483cc3b9e33cdd1c3837
+ md5: d4e2b050226f525f0ad64705cf302bee
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - tbb 2023.0.0 he0260a5_2
+ purls: []
+ size: 1139235
+ timestamp: 1778675210689
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tensorboard-data-server-0.7.0-py312h9536bd2_4.conda
+ sha256: a76bf47a5d9ad1134d6025c307773e20596f37b90682b14f1965c18f6b87a7da
+ md5: 2c911f542edf82b500cb08f6164cd3e7
+ depends:
+ - __osx >=11.0
+ - openssl >=3.5.4,<4.0a0
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ constrains:
+ - __osx >=11.0
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/tensorboard-data-server?source=hash-mapping
+ size: 3207231
+ timestamp: 1764930138005
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tensorflow-2.19.1-cpu_py312hc65d1cb_5.conda
+ sha256: 5e531150bb912ba9e8ea6cfc7c3af8e619829fc16b511cc9752e072444ac14d8
+ md5: 7119cefd8ff100262aa43ca9ffa76927
+ depends:
+ - python
+ - tensorflow-base ==2.19.1 cpu_py312h66a5cad_5
+ - python_abi 3.12.* *_cp312
+ license: Apache-2.0
+ license_family: APACHE
+ purls: []
+ size: 47381
+ timestamp: 1778106412562
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tensorflow-base-2.19.1-cpu_py312h66a5cad_5.conda
+ sha256: 1a5d05ac1577bc3bd435ac3f3985d43589b446be93038cf6bf7aaf294a7e6ad6
+ md5: 6afaa7d100fc4b093ed9a1e1da41dc82
+ depends:
+ - python
+ - packaging
+ - absl-py >=1.0.0
+ - astunparse >=1.6.0
+ - gast >=0.2.1,!=0.5.0,!=0.5.1,!=0.5.2
+ - google-pasta >=0.1.1
+ - grpcio 1.78.*
+ - h5py >=3.11
+ - ml_dtypes >=0.5.1,<1.0
+ - opt_einsum >=2.3.2
+ - protobuf >=5.26
+ - python-flatbuffers >=24.3.25
+ - requests >=2.21.0,<3
+ - six >=1.12
+ - termcolor >=1.1.0
+ - typing_extensions >=3.6.6
+ - wrapt >=1.11.0
+ - tensorboard >=2.19,<2.20
+ - keras >=3.5
+ - libtensorflow_framework ==2.19.1 cpu_h3441331_5
+ - libtensorflow_cc ==2.19.1 cpu_he004e32_5
+ - __osx >=11.0
+ - libcxx >=19
+ - python_abi 3.12.* *_cp312
+ license: Apache-2.0
+ license_family: APACHE
+ purls:
+ - pkg:pypi/tensorflow?source=hash-mapping
+ size: 314828014
+ timestamp: 1778106412562
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h010d191_3.conda
+ sha256: 799cab4b6cde62f91f750149995d149bc9db525ec12595e8a1d91b9317f038b3
+ md5: a9d86bc62f39b94c4661716624eb21b0
+ depends:
+ - __osx >=11.0
+ - libzlib >=1.3.1,<2.0a0
+ license: TCL
+ license_family: BSD
+ purls: []
+ size: 3127137
+ timestamp: 1769460817696
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.5-py312h2bbb03f_0.conda
+ sha256: 29edd36311b4a810a9e6208437bdbedb28c9ac15221caf812cb5c5cf48375dca
+ md5: 02cce5319b0f1317d9642dcb2e475379
+ depends:
+ - __osx >=11.0
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ license: Apache-2.0
+ license_family: Apache
+ purls:
+ - pkg:pypi/tornado?source=hash-mapping
+ size: 859155
+ timestamp: 1774358568476
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.1.0-py312h766f71e_0.conda
+ sha256: 4d047b1d6e0f4bdd8c43e1b772665de9a10c0649a7f158df8193a3a6e7df714f
+ md5: e80504aa921f5ab11456f27bd9ef5d25
+ depends:
+ - __osx >=11.0
+ - cffi
+ - libcxx >=19
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ license: MIT
+ license_family: MIT
+ purls:
+ - pkg:pypi/ukkonen?source=hash-mapping
+ size: 14733
+ timestamp: 1769439379176
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/unicodedata2-17.0.1-py312h2bbb03f_0.conda
+ sha256: e935d0c11581e31e89ce4899a28b16f924d1a3c1af89f18f8a2c5f5728b3107f
+ md5: 45b836f333fd3e282c16fff7dc82994e
+ depends:
+ - __osx >=11.0
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ license: Apache-2.0
+ license_family: Apache
+ purls:
+ - pkg:pypi/unicodedata2?source=hash-mapping
+ size: 415828
+ timestamp: 1770909782683
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/utfcpp-4.09-hce30654_0.conda
+ sha256: 598a2c7c38a8b3495efd354e5903a693059f0ee0d1b6af1a339ec09a7839737a
+ md5: bf5e569456f850071049b692fe7ab755
+ license: BSL-1.0
+ purls: []
+ size: 14174
+ timestamp: 1767012345273
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/viskores-1.1.1-cpu_h841489f_0.conda
+ sha256: c64e599fbf4381c93202561716393f748166628a1affb574c62122fa9c728d1b
+ md5: de0c0f0d1328a15ed1b2be2d10ebc4f2
+ depends:
+ - llvm-openmp >=19.1.7
+ - __osx >=11.0
+ - libcxx >=19
+ - mesalib >=26.0.3,<26.1.0a0
+ - hdf5 >=1.14.6,<1.14.7.0a0
+ - glew >=2.3.0,<2.4.0a0
+ - zfp >=1.0.1,<2.0a0
+ track_features:
+ - viskores-p-0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 20406566
+ timestamp: 1777494828271
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/vtk-9.6.1-py312hee49c5b_4.conda
+ sha256: fad9468b45d691f3e363d5227c997f6bd1c1f7f1a9cccd3414245c42edca633b
+ md5: 51b4978733a101cf4abac40f3ea180e0
+ depends:
+ - vtk-base >=9.6.1,<9.6.2.0a0
+ - vtk-io-ffmpeg >=9.6.1,<9.6.2.0a0
+ - libboost-devel
+ - liblzma-devel
+ - tbb-devel
+ - eigen
+ - expat
+ - python_abi 3.12.* *_cp312
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 27082
+ timestamp: 1778024929741
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/vtk-base-9.6.1-py312h12f95e6_4.conda
+ sha256: 7941a2cb1b422604708ae66b436027ea322b0928a8d584bbb1e85bca938e7b92
+ md5: 8869ab07c3925c4d618eba20aecbc2b5
+ depends:
+ - python
+ - utfcpp
+ - nlohmann_json
+ - cli11
+ - numpy
+ - wslink
+ - matplotlib-base >=2.0.0
+ - __osx >=11.0
+ - libcxx >=18
+ - pugixml >=1.15,<1.16.0a0
+ - libxml2
+ - libxml2-16 >=2.14.6
+ - libtheora >=1.1.1,<1.2.0a0
+ - libjpeg-turbo >=3.1.4.1,<4.0a0
+ - eigen-abi >=5.0.1.100,<5.0.1.101.0a0
+ - lz4-c >=1.10.0,<1.11.0a0
+ - proj >=9.8.1,<9.9.0a0
+ - libexpat >=2.8.0,<3.0a0
+ - tbb >=2022.3.0
+ - libogg >=1.3.5,<1.4.0a0
+ - libpng >=1.6.58,<1.7.0a0
+ - double-conversion >=3.4.0,<3.5.0a0
+ - libzlib >=1.3.2,<2.0a0
+ - jsoncpp >=1.9.6,<1.9.7.0a0
+ - viskores >=1.1.1,<1.2.0a0
+ - libnetcdf >=4.10.0,<4.10.1.0a0
+ - libsqlite >=3.53.1,<4.0a0
+ - python_abi 3.12.* *_cp312
+ - qt6-main >=6.11.0,<6.12.0a0
+ - liblzma >=5.8.3,<6.0a0
+ - libfreetype >=2.14.3
+ - libfreetype6 >=2.14.3
+ - libtiff >=4.7.1,<4.8.0a0
+ - hdf5 >=1.14.6,<1.14.7.0a0
+ - fmt >=12.1.0,<12.2.0a0
+ constrains:
+ - libboost-headers >=1.90.0,<1.91.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/vtk?source=hash-mapping
+ size: 62250825
+ timestamp: 1778024929741
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/vtk-io-ffmpeg-9.6.1-py312h199f87a_4.conda
+ sha256: df255a7011a3c9078d0b801d3083c52b38147a49367c3b698bd02d110434054b
+ md5: 5ab6e27a8a0e5047bcf8a63467a846d9
+ depends:
+ - vtk-base ==9.6.1 py312h12f95e6_4
+ - ffmpeg
+ - python_abi 3.12.* *_cp312
+ - ffmpeg >=8.1.1,<9.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 94791
+ timestamp: 1778024929741
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-2.1.2-py312h2bbb03f_0.conda
+ sha256: 5dbc29e84b2d14bbfcaf5372571312991e749ac1dc55e822ccb15d71e752ed67
+ md5: ff5ed7b9da564a701eae86999617a247
+ depends:
+ - __osx >=11.0
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ license: BSD-2-Clause
+ license_family: BSD
+ purls:
+ - pkg:pypi/wrapt?source=hash-mapping
+ size: 83872
+ timestamp: 1772795226695
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/x264-1!164.3095-h57fd34a_2.tar.bz2
+ sha256: debdf60bbcfa6a60201b12a1d53f36736821db281a28223a09e0685edcce105a
+ md5: b1f6dccde5d3a1f911960b6e567113ff
+ license: GPL-2.0-or-later
+ license_family: GPL
+ purls: []
+ size: 717038
+ timestamp: 1660323292329
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/x265-3.5-hbc6ce65_3.tar.bz2
+ sha256: 2fed6987dba7dee07bd9adc1a6f8e6c699efb851431bcb6ebad7de196e87841d
+ md5: b1f7f2780feffe310b068c021e8ff9b2
+ depends:
+ - libcxx >=12.0.1
+ license: GPL-2.0-or-later
+ license_family: GPL
+ purls: []
+ size: 1832744
+ timestamp: 1646609481185
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-hc919400_1.conda
+ sha256: adae11db0f66f86156569415ed79cda75b2dbf4bea48d1577831db701438164f
+ md5: 78b548eed8227a689f93775d5d23ae09
+ depends:
+ - __osx >=11.0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 14105
+ timestamp: 1762976976084
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hc919400_1.conda
+ sha256: f7fa0de519d8da589995a1fe78ef74556bb8bc4172079ae3a8d20c3c81354906
+ md5: 9d1299ace1924aa8f4e0bc8e71dd0cf7
+ depends:
+ - __osx >=11.0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 19156
+ timestamp: 1762977035194
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h925e9cb_3.conda
+ sha256: b03433b13d89f5567e828ea9f1a7d5c5d697bf374c28a4168d71e9464f5dafac
+ md5: 78a0fe9e9c50d2c381e8ee47e3ea437d
+ depends:
+ - __osx >=11.0
+ license: MIT
+ license_family: MIT
+ purls: []
+ size: 83386
+ timestamp: 1753484079473
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.23.0-py312h04c11ed_0.conda
+ sha256: 2379fd978cfc5598d9ef6f01946da890851f5ed22ecf8596abb328f7ddd640ba
+ md5: c5cce9282c0a099ba55a43a80fc67795
+ depends:
+ - __osx >=11.0
+ - idna >=2.0
+ - multidict >=4.0
+ - propcache >=0.2.1
+ - python >=3.12,<3.13.0a0
+ - python >=3.12,<3.13.0a0 *_cpython
+ - python_abi 3.12.* *_cp312
+ license: Apache-2.0
+ license_family: Apache
+ purls:
+ - pkg:pypi/yarl?source=hash-mapping
+ size: 140208
+ timestamp: 1772409657987
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-h4818236_10.conda
+ sha256: 2705360c72d4db8de34291493379ffd13b09fd594d0af20c9eefa8a3f060d868
+ md5: e85dcd3bde2b10081cdcaeae15797506
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - krb5 >=1.22.2,<1.23.0a0
+ - libsodium >=1.0.21,<1.0.22.0a0
+ license: MPL-2.0
+ license_family: MOZILLA
+ purls: []
+ size: 245246
+ timestamp: 1772476886668
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zfp-1.0.1-ha86207d_5.conda
+ sha256: 5b8bc86ca206f456ca9fe9e1a629f68b949ac47070211bccf4b44d29141c85d7
+ md5: 581bd74656ccd460cf2bbe152292a1eb
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - llvm-openmp >=19.1.7
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 204043
+ timestamp: 1766549790975
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.2-h8088a28_2.conda
+ sha256: 8dd2ac25f0ba714263aac5832d46985648f4bfb9b305b5021d702079badc08d2
+ md5: f1c0bce276210bed45a04949cfe8dc20
+ depends:
+ - __osx >=11.0
+ - libzlib 1.3.2 h8088a28_2
+ license: Zlib
+ license_family: Other
+ purls: []
+ size: 81123
+ timestamp: 1774072974535
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-ng-2.3.3-hed4e4f5_1.conda
+ sha256: a339606a6b224bb230ff3d711e801934f3b3844271df9720165e0353716580d4
+ md5: d99c2a23a31b0172e90f456f580b695e
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ license: Zlib
+ license_family: Other
+ purls: []
+ size: 94375
+ timestamp: 1770168363685
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hbf9d68e_6.conda
+ sha256: 9485ba49e8f47d2b597dd399e88f4802e100851b27c21d7525625b0b4025a5d9
+ md5: ab136e4c34e97f34fb621d2592a393d8
+ depends:
+ - __osx >=11.0
+ - libzlib >=1.3.1,<2.0a0
+ license: BSD-3-Clause
+ license_family: BSD
+ purls: []
+ size: 433413
+ timestamp: 1764777166076
+- pypi: git+https://github.com/nchopin/particles#f71e94a21a11c73b58e2d694775b1b1d379b8854
+ name: particles
+ version: '0.4'
+ requires_dist:
+ - joblib
+ - numba
+ - numpy>=1.18
+ - scipy>=1.7
+ - scikit-learn
+ - pandas ; extra == 'extra'
+ - statsmodels ; extra == 'extra'
+ - ipython ; extra == 'extra'
+ - seaborn ; extra == 'extra'
+ - matplotlib ; extra == 'extra'
+ - ipython ; extra == 'docs'
+ - sphinx==7.0.1 ; extra == 'docs'
+ - nbsphinx==0.9.2 ; extra == 'docs'
+ requires_python: '>=3.9'
+- pypi: https://files.pythonhosted.org/packages/02/c3/253a89ee03fc9b9682f1541728eb66db7db22148cd94f89ab22528cd1e1b/deprecation-2.1.0-py2.py3-none-any.whl
+ name: deprecation
+ version: 2.1.0
+ sha256: a10811591210e1fb0e768a8c25517cabeabcba6f0bf96564f8ff45189f90b14a
+ requires_dist:
+ - packaging
+- pypi: https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl
+ name: loguru
+ version: 0.7.3
+ sha256: 31a33c10c8e1e10422bfd431aeb5d351c7cf7fa671e3c4df004162264b28220c
+ requires_dist:
+ - colorama>=0.3.4 ; sys_platform == 'win32'
+ - aiocontextvars>=0.2.0 ; python_full_version < '3.7'
+ - win32-setctime>=1.0.0 ; sys_platform == 'win32'
+ - pre-commit==4.0.1 ; python_full_version >= '3.9' and extra == 'dev'
+ - tox==3.27.1 ; python_full_version < '3.8' and extra == 'dev'
+ - tox==4.23.2 ; python_full_version >= '3.8' and extra == 'dev'
+ - pytest==6.1.2 ; python_full_version < '3.8' and extra == 'dev'
+ - pytest==8.3.2 ; python_full_version >= '3.8' and extra == 'dev'
+ - pytest-cov==2.12.1 ; python_full_version < '3.8' and extra == 'dev'
+ - pytest-cov==5.0.0 ; python_full_version == '3.8.*' and extra == 'dev'
+ - pytest-cov==6.0.0 ; python_full_version >= '3.9' and extra == 'dev'
+ - pytest-mypy-plugins==1.9.3 ; python_full_version >= '3.6' and python_full_version < '3.8' and extra == 'dev'
+ - pytest-mypy-plugins==3.1.0 ; python_full_version >= '3.8' and extra == 'dev'
+ - colorama==0.4.5 ; python_full_version < '3.8' and extra == 'dev'
+ - colorama==0.4.6 ; python_full_version >= '3.8' and extra == 'dev'
+ - freezegun==1.1.0 ; python_full_version < '3.8' and extra == 'dev'
+ - freezegun==1.5.0 ; python_full_version >= '3.8' and extra == 'dev'
+ - exceptiongroup==1.1.3 ; python_full_version >= '3.7' and python_full_version < '3.11' and extra == 'dev'
+ - mypy==0.910 ; python_full_version < '3.6' and extra == 'dev'
+ - mypy==0.971 ; python_full_version == '3.6.*' and extra == 'dev'
+ - mypy==1.4.1 ; python_full_version == '3.7.*' and extra == 'dev'
+ - mypy==1.13.0 ; python_full_version >= '3.8' and extra == 'dev'
+ - sphinx==8.1.3 ; python_full_version >= '3.11' and extra == 'dev'
+ - sphinx-rtd-theme==3.0.2 ; python_full_version >= '3.11' and extra == 'dev'
+ - myst-parser==4.0.0 ; python_full_version >= '3.11' and extra == 'dev'
+ - build==1.2.2 ; python_full_version >= '3.11' and extra == 'dev'
+ - twine==6.0.1 ; python_full_version >= '3.11' and extra == 'dev'
+ requires_python: '>=3.5,<4.0'
+- pypi: https://files.pythonhosted.org/packages/10/9a/e3186e760c57ee5f1c27ea5cea577a0ff9abfca51eefcb4d9a4cd39aff2e/pandoc-2.4.tar.gz
+ name: pandoc
+ version: '2.4'
+ sha256: ecd1f8cbb7f4180c6b5db4a17a7c1a74df519995f5f186ef81ce72a9cbd0dd9a
+ requires_dist:
+ - plumbum
+ - ply
+- pypi: https://files.pythonhosted.org/packages/39/1f/54ddd9171840bbf2437287ffab18268d7ccbca7752a7f290252ddabbcef8/numpysane-0.42.tar.gz
+ name: numpysane
+ version: '0.42'
+ sha256: 47f240cab2fd05a26776b91c0e07e03b1ebaf943005bcea0fc1585ded079b0bd
+ requires_dist:
+ - numpy
+- pypi: https://files.pythonhosted.org/packages/44/ca/2ecd4529be078797bda8d662d1ecb67b1bb884ee7531a4b1646162d21658/jsonschema_rs-0.46.4-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
+ name: jsonschema-rs
+ version: 0.46.4
+ sha256: 8a83672e74aecd2cec20758afc9374eabff259d9e094c9f18987a81c19fb01ab
+ requires_dist:
+ - fastjsonschema>=2.20.0 ; extra == 'bench'
+ - jsonschema>=4.23.0 ; extra == 'bench'
+ - pytest-benchmark>=4.0.0 ; extra == 'bench'
+ - flask>=2.2.5 ; extra == 'tests'
+ - hypothesis>=6.79.4 ; extra == 'tests'
+ - pytest>=7.4.4 ; extra == 'tests'
+ requires_python: '>=3.10'
+- pypi: https://files.pythonhosted.org/packages/4a/49/bb935b2e68cf31e2b2face9d0841ac97447b6d0387d0c2d2255c7a2867da/scikit_activeml-1.0.0-py3-none-any.whl
+ name: scikit-activeml
+ version: 1.0.0
+ sha256: 34e8d3a594cd98ed6210d0c91d651829f01119822e0337cd42302a33480ed292
+ requires_dist:
+ - joblib>=1.4.0
+ - numpy>=2.1
+ - scipy>=1.14.1
+ - scikit-learn>=1.6.0
+ - matplotlib>=3.9.0
+ - makefun>=1.15.3
+ - pytest ; extra == 'dev'
+ - pytest-cov ; extra == 'dev'
+ - pytest-xdist ; extra == 'dev'
+ - jupyter ; extra == 'dev'
+ - sphinx>=8.1,<=8.2 ; extra == 'dev'
+ - sphinxcontrib-bibtex~=2.6 ; extra == 'dev'
+ - numpydoc~=1.9 ; extra == 'dev'
+ - nbsphinx~=0.9 ; extra == 'dev'
+ - nbformat~=5.10 ; extra == 'dev'
+ - sphinx-gallery~=0.19 ; extra == 'dev'
+ - sphinx-copybutton ; extra == 'dev'
+ - sphinx-sitemap ; extra == 'dev'
+ - pybtex~=0.25 ; extra == 'dev'
+ - pydata-sphinx-theme~=0.16 ; extra == 'dev'
+ - gitpython ; extra == 'dev'
+ - black ; extra == 'dev'
+ - flake8 ; extra == 'dev'
+ - pre-commit ; extra == 'dev'
+ - joblib<=1.5.2 ; extra == 'max'
+ - numpy<=2.2.6 ; extra == 'max'
+ - scipy<=1.15.3 ; extra == 'max'
+ - scikit-learn<=1.8.0 ; extra == 'max'
+ - matplotlib<=3.10.7 ; extra == 'max'
+ - makefun<=1.16.0 ; extra == 'max'
+ - skorch>=1.2.0 ; extra == 'opt'
+ - skorch<=1.3.0 ; extra == 'opt-max'
+ requires_python: '>=3.10'
+- pypi: https://files.pythonhosted.org/packages/53/f6/136e03239c2205497b482b04e05c961add0638e92d26b0d13b6499fedb40/diversipy-0.9.tar.gz
+ name: diversipy
+ version: '0.9'
+ sha256: 165a31e946aa360d49b7dc1470524e2da9582aa774490cb934294040f7222f9c
+ requires_dist:
+ - numpy
+ - scipy
+- pypi: https://files.pythonhosted.org/packages/54/4b/ee27938d1b2c443e89a9a10e00d2d19aa5ee300cd3d61140644e93bb083e/regex-2026.5.9-cp312-cp312-macosx_11_0_arm64.whl
+ name: regex
+ version: 2026.5.9
+ sha256: f7a7c26137296beba7784de6eba69c6a93a63ccebc385e4962fe67e267a91225
+ requires_python: '>=3.10'
+- pypi: https://files.pythonhosted.org/packages/79/ad/45312df6b63ba64ea35b8d8f5f0c577aac16e6b416eafe8e1cb34e03f9a7/plumbum-1.10.0-py3-none-any.whl
+ name: plumbum
+ version: 1.10.0
+ sha256: 9583d737ac901c474d99d030e4d5eec4c4e6d2d7417b1cf49728cf3be34f6dc8
+ requires_dist:
+ - pywin32 ; platform_python_implementation != 'PyPy' and sys_platform == 'win32'
+ - paramiko ; extra == 'ssh'
+ requires_python: '>=3.9'
+- pypi: https://files.pythonhosted.org/packages/7c/45/7c7a8bcbfe68595c6ad82612dae409bf8c2f7dbad7cb0a30ad0637ce828f/jsonschema_rs-0.46.4-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
+ name: jsonschema-rs
+ version: 0.46.4
+ sha256: 1a06146baf3d4c5f62ea9899ba5d2f87dbd1ea41b4701917b9c929f51480ae50
+ requires_dist:
+ - fastjsonschema>=2.20.0 ; extra == 'bench'
+ - jsonschema>=4.23.0 ; extra == 'bench'
+ - pytest-benchmark>=4.0.0 ; extra == 'bench'
+ - flask>=2.2.5 ; extra == 'tests'
+ - hypothesis>=6.79.4 ; extra == 'tests'
+ - pytest>=7.4.4 ; extra == 'tests'
+ requires_python: '>=3.10'
+- pypi: https://files.pythonhosted.org/packages/7c/e9/9876105d1c238f82b44211d73913784ce8f53e382960b0858c0e38ac2ced/gnuplotlib-0.46.tar.gz
+ name: gnuplotlib
+ version: '0.46'
+ sha256: e713b73a64eb1a26af45870ee2de84c217e24d5a9f47365c6116afc315da6af4
+ requires_dist:
+ - numpy
+ - numpysane>=0.3
+- pypi: https://files.pythonhosted.org/packages/90/d6/42d441eeceac1d8fc7d2a7480654db661282dd1f94deef344c5421ba0c3c/rapidyaml-0.12.1-cp312-cp312-macosx_11_0_arm64.whl
+ name: rapidyaml
+ version: 0.12.1
+ sha256: 6ddd43a1f6a12e706477b85cf51d881c2362d74f4c0433d6092f6b40bae20567
+ requires_dist:
+ - deprecation
+ requires_python: '>=3.6'
+- pypi: https://files.pythonhosted.org/packages/94/ed/5d45bbd42d5407250dd46ce1b9c098d612c3a9bb538858d09da2df77c961/pylint_exit-1.2.0-py2.py3-none-any.whl
+ name: pylint-exit
+ version: 1.2.0
+ sha256: 65c9e7856e9058705a92d7c45628d604b2a4b8ee2b3c18a7303be77f9ed87cbe
+- pypi: https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl
+ name: ply
+ version: '3.11'
+ sha256: 096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce
+- pypi: https://files.pythonhosted.org/packages/af/cb/87da89ae11d0de562928a7e8ca40d5daee55049408019d5d1b918af6800b/rapidyaml-0.12.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
+ name: rapidyaml
+ version: 0.12.1
+ sha256: 489f1cba591f3e6a6325f3b08edf64abb293b5353906686ec04949ccc3a44855
+ requires_dist:
+ - deprecation
+ requires_python: '>=3.6'
+- pypi: https://files.pythonhosted.org/packages/b7/c0/4bc973defd1270b89ccaae04cef0d5fa3ea85b59b108ad2c08aeea9afb76/makefun-1.16.0-py2.py3-none-any.whl
+ name: makefun
+ version: 1.16.0
+ sha256: 43baa4c3e7ae2b17de9ceac20b669e9a67ceeadff31581007cca20a07bbe42c4
+ requires_dist:
+ - funcsigs ; python_full_version < '3.3'
+- pypi: https://files.pythonhosted.org/packages/c8/03/99102b3772bdc5d25fc7fe5f5fb862c54bb6e863991f50d02667999942c1/licenseheaders-0.8.8-py3-none-any.whl
+ name: licenseheaders
+ version: 0.8.8
+ sha256: 3b159228b37bbba98bd01448c41a5eff773ab26ac5b14ac98c53d06dbc807696
+ requires_dist:
+ - regex
+ requires_python: '>=3.5'
+- pypi: https://files.pythonhosted.org/packages/cc/1e/3fbe2fa1e8cebd62f3bb7d3321cff1640aca2e240b51d9bd624aad949260/regex-2026.5.9-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
+ name: regex
+ version: 2026.5.9
+ sha256: dd2810d22146b6d838acc5ec15602cb6b47920aa4e33015df3868eedfd20bab8
+ requires_python: '>=3.10'
+- pypi: https://files.pythonhosted.org/packages/f8/cb/91d8f07f08e86f03e0e9b5ba9db350d751119c9ba27eff4c418e4f27ee9c/fourcipp-1.103.0-py3-none-any.whl
+ name: fourcipp
+ version: 1.103.0
+ sha256: cfadfc81ab1322336bef3d6ea4670a427b970051eb221d4735add6b20ffd6283
+ requires_dist:
+ - jsonschema-rs
+ - loguru
+ - numpy
+ - rapidyaml
+ - regex
+ - pre-commit ; extra == 'dev'
+ - pytest ; extra == 'dev'
+ - pytest-cov ; extra == 'dev'
+ - pip-tools ; extra == 'dev'
+ - pytest-xdist ; extra == 'dev'
+ requires_python: '>=3.10'
diff --git a/pyproject.toml b/pyproject.toml
index a45d6f3ed..737f19d31 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -6,10 +6,49 @@ build-backend = "setuptools.build_meta"
[project]
name = "queens"
authors = [{ name = "QUEENS developers" }]
-dynamic = ["version", "dependencies", "optional-dependencies"]
+license = "LGPL-3.0-or-later"
+license-files = ["LICENSE"]
+dynamic = ["version"]
description = "A general purpose framework for Uncertainty Quantification, Physics-Informed Machine Learning, Bayesian Optimization, Inverse Problems and Simulation Analytics"
readme = "README.md"
-requires-python = ">=3.10"
+requires-python = ">=3.12"
+dependencies = [
+ "setuptools>=81.0.0,<82",
+ "numba>=0.65.0",
+ "numpy>=2.4.3",
+ "pandas>=3.0.2",
+ "scikit-learn>=1.8.0",
+ "scipy>=1.17.1",
+ "dask>=2026.3.0",
+ "distributed>=2026.3.0",
+ "dask-jobqueue>=0.9.0",
+ "fabric>=3.2.3",
+ "xarray>=2026.4.0",
+ "pydoe>=0.9.9",
+ "salib>=1.5.2",
+ "vtk>=9.5.0",
+ "pyvista>=0.47.3",
+ "chaospy>=4.3.20",
+ "pyyaml>=6.0.3",
+ "jinja2>=3.1.6",
+ "arviz>=0.23.4,<1",
+ "gpflow",
+ "tensorflow>=2.18.0",
+ "tensorflow-probability>=0.25.0",
+ "tf-keras>=2.18.0",
+ "jax>=0.5.2",
+ "pymc>=5.28.4",
+ "stable-baselines3>=2.8.0",
+ "matplotlib>=3.10.8",
+ "seaborn>=0.13.2",
+ "plotly>=6.6.0",
+ "tqdm>=4.67.3",
+ "pathos>=0.3.5",
+ "gnuplotlib>=0.46",
+ "diversipy>=0.9",
+ "particles @ git+https://github.com/nchopin/particles.git",
+ "scikit-activeml>=1.0.0",
+]
keywords = [
"gaussian processes",
"uncertainty quantification",
@@ -22,20 +61,6 @@ keywords = [
[tool.setuptools.dynamic]
version = { attr = "queens.__VERSION__" }
-dependencies = { file = ["requirements.in"] }
-optional-dependencies = { safe = { file = [
- "requirements.txt",
-] }, develop = { file = [
- "dev-requirements.txt", # We fix the development packages, other linters might fail
-] }, safe_develop = { file = [
- "requirements.txt",
- "dev-requirements.txt",
-] }, fourc = { file = [
- "src/queens_interfaces/fourc/fourc_requirements.txt",
-] }, tutorial = { file = [
- "requirements.txt",
- "tutorial-requirements.txt",
-] } }
# cli utils
[project.scripts]
@@ -58,6 +83,7 @@ Changelog = "https://github.com/queens-py/queens/blob/main/CHANGELOG.md"
# Tools section
[tool.black]
line-length = 100
+target-version = ["py312"]
[tool.isort]
profile = "black"
@@ -81,9 +107,12 @@ testpaths = ["tests"]
pythonpath = ["test_utils"]
markers = [
"benchmark: Benchmark tests, involving full QUEENS-iterator runs for performance benchmarks (excluded from the main pipeline)",
+ "convergence_tests: Convergence tests with higher sample counts or tighter analytical references",
"integration_tests: Integration tests with Python interface",
"unit_tests: Unit tests",
- "tutorial_tests: Tutorial tests",
+ "tutorial_tests: Tutorial tests that require no specialized tutorial resources",
+ "tutorial_tests_fourc: Tutorial tests that require fourc",
+ "tutorial_tests_remote: Tutorial tests that require remote execution resources",
"integration_tests_fourc: Integration tests with fourc",
"lnm_cluster: Integration tests with LNM clusters (require access to LNM network)",
"imcs_cluster: Integration tests with LNM clusters (require access to IMCS network)",
@@ -91,9 +120,10 @@ markers = [
]
[tool.coverage.run]
-source = ["queens"]
+source = ["src"]
parallel = true
branch = true
+relative_files = true
[tool.coverage.report]
# Regexes for lines to exclude from consideration
@@ -106,61 +136,31 @@ show_missing = false
[tool.coverage.html]
directory = "html_coverage_report"
-[tool.liccheck]
-authorized_licenses = [
- "apache",
- "apache 2.0",
- "Apache-2.0",
- "apache software license",
- "apache license, version 2.0",
- "apache license version 2.0",
- "apache license 2.0",
- "apache software",
- "bsd",
- "new bsd",
- "bsd license",
- "new bsd license",
- "3-clause bsd",
- "BSD 3-Clause",
- "BSD-3-Clause",
- "simplified bsd",
- "CMU License (MIT-CMU)",
- "gnu lgpl",
- "GNU Library or Lesser General Public License (LGPL)",
- "lgpl",
- "historical permission notice and disclaimer (hpnd)",
- "isc",
- "isc license",
- "isc license (iscl)",
- "mit",
- "mit license",
- "mozilla public license 2.0",
- "mozilla public license 2.0 (mpl 2.0)",
- "python software foundation",
- "python software foundation license",
- "University of Illinois/NCSA Open Source",
- "zlib/libpng",
-]
-unauthorized_licenses = [
- "gpl v3",
- "gpl v2",
- "gpl",
- "GNU general public license (gpl)",
- "IBM Public License",
- "RPL",
- "Reciprocal Public License",
- "Sleepycat License",
+[tool.pip-licenses]
+from = "mixed"
+ignore-packages = [
+ # cons is under LGPL-3
+ "cons",
+ # queens (this library) is under a LGPL-3-or-later
+ "queens",
+ # fourcipp is under MIT
+ "fourcipp",
+ # scikit-activeml is under BSD 3-Clause License
+ "scikit-activeml",
+ # namex is under Apache 2.0 see https://github.com/fchollet/namex?tab=License-1-ov-file
+ "namex",
+ # miniKanren is under a BSD-3-Clause (sligthly modified a,b,c instead of 1.,2.,3. see https://github.com/pythological/kanren/blob/main/LICENSE.txt
+ "miniKanren",
+ # vtk is under BSD-3-Clause see https://gitlab.kitware.com/vtk/vtk/-/blob/master/Copyright.txt?ref_type=heads
+ "vtk",
+ # torch is under BSD-3-Clause
+ "torch",
+ # PySide6 is under (LGPLv3 or GPLv2 or GPLv3) see https://code.qt.io/cgit/pyside/pyside-setup.git/tree/README.pyside6.md
+ "PySide6",
+ # shiboken6 is under (LGPLv3 or GPLv2 or GPLv3) see https://code.qt.io/cgit/pyside/pyside-setup.git/tree/README.pyside6.md
+ "shiboken6",
]
-[tool.liccheck.authorized_packages]
-# filelock has public domain license without restrictions
-# see https://github.com/tox-dev/py-filelock
-filelock = ">=3"
-# cons is under LGPL-3
-cons = ">=0.4.5"
-# namex is under Apache 2.0 see https://github.com/fchollet/namex?tab=License-1-ov-file
-namex = "==0.0.8"
-# setuptools is under MIT License
-setuptools = ">=79.0.0"
+allow-only="MIT;MIT License;MIT-CMU;BSD;BSD License;BSD-2-Clause;BSD-3-Clause;BSD 3-Clause;3-Clause BSD License;BSD-2-Clause AND Apache-2.0 WITH LLVM-exception;BSD-3-Clause AND 0BSD AND MIT AND Zlib AND CC0-1.0;Apache-2.0;Apache License 2.0;Apache Software License;Apache-2.0 OR BSD-3-Clause;Apache-2.0 OR BSD-2-Clause;Apache-2.0 AND CNRI-Python;Apache-2.0 AND MIT;ISC;PSF-2.0;Python Software Foundation License;MPL-2.0;Mozilla Public License 2.0;Mozilla Public License 2.0 (MPL 2.0);MPL-2.0 AND MIT;LGPL;LGPL-2.1;LGPL-3.0;LGPL-3.0-or-later;Zlib;0BSD;CC0-1.0"
[tool.mypy]
check_untyped_defs = true
@@ -175,9 +175,138 @@ exclude = '''(?x)(
^(.gitlab|.github|config|doc|tests|test_utils)/|
^src/(example_simulator_functions|queens_interfaces)/|
^src/queens/(data_processors|drivers|iterators|models)/|
- ^src/queens/(schedulers|stochastic_optimizers|variational_distributions|visualization)/|
+ ^src/queens/(schedulers|stochastic_optimizers|visualization)/|
^src/queens/(main.py|global_settings.py)
).*$'''
[[tool.mypy.overrides]]
module = ["yaml"]
follow_untyped_imports = true
+
+[tool.pixi.workspace]
+channels = ["conda-forge", "nodefaults"]
+platforms = ["linux-64", "osx-arm64"]
+
+[tool.pixi.feature.base.dependencies]
+python = ">=3.12"
+pip = ">=26.0.1"
+setuptools = ">=81.0.0,<82"
+numba = ">=0.65.0"
+numpy = ">=2.4.3"
+pandas = ">=3.0.2"
+scikit-learn = ">=1.8.0"
+scipy = ">=1.17.1"
+dask = ">=2026.3.0"
+distributed = ">=2026.3.0"
+dask-jobqueue = ">=0.9.0"
+fabric = ">=3.2.3"
+xarray = ">=2026.4.0"
+pydoe = ">=0.9.9"
+salib = ">=1.5.2"
+vtk = ">=9.5.0"
+pyvista = ">=0.47.3"
+chaospy = ">=4.3.20"
+pyyaml = ">=6.0.3"
+jinja2 = ">=3.1.6"
+arviz = ">=0.23.4,<1"
+gpflow = ">=2.9.2"
+tensorflow = ">=2.18.0"
+tensorflow-probability = ">=0.25.0"
+tf-keras = ">=2.18.0"
+jax = ">=0.5.2"
+pymc = ">=5.28.4"
+stable-baselines3 = ">=2.8.0"
+matplotlib = ">=3.10.8"
+seaborn = ">=0.13.2"
+plotly = ">=6.6.0"
+tqdm = ">=4.67.3"
+pathos = ">=0.3.5"
+
+[tool.pixi.feature.base.pypi-dependencies]
+gnuplotlib = ">=0.46"
+diversipy = ">=0.9"
+particles = { git = "https://github.com/nchopin/particles.git"}
+scikit-activeml= ">=1.0.0"
+
+[tool.pixi.feature.base.tasks]
+install-editable = "python -m pip install --no-deps --no-build-isolation -e ."
+
+[tool.pixi.feature.dev.dependencies]
+pytest = ">=9.0.3"
+py = ">=1.11.0"
+pytest-codestyle = ">=2.0.1"
+pytest-cov = ">=7.1.0"
+pytest-mock = ">=3.15.1"
+pytest-xdist = ">=3.8.0"
+mock = ">=5.2.0"
+black = ">=26.3.1"
+pylint = ">=4.0.5"
+isort = ">=8.0.1"
+pre-commit = ">=4.5.1"
+pre-commit-hooks = ">=5.0.0"
+sphinx = ">=9.1.0"
+nbsphinx = ">=0.9.8"
+pydata-sphinx-theme = ">=0.17.0"
+pandoc = "*"
+commitizen = ">=4.13.10"
+docformatter = ">=1.7.7"
+yamllint = ">=1.38.0"
+ruff = ">=0.15.10"
+nbstripout = ">=0.9.1"
+myst-parser = ">=5.0.0"
+testbook = ">=0.4.2"
+ipykernel = ">=7.2.0"
+mypy = ">=1.20.1"
+pip-licenses = ">=5.5"
+
+[tool.pixi.feature.dev.pypi-dependencies]
+pylint-exit = ">=1.2.0"
+licenseheaders = ">=0.8.8"
+
+[tool.pixi.feature.tutorials.dependencies]
+scikit-fem = ">=12.0.1"
+
+[tool.pixi.feature.fourc.dependencies]
+[tool.pixi.feature.fourc.pypi-dependencies]
+fourcipp = ">=1.91.0"
+
+[tool.pixi.environments]
+default = { features = ["base"], no-default-feature = true, solve-group = "default"}
+all = { features = ["base","tutorials", "fourc"], no-default-feature = true, solve-group = "default"}
+dev = { features = ["base", "dev", "tutorials", "fourc"], no-default-feature = true, solve-group = "default"}
+
+[dependency-groups]
+dev = [
+ "pytest>=9.0.3",
+ "py>=1.11.0",
+ "pytest-codestyle>=2.0.1",
+ "pytest-cov>=7.1.0",
+ "pytest-mock>=3.15.1",
+ "pytest-xdist>=3.8.0",
+ "mock>=5.2.0",
+ "black>=26.3.1",
+ "pylint>=4.0.5",
+ "isort>=8.0.1",
+ "pre-commit>=4.5.1",
+ "pre-commit-hooks>=5.0.0",
+ "sphinx>=9.1.0",
+ "nbsphinx>=0.9.8",
+ "pydata-sphinx-theme>=0.17.0",
+ "pandoc",
+ "commitizen>=4.13.10",
+ "docformatter>=1.7.7",
+ "yamllint>=1.38.0",
+ "ruff>=0.15.10",
+ "nbstripout>=0.9.1",
+ "myst-parser>=5.0.0",
+ "testbook>=0.4.2",
+ "ipykernel>=7.2.0",
+ "mypy>=1.20.1",
+ "pip-licenses>=5.5",
+ "pylint-exit>=1.2.0",
+ "licenseheaders>=0.8.8",
+]
+
+[project.optional-dependencies]
+tutorials =["scikit-fem>=12.0.1"]
+fourc = ["fourcipp>=1.91.0"]
+all = ["queens[fourc]", "queens[tutorials]"]
diff --git a/requirements.in b/requirements.in
deleted file mode 100644
index deb3ca439..000000000
--- a/requirements.in
+++ /dev/null
@@ -1,69 +0,0 @@
-# This file contains all the requirements for QUEENS (production runs).
-
-# Do not fix the version of a package if not strictly necessary. We use pip-tools in order to create a requirements.txt file where the version of the different packages are fixed to the latest stable version w.r.t. QUEENS. From time to time pip-tools is used to upgrade to the newer available versions.
-
-# dependencies from environment.yml (i.e., they are handled by conda)
-cython==3.0.11
-numba==0.60.0
-numpy==1.26.4
-pandas==2.2.3
-scikit-learn==1.5.2
-scipy==1.14.1
-
-# Dask packages
-dask
-distributed # dask.distributed
-dask-jobqueue
-bokeh>3 # for dask dashboard
-fabric # for ssh connection
-
-# Others
-xarray # Special array format
-pyDOE # design of experiments
-SALib # for sensitivity analysis
-diversipy # sampling from space filling subsets
-vtk>=9.2.0 # vtk format handler
-pyvista
-autograd # wrapper around numpy for automated differentiation
-particles # Chopin et al. sequential Monte-Carlo, filtering/smoothing package
-chaospy # polynomial chaos
-pyyaml # to load yaml files
-jinja2
-
-# Machine learning libraries
-arviz # Bayesian visualization
-gpflow # LV and variational GPs
-optax # google jax based optimizer
-tensorflow
-tensorflow-probability
-jax
-scikit-activeml>=0.4.1
-pymc
-stable-baselines3
-
-# making fancy plots
-matplotlib
-seaborn
-plotly
-
-# testing framework
-pytest
-py
-pytest-codestyle
-pytest-cov
-pytest-mock
-pytest-xdist
-mock
-py
-
-# Terminal utils
-tqdm # a smart progress meter for loops
-gnuplotlib # for gnuplot based terminal ascii plots
-tomli # TOML parser
-
-# Other Python stuff
-pathos # multiprocessing with more complex python objects
-black>=24.4.2 # formatter for code created by QUEENS's create_script_from_input_file() method
-
-# needed for dev-requirements, check if still needed
-importlib-metadata<7
diff --git a/requirements.txt b/requirements.txt
deleted file mode 100644
index 05a75c0b3..000000000
--- a/requirements.txt
+++ /dev/null
@@ -1,570 +0,0 @@
-#
-# This file is autogenerated by pip-compile with Python 3.11
-# by the following command:
-#
-# pip-compile --output-file=requirements.txt requirements.in
-#
-absl-py==2.1.0
- # via
- # chex
- # keras
- # optax
- # tensorboard
- # tensorflow
- # tensorflow-probability
-arviz==0.20.0
- # via
- # -r requirements.in
- # pymc
-astunparse==1.6.3
- # via tensorflow
-autograd==1.7.0
- # via -r requirements.in
-bcrypt==4.2.0
- # via paramiko
-black==24.10.0
- # via -r requirements.in
-bokeh==3.6.1
- # via -r requirements.in
-cachetools==5.5.0
- # via pymc
-certifi==2024.8.30
- # via requests
-cffi==1.17.1
- # via
- # cryptography
- # pynacl
-chaospy==4.3.17
- # via -r requirements.in
-charset-normalizer==3.4.0
- # via requests
-check-shapes==1.1.1
- # via gpflow
-chex==0.1.87
- # via optax
-click==8.1.7
- # via
- # black
- # dask
- # distributed
-cloudpickle==3.1.0
- # via
- # dask
- # distributed
- # gymnasium
- # pymc
- # stable-baselines3
- # tensorflow-probability
-cons==0.4.6
- # via
- # etuples
- # minikanren
- # pytensor
-contourpy==1.3.0
- # via
- # bokeh
- # matplotlib
-coverage[toml]==7.6.4
- # via pytest-cov
-cryptography==43.0.3
- # via paramiko
-cycler==0.12.1
- # via matplotlib
-cython==3.0.11
- # via -r requirements.in
-dask==2024.10.0
- # via
- # -r requirements.in
- # dask-jobqueue
- # distributed
-dask-jobqueue==0.9.0
- # via -r requirements.in
-decorator==5.1.1
- # via
- # fabric
- # tensorflow-probability
-deprecated==1.2.14
- # via
- # fabric
- # gpflow
-dill==0.3.9
- # via
- # multiprocess
- # pathos
-distributed==2024.10.0
- # via
- # -r requirements.in
- # dask-jobqueue
-diversipy==0.9
- # via -r requirements.in
-dm-tree==0.1.8
- # via tensorflow-probability
-dropstackframe==0.1.1
- # via check-shapes
-etils[epy]==1.10.0
- # via optax
-etuples==0.3.9
- # via
- # minikanren
- # pytensor
-execnet==2.1.1
- # via pytest-xdist
-fabric==3.2.2
- # via -r requirements.in
-farama-notifications==0.0.4
- # via gymnasium
-filelock==3.16.1
- # via
- # pytensor
- # torch
- # triton
-flatbuffers==24.3.25
- # via tensorflow
-fonttools==4.54.1
- # via matplotlib
-fsspec==2024.10.0
- # via
- # dask
- # torch
-gast==0.6.0
- # via
- # tensorflow
- # tensorflow-probability
-gnuplotlib==0.42
- # via -r requirements.in
-google-pasta==0.2.0
- # via tensorflow
-gpflow==2.9.2
- # via -r requirements.in
-grpcio==1.67.1
- # via
- # tensorboard
- # tensorflow
-gymnasium==1.0.0
- # via stable-baselines3
-h5netcdf==1.4.0
- # via arviz
-h5py==3.12.1
- # via
- # h5netcdf
- # keras
- # tensorflow
-idna==3.10
- # via requests
-importlib-metadata==6.11.0
- # via
- # -r requirements.in
- # chaospy
- # dask
- # numpoly
-iniconfig==2.0.0
- # via pytest
-invoke==2.2.0
- # via fabric
-iteration-utilities==0.13.0
- # via scikit-activeml
-jax==0.4.35
- # via
- # -r requirements.in
- # chex
- # optax
-jaxlib==0.4.35
- # via
- # chex
- # jax
- # optax
-jinja2==3.1.4
- # via
- # -r requirements.in
- # bokeh
- # distributed
- # torch
-joblib==1.4.2
- # via
- # particles
- # scikit-activeml
- # scikit-learn
-keras==3.6.0
- # via tensorflow
-kiwisolver==1.4.7
- # via matplotlib
-lark==1.2.2
- # via check-shapes
-libclang==18.1.1
- # via tensorflow
-llvmlite==0.43.0
- # via numba
-locket==1.0.0
- # via
- # distributed
- # partd
-logical-unification==0.4.6
- # via
- # cons
- # minikanren
- # pytensor
-makefun==1.15.6
- # via scikit-activeml
-markdown==3.7
- # via tensorboard
-markdown-it-py==3.0.0
- # via rich
-markupsafe==3.0.2
- # via
- # jinja2
- # werkzeug
-matplotlib==3.9.2
- # via
- # -r requirements.in
- # arviz
- # pyvista
- # salib
- # scikit-activeml
- # seaborn
- # stable-baselines3
- # vtk
-mdurl==0.1.2
- # via markdown-it-py
-minikanren==1.0.3
- # via pytensor
-ml-dtypes==0.4.1
- # via
- # jax
- # jaxlib
- # keras
- # tensorflow
-mock==5.1.0
- # via -r requirements.in
-mpmath==1.3.0
- # via sympy
-msgpack==1.1.0
- # via distributed
-multipledispatch==1.0.0
- # via
- # etuples
- # gpflow
- # logical-unification
- # minikanren
-multiprocess==0.70.17
- # via
- # pathos
- # salib
-mypy-extensions==1.0.0
- # via black
-namex==0.0.8
- # via keras
-networkx==3.4.2
- # via torch
-numba==0.60.0
- # via
- # -r requirements.in
- # particles
-numpoly==1.2.14
- # via chaospy
-numpy==1.26.4
- # via
- # -r requirements.in
- # arviz
- # autograd
- # bokeh
- # chaospy
- # chex
- # contourpy
- # diversipy
- # gnuplotlib
- # gpflow
- # gymnasium
- # h5py
- # jax
- # jaxlib
- # keras
- # matplotlib
- # ml-dtypes
- # numba
- # numpoly
- # numpysane
- # optax
- # pandas
- # particles
- # pydoe
- # pymc
- # pytensor
- # pyvista
- # salib
- # scikit-activeml
- # scikit-learn
- # scipy
- # seaborn
- # stable-baselines3
- # tensorboard
- # tensorflow
- # tensorflow-probability
- # xarray
- # xarray-einstats
-numpysane==0.40
- # via gnuplotlib
-opt-einsum==3.4.0
- # via
- # jax
- # tensorflow
-optax==0.2.3
- # via -r requirements.in
-optree==0.13.0
- # via keras
-packaging==24.1
- # via
- # arviz
- # black
- # bokeh
- # dask
- # distributed
- # gpflow
- # h5netcdf
- # keras
- # matplotlib
- # plotly
- # pooch
- # pytest
- # tensorboard
- # tensorflow
- # xarray
-pandas==2.2.3
- # via
- # -r requirements.in
- # arviz
- # bokeh
- # pymc
- # salib
- # seaborn
- # stable-baselines3
- # xarray
-paramiko==3.5.0
- # via fabric
-partd==1.4.2
- # via dask
-particles==0.4
- # via -r requirements.in
-pathos==0.3.3
- # via -r requirements.in
-pathspec==0.12.1
- # via black
-pillow==11.0.0
- # via
- # bokeh
- # matplotlib
- # pyvista
-platformdirs==4.3.6
- # via
- # black
- # pooch
-plotly==5.24.1
- # via -r requirements.in
-pluggy==1.5.0
- # via pytest
-pooch==1.8.2
- # via pyvista
-pox==0.3.5
- # via pathos
-ppft==1.7.6.9
- # via pathos
-protobuf==5.28.3
- # via
- # tensorboard
- # tensorflow
-psutil==6.1.0
- # via distributed
-py==1.11.0
- # via -r requirements.in
-pycodestyle==2.12.1
- # via pytest-codestyle
-pycparser==2.22
- # via cffi
-pydoe==0.3.8
- # via -r requirements.in
-pygments==2.18.0
- # via rich
-pymc==5.17.0
- # via -r requirements.in
-pynacl==1.5.0
- # via paramiko
-pyparsing==3.2.0
- # via matplotlib
-pytensor==2.25.5
- # via pymc
-pytest==8.3.3
- # via
- # -r requirements.in
- # pytest-codestyle
- # pytest-cov
- # pytest-mock
- # pytest-xdist
-pytest-codestyle==2.0.1
- # via -r requirements.in
-pytest-cov==5.0.0
- # via -r requirements.in
-pytest-mock==3.14.0
- # via -r requirements.in
-pytest-xdist==3.6.1
- # via -r requirements.in
-python-dateutil==2.9.0.post0
- # via
- # matplotlib
- # pandas
-pytz==2024.2
- # via pandas
-pyvista==0.44.1
- # via -r requirements.in
-pyyaml==6.0.2
- # via
- # -r requirements.in
- # bokeh
- # dask
- # distributed
-requests==2.32.3
- # via
- # pooch
- # tensorflow
-rich==13.9.3
- # via
- # keras
- # pymc
-salib==1.5.1
- # via -r requirements.in
-scikit-activeml==0.5.2
- # via -r requirements.in
-scikit-learn==1.5.2
- # via
- # -r requirements.in
- # particles
- # scikit-activeml
-scipy==1.14.1
- # via
- # -r requirements.in
- # arviz
- # chaospy
- # diversipy
- # gpflow
- # jax
- # jaxlib
- # particles
- # pydoe
- # pymc
- # pytensor
- # salib
- # scikit-activeml
- # scikit-learn
- # xarray-einstats
-scooby==0.10.0
- # via pyvista
-seaborn==0.13.2
- # via -r requirements.in
-six==1.16.0
- # via
- # astunparse
- # google-pasta
- # python-dateutil
- # tensorboard
- # tensorflow
- # tensorflow-probability
-sortedcontainers==2.4.0
- # via distributed
-stable-baselines3==2.4.1
- # via -r requirements.in
-sympy==1.13.1
- # via torch
-tabulate==0.9.0
- # via gpflow
-tblib==3.0.0
- # via distributed
-tenacity==9.0.0
- # via plotly
-tensorboard==2.18.0
- # via tensorflow
-tensorboard-data-server==0.7.2
- # via tensorboard
-tensorflow==2.18.0
- # via
- # -r requirements.in
- # gpflow
- # tensorflow-probability
- # tf-keras
-tensorflow-io-gcs-filesystem==0.37.1
- # via tensorflow
-tensorflow-probability[tf]==0.24.0
- # via
- # -r requirements.in
- # gpflow
-termcolor==2.5.0
- # via tensorflow
-tf-keras==2.18.0
- # via tensorflow-probability
-threadpoolctl==3.5.0
- # via
- # pymc
- # scikit-learn
-tomli==2.0.2
- # via -r requirements.in
-toolz==1.0.0
- # via
- # chex
- # dask
- # distributed
- # logical-unification
- # minikanren
- # partd
-torch==2.5.1
- # via stable-baselines3
-tornado==6.4.1
- # via
- # bokeh
- # distributed
-tqdm==4.66.6
- # via -r requirements.in
-triton==3.1.0
- # via torch
-typing-extensions==4.12.2
- # via
- # arviz
- # chex
- # etils
- # gpflow
- # gymnasium
- # optree
- # pymc
- # pyvista
- # tensorflow
- # torch
-tzdata==2024.2
- # via pandas
-urllib3==2.2.3
- # via
- # distributed
- # requests
-vtk==9.3.1
- # via
- # -r requirements.in
- # pyvista
-werkzeug==3.0.6
- # via tensorboard
-wheel==0.44.0
- # via astunparse
-wrapt==1.16.0
- # via
- # deprecated
- # tensorflow
-xarray==2024.10.0
- # via
- # -r requirements.in
- # arviz
- # xarray-einstats
-xarray-einstats==0.8.0
- # via arviz
-xyzservices==2024.9.0
- # via bokeh
-zict==3.0.0
- # via distributed
-zipp==3.20.2
- # via importlib-metadata
-
-# The following packages are considered to be unsafe in a requirements file:
-# setuptools
diff --git a/src/queens/data_processors/__init__.py b/src/queens/data_processors/__init__.py
index d971049e7..3513492c1 100644
--- a/src/queens/data_processors/__init__.py
+++ b/src/queens/data_processors/__init__.py
@@ -16,6 +16,7 @@
Modules for extracting and processing data from simulation output files.
"""
+
from typing import TYPE_CHECKING
from queens.utils.imports import extract_type_checking_imports, import_class_from_class_module_map
diff --git a/src/queens/data_processors/csv_file.py b/src/queens/data_processors/csv_file.py
index 1dba3ca4b..85f1ce888 100644
--- a/src/queens/data_processors/csv_file.py
+++ b/src/queens/data_processors/csv_file.py
@@ -352,11 +352,18 @@ def _filter_by_target_values(self, raw_data):
Returns:
DataFrame: Filtered data.
"""
- if any(raw_data):
- target_indices = []
- for target_value in self.filter_target_values:
- target_indices.append(
- int(np.where(np.abs(raw_data.index - target_value) <= self.filter_tol)[0])
+ if not raw_data.empty:
+ target_indices = raw_data.index.get_indexer(
+ self.filter_target_values,
+ method="nearest",
+ tolerance=self.filter_tol,
+ )
+
+ if (target_indices == -1).any():
+ missing_targets = np.asarray(self.filter_target_values)[target_indices == -1]
+ raise RuntimeError(
+ f"No index values found within tolerance {self.filter_tol} "
+ f"for target values {missing_targets.tolist()}."
)
return raw_data.iloc[target_indices]
@@ -371,13 +378,21 @@ def _filter_by_range(self, raw_data):
Returns:
DataFrame: Filtered data.
"""
- if any(raw_data):
- range_start = int(
- np.where(np.abs(raw_data.index - self.filter_range[0]) <= self.filter_tol)[0]
- )
- range_end = int(
- np.where(np.abs(raw_data.index - self.filter_range[-1]) <= self.filter_tol)[-1]
+ if not raw_data.empty:
+ range_start, range_end = raw_data.index.get_indexer(
+ self.filter_range,
+ method="nearest",
+ tolerance=self.filter_tol,
)
+ if -1 in (range_start, range_end):
+ missing_targets = np.asarray(self.filter_range)[
+ np.asarray([range_start, range_end]) == -1
+ ]
+ raise RuntimeError(
+ f"No index values found within tolerance {self.filter_tol} "
+ f"for range values {missing_targets.tolist()}."
+ )
+
return raw_data.iloc[range_start : range_end + 1]
return None
diff --git a/src/queens/distributions/__init__.py b/src/queens/distributions/__init__.py
index 24075fdab..e9c758172 100644
--- a/src/queens/distributions/__init__.py
+++ b/src/queens/distributions/__init__.py
@@ -16,6 +16,7 @@
Modules for probability distributions.
"""
+
from __future__ import annotations
from typing import TYPE_CHECKING
@@ -34,6 +35,7 @@
from queens.distributions.multinomial import Multinomial
from queens.distributions.normal import Normal
from queens.distributions.particle import Particle
+ from queens.distributions.truncated_normal import TruncatedNormal
from queens.distributions.uniform import Uniform
from queens.distributions.uniform_discrete import UniformDiscrete
@@ -41,5 +43,5 @@
class_module_map = extract_type_checking_imports(__file__)
-def __getattr__(name: str) -> Distribution:
+def __getattr__(name: str) -> type[Distribution]:
return import_class_from_class_module_map(name, class_module_map, __name__)
diff --git a/src/queens/distributions/lognormal.py b/src/queens/distributions/lognormal.py
index 6bd6b1b58..ab757377d 100644
--- a/src/queens/distributions/lognormal.py
+++ b/src/queens/distributions/lognormal.py
@@ -65,7 +65,14 @@ def cdf(self, x: np.ndarray) -> np.ndarray:
Returns:
CDF at positions
"""
- return self.normal_distribution.cdf(np.log(x))
+ x = np.asarray(x, dtype=float).reshape(-1, self.dimension)
+ cdf = np.zeros(x.shape[0])
+ positive_support = np.all(x > 0, axis=1)
+
+ if np.any(positive_support):
+ cdf[positive_support] = self.normal_distribution.cdf(np.log(x[positive_support]))
+
+ return cdf
def draw(self, num_draws: int = 1) -> np.ndarray:
"""Draw samples.
diff --git a/src/queens/distributions/truncated_normal.py b/src/queens/distributions/truncated_normal.py
new file mode 100644
index 000000000..36e07259c
--- /dev/null
+++ b/src/queens/distributions/truncated_normal.py
@@ -0,0 +1,164 @@
+#
+# SPDX-License-Identifier: LGPL-3.0-or-later
+# Copyright (c) 2024-2025, QUEENS contributors.
+#
+# This file is part of QUEENS.
+#
+# QUEENS is free software: you can redistribute it and/or modify it under the terms of the GNU
+# Lesser General Public License as published by the Free Software Foundation, either version 3 of
+# the License, or (at your option) any later version. QUEENS is distributed in the hope that it will
+# be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You
+# should have received a copy of the GNU Lesser General Public License along with QUEENS. If not,
+# see .
+#
+"""Truncated normal distribution."""
+
+import numpy as np
+import scipy.stats
+from numpy.typing import ArrayLike
+
+from queens.distributions._distribution import Continuous
+from queens.utils.logger_settings import log_init_args
+
+
+class TruncatedNormal(Continuous):
+ """Truncated normal distribution.
+
+ A one-dimensional normal distribution restricted to the finite interval
+ [lower_bound, upper_bound]. The distribution is parametrized by the
+ mean and std of the underlying (unbounded) normal distribution.
+
+ Internally, scipy.stats.truncnorm is used with standardized bounds
+ a = (lower_bound - unbounded_mean) / unbounded_std and
+ b = (upper_bound - unbounded_mean) / unbounded_std.
+
+ Attributes:
+ unbounded_mean: Mean of the underlying (unbounded) normal distribution.
+ unbounded_std: Standard deviation of the underlying (unbounded) normal distribution.
+ lower_bound: Lower bound of the distribution.
+ upper_bound: Upper bound of the distribution.
+ scipy_truncnorm: Scipy truncated normal distribution object.
+ mean: (inherited) Mean of the truncated distribution, computed via scipy.
+ covariance: (inherited) Variance of the truncated distribution, computed via scipy.
+ dimension: (inherited) Dimensionality of the distribution (always 1).
+ """
+
+ @log_init_args
+ def __init__(
+ self,
+ unbounded_mean: ArrayLike,
+ unbounded_std: ArrayLike,
+ lower_bound: ArrayLike,
+ upper_bound: ArrayLike,
+ ) -> None:
+ """Initialize truncated normal distribution.
+
+ Args:
+ unbounded_mean: Mean of the underlying (unbounded) normal distribution.
+ unbounded_std: Standard deviation of the underlying (unbounded) normal distribution.
+ Must be positive.
+ lower_bound: Lower bound of the distribution. Must be smaller than upper_bound.
+ upper_bound: Upper bound of the distribution.
+ """
+ unbounded_mean = np.array(unbounded_mean).reshape(-1)
+ unbounded_std = np.array(unbounded_std).reshape(-1)
+ lower_bound = np.array(lower_bound).reshape(-1)
+ upper_bound = np.array(upper_bound).reshape(-1)
+
+ if max(unbounded_mean.size, unbounded_std.size, lower_bound.size, upper_bound.size) != 1:
+ raise NotImplementedError(
+ "Only one-dimensional truncated normal distributions are supported."
+ )
+
+ super().check_positivity(unbounded_std=unbounded_std)
+ super().check_bounds(lower_bound, upper_bound)
+
+ a = (lower_bound - unbounded_mean) / unbounded_std
+ b = (upper_bound - unbounded_mean) / unbounded_std
+ scipy_truncnorm = scipy.stats.truncnorm(a, b, loc=unbounded_mean, scale=unbounded_std)
+
+ self.unbounded_mean = unbounded_mean
+ self.unbounded_std = unbounded_std
+ self.lower_bound = lower_bound
+ self.upper_bound = upper_bound
+ self.scipy_truncnorm = scipy_truncnorm
+
+ super().__init__(
+ mean=scipy_truncnorm.mean(),
+ covariance=scipy_truncnorm.var(),
+ dimension=1,
+ )
+
+ def cdf(self, x: np.ndarray) -> np.ndarray:
+ """Cumulative distribution function.
+
+ Args:
+ x: Positions at which the CDF is evaluated
+
+ Returns:
+ CDF at positions
+ """
+ cdf = self.scipy_truncnorm.cdf(x).reshape(-1)
+ return cdf
+
+ def draw(self, num_draws: int = 1) -> np.ndarray:
+ """Draw samples.
+
+ Args:
+ num_draws: Number of draws
+
+ Returns:
+ Drawn samples from the distribution
+ """
+ samples = self.scipy_truncnorm.rvs(size=num_draws).reshape(-1, 1)
+ return samples
+
+ def logpdf(self, x: np.ndarray) -> np.ndarray:
+ """Log of the probability density function.
+
+ Args:
+ x: Positions at which the log-PDF is evaluated
+
+ Returns:
+ Log-PDF at positions
+ """
+ logpdf = self.scipy_truncnorm.logpdf(x).reshape(-1)
+ return logpdf
+
+ def grad_logpdf(self, x: np.ndarray) -> np.ndarray:
+ """Gradient of the log-PDF with respect to x.
+
+ Args:
+ x: Positions at which the gradient of the log-PDF is evaluated
+
+ Returns:
+ Gradient of the log-PDF at positions
+ """
+ x = np.asarray(x).reshape(-1)
+ grad_logpdf = (self.unbounded_mean - x) / self.unbounded_std**2
+ return grad_logpdf
+
+ def pdf(self, x: np.ndarray) -> np.ndarray:
+ """Probability density function.
+
+ Args:
+ x: Positions at which the PDF is evaluated
+
+ Returns:
+ PDF at positions
+ """
+ pdf = self.scipy_truncnorm.pdf(x).reshape(-1)
+ return pdf
+
+ def ppf(self, quantiles: np.ndarray) -> np.ndarray:
+ """Percent point function (inverse of CDF — quantiles).
+
+ Args:
+ quantiles: Quantiles at which the PPF is evaluated
+
+ Returns:
+ Positions which correspond to given quantiles
+ """
+ ppf = self.scipy_truncnorm.ppf(quantiles).reshape(-1)
+ return ppf
diff --git a/src/queens/drivers/__init__.py b/src/queens/drivers/__init__.py
index e92ffe561..30f56ef91 100644
--- a/src/queens/drivers/__init__.py
+++ b/src/queens/drivers/__init__.py
@@ -17,6 +17,7 @@
Modules for calling external simulation software.
"""
+
from typing import TYPE_CHECKING
from queens.utils.imports import extract_type_checking_imports, import_class_from_class_module_map
diff --git a/src/queens/drivers/jobscript.py b/src/queens/drivers/jobscript.py
index 7989fef9c..32ac3b9a8 100644
--- a/src/queens/drivers/jobscript.py
+++ b/src/queens/drivers/jobscript.py
@@ -14,7 +14,6 @@
#
"""Driver to run a jobscript."""
-
import logging
from collections.abc import Callable
from dataclasses import dataclass
@@ -106,17 +105,18 @@ def __init__(
Args:
parameters (Parameters): Parameters object.
- input_templates (str, Path, dict): Path(s) to simulation input template.
- jobscript_template (str, Path): Path to jobscript template or read-in jobscript
- template.
- executable (str, Path): Path to main executable of respective software.
+ input_templates (str, Path, dict): (Local) path(s) to simulation input template.
+ jobscript_template (str, Path): (Local) path to jobscript template or read-in jobscript
+ template.
+ executable (str, Path): Path to main executable of respective software. Is a remote
+ path when using the Cluster scheduler.
files_to_copy (list, opt): Files or directories to copy to experiment_dir.
data_processor (obj, opt): Instance of data processor class.
gradient_data_processor (obj, opt): Instance of data processor class for gradient data.
jobscript_file_name (str, opt): Jobscript file name (default: 'jobscript.sh').
extra_options (dict, opt): Extra options to inject into jobscript template.
raise_error_on_jobscript_failure (bool, opt): Whether to raise an error for a non-zero
- jobscript exit code.
+ jobscript exit code.
"""
super().__init__(parameters=parameters, files_to_copy=files_to_copy)
self.input_templates = self.create_input_templates_dict(input_templates)
@@ -247,7 +247,7 @@ def run(
with metadata.time_code("run_jobscript"):
execute_cmd = f"bash {jobscript_file} >{log_file} 2>&1"
- self._run_executable(job_id, execute_cmd)
+ self._run_executable(job_id, execute_cmd, log_file)
with metadata.time_code("data_processing"):
results = self._get_results(output_dir)
@@ -287,18 +287,21 @@ def _manage_paths(
return job_dir, output_dir, output_file, input_files, log_file
- def _run_executable(self, job_id, execute_cmd):
+ def _run_executable(self, job_id, execute_cmd, log_file):
"""Run executable.
Args:
job_id (int): Job ID.
execute_cmd (str): Executed command.
+ log_file (Path): Path to redirected jobscript output.
"""
process_returncode, _, stdout, stderr = run_subprocess(
execute_cmd,
raise_error_on_subprocess_failure=False,
)
if self.raise_error_on_jobscript_failure and process_returncode:
+ if log_file.is_file():
+ stdout += f"\n\nContents of {log_file}:\n{read_file(log_file)}"
raise SubprocessError.construct_error_from_command(
command=execute_cmd,
command_output=stdout,
diff --git a/src/queens/iterators/__init__.py b/src/queens/iterators/__init__.py
index c85c89ada..b2e4ee25a 100644
--- a/src/queens/iterators/__init__.py
+++ b/src/queens/iterators/__init__.py
@@ -17,6 +17,7 @@
Modules for parameter studies, uncertainty quantification, sensitivity
analysis, Bayesian inverse analysis, and optimization.
"""
+
from typing import TYPE_CHECKING
from queens.utils.imports import extract_type_checking_imports, import_class_from_class_module_map
diff --git a/src/queens/iterators/latin_hypercube_sampling.py b/src/queens/iterators/latin_hypercube_sampling.py
index c83226faa..a88a0ef96 100644
--- a/src/queens/iterators/latin_hypercube_sampling.py
+++ b/src/queens/iterators/latin_hypercube_sampling.py
@@ -17,7 +17,7 @@
import logging
import numpy as np
-from pyDOE import lhs
+from pydoe import lhs
from queens.iterators._iterator import Iterator
from queens.utils.logger_settings import log_init_args
@@ -81,7 +81,8 @@ def __init__(
def pre_run(self):
"""Generate samples for subsequent LHS analysis."""
- np.random.seed(self.seed)
+ seed_sequence = np.random.SeedSequence(self.seed)
+ lhs_rng = np.random.default_rng(seed_sequence.spawn(1)[0])
num_inputs = self.parameters.num_parameters
@@ -92,7 +93,11 @@ def pre_run(self):
# create latin hyper cube samples in unit hyper cube
hypercube_samples = lhs(
- num_inputs, self.num_samples, criterion=self.criterion, iterations=self.num_iterations
+ num_inputs,
+ self.num_samples,
+ criterion=self.criterion,
+ iterations=self.num_iterations,
+ seed=lhs_rng,
)
# scale and transform samples according to the inverse cdf
self.samples = self.parameters.inverse_cdf_transform(hypercube_samples)
diff --git a/src/queens/iterators/metropolis_hastings_pymc.py b/src/queens/iterators/metropolis_hastings_pymc.py
index 4fc6fd6a4..714b5333c 100644
--- a/src/queens/iterators/metropolis_hastings_pymc.py
+++ b/src/queens/iterators/metropolis_hastings_pymc.py
@@ -200,7 +200,7 @@ def post_run(self):
"""Additional post run for MH."""
super().post_run()
_logger.info(
- "Acceptance rate is: %f",
+ "Acceptance rate is: %s",
self.step.accepted_sum / self.num_samples,
)
diff --git a/src/queens/iterators/optimization.py b/src/queens/iterators/optimization.py
index 564a0a46c..e92ebc3b2 100644
--- a/src/queens/iterators/optimization.py
+++ b/src/queens/iterators/optimization.py
@@ -316,7 +316,7 @@ def core_run(self):
start = time.time()
# minimization with bounds using Jacobian
- if self.algorithm in {"L-BFGS-B", "TNC"}:
+ if self.algorithm == "L-BFGS-B":
self.solution = minimize(
self.objective,
self.initial_guess,
@@ -325,6 +325,15 @@ def core_run(self):
bounds=self.bounds,
options={"maxiter": int(1e4), "disp": self.verbose_output},
)
+ elif self.algorithm == "TNC":
+ self.solution = minimize(
+ self.objective,
+ self.initial_guess,
+ method=self.algorithm,
+ jac=self.jacobian,
+ bounds=self.bounds,
+ options={"maxfun": int(1e4), "disp": self.verbose_output},
+ )
# Constrained Optimization BY Linear Approximation:
# minimization with constraints without Jacobian
elif self.algorithm in {"COBYLA"}:
diff --git a/src/queens/iterators/polynomial_chaos.py b/src/queens/iterators/polynomial_chaos.py
index 0be330b1a..684662dab 100644
--- a/src/queens/iterators/polynomial_chaos.py
+++ b/src/queens/iterators/polynomial_chaos.py
@@ -18,6 +18,10 @@
"""
import logging
+import re
+import sys
+import warnings
+from importlib import metadata
import chaospy as cp
import numpy as np
@@ -33,6 +37,71 @@
from queens.utils.valid_options import get_option
_logger = logging.getLogger(__name__)
+_NUMPOLY_RESHAPE_FIX_VERSION = "1.3.9"
+
+
+def _version_parts(version):
+ """Return numeric release parts from a version string."""
+ release_parts = []
+ for part in version.split("+", maxsplit=1)[0].split("."):
+ match = re.match(r"\d+", part)
+ if match is None:
+ break
+ release_parts.append(int(match.group()))
+ return tuple(release_parts)
+
+
+def _version_less_than(version, minimum_version):
+ """Compare simple numeric version strings."""
+ version_parts = _version_parts(version)
+ minimum_parts = _version_parts(minimum_version)
+ length = max(len(version_parts), len(minimum_parts))
+ version_parts += (0,) * (length - len(version_parts))
+ minimum_parts += (0,) * (length - len(minimum_parts))
+ return version_parts < minimum_parts
+
+
+def _installed_version(package_name):
+ """Return installed package version or *None* if it is unavailable."""
+ try:
+ return metadata.version(package_name)
+ except metadata.PackageNotFoundError:
+ return None
+
+
+def _numpy_rejects_newshape_keyword():
+ """Does the installed NumPy reject the reshape keyword."""
+ try:
+ np.reshape(np.array([0]), newshape=-1) # pylint: disable=no-value-for-parameter
+ except TypeError as exc:
+ return "newshape" in str(exc)
+ return False
+
+
+def has_macos_numpoly_reshape_mismatch():
+ """Does the installed macOS dependencies trigger reshape mismatch."""
+ numpoly_version = _installed_version("numpoly")
+ return (
+ sys.platform == "darwin"
+ and _numpy_rejects_newshape_keyword()
+ and numpoly_version is not None
+ and _version_less_than(numpoly_version, _NUMPOLY_RESHAPE_FIX_VERSION)
+ )
+
+
+def _warn_if_macos_numpoly_reshape_mismatch():
+ """Warn about a known macOS NumPy/numpoly compatibility mismatch."""
+ if has_macos_numpoly_reshape_mismatch():
+ warnings.warn(
+ "PolynomialChaos may fail on macOS with this NumPy/numpoly dependency "
+ f"combination: NumPy {np.__version__} rejects "
+ "numpy.reshape(..., newshape=...), while installed numpoly "
+ f"{_installed_version('numpoly')} is older than {_NUMPOLY_RESHAPE_FIX_VERSION}. "
+ "This is a downstream compatibility issue; use Linux or a dependency set "
+ "with the upstream numpoly fix until it is released.",
+ RuntimeWarning,
+ stacklevel=3,
+ )
class PolynomialChaos(Iterator):
@@ -81,6 +150,7 @@ def __init__(
seed (int, opt): Seed for random number generation
"""
super().__init__(model, parameters, global_settings)
+ _warn_if_macos_numpoly_reshape_mismatch()
if not isinstance(num_collocation_points, int) or num_collocation_points < 1:
raise ValueError("Number of samples for the polynomial must be a positive integer!")
diff --git a/src/queens/iterators/sobol_index_gp_uncertainty_utils/estimator.py b/src/queens/iterators/sobol_index_gp_uncertainty_utils/estimator.py
index fbc9032e3..5caca9f4e 100644
--- a/src/queens/iterators/sobol_index_gp_uncertainty_utils/estimator.py
+++ b/src/queens/iterators/sobol_index_gp_uncertainty_utils/estimator.py
@@ -240,7 +240,7 @@ def _init_dataset(
number_parameters,
)
)
- data[:, :, :, :] = np.NaN
+ data[:, :, :, :] = np.nan
estimates_second_order = xr.DataArray(
data=data,
dims=("gp_realization", "bootstrap", "parameter", "crossparameter"),
diff --git a/src/queens/models/__init__.py b/src/queens/models/__init__.py
index a0fa15b5f..759bfd3af 100644
--- a/src/queens/models/__init__.py
+++ b/src/queens/models/__init__.py
@@ -17,6 +17,7 @@
Modules for multi-query mapping of inputs to outputs, such as parameter
samples to model evaluations.
"""
+
from typing import TYPE_CHECKING
from queens.utils.imports import extract_type_checking_imports, import_class_from_class_module_map
diff --git a/src/queens/models/bmfmc.py b/src/queens/models/bmfmc.py
index 9df16b20b..17d030bce 100644
--- a/src/queens/models/bmfmc.py
+++ b/src/queens/models/bmfmc.py
@@ -194,7 +194,7 @@ def __init__(
X_cols (list, optional): For `man_features`, list of columns from the X-matrix to be
used as informative features.
num_features (int, optional): For `opt_features`, number of features to be used.
- hf_model (model, optional): High-fidelity model used to run simulations and generate
+ hf_model (Model, optional): High-fidelity model used to run simulations and generate
training data.
path_to_lf_mc_data (str or list of str, optional): Path(s) to low-fidelity MC data
files.
diff --git a/src/queens/models/surrogates/gaussian_neural_network.py b/src/queens/models/surrogates/gaussian_neural_network.py
index cb1782567..1421ed83c 100644
--- a/src/queens/models/surrogates/gaussian_neural_network.py
+++ b/src/queens/models/surrogates/gaussian_neural_network.py
@@ -20,6 +20,8 @@
import tensorflow as tf
import tensorflow_probability as tfp
import tf_keras as keras
+from numpy.random import SeedSequence
+from tf_keras.initializers import Initializer
from queens.models.surrogates._surrogate import Surrogate
from queens.utils.configure_tensorflow import configure_keras, configure_tensorflow
@@ -44,8 +46,7 @@ class GaussianNeuralNetwork(Surrogate):
Attributes:
nn_model (tf.model): Tensorflow based Bayesian neural network model
num_epochs (int): Number of training epochs for variational optimization
- optimizer_seed (int): Random seed used for initialization of stochastic gradient decent
- optimizer
+ seed (int): Seed for pseudo-random number generation
verbosity_on (bool): Boolean for model verbosity during training. True=verbose
batch_size (int): Size of data-batch (smaller than the training data size)
scaler_x (obj): Scaler for inputs
@@ -76,7 +77,7 @@ def __init__(
num_epochs=None,
batch_size=None,
adams_training_rate=None,
- optimizer_seed=None,
+ seed=None,
verbosity_on=None,
nodes_per_hidden_layer_lst=None,
activation_per_hidden_layer_lst=None,
@@ -93,7 +94,7 @@ def __init__(
num_epochs (int): Number of epochs used for variational training of the BNN
batch_size (int): Size of data-batch (smaller than the training data size)
adams_training_rate (float): Training rate for the ADAMS gradient decent optimizer
- optimizer_seed (int): Random seed for stochastic optimization routine
+ seed (int): Seed for pseudo-random number generation
verbosity_on (bool): Boolean for model verbosity during training. True=verbose
nodes_per_hidden_layer_lst (lst): List containing number of nodes per hidden layer of
the Neural Network. The length of the list
@@ -130,7 +131,8 @@ def __init__(
self.nn_model = None
self.num_epochs = num_epochs
- self.optimizer_seed = optimizer_seed
+ self.seed = seed
+ self._seed_sequence = SeedSequence(seed)
self.verbosity_on = verbosity_on
self.batch_size = batch_size
self.scaler_x = get_option(VALID_SCALER, data_scaling)()
@@ -165,7 +167,10 @@ def _build_model(self):
keras.layers.Dense(
int(num_nodes),
activation=activation,
- kernel_initializer=self.kernel_initializer,
+ kernel_initializer=self._create_seeded_initializer(
+ self.kernel_initializer,
+ self._spawn_child_seed_sequence(),
+ ),
)
for num_nodes, activation in zip(
self.nodes_per_hidden_layer, self.activation_per_hidden_layer
@@ -177,6 +182,10 @@ def _build_model(self):
keras.layers.Dense(
2 * output_dim,
activation="linear",
+ kernel_initializer=self._create_seeded_initializer(
+ "glorot_uniform",
+ self._spawn_child_seed_sequence(),
+ ),
),
tfp.layers.DistributionLambda(
lambda d: tfd.Normal(
@@ -198,6 +207,30 @@ def _build_model(self):
return model
+ def _spawn_child_seed_sequence(self):
+ """Spawn a child sequence from the optimizer seed sequence."""
+ return self._seed_sequence.spawn(1)[0]
+
+ def _create_seeded_initializer(self, initializer: Initializer, seed_sequence: SeedSequence):
+ """Create a Keras initializer with an explicit child seed."""
+ if initializer is None:
+ initializer = "glorot_uniform"
+ initializer = keras.initializers.get(initializer)
+ if not hasattr(initializer, "get_config"):
+ return initializer
+
+ config = initializer.get_config()
+ if "seed" in config and config["seed"] is None:
+ config["seed"] = self._keras_seed_from_seed_sequence(seed_sequence)
+ initializer = initializer.__class__.from_config(config)
+ return initializer
+
+ @staticmethod
+ def _keras_seed_from_seed_sequence(seed_sequence: SeedSequence) -> int:
+ """Create a Keras-compatible integer seed."""
+ seed = int(seed_sequence.generate_state(1, dtype=np.uint32)[0] % np.iinfo(np.int32).max)
+ return seed or 1
+
@staticmethod
def negative_log_likelihood(y, random_variable_y):
"""Negative log-likelihood of (tensorflow) random variable.
@@ -258,7 +291,8 @@ def train(self):
self.num_refinements += 1
# set the random seeds for optimization/training
- keras.utils.set_random_seed(self.optimizer_seed)
+ training_seed_sequence = self._spawn_child_seed_sequence()
+ keras.utils.set_random_seed(self._keras_seed_from_seed_sequence(training_seed_sequence))
history = self.nn_model.fit(
self.x_train,
self.y_train,
diff --git a/src/queens/models/surrogates/utils/kernel_jitted.py b/src/queens/models/surrogates/utils/kernel_jitted.py
index 666fa4dbb..ce2247fc6 100644
--- a/src/queens/models/surrogates/utils/kernel_jitted.py
+++ b/src/queens/models/surrogates/utils/kernel_jitted.py
@@ -19,7 +19,6 @@
import numpy as np
from numba import jit, njit, prange
from numba.core.errors import NumbaDeprecationWarning, NumbaPendingDeprecationWarning
-from numpy.linalg.linalg import cholesky
warnings.simplefilter("ignore", category=NumbaDeprecationWarning)
warnings.simplefilter("ignore", category=NumbaPendingDeprecationWarning)
@@ -74,7 +73,7 @@ def squared_exponential(x_train_mat, hyper_param_lst):
partial_sigma_0_sq[i, j] = np.exp(-(delta**2) / (2.0 * l_scale_sq))
# calculate first the cholesky decomposition
- cholesky_k_mat = cholesky(k_mat)
+ cholesky_k_mat = np.linalg.cholesky(k_mat)
partial_sigma_n = np.eye(k_mat.shape[0])
@@ -374,7 +373,7 @@ def matern_3_2(x_train_mat, hyper_param_lst):
)
# calculate first the cholesky decomposition
- cholesky_k_mat = cholesky(k_mat)
+ cholesky_k_mat = np.linalg.cholesky(k_mat)
partial_sigma_n = np.eye(k_mat.shape[0])
diff --git a/src/queens/parameters/random_fields/__init__.py b/src/queens/parameters/random_fields/__init__.py
index db2576c62..62af70f77 100644
--- a/src/queens/parameters/random_fields/__init__.py
+++ b/src/queens/parameters/random_fields/__init__.py
@@ -33,5 +33,5 @@
class_module_map = extract_type_checking_imports(__file__)
-def __getattr__(name: str) -> RandomField:
+def __getattr__(name: str) -> type[RandomField]:
return import_class_from_class_module_map(name, class_module_map, __name__)
diff --git a/src/queens/parameters/random_fields/karhunen_loeve.py b/src/queens/parameters/random_fields/karhunen_loeve.py
index 790eb19d0..68181ccd7 100644
--- a/src/queens/parameters/random_fields/karhunen_loeve.py
+++ b/src/queens/parameters/random_fields/karhunen_loeve.py
@@ -197,7 +197,7 @@ def eigendecomp_cov_matrix(self, latent_dimension: int | None = None) -> int:
dimension = latent_dimension
else:
eigenvalues_normed = eigenvalues / np.sum(eigenvalues)
- dimension = (np.cumsum(eigenvalues_normed) < self.explained_variance).argmin() + 1
+ dimension = int((np.cumsum(eigenvalues_normed) < self.explained_variance).argmin()) + 1
if dimension == 1 and eigenvalues_normed[0] <= self.explained_variance:
raise ValueError("Expansion failed.")
diff --git a/src/queens/schedulers/__init__.py b/src/queens/schedulers/__init__.py
index 1bbcf70b7..a3c18becf 100644
--- a/src/queens/schedulers/__init__.py
+++ b/src/queens/schedulers/__init__.py
@@ -16,6 +16,7 @@
Modules for scheduling and submitting computational jobs.
"""
+
from typing import TYPE_CHECKING
from queens.utils.imports import extract_type_checking_imports, import_class_from_class_module_map
diff --git a/src/queens/schedulers/cluster.py b/src/queens/schedulers/cluster.py
index b00cadb6a..157e357ae 100644
--- a/src/queens/schedulers/cluster.py
+++ b/src/queens/schedulers/cluster.py
@@ -63,8 +63,8 @@ def timedelta_to_str(timedelta_obj):
"""
# Time in seconds
time_in_seconds = int(timedelta_obj.total_seconds())
- (minutes, seconds) = divmod(time_in_seconds, 60)
- (hours, minutes) = divmod(minutes, 60)
+ minutes, seconds = divmod(time_in_seconds, 60)
+ hours, minutes = divmod(minutes, 60)
return f"{hours:02}:{minutes:02}:{seconds:02}"
diff --git a/src/queens/stochastic_optimizers/__init__.py b/src/queens/stochastic_optimizers/__init__.py
index 33b1c7e9a..61d5d1b9f 100644
--- a/src/queens/stochastic_optimizers/__init__.py
+++ b/src/queens/stochastic_optimizers/__init__.py
@@ -16,6 +16,7 @@
Modules containing stochastic optimizers.
"""
+
from typing import TYPE_CHECKING
from queens.utils.imports import extract_type_checking_imports, import_class_from_class_module_map
diff --git a/src/queens/utils/config_directories.py b/src/queens/utils/config_directories.py
index a12ae2dc5..874385591 100644
--- a/src/queens/utils/config_directories.py
+++ b/src/queens/utils/config_directories.py
@@ -67,7 +67,8 @@ def experiment_directory(
if experiment_base_directory is None:
experiment_base_directory = base_directory()
else:
- experiment_base_directory = Path(experiment_base_directory)
+ # Replace ~ with home directory if necessary
+ experiment_base_directory = Path(experiment_base_directory).expanduser()
experiment_dir = experiment_base_directory / experiment_name
return experiment_dir, experiment_dir.exists()
diff --git a/src/queens/utils/iterative_averaging.py b/src/queens/utils/iterative_averaging.py
index 5c271e1d1..86c989d43 100644
--- a/src/queens/utils/iterative_averaging.py
+++ b/src/queens/utils/iterative_averaging.py
@@ -273,11 +273,11 @@ def l1_norm(vector: NumericalValue, averaged: bool = False) -> float | np.floati
Returns:
L1 norm of the vector
"""
- vector = np.array(vector).flatten()
- vector = np.nan_to_num(vector)
- norm = np.sum(np.abs(vector))
+ vector_array = np.array(vector).flatten()
+ vector_array = np.nan_to_num(vector_array)
+ norm = np.sum(np.abs(vector_array))
if averaged:
- norm /= len(vector)
+ norm /= vector_array.size
return norm
@@ -291,11 +291,11 @@ def l2_norm(vector: NumericalValue, averaged: bool = False) -> float | np.floati
Returns:
L2 norm of the vector
"""
- vector = np.array(vector).flatten()
- vector = np.nan_to_num(vector)
- norm = np.sum(vector**2) ** 0.5
+ vector_array = np.array(vector).flatten()
+ vector_array = np.nan_to_num(vector_array)
+ norm = np.sum(vector_array**2) ** 0.5
if averaged:
- norm /= len(vector) ** 0.5
+ norm /= vector_array.size**0.5
return norm
diff --git a/src/queens/utils/path.py b/src/queens/utils/path.py
index 6b5cfa9f1..316269629 100644
--- a/src/queens/utils/path.py
+++ b/src/queens/utils/path.py
@@ -17,7 +17,12 @@
from pathlib import Path
from typing import Sequence
-PATH_TO_QUEENS_SOURCE = Path(__file__).parents[1]
+import queens
+
+PATH_TO_QUEENS_SOURCE = Path(queens.__file__).parent
+
+# this path to root is used during runtime and thus needs to be shipped with a build even though it
+# is not useful in that scenario.
PATH_TO_ROOT = Path(__file__).parents[3]
@@ -36,23 +41,6 @@ def relative_path_from_queens_source(relative_path: str) -> Path:
return full_path
-def relative_path_from_root(relative_path: str) -> Path:
- """Create relative path from root directory.
-
- As an example to create: *src/queens/folder/file.A* .
-
- Call *relative_path_from_root("src/queens/folder/file.A")* .
-
- Args:
- relative_path: Path starting from the root directory
-
- Returns:
- Absolute path to the file
- """
- full_path = PATH_TO_ROOT / relative_path
- return full_path
-
-
def create_folder_if_not_existent(path: Path | str) -> Path:
"""Create folder if not existent.
diff --git a/src/queens/utils/remote_build.py b/src/queens/utils/remote_build.py
index 526e9a2b6..bd36ad0cf 100644
--- a/src/queens/utils/remote_build.py
+++ b/src/queens/utils/remote_build.py
@@ -20,20 +20,12 @@
from queens.utils.remote_operations import RemoteConnection
-DEFAULT_PACKAGE_MANAGER = "mamba"
-FALLBACK_PACKAGE_MANAGER = "conda"
-SUPPORTED_PACKAGE_MANAGERS = [DEFAULT_PACKAGE_MANAGER, FALLBACK_PACKAGE_MANAGER]
-
-
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Build queens environment on remote machine.")
parser.add_argument(
"--host", type=str, required=True, help="hostname or ip address of remote host"
)
parser.add_argument("--user", type=str, default=None, required=False, help="remote username")
- parser.add_argument(
- "--remote-python", type=str, required=True, help="path to python environment on remote host"
- )
parser.add_argument(
"--remote-queens-repository",
type=str,
@@ -51,11 +43,10 @@
),
)
parser.add_argument(
- "--package-manager",
+ "--pixi-environment",
type=str,
- default=DEFAULT_PACKAGE_MANAGER,
- choices=SUPPORTED_PACKAGE_MANAGERS,
- help="package manager used for the creation of the remote environment",
+ default="all",
+ help="pixi workspace environment to install on the remote host",
)
args = parser.parse_args(sys.argv[1:])
@@ -63,10 +54,10 @@
remote_connection = RemoteConnection(
host=args.host,
user=args.user,
- remote_python=args.remote_python,
+ remote_python="",
remote_queens_repository=args.remote_queens_repository,
gateway=args.gateway if args.gateway is None else json.loads(args.gateway),
)
remote_connection.open()
remote_connection.sync_remote_repository()
- remote_connection.build_remote_environment(package_manager=args.package_manager)
+ remote_connection.build_remote_environment(pixi_environment=args.pixi_environment)
diff --git a/src/queens/utils/remote_operations.py b/src/queens/utils/remote_operations.py
index 5ccf3f8cf..e253c0b79 100644
--- a/src/queens/utils/remote_operations.py
+++ b/src/queens/utils/remote_operations.py
@@ -35,10 +35,6 @@
_logger = logging.getLogger(__name__)
-DEFAULT_PACKAGE_MANAGER = "mamba"
-FALLBACK_PACKAGE_MANAGER = "conda"
-SUPPORTED_PACKAGE_MANAGERS = [DEFAULT_PACKAGE_MANAGER, FALLBACK_PACKAGE_MANAGER]
-
class RemoteConnection(Connection):
"""This is class wrapper around the Connection class of fabric.
@@ -334,59 +330,41 @@ def copy_from_remote(
def build_remote_environment(
self,
- package_manager: str = DEFAULT_PACKAGE_MANAGER,
+ pixi_environment: str = "all",
) -> None:
- """Build remote QUEENS environment.
+ """Build the remote QUEENS pixi environment.
Args:
- package_manager: Package manager used for the creation of the environment ("mamba" or
- "conda")
+ pixi_environment: Pixi workspace environment to install on the remote host
"""
- if package_manager not in SUPPORTED_PACKAGE_MANAGERS:
- raise ValueError(
- f"The package manager '{package_manager}' is not supported.\n"
- f"Supported package managers are: {SUPPORTED_PACKAGE_MANAGERS}"
- )
remote_connect = f"{self.user}@{self.host}"
-
- # check if requested package_manager is installed on remote machine:
- def package_manager_exists_remote(package_manager_name: str) -> bool:
- """Check if requested package manager exists on remote.
-
- Args:
- package_manager_name: name of package manager
- """
- result_which = self.run(f"which {package_manager_name}")
- if result_which.stderr:
- message = (
- f"Could not find requested package manager '{package_manager_name}' "
- f"on '{remote_connect}'."
- )
- if package_manager_name == DEFAULT_PACKAGE_MANAGER:
- _logger.warning(message)
- _logger.warning(
- "Trying to fall back to the '%s' package manager.", FALLBACK_PACKAGE_MANAGER
- )
- package_manager_exists_remote(package_manager_name=FALLBACK_PACKAGE_MANAGER)
- else:
- raise RuntimeError(message)
- return False
- return True
-
- if not package_manager_exists_remote(package_manager_name=package_manager):
- package_manager = FALLBACK_PACKAGE_MANAGER
+ _logger.info("Check availability of pixi on %s...", remote_connect)
+ result_which = self.run(
+ "bash -lc 'export PATH=\"$HOME/.pixi/bin:$PATH\"; command -v pixi'",
+ warn=True,
+ echo=True,
+ in_stream=False,
+ )
+ if result_which.exited:
+ _logger.warning(
+ "\nCould not find 'pixi' on '%s'. "
+ "The remote environment was not built automatically.\n"
+ "Either install pixi and retry or install the Python environment manually on "
+ "the remote host. See the README.md for environment setup details.\n",
+ remote_connect,
+ )
+ return
_logger.info("Build remote QUEENS environment...")
start_time = time.time()
- environment_name = Path(self.remote_python).parents[1].name
command_string = (
- f"cd {self.remote_queens_repository}; "
- f"{package_manager} remove --name {environment_name} --all -y;"
- f"{package_manager} env create -f environment.yml --name {environment_name}; "
- f"{package_manager} activate {environment_name};"
- f"pip install -e ."
+ 'bash -lc \'export PATH="$HOME/.pixi/bin:$PATH";'
+ f" cd {self.remote_queens_repository}; "
+ f"rm -rf .pixi/envs/{pixi_environment}; "
+ f"pixi install --locked --environment {pixi_environment}; "
+ f"pixi run --locked --environment {pixi_environment} install-editable;'"
)
- result = self.run(command_string, in_stream=False)
+ result = self.run(command_string, echo=True, in_stream=False)
_logger.debug(result.stdout)
_logger.info("Build of remote queens environment was successful.")
diff --git a/src/queens/variational_distributions/__init__.py b/src/queens/variational_distributions/__init__.py
index 233d836a6..5836bf603 100644
--- a/src/queens/variational_distributions/__init__.py
+++ b/src/queens/variational_distributions/__init__.py
@@ -16,11 +16,15 @@
Modules containing probability distributions for variational inference.
"""
+
+from __future__ import annotations
+
from typing import TYPE_CHECKING
from queens.utils.imports import extract_type_checking_imports, import_class_from_class_module_map
if TYPE_CHECKING:
+ from queens.variational_distributions._variational_distribution import Variational
from queens.variational_distributions.full_rank_normal import FullRankNormal
from queens.variational_distributions.joint import Joint
from queens.variational_distributions.mean_field_normal import MeanFieldNormal
@@ -30,5 +34,5 @@
class_module_map = extract_type_checking_imports(__file__)
-def __getattr__(name):
+def __getattr__(name: str) -> type[Variational]:
return import_class_from_class_module_map(name, class_module_map, __name__)
diff --git a/src/queens/variational_distributions/_variational_distribution.py b/src/queens/variational_distributions/_variational_distribution.py
index f5b5f1edd..b428d0ac0 100644
--- a/src/queens/variational_distributions/_variational_distribution.py
+++ b/src/queens/variational_distributions/_variational_distribution.py
@@ -15,95 +15,170 @@
"""Variational Distribution."""
import abc
+from typing import Any, Literal, TypeAlias, TypeVar
+
+import numpy as np
+
+# pylint: disable=invalid-name
+
+NDims = TypeVar("NDims", bound=int)
+NSamples = TypeVar("NSamples", bound=int)
+NParams = TypeVar("NParams", bound=int)
+NParamsComponent = TypeVar("NParamsComponent", bound=int)
+V = TypeVar("V", bound="Variational")
+
+# Vectors
+ArrayNDims: TypeAlias = np.ndarray[tuple[NDims], np.dtype[np.floating]]
+ArrayNParams: TypeAlias = np.ndarray[tuple[NParams], np.dtype[np.floating]]
+ArrayNParamsComponent: TypeAlias = np.ndarray[tuple[NParamsComponent], np.dtype[np.floating]]
+ArrayNSamples: TypeAlias = np.ndarray[tuple[NSamples], np.dtype[np.floating]]
+
+# Matrices
+Array1XNParams: TypeAlias = np.ndarray[tuple[Literal[1], NParams], np.dtype[np.floating]]
+ArrayNDimsX1: TypeAlias = np.ndarray[tuple[NDims, Literal[1]], np.dtype[np.floating]]
+ArrayNDimsXNDims: TypeAlias = np.ndarray[tuple[NDims, NDims], np.dtype[np.floating]]
+ArrayNParamsXNParams: TypeAlias = np.ndarray[tuple[NParams, NParams], np.dtype[np.floating]]
+ArrayNParamsXNSamples: TypeAlias = np.ndarray[tuple[NParams, NSamples], np.dtype[np.floating]]
+ArrayNSamplesXNDims: TypeAlias = np.ndarray[tuple[NSamples, NDims], np.dtype[np.floating]]
+ArrayNSamplesXNParams: TypeAlias = np.ndarray[tuple[NSamples, NParams], np.dtype[np.floating]]
class Variational:
"""Base class for probability distributions for variational inference.
Attributes:
- dimension (int): dimension of the distribution
+ dimension: Dimension of the distribution
+ n_parameters: Number of variational parameters
"""
- def __init__(self, dimension):
- """Initialize variational distribution."""
+ def __init__(self, dimension: NDims, n_parameters: NParams) -> None:
+ """Initialize variational distribution.
+
+ Args:
+ dimension: Dimension of the variational distribution
+ n_parameters: Number of variational parameters
+ """
self.dimension = dimension
+ self.n_parameters = n_parameters
@abc.abstractmethod
- def reconstruct_distribution_parameters(self, variational_parameters):
+ def construct_variational_parameters(self, *args: Any) -> ArrayNParams:
+ """Construct variational parameters from distribution parameters.
+
+ Args:
+ args: Distribution parameters
+
+ Returns:
+ Variational parameters
+ """
+
+ @abc.abstractmethod
+ def reconstruct_distribution_parameters(self, variational_parameters: ArrayNParams) -> Any:
"""Reconstruct distribution parameters from variational parameters.
Args:
- variational_parameters (np.ndarray): Variational parameters
+ variational_parameters: Variational parameters
+
+ Returns:
+ Distribution parameters
"""
@abc.abstractmethod
- def draw(self, variational_parameters, n_draws=1):
+ def draw(self, variational_parameters: ArrayNParams, n_draws: NSamples) -> ArrayNSamplesXNDims:
"""Draw *n_draws* samples from distribution.
Args:
- variational_parameters (np.ndarray): variational parameters (1 x n_params)
- n_draws (int): Number of samples
+ variational_parameters: Variational parameters
+ n_draws: Number of samples
+
+ Returns:
+ Drawn samples
"""
@abc.abstractmethod
- def logpdf(self, variational_parameters, x):
- """Evaluate the natural logarithm of the logpdf at sample.
+ def logpdf(
+ self,
+ variational_parameters: ArrayNParams,
+ x: ArrayNSamplesXNDims,
+ ) -> ArrayNSamples:
+ """Evaluate the natural logarithm of the PDF.
Args:
- variational_parameters (np.ndarray): variational parameters (1 x n_params)
- x (np.ndarray): Locations to evaluate (n_samples x n_dim)
+ variational_parameters: Variational parameters
+ x: Locations to evaluate
+
+ Returns:
+ Log-PDF values
"""
@abc.abstractmethod
- def pdf(self, variational_parameters, x):
- """Evaluate the probability density function (pdf) at sample.
+ def pdf(
+ self,
+ variational_parameters: ArrayNParams,
+ x: ArrayNSamplesXNDims,
+ ) -> ArrayNSamples:
+ """Evaluate the probability density function (PDF).
Args:
- variational_parameters (np.ndarray): variational parameters (1 x n_params)
- x (np.ndarray): Locations to evaluate (n_samples x n_dim)
+ variational_parameters: Variational parameters
+ x: Locations to evaluate
+
+ Returns:
+ PDF values
"""
@abc.abstractmethod
- def grad_params_logpdf(self, variational_parameters, x):
- """Logpdf gradient w.r.t. the variational parameters.
+ def grad_params_logpdf(
+ self,
+ variational_parameters: ArrayNParams,
+ x: ArrayNSamplesXNDims,
+ ) -> ArrayNParamsXNSamples:
+ """Log-PDF gradient w.r.t. the variational parameters.
Evaluated at samples *x*. Also known as the score function.
Args:
- variational_parameters (np.ndarray): variational parameters (1 x n_params)
- x (np.ndarray): Locations to evaluate (n_samples x n_dim)
+ variational_parameters: Variational parameters
+ x: Locations to evaluate
+
+ Returns:
+ Gradient of the log-PDF w.r.t. the variational parameters
"""
@abc.abstractmethod
- def fisher_information_matrix(self, variational_parameters):
- """Compute the fisher information matrix.
+ def fisher_information_matrix(
+ self, variational_parameters: ArrayNParams
+ ) -> ArrayNParamsXNParams:
+ """Compute the Fisher information matrix.
Depends on the variational distribution for the given
parameterization.
Args:
- variational_parameters (np.ndarray): variational parameters (1 x n_params)
+ variational_parameters: Variational parameters
+
+ Returns:
+ Fisher information matrix
"""
@abc.abstractmethod
- def initialize_variational_parameters(self, random=False):
+ def initialize_variational_parameters(self, random: bool = False) -> ArrayNParams:
"""Initialize variational parameters.
Args:
- random (bool, optional): If True, a random initialization is used. Otherwise the
- default is selected
+ random: If True, a random initialization is used. Otherwise the default is selected.
Returns:
- variational_parameters (np.ndarray): variational parameters (1 x n_params)
+ Variational parameters
"""
@abc.abstractmethod
- def export_dict(self, variational_parameters):
+ def export_dict(self, variational_parameters: ArrayNParams) -> dict:
"""Create a dict of the distribution based on the given parameters.
Args:
- variational_parameters (np.ndarray): Variational parameters
+ variational_parameters: Variational parameters
Returns:
- export_dict (dictionary): Dict containing distribution information
+ Dictionary containing distribution information
"""
diff --git a/src/queens/variational_distributions/full_rank_normal.py b/src/queens/variational_distributions/full_rank_normal.py
index e0006df10..5f3505103 100644
--- a/src/queens/variational_distributions/full_rank_normal.py
+++ b/src/queens/variational_distributions/full_rank_normal.py
@@ -14,12 +14,28 @@
#
"""Full-Rank Normal Variational Distribution."""
+from typing import cast
+
import numpy as np
import scipy
from numba import njit
from queens.utils.logger_settings import log_init_args
-from queens.variational_distributions._variational_distribution import Variational
+from queens.variational_distributions._variational_distribution import (
+ Array1XNParams,
+ ArrayNDims,
+ ArrayNDimsX1,
+ ArrayNDimsXNDims,
+ ArrayNParams,
+ ArrayNParamsXNParams,
+ ArrayNParamsXNSamples,
+ ArrayNSamples,
+ ArrayNSamplesXNDims,
+ ArrayNSamplesXNParams,
+ NDims,
+ NSamples,
+ Variational,
+)
class FullRankNormal(Variational):
@@ -37,20 +53,20 @@ class FullRankNormal(Variational):
The Journal of Machine Learning Research 18.1 (2017): 430-474.
Attributes:
- n_parameters (int): Number of parameters used in the parameterization.
+ n_parameters: Number of parameters used in the parameterization.
"""
@log_init_args
- def __init__(self, dimension):
+ def __init__(self, dimension: NDims) -> None:
"""Initialize variational distribution.
Args:
- dimension (int): dimension of the RV
+ dimension: Dimension of the RV
"""
- super().__init__(dimension)
- self.n_parameters = (dimension * (dimension + 1)) // 2 + dimension
+ n_parameters = (dimension * (dimension + 1)) // 2 + dimension
+ super().__init__(dimension, n_parameters)
- def initialize_variational_parameters(self, random=False):
+ def initialize_variational_parameters(self, random: bool = False) -> ArrayNParams:
r"""Initialize variational parameters.
Default initialization:
@@ -60,11 +76,10 @@ def initialize_variational_parameters(self, random=False):
:math:`\mu=Uniform(-0.1,0.1)` :math:`L=diag(Uniform(0.9,1.1))` where :math:`\Sigma=LL^T`
Args:
- random (bool, optional): If True, a random initialization is used. Otherwise the
- default is selected
+ random: If True, a random initialization is used. Otherwise the default is selected.
Returns:
- variational_parameters (np.ndarray): variational parameters (1 x n_params)
+ Variational parameters
"""
if random:
cholesky_covariance = np.eye(self.dimension) + 0.1 * (
@@ -84,16 +99,17 @@ def initialize_variational_parameters(self, random=False):
return variational_parameters
- @staticmethod
- def construct_variational_parameters(mean, covariance):
+ def construct_variational_parameters( # pylint: disable=arguments-differ
+ self, mean: ArrayNDimsX1 | ArrayNDims, covariance: ArrayNDimsXNDims
+ ) -> ArrayNParams:
"""Construct the variational parameters from mean and covariance.
Args:
- mean (np.ndarray): Mean values of the distribution (n_dim x 1)
- covariance (np.ndarray): Covariance matrix of the distribution (n_dim x n_dim)
+ mean: Mean values of the distribution
+ covariance: Covariance matrix of the distribution
Returns:
- variational_parameters (np.ndarray): Variational parameters
+ Variational parameters
"""
if len(mean) == len(covariance):
cholesky_covariance = np.linalg.cholesky(covariance)
@@ -109,16 +125,33 @@ def construct_variational_parameters(mean, covariance):
)
return variational_parameters
- def reconstruct_distribution_parameters(self, variational_parameters, return_cholesky=False):
+ def reconstruct_distribution_parameters(
+ self, variational_parameters: ArrayNParams
+ ) -> tuple[ArrayNDimsX1, ArrayNDimsXNDims]:
+ """Reconstruct mean value and covariance.
+
+ Args:
+ variational_parameters: Variational parameters
+ Returns:
+ Mean value of the distribution
+ Covariance of the distribution
+ """
+ mean, cov, _ = self.reconstruct_distribution_parameters_with_cholesky(
+ variational_parameters
+ )
+ return mean, cov
+
+ def reconstruct_distribution_parameters_with_cholesky(
+ self, variational_parameters: ArrayNParams
+ ) -> tuple[ArrayNDimsX1, ArrayNDimsXNDims, ArrayNDimsXNDims]:
"""Reconstruct mean value, covariance and its Cholesky decomposition.
Args:
- variational_parameters (np.ndarray): Variational parameters
- return_cholesky (bool, optional): Return the L if desired
+ variational_parameters: Variational parameters
Returns:
- mean (np.ndarray): Mean value of the distribution (n_dim x 1)
- cov (np.ndarray): Covariance of the distribution (n_dim x n_dim)
- L (np.ndarray): Cholesky decomposition of the covariance matrix (n_dim x n_dim)
+ Mean value of the distribution
+ Covariance of the distribution
+ Cholesky decomposition of the covariance matrix
"""
mean = variational_parameters[: self.dimension].reshape(-1, 1)
cholesky_covariance_array = variational_parameters[self.dimension :]
@@ -127,54 +160,50 @@ def reconstruct_distribution_parameters(self, variational_parameters, return_cho
cholesky_covariance[idx] = cholesky_covariance_array
cov = np.matmul(cholesky_covariance, cholesky_covariance.T)
- if return_cholesky:
- return mean, cov, cholesky_covariance
+ return cast(ArrayNDimsX1, mean), cov, cholesky_covariance
- return mean, cov
-
- def _grad_reconstruct_distribution_parameters(self):
+ def _grad_reconstruct_distribution_parameters(self) -> Array1XNParams:
"""Gradient of the parameter reconstruction.
Returns:
- grad_reconstruct_params (np.ndarray): Gradient vector of the reconstruction
- w.r.t. the variational parameters
+ Gradient vector of the reconstruction w.r.t. the variational parameters
"""
grad_reconstruct_params = np.ones((1, self.n_parameters))
- return grad_reconstruct_params
+ return cast(Array1XNParams, grad_reconstruct_params)
- def draw(self, variational_parameters, n_draws=1):
+ def draw(self, variational_parameters: ArrayNParams, n_draws: NSamples) -> ArrayNSamplesXNDims:
"""Draw *n_draw* samples from the variational distribution.
Args:
- variational_parameters (np.ndarray): Variational parameters
- n_draws (int): Number of samples to draw
+ variational_parameters: Variational parameters
+ n_draws: Number of samples to draw
Returns:
- samples (np.ndarray): Row-wise samples of the variational distribution
+ Samples
"""
- mean, _, cholesky = self.reconstruct_distribution_parameters(
- variational_parameters, return_cholesky=True
+ mean, _, cholesky = self.reconstruct_distribution_parameters_with_cholesky(
+ variational_parameters
)
sample = np.dot(cholesky, np.random.randn(self.dimension, n_draws)).T + mean.reshape(1, -1)
return sample
- def logpdf(self, variational_parameters, x):
- """Logpdf evaluated using the at samples *x*.
+ def logpdf(self, variational_parameters: ArrayNParams, x: ArrayNSamplesXNDims) -> ArrayNSamples:
+ """Log-PDF evaluated at the samples *x*.
Args:
- variational_parameters (np.ndarray): Variational parameters
- x (np.ndarray): Row-wise samples
+ variational_parameters: Variational parameters
+ x: Row-wise samples
Returns:
- logpdf (np.ndarray): Row vector of the logpdfs
+ Log-PDF values
"""
- mean, cov, cholesky = self.reconstruct_distribution_parameters(
- variational_parameters, return_cholesky=True
+ mean, cov, cholesky = self.reconstruct_distribution_parameters_with_cholesky(
+ variational_parameters
)
x = np.atleast_2d(x)
u = np.linalg.solve(cov, (x.T - mean))
- def col_dot_prod(x, y):
+ def col_dot_prod(x: np.ndarray, y: np.ndarray) -> np.ndarray:
return np.sum(x * y, axis=0)
logpdf = (
@@ -184,35 +213,37 @@ def col_dot_prod(x, y):
)
return logpdf.flatten()
- def pdf(self, variational_parameters, x):
- """Pdf of evaluated at given samples *x*.
+ def pdf(self, variational_parameters: ArrayNParams, x: ArrayNSamplesXNDims) -> ArrayNSamples:
+ """PDF of evaluated at given samples *x*.
- First computes the logpdf, which is numerically more stable for exponential distributions.
+ First computes the log-PDF, which is numerically more stable for exponential distributions.
Args:
- variational_parameters (np.ndarray): Variational parameters
- x (np.ndarray): Row-wise samples
+ variational_parameters: Variational parameters
+ x: Row-wise samples
Returns:
- pdf (np.ndarray): Row vector of the pdfs
+ Row vector of the PDF values
"""
pdf = np.exp(self.logpdf(variational_parameters, x))
return pdf
- def grad_params_logpdf(self, variational_parameters, x):
- """Logpdf gradient w.r.t. to the variational parameters.
+ def grad_params_logpdf(
+ self, variational_parameters: ArrayNParams, x: ArrayNSamplesXNDims
+ ) -> ArrayNParamsXNSamples:
+ """Log-PDF gradient w.r.t. to the variational parameters.
Evaluated at samples *x*. Also known as the score function.
Args:
- variational_parameters (np.ndarray): Variational parameters
- x (np.ndarray): Row-wise samples
+ variational_parameters: Variational parameters
+ x: Row-wise samples
Returns:
- score (np.ndarray): Column-wise scores
+ Column-wise scores
"""
- mean, cov, cholesky = self.reconstruct_distribution_parameters(
- variational_parameters, return_cholesky=True
+ mean, cov, cholesky = self.reconstruct_distribution_parameters_with_cholesky(
+ variational_parameters
)
x = np.atleast_2d(x)
# Helper variable
@@ -236,17 +267,21 @@ def grad_params_logpdf(self, variational_parameters, x):
score = np.vstack((dlogpdf_dmu, dlogpdf_dsigma))
return score
- def total_grad_params_logpdf(self, variational_parameters, standard_normal_sample_batch):
- """Total logpdf reparameterization gradient.
+ def total_grad_params_logpdf(
+ self,
+ variational_parameters: ArrayNParams,
+ standard_normal_sample_batch: ArrayNSamplesXNDims,
+ ) -> ArrayNSamplesXNParams:
+ """Total log-PDF reparameterization gradient.
- Total logpdf reparameterization gradient w.r.t. the variational parameters.
+ Total log-PDF reparameterization gradient w.r.t. the variational parameters.
Args:
- variational_parameters (np.ndarray): Variational parameters
- standard_normal_sample_batch (np.ndarray): Standard normal distributed sample batch
+ variational_parameters: Variational parameters
+ standard_normal_sample_batch: Standard normal distributed sample batch
Returns:
- total_grad (np.ndarray): Total Logpdf reparameterization gradient
+ Total log-PDF reparameterization gradient
"""
idx = np.tril_indices(self.dimension, k=0, m=self.dimension)
cholesky_diagonal_idx = np.where(np.equal(*idx))[0] + self.dimension
@@ -254,22 +289,20 @@ def total_grad_params_logpdf(self, variational_parameters, standard_normal_sampl
total_grad[:, cholesky_diagonal_idx] = -1 / variational_parameters[cholesky_diagonal_idx]
return total_grad
- def grad_sample_logpdf(self, variational_parameters, sample_batch):
- """Computes the gradient of the logpdf w.r.t. to the *x*.
+ def grad_sample_logpdf(
+ self, variational_parameters: ArrayNParams, sample_batch: ArrayNSamplesXNDims
+ ) -> ArrayNSamplesXNDims:
+ """Computes the gradient of the log-PDF w.r.t. to the sample *x*.
Args:
- variational_parameters (np.ndarray): Variational parameters
- sample_batch (np.ndarray): Row-wise samples
+ variational_parameters: Variational parameters
+ sample_batch: Row-wise samples
Returns:
- gradients_batch (np.ndarray): Gradients of the log-pdf w.r.t. the
- sample *x*. The first dimension of the
- array corresponds to the different samples.
- The second dimension to different dimensions
- within one sample. (Third dimension is empty
- and just added to keep slices two-dimensional.)
+ Gradients of the log-pdf w.r.t. the sample *x*. The first dimension of the array
+ corresponds to the different samples. The second dimension to different dimensions
+ within one sample.
"""
- # pylint: disable-next=unbalanced-tuple-unpacking
mean, cov = self.reconstruct_distribution_parameters(variational_parameters)
gradient_lst = []
for sample in sample_batch:
@@ -280,20 +313,22 @@ def grad_sample_logpdf(self, variational_parameters, sample_batch):
gradients_batch = np.array(gradient_lst)
return gradients_batch.reshape(sample_batch.shape)
- def fisher_information_matrix(self, variational_parameters):
+ def fisher_information_matrix(
+ self, variational_parameters: ArrayNParams
+ ) -> ArrayNParamsXNParams:
"""Compute the Fisher information matrix analytically.
Args:
- variational_parameters (np.ndarray): Variational parameters
+ variational_parameters: Variational parameters
Returns:
- FIM (np.ndarray): Matrix (num parameters x num parameters)
+ Fisher information matrix
"""
- _, cov, cholesky = self.reconstruct_distribution_parameters(
- variational_parameters, return_cholesky=True
+ _, cov, cholesky = self.reconstruct_distribution_parameters_with_cholesky(
+ variational_parameters
)
- def fim_blocks(dimension):
+ def fim_blocks(dimension: int) -> tuple[np.ndarray, np.ndarray]:
"""Compute the blocks of the FIM."""
mu_block = np.linalg.inv(cov + 1e-8 * np.eye(len(cov)))
n_params_chol = (dimension * (dimension + 1)) // 2
@@ -324,16 +359,14 @@ def fim_blocks(dimension):
return scipy.linalg.block_diag(mu_block, sigma_block)
- def export_dict(self, variational_parameters):
+ def export_dict(self, variational_parameters: ArrayNParams) -> dict:
"""Create a dict of the distribution based on the given parameters.
Args:
- variational_parameters (np.ndarray): Variational parameters
-
+ variational_parameters: Variational parameters
Returns:
- export_dict (dictionary): Dict containing distribution information
+ Dictionary containing distribution information
"""
- # pylint: disable-next=unbalanced-tuple-unpacking
mean, cov = self.reconstruct_distribution_parameters(variational_parameters)
export_dict = {
"type": "fullrank_Normal",
@@ -343,38 +376,42 @@ def export_dict(self, variational_parameters):
}
return export_dict
- def conduct_reparameterization(self, variational_parameters, n_samples):
+ def conduct_reparameterization(
+ self, variational_parameters: ArrayNParams, n_samples: NSamples
+ ) -> tuple[ArrayNSamplesXNDims, ArrayNSamplesXNDims]:
"""Conduct a reparameterization.
Args:
- variational_parameters (np.ndarray): Array with variational parameters
- n_samples (int): Number of samples for current batch
+ variational_parameters: Array with variational parameters
+ n_samples: Number of samples for current batch
Returns:
- samples_mat (np.ndarray): Array of actual samples from the variational
- distribution
+ Actual samples from the variational distribution
+ Standard normal distributed samples used for the reparameterization
"""
standard_normal_sample_batch = np.random.normal(0, 1, size=(n_samples, self.dimension))
- mean, _, cholesky = self.reconstruct_distribution_parameters(
- variational_parameters, return_cholesky=True
+ mean, _, cholesky = self.reconstruct_distribution_parameters_with_cholesky(
+ variational_parameters
)
samples_mat = mean + np.dot(cholesky, standard_normal_sample_batch.T)
return samples_mat.T, standard_normal_sample_batch
def grad_params_reparameterization(
- self, variational_parameters, standard_normal_sample_batch, upstream_gradient
- ):
+ self,
+ variational_parameters: ArrayNParams,
+ standard_normal_sample_batch: ArrayNSamplesXNDims,
+ upstream_gradient: ArrayNSamplesXNDims,
+ ) -> ArrayNSamplesXNParams:
r"""Calculate the gradient of the reparameterization.
Args:
- variational_parameters (np.ndarray): Variational parameters
- standard_normal_sample_batch (np.ndarray): Standard normal distributed sample batch
- upstream_gradient (np.array): Upstream gradient
+ variational_parameters: Variational parameters
+ standard_normal_sample_batch: Standard normal distributed sample batch
+ upstream_gradient: Upstream gradient
Returns:
- gradient (np.ndarray): Gradient of the upstream function w.r.t. the variational
- parameters.
+ Gradient of the upstream function w.r.t. the variational parameters.
**Note:**
We assume that *grad_reconstruct_params* is a row-vector containing the partial
diff --git a/src/queens/variational_distributions/joint.py b/src/queens/variational_distributions/joint.py
index 7ec2caa51..c8a92306d 100644
--- a/src/queens/variational_distributions/joint.py
+++ b/src/queens/variational_distributions/joint.py
@@ -14,13 +14,32 @@
#
"""Joint Variational Distribution."""
+from typing import Generic, Iterator, TypeAlias, TypeVar
+
import numpy as np
import scipy
-
-from queens.variational_distributions._variational_distribution import Variational
-
-
-class Joint(Variational):
+from numpy.typing import ArrayLike
+
+from queens.variational_distributions._variational_distribution import (
+ ArrayNParams,
+ ArrayNParamsComponent,
+ ArrayNParamsXNParams,
+ ArrayNParamsXNSamples,
+ ArrayNSamples,
+ ArrayNSamplesXNDims,
+ NDims,
+ NSamples,
+ V,
+ Variational,
+)
+
+NDimsComponent = TypeVar("NDimsComponent", bound=int)
+ArrayNSamplesXNDimsComponent: TypeAlias = np.ndarray[ # pylint: disable=invalid-name
+ tuple[NSamples, NDimsComponent], np.dtype[np.floating]
+]
+
+
+class Joint(Variational, Generic[V]):
r"""Joint variational distribution class.
This distribution allows to join distributions in an independent fashion:
@@ -30,32 +49,29 @@ class Joint(Variational):
is a generalization of the mean field distribution
Attributes:
- distributions (list): List of variational distribution objects for the different
- independent distributions.
- n_parameters (int): Total number of parameters used in the parameterization.
- distributions_n_parameters (np.ndarray): Number of parameters per distribution
- distributions_dimension (np.ndarray): Number of dimension per distribution
+ distributions: Variational distribution objects for the different independent distributions.
+ n_parameters: Total number of parameters used in the parameterization.
+ distributions_n_parameters: Number of parameters per distribution
+ distributions_dimension: Number of dimension per distribution
"""
- def __init__(self, distributions, dimension):
+ def __init__(self, distributions: list[V], dimension: NDims) -> None:
"""Initialize joint distribution.
Args:
- dimension (int): Dimension of the random variable
- distributions (list): List of variational distribution objects for the different
- independent distributions.
+ distributions: Variational distribution objects for the different independent
+ distributions.
+ dimension: Dimension of the random variable
"""
- super().__init__(dimension)
self.distributions = distributions
-
self.distributions_n_parameters = np.array(
- [distribution.n_parameters for distribution in distributions]
+ [distribution.n_parameters for distribution in self.distributions]
).astype(int)
- self.n_parameters = int(np.sum(self.distributions_n_parameters))
+ super().__init__(dimension, n_parameters=int(np.sum(self.distributions_n_parameters)))
self.distributions_dimension = np.array(
- [distribution.dimension for distribution in distributions]
+ [distribution.dimension for distribution in self.distributions]
).astype(int)
if dimension != np.sum(self.distributions_dimension):
@@ -64,17 +80,16 @@ def __init__(self, distributions, dimension):
f"dimensions of the subdistributions {np.sum(self.distributions_dimension)}"
)
- def initialize_variational_parameters(self, random=False):
+ def initialize_variational_parameters(self, random: bool = False) -> ArrayNParams:
r"""Initialize variational parameters.
The distribution initialization is handle by the component itself.
Args:
- random (bool, optional): If True, a random initialization is used. Otherwise the
- default is selected
+ random: If True, a random initialization is used. Otherwise the default is selected
Returns:
- variational_parameters (np.ndarray): variational parameters (1 x n_params)
+ Variational parameters
"""
variational_parameters = np.concatenate(
[
@@ -85,25 +100,29 @@ def initialize_variational_parameters(self, random=False):
return variational_parameters
- def construct_variational_parameters(self, distributions_parameters_list):
+ def construct_variational_parameters( # pylint: disable=arguments-differ
+ self, distributions_parameters: list
+ ) -> ArrayNParams:
"""Construct the variational parameters from the distribution list.
Args:
- distributions_parameters_list (list): List of the parameters of the distributions
+ distributions_parameters: Parameters of the distributions
Returns:
- variational_parameters (np.ndarray): Variational parameters
+ Variational parameters
"""
variational_parameters = []
for parameters, distribution in zip(
- distributions_parameters_list, self.distributions, strict=True
+ distributions_parameters, self.distributions, strict=True
):
variational_parameters.append(
distribution.construct_variational_parameters(*parameters)
)
return np.concatenate(variational_parameters)
- def _construct_distributions_variational_parameters(self, variational_parameters):
+ def _construct_distributions_variational_parameters(
+ self, variational_parameters: ArrayNParams
+ ) -> list[ArrayNParamsComponent]:
"""Reconstruct the parameters of the distributions.
Creates a list containing the variational parameters of the different components.
@@ -111,27 +130,28 @@ def _construct_distributions_variational_parameters(self, variational_parameters
The list is nested, each entry correspond to the parameters of a distribution.
Args:
- variational_parameters (np.ndarray): Variational parameters
+ variational_parameters: Variational parameters
Returns:
- variational_parameters_list (list): List of the variational parameters of the components
+ Variational parameters of the components
"""
variational_parameters_list = split_array_by_chunk_sizes(
variational_parameters, self.distributions_n_parameters
)
return variational_parameters_list
- def reconstruct_distribution_parameters(self, variational_parameters):
+ def reconstruct_distribution_parameters(
+ self, variational_parameters: ArrayNParams
+ ) -> list[list[tuple[list | np.ndarray]]]:
"""Reconstruct the parameters of distributions.
The list is nested, each entry correspond to the parameters of a distribution.
Args:
- variational_parameters (np.ndarray): Variational parameters
+ variational_parameters: Variational parameters
Returns:
- distribution_parameters_list (list): List of the distribution parameters of the
- components
+ Distribution parameters of the components
"""
distribution_parameters_list = []
@@ -141,19 +161,20 @@ def reconstruct_distribution_parameters(self, variational_parameters):
distribution_parameters_list.append(
distribution.reconstruct_distribution_parameters(parameters)
)
-
return [distribution_parameters_list]
- def _zip_variational_parameters_distributions(self, variational_parameters):
+ def _zip_variational_parameters_distributions(
+ self, variational_parameters: ArrayNParams
+ ) -> Iterator[tuple[ArrayNParamsComponent, V]]:
"""Zip parameters and distributions.
This helper function creates a generator for variational parameters and subdistribution.
Args:
- variational_parameters (np.ndarray): Variational parameters
+ variational_parameters: Variational parameters
Returns:
- zip: of variational parameters and distributions
+ Zip of variational parameters and distributions
"""
return zip(
split_array_by_chunk_sizes(variational_parameters, self.distributions_n_parameters),
@@ -161,18 +182,20 @@ def _zip_variational_parameters_distributions(self, variational_parameters):
strict=True,
)
- def _zip_variational_parameters_distributions_samples(self, variational_parameters, samples):
+ def _zip_variational_parameters_distributions_samples(
+ self, variational_parameters: ArrayNParams, samples: ArrayNSamplesXNDims
+ ) -> Iterator[tuple[ArrayNParamsComponent, ArrayNSamplesXNDimsComponent, V]]:
"""Zip parameters, samples and distributions.
This helper function creates a generator for variational parameters, samples and
subdistribution.
Args:
- variational_parameters (np.ndarray): Variational parameters
- samples (np.ndarray): Row-wise samples
+ variational_parameters: Variational parameters
+ samples: Row-wise samples
Returns:
- zip: of variational parameters, samples and distributions
+ Zip of variational parameters, samples and distributions
"""
return zip(
split_array_by_chunk_sizes(variational_parameters, self.distributions_n_parameters),
@@ -181,15 +204,15 @@ def _zip_variational_parameters_distributions_samples(self, variational_paramete
strict=True,
)
- def draw(self, variational_parameters, n_draws=1):
+ def draw(self, variational_parameters: ArrayNParams, n_draws: NSamples) -> ArrayNSamplesXNDims:
"""Draw *n_draw* samples from the variational distribution.
Args:
- variational_parameters (np.ndarray): Variational parameters
- n_draws (int): Number of samples to draw
+ variational_parameters: Variational parameters
+ n_draws: Number of samples to draw
Returns:
- samples (np.ndarray): Row wise samples of the variational distribution
+ Samples
"""
sample_array = []
for parameters, distribution in self._zip_variational_parameters_distributions(
@@ -198,17 +221,17 @@ def draw(self, variational_parameters, n_draws=1):
sample_array.append(distribution.draw(parameters, n_draws))
return np.column_stack(sample_array)
- def logpdf(self, variational_parameters, x):
- """Logpdf evaluated using the variational parameters at samples *x*.
+ def logpdf(self, variational_parameters: ArrayNParams, x: ArrayNSamplesXNDims) -> ArrayNSamples:
+ """Log-PDF evaluated using the variational parameters at samples *x*.
Args:
- variational_parameters (np.ndarray): Variational parameters
- x (np.ndarray): Row-wise samples
+ variational_parameters: Variational parameters
+ x: Row-wise samples
Returns:
- logpdf (np.ndarray): Row vector of the logpdfs
+ Row vector of the Log-PDF values
"""
- logpdf = 0
+ logpdf = np.zeros(x.shape[0], dtype=float)
for (
parameters,
samples,
@@ -217,32 +240,34 @@ def logpdf(self, variational_parameters, x):
logpdf += distribution.logpdf(parameters, samples)
return logpdf
- def pdf(self, variational_parameters, x):
+ def pdf(self, variational_parameters: ArrayNParams, x: ArrayNSamplesXNDims) -> ArrayNSamples:
"""Pdf evaluated using the variational parameters at given samples `x`.
Args:
- variational_parameters (np.ndarray): Variational parameters
- x (np.ndarray): Row-wise samples
+ variational_parameters: Variational parameters
+ x: Row-wise samples
Returns:
- pdf (np.ndarray): Row vector of the pdfs
+ Row vector of the PDF values
"""
pdf = np.exp(self.logpdf(variational_parameters, x))
return pdf
- def grad_params_logpdf(self, variational_parameters, x):
- """Logpdf gradient w.r.t. the variational parameters.
+ def grad_params_logpdf(
+ self, variational_parameters: ArrayNParams, x: ArrayNSamplesXNDims
+ ) -> ArrayNParamsXNSamples:
+ """Log-PDF gradient w.r.t. the variational parameters.
Evaluated at samples *x*. Also known as the score function.
Is a general implementation using the score functions of
the components.
Args:
- variational_parameters (np.ndarray): Variational parameters
- x (np.ndarray): Row-wise samples
+ variational_parameters: Variational parameters
+ x: Row-wise samples
Returns:
- score (np.ndarray): Column-wise scores
+ Column-wise scores
"""
score = []
for (
@@ -254,14 +279,16 @@ def grad_params_logpdf(self, variational_parameters, x):
return np.row_stack(score)
- def fisher_information_matrix(self, variational_parameters):
+ def fisher_information_matrix(
+ self, variational_parameters: ArrayNParams
+ ) -> ArrayNParamsXNParams:
"""Approximate the Fisher information matrix using Monte Carlo.
Args:
- variational_parameters (np.ndarray): Variational parameters
+ variational_parameters: Variational parameters
Returns:
- FIM (np.ndarray): Matrix (num parameters x num parameters)
+ Fisher information matrix
"""
fim = []
for parameters, distribution in self._zip_variational_parameters_distributions(
@@ -271,14 +298,14 @@ def fisher_information_matrix(self, variational_parameters):
return scipy.linalg.block_diag(*fim)
- def export_dict(self, variational_parameters):
+ def export_dict(self, variational_parameters: ArrayNParams) -> dict:
"""Create a dict of the distribution based on the given parameters.
Args:
- variational_parameters (np.ndarray): Variational parameters
+ variational_parameters: Variational parameters
Returns:
- export_dict (dictionary): Dict containing distribution information
+ Dictionary containing distribution information
"""
export_dict = {
"type": "joint",
@@ -294,15 +321,15 @@ def export_dict(self, variational_parameters):
return export_dict
-def split_array_by_chunk_sizes(array, chunk_sizes):
+def split_array_by_chunk_sizes(array: np.ndarray, chunk_sizes: ArrayLike) -> list:
"""Split up array by a list of chunk sizes.
Args:
- array (np.ndarray): Array to be split
- chunk_sizes (np.ndarray): List of chunk sizes
+ array: Array to be split
+ chunk_sizes: Chunk sizes
Returns:
- list: with the chunks
+ Chunks of the array
"""
if array.ndim > 2:
raise ValueError(
diff --git a/src/queens/variational_distributions/mean_field_normal.py b/src/queens/variational_distributions/mean_field_normal.py
index db0e0626a..dcfe3c402 100644
--- a/src/queens/variational_distributions/mean_field_normal.py
+++ b/src/queens/variational_distributions/mean_field_normal.py
@@ -14,10 +14,26 @@
#
"""Mean-Field Normal Variational Distribution."""
+from typing import cast
+
import numpy as np
from queens.utils.logger_settings import log_init_args
-from queens.variational_distributions._variational_distribution import Variational
+from queens.variational_distributions._variational_distribution import (
+ Array1XNParams,
+ ArrayNDims,
+ ArrayNDimsX1,
+ ArrayNDimsXNDims,
+ ArrayNParams,
+ ArrayNParamsXNParams,
+ ArrayNParamsXNSamples,
+ ArrayNSamples,
+ ArrayNSamplesXNDims,
+ ArrayNSamplesXNParams,
+ NDims,
+ NSamples,
+ Variational,
+)
class MeanFieldNormal(Variational):
@@ -32,20 +48,19 @@ class MeanFieldNormal(Variational):
The Journal of Machine Learning Research 18.1 (2017): 430-474.
Attributes:
- n_parameters (int): Number of parameters used in the parameterization.
+ n_parameters: Number of parameters used in the parameterization.
"""
@log_init_args
- def __init__(self, dimension):
+ def __init__(self, dimension: NDims) -> None:
"""Initialize variational distribution.
Args:
- dimension (int): Dimension of RV.
+ dimension: Dimension of random variable.
"""
- super().__init__(dimension)
- self.n_parameters = 2 * dimension
+ super().__init__(dimension, n_parameters=2 * dimension)
- def initialize_variational_parameters(self, random=False):
+ def initialize_variational_parameters(self, random: bool = False) -> ArrayNParams:
r"""Initialize variational parameters.
Default initialization:
@@ -55,11 +70,10 @@ def initialize_variational_parameters(self, random=False):
:math:`\mu=Uniform(-0.1,0.1)` and :math:`\sigma^2=Uniform(0.9,1.1)`
Args:
- random (bool, optional): If True, a random initialization is used. Otherwise the
- default is selected
+ random: If True, a random initialization is used. Otherwise the default is selected
Returns:
- variational_parameters (np.ndarray): variational parameters (1 x n_params)
+ Variational parameters
"""
if random:
variational_parameters = np.hstack(
@@ -73,16 +87,17 @@ def initialize_variational_parameters(self, random=False):
return variational_parameters
- @staticmethod
- def construct_variational_parameters(mean, covariance):
+ def construct_variational_parameters( # pylint: disable=arguments-differ
+ self, mean: ArrayNDimsX1 | ArrayNDims, covariance: ArrayNDimsXNDims
+ ) -> ArrayNParams:
"""Construct the variational parameters from mean and covariance.
Args:
- mean (np.ndarray): Mean values of the distribution (n_dim x 1)
- covariance (np.ndarray): Covariance matrix of the distribution (n_dim x n_dim)
+ mean: Mean values of the distribution
+ covariance: Covariance matrix of the distribution
Returns:
- variational_parameters (np.ndarray): Variational parameters
+ Variational parameters
"""
if len(mean) == len(covariance):
variational_parameters = np.hstack((mean.flatten(), 0.5 * np.log(np.diag(covariance))))
@@ -93,46 +108,47 @@ def construct_variational_parameters(mean, covariance):
)
return variational_parameters
- def reconstruct_distribution_parameters(self, variational_parameters):
+ def reconstruct_distribution_parameters(
+ self, variational_parameters: ArrayNParams
+ ) -> tuple[ArrayNDimsX1, ArrayNDimsXNDims]:
"""Reconstruct mean and covariance from the variational parameters.
Args:
- variational_parameters (np.ndarray): Variational parameters
-
+ variational_parameters: Variational parameters
Returns:
- mean (np.ndarray): Mean value of the distribution (n_dim x 1)
- cov (np.ndarray): Covariance matrix of the distribution (n_dim x n_dim)
+ Mean value of the distribution
+ Covariance matrix of the distribution
"""
- mean, cov = (
- variational_parameters[: self.dimension],
- np.exp(2 * variational_parameters[self.dimension :]),
- )
- return mean.reshape(-1, 1), np.diag(cov)
-
- def _grad_reconstruct_distribution_parameters(self, variational_parameters):
+ mean = variational_parameters[: self.dimension].reshape(-1, 1)
+ covariance_vector = np.exp(2 * variational_parameters[self.dimension :])
+ covariance = np.diag(covariance_vector)
+ return cast(ArrayNDimsX1, mean), covariance
+
+ def _grad_reconstruct_distribution_parameters(
+ self, variational_parameters: ArrayNParams
+ ) -> Array1XNParams:
"""Gradient of the parameter reconstruction.
Args:
- variational_parameters (np.ndarray): Variational parameters
+ variational_parameters: Variational parameters
Returns:
- grad_reconstruct_params (np.ndarray): Gradient vector of the reconstruction
- w.r.t. the variational parameters
+ Gradient vector of the reconstruction w.r.t. the variational parameters
"""
grad_mean = np.ones((1, self.dimension))
grad_std = (np.exp(variational_parameters[self.dimension :])).reshape(1, -1)
grad_reconstruct_params = np.hstack((grad_mean, grad_std))
return grad_reconstruct_params
- def draw(self, variational_parameters, n_draws=1):
+ def draw(self, variational_parameters: ArrayNParams, n_draws: NSamples) -> ArrayNSamplesXNDims:
"""Draw *n_draw* samples from the variational distribution.
Args:
- variational_parameters (np.ndarray): Variational parameters
- n_draws (int): Number of samples to draw
+ variational_parameters: Variational parameters
+ n_draws: Number of samples to draw
Returns:
- samples (np.ndarray): Row-wise samples of the variational distribution
+ Samples
"""
mean, cov = self.reconstruct_distribution_parameters(variational_parameters)
samples = np.random.randn(n_draws, self.dimension) * np.sqrt(np.diag(cov)).reshape(
@@ -140,59 +156,61 @@ def draw(self, variational_parameters, n_draws=1):
) + mean.reshape(1, -1)
return samples
- def logpdf(self, variational_parameters, x):
- """Logpdf evaluated using the variational parameters at samples `x`.
+ def logpdf(self, variational_parameters: ArrayNParams, x: ArrayNSamplesXNDims) -> ArrayNSamples:
+ """Log-PDF evaluated using the variational parameters at samples `x`.
Args:
- variational_parameters (np.ndarray): Variational parameters
- x (np.ndarray): Row-wise samples
+ variational_parameters: Variational parameters
+ x: Row-wise samples
Returns:
- logpdf (np.ndarray): Row vector of the logpdfs
+ Row vector of the Log-PDF values
"""
mean, cov = self.reconstruct_distribution_parameters(variational_parameters)
- mean = mean.flatten()
+ mean_flat = mean.flatten()
cov = np.diag(cov)
x = np.atleast_2d(x)
logpdf = (
-0.5 * self.dimension * np.log(2 * np.pi)
- np.sum(variational_parameters[self.dimension :])
- - 0.5 * np.sum((x - mean) ** 2 / cov, axis=1)
+ - 0.5 * np.sum((x - mean_flat) ** 2 / cov, axis=1)
)
return logpdf.flatten()
- def pdf(self, variational_parameters, x):
- """Pdf of the variational distribution evaluated at samples *x*.
+ def pdf(self, variational_parameters: ArrayNParams, x: ArrayNSamplesXNDims) -> ArrayNSamples:
+ """PDF of the variational distribution evaluated at samples *x*.
- First computes the logpdf, which is numerically more stable for exponential distributions.
+ First computes the log-PDF, which is numerically more stable for exponential distributions.
Args:
- variational_parameters (np.ndarray): Variational parameters
- x (np.ndarray): Row-wise samples
+ variational_parameters: Variational parameters
+ x: Row-wise samples
Returns:
- pdf (np.ndarray): Row vector of the pdfs
+ Row vector of the PDF values
"""
pdf = np.exp(self.logpdf(variational_parameters, x))
return pdf
- def grad_params_logpdf(self, variational_parameters, x):
- """Logpdf gradient w.r.t. the variational parameters.
+ def grad_params_logpdf(
+ self, variational_parameters: ArrayNParams, x: ArrayNSamplesXNDims
+ ) -> ArrayNParamsXNSamples:
+ """Log-PDF gradient w.r.t. the variational parameters.
Evaluated at samples *x*. Also known as the score function.
Args:
- variational_parameters (np.ndarray): Variational parameters
- x (np.ndarray): Row-wise samples
+ variational_parameters: Variational parameters
+ x: Row-wise samples
Returns:
- score (np.ndarray): Column-wise scores
+ Column-wise scores
"""
mean, cov = self.reconstruct_distribution_parameters(variational_parameters)
- mean = mean.flatten()
+ mean_flat = mean.flatten()
cov = np.diag(cov)
- dlogpdf_dmu = (x - mean) / cov
- dlogpdf_dsigma = (x - mean) ** 2 / cov - np.ones(x.shape)
+ dlogpdf_dmu = (x - mean_flat) / cov
+ dlogpdf_dsigma = (x - mean_flat) ** 2 / cov - np.ones(x.shape)
score = np.concatenate(
[
dlogpdf_dmu.T.reshape(self.dimension, len(x)),
@@ -201,35 +219,39 @@ def grad_params_logpdf(self, variational_parameters, x):
)
return score
- def total_grad_params_logpdf(self, variational_parameters, standard_normal_sample_batch):
- """Total logpdf reparameterization gradient.
+ def total_grad_params_logpdf(
+ self,
+ variational_parameters: ArrayNParams,
+ standard_normal_sample_batch: ArrayNSamplesXNDims,
+ ) -> ArrayNSamplesXNParams:
+ """Total log-PDF reparameterization gradient.
- Total logpdf reparameterization gradient w.r.t. the variational parameters.
+ Total log-PDF reparameterization gradient w.r.t. the variational parameters.
Args:
- variational_parameters (np.ndarray): Variational parameters
- standard_normal_sample_batch (np.ndarray): Standard normal distributed sample batch
+ variational_parameters: Variational parameters
+ standard_normal_sample_batch: Standard normal distributed sample batch
Returns:
- total_grad (np.ndarray): Total Logpdf reparameterization gradient
+ Total log-PDF reparameterization gradient
"""
total_grad = np.zeros((standard_normal_sample_batch.shape[0], variational_parameters.size))
total_grad[:, self.dimension :] = -1.0
return total_grad
- def grad_sample_logpdf(self, variational_parameters, sample_batch):
- """Computes the gradient of the logpdf w.r.t. to the *x*.
+ def grad_sample_logpdf(
+ self, variational_parameters: ArrayNParams, sample_batch: ArrayNSamplesXNDims
+ ) -> ArrayNSamplesXNDims:
+ """Computes the gradient of the log-PDF w.r.t. to the sample *x*.
Args:
- variational_parameters (np.ndarray): Variational parameters
- sample_batch (np.ndarray): Row-wise samples
+ variational_parameters: Variational parameters
+ sample_batch: Row-wise samples
Returns:
- gradients_batch (np.ndarray): Gradients of the log-pdf w.r.t. the
- sample *x*. The first dimension of the array corresponds to
- the different samples. The second dimension to different dimensions
- within one sample. (Third dimension is empty and just added to
- keep slices two dimensional.)
+ Gradients of the log-PDF w.r.t. the sample *x*. The first dimension of the array
+ corresponds to the different samples. The second dimension to different dimensions
+ within one sample.
"""
mean, cov = self.reconstruct_distribution_parameters(variational_parameters)
gradients_batch = -(sample_batch - mean.reshape(1, self.dimension)) / np.diag(cov).reshape(
@@ -237,27 +259,29 @@ def grad_sample_logpdf(self, variational_parameters, sample_batch):
)
return gradients_batch
- def fisher_information_matrix(self, variational_parameters):
+ def fisher_information_matrix(
+ self, variational_parameters: ArrayNParams
+ ) -> ArrayNParamsXNParams:
r"""Compute the Fisher information matrix analytically.
Args:
- variational_parameters (np.ndarray): Variational parameters
+ variational_parameters: Variational parameters
Returns:
- FIM (np.ndarray): Matrix (n_parameters x n_parameters)
+ Fisher information matrix
"""
fisher_diag = np.exp(-2 * variational_parameters[self.dimension :])
fisher_diag = np.hstack((fisher_diag, 2 * np.ones(self.dimension)))
return np.diag(fisher_diag)
- def export_dict(self, variational_parameters):
+ def export_dict(self, variational_parameters: ArrayNParams) -> dict:
"""Create a dict of the distribution based on the given parameters.
Args:
- variational_parameters (np.ndarray): Variational parameters
+ variational_parameters: Variational parameters
Returns:
- export_dict (dictionary): Dict containing distribution information
+ Dictionary containing distribution information
"""
mean, cov = self.reconstruct_distribution_parameters(variational_parameters)
sd = cov**0.5
@@ -270,18 +294,18 @@ def export_dict(self, variational_parameters):
}
return export_dict
- def conduct_reparameterization(self, variational_parameters, n_samples):
+ def conduct_reparameterization(
+ self, variational_parameters: ArrayNParams, n_samples: NSamples
+ ) -> tuple[ArrayNSamplesXNDims, ArrayNSamplesXNDims]:
"""Conduct a reparameterization.
Args:
- variational_parameters (np.ndarray): Array with variational parameters
- n_samples (int): Number of samples for current batch
+ variational_parameters: Array with variational parameters
+ n_samples: Number of samples for current batch
Returns:
- * samples_mat (np.ndarray): Array of actual samples from the
- variational distribution
- * standard_normal_sample_batch (np.ndarray): Standard normal
- distributed sample batch
+ Actual samples from the variational distribution
+ Standard normal distributed sample batch
"""
standard_normal_sample_batch = np.random.normal(0, 1, size=(n_samples, self.dimension))
mean, cov = self.reconstruct_distribution_parameters(variational_parameters)
@@ -290,18 +314,20 @@ def conduct_reparameterization(self, variational_parameters, n_samples):
return samples_mat, standard_normal_sample_batch
def grad_params_reparameterization(
- self, variational_parameters, standard_normal_sample_batch, upstream_gradient
- ):
+ self,
+ variational_parameters: ArrayNParams,
+ standard_normal_sample_batch: ArrayNSamplesXNDims,
+ upstream_gradient: ArrayNSamplesXNDims,
+ ) -> ArrayNSamplesXNParams:
r"""Calculate the gradient of the reparameterization.
Args:
- variational_parameters (np.ndarray): Variational parameters
- standard_normal_sample_batch (np.ndarray): Standard normal distributed sample batch
- upstream_gradient (np.array): Upstream gradient
+ variational_parameters: Variational parameters
+ standard_normal_sample_batch: Standard normal distributed sample batch
+ upstream_gradient: Upstream gradient
Returns:
- gradient (np.ndarray): Gradient of the upstream function w.r.t. the variational
- parameters.
+ Gradient of the upstream function w.r.t. the variational parameters.
Note:
We assume that *grad_reconstruct_params* is a row-vector containing the partial
diff --git a/src/queens/variational_distributions/mixture_model.py b/src/queens/variational_distributions/mixture_model.py
index 8941b07ee..dda774ba2 100644
--- a/src/queens/variational_distributions/mixture_model.py
+++ b/src/queens/variational_distributions/mixture_model.py
@@ -14,12 +14,30 @@
#
"""Mixture Model Variational Distribution."""
-import numpy as np
-
-from queens.variational_distributions._variational_distribution import Variational
+from typing import Generic, Iterable, TypeAlias, TypeVar
+import numpy as np
-class MixtureModel(Variational):
+from queens.variational_distributions._variational_distribution import (
+ ArrayNParams,
+ ArrayNParamsComponent,
+ ArrayNParamsXNParams,
+ ArrayNParamsXNSamples,
+ ArrayNSamples,
+ ArrayNSamplesXNDims,
+ NDims,
+ NSamples,
+ V,
+ Variational,
+)
+
+NComponents = TypeVar("NComponents", bound=int)
+ArrayNComponents: TypeAlias = np.ndarray[ # pylint: disable=invalid-name
+ tuple[NComponents], np.dtype[np.floating]
+]
+
+
+class MixtureModel(Variational, Generic[V]):
r"""Mixture model variational distribution class.
Every component is a member of the same distribution family. Uses the parameterization:
@@ -32,25 +50,24 @@ class MixtureModel(Variational):
This allows the weight parameters :math:`\lambda_{weights}` to be unconstrained.
Attributes:
- n_components (int): Number of mixture components.
+ n_components: Number of mixture components.
base_distribution: Variational distribution object for the components.
- n_parameters (int): Number of parameters used in the parameterization.
+ n_parameters: Number of parameters used in the parameterization.
"""
- def __init__(self, base_distribution, dimension, n_components):
+ def __init__(self, base_distribution: V, dimension: NDims, n_components: NComponents) -> None:
"""Initialize mixture model.
Args:
- dimension (int): Dimension of the random variable
- n_components (int): Number of mixture components
base_distribution: Variational distribution object for the components
+ dimension: Dimension of the random variable
+ n_components: Number of mixture components
"""
- super().__init__(dimension)
+ super().__init__(dimension, n_parameters=n_components * base_distribution.n_parameters)
self.n_components = n_components
self.base_distribution = base_distribution
- self.n_parameters = n_components * base_distribution.n_parameters
- def initialize_variational_parameters(self, random=False):
+ def initialize_variational_parameters(self, random: bool = False) -> ArrayNParams:
r"""Initialize variational parameters.
Default weights initialization:
@@ -63,11 +80,10 @@ def initialize_variational_parameters(self, random=False):
The component initialization is handle by the component itself.
Args:
- random (bool, optional): If True, a random initialization is used. Otherwise the
- default is selected
+ random: If True, a random initialization is used. Otherwise the default is selected
Returns:
- variational_parameters (np.ndarray): variational parameters (1 x n_params)
+ Variational parameters
"""
variational_parameters_components = (
self.base_distribution.initialize_variational_parameters(random)
@@ -87,25 +103,29 @@ def initialize_variational_parameters(self, random=False):
return np.concatenate([variational_parameters_components, variational_parameters_weights])
- def construct_variational_parameters(self, component_parameters_list, weights):
+ def construct_variational_parameters( # pylint: disable=arguments-differ
+ self, parameters_per_component: list[Iterable[np.ndarray]], weights: ArrayNComponents
+ ) -> ArrayNParams:
"""Construct the variational parameters from the probabilities.
Args:
- component_parameters_list (list): List of the component parameters of the components
- weights (np.ndarray): Probabilities of the distribution
+ parameters_per_component: Distribution parameters per component
+ weights: Probabilities of the distribution
Returns:
- variational_parameters (np.ndarray): Variational parameters
+ Variational parameters
"""
variational_parameters = []
- for component_parameters in component_parameters_list:
+ for parameters in parameters_per_component:
variational_parameters.append(
- self.base_distribution.construct_variational_parameters(*component_parameters)
+ self.base_distribution.construct_variational_parameters(*parameters)
)
variational_parameters.append(np.log(weights).flatten())
return np.concatenate(variational_parameters)
- def _construct_component_variational_parameters(self, variational_parameters):
+ def _construct_component_variational_parameters(
+ self, variational_parameters: ArrayNParams
+ ) -> tuple[list[ArrayNParamsComponent], ArrayNComponents]:
"""Reconstruct the weights and parameters of the mixture components.
Creates a list containing the variational parameters of the different components.
@@ -113,11 +133,11 @@ def _construct_component_variational_parameters(self, variational_parameters):
The list is nested, each entry correspond to the parameters of a component.
Args:
- variational_parameters (np.ndarray): Variational parameters
+ variational_parameters: Variational parameters
Returns:
- variational_parameters_list (list): List of the variational parameters of the components
- weights (np.ndarray): Weights of the mixture
+ Variational parameters of the components
+ Weights of the mixture
"""
n_parameters_comp = self.base_distribution.n_parameters
variational_parameters_list = []
@@ -131,18 +151,19 @@ def _construct_component_variational_parameters(self, variational_parameters):
weights = weights / np.sum(weights)
return variational_parameters_list, weights
- def reconstruct_distribution_parameters(self, variational_parameters):
+ def reconstruct_distribution_parameters(
+ self, variational_parameters: ArrayNParams
+ ) -> tuple[list[tuple[list | np.ndarray]], ArrayNComponents]:
"""Reconstruct the weights and parameters of the mixture components.
The list is nested, each entry correspond to the parameters of a component.
Args:
- variational_parameters (np.ndarray): Variational parameters
+ variational_parameters: Variational parameters
Returns:
- distribution_parameters_list (list): List of the distribution parameters of the
- components
- weights (np.ndarray): Weights of the mixture
+ Distribution parameters of the components
+ Weights of the mixture
"""
n_parameters_comp = self.base_distribution.n_parameters
distribution_parameters_list = []
@@ -159,7 +180,7 @@ def reconstruct_distribution_parameters(self, variational_parameters):
weights = weights / np.sum(weights)
return distribution_parameters_list, weights
- def draw(self, variational_parameters, n_draws=1):
+ def draw(self, variational_parameters: ArrayNParams, n_draws: NSamples) -> ArrayNSamplesXNDims:
"""Draw *n_draw* samples from the variational distribution.
Uses a two-step process:
@@ -167,29 +188,29 @@ def draw(self, variational_parameters, n_draws=1):
2. Sample from the selected component
Args:
- variational_parameters (np.ndarray): Variational parameters
- n_draws (int): Number of samples to draw
+ variational_parameters: Variational parameters
+ n_draws: Number of samples to draw
Returns:
- samples (np.ndarray): Row wise samples of the variational distribution
+ Samples
"""
- parameters_list, weights = self._construct_component_variational_parameters(
+ parameters, weights = self._construct_component_variational_parameters(
variational_parameters
)
- samples = []
+ samples_lst = []
for _ in range(n_draws):
# Select component to draw from
component = np.argmax(np.random.multinomial(1, weights))
# Draw a sample of this component
- sample = self.base_distribution.draw(parameters_list[component], 1)
- samples.append(sample)
- samples = np.concatenate(samples, axis=0)
+ sample = self.base_distribution.draw(parameters[component], 1)
+ samples_lst.append(sample)
+ samples = np.concatenate(samples_lst, axis=0)
return samples
- def logpdf(self, variational_parameters, x):
- """Logpdf evaluated using the variational parameters at samples *x*.
+ def logpdf(self, variational_parameters: ArrayNParams, x: ArrayNSamplesXNDims) -> ArrayNSamples:
+ """Log-PDF evaluated using the variational parameters at samples *x*.
- Is a general implementation using the logpdf function of the components. Uses the
+ Is a general implementation using the log-PDF function of the components. Uses the
log-sum-exp trick [1] in order to reduce floating point issues.
References:
@@ -197,55 +218,57 @@ def logpdf(self, variational_parameters, x):
Review for Statisticians, Journal of the American Statistical Association, 112:518
Args:
- variational_parameters (np.ndarray): Variational parameters
- x (np.ndarray): Row-wise samples
+ variational_parameters: Variational parameters
+ x: Row-wise samples
Returns:
- logpdf (np.ndarray): Row vector of the logpdfs
+ Row vector of the Log-PDF values
"""
- parameters_list, weights = self._construct_component_variational_parameters(
+ parameters, weights = self._construct_component_variational_parameters(
variational_parameters
)
- logpdf = []
+ logpdf_lst = []
x = np.atleast_2d(x)
# Parameter for the log-sum-exp trick
max_logpdf = -np.inf * np.ones(len(x))
for j in range(self.n_components):
- logpdf.append(np.log(weights[j]) + self.base_distribution.logpdf(parameters_list[j], x))
- max_logpdf = np.maximum(max_logpdf, logpdf[-1])
- logpdf = np.array(logpdf) - np.tile(max_logpdf, (self.n_components, 1))
+ logpdf_lst.append(np.log(weights[j]) + self.base_distribution.logpdf(parameters[j], x))
+ max_logpdf = np.maximum(max_logpdf, logpdf_lst[-1])
+ logpdf = np.array(logpdf_lst) - np.tile(max_logpdf, (self.n_components, 1))
logpdf = np.sum(np.exp(logpdf), axis=0)
logpdf = np.log(logpdf) + max_logpdf
return logpdf
- def pdf(self, variational_parameters, x):
+ def pdf(self, variational_parameters: ArrayNParams, x: ArrayNSamplesXNDims) -> ArrayNSamples:
"""Pdf evaluated using the variational parameters at given samples `x`.
Args:
- variational_parameters (np.ndarray): Variational parameters
- x (np.ndarray): Row-wise samples
+ variational_parameters: Variational parameters
+ x: Row-wise samples
Returns:
- pdf (np.ndarray): Row vector of the pdfs
+ Row vector of the PDF values
"""
pdf = np.exp(self.logpdf(variational_parameters, x))
return pdf
- def grad_params_logpdf(self, variational_parameters, x):
- """Logpdf gradient w.r.t. the variational parameters.
+ def grad_params_logpdf(
+ self, variational_parameters: ArrayNParams, x: ArrayNSamplesXNDims
+ ) -> ArrayNParamsXNSamples:
+ """Log-PDF gradient w.r.t. the variational parameters.
Evaluated at samples *x*. Also known as the score function.
Is a general implementation using the score functions of
the components.
Args:
- variational_parameters (np.ndarray): Variational parameters
- x (np.ndarray): Row-wise samples
+ variational_parameters: Variational parameters
+ x: Row-wise samples
Returns:
- score (np.ndarray): Column-wise scores
+ Column-wise scores
"""
- parameters_list, weights = self._construct_component_variational_parameters(
+ parameters, weights = self._construct_component_variational_parameters(
variational_parameters
)
x = np.atleast_2d(x)
@@ -258,9 +281,9 @@ def grad_params_logpdf(self, variational_parameters, x):
logpdf = self.logpdf(variational_parameters, x)
for j in range(self.n_components):
# coefficient for the score term of every component
- precoeff = np.exp(self.base_distribution.logpdf(parameters_list[j], x) - logpdf)
+ precoeff = np.exp(self.base_distribution.logpdf(parameters[j], x) - logpdf)
# Score function of the jth component
- score_comp = self.base_distribution.grad_params_logpdf(parameters_list[j], x)
+ score_comp = self.base_distribution.grad_params_logpdf(parameters[j], x)
component_block.append(
weights[j] * np.tile(precoeff, (len(score_comp), 1)) * score_comp
)
@@ -270,34 +293,37 @@ def grad_params_logpdf(self, variational_parameters, x):
score = np.vstack((np.concatenate(component_block, axis=0), weights_block))
return score
- def fisher_information_matrix(self, variational_parameters, n_samples=10000):
+ def fisher_information_matrix(
+ self, variational_parameters: ArrayNParams, n_samples: int = 10000
+ ) -> ArrayNParamsXNParams:
"""Approximate the Fisher information matrix using Monte Carlo.
Args:
- variational_parameters (np.ndarray): Variational parameters
- n_samples (int, optional): number of samples for a MC FIM estimation
+ variational_parameters: Variational parameters
+ n_samples: Number of samples for a MC FIM estimation
Returns:
- FIM (np.ndarray): Matrix (num parameters x num parameters)
+ Fisher information matrix
"""
samples = self.draw(variational_parameters, n_samples)
scores = self.grad_params_logpdf(variational_parameters, samples)
- fim = 0
+ n_var_params = scores.shape[0]
+ fim = np.zeros((n_var_params, n_var_params))
for j in range(n_samples):
fim = fim + np.outer(scores[:, j], scores[:, j])
fim = fim / n_samples
return fim
- def export_dict(self, variational_parameters):
+ def export_dict(self, variational_parameters: ArrayNParams) -> dict:
"""Create a dict of the distribution based on the given parameters.
Args:
- variational_parameters (np.ndarray): Variational parameters
+ variational_parameters: Variational parameters
Returns:
- export_dict (dictionary): Dict containing distribution information
+ Dictionary containing distribution information
"""
- parameters_list, weights = self._construct_component_variational_parameters(
+ parameters, weights = self._construct_component_variational_parameters(
variational_parameters
)
export_dict = {
@@ -309,7 +335,7 @@ def export_dict(self, variational_parameters):
}
# Loop over the components
for j in range(self.n_components):
- component_dict = self.base_distribution.export_dict(parameters_list[j])
+ component_dict = self.base_distribution.export_dict(parameters[j])
component_key = "component_" + str(j)
export_dict.update({component_key: component_dict})
return export_dict
diff --git a/src/queens/variational_distributions/particle.py b/src/queens/variational_distributions/particle.py
index cb2b89559..fb833cd5d 100644
--- a/src/queens/variational_distributions/particle.py
+++ b/src/queens/variational_distributions/particle.py
@@ -14,10 +14,20 @@
#
"""Particle Variational Distribution."""
+from collections.abc import Sequence, Sized
+
import numpy as np
from queens.distributions.particle import Particle as ParticleDistribution
-from queens.variational_distributions._variational_distribution import Variational
+from queens.variational_distributions._variational_distribution import (
+ ArrayNParams,
+ ArrayNParamsXNParams,
+ ArrayNParamsXNSamples,
+ ArrayNSamples,
+ ArrayNSamplesXNDims,
+ NSamples,
+ Variational,
+)
class Particle(Variational):
@@ -27,31 +37,36 @@ class Particle(Variational):
:math:`p_i=p(\lambda_i)=\frac{\exp(\lambda_i)}{\sum_k exp(\lambda_k)}`
Attributes:
- particles_obj (Particle): Particle distribution object
- dimension (int): Number of random variables
+ particles_obj: Particle distribution object
+ dimension: Number of random variables
"""
- def __init__(self, sample_space):
- """Initialize variational distribution."""
+ def __init__(self, sample_space: np.ndarray | Sequence[Sized]) -> None:
+ """Initialize variational distribution.
+
+ Args:
+ sample_space: Sample space of the variational distribution
+ """
self.particles_obj = ParticleDistribution(np.ones(len(sample_space)), sample_space)
- super().__init__(self.particles_obj.dimension)
- self.n_parameters = len(sample_space)
+ super().__init__(self.particles_obj.dimension, n_parameters=len(sample_space))
- def construct_variational_parameters(self, probabilities, sample_space):
+ def construct_variational_parameters( # pylint: disable=arguments-differ
+ self, probabilities: ArrayNParams, sample_space: np.ndarray | Sequence[Sized]
+ ) -> ArrayNParams:
"""Construct the variational parameters from the probabilities.
Args:
- probabilities (np.ndarray): Probabilities of the distribution
- sample_space (np.ndarray): Sample space of the distribution
+ probabilities: Probabilities of the distribution
+ sample_space: Sample space of the distribution
Returns:
- variational_parameters (np.ndarray): Variational parameters
+ Variational parameters
"""
self.particles_obj = ParticleDistribution(probabilities, sample_space)
variational_parameters = np.log(probabilities).flatten()
return variational_parameters
- def initialize_variational_parameters(self, random=False):
+ def initialize_variational_parameters(self, random: bool = False) -> ArrayNParams:
r"""Initialize variational parameters.
Default initialization:
@@ -62,11 +77,10 @@ def initialize_variational_parameters(self, random=False):
distribution with :math:`N_\text{experiments}`
Args:
- random (bool, optional): If True, a random initialization is used. Otherwise the
- default is selected
+ random: If True, a random initialization is used. Otherwise the default is selected
Returns:
- variational_parameters (np.ndarray): variational parameters (1 x n_params)
+ Variational parameters
"""
if random:
variational_parameters = (
@@ -78,61 +92,66 @@ def initialize_variational_parameters(self, random=False):
return variational_parameters
- def reconstruct_distribution_parameters(self, variational_parameters):
+ def reconstruct_distribution_parameters(
+ self, variational_parameters: ArrayNParams
+ ) -> tuple[ArrayNParams, np.ndarray]:
"""Reconstruct probabilities from the variational parameters.
Args:
- variational_parameters (np.ndarray): Variational parameters
+ variational_parameters: Variational parameters
Returns:
- probabilities (np.ndarray): Probabilities of the distribution
+ Probabilities of the distribution
+ Sample space of the distribution
"""
probabilities = np.exp(variational_parameters)
probabilities /= np.sum(probabilities)
self.particles_obj = ParticleDistribution(probabilities, self.particles_obj.sample_space)
return probabilities, self.particles_obj.sample_space
- def draw(self, variational_parameters, n_draws=1):
+ def draw(self, variational_parameters: ArrayNParams, n_draws: NSamples) -> ArrayNSamplesXNDims:
"""Draw *n_draws* samples from distribution.
Args:
- variational_parameters (np.ndarray): Variational parameters of the distribution
- n_draws (int): Number of samples
+ variational_parameters: Variational parameters of the distribution
+ n_draws: Number of samples
Returns:
- samples (np.ndarray): samples (n_draws x n_dim)
+ Samples
"""
self.reconstruct_distribution_parameters(variational_parameters)
return self.particles_obj.draw(n_draws)
- def logpdf(self, variational_parameters, x):
- """Evaluate the natural logarithm of the logpdf at sample.
+ def logpdf(self, variational_parameters: ArrayNParams, x: ArrayNSamplesXNDims) -> ArrayNSamples:
+ """Evaluate the natural logarithm of the PDF.
Args:
- variational_parameters (np.ndarray): Variational parameters of the distribution
- x (np.ndarray): Locations at which to evaluate the distribution (n_samples x n_dim)
+ variational_parameters: Variational parameters of the distribution
+ x: Locations at which to evaluate the distribution
Returns:
- logpdf (np.ndarray): Logpdfs at the locations x
+ Log-PDF values at the locations x
"""
self.reconstruct_distribution_parameters(variational_parameters)
return self.particles_obj.logpdf(x)
- def pdf(self, variational_parameters, x):
- """Evaluate the probability density function (pdf) at sample.
+ def pdf(self, variational_parameters: ArrayNParams, x: ArrayNSamplesXNDims) -> ArrayNSamples:
+ """Evaluate the probability density function (PDF).
Args:
- variational_parameters (np.ndarray): Variational parameters of the distribution
- x (np.ndarray): Locations at which to evaluate the distribution (n_samples x n_dim)
+ variational_parameters: Variational parameters of the distribution
+ x: Locations at which to evaluate the distribution
Returns:
- logpdf (np.ndarray): Pdfs at the locations x
+ Row vector of the PDF values
"""
self.reconstruct_distribution_parameters(variational_parameters)
return self.particles_obj.pdf(x)
- def grad_params_logpdf(self, variational_parameters, x):
- r"""Logpdf gradient w.r.t. the variational parameters.
+ def grad_params_logpdf(
+ self, variational_parameters: ArrayNParams, x: ArrayNSamplesXNDims
+ ) -> ArrayNParamsXNSamples:
+ r"""Log-PDF gradient w.r.t. the variational parameters.
Evaluated at samples *x*. Also known as the score function.
@@ -140,11 +159,11 @@ def grad_params_logpdf(self, variational_parameters, x):
:math:`\nabla_{\lambda_i}\ln p(\theta_j | \lambda)=\delta_{ij}-p_i`
Args:
- variational_parameters (np.ndarray): Variational parameters of the distribution
- x (np.ndarray): Locations at which to evaluate the distribution (n_samples x n_dim)
+ variational_parameters: Variational parameters of the distribution
+ x: Locations at which to evaluate the distribution
Returns:
- score_function (np.ndarray): Score functions at the locations x
+ Score functions at the locations x
"""
self.reconstruct_distribution_parameters(variational_parameters)
index = np.array(
@@ -162,30 +181,32 @@ def grad_params_logpdf(self, variational_parameters, x):
# Get the samples
return sample_scores[index].T
- def fisher_information_matrix(self, variational_parameters):
- r"""Compute the fisher information matrix.
+ def fisher_information_matrix(
+ self, variational_parameters: ArrayNParams
+ ) -> ArrayNParamsXNParams:
+ r"""Compute the Fisher information matrix.
For the given parameterization, the Fisher information yields:
:math:`\text{FIM}_{ij}=\delta_{ij} p_i -p_i p_j`
Args:
- variational_parameters (np.ndarray): Variational parameters of the distribution
+ variational_parameters: Variational parameters of the distribution
Returns:
- fim (np.ndarray): Fisher information matrix (n_params x n_params)
+ Fisher information matrix
"""
probabilities, _ = self.reconstruct_distribution_parameters(variational_parameters)
fim = np.diag(probabilities) - np.outer(probabilities, probabilities)
return fim
- def export_dict(self, variational_parameters):
+ def export_dict(self, variational_parameters: ArrayNParams) -> dict:
"""Create a dict of the distribution based on the given parameters.
Args:
- variational_parameters (np.ndarray): Variational parameters
+ variational_parameters: Variational parameters
Returns:
- export_dict (dictionary): Dict containing distribution information
+ Dictionary containing distribution information
"""
self.reconstruct_distribution_parameters(variational_parameters)
export_dict = {
diff --git a/src/queens_interfaces/fourc/README.md b/src/queens_interfaces/fourc/README.md
index 734f7d751..4862c5bcb 100644
--- a/src/queens_interfaces/fourc/README.md
+++ b/src/queens_interfaces/fourc/README.md
@@ -1,10 +1,23 @@
# 4C
-This package contains drivers and utilities realted to the for multiphysics code [4C](https://github.com/4C-multiphysics/4C). We like them and we work closely with them.
+This package contains drivers and utilities related to the multiphysics code
+[4C](https://github.com/4C-multiphysics/4C). We like them and we work closely with them.
## Material random field interface
-In order to create random material field in combintation with 4C, we require the package [fourcipp](https://github.com/4C-multiphysics/fourcipp). Therefore install QUEENS via (in the QUEENS main directory):
+In order to create random material fields in combination with 4C, QUEENS requires the package
+[fourcipp](https://github.com/4C-multiphysics/fourcipp). For a regular source install, use the
+`fourc` extra:
+
+```bash
+python -m pip install ".[fourc]"
```
-pip install -e .[dev,fourc]
+
+For Pixi project-based workflow, use the `all` environment
+that includes the 4C interface dependencies without development tools:
+```bash
+pixi install --environment all
+pixi run -e all install-editable
```
-(You can omit the `dev` if you don't require the additional development packages).
+For development, use the `dev` Pixi environment that includes the `fourc` feature.
+
+For more setup details, see the top-level [README.md](https://github.com/queens-py/queens/blob/main/README.md).
diff --git a/src/queens_interfaces/fourc/fourc_requirements.txt b/src/queens_interfaces/fourc/fourc_requirements.txt
deleted file mode 100644
index ea6e568bc..000000000
--- a/src/queens_interfaces/fourc/fourc_requirements.txt
+++ /dev/null
@@ -1 +0,0 @@
-fourcipp
diff --git a/src/queens_interfaces/fourc/random_material_preprocessor.py b/src/queens_interfaces/fourc/random_material_preprocessor.py
index adc91f7d1..e243dfe2f 100644
--- a/src/queens_interfaces/fourc/random_material_preprocessor.py
+++ b/src/queens_interfaces/fourc/random_material_preprocessor.py
@@ -13,6 +13,7 @@
# see .
#
"""4C random material fields preprocessor."""
+
from pathlib import Path
import numpy as np
@@ -22,7 +23,8 @@
except ImportError as exc:
raise ImportError(
"The required packages to construct random fields in QUEENS for 4C are not installed."
- " Please install them via \n pip install -e .[fourc]"
+ " Install QUEENS with the 'fourc' extra, e.g. `python -m pip install \".[fourc]\"`, "
+ "or use a Pixi environment with the fourc feature such as `dev` or `all`."
) from exc
diff --git a/test_utils/get_queens_example_from_readme.py b/test_utils/get_queens_example_from_readme.py
index d2295e9e3..eed10d281 100644
--- a/test_utils/get_queens_example_from_readme.py
+++ b/test_utils/get_queens_example_from_readme.py
@@ -14,10 +14,9 @@
#
"""Extract QUEENS example from the readme."""
-
from pathlib import Path
-from queens.utils.path import relative_path_from_root
+from test_utils.path import relative_path_from_root
def extract_from_markdown_file_by_marker(marker_name, md_file):
diff --git a/test_utils/integration_tests.py b/test_utils/integration_tests.py
index ef5af0c14..9a3fa5322 100644
--- a/test_utils/integration_tests.py
+++ b/test_utils/integration_tests.py
@@ -34,7 +34,12 @@ def assert_monte_carlo_iterator_results(results, expected_mean, expected_var):
def assert_surrogate_model_output(
- output, mean_ref, var_ref, grad_mean_ref=None, grad_var_ref=None, decimals=(2, 2, 2, 2)
+ output,
+ mean_ref,
+ var_ref,
+ grad_mean_ref=None,
+ grad_var_ref=None,
+ decimals=(2, 2, 2, 2),
):
"""Assert the equality of the output with the provided reference values.
diff --git a/test_utils/path.py b/test_utils/path.py
new file mode 100644
index 000000000..3d65d8317
--- /dev/null
+++ b/test_utils/path.py
@@ -0,0 +1,42 @@
+#
+# SPDX-License-Identifier: LGPL-3.0-or-later
+# Copyright (c) 2024-2025, QUEENS contributors.
+#
+# This file is part of QUEENS.
+#
+# QUEENS is free software: you can redistribute it and/or modify it under the terms of the GNU
+# Lesser General Public License as published by the Free Software Foundation, either version 3 of
+# the License, or (at your option) any later version. QUEENS is distributed in the hope that it will
+# be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You
+# should have received a copy of the GNU Lesser General Public License along with QUEENS. If not,
+# see .
+#
+"""Path helpers for the QUEENS test suite.
+
+These helpers resolve paths in the repository checkout for tests and
+tutorials, including tests that build and install QUEENS from a wheel.
+Runtime QUEENS code must not import this module; runtime path helpers
+belong in ``queens.utils.path``.
+"""
+
+from pathlib import Path
+
+PATH_TO_ROOT = Path(__file__).parents[1]
+
+
+def relative_path_from_root(relative_path: str) -> Path:
+ """Create relative path from root directory.
+
+ As an example to create: *src/queens/folder/file.A* .
+
+ Call *relative_path_from_root("src/queens/folder/file.A")* .
+
+ Args:
+ relative_path: Path starting from the root directory
+
+ Returns:
+ Absolute path to the file
+ """
+ full_path = PATH_TO_ROOT / relative_path
+ return full_path
diff --git a/test_utils/tutorial_tests.py b/test_utils/tutorial_tests.py
index e42d1ab84..de447bdb0 100644
--- a/test_utils/tutorial_tests.py
+++ b/test_utils/tutorial_tests.py
@@ -14,6 +14,43 @@
#
"""Utility methods used by the tutorial tests."""
+from collections import Counter
+from itertools import chain
+from pathlib import Path
+
+import pytest
+
+from test_utils.path import relative_path_from_root
+
+
+def inject_notebook_execution_context(tb, notebook_dir):
+ """Inject the notebook directory as Python path and working directory.
+
+ Args:
+ tb (testbook): testbook object for inserting code into the notebook
+ notebook_dir (str | Path): Directory containing the notebook
+
+ Returns:
+ None
+ """
+ tb.inject(
+ f"""
+ import os
+ import sys
+ from pathlib import Path
+ notebook_dir = Path({str(notebook_dir)!r})
+ repo_root = next(
+ path for path in (notebook_dir, *notebook_dir.parents)
+ if (path / "pyproject.toml").exists()
+ )
+ for path in (notebook_dir, repo_root):
+ if str(path) not in sys.path:
+ sys.path.insert(0, str(path))
+ os.chdir(notebook_dir)
+ """,
+ before=0,
+ )
+
def inject_mock_base_dir(tb, tmp_path):
"""Inject a mock base directory for testing notebooks.
@@ -35,3 +72,125 @@ def inject_mock_base_dir(tb, tmp_path):
""",
before=0,
)
+
+
+TUTORIAL_NOTEBOOKS_BY_MARKER = {
+ "tutorial_tests": [
+ relative_path_from_root("tutorials/1_grid_iterator_rosenbrock.ipynb").as_posix(),
+ relative_path_from_root(
+ "tutorials/2_uncertainty_propagation_and_quantification.ipynb"
+ ).as_posix(),
+ ],
+ "tutorial_tests_fourc": [
+ relative_path_from_root(
+ "tutorials/3_orchestrating_4c_simulations/3_orchestrating_4c_simulations.ipynb"
+ ).as_posix(),
+ relative_path_from_root(
+ "tutorials/4_quantifying_uncertainty_due_to_heterogeneous_material_fields/"
+ "4_quantifying_uncertainty_due_to_heterogeneous_material_fields.ipynb"
+ ).as_posix(),
+ ],
+ "tutorial_tests_remote": [
+ relative_path_from_root(
+ "tutorials/5_grid_iterator_4c_remote/5_grid_iterator_4c_remote.ipynb"
+ ).as_posix(),
+ ],
+}
+ALL_TUTORIAL_NOTEBOOKS = tuple(
+ sorted(path.as_posix() for path in relative_path_from_root(Path("tutorials")).rglob("*.ipynb"))
+)
+
+
+def _format_paths(paths):
+ """Format paths for collection error messages."""
+ return "\n".join(f" - {path}" for path in sorted(paths))
+
+
+def _duplicate_paths(paths):
+ """Return paths that occur more than once."""
+ return sorted(path for path, count in Counter(paths).items() if count > 1)
+
+
+def _validate_tutorial_notebook_markers():
+ """Ensure every tutorial notebook has at least one explicit marker."""
+ discovered_notebooks = set(ALL_TUTORIAL_NOTEBOOKS)
+ marked_notebooks = set(chain.from_iterable(TUTORIAL_NOTEBOOKS_BY_MARKER.values()))
+ missing_notebooks = discovered_notebooks - marked_notebooks
+ stale_notebooks = marked_notebooks - discovered_notebooks
+ base_notebooks = set(TUTORIAL_NOTEBOOKS_BY_MARKER["tutorial_tests"])
+ specialized_notebooks = set(
+ chain.from_iterable(
+ notebook_paths
+ for marker_name, notebook_paths in TUTORIAL_NOTEBOOKS_BY_MARKER.items()
+ if marker_name != "tutorial_tests"
+ )
+ )
+ overlapping_base_notebooks = base_notebooks & specialized_notebooks
+
+ duplicate_marker_assignments = {
+ marker_name: duplicates
+ for marker_name, notebook_paths in TUTORIAL_NOTEBOOKS_BY_MARKER.items()
+ if (duplicates := _duplicate_paths(notebook_paths))
+ }
+
+ if not (
+ missing_notebooks
+ or stale_notebooks
+ or overlapping_base_notebooks
+ or duplicate_marker_assignments
+ ):
+ return
+
+ error_parts = ["Tutorial notebook marker assignments are out of sync."]
+ if missing_notebooks:
+ error_parts.append(
+ "Add marker assignments for these notebooks:\n" f"{_format_paths(missing_notebooks)}"
+ )
+ if stale_notebooks:
+ error_parts.append(
+ "Remove marker assignments for missing notebooks:\n" f"{_format_paths(stale_notebooks)}"
+ )
+ if overlapping_base_notebooks:
+ error_parts.append(
+ "Remove tutorial_tests from notebooks with specialized tutorial markers:\n"
+ f"{_format_paths(overlapping_base_notebooks)}"
+ )
+ if duplicate_marker_assignments:
+ duplicate_entries = [
+ f"{marker_name}: {notebook_path}"
+ for marker_name, notebook_paths in duplicate_marker_assignments.items()
+ for notebook_path in notebook_paths
+ ]
+ error_parts.append(
+ "Remove duplicate marker assignments:\n" f"{_format_paths(duplicate_entries)}"
+ )
+
+ raise pytest.UsageError("\n\n".join(error_parts))
+
+
+def marker_names_for_notebook(notebook_path):
+ """Return marker names assigned to a tutorial notebook."""
+ notebook_path = Path(notebook_path).as_posix()
+ return [
+ marker_name
+ for marker_name, notebook_paths in TUTORIAL_NOTEBOOKS_BY_MARKER.items()
+ if notebook_path in notebook_paths
+ ]
+
+
+def markers_for_notebook(notebook_path):
+ """Return pytest markers assigned to a tutorial notebook."""
+ return [
+ getattr(pytest.mark, marker_name)
+ for marker_name in marker_names_for_notebook(notebook_path)
+ ]
+
+
+def notebook_param(notebook_path):
+ """Return a pytest parameter for a tutorial notebook."""
+ notebook_path = Path(notebook_path).as_posix()
+ return pytest.param(
+ notebook_path,
+ marks=markers_for_notebook(notebook_path),
+ id=notebook_path,
+ )
diff --git a/tests/README.md b/tests/README.md
index f1e215c60..aa3eb4d8b 100644
--- a/tests/README.md
+++ b/tests/README.md
@@ -15,7 +15,14 @@ Therefore, we test the QUEENS code base
- Whenever possible, use [pytest fixtures](https://docs.pytest.org/en/latest/explanation/fixtures.html) to parameterize tests.
## :running_woman: Running tests
-QUEENS is tested using [pytest](https://docs.pytest.org/en/stable/index.html). For a comprehensive list of pytest commands, see [here](https://docs.pytest.org/en/stable/how-to/usage.html). Some additional useful commands to test QUEENS are listed in the following:
+QUEENS is tested using [pytest](https://docs.pytest.org/en/stable/index.html). For local
+development, run tests through the Pixi development environment, for example:
+
+```bash
+pixi run -e dev pytest
+```
+
+For a comprehensive list of pytest commands, see [here](https://docs.pytest.org/en/stable/how-to/usage.html). Some additional useful commands to test QUEENS are listed in the following:
| Test | Command |
| ----------------------------- | --------------------------------------------- |
@@ -32,11 +39,23 @@ In QUEENS, tests are organized using pytest markers. This allows you to run all
| ------------------------------- | ----------------------------------- |
| Unit tests | `pytest -m unit_tests` |
| Integration tests | `pytest -m integration_tests` |
+| Convergence tests | `pytest -m convergence_tests` |
| 4C integration test (see below) | `pytest -m integration_tests_fourc` |
+| Tutorial tests | `pytest -m tutorial_tests` |
+| 4C tutorial tests | `pytest -m tutorial_tests_fourc` |
+| Remote tutorial tests | `pytest -m tutorial_tests_remote` |
| List markers | `pytest --markers` |
+### Adding tutorial notebook tests
+All tutorial notebooks under `tutorials/` are discovered recursively. When adding a new notebook,
+add its relative path to exactly one list in
+`tests/tutorial_tests/tutorial_tests_markers.py::TUTORIAL_NOTEBOOKS_BY_MARKER`: use
+`tutorial_tests` for regular tutorials, `tutorial_tests_fourc` for tutorials requiring 4C, and
+`tutorial_tests_remote` for tutorials requiring remote resources. Pytest collection fails if a
+notebook has no marker assignment.
+
### :four_leaf_clover: Integration tests with 4C
-For the integration tests in QUEENS that require the multiphysics simulation framework [4C](https://github.com/4C-multiphysics/4C), the user needs to create a **symbolic link** to the 4C-executable and store it under `/config`:
+For the integration tests in QUEENS that require the multiphysics simulation framework [4C](https://github.com/4C-multiphysics/4C), the user needs to create a **symbolic link** to the 4C-executable and store it under `/config`:
```
-ln -s /config/4C_build
+ln -s /config/4C_build
```
diff --git a/tests/conftest.py b/tests/conftest.py
index ca44b1952..f7bf4dbc7 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -25,7 +25,8 @@
from queens.global_settings import GlobalSettings
from queens.utils import config_directories
from queens.utils.logger_settings import reset_logging
-from queens.utils.path import relative_path_from_root
+from test_utils.path import relative_path_from_root
+from test_utils.tutorial_tests import TUTORIAL_NOTEBOOKS_BY_MARKER
_logger = logging.getLogger(__name__)
@@ -120,13 +121,22 @@ def pytest_collection_modifyitems(items):
# Pytest markers are set individually in each cluster integration test
continue
elif "integration_tests/" in item.nodeid:
+ if check_item_for_marker(item, "convergence_tests"):
+ continue
+
item.add_marker(pytest.mark.integration_tests)
# Add default max_time_for_test if none was set
if not check_item_for_marker(item, "max_time_for_test"):
item.add_marker(pytest.mark.max_time_for_test(10))
elif "tutorial_tests/" in item.nodeid:
- item.add_marker(pytest.mark.tutorial_tests)
+
+ has_tutorial_marker = any(
+ check_item_for_marker(item, marker_name)
+ for marker_name in TUTORIAL_NOTEBOOKS_BY_MARKER
+ )
+ if not has_tutorial_marker:
+ item.add_marker(pytest.mark.tutorial_tests)
# Add default max_time_for_test if none was set
if not check_item_for_marker(item, "max_time_for_test"):
diff --git a/tests/integration_tests/cluster/test_dask_cluster.py b/tests/integration_tests/cluster/test_cluster.py
similarity index 64%
rename from tests/integration_tests/cluster/test_dask_cluster.py
rename to tests/integration_tests/cluster/test_cluster.py
index 1c1aaa7df..32e53af00 100644
--- a/tests/integration_tests/cluster/test_dask_cluster.py
+++ b/tests/integration_tests/cluster/test_cluster.py
@@ -14,7 +14,6 @@
#
"""Test remote 4C simulations with ensight data-processor."""
-import getpass
import json
import logging
import os
@@ -24,8 +23,8 @@
import numpy as np
import pytest
+from testbook import testbook
-import queens.schedulers.cluster as cluster_scheduler # pylint: disable=consider-using-from-import
from queens.data_processors.pvd_file import PvdFile
from queens.distributions.uniform import Uniform
from queens.drivers import Jobscript
@@ -34,10 +33,11 @@
from queens.models.simulation import Simulation
from queens.parameters.parameters import Parameters
from queens.schedulers.cluster import Cluster
+from queens.utils.config_directories import experiment_directory
from queens.utils.io import load_result
-from queens.utils.path import relative_path_from_root
from queens.utils.remote_operations import RemoteConnection
from test_utils.integration_tests import fourc_build_path_from_home
+from test_utils.path import relative_path_from_root
_logger = logging.getLogger(__name__)
@@ -46,6 +46,8 @@
BRUTEFORCE_CLUSTER_TYPE = "bruteforce"
CHARON_CLUSTER_TYPE = "charon"
+PYTEST_BASE_DIR_CLUSTER = "~/queens-tests"
+
@pytest.mark.parametrize(
"cluster",
@@ -56,101 +58,14 @@
],
indirect=True,
)
-class TestDaskCluster:
+class TestCluster:
"""Test class collecting all test with Dask jobqueue clusters and 4C.
- NOTE: we use a class here since our fixture are set to autouse, but we only want to call them
- for these tests.
+ NOTE: we use a class here to parametrize each tests with the different clusters.
"""
- def pytest_base_directory_on_cluster(self):
- """Remote directory containing several pytest runs."""
- return "$HOME/queens-tests"
-
- @pytest.fixture(name="queens_base_directory_on_cluster")
- def fixture_queens_base_directory_on_cluster(self, pytest_id):
- """Remote directory containing all experiments of a single pytest run.
-
- This directory is conceptually equivalent to the usual base
- directory for non-pytest runs, i.e., production experiments. The
- goal is to separate the testing data from production data of the
- user.
- """
- return self.pytest_base_directory_on_cluster() + f"/{pytest_id}"
-
- @pytest.fixture(name="mock_experiment_dir", autouse=True)
- def fixture_mock_experiment_dir(
- self, monkeypatch, cluster_settings, queens_base_directory_on_cluster
- ):
- """Mock the experiment directory of a test on the cluster.
-
- NOTE: It is necessary to mock the whole experiment_directory method.
- Otherwise, the mock is not loaded properly remote.
- This is in contrast to the local mocking where it suffices to mock
- config_directories.BASE_DATA_DIR.
- Note that we also rely on this local mock here!
- """
-
- def patch_experiments_directory(experiment_name, experiment_base_directory=None):
- """Base directory for all experiments on the computing machine."""
- if experiment_base_directory is None:
- experiment_base_directory = Path(
- queens_base_directory_on_cluster.replace("$HOME", str(Path.home()))
- )
- else:
- raise ValueError(
- "This mock function does not support specifying 'experiment_base_directory'. "
- "It must be called with 'experiment_base_directory=None'."
- )
- experiments_dir = experiment_base_directory / experiment_name
- return experiments_dir, experiments_dir.exists()
-
- monkeypatch.setattr(cluster_scheduler, "experiment_directory", patch_experiments_directory)
- _logger.debug("Mocking of dask experiment_directory was successful.")
- _logger.debug(
- "dask experiment_directory is mocked to '%s/' on %s@%s",
- queens_base_directory_on_cluster,
- cluster_settings["user"],
- cluster_settings["host"],
- )
-
- return patch_experiments_directory
-
- @pytest.fixture(name="experiment_dir")
- def fixture_experiment_dir(self, test_name, remote_connection, mock_experiment_dir):
- """Fixture providing the remote experiment directory."""
- experiment_dir, _ = remote_connection.run_function(mock_experiment_dir, test_name, None)
- return experiment_dir
-
- @pytest.fixture(name="_create_experiment_dir")
- def fixture_create_experiment_dir(self, remote_connection, experiment_dir):
- """Fixture providing the remote experiment directory."""
-
- def create_experiment_dir_and_assert_it_exists():
- """Create experiment directory on remote and assert it exists."""
- os.mkdir(experiment_dir)
- return experiment_dir.exists()
-
- assert remote_connection.run_function(create_experiment_dir_and_assert_it_exists)
-
- @pytest.fixture(name="cluster_kwargs")
- def fixture_cluster_kwargs(self, cluster_settings, remote_connection, test_name):
- """Keyword arguments to initialize the cluster scheduler."""
- return {
- "workload_manager": cluster_settings["workload_manager"],
- "walltime": "00:10:00",
- "num_jobs": 1,
- "min_jobs": 1,
- "num_procs": 1,
- "num_nodes": 1,
- "remote_connection": remote_connection,
- "cluster_internal_address": cluster_settings["cluster_internal_address"],
- "experiment_name": test_name,
- "queue": cluster_settings.get("queue"),
- "job_script_prologue": cluster_settings.get("job_script_prologue"),
- }
-
- def test_new_experiment_dir(self, cluster_kwargs, remote_connection, experiment_dir):
+ @staticmethod
+ def test_new_experiment_dir(cluster_kwargs, remote_connection, experiment_dir):
"""Test cluster init when experiment dir does not exist."""
experiment_dir_exists = remote_connection.run_function(experiment_dir.exists)
assert not experiment_dir_exists
@@ -160,12 +75,14 @@ def test_new_experiment_dir(self, cluster_kwargs, remote_connection, experiment_
experiment_dir_exists = remote_connection.run_function(experiment_dir.exists)
assert experiment_dir_exists
- def test_overwriting_existing_experiment_dir(self, cluster_kwargs, _create_experiment_dir):
+ @staticmethod
+ def test_overwriting_existing_experiment_dir(cluster_kwargs, _create_experiment_dir):
"""Test cluster init when overwriting experiment dir via flag."""
Cluster(**cluster_kwargs, overwrite_existing_experiment=True)
+ @staticmethod
def test_no_prompt_input_for_existing_experiment_dir(
- self, cluster_kwargs, mocker, _create_experiment_dir
+ cluster_kwargs, mocker, _create_experiment_dir
):
"""Test cluster init when not overwriting experiment dir via flag.
@@ -178,8 +95,9 @@ def test_no_prompt_input_for_existing_experiment_dir(
Cluster(**cluster_kwargs, overwrite_existing_experiment=False)
assert exit_info.value.code == 1
+ @staticmethod
def test_empty_prompt_input_for_existing_experiment_dir(
- self, cluster_kwargs, mocker, _create_experiment_dir
+ cluster_kwargs, mocker, _create_experiment_dir
):
"""Test cluster init when not overwriting experiment dir via flag.
@@ -193,9 +111,10 @@ def test_empty_prompt_input_for_existing_experiment_dir(
Cluster(**cluster_kwargs, overwrite_existing_experiment=False)
assert exit_info.value.code == 1
+ @staticmethod
@pytest.mark.parametrize("user_input", ["y", "yes"])
def test_y_prompt_input_for_existing_experiment_dir(
- self, cluster_kwargs, mocker, user_input, _create_experiment_dir
+ cluster_kwargs, mocker, user_input, _create_experiment_dir
):
"""Test cluster init when not overwriting experiment dir via flag.
@@ -245,32 +164,30 @@ def experiment_dir_exists_and_contents(experiment_dir):
):
assert file_before == file_after
+ @staticmethod
def test_fourc_mc_cluster(
- self,
third_party_inputs,
- cluster_settings,
cluster_kwargs,
remote_connection,
- fourc_cluster_path,
+ basic_jobscript_kwargs,
fourc_example_expected_output,
global_settings,
tmp_path,
):
"""Test remote 4C simulations with DASK jobqueue and MC iterator.
- Test for remote 4C simulations on a remote cluster in combination
- with
+ Test for remote 4C simulations on a remote cluster in combination with
- DASK jobqueue cluster
- Monte-Carlo (MC) iterator
- - 4C ensight data-processor.
+ - PVD data processor.
Args:
third_party_inputs (Path): Path to the 4C input files
- cluster_settings (dict): Cluster settings
cluster_kwargs (dict): Keyword arguments to initialize the cluster scheduler
remote_connection (RemoteConnection): Remote connection object
- fourc_cluster_path (Path): paths to 4C executable on the cluster
+ basic_jobscript_kwargs (dict): Basic keyword arguments to initialize the jobscript
+ driver that are constant for all cluster tests
fourc_example_expected_output (np.ndarray): Expected output for the MC samples
global_settings (GlobalSettings): object containing experiment name and tmp_path
tmp_path (Path): Temporary path for storing remote data locally
@@ -293,10 +210,8 @@ def test_fourc_mc_cluster(
driver = Jobscript(
parameters=parameters,
input_templates=fourc_input_file_template,
- jobscript_template=cluster_settings["jobscript_template"],
- executable=fourc_cluster_path,
data_processor=data_processor,
- extra_options={"cluster_script": cluster_settings["cluster_script_path"]},
+ **basic_jobscript_kwargs,
)
model = Simulation(scheduler=scheduler, driver=driver)
iterator = MonteCarlo(
@@ -320,7 +235,7 @@ def test_fourc_mc_cluster(
scheduler.copy_files_from_experiment_dir(local_data_path)
# The remote data has to be deleted before the assertion
- self.delete_simulation_data(remote_connection)
+ delete_old_simulation_data(remote_connection)
# assert statements
np.testing.assert_array_almost_equal(
@@ -342,21 +257,68 @@ def test_fourc_mc_cluster(
# The extracted local data should match the expected output
np.testing.assert_array_almost_equal(local_data, fourc_example_expected_output, decimal=6)
- def delete_simulation_data(self, remote_connection):
- """Delete simulation data on the cluster.
+ @staticmethod
+ @testbook(
+ relative_path_from_root(
+ "tutorials/5_grid_iterator_4c_remote/5_grid_iterator_4c_remote.ipynb"
+ ),
+ )
+ def test_4c_remote_tutorial(
+ tb,
+ tmp_path,
+ test_name,
+ basic_jobscript_kwargs,
+ remote_connection_kwargs,
+ minimal_cluster_kwargs,
+ ):
+ """Test for tutorial 3: Remote 4C simulation with grid iterator.
- This approach deletes test simulation data older than seven days
- Args:
- remote_connection (RemoteConnection): connection to remote cluster.
+ The notebook is run with injected lines of code to replace
+ placeholders. It is checked that the replaced dict entries
+ already exist in the notebook.
"""
- # Delete data from tests older then 1 week
- command = (
- "find "
- + str(self.pytest_base_directory_on_cluster())
- + " -mindepth 1 -maxdepth 1 -mtime +7 -type d -exec rm -rv {} \\;"
+ kwargs_dicts = [basic_jobscript_kwargs, remote_connection_kwargs, minimal_cluster_kwargs]
+ dict_names = [
+ "jobscript_driver_kwargs",
+ "remote_connection_kwargs",
+ "cluster_scheduler_kwargs",
+ ]
+
+ injected_cell = """from pathlib import PosixPath"""
+
+ for kwargs_dict, dict_name in zip(kwargs_dicts, dict_names):
+ dict_name_injected = f"{dict_name}_injected"
+ injected_cell += f"""
+{dict_name_injected} = {kwargs_dict}
+if not {dict_name}.keys() == {dict_name_injected}.keys():
+ raise KeyError(
+ f"The keys of the injected dictionary are not the same as the keys of the "
+ f"placeholder dictionary in the notebook.\\n"
+ f"Injected keys: {{{dict_name_injected}.keys()}}\\n"
+ f"Placeholder keys: {{{dict_name}.keys()}}"
+ )
+{dict_name} = {dict_name_injected}
+ """
+
+ # replace placeholder dicts
+ tb.inject(injected_cell, after=6, run=False)
+ # replace experiment name and output dir
+ tb.inject(
+ f"experiment_name = {test_name!r}\noutput_dir = {tmp_path!r}",
+ after=8,
+ run=False,
)
- result = remote_connection.run(command, in_stream=False)
- _logger.debug("Deleting old simulation data:\n%s", result.stdout)
+ # assert expected output
+ tb.inject(
+ "np.testing.assert_allclose(max_displacement_magnitude_per_run, "
+ "[0.17606783, 0.22969808, 0.27944426, 0.22969808, 0.2782447, 0.32395894, 0.27944426, "
+ "0.32395894, 0.36635981])",
+ after=14,
+ run=False,
+ )
+
+ # run the notebook
+ tb.execute()
@dataclass(frozen=True)
@@ -399,7 +361,6 @@ class ClusterConfig:
cluster_script_path=Path("/lnm/share/donottouch.sh"),
)
-
BRUTEFORCE_CONFIG = ClusterConfig(
name="bruteforce",
host="bruteforce.lnm.ed.tum.de",
@@ -409,6 +370,7 @@ class ClusterConfig:
default_python_path="$HOME/anaconda/miniconda/envs/queens/bin/python",
cluster_script_path=Path("/lnm/share/donottouch.sh"),
)
+
CHARON_CONFIG = ClusterConfig(
name="charon",
host="charon.bauv.unibw-muenchen.de",
@@ -427,11 +389,7 @@ class ClusterConfig:
}
-# CLUSTER TESTS ------------------------------------------------------------------------------------
-@pytest.fixture(name="user", scope="session")
-def fixture_user():
- """Name of user calling the test suite."""
- return getpass.getuser()
+# CLUSTER TESTS FIXTURES ---------------------------------------------------------------------------
@pytest.fixture(name="remote_user", scope="session")
@@ -449,6 +407,19 @@ def fixture_gateway(pytestconfig):
return gateway
+@pytest.fixture(name="remote_python", scope="session")
+def fixture_remote_python(pytestconfig):
+ """Path to the Python environment on remote host."""
+ return pytestconfig.getoption("remote_python")
+
+
+@pytest.fixture(name="remote_queens_repository", scope="session")
+def fixture_remote_queens_repository(pytestconfig):
+ """Path to the queens repository on remote host."""
+ remote_queens = pytestconfig.getoption("remote_queens_repository", skip=True)
+ return remote_queens
+
+
@pytest.fixture(name="cluster", scope="session")
def fixture_cluster(request):
"""Name of the cluster to run a test on.
@@ -459,44 +430,34 @@ def fixture_cluster(request):
return request.param
-@pytest.fixture(name="cluster_settings", scope="session")
-def fixture_cluster_settings(
- cluster, remote_user, gateway, remote_python, remote_queens_repository
-):
- """All cluster settings."""
- settings = CLUSTER_CONFIGS.get(cluster).dict()
- _logger.debug("raw cluster config: %s", settings)
- settings["cluster"] = cluster
- settings["user"] = remote_user
- settings["remote_python"] = remote_python
- settings["remote_queens_repository"] = remote_queens_repository
- settings["gateway"] = gateway
- return settings
+@pytest.fixture(name="cluster_config", scope="session")
+def fixture_cluster_config(cluster):
+ """The cluster configuration for the given cluster."""
+ config = CLUSTER_CONFIGS.get(cluster).dict()
+ _logger.debug("Cluster config: %s", config)
+ return config
-@pytest.fixture(name="remote_python", scope="session")
-def fixture_remote_python(pytestconfig):
- """Path to the Python environment on remote host."""
- return pytestconfig.getoption("remote_python")
+@pytest.fixture(name="remote_connection_kwargs", scope="session")
+def fixture_remote_connection_kwargs(
+ cluster_config, remote_user, remote_python, remote_queens_repository, gateway
+):
+ """Keyword arguments to initialize the remote connection."""
+ remote_connection_kwargs = {
+ "host": cluster_config["host"],
+ "user": remote_user,
+ "remote_python": remote_python,
+ "remote_queens_repository": remote_queens_repository,
+ "gateway": gateway,
+ }
+ _logger.debug("Remote connection kwargs: %s", remote_connection_kwargs)
+ return remote_connection_kwargs
@pytest.fixture(name="remote_connection", scope="session")
-def fixture_remote_connection(cluster_settings):
+def fixture_remote_connection(remote_connection_kwargs):
"""A fabric connection to a remote host."""
- return RemoteConnection(
- host=cluster_settings["host"],
- user=cluster_settings["user"],
- remote_python=cluster_settings["remote_python"],
- remote_queens_repository=cluster_settings["remote_queens_repository"],
- gateway=cluster_settings["gateway"],
- )
-
-
-@pytest.fixture(name="remote_queens_repository", scope="session")
-def fixture_remote_queens_repository(pytestconfig):
- """Path to the queens repository on remote host."""
- remote_queens = pytestconfig.getoption("remote_queens_repository", skip=True)
- return remote_queens
+ return RemoteConnection(**remote_connection_kwargs)
@pytest.fixture(name="fourc_cluster_path", scope="session")
@@ -515,3 +476,101 @@ def fixture_fourc_cluster_path(remote_connection):
Path(find_result.stdout.rstrip())
return fourc
+
+
+@pytest.fixture(name="experiment_base_dir_cluster", scope="session")
+def fixture_experiment_base_dir_cluster(pytest_id):
+ """Remote directory containing all experiments of a single pytest run.
+
+ This directory is conceptually equivalent to the usual base
+ directory for non-pytest runs, i.e., production experiments. The
+ goal is to separate the testing data from production data of the
+ user.
+ """
+ return PYTEST_BASE_DIR_CLUSTER + f"/{pytest_id}"
+
+
+@pytest.fixture(name="experiment_dir")
+def fixture_experiment_dir(global_settings, remote_connection, experiment_base_dir_cluster):
+ """Fixture providing the remote experiment directory."""
+ experiment_dir, _ = remote_connection.run_function(
+ experiment_directory,
+ global_settings.experiment_name,
+ experiment_base_dir_cluster,
+ )
+ return experiment_dir
+
+
+@pytest.fixture(name="_create_experiment_dir")
+def fixture_create_experiment_dir(remote_connection, experiment_dir):
+ """Fixture providing the remote experiment directory."""
+
+ def create_experiment_dir_and_assert_it_exists():
+ """Create experiment directory on remote and assert it exists."""
+ os.mkdir(experiment_dir)
+ return experiment_dir.exists()
+
+ assert remote_connection.run_function(create_experiment_dir_and_assert_it_exists)
+
+
+@pytest.fixture(name="minimal_cluster_kwargs", scope="session")
+def fixture_minimal_cluster_kwargs(cluster_config, experiment_base_dir_cluster):
+ """Basic keyword arguments to initialize the cluster scheduler.
+
+ These kwargs are constant for all cluster tests.
+ """
+ return {
+ "workload_manager": cluster_config["workload_manager"],
+ "queue": cluster_config.get("queue"),
+ "cluster_internal_address": cluster_config["cluster_internal_address"],
+ "experiment_base_dir": experiment_base_dir_cluster,
+ "job_script_prologue": cluster_config.get("job_script_prologue"),
+ }
+
+
+@pytest.fixture(name="cluster_kwargs")
+def fixture_cluster_kwargs(minimal_cluster_kwargs, remote_connection, test_name):
+ """Keyword arguments to initialize the cluster scheduler."""
+ return minimal_cluster_kwargs | {
+ "walltime": "00:10:00",
+ "num_jobs": 1,
+ "min_jobs": 1,
+ "num_procs": 1,
+ "num_nodes": 1,
+ "remote_connection": remote_connection,
+ "experiment_name": test_name,
+ }
+
+
+@pytest.fixture(name="basic_jobscript_kwargs", scope="session")
+def fixture_basic_jobscript_kwargs(cluster_config, fourc_cluster_path):
+ """Basic keyword arguments to initialize the jobscript driver.
+
+ These kwargs are constant for all cluster tests.
+ """
+ return {
+ "jobscript_template": cluster_config["jobscript_template"],
+ "executable": fourc_cluster_path,
+ "extra_options": {"cluster_script": cluster_config["cluster_script_path"]},
+ }
+
+
+# CLUSTER TESTS FUNCTIONS --------------------------------------------------------------------------
+
+
+def delete_old_simulation_data(remote_connection):
+ """Delete old simulation data on the cluster.
+
+ This approach deletes test simulation data older than seven days.
+
+ Args:
+ remote_connection (RemoteConnection): connection to remote cluster.
+ """
+ # Delete data from tests older than 1 week
+ command = (
+ "find "
+ + PYTEST_BASE_DIR_CLUSTER
+ + " -mindepth 1 -maxdepth 1 -mtime +7 -type d -exec rm -rv {} \\;"
+ )
+ result = remote_connection.run(command, in_stream=False)
+ _logger.debug("Deleting old simulation data:\n%s", result.stdout)
diff --git a/tests/integration_tests/fourc/conftest.py b/tests/integration_tests/fourc/conftest.py
index 41484cf33..1a6c3e5e2 100644
--- a/tests/integration_tests/fourc/conftest.py
+++ b/tests/integration_tests/fourc/conftest.py
@@ -40,6 +40,6 @@ def fixture_setup_symbolic_links_fourc(fourc_link):
"4C! \n"
"You can create the necessary symbolic link on Linux via:\n"
"-------------------------------------------------------------------------\n"
- "ln -s /config/4C_build\n"
+ "ln -s /config/4C_build\n"
"-------------------------------------------------------------------------\n"
) from error
diff --git a/tests/integration_tests/iterators/test_bmfia.py b/tests/integration_tests/iterators/test_bmfia.py
index f9602284c..1901809b6 100644
--- a/tests/integration_tests/iterators/test_bmfia.py
+++ b/tests/integration_tests/iterators/test_bmfia.py
@@ -277,7 +277,7 @@ def test_bmfia_rpvi_gaussian_neural_network_park91a(
nodes_per_hidden_layer_lst=[5, 5],
nugget_std=1e-05,
num_epochs=1,
- optimizer_seed=42,
+ seed=42,
refinement_epochs_decay=0.7,
verbosity_on=True,
)
@@ -411,7 +411,7 @@ def fixture_expected_variational_cov():
@pytest.fixture(name="expected_variational_mean_nn")
def fixture_expected_variational_mean_nn():
"""Expected variational mean."""
- exp_var_mean = np.array([0.19221321, 0.33134219]).reshape(-1, 1)
+ exp_var_mean = np.array([0.5416671, 0.48222166]).reshape(-1, 1)
return exp_var_mean
@@ -419,5 +419,5 @@ def fixture_expected_variational_mean_nn():
@pytest.fixture(name="expected_variational_cov_nn")
def fixture_expected_variational_cov_nn():
"""Expected variational covariance."""
- exp_var_cov = np.array([[0.01245263, 0.0], [0.0, 0.01393423]])
+ exp_var_cov = np.array([[0.07173655, 0.0], [0.0, 0.08576683]])
return exp_var_cov
diff --git a/tests/integration_tests/iterators/test_elementary_effects.py b/tests/integration_tests/iterators/test_elementary_effects.py
index b11be2e00..9fc514665 100644
--- a/tests/integration_tests/iterators/test_elementary_effects.py
+++ b/tests/integration_tests/iterators/test_elementary_effects.py
@@ -75,21 +75,21 @@ def test_elementary_effects_ishigami90(global_settings):
results = load_result(global_settings.result_file(".pickle"))
_logger.info(results)
- assert results["sensitivity_indices"]["mu"][0] == pytest.approx(15.46038594, abs=1e-7)
+ assert results["sensitivity_indices"]["mu"][0] == pytest.approx(17.68763290, abs=1e-7)
assert results["sensitivity_indices"]["mu"][1] == pytest.approx(0.0, abs=1e-7)
- assert results["sensitivity_indices"]["mu"][2] == pytest.approx(0.0, abs=1e-7)
+ assert results["sensitivity_indices"]["mu"][2] == pytest.approx(7.13332892, abs=1e-7)
- assert results["sensitivity_indices"]["mu_star"][0] == pytest.approx(15.460385940, abs=1e-7)
+ assert results["sensitivity_indices"]["mu_star"][0] == pytest.approx(17.68763290, abs=1e-7)
assert results["sensitivity_indices"]["mu_star"][1] == pytest.approx(1.47392000, abs=1e-7)
- assert results["sensitivity_indices"]["mu_star"][2] == pytest.approx(5.63434321, abs=1e-7)
+ assert results["sensitivity_indices"]["mu_star"][2] == pytest.approx(7.13332892, abs=1e-7)
- assert results["sensitivity_indices"]["sigma"][0] == pytest.approx(15.85512257, abs=1e-7)
+ assert results["sensitivity_indices"]["sigma"][0] == pytest.approx(18.77919823, abs=1e-7)
assert results["sensitivity_indices"]["sigma"][1] == pytest.approx(1.70193622, abs=1e-7)
- assert results["sensitivity_indices"]["sigma"][2] == pytest.approx(9.20084394, abs=1e-7)
+ assert results["sensitivity_indices"]["sigma"][2] == pytest.approx(8.59288836, abs=1e-7)
- assert results["sensitivity_indices"]["mu_star_conf"][0] == pytest.approx(13.53414548, abs=1e-7)
+ assert results["sensitivity_indices"]["mu_star_conf"][0] == pytest.approx(15.77224320, abs=1e-7)
assert results["sensitivity_indices"]["mu_star_conf"][1] == pytest.approx(0.0, abs=1e-7)
- assert results["sensitivity_indices"]["mu_star_conf"][2] == pytest.approx(5.51108773, abs=1e-7)
+ assert results["sensitivity_indices"]["mu_star_conf"][2] == pytest.approx(7.31091870, abs=1e-7)
def test_elementary_effects_sobol(
@@ -157,16 +157,16 @@ def fixture_expected_result_mu():
"""Expected Mu result."""
expected_result_mu = np.array(
[
- 25.8299150077341,
- 19.28297176050532,
- -14.092164789704626,
- 5.333475971922498,
- -11.385141403296364,
- 13.970208961715421,
- -3.0950202483238303,
- 0.6672725255532903,
- 7.2385092339309445,
- -7.7664016980947075,
+ -2.601323663226073,
+ 20.68200584795835,
+ -7.759411231057245,
+ 4.7269015243468875,
+ -20.447764722050515,
+ 11.587939260262727,
+ 4.915003189487776,
+ -0.46675060195474005,
+ -3.5192417525555633,
+ -9.817808539704242,
]
)
return expected_result_mu
@@ -177,16 +177,16 @@ def fixture_expected_result_mu_star():
"""Expected Mu star result."""
expected_result_mu_star = np.array(
[
- 29.84594504725642,
- 21.098173537614855,
- 16.4727722348437,
- 26.266876218598668,
- 16.216603266281044,
- 18.051629859410895,
- 3.488313966697564,
- 2.7128638920479147,
- 7.671230484535577,
- 10.299932289624746,
+ 9.58548627110508,
+ 23.298593393925685,
+ 13.031380571529553,
+ 6.551052192131895,
+ 23.87075909458303,
+ 13.493005422109425,
+ 8.636826684475931,
+ 0.804169417762858,
+ 3.845539815618292,
+ 10.185803340670184,
]
)
return expected_result_mu_star
@@ -197,16 +197,16 @@ def fixture_expected_result_sigma():
"""Expected sigma result."""
expected_result_sigma = np.array(
[
- 53.88783786787971,
- 41.02192670857979,
- 29.841807478998156,
- 43.33349033575829,
- 29.407676882180404,
- 31.679653142831512,
- 5.241491105224932,
- 4.252334015139214,
- 10.38274186974731,
- 18.83046700807382,
+ 14.126073686851976,
+ 44.84025953013619,
+ 18.830571404935803,
+ 11.90755387463754,
+ 40.15919099245428,
+ 24.661511275785948,
+ 14.530785408431987,
+ 1.0111455153120015,
+ 5.494502535418954,
+ 17.68875251673258,
]
)
return expected_result_sigma
diff --git a/tests/integration_tests/iterators/test_hamiltonian_monte_carlo.py b/tests/integration_tests/iterators/test_hamiltonian_monte_carlo.py
index 87764db26..5db87298f 100644
--- a/tests/integration_tests/iterators/test_hamiltonian_monte_carlo.py
+++ b/tests/integration_tests/iterators/test_hamiltonian_monte_carlo.py
@@ -15,7 +15,6 @@
"""Integration test for the HMC iterator."""
import numpy as np
-import pytest
from mock import patch
from queens.distributions.normal import Normal
@@ -29,6 +28,9 @@
from queens.utils.experimental_data_reader import ExperimentalDataReader
from queens.utils.io import load_result
+SAMPLER_STAT_RTOL = 1e-5
+SAMPLER_STAT_ATOL = 1e-8
+
def test_hamiltonian_monte_carlo_gaussian(
tmp_path,
@@ -36,7 +38,43 @@ def test_hamiltonian_monte_carlo_gaussian(
_create_experimental_data_zero,
global_settings,
):
- """Test case for hmc iterator."""
+ """Test HMC sampling for a Gaussian-Gaussian Bayesian inference problem.
+
+ The test samples from a two-dimensional posterior with Gaussian prior and Gaussian
+ likelihood. Since both prior and likelihood are Gaussian, the posterior is Gaussian
+ again. The prior is
+
+ x ~ N(mu_0, Sigma_0),
+ mu_0 = [-2, 2]^T,
+ Sigma_0 = [[1, 0], [0, 1]].
+
+ The likelihood is evaluated at the observed value y = [0, 0]^T with
+
+ y | x ~ N(x, Sigma_L),
+ Sigma_L = [[1, 1/2], [1/2, 1]].
+
+ Therefore,
+
+ Sigma_p = (Sigma_0^{-1} + Sigma_L^{-1})^{-1}
+ = [[7/15, 2/15], [2/15, 7/15]],
+
+ mu_p = Sigma_p (Sigma_0^{-1} mu_0 + Sigma_L^{-1} y)
+ = Sigma_p mu_0
+ = [-2/3, 2/3]^T.
+
+ The converged Markov chain should therefore approximate
+
+ E[x | y] = [-2/3, 2/3]^T,
+ Var[x | y] = [7/15, 7/15],
+ Std[x | y] = [sqrt(7/15), sqrt(7/15)].
+
+ Note:
+ This behaviour is achieved by patching the Gaussian likelihood model
+ evaluation and gradient with ``target_density_gaussian_2d_with_grad``.
+ Instead of evaluating against the experimental data, the likelihood is
+ replaced by a fixed analytic Gaussian log-density corresponding to the
+ target distribution described above.
+ """
# Parameters
x1 = Normal(mean=[-2.0, 2.0], covariance=[[1.0, 0.0], [0.0, 1.0]])
parameters = Parameters(x1=x1)
@@ -76,7 +114,15 @@ def test_hamiltonian_monte_carlo_gaussian(
# Load results
results = load_result(global_settings.result_file(".pickle"))
- assert results["mean"].mean(axis=0) == pytest.approx(
- np.array([0.19363280864587615, -1.1303341362165935])
+ np.testing.assert_allclose(
+ results["mean"].mean(axis=0),
+ np.array([0.2560446683451819, -1.311343427417079]),
+ rtol=SAMPLER_STAT_RTOL,
+ atol=SAMPLER_STAT_ATOL,
+ )
+ np.testing.assert_allclose(
+ results["var"].mean(axis=0),
+ np.array([0, 0]),
+ rtol=SAMPLER_STAT_RTOL,
+ atol=SAMPLER_STAT_ATOL,
)
- assert results["var"].mean(axis=0) == pytest.approx([0, 0])
diff --git a/tests/integration_tests/iterators/test_latin_hypercube_sampling.py b/tests/integration_tests/iterators/test_latin_hypercube_sampling.py
index a54ad7ff5..9267878d3 100644
--- a/tests/integration_tests/iterators/test_latin_hypercube_sampling.py
+++ b/tests/integration_tests/iterators/test_latin_hypercube_sampling.py
@@ -17,6 +17,7 @@
The test is based on the low-fidelity Borehole function.
"""
+import numpy as np
import pytest
from queens.distributions.uniform import Uniform
@@ -62,13 +63,36 @@ def test_latin_hypercube_sampling_borehole83(global_settings):
# Load results
results = load_result(global_settings.result_file(".pickle"))
- assert results["mean"] == pytest.approx(62.05240444441511)
- assert results["var"] == pytest.approx(1371.7554224384000)
+ np.testing.assert_allclose(results["mean"], 61.910468085219456, rtol=1e-6, atol=1e-12)
+ np.testing.assert_allclose(results["var"], 1336.5420586597304, rtol=1e-6, atol=1e-12)
@pytest.mark.max_time_for_test(20)
def test_latin_hypercube_sampling_branin78(global_settings):
- """Test case for latin hyper cube iterator."""
+ """Test Latin hypercube sampling for the high-fidelity Branin function.
+
+ The test samples the high-fidelity Branin benchmark function
+
+ f(x_1, x_2) =
+ (-1.275 x_1^2 / pi^2 + 5 x_1 / pi + x_2 - 6)^2
+ + (10 - 5 / (4 pi)) cos(x_1) + 10
+
+ with independent uniform input distributions
+
+ x_1 ~ U[-5, 10],
+ x_2 ~ U[0, 15].
+
+ For these distributions, the exact moments are analytically defined by
+
+ E[f] = 1 / 15^2 int_{-5}^{10} int_0^{15} f(x_1, x_2) dx_2 dx_1
+ = 54.3071982719085,
+
+ Var[f] = 1 / 15^2 int_{-5}^{10} int_0^{15} (f(x_1, x_2) - E[f])^2 dx_2 dx_1
+ = 2626.687312415944.
+
+ The assertions below check the deterministic sample statistics of the seeded
+ Latin hypercube run, not the exact distribution moments.
+ """
# Parameters
x1 = Uniform(lower_bound=-5, upper_bound=10)
x2 = Uniform(lower_bound=0, upper_bound=15)
@@ -94,5 +118,5 @@ def test_latin_hypercube_sampling_branin78(global_settings):
# Load results
results = load_result(global_settings.result_file(".pickle"))
- assert results["mean"] == pytest.approx(53.17279969296224)
- assert results["var"] == pytest.approx(2581.6502630157715)
+ np.testing.assert_allclose(results["mean"], 54.25531895299926, rtol=1e-6, atol=1e-12)
+ np.testing.assert_allclose(results["var"], 2483.786406285974, rtol=1e-6, atol=1e-12)
diff --git a/tests/integration_tests/iterators/test_metropolis_hastings_pymc.py b/tests/integration_tests/iterators/test_metropolis_hastings_pymc.py
index 76b5ab4bd..22a7fd830 100644
--- a/tests/integration_tests/iterators/test_metropolis_hastings_pymc.py
+++ b/tests/integration_tests/iterators/test_metropolis_hastings_pymc.py
@@ -15,7 +15,6 @@
"""Integration test for the Metropolis Hastings PyMC iterator."""
import numpy as np
-import pytest
from mock import patch
from example_simulator_functions.gaussian_logpdf import gaussian_2d_logpdf
@@ -30,11 +29,50 @@
from queens.utils.experimental_data_reader import ExperimentalDataReader
from queens.utils.io import load_result
+SAMPLER_STAT_RTOL = 1e-5
+SAMPLER_STAT_ATOL = 1e-8
+
def test_metropolis_hastings_pymc_gaussian(
tmp_path, _create_experimental_data_zero, global_settings
):
- """Test case for mh iterator."""
+ """Test MH sampling for a Gaussian-Gaussian Bayesian inference problem.
+
+ The test samples from a two-dimensional posterior with Gaussian prior and Gaussian
+ likelihood. Since both prior and likelihood are Gaussian, the posterior is Gaussian
+ again. The prior is
+
+ x ~ N(mu_0, Sigma_0),
+ mu_0 = [-2, 2]^T,
+ Sigma_0 = [[1, 0], [0, 1]].
+
+ The likelihood is evaluated at the observed value y = [0, 0]^T with
+
+ y | x ~ N(x, Sigma_L),
+ Sigma_L = [[1, 1/2], [1/2, 1]].
+
+ Therefore,
+
+ Sigma_p = (Sigma_0^{-1} + Sigma_L^{-1})^{-1}
+ = [[7/15, 2/15], [2/15, 7/15]],
+
+ mu_p = Sigma_p (Sigma_0^{-1} mu_0 + Sigma_L^{-1} y)
+ = Sigma_p mu_0
+ = [-2/3, 2/3]^T.
+
+ The converged Markov chain should therefore approximate
+
+ E[x | y] = [-2/3, 2/3]^T,
+ Var[x | y] = [7/15, 7/15],
+ Std[x | y] = [sqrt(7/15), sqrt(7/15)].
+
+ Note:
+ This behaviour is achieved by patching the Gaussian likelihood model
+ evaluation with ``target_density`` below. Instead of evaluating against
+ the experimental data, the likelihood is replaced by a fixed analytic
+ Gaussian log-density corresponding to the target distribution described
+ above.
+ """
# Parameters
x1 = Normal(mean=[-2.0, 2.0], covariance=[[1.0, 0.0], [0.0, 1.0]])
parameters = Parameters(x1=x1)
@@ -74,10 +112,18 @@ def test_metropolis_hastings_pymc_gaussian(
# Load results
results = load_result(global_settings.result_file(".pickle"))
- assert results["mean"].mean(axis=0) == pytest.approx(
- np.array([-0.5680310153118374, 0.9247536392514567])
+ np.testing.assert_allclose(
+ results["mean"].mean(axis=0),
+ np.array([-0.3783841506648389, 1.1993237016123788]),
+ rtol=SAMPLER_STAT_RTOL,
+ atol=SAMPLER_STAT_ATOL,
+ )
+ np.testing.assert_allclose(
+ results["var"].mean(axis=0),
+ np.array([0.2750466882590994, 1.2853678554541608]),
+ rtol=SAMPLER_STAT_RTOL,
+ atol=SAMPLER_STAT_ATOL,
)
- assert results["var"].mean(axis=0) == pytest.approx([0.13601070852470507, 0.6672200465857734])
def target_density(self, samples): # pylint: disable=unused-argument
diff --git a/tests/integration_tests/iterators/test_nuts.py b/tests/integration_tests/iterators/test_nuts.py
index 5fd4107f5..dae1c9e39 100644
--- a/tests/integration_tests/iterators/test_nuts.py
+++ b/tests/integration_tests/iterators/test_nuts.py
@@ -30,6 +30,9 @@
from queens.utils.experimental_data_reader import ExperimentalDataReader
from queens.utils.io import load_result
+SAMPLER_STAT_RTOL = 1e-5
+SAMPLER_STAT_ATOL = 1e-8
+
def test_nuts_gaussian(
tmp_path,
@@ -37,7 +40,43 @@ def test_nuts_gaussian(
_create_experimental_data,
global_settings,
):
- """Test case for nuts iterator."""
+ """Test NUTS sampling for a Gaussian-Gaussian Bayesian inference problem.
+
+ The test samples from a two-dimensional posterior with Gaussian prior and Gaussian
+ likelihood. Since both prior and likelihood are Gaussian, the posterior is Gaussian
+ again. The prior is
+
+ x ~ N(mu_0, Sigma_0),
+ mu_0 = [-2, 2]^T,
+ Sigma_0 = [[1, 0], [0, 1]].
+
+ The likelihood is evaluated at the observed value y = [0, 0]^T with
+
+ y | x ~ N(x, Sigma_L),
+ Sigma_L = [[1, 1/2], [1/2, 1]].
+
+ Therefore,
+
+ Sigma_p = (Sigma_0^{-1} + Sigma_L^{-1})^{-1}
+ = [[7/15, 2/15], [2/15, 7/15]],
+
+ mu_p = Sigma_p (Sigma_0^{-1} mu_0 + Sigma_L^{-1} y)
+ = Sigma_p mu_0
+ = [-2/3, 2/3]^T.
+
+ The converged Markov chain should therefore approximate
+
+ E[x | y] = [-2/3, 2/3]^T,
+ Var[x | y] = [7/15, 7/15],
+ Std[x | y] = [sqrt(7/15), sqrt(7/15)].
+
+ Note:
+ This behaviour is achieved by patching the Gaussian likelihood model
+ evaluation and gradient with ``target_density_gaussian_2d_with_grad``.
+ Instead of evaluating against the experimental data, the likelihood is
+ replaced by a fixed analytic Gaussian log-density corresponding to the
+ target distribution described above.
+ """
# Parameters
x1 = Normal(mean=[-2.0, 2.0], covariance=[[1.0, 0.0], [0.0, 1.0]])
parameters = Parameters(x1=x1)
@@ -77,10 +116,18 @@ def test_nuts_gaussian(
# Load results
results = load_result(global_settings.result_file(".pickle"))
- assert results["mean"].mean(axis=0) == pytest.approx(
- np.array([-0.2868793496608573, 0.6474274597130008])
+ np.testing.assert_allclose(
+ results["mean"].mean(axis=0),
+ np.array([-1.0964337346677933, 0.9148542463484473]),
+ rtol=SAMPLER_STAT_RTOL,
+ atol=SAMPLER_STAT_ATOL,
+ )
+ np.testing.assert_allclose(
+ results["var"].mean(axis=0),
+ np.array([0.33594238408352364, 1.053294709724648]),
+ rtol=SAMPLER_STAT_RTOL,
+ atol=SAMPLER_STAT_ATOL,
)
- assert results["var"].mean(axis=0) == pytest.approx([0.08396277217936474, 0.10836256575521087])
@pytest.fixture(name="_create_experimental_data")
diff --git a/tests/integration_tests/iterators/test_polynomial_chaos.py b/tests/integration_tests/iterators/test_polynomial_chaos.py
index 60f11e420..3fa0484f0 100644
--- a/tests/integration_tests/iterators/test_polynomial_chaos.py
+++ b/tests/integration_tests/iterators/test_polynomial_chaos.py
@@ -18,13 +18,24 @@
from queens.distributions.uniform import Uniform
from queens.drivers.function import Function
-from queens.iterators.polynomial_chaos import PolynomialChaos
+from queens.iterators.polynomial_chaos import (
+ PolynomialChaos,
+ has_macos_numpoly_reshape_mismatch,
+)
from queens.main import run_iterator
from queens.models.simulation import Simulation
from queens.parameters.parameters import Parameters
from queens.schedulers.pool import Pool
from queens.utils.io import load_result
+pytestmark = pytest.mark.skipif(
+ has_macos_numpoly_reshape_mismatch(),
+ reason=(
+ "Skipped on macOS only for the known downstream numpoly/NumPy mismatch: "
+ "numpoly < 1.3.9 calls numpy.reshape(..., newshape=...), which this NumPy rejects."
+ ),
+)
+
def test_polynomial_chaos_pseudo_spectral_borehole(global_settings):
"""Test case for the PC iterator using a pseudo spectral approach."""
diff --git a/tests/integration_tests/iterators/test_rpvi.py b/tests/integration_tests/iterators/test_rpvi.py
index e2960a39d..9c810246b 100644
--- a/tests/integration_tests/iterators/test_rpvi.py
+++ b/tests/integration_tests/iterators/test_rpvi.py
@@ -14,6 +14,9 @@
#
"""Integration tests for the RPVI iterator."""
+import shlex
+import sys
+
import numpy as np
import pandas as pd
import pytest
@@ -30,7 +33,6 @@
from queens.stochastic_optimizers import Adam
from queens.utils.experimental_data_reader import ExperimentalDataReader
from queens.utils.io import load_result
-from queens.utils.run_subprocess import run_subprocess
from queens.variational_distributions import FullRankNormal, MeanFieldNormal
@@ -322,8 +324,7 @@ def fixture_write_custom_likelihood_model(module_path):
@pytest.fixture(name="python_path")
def fixture_python_path():
"""Current python path."""
- _, _, stdout, _ = run_subprocess("which python")
- return stdout.strip()
+ return shlex.quote(sys.executable)
@pytest.fixture(name="rpvi_jobscript_template", scope="session")
diff --git a/tests/integration_tests/iterators/test_sobol_index.py b/tests/integration_tests/iterators/test_sobol_index.py
index 61992caec..52bd94df2 100644
--- a/tests/integration_tests/iterators/test_sobol_index.py
+++ b/tests/integration_tests/iterators/test_sobol_index.py
@@ -500,9 +500,10 @@ def test_sobol_index_gaussian_process_ishigami(global_settings):
# Load results
results = load_result(global_settings.result_file(".pickle"))
-
- expected_result_s1 = np.array([0.37365542, 0.49936914, -0.00039217])
- expected_result_s1_conf = np.array([0.14969221, 0.18936135, 0.0280309])
+ expected_result_s1 = np.array([0.193787097947826, 0.2675180364120448, 0.19932439995176882])
+ expected_result_s1_conf = np.array(
+ [0.13708917219403513, 0.16267484785491124, 0.1900657850535501]
+ )
np.testing.assert_allclose(results["sensitivity_indices"]["S1"], expected_result_s1, atol=1e-05)
np.testing.assert_allclose(
diff --git a/tests/integration_tests/iterators/test_sobol_index_gp_uncertainty.py b/tests/integration_tests/iterators/test_sobol_index_gp_uncertainty.py
index 2e4a591f9..eb637855e 100644
--- a/tests/integration_tests/iterators/test_sobol_index_gp_uncertainty.py
+++ b/tests/integration_tests/iterators/test_sobol_index_gp_uncertainty.py
@@ -93,23 +93,71 @@ def test_sobol_index_gp_uncertainty_ishigami(global_settings):
expected_s1 = np.array(
[
- [0.30469190, 0.00014149, 0.00005653, 0.00016402, 0.02331390, 0.01473639, 0.02510155],
- [0.38996188, 0.00039567, 0.00049108, 0.00003742, 0.03898644, 0.04343343, 0.01198891],
- [0.00383826, 0.00030052, 0.00008825, 0.00044747, 0.03397690, 0.01841250, 0.04146019],
+ [
+ 2.97063963e-01,
+ 1.32172811e-04,
+ 2.56038695e-05,
+ 1.93443666e-04,
+ 2.25330072e-02,
+ 9.91746996e-03,
+ 2.72599684e-02,
+ ],
+ [
+ 4.31449233e-01,
+ 3.71441195e-04,
+ 2.00571162e-04,
+ 3.79370323e-04,
+ 3.77740130e-02,
+ 2.77576270e-02,
+ 3.81750635e-02,
+ ],
+ [
+ 5.08066819e-03,
+ 1.64495536e-04,
+ 9.87514222e-05,
+ 2.26925997e-04,
+ 2.51376774e-02,
+ 1.94768971e-02,
+ 2.95250211e-02,
+ ],
]
)
- expected_st = np.array(
+ expected_s2 = np.array(
[
- [0.55816767, 0.00050181, 0.00001702, 0.00082728, 0.04390555, 0.00808476, 0.05637328],
- [0.50645929, 0.00022282, 0.00022212, 0.00010188, 0.02925636, 0.02921057, 0.01978344],
- [0.30344671, 0.00010415, 0.00011769, 0.00004659, 0.02000237, 0.02126261, 0.01337864],
+ [-0.0559034, 0.00195262, 0.00046626, 0.00267564, 0.08660769, 0.0423217, 0.10138234],
+ [0.1564238, 0.00096758, 0.00046437, 0.00107588, 0.06096652, 0.04223571, 0.06428802],
+ [0.02015287, 0.00084594, 0.00046812, 0.00079983, 0.05700563, 0.04240573, 0.05543033],
]
)
- expected_s2 = np.array(
+ expected_st = np.array(
[
- [0.00461299, 0.00215561, 0.00006615, 0.00352044, 0.09099820, 0.01594134, 0.11629120],
- [0.19526686, 0.00147909, 0.00059668, 0.00169727, 0.07537822, 0.04787620, 0.08074639],
- [0.06760761, 0.00004854, 0.00002833, 0.00007491, 0.01365552, 0.01043203, 0.01696364],
+ [
+ 5.34063660e-01,
+ 6.81003214e-04,
+ 3.10790784e-04,
+ 7.27864573e-04,
+ 5.11472952e-02,
+ 3.45527133e-02,
+ 5.28778005e-02,
+ ],
+ [
+ 5.15767502e-01,
+ 2.51197174e-04,
+ 1.61311940e-04,
+ 2.33854812e-04,
+ 3.10638632e-02,
+ 2.48932355e-02,
+ 2.99723811e-02,
+ ],
+ [
+ 2.97958247e-01,
+ 2.80315660e-04,
+ 1.75633314e-04,
+ 2.56443896e-04,
+ 3.28149519e-02,
+ 2.59747597e-02,
+ 3.13866001e-02,
+ ],
]
)
@@ -180,7 +228,9 @@ def test_sobol_index_gp_uncertainty_ishigami_third_order(global_settings):
results = load_result(global_settings.result_file(".pickle"))
expected_s3 = np.array(
- [[0.23426643, 0.00801287, 0.00230968, 0.00729179, 0.17544544, 0.09419407, 0.16736517]]
+ [
+ [0.13701495, 0.00729926, 0.00322222, 0.00587944, 0.1674509, 0.11125658, 0.15028514],
+ ]
)
np.testing.assert_allclose(results["third_order"].values, expected_s3, atol=1e-05)
@@ -244,19 +294,66 @@ def test_sobol_index_gp_uncertainty_mean_ishigami(global_settings):
# Load results
results = load_result(global_settings.result_file(".pickle"))
-
expected_s1 = np.array(
[
- [0.28879163, 0.00022986, np.nan, 0.00022986, 0.02971550, np.nan, 0.02971550],
- [0.45303182, 0.00000033, np.nan, 0.00000033, 0.00112608, np.nan, 0.00112608],
- [0.07601656, 0.00000084, np.nan, 0.00000084, 0.00179415, np.nan, 0.00179415],
+ [
+ 3.21085015e-01,
+ 6.84428797e-05,
+ np.nan,
+ 6.84428797e-05,
+ 1.62148236e-02,
+ np.nan,
+ 1.62148236e-02,
+ ],
+ [
+ 5.08557775e-01,
+ 1.58781059e-03,
+ np.nan,
+ 1.58781059e-03,
+ 7.80993532e-02,
+ np.nan,
+ 7.80993532e-02,
+ ],
+ [
+ 5.48899186e-02,
+ 9.71093479e-05,
+ np.nan,
+ 9.71093479e-05,
+ 1.93142839e-02,
+ np.nan,
+ 1.93142839e-02,
+ ],
]
)
expected_st = np.array(
[
- [0.47333086, 0.00093263, np.nan, 0.00093263, 0.05985535, np.nan, 0.05985535],
- [0.48403078, 0.00000185, np.nan, 0.00000185, 0.00266341, np.nan, 0.00266341],
- [0.23926036, 0.00003290, np.nan, 0.00003290, 0.01124253, np.nan, 0.01124253],
+ [
+ 4.99688577e-01,
+ 5.86983409e-04,
+ np.nan,
+ 5.86983409e-04,
+ 4.74854988e-02,
+ np.nan,
+ 4.74854988e-02,
+ ],
+ [
+ 5.40964137e-01,
+ 2.17464690e-04,
+ np.nan,
+ 2.17464690e-04,
+ 2.89029696e-02,
+ np.nan,
+ 2.89029696e-02,
+ ],
+ [
+ 2.63508722e-01,
+ 4.39817083e-05,
+ np.nan,
+ 4.39817083e-05,
+ 1.29982276e-02,
+ np.nan,
+ 1.29982276e-02,
+ ],
]
)
diff --git a/tests/integration_tests/models/test_gaussian_neural_network.py b/tests/integration_tests/models/test_gaussian_neural_network.py
index 9c8168416..37978cf4c 100644
--- a/tests/integration_tests/models/test_gaussian_neural_network.py
+++ b/tests/integration_tests/models/test_gaussian_neural_network.py
@@ -33,7 +33,7 @@ def fixture_my_model():
adams_training_rate=0.001,
batch_size=50,
num_epochs=3000,
- optimizer_seed=42,
+ seed=42,
data_scaling="standard_scaler",
nugget_std=1.0e-02,
verbosity_on=False,
@@ -41,31 +41,155 @@ def fixture_my_model():
return model
-def test_gaussian_neural_network_one_dim(my_model):
+X_TEST_ONE_DIM = np.linspace(-5, 5, 20).reshape(-1, 1)
+
+
+def _one_dim_converged_reference_values():
+ """Reference values for the converged one-dimensional sine test."""
+ mean_ref, gradient_mean_ref = gradient_sinus_test_fun(X_TEST_ONE_DIM)
+ var_ref = np.zeros(mean_ref.shape)
+ gradient_variance_ref = np.zeros(gradient_mean_ref.shape)
+
+ return mean_ref, var_ref, gradient_mean_ref, gradient_variance_ref
+
+
+def _one_dim_trained_reference_values():
+ """Reference values for the regular one-dimensional integration test."""
+ mean_ref = np.array(
+ [
+ [1.05701616],
+ [0.91936273],
+ [0.69505582],
+ [0.28266456],
+ [-0.23943175],
+ [-0.69876824],
+ [-0.96818476],
+ [-0.96579658],
+ [-0.71190977],
+ [-0.26098673],
+ [0.26902289],
+ [0.70484324],
+ [0.96753779],
+ [0.96312091],
+ [0.69956277],
+ [0.24406864],
+ [-0.27454099],
+ [-0.72444972],
+ [-0.96964804],
+ [-0.9596871],
+ ]
+ )
+ var_ref = np.array(
+ [
+ [2.41518859e-03],
+ [1.81828461e-03],
+ [1.17050295e-03],
+ [5.85351970e-04],
+ [2.77973113e-04],
+ [1.52831862e-04],
+ [9.70890580e-05],
+ [7.15952948e-05],
+ [6.14416636e-05],
+ [5.74559826e-05],
+ [5.57975187e-05],
+ [5.50417619e-05],
+ [5.46976234e-05],
+ [5.45183656e-05],
+ [5.44144290e-05],
+ [5.43489094e-05],
+ [5.43056093e-05],
+ [5.42796753e-05],
+ [5.42634170e-05],
+ [5.42580518e-05],
+ ]
+ )
+ gradient_mean_ref = np.array(
+ [
+ [-0.21565741],
+ [-0.32315805],
+ [-0.56097067],
+ [-1.01188688],
+ [-0.95944631],
+ [-0.73350695],
+ [-0.23375639],
+ [0.24355919],
+ [0.73050255],
+ [0.94720195],
+ [0.96924751],
+ [0.79680802],
+ [0.21733357],
+ [-0.24895149],
+ [-0.74798671],
+ [-0.96806014],
+ [-0.95030714],
+ [-0.71774647],
+ [-0.22157872],
+ [0.19674541],
+ ]
+ )
+
+ gradient_variance_ref = np.array(
+ [
+ [-1.04206286e-03],
+ [-1.20268649e-03],
+ [-1.23064309e-03],
+ [-8.95813142e-04],
+ [-3.57500360e-04],
+ [-1.50596134e-04],
+ [-7.30025367e-05],
+ [-2.97073841e-05],
+ [-1.16857120e-05],
+ [-4.58430637e-06],
+ [-2.10000706e-06],
+ [-9.23209819e-07],
+ [-4.54364139e-07],
+ [-2.54516917e-07],
+ [-1.49894128e-07],
+ [-1.02965997e-07],
+ [-6.36046574e-08],
+ [-3.75338863e-08],
+ [-2.20058965e-08],
+ [-2.47589079e-09],
+ ]
+ )
+
+ return mean_ref, var_ref, gradient_mean_ref, gradient_variance_ref
+
+
+@pytest.mark.parametrize(
+ ("n_train", "reference_values", "decimals"),
+ [
+ pytest.param(
+ 25, _one_dim_trained_reference_values(), (2, 2, 2, 1), id="integration-reference"
+ ),
+ pytest.param(
+ 1000,
+ _one_dim_converged_reference_values(),
+ (2, 4, 0, 8),
+ marks=pytest.mark.convergence_tests,
+ id="convergence-reference",
+ ),
+ ],
+)
+def test_gaussian_neural_network_one_dim(my_model, n_train, reference_values, decimals):
"""Test one dimensional gaussian nn."""
- n_train = 25
x_train = np.linspace(-5, 5, n_train).reshape(-1, 1)
y_train = sinus_test_fun(x_train)
my_model.setup(x_train, y_train)
my_model.train()
- # evaluate the testing/benchmark function at testing inputs
- x_test = np.linspace(-5, 5, 200).reshape(-1, 1)
- mean_ref, gradient_mean_ref = gradient_sinus_test_fun(x_test)
- var_ref = np.zeros(mean_ref.shape)
+ x_test = X_TEST_ONE_DIM
+ mean_ref, var_ref, gradient_mean_ref, gradient_variance_ref = reference_values
# --- get the mean and variance of the model (no gradient call here) ---
output = my_model.predict(x_test)
- assert_surrogate_model_output(output, mean_ref, var_ref)
+ assert_surrogate_model_output(output, mean_ref, var_ref, decimals=decimals)
# -- now call the gradient function of the model---
output = my_model.predict(x_test, gradient_bool=True)
-
- gradient_variance_ref = np.zeros(gradient_mean_ref.shape)
- decimals = (1, 2, 1, 2)
assert_surrogate_model_output(
- output, mean_ref, var_ref, gradient_mean_ref, gradient_variance_ref, decimals
+ output, mean_ref, var_ref, gradient_mean_ref, gradient_variance_ref, decimals=decimals
)
diff --git a/tests/integration_tests/models/test_logpdf_gaussian_process.py b/tests/integration_tests/models/test_logpdf_gaussian_process.py
index 8ff5a07f9..b2a892189 100644
--- a/tests/integration_tests/models/test_logpdf_gaussian_process.py
+++ b/tests/integration_tests/models/test_logpdf_gaussian_process.py
@@ -161,5 +161,10 @@ def test_logpdf_gaussian_process_park91a(
mean = np.average(particles, weights=weights, axis=0)
std = np.average((particles - mean) ** 2, weights=weights, axis=0) ** (1 / 2)
- np.testing.assert_allclose(mean, expected_mean[approx_type], rtol=5e-2)
+ if approx_type == "GPMAP-I":
+ # Keep the Ubuntu reference while allowing the observed macOS/JAX variation.
+ np.testing.assert_allclose(mean[0], expected_mean[approx_type][0], rtol=5e-2)
+ np.testing.assert_allclose(mean[1], expected_mean[approx_type][1], rtol=1.6e-1)
+ else:
+ np.testing.assert_allclose(mean, expected_mean[approx_type], rtol=5e-2)
np.testing.assert_allclose(std, expected_std[approx_type], rtol=5e-1)
diff --git a/tests/integration_tests/readme_example/test_readme_example.py b/tests/integration_tests/readme_example/test_readme_example.py
index 81e0f91ce..7c33b7a6c 100644
--- a/tests/integration_tests/readme_example/test_readme_example.py
+++ b/tests/integration_tests/readme_example/test_readme_example.py
@@ -14,7 +14,10 @@
#
"""Test the readme QUEENS example."""
-from queens.utils.run_subprocess import run_subprocess
+import os
+import subprocess
+import sys
+
from test_utils.get_queens_example_from_readme import get_queens_example_from_readme
@@ -32,9 +35,18 @@ def test_readme_example(tmp_path):
script_path.write_text(example_source)
# Run the script
- process_returncode, _, _, _ = run_subprocess(
- f"python {script_path}", raise_error_on_subprocess_failure=False
+ environment = os.environ.copy()
+ environment["MPLCONFIGDIR"] = str(tmp_path / "matplotlib")
+ process = subprocess.run(
+ [sys.executable, str(script_path)],
+ check=False,
+ capture_output=True,
+ env=environment,
+ text=True,
)
- # Check for an exit code
- assert not process_returncode
+ assert process.returncode == 0, (
+ f"README example failed with exit code {process.returncode}.\n"
+ f"stdout:\n{process.stdout}\n"
+ f"stderr:\n{process.stderr}"
+ )
diff --git a/tests/tutorial_tests/test_1_grid_iterator_rosenbrock.py b/tests/tutorial_tests/test_1_grid_iterator_rosenbrock.py
index dbc510f94..aeb2cc948 100644
--- a/tests/tutorial_tests/test_1_grid_iterator_rosenbrock.py
+++ b/tests/tutorial_tests/test_1_grid_iterator_rosenbrock.py
@@ -17,26 +17,30 @@
import numpy as np
from testbook import testbook
-from test_utils.tutorial_tests import inject_mock_base_dir
+from test_utils.path import relative_path_from_root
+from test_utils.tutorial_tests import inject_mock_base_dir, markers_for_notebook
+
+NOTEBOOK_PATH = relative_path_from_root("tutorials/1_grid_iterator_rosenbrock.ipynb")
+
+pytestmark = markers_for_notebook(NOTEBOOK_PATH)
@testbook(
- "tutorials/1_grid_iterator_rosenbrock.ipynb",
+ NOTEBOOK_PATH,
)
def test_output_tutorial_1(tb, tmp_path):
"""Parameterized test case for tutorial 1: Grid Iterator Rosenbrock.
- The notebook is run with injected lines of codes for testing
- that the final results are as expected.
+ The notebook is run with injected lines of codes for testing that
+ the final results are as expected.
"""
optimal_fun = 2.957935e-11
optimal_x = np.array([0.99999463, 0.99998915]).tolist()
-
# inject testing cells
tb.inject(
- """np.testing.assert_allclose(X1, X1_QUEENS)
-np.testing.assert_allclose(X2, X2_QUEENS)
-np.testing.assert_allclose(Z, Z_QUEENS)""",
+ "np.testing.assert_allclose(X1, X1_QUEENS)\n"
+ "np.testing.assert_allclose(X2, X2_QUEENS)\n"
+ "np.testing.assert_allclose(Z, Z_QUEENS)",
after=28,
run=False,
)
diff --git a/tests/tutorial_tests/test_2_uncertainty_propagation_and_quantification.py b/tests/tutorial_tests/test_2_uncertainty_propagation_and_quantification.py
index 233668da3..a8419ccf6 100644
--- a/tests/tutorial_tests/test_2_uncertainty_propagation_and_quantification.py
+++ b/tests/tutorial_tests/test_2_uncertainty_propagation_and_quantification.py
@@ -17,18 +17,26 @@
import numpy as np
from testbook import testbook
-from test_utils.tutorial_tests import inject_mock_base_dir
+from test_utils.path import relative_path_from_root
+from test_utils.tutorial_tests import inject_mock_base_dir, markers_for_notebook
+
+NOTEBOOK_PATH = relative_path_from_root(
+ "tutorials/2_uncertainty_propagation_and_quantification.ipynb"
+)
+
+pytestmark = markers_for_notebook(NOTEBOOK_PATH)
@testbook(
- "tutorials/2_uncertainty_propagation_and_quantification.ipynb",
+ NOTEBOOK_PATH,
timeout=-1,
)
def test_output_tutorial_2(tb, tmp_path):
- """Parameterized test case for tutorial 2: Uncertainty Propagation and Quantification.
+ """Parameterized test case for tutorial 2.
- The notebook is run with injected lines of codes for testing
- that the final results are as expected.
+ The tutorial is on Uncertainty Propagation and Quantification. The
+ notebook is run with injected lines of codes for testing that the
+ final results are as expected.
"""
mu = np.array([0.006638095218949362, 0.0063343892089076466, 0.0021987605285805315]).tolist()
x = np.array([0.203125, 0.5, 0.796875]).tolist()
diff --git a/tests/tutorial_tests/test_tutorials.py b/tests/tutorial_tests/test_tutorials.py
index 3c562aef4..5670e0a04 100644
--- a/tests/tutorial_tests/test_tutorials.py
+++ b/tests/tutorial_tests/test_tutorials.py
@@ -19,19 +19,30 @@
import pytest
from testbook import testbook
-from test_utils.tutorial_tests import inject_mock_base_dir
+from test_utils.tutorial_tests import (
+ ALL_TUTORIAL_NOTEBOOKS,
+ _validate_tutorial_notebook_markers,
+ inject_mock_base_dir,
+ inject_notebook_execution_context,
+ notebook_param,
+)
+
+_validate_tutorial_notebook_markers()
+TUTORIAL_NOTEBOOKS_WITH_DEDICATED_TESTS = {
+ path.stem.removeprefix("test_")
+ for path in Path("tests/tutorial_tests").glob("test_*.py")
+ if path.name != Path(__file__).name
+}
-# tested jupyter notebooks should be added to the list below
+
+# Notebooks with dedicated output assertions are collected in their own test modules.
@pytest.mark.parametrize(
"paths_to_tutorial_notebooks",
[
- str(patch)
- for patch in sorted(Path("tutorials").glob("*.ipynb"))
- if patch.stem
- not in {
- t.stem.removeprefix("test_") for t in Path("tests/tutorial_tests").glob("test_*.py")
- }
+ notebook_param(path)
+ for path in ALL_TUTORIAL_NOTEBOOKS
+ if Path(path).stem not in TUTORIAL_NOTEBOOKS_WITH_DEDICATED_TESTS
],
)
def test_notebooks(tmp_path, paths_to_tutorial_notebooks):
@@ -41,6 +52,9 @@ def test_notebooks(tmp_path, paths_to_tutorial_notebooks):
any errors/assertions.
"""
with testbook(paths_to_tutorial_notebooks, timeout=-1) as tb:
+ notebook_dir = Path(paths_to_tutorial_notebooks).resolve().parent
+ inject_notebook_execution_context(tb, notebook_dir)
+
# Patch base_directory to avoid writing test data to user's home dir.
# Note that tb.patch converts the mocked Path to a string, so we have to use tb.inject.
inject_mock_base_dir(tb, tmp_path)
diff --git a/tests/unit_tests/data_processors/test_csv_file.py b/tests/unit_tests/data_processors/test_csv_file.py
index c86142bfe..55188194a 100644
--- a/tests/unit_tests/data_processors/test_csv_file.py
+++ b/tests/unit_tests/data_processors/test_csv_file.py
@@ -322,6 +322,18 @@ def test_filter_by_target_values(default_data_processor, default_raw_data):
np.testing.assert_allclose(expected_data, processed_data)
+def test_filter_by_target_values_no_value_within_tolerance(
+ default_data_processor, default_raw_data
+):
+ """Test filter by target values without an index value within tol."""
+ default_data_processor.filter_type = "by_target_values"
+ default_data_processor.filter_target_values = [0.07]
+ default_data_processor.filter_tol = 1e-3
+
+ with pytest.raises(RuntimeError, match="No index values found within tolerance"):
+ default_data_processor.filter_and_manipulate_raw_data(default_raw_data)
+
+
def test_filter_by_row_index(default_data_processor, default_raw_data):
"""Test filter by row index."""
default_data_processor.filter_type = "by_row_index"
diff --git a/tests/unit_tests/data_processors/test_txt_file.py b/tests/unit_tests/data_processors/test_txt_file.py
index 49550b9bd..d732f3e9b 100644
--- a/tests/unit_tests/data_processors/test_txt_file.py
+++ b/tests/unit_tests/data_processors/test_txt_file.py
@@ -17,7 +17,7 @@
import pytest
from queens.data_processors.txt_file import TxtFile
-from queens.utils.path import relative_path_from_root
+from test_utils.path import relative_path_from_root
@pytest.fixture(name="dummy_txt_file", scope="session")
diff --git a/tests/unit_tests/distributions/test_lognormal.py b/tests/unit_tests/distributions/test_lognormal.py
index aa80928e1..faa0d8d1e 100644
--- a/tests/unit_tests/distributions/test_lognormal.py
+++ b/tests/unit_tests/distributions/test_lognormal.py
@@ -212,7 +212,6 @@ def test_cdf_lognormal_2d(lognormal_2d, mean_2d, covariance_2d, sample_pos_2d):
ref_sol = scipy.stats.lognorm.cdf(
sample_pos_2d[:, 0], scale=np.exp(mean_2d[0]), s=std[0]
) * scipy.stats.lognorm.cdf(sample_pos_2d[:, 1], scale=np.exp(mean_2d[1]), s=std[1])
- ref_sol[ref_sol == 0] = np.nan # Queens Log Normal is not defined for <=0.
np.testing.assert_allclose(lognormal_2d.cdf(sample_pos_2d), ref_sol)
diff --git a/tests/unit_tests/distributions/test_truncated_normal.py b/tests/unit_tests/distributions/test_truncated_normal.py
new file mode 100644
index 000000000..a5760ca43
--- /dev/null
+++ b/tests/unit_tests/distributions/test_truncated_normal.py
@@ -0,0 +1,173 @@
+#
+# SPDX-License-Identifier: LGPL-3.0-or-later
+# Copyright (c) 2024-2025, QUEENS contributors.
+#
+# This file is part of QUEENS.
+#
+# QUEENS is free software: you can redistribute it and/or modify it under the terms of the GNU
+# Lesser General Public License as published by the Free Software Foundation, either version 3 of
+# the License, or (at your option) any later version. QUEENS is distributed in the hope that it will
+# be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You
+# should have received a copy of the GNU Lesser General Public License along with QUEENS. If not,
+# see .
+#
+"""Test-module for truncated normal distribution."""
+
+import numpy as np
+import pytest
+import scipy.stats
+
+from queens.distributions.truncated_normal import TruncatedNormal
+
+
+@pytest.fixture(name="sample_pos", params=[0.25, [0.1, 0.25, 0.4, 0.5]])
+def fixture_sample_pos(request):
+ """Sample position to be evaluated."""
+ return np.array(request.param)
+
+
+@pytest.fixture(name="normal_mean", scope="module")
+def fixture_normal_mean():
+ """Mean of the underlying normal distribution."""
+ return 0.3
+
+
+@pytest.fixture(name="normal_std", scope="module")
+def fixture_normal_std():
+ """Standard deviation of the underlying normal distribution."""
+ return 0.05
+
+
+@pytest.fixture(name="lower_bound", scope="module")
+def fixture_lower_bound():
+ """Lower bound of the distribution."""
+ return 0.1
+
+
+@pytest.fixture(name="upper_bound", scope="module")
+def fixture_upper_bound():
+ """Upper bound of the distribution."""
+ return 0.45
+
+
+@pytest.fixture(name="truncated_normal", scope="module")
+def fixture_truncated_normal(normal_mean, normal_std, lower_bound, upper_bound):
+ """A truncated normal distribution."""
+ return TruncatedNormal(
+ unbounded_mean=normal_mean,
+ unbounded_std=normal_std,
+ lower_bound=lower_bound,
+ upper_bound=upper_bound,
+ )
+
+
+@pytest.fixture(name="scipy_reference", scope="module")
+def fixture_scipy_reference(normal_mean, normal_std, lower_bound, upper_bound):
+ """Reference scipy frozen truncnorm for comparison."""
+ a = (lower_bound - normal_mean) / normal_std
+ b = (upper_bound - normal_mean) / normal_std
+ return scipy.stats.truncnorm(a, b, loc=normal_mean, scale=normal_std)
+
+
+# -----------------------------------------------------------------------
+# ---------------------------- TESTS ------------------------------------
+# -----------------------------------------------------------------------
+
+
+def test_init_truncated_normal(
+ truncated_normal, normal_mean, normal_std, lower_bound, upper_bound, scipy_reference
+):
+ """Test init method of TruncatedNormal distribution class."""
+ assert truncated_normal.dimension == 1
+ np.testing.assert_equal(truncated_normal.unbounded_mean, np.array(normal_mean).reshape(-1))
+ np.testing.assert_equal(truncated_normal.unbounded_std, np.array(normal_std).reshape(-1))
+ np.testing.assert_equal(truncated_normal.lower_bound, np.array(lower_bound).reshape(-1))
+ np.testing.assert_equal(truncated_normal.upper_bound, np.array(upper_bound).reshape(-1))
+ np.testing.assert_equal(truncated_normal.mean, scipy_reference.mean())
+ np.testing.assert_equal(truncated_normal.covariance, scipy_reference.var())
+
+
+def test_init_truncated_normal_wrong_interval(normal_mean, normal_std):
+ """Test init with lower bound greater than upper bound."""
+ with pytest.raises(ValueError, match=r"Lower bound must be smaller than upper bound*"):
+ TruncatedNormal(
+ unbounded_mean=normal_mean,
+ unbounded_std=normal_std,
+ lower_bound=0.5,
+ upper_bound=0.1,
+ )
+
+
+def test_init_truncated_normal_negative_std(normal_mean, lower_bound, upper_bound):
+ """Test init with non-positive std."""
+ with pytest.raises(ValueError, match=r"The parameter \'unbounded_std\' has to be positive.*"):
+ TruncatedNormal(
+ unbounded_mean=normal_mean,
+ unbounded_std=-0.1,
+ lower_bound=lower_bound,
+ upper_bound=upper_bound,
+ )
+
+
+def test_init_truncated_normal_multivariate(normal_std, lower_bound, upper_bound):
+ """Test init with multivariate mean raises NotImplementedError."""
+ with pytest.raises(NotImplementedError, match=r"Only one-dimensional*"):
+ TruncatedNormal(
+ unbounded_mean=[0.3, 0.4],
+ unbounded_std=normal_std,
+ lower_bound=lower_bound,
+ upper_bound=upper_bound,
+ )
+
+
+def test_cdf_truncated_normal(truncated_normal, sample_pos, scipy_reference):
+ """Test cdf method of truncated normal distribution class."""
+ ref_sol = scipy_reference.cdf(sample_pos).reshape(-1)
+ np.testing.assert_equal(truncated_normal.cdf(sample_pos), ref_sol)
+
+
+def test_draw_truncated_normal(truncated_normal, mocker):
+ """Test the draw method of truncated normal distribution."""
+ sample = np.asarray(0.3).reshape(1, 1)
+ mocker.patch("scipy.stats._distn_infrastructure.rv_frozen.rvs", return_value=sample)
+ draw = truncated_normal.draw()
+ np.testing.assert_equal(draw, sample)
+
+
+def test_logpdf_truncated_normal(truncated_normal, sample_pos, scipy_reference):
+ """Test logpdf method of truncated normal distribution class."""
+ ref_sol = scipy_reference.logpdf(sample_pos).reshape(-1)
+ np.testing.assert_equal(truncated_normal.logpdf(sample_pos), ref_sol)
+
+
+def test_pdf_truncated_normal(truncated_normal, sample_pos, scipy_reference):
+ """Test pdf method of truncated normal distribution class."""
+ ref_sol = scipy_reference.pdf(sample_pos).reshape(-1)
+ np.testing.assert_equal(truncated_normal.pdf(sample_pos), ref_sol)
+
+
+def test_grad_logpdf_truncated_normal(truncated_normal, normal_mean, normal_std, sample_pos):
+ """Test grad_logpdf against analytical formula -(x - mean) / std**2."""
+ x = np.asarray(sample_pos).reshape(-1)
+ ref_sol = (normal_mean - x) / normal_std**2
+ np.testing.assert_allclose(truncated_normal.grad_logpdf(sample_pos), ref_sol)
+
+
+def test_grad_logpdf_matches_numerical(truncated_normal):
+ """Test grad_logpdf matches numerical differentiation of logpdf."""
+ eps = 1e-6
+ for xi in (0.2, 0.3, 0.4):
+ numerical = (
+ truncated_normal.logpdf(np.array([xi + eps]))[0]
+ - truncated_normal.logpdf(np.array([xi - eps]))[0]
+ ) / (2 * eps)
+ analytical = truncated_normal.grad_logpdf(np.array([xi]))[0]
+ np.testing.assert_allclose(analytical, numerical, rtol=1e-5)
+
+
+def test_ppf_truncated_normal(truncated_normal, scipy_reference):
+ """Test ppf method of truncated normal distribution class."""
+ quantile = 0.5
+ ref_sol = scipy_reference.ppf(quantile).reshape(-1)
+ np.testing.assert_equal(truncated_normal.ppf(quantile), ref_sol)
diff --git a/tests/unit_tests/drivers/test_jobscript.py b/tests/unit_tests/drivers/test_jobscript.py
index 8924dae86..33427573f 100644
--- a/tests/unit_tests/drivers/test_jobscript.py
+++ b/tests/unit_tests/drivers/test_jobscript.py
@@ -323,6 +323,28 @@ def test_nonzero_exit_code(
)
+def test_nonzero_exit_code_includes_jobscript_log(parameters, input_template, job_options):
+ """Test that failed jobscript errors include the redirected log."""
+ jobscript_driver = Jobscript(
+ parameters=parameters,
+ input_templates=input_template,
+ jobscript_template='echo "jobscript failed"; exit 1',
+ executable="",
+ raise_error_on_jobscript_failure=True,
+ )
+ sample_dict = parameters.sample_as_dict(np.array([1, 2]))
+ sample = np.array(list(sample_dict.values()))
+
+ with pytest.raises(SubprocessError, match="jobscript failed"):
+ jobscript_driver.run(
+ sample=sample,
+ job_id=job_options.job_id,
+ num_procs=job_options.num_procs,
+ experiment_dir=job_options.experiment_dir,
+ experiment_name=job_options.experiment_name,
+ )
+
+
def test_long_jobscript_template_str(parameters, input_template):
"""Test that a long jobscript template string does not raise an error."""
long_str = "dummy" * 100
diff --git a/tests/unit_tests/iterators/test_elementary_effects.py b/tests/unit_tests/iterators/test_elementary_effects.py
index 92e40eb20..99ef4792c 100644
--- a/tests/unit_tests/iterators/test_elementary_effects.py
+++ b/tests/unit_tests/iterators/test_elementary_effects.py
@@ -49,22 +49,22 @@ def test_correct_sampling(default_elementary_effects_iterator):
ref_vals = np.array(
[
- [-1.04719755, 3.14159265, 3.14159265],
- [3.14159265, 3.14159265, 3.14159265],
- [3.14159265, 3.14159265, -1.04719755],
- [3.14159265, -1.04719755, -1.04719755],
- [-3.14159265, -1.04719755, -3.14159265],
- [-3.14159265, 3.14159265, -3.14159265],
- [-3.14159265, 3.14159265, 1.04719755],
- [1.04719755, 3.14159265, 1.04719755],
- [-3.14159265, -3.14159265, 1.04719755],
- [-3.14159265, -3.14159265, -3.14159265],
- [-3.14159265, 1.04719755, -3.14159265],
- [1.04719755, 1.04719755, -3.14159265],
- [3.14159265, 1.04719755, 3.14159265],
- [3.14159265, -3.14159265, 3.14159265],
+ [1.04719755, -1.04719755, 3.14159265],
+ [1.04719755, 3.14159265, 3.14159265],
+ [-3.14159265, 3.14159265, 3.14159265],
+ [-3.14159265, 3.14159265, -1.04719755],
+ [3.14159265, -3.14159265, -3.14159265],
+ [3.14159265, 1.04719755, -3.14159265],
+ [-1.04719755, 1.04719755, -3.14159265],
+ [-1.04719755, 1.04719755, 1.04719755],
[-1.04719755, -3.14159265, 3.14159265],
- [-1.04719755, -3.14159265, -1.04719755],
+ [3.14159265, -3.14159265, 3.14159265],
+ [3.14159265, -3.14159265, -1.04719755],
+ [3.14159265, 1.04719755, -1.04719755],
+ [1.04719755, 1.04719755, 3.14159265],
+ [1.04719755, -3.14159265, 3.14159265],
+ [-3.14159265, -3.14159265, 3.14159265],
+ [-3.14159265, -3.14159265, -1.04719755],
]
)
@@ -77,10 +77,12 @@ def test_correct_sensitivity_indices(default_elementary_effects_iterator):
default_elementary_effects_iterator.core_run()
si = default_elementary_effects_iterator.si
- ref_mu = np.array([10.82845216, 0.0, -3.12439805])
- ref_mu_star = np.array([10.82845216, 7.87500000, 3.12439805])
- ref_mu_star_conf = np.array([5.49677290, 0.0, 5.26474752])
- ref_sigma = np.array([6.24879610, 9.09326673, 6.24879610])
+ ref_mu = np.array([13.952850214926777, 3.9375000000003153, 3.1243980516682517])
+ ref_mu_star = np.array([13.952850214926777, 7.875000000000625, 3.124398051669744])
+ ref_mu_star_conf = np.array(
+ [6.8719813972395294e-15, 3.0060819460414646e-15, 5.3587332489494415]
+ )
+ ref_sigma = np.array([3.24316904e-15, 7.87500000e00, 6.24879610e00])
np.testing.assert_allclose(si["mu"], ref_mu, 1e-07, 1e-07)
np.testing.assert_allclose(si["mu_star"], ref_mu_star, 1e-07, 1e-07)
diff --git a/tests/unit_tests/iterators/test_latin_hypercube_sampling.py b/tests/unit_tests/iterators/test_latin_hypercube_sampling.py
index aebbf884f..3818211c6 100644
--- a/tests/unit_tests/iterators/test_latin_hypercube_sampling.py
+++ b/tests/unit_tests/iterators/test_latin_hypercube_sampling.py
@@ -42,30 +42,49 @@ def fixture_default_lhs_iterator(
return my_iterator
+@pytest.fixture(name="ref_lhs_result_iterator")
+def fixture_ref_lhs_result_iterator():
+ """Reference results for the default LHS iterator."""
+ return np.array(
+ [
+ [0.5401856501906925],
+ [4.305418063074407],
+ [6.218626875992211],
+ [-7.341084114985484],
+ [6.2263184418260975],
+ [5.992809151839016],
+ [8.676959923988381],
+ [2.187257549384814],
+ [6.521135693744268],
+ [6.0112492830277136],
+ ]
+ )
+
+
def test_correct_sampling(default_lhs_iterator):
"""Test if we get correct samples."""
# np.set_printoptions(precision=10)
default_lhs_iterator.pre_run()
# check if mean and std match
- means_ref = np.array([-1.4546056001e-03, 5.4735307403e-03, 2.1664850171e00])
+ means_ref = np.array([3.5708636985e-04, 9.4366122545e-03, 2.2065845877e00])
np.testing.assert_allclose(
np.mean(default_lhs_iterator.samples, axis=0), means_ref, 1e-09, 1e-09
)
- std_ref = np.array([1.8157451781, 1.9914892803, 2.4282341125])
+ std_ref = np.array([1.8152930704, 1.9637665236, 2.6752150172])
np.testing.assert_allclose(np.std(default_lhs_iterator.samples, axis=0), std_ref, 1e-09, 1e-09)
# check if samples are identical too
- ref_sample_first_row = np.array([-2.7374616292, -0.6146554017, 1.3925529817])
+ ref_sample_first_row = np.array([-1.9557761949, 0.5130876432, 1.2407952238])
np.testing.assert_allclose(
default_lhs_iterator.samples[0, :], ref_sample_first_row, 1e-07, 1e-07
)
-def test_correct_results(default_lhs_iterator, ref_result_iterator):
+def test_correct_results(default_lhs_iterator, ref_lhs_result_iterator):
"""Test if we get correct results."""
default_lhs_iterator.pre_run()
default_lhs_iterator.core_run()
@@ -75,5 +94,5 @@ def test_correct_results(default_lhs_iterator, ref_result_iterator):
# check if samples are identical too
np.testing.assert_allclose(
- default_lhs_iterator.output["result"][0:10], ref_result_iterator, 1e-09, 1e-09
+ default_lhs_iterator.output["result"][0:10], ref_lhs_result_iterator, 1e-09, 1e-09
)
diff --git a/tests/unit_tests/utils/test_path_utils.py b/tests/unit_tests/utils/test_path_utils.py
index 70aad0765..d7dab8e6c 100644
--- a/tests/unit_tests/utils/test_path_utils.py
+++ b/tests/unit_tests/utils/test_path_utils.py
@@ -18,19 +18,28 @@
import pytest
+import queens
from queens.utils.path import (
PATH_TO_QUEENS_SOURCE,
- PATH_TO_ROOT,
check_if_path_exists,
create_folder_if_not_existent,
is_empty,
relative_path_from_queens_source,
- relative_path_from_root,
)
+from test_utils.path import PATH_TO_ROOT, relative_path_from_root
THIS_PATH = Path(__file__).parent
+def _write_pyproject(path, project_name):
+ """Write a minimal pyproject.toml with the given project name."""
+ path.mkdir(parents=True, exist_ok=True)
+ (path / "pyproject.toml").write_text(
+ f'[project]\nname = "{project_name}"\n',
+ encoding="utf-8",
+ )
+
+
@pytest.fixture(name="path_to_root")
def fixture_path_to_root():
"""Path to root."""
@@ -40,7 +49,7 @@ def fixture_path_to_root():
@pytest.fixture(name="path_to_queens_source")
def fixture_path_to_queens_source():
"""Path to QUEENS source."""
- return THIS_PATH.parents[2] / "src/queens"
+ return Path(queens.__file__).parent
def test_path_to_queens_source(path_to_queens_source):
diff --git a/tests/unit_tests/variational_distributions/test_variational_distributions.py b/tests/unit_tests/variational_distributions/test_variational_distributions.py
index a1d165fd9..a3c2694d9 100644
--- a/tests/unit_tests/variational_distributions/test_variational_distributions.py
+++ b/tests/unit_tests/variational_distributions/test_variational_distributions.py
@@ -248,7 +248,7 @@ def fixture_joint_reference_data(mean_field_reference_data, fullrank_reference_d
def fixture_mixture_reference_data(mean_field_reference_data):
"""Reference data for the mixture distribution."""
distribution_1 = mean_field_reference_data.distribution
- (mean_1, cov_1) = mean_field_reference_data.distribution_parameters
+ mean_1, cov_1 = mean_field_reference_data.distribution_parameters
variational_parameters_1 = mean_field_reference_data.variational_parameters
input_samples = mean_field_reference_data.input_samples
diff --git a/tools/dependencies/check_pyproject_dependency_integrity.py b/tools/dependencies/check_pyproject_dependency_integrity.py
new file mode 100644
index 000000000..7d6c52f3b
--- /dev/null
+++ b/tools/dependencies/check_pyproject_dependency_integrity.py
@@ -0,0 +1,341 @@
+#!/usr/bin/env python3
+#
+# SPDX-License-Identifier: LGPL-3.0-or-later
+# Copyright (c) 2024-2025, QUEENS contributors.
+#
+# This file is part of QUEENS.
+#
+# QUEENS is free software: you can redistribute it and/or modify it under the terms of the GNU
+# Lesser General Public License as published by the Free Software Foundation, either version 3 of
+# the License, or (at your option) any later version. QUEENS is distributed in the hope that it will
+# be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You
+# should have received a copy of the GNU Lesser General Public License along with QUEENS. If not,
+# see .
+#
+"""Check consistency between PEP-style and pixi dependency declarations."""
+
+import argparse
+import difflib
+import re
+import sys
+import tomllib
+from pathlib import Path
+from typing import Any
+
+META_EXTRA_PATTERN = re.compile(r"^queens\[(?P[A-Za-z0-9_.-]+)\]$")
+PACKAGE_NAME_PATTERN = re.compile(r"^\s*([A-Za-z0-9_.-]+)")
+
+
+def _load_pyproject(path: str) -> dict[str, Any]:
+ """Load pyproject.toml."""
+ with Path(path).open("rb") as file:
+ return tomllib.load(file)
+
+
+def _pixi_dependency_to_pep(name: str, spec: Any) -> str:
+ """Convert a pixi dependency entry to a PEP-style requirement string."""
+ if isinstance(spec, str):
+ return name if spec in {"", "*"} else f"{name}{spec}"
+
+ if isinstance(spec, dict):
+ if "git" in spec:
+ git_url = spec["git"]
+ if not str(git_url).startswith("git+"):
+ git_url = f"git+{git_url}"
+ return f"{name} @ {git_url}"
+ if "version" in spec:
+ version_spec = spec["version"]
+ return name if version_spec in {"", "*"} else f"{name}{version_spec}"
+ if "path" in spec:
+ editable = bool(spec.get("editable", False))
+ if editable:
+ return f"{name} @ editable:{spec['path']}"
+ return f"{name} @ path:{spec['path']}"
+
+ raise ValueError(f"Unsupported pixi dependency format for '{name}': {spec!r}")
+
+
+def _combine_pixi_dependencies(
+ dependencies: dict[str, Any] | None, pypi_dependencies: dict[str, Any] | None
+) -> list[tuple[str, Any]]:
+ """Combine conda and PyPI pixi dependencies (preserve order)."""
+ combined: list[tuple[str, Any]] = []
+ if dependencies:
+ combined.extend(dependencies.items())
+ if pypi_dependencies:
+ combined.extend(pypi_dependencies.items())
+ return combined
+
+
+def _diff_lines(expected: list[str], actual: list[str], name: str) -> str:
+ """Create a readable unified diff for two lists."""
+ return "\n".join(
+ difflib.unified_diff(
+ expected,
+ actual,
+ fromfile=f"{name} (PEP)",
+ tofile=f"{name} (pixi)",
+ lineterm="",
+ )
+ )
+
+
+def _extract_requirement_name(requirement: str) -> str:
+ """Extract the package name from a requirement string."""
+ match = PACKAGE_NAME_PATTERN.match(requirement)
+ if match is None:
+ raise ValueError(f"Could not extract package name from requirement {requirement!r}")
+ return match.group(1)
+
+
+def _compare_dependency_lists(
+ name: str,
+ pep_dependencies: list[str],
+ pixi_dependencies: list[tuple[str, Any]],
+ allowed_version_mismatches: set[str] | None = None,
+) -> list[str]:
+ """Compare PEP dependency list to pixi dependency list."""
+ allowed_version_mismatches = allowed_version_mismatches or set()
+ actual = [
+ _pixi_dependency_to_pep(dep_name, dep_spec) for dep_name, dep_spec in pixi_dependencies
+ ]
+
+ if len(pep_dependencies) != len(actual):
+ return [f"Dependency mismatch for '{name}':\n{_diff_lines(pep_dependencies, actual, name)}"]
+
+ for index, (pep_requirement, pixi_requirement) in enumerate(
+ zip(pep_dependencies, actual, strict=True)
+ ):
+ pep_name = _extract_requirement_name(pep_requirement)
+ pixi_name = _extract_requirement_name(pixi_requirement)
+ if pep_name != pixi_name:
+ return [
+ f"Dependency order/name mismatch for '{name}' at position {index}: "
+ f"{pep_name!r} != {pixi_name!r}\n{_diff_lines(pep_dependencies, actual, name)}"
+ ]
+ if pep_requirement != pixi_requirement and pep_name not in allowed_version_mismatches:
+ return [
+ f"Dependency mismatch for '{name}':\n{_diff_lines(pep_dependencies, actual, name)}"
+ ]
+
+ return []
+
+
+def _validate_base_dependencies(
+ pyproject: dict[str, Any], allowed_version_mismatches: set[str] | None = None
+) -> list[str]:
+ """Validate matching base dependencies between PEP and pixi."""
+ error_messages: list[str] = []
+
+ project = pyproject.get("project", {})
+ pixi_base_feature = pyproject.get("tool", {}).get("pixi", {}).get("feature", {}).get("base", {})
+ pixi_dependencies = pixi_base_feature.get("dependencies", {})
+ pixi_pypi_dependencies = pixi_base_feature.get("pypi-dependencies", {})
+
+ ordered_conda = list(pixi_dependencies.items())
+
+ if not ordered_conda:
+ return ["[tool.pixi.feature.base] is empty; expected at least python and pip."]
+
+ if ordered_conda[0][0] != "python":
+ error_messages.append(
+ "The first entry in [tool.pixi.feature.base.dependencies] must be 'python'."
+ )
+ else:
+ requires_python = project.get("requires-python")
+ if ordered_conda[0][1] != requires_python:
+ error_messages.append(
+ "Mismatch between project.requires-python and "
+ "tool.pixi.feature.base.dependencies.python: "
+ f"{requires_python!r} != {ordered_conda[0][1]!r}"
+ )
+
+ if len(ordered_conda) < 2 or ordered_conda[1][0] != "pip":
+ error_messages.append(
+ "The second entry in [tool.pixi.feature.base.dependencies] must be 'pip'."
+ )
+
+ combined = _combine_pixi_dependencies(pixi_dependencies, pixi_pypi_dependencies)
+ if not combined:
+ return error_messages
+
+ stripped_combined = [
+ (name, spec) for name, spec in combined if name not in {"python", "pip", "queens"}
+ ]
+ pep_dependencies = project.get("dependencies", [])
+ error_messages.extend(
+ _compare_dependency_lists(
+ "project.dependencies",
+ pep_dependencies,
+ stripped_combined,
+ allowed_version_mismatches,
+ )
+ )
+
+ return error_messages
+
+
+def _is_meta_optional_dependency(requirements: list[str]) -> bool:
+ """Return whether an optional dependency group is a composed meta-extra."""
+ return bool(requirements) and all(
+ META_EXTRA_PATTERN.fullmatch(requirement) for requirement in requirements
+ )
+
+
+def _validate_meta_optional_dependency(
+ name: str,
+ requirements: list[str],
+ optional_dependencies: dict[str, list[str]],
+ pixi_features: dict[str, Any],
+) -> list[str]:
+ """Validate a composed optional dependency such as 'all'."""
+ error_messages: list[str] = []
+ referenced_extras = [
+ match.group("extra")
+ for requirement in requirements
+ if (match := META_EXTRA_PATTERN.fullmatch(requirement))
+ ]
+
+ for referenced_extra in referenced_extras:
+ if referenced_extra not in optional_dependencies:
+ error_messages.append(
+ f"Meta optional dependency '{name}' references unknown extra '{referenced_extra}'."
+ )
+ if referenced_extra not in pixi_features:
+ error_messages.append(
+ f"Meta optional dependency '{name}' references '{referenced_extra}', but no "
+ f"[tool.pixi.feature.{referenced_extra}] exists."
+ )
+
+ return error_messages
+
+
+def _validate_feature_groups(
+ pyproject: dict[str, Any], allowed_version_mismatches: set[str] | None = None
+) -> list[str]:
+ """Validate dependency groups and optional dependencies against pixi.
+
+ For each dependency group and each optional-depedencies group a pixi
+ feature with identical requirements should exist.
+ """
+ error_messages: list[str] = []
+ pep_names: list[str] = []
+
+ dependency_groups = pyproject.get("dependency-groups", {})
+ optional_dependencies = pyproject.get("project", {}).get("optional-dependencies", {})
+ pixi_features = pyproject.get("tool", {}).get("pixi", {}).get("feature", {})
+
+ for name, pep_dependencies in dependency_groups.items():
+ pep_names.append(name)
+ feature = pixi_features.get(name)
+ if feature is None:
+ error_messages.append(
+ f"Missing [tool.pixi.feature.{name}] for dependency group '{name}'."
+ )
+ continue
+ pixi_dependencies_combined = _combine_pixi_dependencies(
+ feature.get("dependencies"),
+ feature.get("pypi-dependencies"),
+ )
+ error_messages.extend(
+ _compare_dependency_lists(
+ f"dependency-groups.{name}",
+ pep_dependencies,
+ pixi_dependencies_combined,
+ allowed_version_mismatches,
+ )
+ )
+
+ for name, pep_dependencies in optional_dependencies.items():
+ if _is_meta_optional_dependency(pep_dependencies):
+ error_messages.extend(
+ _validate_meta_optional_dependency(
+ name,
+ pep_dependencies,
+ optional_dependencies,
+ pixi_features,
+ )
+ )
+ continue
+
+ pep_names.append(name)
+ feature = pixi_features.get(name)
+ if feature is None:
+ error_messages.append(
+ f"Missing [tool.pixi.feature.{name}] for optional dependency group '{name}'."
+ )
+ continue
+ pixi_dependencies_combined = _combine_pixi_dependencies(
+ feature.get("dependencies"),
+ feature.get("pypi-dependencies"),
+ )
+ error_messages.extend(
+ _compare_dependency_lists(
+ f"project.optional-dependencies.{name}",
+ pep_dependencies,
+ pixi_dependencies_combined,
+ allowed_version_mismatches,
+ )
+ )
+
+ # for each feature there should either be a dependency group or an optional dependency group
+ # except for some special features:
+ # 1. the base feature is covered by the project.dependencies
+ special_exception_features: list[str] = ["base"]
+ for feature_name in pixi_features.keys():
+ if feature_name in pep_names or feature_name in special_exception_features:
+ continue
+ error_messages.append(
+ f"Missing either a pep dependency group or optional dependency '{feature_name}' "
+ f"for the pixi feature [tool.pixi.feature.{feature_name}]."
+ ""
+ )
+
+ return error_messages
+
+
+def main() -> int:
+ """Validate pyproject.toml integrity."""
+ parser = argparse.ArgumentParser(
+ description="Check consistency between PEP-style and pixi dependency declarations."
+ )
+ parser.add_argument("--path", default="pyproject.toml", help="Path to pyproject.toml")
+ parser.add_argument(
+ "--allow-version-mismatch",
+ action="append",
+ default=None,
+ help=(
+ "Package name for which version mismatches are allowed as long as the package name "
+ "and position are identical between the PEP and pixi declarations."
+ ),
+ )
+ args = parser.parse_args()
+
+ try:
+ pyproject = _load_pyproject(args.path)
+ except (OSError, tomllib.TOMLDecodeError) as error:
+ print(f"Failed to load {args.path}: {error}", file=sys.stderr)
+ return 2
+
+ allowed_version_mismatches = set(args.allow_version_mismatch or [])
+
+ error_messages = []
+ error_messages.extend(_validate_base_dependencies(pyproject, allowed_version_mismatches))
+ error_messages.extend(_validate_feature_groups(pyproject, allowed_version_mismatches))
+
+ if not error_messages:
+ print(
+ "Dependency declarations in pyproject.toml are consistent "
+ "between PEP and pixi sections."
+ )
+ return 0
+
+ print("Dependency integrity check failed:\n", file=sys.stderr)
+ for error_message in error_messages:
+ print(f"- {error_message}\n", file=sys.stderr)
+ return 1
+
+
+if __name__ == "__main__":
+ raise SystemExit(main())
diff --git a/tools/dependencies/diff_pyproject_dependency_declarations.py b/tools/dependencies/diff_pyproject_dependency_declarations.py
new file mode 100644
index 000000000..78328e1e2
--- /dev/null
+++ b/tools/dependencies/diff_pyproject_dependency_declarations.py
@@ -0,0 +1,81 @@
+#!/usr/bin/env python3
+#
+# SPDX-License-Identifier: LGPL-3.0-or-later
+# Copyright (c) 2024-2025, QUEENS contributors.
+#
+# This file is part of QUEENS.
+#
+# QUEENS is free software: you can redistribute it and/or modify it under the terms of the GNU
+# Lesser General Public License as published by the Free Software Foundation, either version 3 of
+# the License, or (at your option) any later version. QUEENS is distributed in the hope that it will
+# be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You
+# should have received a copy of the GNU Lesser General Public License along with QUEENS. If not,
+# see .
+#
+"""Diff dependency-related pyproject.toml declarations between two git refs."""
+
+import argparse
+import difflib
+import json
+import subprocess
+import sys
+import tomllib
+from typing import Any
+
+
+def _load_pyproject_sections(ref: str, path: str) -> dict[str, Any]:
+ """Load relevant dependency declarations from a git ref."""
+ content = subprocess.check_output(["git", "show", f"{ref}:{path}"], text=False)
+ parsed = tomllib.loads(content.decode("utf-8"))
+ return {
+ "project.dependencies": parsed.get("project", {}).get("dependencies", []),
+ "dependency-groups": parsed.get("dependency-groups", {}),
+ "project.optional-dependencies": parsed.get("project", {}).get("optional-dependencies", {}),
+ "tool.pixi.workspace": parsed.get("tool", {}).get("pixi", {}).get("workspace", {}),
+ "tool.pixi.dependencies": parsed.get("tool", {}).get("pixi", {}).get("dependencies", {}),
+ "tool.pixi.pypi-dependencies": parsed.get("tool", {})
+ .get("pixi", {})
+ .get("pypi-dependencies", {}),
+ "tool.pixi.feature": parsed.get("tool", {}).get("pixi", {}).get("feature", {}),
+ }
+
+
+def main() -> int:
+ """Run the diff and return a status code."""
+ parser = argparse.ArgumentParser(
+ description="Compare dependency-related pyproject.toml declarations between two refs."
+ )
+ parser.add_argument("--base-ref", required=True, help="Base git ref")
+ parser.add_argument("--head-ref", default="HEAD", help="Head git ref")
+ parser.add_argument("--path", default="pyproject.toml", help="Path to pyproject.toml")
+ args = parser.parse_args()
+
+ try:
+ base_content = _load_pyproject_sections(args.base_ref, args.path)
+ head_content = _load_pyproject_sections(args.head_ref, args.path)
+ except subprocess.CalledProcessError as error:
+ print(error.stderr.decode("utf-8") if error.stderr else str(error), file=sys.stderr)
+ return 2
+
+ base_json = json.dumps(base_content, indent=2, sort_keys=True).splitlines()
+ head_json = json.dumps(head_content, indent=2, sort_keys=True).splitlines()
+ diff = list(
+ difflib.unified_diff(
+ base_json,
+ head_json,
+ fromfile=f"{args.base_ref}:{args.path}",
+ tofile=f"{args.head_ref}:{args.path}",
+ lineterm="",
+ )
+ )
+
+ if not diff:
+ return 0
+
+ print("\n".join(diff))
+ return 1
+
+
+if __name__ == "__main__":
+ raise SystemExit(main())
diff --git a/tutorial-requirements.in b/tutorial-requirements.in
deleted file mode 100644
index 91de3b7a9..000000000
--- a/tutorial-requirements.in
+++ /dev/null
@@ -1,7 +0,0 @@
-# This file contains all the requirements for QUEENS Tutorials.
-
-# Do not fix the version of a package if not strictly necessary. We use pip-tools in order to create a requirements.txt file where the version of the different packages are fixed to the latest stable version w.r.t. QUEENS. From time to time pip-tools is used to upgrade to the newer available versions.
-
-# Tutorials
-scikit-fem
-pyvista
diff --git a/tutorial-requirements.txt b/tutorial-requirements.txt
deleted file mode 100644
index 8b88b0933..000000000
--- a/tutorial-requirements.txt
+++ /dev/null
@@ -1,107 +0,0 @@
-#
-# This file is autogenerated by pip-compile with Python 3.11
-# by the following command:
-#
-# pip-compile --constraint=requirements.txt --output-file=tutorial-requirements.txt tutorial-requirements.in
-#
-certifi==2024.8.30
- # via
- # -c requirements.txt
- # requests
-charset-normalizer==3.4.0
- # via
- # -c requirements.txt
- # requests
-contourpy==1.3.0
- # via
- # -c requirements.txt
- # matplotlib
-cycler==0.12.1
- # via
- # -c requirements.txt
- # matplotlib
-fonttools==4.54.1
- # via
- # -c requirements.txt
- # matplotlib
-idna==3.10
- # via
- # -c requirements.txt
- # requests
-kiwisolver==1.4.7
- # via
- # -c requirements.txt
- # matplotlib
-matplotlib==3.9.2
- # via
- # -c requirements.txt
- # pyvista
- # vtk
-numpy==1.26.4
- # via
- # -c requirements.txt
- # contourpy
- # matplotlib
- # pyvista
- # scikit-fem
- # scipy
-packaging==24.1
- # via
- # -c requirements.txt
- # matplotlib
- # pooch
-pillow==11.0.0
- # via
- # -c requirements.txt
- # matplotlib
- # pyvista
-platformdirs==4.3.6
- # via
- # -c requirements.txt
- # pooch
-pooch==1.8.2
- # via
- # -c requirements.txt
- # pyvista
-pyparsing==3.2.0
- # via
- # -c requirements.txt
- # matplotlib
-python-dateutil==2.9.0.post0
- # via
- # -c requirements.txt
- # matplotlib
-pyvista==0.44.1
- # via
- # -c requirements.txt
- # -r tutorial-requirements.in
-requests==2.32.3
- # via
- # -c requirements.txt
- # pooch
-scikit-fem==11.0.0
- # via -r tutorial-requirements.in
-scipy==1.14.1
- # via
- # -c requirements.txt
- # scikit-fem
-scooby==0.10.0
- # via
- # -c requirements.txt
- # pyvista
-six==1.16.0
- # via
- # -c requirements.txt
- # python-dateutil
-typing-extensions==4.12.2
- # via
- # -c requirements.txt
- # pyvista
-urllib3==2.2.3
- # via
- # -c requirements.txt
- # requests
-vtk==9.3.1
- # via
- # -c requirements.txt
- # pyvista
diff --git a/tutorials/2_uncertainty_propagation_and_quantification.ipynb b/tutorials/2_uncertainty_propagation_and_quantification.ipynb
index 0ce8d9142..d2376d4df 100644
--- a/tutorials/2_uncertainty_propagation_and_quantification.ipynb
+++ b/tutorials/2_uncertainty_propagation_and_quantification.ipynb
@@ -477,7 +477,7 @@
" pdf = kde.pdf(u)\n",
" pdf[0] = 0\n",
" pdf[-1] = 0\n",
- " pdf /= np.trapz(pdf, u)\n",
+ " pdf /= np.trapezoid(pdf, u)\n",
" axes[0].plot(mesh.p[0, index[i]], mesh.p[1, index[i]], \"ks\")\n",
" c_text = f\"({mesh.p.T[index[i]][0]}, {mesh.p.T[index[i]][1]})\"\n",
" axes[0].text(mesh.p[0, index[i]], mesh.p[1, index[i]] + 0.02, c_text, ha=\"center\")\n",
diff --git a/tutorials/3_orchestrating_4c_simulations/3_orchestrating_4c_simulations.ipynb b/tutorials/3_orchestrating_4c_simulations/3_orchestrating_4c_simulations.ipynb
index 33fb940e7..6b11c296c 100644
--- a/tutorials/3_orchestrating_4c_simulations/3_orchestrating_4c_simulations.ipynb
+++ b/tutorials/3_orchestrating_4c_simulations/3_orchestrating_4c_simulations.ipynb
@@ -60,13 +60,13 @@
"source": [
"# Define some paths\n",
"from pathlib import Path\n",
+ "import queens.utils.config_directories as config_directories\n",
"from tutorials.utils import find_repo_root\n",
"\n",
- "home = Path.home()\n",
"NOTEBOOK_DIR = Path.cwd()\n",
"\n",
"QUEENS_BASE_DIR = find_repo_root(NOTEBOOK_DIR)\n",
- "QUEENS_EXPERIMENTS_DIR = home / \"queens-experiments\"\n",
+ "QUEENS_EXPERIMENTS_DIR = config_directories.base_directory()\n",
"TUTORIAL_DIR = QUEENS_BASE_DIR / \"tutorials\" / \"3_orchestrating_4c_simulations\""
]
},
@@ -145,9 +145,9 @@
"\n",
"As mentioned before, for 4C, these are already provided by the QUEENS community.\n",
"\n",
- "> Note: This tutorial assumes a working local 4C installation. Please create a symbolic link to your 4C build directory and store it under `/config/4C_build` via this command:\n",
+ "> Note: This tutorial assumes a working local 4C installation. Please create a symbolic link to your 4C build directory and store it under `/config/4C_build` via this command:\n",
"> ```\n",
- "> ln -s /config/4C_build\n",
+ "> ln -s /config/4C_build\n",
"> ```"
]
},
@@ -453,11 +453,13 @@
"n_grid_points_young = 4\n",
"n_grid_points_poisson_ratio = 21\n",
"\n",
+ "grid_experiment_name = f\"grid_{n_grid_points_young}x{n_grid_points_poisson_ratio}\"\n",
+ "\n",
"grid_output = None\n",
"if __name__ == \"__main__\":\n",
" Path(\"grid\").mkdir(exist_ok=True)\n",
" with GlobalSettings(\n",
- " experiment_name=f\"grid_{n_grid_points_young}x{n_grid_points_poisson_ratio}\",\n",
+ " experiment_name=grid_experiment_name,\n",
" output_dir=\"grid\",\n",
" ) as gs:\n",
" scheduler = Local(\n",
@@ -566,7 +568,7 @@
"\n",
"Since we are doing our computations locally, we use a `Local` scheduler. However, there is also a `Cluster` scheduler which is able to submit jobs on high performance clusters using `SLURM`, `PBS` etc.\n",
"\n",
- "The scheduler also creates the required folder structure for an experiment. The default value is set to `~/queens-experiments/`. For the grid iterator, it looks like this:\n",
+ "The scheduler also creates the required folder structure for an experiment. The default base directory is given by `config_directories.base_directory()`. For the grid iterator, it looks like this:\n",
"```bash\n",
"grid_4x21/\n",
"├── 0\n",
@@ -617,7 +619,7 @@
" for j in range(2):\n",
" plotter.subplot(i, j)\n",
" job_id = job_ids[i * 2 + j]\n",
- " file_path = QUEENS_EXPERIMENTS_DIR / f\"grid_4x21/{job_id}/output/output-vtk-files/structure-00001.pvtu\"\n",
+ " file_path = QUEENS_EXPERIMENTS_DIR / f\"{grid_experiment_name}/{job_id}/output/output-vtk-files/structure-00001.pvtu\"\n",
" plotter.add_text(f\"Job: {job_id}\")\n",
" plot_results(file_path, plotter, f\"E={grid_points[job_id][0]}, nu={np.round(grid_points[job_id][1],decimals=4)}: Cauchy stress zz\\n\",)\n",
" plotter.show()"
diff --git a/tutorials/3_orchestrating_4c_simulations/plot_results.py b/tutorials/3_orchestrating_4c_simulations/plot_results.py
index 11a720716..acfdfa87a 100644
--- a/tutorials/3_orchestrating_4c_simulations/plot_results.py
+++ b/tutorials/3_orchestrating_4c_simulations/plot_results.py
@@ -13,7 +13,10 @@
# see .
#
"""Plotting functions for tutorial 3."""
+
import os
+from pathlib import Path
+from typing import Any, cast
os.environ["PYVISTA_OFF_SCREEN"] = "true"
os.environ["VTK_DEFAULT_RENDER_WINDOW_OFFSCREEN"] = "1"
@@ -21,7 +24,7 @@
import pyvista as pv
-fe_mesh = pv.read("beam_coarse.exo")
+fe_mesh = cast(pv.DataSet, cast(Any, pv.read(Path(__file__).with_name("beam_coarse.exo"))))
def plot_results(
diff --git a/tutorials/4_quantifying_uncertainty_due_to_heterogeneous_material_fields/4_quantifying_uncertainty_due_to_heterogeneous_material_fields.ipynb b/tutorials/4_quantifying_uncertainty_due_to_heterogeneous_material_fields/4_quantifying_uncertainty_due_to_heterogeneous_material_fields.ipynb
index 2e84e48fc..23d943eee 100644
--- a/tutorials/4_quantifying_uncertainty_due_to_heterogeneous_material_fields/4_quantifying_uncertainty_due_to_heterogeneous_material_fields.ipynb
+++ b/tutorials/4_quantifying_uncertainty_due_to_heterogeneous_material_fields/4_quantifying_uncertainty_due_to_heterogeneous_material_fields.ipynb
@@ -111,6 +111,7 @@
"source": [
"# Define some paths\n",
"from pathlib import Path\n",
+ "import queens.utils.config_directories as config_directories\n",
"\n",
"try:\n",
" from tutorials.utils import find_repo_root\n",
@@ -121,11 +122,10 @@
" sys.path.insert(0, str(REPO_ROOT))\n",
" from tutorials.utils import find_repo_root\n",
"\n",
- "home = Path.home()\n",
"NOTEBOOK_DIR = Path.cwd()\n",
"\n",
"QUEENS_BASE_DIR = find_repo_root(NOTEBOOK_DIR)\n",
- "QUEENS_EXPERIMENTS_DIR = home / \"queens-experiments\"\n",
+ "QUEENS_EXPERIMENTS_DIR = config_directories.base_directory()\n",
"INPUT_DIR = QUEENS_BASE_DIR / \"tests\" / \"input_files\" / \"third_party\" / \"fourc\""
]
},
@@ -212,9 +212,9 @@
"source": [
"As we can see, we set the material parameter to be constant in each element. We can think about this random field as a domain that has some type of defect where the mechanical properties are different.\n",
"\n",
- "> Note: This tutorial assumes a working local 4C installation. Please create a symbolic link to your 4C build directory and store it under `/config/4C_build` via this command:\n",
+ "> Note: This tutorial assumes a working local 4C installation. Please create a symbolic link to your 4C build directory and store it under `/config/4C_build` via this command:\n",
"> ```\n",
- "> ln -s /config/4C_build\n",
+ "> ln -s /config/4C_build\n",
"> ```"
]
},
diff --git a/tutorials/4_quantifying_uncertainty_due_to_heterogeneous_material_fields/plot_input_random_field.py b/tutorials/4_quantifying_uncertainty_due_to_heterogeneous_material_fields/plot_input_random_field.py
index ba7e4e7dc..83c31d42d 100644
--- a/tutorials/4_quantifying_uncertainty_due_to_heterogeneous_material_fields/plot_input_random_field.py
+++ b/tutorials/4_quantifying_uncertainty_due_to_heterogeneous_material_fields/plot_input_random_field.py
@@ -13,6 +13,9 @@
# see .
#
"""Plotting functions for tutorial 4."""
+
+from typing import Any, cast
+
import matplotlib.pyplot as plt
import numpy as np
import pyvista as pv
@@ -29,7 +32,7 @@ def plot_field(file_path: str, field: np.ndarray, ax: Axes3D, color_bar_title: s
ax: 3D Matplotlib axis to plot into.
color_bar_title: Label shown next to the color bar.
"""
- mesh = pv.read(file_path)[0][0]
+ mesh = cast(pv.DataSet, cast(Any, pv.read(file_path))[0][0])
mesh.cell_data["field"] = field
cell_values = field
diff --git a/tutorials/5_grid_iterator_4c_remote/5_grid_iterator_4c_remote.ipynb b/tutorials/5_grid_iterator_4c_remote/5_grid_iterator_4c_remote.ipynb
new file mode 100644
index 000000000..3a0946df6
--- /dev/null
+++ b/tutorials/5_grid_iterator_4c_remote/5_grid_iterator_4c_remote.ipynb
@@ -0,0 +1,346 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "id": "0",
+ "metadata": {},
+ "source": [
+ "# 5. Remote Computing with 4C\n",
+ "\n",
+ "In this tutorial, you will use the `Grid` iterator to probe the response surface of a 4C model.\n",
+ "The 4C model simulates the uniaxial tensile test of a cube with variable traction forces on one of the surfaces.\n",
+ "The 4C simulations will run remotely on a cluster. \n",
+ "\n",
+ "> **Disclaimer:**\n",
+ "> You will only be able to execute the following notebook if you have access to a remote computing resource and fill in the placeholders accordingly."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "1",
+ "metadata": {},
+ "source": [
+ "## Set up the remote machine\n",
+ "\n",
+ "Remote computing with QUEENS is enabled via SSH port forwarding, so a few initial steps are necessary:\n",
+ "\n",
+ "1. Make sure both your local and your remote machine have an SSH key under `~/.ssh/id_rsa.pub`.\n",
+ " In case either of them does not have one yet, you can generate an SSH key on the respective machine via:\n",
+ "\n",
+ " ```bash\n",
+ " # execute on local or remote machine:\n",
+ " ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa\n",
+ " ```\n",
+ "\n",
+ "1. Connecting via SSH from the local to the remote machine needs to work without a password. \n",
+ " Therefore, you need to copy the public key of the local machine to the `authorized_keys` file of the remote machine:\n",
+ "\n",
+ " ```bash\n",
+ " # execute on local machine:\n",
+ " ssh-copy-id -i ~/.ssh/id_rsa.pub @\n",
+ " ```\n",
+ "\n",
+ "1. To enable passwordless access to the localhost on the remote machine itself, you also need to copy the ssh-key of the remote machine to its `authorized_keys` file:\n",
+ "\n",
+ " ```bash\n",
+ " # execute on remote machine:\n",
+ " cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys\n",
+ " ```\n",
+ "\n",
+ "> **Troubleshooting**:\n",
+ "> If you are still asked for your password after these steps, verify that:\n",
+ "> \n",
+ "> - The `~/.ssh` directory has permissions `700`.\n",
+ "> To set the permissions correctly, execute `chmod -R 700 ~/.ssh`.\n",
+ "> - The home directory on your remote machine has permissions `700`.\n",
+ "> To set the permissions correctly, execute `chmod 700 ~` on the remote machine.\n",
+ "\n",
+ "4. Clone the QUEENS repository on the remote machine.\n",
+ "\n",
+ "5. Install the same QUEENS environment that you are using on your local machine also on the remote machine (see [here](https://queens-py.github.io/queens/introduction.html#installation)). You will later have to pass the path to its python executable via `remote_python`.\n",
+ "\n",
+ "> **Subclassing**:\n",
+ "> If you want to run QUEENS remotely with custom classes that inherit from QUEENS objects, you need to ensure that these classes are available in the remote QUEENS environment.\n",
+ "> You can do this in one of the following ways:\n",
+ ">\n",
+ "> 1. *Recommended:* Include the custom classes in the local QUEENS repository. They will be automatically copied to the remote QUEENS repository at the start of the QUEENS runs.\n",
+ "> 2. Manually synchronize the custom classes between your local and your remote machine, e.g., via an additional repository and installing this repository in the remote QUEENS environment."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "2",
+ "metadata": {},
+ "source": [
+ "## Set up the QUEENS experiment\n",
+ "\n",
+ "In the following section, we will set up the QUEENS experiment for cluster usage:\n",
+ "\n",
+ "1. To evaluate 4C remotely on a cluster, use a `Jobscript` driver instead of a `Fourc` driver and adjust the paths:\n",
+ "\n",
+ " - `input_templates`: The local path to your 4C input template. QUEENS will copy it to the remote machine for you.\n",
+ " - `jobscript_template`: The local path to your jobscript template. For inspiration, check out our templates under `templates/jobscripts/`.\n",
+ " - `executable`: The absolute path to the 4C executable on the remote machine."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "3",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "jobscript_driver_kwargs = {\n",
+ " \"jobscript_template\": \"\",\n",
+ " \"executable\": \"\",\n",
+ " \"extra_options\": {}, # optional\n",
+ "}"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "4",
+ "metadata": {},
+ "source": [
+ "\n",
+ "2. Switch to the `Cluster` scheduler and set up a `RemoteConnection` for it:\n",
+ " - `remote_python`: The absolute path to the Python executable of your QUEENS Python environment on the remote machine.\n",
+ " You can check your available environments via `conda info --envs`.\n",
+ " The path typically looks like `/home///envs/queens/bin/python`.\n",
+ " - `remote_queens_repository`: The absolute path to your QUEENS repository on the remote machine."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "5",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "remote_connection_kwargs = {\n",
+ " \"host\": \"\",\n",
+ " \"user\": \"\",\n",
+ " \"remote_python\": \"\", \n",
+ " \"remote_queens_repository\": \"\",\n",
+ " \"gateway\": None, # optional\n",
+ "}\n",
+ "cluster_scheduler_kwargs = {\n",
+ " \"workload_manager\": \"\", \n",
+ " \"queue\": \"\",\n",
+ " \"cluster_internal_address\": \"\",\n",
+ " \"experiment_base_dir\": None, # optional\n",
+ " \"job_script_prologue\": None, # optional list of commands executed before starting a worker\n",
+ "}"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "6",
+ "metadata": {},
+ "source": [
+ "### Run the example"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "7",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "experiment_name = \"grid_iterator_4c_remote\"\n",
+ "output_dir = \"./\""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "8",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from queens.data_processors import PvdFile\n",
+ "from queens.distributions import Uniform\n",
+ "from queens.drivers import Jobscript\n",
+ "from queens.global_settings import GlobalSettings\n",
+ "from queens.iterators import Grid\n",
+ "from queens.main import run_iterator\n",
+ "from queens.models import Simulation\n",
+ "from queens.parameters.parameters import Parameters\n",
+ "from queens.schedulers import Cluster\n",
+ "from queens.utils.remote_operations import RemoteConnection\n",
+ "from test_utils.path import relative_path_from_root\n",
+ "\n",
+ "with GlobalSettings(\n",
+ " experiment_name=experiment_name, output_dir=output_dir, debug=False\n",
+ ") as gs:\n",
+ " # Parameters parameterizing a Neumann BC\n",
+ " parameter_1 = Uniform(lower_bound=0.0, upper_bound=1.0)\n",
+ " parameter_2 = Uniform(lower_bound=0.0, upper_bound=1.0)\n",
+ " parameters = Parameters(parameter_1=parameter_1, parameter_2=parameter_2)\n",
+ "\n",
+ " # The data processor extracts the displacement vectors (with x, y, z component) of all nodes at \n",
+ " # the last time step of the simulation\n",
+ " data_processor = PvdFile(\n",
+ " field_name=\"displacement\",\n",
+ " file_name_identifier=\"*.pvd\",\n",
+ " file_options_dict={},\n",
+ " )\n",
+ "\n",
+ " # Establish an SSH connection to the cluster\n",
+ " remote_connection = RemoteConnection(**remote_connection_kwargs) \n",
+ " \n",
+ " scheduler = Cluster(\n",
+ " experiment_name,\n",
+ " walltime=\"00:10:00\", \n",
+ " remote_connection=remote_connection, \n",
+ " num_jobs=9,\n",
+ " min_jobs=1,\n",
+ " num_procs=1, \n",
+ " num_nodes=1,\n",
+ " **cluster_scheduler_kwargs,\n",
+ " )\n",
+ "\n",
+ " # The driver handles the actual evaluation of 4C\n",
+ " driver = Jobscript(\n",
+ " parameters=parameters,\n",
+ " data_processor=data_processor,\n",
+ " input_templates=relative_path_from_root(\n",
+ " \"tutorials/5_grid_iterator_4c_remote/solid_runtime_hex8.4C.yaml\"\n",
+ " ), \n",
+ " **jobscript_driver_kwargs,\n",
+ " )\n",
+ " \n",
+ " model = Simulation(scheduler, driver)\n",
+ " \n",
+ " # Analysis setup\n",
+ " grid_design = {\n",
+ " \"parameter_1\": {\n",
+ " \"num_grid_points\": 3,\n",
+ " \"axis_type\": \"lin\",\n",
+ " \"data_type\": \"FLOAT\",\n",
+ " },\n",
+ " \"parameter_2\": {\n",
+ " \"num_grid_points\": 3,\n",
+ " \"axis_type\": \"lin\",\n",
+ " \"data_type\": \"FLOAT\",\n",
+ " },\n",
+ " }\n",
+ " iterator = Grid(\n",
+ " model,\n",
+ " parameters,\n",
+ " global_settings=gs,\n",
+ " grid_design=grid_design,\n",
+ " result_description={\"write_results\": True, \"plot_results\": False},\n",
+ " )\n",
+ "\n",
+ " # Run the analysis\n",
+ " run_iterator(iterator, gs)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "9",
+ "metadata": {},
+ "source": [
+ "### Evaluate the results\n",
+ "\n",
+ "Look at the results and analyze them."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "10",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import numpy as np\n",
+ "from pathlib import Path\n",
+ "\n",
+ "from queens.utils.io import load_result\n",
+ "\n",
+ "# Load the results\n",
+ "result_file = Path(output_dir) / f\"{experiment_name}.pickle\"\n",
+ "results = load_result(result_file)\n",
+ "\n",
+ "# This yields the displacement components (x, y, z) for each of the 9 grid points on each node \n",
+ "# of each element \n",
+ "# (Here: 2 elements with 8 nodes each, the output is written for each element individually), \n",
+ "# so the resulting array is expected to have the shape (9, 16, 3)\n",
+ "raw_displacements = results[\"raw_output_data\"][\"result\"]\n",
+ "\n",
+ "# Compute the displacement magnitudes for each run on each node of each element.\n",
+ "# The resulting array has shape (9, 16).\n",
+ "point_wise_displacement_magnitudes = np.sqrt(np.sum(raw_displacements ** 2, axis=-1))\n",
+ "\n",
+ "# Finally, we compute the maximum displacement that was achieved in each run.\n",
+ "# The resulting array has shape (9,).\n",
+ "max_displacement_magnitude_per_run = np.max(point_wise_displacement_magnitudes, axis=1)\n",
+ "print(max_displacement_magnitude_per_run)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "11",
+ "metadata": {},
+ "source": [
+ "## Where do I find all the data on the cluster?\n",
+ "\n",
+ "The data is stored -- equivalently to the local runs -- in a folder with the following nomenclature: \n",
+ "`$HOME/queens-experiments//`\n",
+ "\n",
+ "For example, you can find the data of the first simulation of this queens experiment in the folder `$HOME/queens-experiments/grid_iterator_4c_remote/1`\n",
+ "\n",
+ "Feel free to take a look around and to find the logged 4C console output of one of the simulations.\n",
+ "\n",
+ "> **Hint:**\n",
+ "> If you would like to copy (parts of) the data from the remote to the local machine, you can use the following command:\n",
+ ">\n",
+ "> `scheduler.copy_files_from_experiment_dir()`.\n",
+ ">\n",
+ "> Check out its documentation for more details."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "12",
+ "metadata": {},
+ "source": [
+ "## Lessons learned\n",
+ "\n",
+ "You have learned how to run 4C simulations remotely on a cluster:\n",
+ "\n",
+ "1. Use a `Jobscript` driver and ensure correct paths to the executables:\n",
+ " - `path_to_executable` refers to a path on the cluster.\n",
+ " - `input_template` refers to a local path, making it very easy to adjust the file.\n",
+ "1. Use a `Cluster` scheduler and supply all necessary options.\n",
+ "1. The location of the QUEENS data on the cluster is `$HOME/queens-experiments`."
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "queens",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.11.0"
+ },
+ "nbsphinx": {
+ "execute": "never"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/tutorials/5_grid_iterator_4c_remote/solid_runtime_hex8.4C.yaml b/tutorials/5_grid_iterator_4c_remote/solid_runtime_hex8.4C.yaml
new file mode 100644
index 000000000..b9c687c71
--- /dev/null
+++ b/tutorials/5_grid_iterator_4c_remote/solid_runtime_hex8.4C.yaml
@@ -0,0 +1,79 @@
+TITLE:
+ - "This is a simple test that tests the extrapolation of stresses from Gauss points to nodes for "
+ - "a hex8 discretization"
+PROBLEM TYPE:
+ PROBLEMTYPE: "Structure"
+IO:
+ OUTPUT_SPRING: true
+ STRUCT_STRESS: "Cauchy"
+ STRUCT_STRAIN: "GL"
+ VERBOSITY: "Standard"
+IO/RUNTIME VTK OUTPUT:
+ INTERVAL_STEPS: 1
+ OUTPUT_DATA_FORMAT: ascii
+IO/RUNTIME VTK OUTPUT/STRUCTURE:
+ OUTPUT_STRUCTURE: true
+ DISPLACEMENT: true
+ STRESS_STRAIN: true
+SOLVER 1:
+ SOLVER: "Superlu"
+ NAME: "Structure_Solver"
+STRUCTURAL DYNAMIC:
+ INT_STRATEGY: "Standard"
+ DYNAMICTYPE: "Statics"
+ TIMESTEP: 0.5
+ NUMSTEP: 2
+ MAXTIME: 1
+ TOLDISP: 1e-09
+ TOLRES: 1e-09
+ LOADLIN: true
+ LINEAR_SOLVER: 1
+STRUCT NOX/Printing:
+ Inner Iteration: false
+ Outer Iteration StatusTest: false
+MATERIALS:
+ - MAT: 1
+ MAT_Struct_StVenantKirchhoff:
+ YOUNG: 100
+ NUE: 0
+ DENS: 0
+FUNCT1:
+ - COMPONENT: 0
+ SYMBOLIC_FUNCTION_OF_SPACE_TIME: "(1+{{ parameter_1 }}*y+{{ parameter_2 }}*z)*t"
+DESIGN SURF NEUMANN CONDITIONS:
+ - E: 2
+ NUMDOF: 3
+ ONOFF: [1, 0, 0]
+ VAL: [10, 0, 0]
+ FUNCT: [1, 0, 0]
+DESIGN SURF DIRICH CONDITIONS:
+ - E: 1
+ NUMDOF: 3
+ ONOFF: [1, 1, 1]
+ VAL: [0, 0, 0]
+ FUNCT: [0, 0, 0]
+DSURF-NODE TOPOLOGY:
+ - "NODE 3 DSURFACE 1"
+ - "NODE 1 DSURFACE 1"
+ - "NODE 4 DSURFACE 1"
+ - "NODE 2 DSURFACE 1"
+ - "NODE 10 DSURFACE 2"
+ - "NODE 12 DSURFACE 2"
+ - "NODE 9 DSURFACE 2"
+ - "NODE 11 DSURFACE 2"
+NODE COORDS:
+ - "NODE 1 COORD 0.0 0.0 0.0"
+ - "NODE 2 COORD 0.0 1.0 0.0"
+ - "NODE 3 COORD 0.0 0.0 1.0"
+ - "NODE 4 COORD 0.0 1.0 1.0"
+ - "NODE 5 COORD 1.0 0.0 0.0"
+ - "NODE 6 COORD 1.0 1.0 0.0"
+ - "NODE 7 COORD 1.0 0.0 1.0"
+ - "NODE 8 COORD 1.0 1.0 1.0"
+ - "NODE 9 COORD 2.0 0.0 0.0"
+ - "NODE 10 COORD 2.0 1.0 0.0"
+ - "NODE 11 COORD 2.0 0.0 1.0"
+ - "NODE 12 COORD 2.0 1.0 1.0"
+STRUCTURE ELEMENTS:
+ - "1 SOLID HEX8 1 5 6 2 3 7 8 4 MAT 1 KINEM nonlinear"
+ - "2 SOLID HEX8 5 9 10 6 7 11 12 8 MAT 1 KINEM nonlinear"