From 60bfca75aa1b50ad72e4fa2a1b386476949c8f52 Mon Sep 17 00:00:00 2001 From: Dylan McReynolds Date: Mon, 30 Mar 2026 13:04:32 -0700 Subject: [PATCH 01/31] change name of project --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 1a3fed6..932345b 100755 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,8 +3,8 @@ requires = ["setuptools>=64", "wheel"] build-backend = "setuptools.build_meta" [project] -name = "als_tiled" -version = "0.2.8a1" +name = "splash_tiled" +version = "0.1.0" description = "A tiled-based data management system for the Advanced Light Source" readme = "README.md" authors = [ From 9622edefbedb934da7a02e5bde40c2c885bdde19 Mon Sep 17 00:00:00 2001 From: Dylan McReynolds Date: Mon, 30 Mar 2026 13:13:00 -0700 Subject: [PATCH 02/31] support python 3.13 --- .github/workflows/ci-cd.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index 2b02a61..bfb4915 100755 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -53,7 +53,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ["3.11", "3.12"] + python-version: ["3.11", "3.12", "3.13"] steps: - uses: actions/checkout@v4 @@ -70,7 +70,7 @@ jobs: - name: Run tests with pytest run: | - pytest --cov=als_tiled --cov-report=xml --cov-report=term-missing + pytest --cov=splash_tiled --cov-report=xml --cov-report=term-missing - name: Upload coverage to Codecov uses: codecov/codecov-action@v3 From fe7b52edc0af16e9f732c67f4ba65830bc6bac0d Mon Sep 17 00:00:00 2001 From: Dylan McReynolds Date: Mon, 30 Mar 2026 13:13:48 -0700 Subject: [PATCH 03/31] rename als_tiled to splash_tiled --- .mypy.ini | 2 +- Makefile | 6 ++-- README.md | 26 ++++++++-------- example_configs/bl733/config.yaml | 8 ++--- pixi.toml | 30 +++++++++++++++++++ pyproject.toml | 12 ++++---- src/{als_tiled => splash_tiled}/__init__.py | 0 .../bl733/__init__.py | 0 .../bl733/adapters/__init__.py | 0 .../bl733/adapters/edf.py | 2 +- .../bl733/adapters/gb.py | 2 +- .../bl733/adapters/metadata.py | 0 tests/bl733/conftest.py | 2 +- tests/bl733/test_edf.py | 6 ++-- tests/bl733/test_gb.py | 4 +-- tests/conftest.py | 2 +- 16 files changed, 66 insertions(+), 36 deletions(-) create mode 100644 pixi.toml rename src/{als_tiled => splash_tiled}/__init__.py (100%) rename src/{als_tiled => splash_tiled}/bl733/__init__.py (100%) rename src/{als_tiled => splash_tiled}/bl733/adapters/__init__.py (100%) rename src/{als_tiled => splash_tiled}/bl733/adapters/edf.py (96%) rename src/{als_tiled => splash_tiled}/bl733/adapters/gb.py (98%) rename src/{als_tiled => splash_tiled}/bl733/adapters/metadata.py (100%) diff --git a/.mypy.ini b/.mypy.ini index 6e4c0ac..59c91fd 100644 --- a/.mypy.ini +++ b/.mypy.ini @@ -5,7 +5,7 @@ ignore_errors = True ignore_missing_imports = True disallow_untyped_defs = False -[mypy-als_tiled.bl733.adapters.*] +[mypy-splash_tiled.bl733.adapters.*] ignore_errors = False ignore_missing_imports = False check_untyped_defs = True diff --git a/Makefile b/Makefile index 24fac38..6e47a08 100755 --- a/Makefile +++ b/Makefile @@ -22,7 +22,7 @@ install-dev: pre-commit install test: - pytest --cov=als_tiled --cov-report=term-missing + pytest --cov=splash_tiled --cov-report=term-missing lint: flake8 src tests @@ -45,7 +45,7 @@ build: python -m build docker-build: - docker build -t als_tiled -f Containerfile . + docker build -t splash_tiled -f Containerfile . docker-run: - docker run -p 8000:8000 als_tiled + docker run -p 8000:8000 splash_tiled diff --git a/README.md b/README.md index 125de2a..a1af854 100755 --- a/README.md +++ b/README.md @@ -20,18 +20,18 @@ This project provides a specialized Tiled server configuration for managing scie ```bash # Build the Docker image -docker build -t als_tiled -f Containerfile . +docker build -t splash_tiled -f Containerfile . # Run the container -docker run -p 8000:8000 als_tiled +docker run -p 8000:8000 splash_tiled ``` ### Local Development ```bash # Clone the repository -git clone https://github.com/als-lbl/als_tiled.git -cd als_tiled +git clone https://github.com/als-lbl/splash_tiled.git +cd splash_tiled # Install in development mode pip install -e .[dev] @@ -73,8 +73,8 @@ This installs additional development dependencies including: 1. Clone the repository: ```bash - git clone https://github.com/als-lbl/als_tiled.git - cd als_tiled + git clone https://github.com/als-lbl/splash_tiled.git + cd splash_tiled ``` 2. Install development dependencies: @@ -94,7 +94,7 @@ This installs additional development dependencies including: pytest # Run tests with coverage -pytest --cov=als_tiled +pytest --cov=splash_tiled # Run specific test file pytest tests/test_main.py @@ -122,20 +122,20 @@ mypy src ### Building the Image ```bash -docker build -t als_tiled -f .Containerfile . +docker build -t splash_tiled -f .Containerfile . ``` ### Running the Container ```bash # Basic run -docker run -p 8000:8000 als_tiled +docker run -p 8000:8000 splash_tiled # With environment variables -docker run -p 8000:8000 -e TILED_SERVER_ENABLE_ORIGINS=* als_tiled +docker run -p 8000:8000 -e TILED_SERVER_ENABLE_ORIGINS=* splash_tiled # With volume mounting for data -docker run -p 8000:8000 -v /path/to/data:/data als_tiled +docker run -p 8000:8000 -v /path/to/data:/data splash_tiled ``` ## CI/CD @@ -157,7 +157,7 @@ The project includes a comprehensive GitHub Actions workflow that: Docker images are automatically published to: ``` -ghcr.io/als-lbl/als_tiled +ghcr.io/als-lbl/splash_tiled ``` ## Configuration @@ -194,4 +194,4 @@ For support and questions, please open an issue on the GitHub repository or cont ## Related Projects - [Tiled](https://github.com/bluesky/tiled) - The underlying framework -- [Bluesky](https://github.com/bluesky/bluesky) - Data acquisition and analysis framework# als_tiled +- [Bluesky](https://github.com/bluesky/bluesky) - Data acquisition and analysis framework# splash_tiled diff --git a/example_configs/bl733/config.yaml b/example_configs/bl733/config.yaml index 16d2b89..1e0f470 100644 --- a/example_configs/bl733/config.yaml +++ b/example_configs/bl733/config.yaml @@ -6,8 +6,8 @@ file_extensions: # To be determined if this should include download of metadata as txt files #media_types: # array: -# application/x-edf: als_tiled.bl733.adapters.edf:export_edf -# application/x-gb: als_tiled.bl733.adapters.gb:export_gb +# application/x-edf: splash_tiled.bl733.adapters.edf:export_edf +# application/x-gb: splash_tiled.bl733.adapters.gb:export_gb trees: - path: / @@ -17,5 +17,5 @@ trees: readable_storage: [./data] init_if_not_exists: true adapters_by_mimetype: - application/x-edf: als_tiled.bl733.adapters.edf:EDFAdapter - application/x-gb: als_tiled.bl733.adapters.gb:GeneralBinaryPilatus2MAdapter + application/x-edf: splash_tiled.bl733.adapters.edf:EDFAdapter + application/x-gb: splash_tiled.bl733.adapters.gb:GeneralBinaryPilatus2MAdapter diff --git a/pixi.toml b/pixi.toml new file mode 100644 index 0000000..e6a36af --- /dev/null +++ b/pixi.toml @@ -0,0 +1,30 @@ +# pixi.toml +# Project environments for als_tiled + +[project] +name = "als_tiled" +channels = ["conda-forge"] + +[environments.dev] +dependencies = [ + "python =3.11", + "pytest", + "mypy", + "ipython", + "notebook", + "tiled", + "fabio", + "zarr", + "numpy", + "pandas" +] + +[environments.bl733] +dependencies = [ + "python =3.11", + "tiled", + "fabio", + "zarr", + "numpy", + "pandas" +] diff --git a/pyproject.toml b/pyproject.toml index 932345b..d69773f 100755 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ test = [ "pytest>=7.0", "pytest-cov", "pytest-asyncio", - "als_tiled[bl733,tiled-all]", + "splash_tiled[bl733,tiled-all]", ] tiled-all = [ "tiled[all]>=0.2.8", @@ -50,12 +50,12 @@ bl733 = [ ] [project.urls] -Homepage = "https://github.com/als-lbl/als_tiled" -Repository = "https://github.com/als-lbl/als_tiled" -Documentation = "https://github.com/als-lbl/als_tiled#readme" +Homepage = "https://github.com/als-lbl/splash_tiled" +Repository = "https://github.com/als-lbl/splash_tiled" +Documentation = "https://github.com/als-lbl/splash_tiled#readme" [project.scripts] -als-tiled = "als_tiled.main:main" +als-tiled = "splash_tiled.main:main" [tool.setuptools.packages.find] where = ["src"] @@ -88,7 +88,7 @@ line_length = 88 [tool.pytest.ini_options] minversion = "7.0" -addopts = "-ra -q --cov=als_tiled --cov-report=term-missing" +addopts = "-ra -q --cov=splash_tiled --cov-report=term-missing" testpaths = [ "tests", ] diff --git a/src/als_tiled/__init__.py b/src/splash_tiled/__init__.py similarity index 100% rename from src/als_tiled/__init__.py rename to src/splash_tiled/__init__.py diff --git a/src/als_tiled/bl733/__init__.py b/src/splash_tiled/bl733/__init__.py similarity index 100% rename from src/als_tiled/bl733/__init__.py rename to src/splash_tiled/bl733/__init__.py diff --git a/src/als_tiled/bl733/adapters/__init__.py b/src/splash_tiled/bl733/adapters/__init__.py similarity index 100% rename from src/als_tiled/bl733/adapters/__init__.py rename to src/splash_tiled/bl733/adapters/__init__.py diff --git a/src/als_tiled/bl733/adapters/edf.py b/src/splash_tiled/bl733/adapters/edf.py similarity index 96% rename from src/als_tiled/bl733/adapters/edf.py rename to src/splash_tiled/bl733/adapters/edf.py index 71e58ba..2da3353 100644 --- a/src/als_tiled/bl733/adapters/edf.py +++ b/src/splash_tiled/bl733/adapters/edf.py @@ -12,7 +12,7 @@ from tiled.type_aliases import JSON from tiled.utils import path_from_uri -from als_tiled.bl733.adapters.metadata import parse_txt_accompanying_edf +from splash_tiled.bl733.adapters.metadata import parse_txt_accompanying_edf logger = logging.getLogger(__name__) LOADING_MESSAGE = "Loading EDF file produced by ALS beamline 7.3.3: %s" diff --git a/src/als_tiled/bl733/adapters/gb.py b/src/splash_tiled/bl733/adapters/gb.py similarity index 98% rename from src/als_tiled/bl733/adapters/gb.py rename to src/splash_tiled/bl733/adapters/gb.py index c84cea5..604cb93 100644 --- a/src/als_tiled/bl733/adapters/gb.py +++ b/src/splash_tiled/bl733/adapters/gb.py @@ -14,7 +14,7 @@ from tiled.type_aliases import JSON from tiled.utils import path_from_uri -from als_tiled.bl733.adapters.metadata import parse_txt_accompanying_edf +from splash_tiled.bl733.adapters.metadata import parse_txt_accompanying_edf logger = logging.getLogger(__name__) LOADING_MESSAGE = "Loading GB file produced by ALS beamline 7.3.3: %s" diff --git a/src/als_tiled/bl733/adapters/metadata.py b/src/splash_tiled/bl733/adapters/metadata.py similarity index 100% rename from src/als_tiled/bl733/adapters/metadata.py rename to src/splash_tiled/bl733/adapters/metadata.py diff --git a/tests/bl733/conftest.py b/tests/bl733/conftest.py index e248736..32113af 100644 --- a/tests/bl733/conftest.py +++ b/tests/bl733/conftest.py @@ -2,7 +2,7 @@ import numpy as np import pytest -from als_tiled.bl733.adapters.gb import PILATUS_2M_PIXELS_X, PILATUS_2M_PIXELS_Y +from splash_tiled.bl733.adapters.gb import PILATUS_2M_PIXELS_X, PILATUS_2M_PIXELS_Y SAMPLE_TXT_CONTENT = """\ 401.000 diff --git a/tests/bl733/test_edf.py b/tests/bl733/test_edf.py index 901acf0..00b1a78 100644 --- a/tests/bl733/test_edf.py +++ b/tests/bl733/test_edf.py @@ -5,10 +5,10 @@ from tiled.client.register import register from tiled.server.app import build_app_from_config -from als_tiled.bl733.adapters.gb import PILATUS_2M_PIXELS_X, PILATUS_2M_PIXELS_Y -from als_tiled.bl733.adapters.metadata import parse_txt_accompanying_edf +from splash_tiled.bl733.adapters.gb import PILATUS_2M_PIXELS_X, PILATUS_2M_PIXELS_Y +from splash_tiled.bl733.adapters.metadata import parse_txt_accompanying_edf -EDF_ADAPTER = "als_tiled.bl733.adapters.edf:EDFAdapter" +EDF_ADAPTER = "splash_tiled.bl733.adapters.edf:EDFAdapter" EDF_MIMETYPE = "application/x-edf" diff --git a/tests/bl733/test_gb.py b/tests/bl733/test_gb.py index 178747b..4eec621 100644 --- a/tests/bl733/test_gb.py +++ b/tests/bl733/test_gb.py @@ -5,13 +5,13 @@ from tiled.client.register import register from tiled.server.app import build_app_from_config -from als_tiled.bl733.adapters.gb import ( +from splash_tiled.bl733.adapters.gb import ( PILATUS_2M_PIXELS_X, PILATUS_2M_PIXELS_Y, GeneralBinaryPilatus2MAdapter, ) -GB_ADAPTER = "als_tiled.bl733.adapters.gb:GeneralBinaryPilatus2MAdapter" +GB_ADAPTER = "splash_tiled.bl733.adapters.gb:GeneralBinaryPilatus2MAdapter" GB_MIMETYPE = "application/x-gb" diff --git a/tests/conftest.py b/tests/conftest.py index 3998466..0d189c8 100755 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,5 +1,5 @@ """ -Test configuration and fixtures for als_tiled. +Test configuration and fixtures for splash_tiled. """ import pytest From 97b4cd846a4833ce18142b230f9446f8cb5784ba Mon Sep 17 00:00:00 2001 From: Dylan McReynolds Date: Mon, 30 Mar 2026 13:30:26 -0700 Subject: [PATCH 04/31] remove makefile --- Makefile | 51 --------------------------------------------------- 1 file changed, 51 deletions(-) delete mode 100755 Makefile diff --git a/Makefile b/Makefile deleted file mode 100755 index 6e47a08..0000000 --- a/Makefile +++ /dev/null @@ -1,51 +0,0 @@ -# Makefile for ALS Tiled project - -.PHONY: help install install-dev test lint format clean build docker-build docker-run - -help: - @echo "Available commands:" - @echo " install Install the package" - @echo " install-dev Install the package in development mode with dev dependencies" - @echo " test Run tests" - @echo " lint Run linting checks" - @echo " format Format code with black and isort" - @echo " clean Clean build artifacts" - @echo " build Build the package" - @echo " docker-build Build Docker image" - @echo " docker-run Run Docker container" - -install: - pip install -e . - -install-dev: - pip install -e .[dev] - pre-commit install - -test: - pytest --cov=splash_tiled --cov-report=term-missing - -lint: - flake8 src tests - black --check src tests - isort --check-only src tests - mypy src - -format: - black src tests - isort src tests - -clean: - rm -rf build/ - rm -rf dist/ - rm -rf *.egg-info/ - find . -type d -name __pycache__ -exec rm -rf {} + - find . -type f -name "*.pyc" -delete - -build: - python -m build - -docker-build: - docker build -t splash_tiled -f Containerfile . - -docker-run: - docker run -p 8000:8000 splash_tiled From 9f945016f6dca49b61a7832fa53389d3e6a4ff8c Mon Sep 17 00:00:00 2001 From: Dylan McReynolds Date: Mon, 30 Mar 2026 15:13:28 -0700 Subject: [PATCH 05/31] add pixi configuration --- .pre-commit-config.yaml | 1 + README.md | 42 +- pixi.lock | 14059 ++++++++++++++++++++++++++++++++++++++ pixi.toml | 54 +- pyproject.toml | 16 - pytest.ini | 2 + 6 files changed, 14123 insertions(+), 51 deletions(-) create mode 100644 pixi.lock create mode 100644 pytest.ini diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 39d2c11..7a5a2f8 100755 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,6 +6,7 @@ repos: - id: end-of-file-fixer - id: check-yaml - id: check-added-large-files + exclude: ^pixi\.lock$ - id: check-merge-conflict - id: debug-statements diff --git a/README.md b/README.md index a1af854..d3874b1 100755 --- a/README.md +++ b/README.md @@ -69,24 +69,46 @@ This installs additional development dependencies including: ## Development -### Setting up the Development Environment -1. Clone the repository: +### Using Pixi for Development + +This project supports [Pixi](https://pixi.sh/) for reproducible Python environments. Pixi handles dependency management and environment setup automatically. + +#### Setting up with Pixi + +1. Install Pixi (if you don't have it): ```bash - git clone https://github.com/als-lbl/splash_tiled.git - cd splash_tiled + curl -sSf https://pixi.sh/install.sh | bash + # Or see https://pixi.sh/docs/install/ for other methods ``` - -2. Install development dependencies: +2. Create and activate the development environment: ```bash - pip install -e .[dev] + pixi install + pixi shell ``` - -3. Install pre-commit hooks: +3. (Optional) To update dependencies: ```bash - pre-commit install + pixi update ``` +#### Running Tests with Pixi + +```bash +pixi run test +``` + +#### Running Code Quality Checks with Pixi + +```bash +pixi run lint # Run all linters +pixi run format # Format code with black and isort +pixi run typecheck # Run mypy type checks +``` + +You can also run any tool in the environment with `pixi run ` (e.g., `pixi run pytest`). + +For more, see the [Pixi documentation](https://pixi.sh/docs/). + ### Running Tests ```bash diff --git a/pixi.lock b/pixi.lock new file mode 100644 index 0000000..5c136b9 --- /dev/null +++ b/pixi.lock @@ -0,0 +1,14059 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + options: + pypi-prerelease-mode: if-necessary-or-explicit + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.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/linux-64/adbc-driver-manager-1.10.0-py313h7033f15_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adbc-driver-postgresql-1.10.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adbc-driver-sqlite-1.10.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiofiles-25.1.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.22.1-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alembic-1.18.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-doc-0.0.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.13.0-pyhcf101f3_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/noarch/appdirs-1.4.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-25.1.0-py313h07c4f96_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.4.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgi-correlation-id-4.3.3-pyhd8ed1ab_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/async-lru-2.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-timeout-5.0.1-pyhcf101f3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/asyncpg-0.31.0-py313h54dd161_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/awkward-2.9.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/awkward-cpp-52-py313hd3cbb54_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.10.1-h2d2dd48_2.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.6.0-h9b893ba_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.10.12-h4bacb7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.26.3-hc87160b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.15.2-he9ea9c5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.11.5-h6d69fc9_5.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.37.4-h4c8aef7_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.747-hc3785e1_3.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/noarch/babel-2.18.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backports.asyncio.runner-1.2.0-pyh5ded981_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.3.0-py313h18e8e13_0.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/linux-64/blosc-1.21.6-he440d0b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py313hf159716_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brunsli-0.1-hd1e3526_2.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/c-blosc2-2.23.1-hc31b594_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-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-7.0.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/canonicaljson-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py313hf46b229_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/charls-2.4.3-hecca717_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.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/linux-64/contourpy-1.3.3-py313hc8edb43_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.13.5-py313h3dea7bd_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.12-py313hd8ed1ab_100.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-46.0.5-py313heb322e3_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-py313h07c4f96_2.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/linux-64/dav1d-1.2.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.20-py313h5d5ffb9_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/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/dnspython-2.8.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/donfig-0.8.1.post1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ecdsa-0.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.3.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-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/executing-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fabio-2025.10.0-py313h29aa505_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.135.2-hc25896d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.23-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.135.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.25.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-7.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.3.0-pyhd8ed1ab_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/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/glymur-0.14.7-pyhd8ed1ab_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-py313h86d8783_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/google-crc32c-1.8.0-py313h74173ec_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.3.2-py313h5d5ffb9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhcf101f3_1.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/linux-64/h5py-3.16.0-nompi_py313h22c32d4_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-2.1.0-nompi_hd4fcb43_103.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5plugin-6.0.0-py313hdbdd960_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.7.1-py313h07c4f96_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-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/linux-64/icu-78.3-h33c6efd_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.18-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2026.3.6-py313h67fa517_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imageio-2.37.0-pyhfb79c49_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_resources-6.5.2-pyhd8ed1ab_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/ipykernel-7.2.0-pyha191276_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.12.0-pyhecfbec7_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/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isort-8.0.1-pyhd8ed1ab_0.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/jmespath-1.1.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json-merge-patch-0.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpointer-3.1.1-pyhcf101f3_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/jsonschema-with-format-nongpl-4.26.0-hcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.3.0-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/jupyter_events-0.12.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.17.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.6-pyhd8ed1ab_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/jupyterlab_server-2.28.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.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/krb5-1.22.2-ha1258a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.18-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/libabseil-20260107.1-cxx17_h7b12aa8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libadbc-driver-postgresql-1.10.0-hedb09cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libadbc-driver-sqlite-1.10.0-hcea63bf_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-23.0.1-ha7f89c6_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-23.0.1-h635bf11_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-23.0.1-h53684a4_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-23.0.1-h635bf11_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-23.0.1-hb4dd7c2_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.4.1-hcfa2d63_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-6_h4a7cf45_openblas.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/libcblas-3.11.0-6_h0358290_openblas.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/libcurl-8.19.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/libedit-3.1.20250104-pl5321h7949ede_0.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.7.5-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/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_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.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/libhwy-1.3.0-h4c17acf_1.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.2-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.2-ha09017c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-6_h47877c9_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.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/libntlm-1.8-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.32-pthreads_h94d23a6_0.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/libparquet-23.0.1-h7376487_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.56-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/libsodium-1.0.21-h280c20c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.52.0-hf4e2dac_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_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.22.0-h454ac66_1.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/libutf8proc-2.11.3-hfe17d71_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-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/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/libxml2-16-2.15.2-hca6bf5a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.2-he237659_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/libzlib-1.3.2-h25fd6f3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzopfli-1.0.3-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.46.0-py313hdd307be_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/linux-64/lxml-6.0.2-py313h4a16004_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py313h28739b2_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/noarch/mako-1.3.10-pyhcf101f3_1.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/linux-64/markupsafe-3.0.3-py313h3dea7bd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.1-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/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/minio-7.2.20-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.2.0-pyhcf101f3_0.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/msgpack-python-1.1.2-py313h7037e92_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.19.1-py313h07c4f96_0.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/narwhals-2.18.1-pyhcf101f3_1.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-core-7.17.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ndindex-1.10.1-py313h7033f15_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/linux-64/nlohmann_json-3.12.0-h54a6638_1.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/notebook-7.5.5-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numba-0.64.0-py313h5dce7c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numcodecs-0.16.5-py313h08cd8bf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numexpr-2.14.1-py313h24ae7f9_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.3-py313hf6604e3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/obstore-0.9.2-py313h5c7d99a_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/openjph-0.26.3-h8d634f6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.10-hbde042b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py313ha4be090_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.1-h35e630c_1.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/orjson-3.11.7-py313h541fbb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.1-py313hbfd7664_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/parso-0.8.6-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/pathspec-1.0.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.1.1-py313h80991f8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.4-pyhcf101f3_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/pre-commit-4.5.1-pyha770c72_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/noarch/prometheus_client-0.24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py313h54dd161_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/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/linux-64/pyarrow-23.0.1-py313h78bf25f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-23.0.1-py313h98bfbea_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.3-pyhcf101f3_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/linux-64/pycryptodome-3.23.0-py313h6123c0d_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.41.5-py313h843e2db_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.11.0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyflakes-3.4.0-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/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-asyncio-1.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-7.1.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.12-hc97d973_100_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-blosc2-4.1.2-py313h9545597_1.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.2.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-duckdb-1.3.2-py313h7033f15_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-gil-3.13.12-h4df99d1_100.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-jose-3.5.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.8.1-py313h54dd161_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.22-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pytokens-0.4.1-py313h54dd161_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py313h3dea7bd_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/rav1e-0.8.1-h1fbca29_0.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/noarch/redis-py-7.4.0-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.33.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.19.7-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.30.0-py313h843e2db_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.7.1-h1cbb8d7_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyha191276_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h03e3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.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/sparse-0.18.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.48-py313h54dd161_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/stamina-25.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-1.0.0-pyhcf101f3_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/noarch/tblib-3.2.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyhc90fa1f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tifffile-2026.3.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-0.2.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-base-0.2.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-client-0.2.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-formats-0.2.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-server-0.2.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.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/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/linux-64/tornado-6.5.5-py313h07c4f96_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.24.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-inspection-0.4.2-pyhd8ed1ab_1.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/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.1.0-py313h7037e92_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.42.0-pyhc90fa1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.42.0-h76e4700_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.22.1-py313h07c4f96_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.2.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.1.1-py313h5c7d99a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-25.10.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/websocket-client-1.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-16.0-py313h54dd161_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.1.2-py313h07c4f96_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2026.2.0-pyhcf101f3_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-libxdmcp-1.1.5-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2026.3.0-pyhd8ed1ab_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/noarch/zarr-3.1.5-pyhcf101f3_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/noarch/zict-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.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/zstandard-0.25.0-py313h54dd161_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/adbc-driver-manager-1.10.0-py313he352c24_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adbc-driver-postgresql-1.10.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adbc-driver-sqlite-1.10.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiofiles-25.1.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.22.1-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alembic-1.18.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-doc-0.0.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.13.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/argon2-cffi-bindings-25.1.0-py313h6194ac5_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.4.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgi-correlation-id-4.3.3-pyhd8ed1ab_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/async-lru-2.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-timeout-5.0.1-pyhcf101f3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/asyncpg-0.31.0-py313h62ef0ea_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/awkward-2.9.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/awkward-cpp-52-py313h75bc965_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.10.1-h5c15aeb_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.9.13-hc50a40c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.12.6-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.2-h6f28e42_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.6.0-h7ae2b9c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.10.12-h8f13f89_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.26.3-h8d25f22_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.15.2-hdc5d86d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.11.5-h1747a43_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.4-h6f28e42_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.10-h6f28e42_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.37.4-h27c02a5_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.747-h4846bbe_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.16.2-h412bcfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.13.3-h54aad0d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.16.0-h3935e50_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.12.0-h2356a00_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.14.0-h23384eb_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backports.asyncio.runner-1.2.0-pyh5ded981_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/backports.zstd-1.3.0-py313h3d57138_0.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/linux-aarch64/blosc-1.21.6-hb4dfabd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.2.0-py313hb260801_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brunsli-0.1-h099923c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.6-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-blosc2-2.23.1-hde6442c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-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-7.0.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/canonicaljson-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-2.0.0-py313h897158f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/charls-2.4.3-hfae3067_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.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/linux-aarch64/contourpy-1.3.3-py313h75bc965_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/coverage-7.13.5-py313hfa222a2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.12-py313hd8ed1ab_100.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cryptography-46.0.5-py313h2e85185_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cyrus-sasl-2.1.28-h6598af7_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cytoolz-1.1.0-py313he149459_2.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/linux-aarch64/dav1d-1.2.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.20-py313h59403f9_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/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/dnspython-2.8.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/donfig-0.8.1.post1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ecdsa-0.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.3.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-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/executing-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fabio-2025.10.0-py313hcc1970c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.135.2-hc25896d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.23-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.135.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.25.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-7.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/giflib-5.2.2-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/glymur-0.14.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmp-6.3.0-h0a1ffab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmpy2-2.3.0-py313h4ba42fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/google-crc32c-1.8.0-py313hfb67750_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/greenlet-3.3.2-py313h59403f9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhcf101f3_1.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/linux-aarch64/h5py-3.16.0-nompi_py313h14703b5_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/hdf5-2.1.0-nompi_h81b49a2_103.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/hdf5plugin-6.0.0-py313h900b84a_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.7.1-py313h6194ac5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-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/linux-aarch64/icu-78.3-hcab7f73_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.18-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/imagecodecs-2026.3.6-py313hcf3ee17_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imageio-2.37.0-pyhfb79c49_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_resources-6.5.2-pyhd8ed1ab_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/ipykernel-7.2.0-pyha191276_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.12.0-pyhecfbec7_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/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isort-8.0.1-pyhd8ed1ab_0.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/jmespath-1.1.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json-merge-patch-0.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpointer-3.1.1-pyhcf101f3_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/jsonschema-with-format-nongpl-4.26.0-hcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.3.0-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/jupyter_events-0.12.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.17.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.6-pyhd8ed1ab_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/jupyterlab_server-2.28.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jxrlib-1.1-h31becfc_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.22.2-hfd895c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.18-h9d5b58d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.1.0-h52b7260_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20260107.1-cxx17_h6983b43_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libadbc-driver-postgresql-1.10.0-hd3e9c16_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libadbc-driver-sqlite-1.10.0-h54c4e81_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libaec-1.1.5-hff7e48a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-23.0.1-h155c802_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-23.0.1-hb326ee9_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-compute-23.0.1-hdd99842_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-23.0.1-hb326ee9_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-23.0.1-hf29bd21_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.4.1-ha599f14_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.11.0-6_haddc8a3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.2.0-he30d5cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.2.0-he30d5cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.2.0-he30d5cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.11.0-6_hd72aa62_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.19.0-hc57f145_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.25-h1af38f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.7.5-hfae3067_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype-2.14.3-h8af1aa0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype6-2.14.3-hdae7a39_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-15.2.0-he9431aa_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-15.2.0-h1b7bec0_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-3.3.0-h04dcd46_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-3.3.0-h66d5b86_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.78.1-heab1e18_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libhwy-1.3.0-h81d0cf9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-h90929bb_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.1.2-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjxl-0.11.2-h71be66a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.11.0-6_h88aeb00_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.2-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmpdec-4.0.0-he30d5cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.68.1-hd3077d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libntlm-1.4-hf897c2e_1002.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.32-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.26.0-hd82aec3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.26.0-h8af1aa0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-23.0.1-h87079af_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.56-h1abf092_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpq-18.3-h7d4fc67_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-6.33.5-h1f88751_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2025.11.05-hc5e897d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.21-h80f16a2_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.52.0-h10b116e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-h18c354c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-15.2.0-hdbbeba8_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.22.0-h046380b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.1-hdb009f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.11.3-hec6f9f7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.41.3-h1022ec0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.51.0-he30d5cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.6.0-ha2e29f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-16-2.15.2-h79dcc73_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.15.2-h825857f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxslt-1.1.43-h6700d25_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzopfli-1.0.3-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/llvmlite-0.46.0-py313ha7661e1_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/linux-aarch64/lxml-6.0.2-py313h30cdae8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-4.4.5-py313h2c0738f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mako-1.3.10-pyhcf101f3_1.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/linux-aarch64/markupsafe-3.0.3-py313hfa222a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.1-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/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/minio-7.2.20-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.2.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpc-1.4.0-he6dc3fb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpfr-4.2.2-h3faef18_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/msgpack-python-1.1.2-py313he6111f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mypy-1.19.1-py313hd81a959_0.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/narwhals-2.18.1-pyhcf101f3_1.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-core-7.17.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ndindex-1.8-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.12.0-h7ac5ae9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-7.5.5-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numba-0.64.0-py313he752a65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numcodecs-0.16.5-py313h9de0199_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numexpr-2.14.1-py313hc98aa87_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-2.4.3-py313h11e5ff7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/obstore-0.9.2-py313he77ad87_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.4-h5da879a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjph-0.26.3-h55827e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openldap-2.6.10-h2fb54aa_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openpyxl-3.1.5-py313h111ca60_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.1-h546c87b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.3.0-hce1ac79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orjson-3.11.7-py313h9a81766_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-3.0.1-py313h9226a20_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/parso-0.8.6-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/pathspec-1.0.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-12.1.1-py313h20c1486_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.4-pyhcf101f3_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/pre-commit-4.5.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-7.2.2-py313h62ef0ea_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.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/linux-aarch64/pyarrow-23.0.1-py313h1258fbd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-23.0.1-py313hc35d149_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.3-pyhcf101f3_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/linux-aarch64/pycryptodome-3.23.0-py313h2fc25cf_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.41.5-py313h5e7b836_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.11.0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyflakes-3.4.0-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/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-asyncio-1.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-7.1.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.13.12-h4c0d347_100_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-blosc2-4.1.2-py313h75e4f28_1.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.2.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-duckdb-1.3.2-py313he352c24_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-gil-3.13.12-h4df99d1_100.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-jose-3.5.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-librt-0.8.1-py313h62ef0ea_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.22-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pytokens-0.4.1-py313h62ef0ea_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.3-py313hd3a54cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-27.1.0-py312hdf0a211_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rav1e-0.8.1-h9d4cc37_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2025.11.05-he0da282_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.3-hb682ff5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/redis-py-7.4.0-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.33.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.19.7-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.30.0-py313h8f1d341_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.7.1-h6629d95_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyha191276_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.2-he774c54_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.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/sparse-0.18.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sqlalchemy-2.0.48-py313hc37f9cf_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/stamina-25.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-1.0.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-4.0.1-hfae3067_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/tenacity-9.1.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyhc90fa1f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tifffile-2026.3.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-0.2.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-base-0.2.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-client-0.2.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-formats-0.2.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-server-0.2.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h0dc03b3_103.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/linux-aarch64/tornado-6.5.5-py313he149459_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.24.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-inspection-0.4.2-pyhd8ed1ab_1.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/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ukkonen-1.1.0-py313he6111f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.42.0-pyhc90fa1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.42.0-h76e4700_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.22.1-py313h6194ac5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.2.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.1.1-py313he77ad87_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-25.10.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/websocket-client-1.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-16.0-py313h62ef0ea_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-2.1.2-py313h6194ac5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2026.2.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-he30d5cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-he30d5cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2026.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-h80f16a2_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zarr-3.1.5-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-hc0523f8_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zfp-1.0.1-h05c1e92_5.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.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.2-hdc9db2a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-ng-2.3.3-ha7cb516_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.25.0-py313h62ef0ea_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda + osx-64: + - conda: https://conda.anaconda.org/conda-forge/osx-64/_openmp_mutex-4.5-7_kmp_llvm.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/osx-64/adbc-driver-manager-1.10.0-py313hbc4457e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adbc-driver-postgresql-1.10.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adbc-driver-sqlite-1.10.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiofiles-25.1.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.22.1-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alembic-1.18.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-doc-0.0.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.13.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aom-3.9.1-hf036a51_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-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/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-25.1.0-py313hf050af9_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.4.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgi-correlation-id-4.3.3-pyhd8ed1ab_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/async-lru-2.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-timeout-5.0.1-pyhcf101f3_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/asyncpg-0.31.0-py313h16366db_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/awkward-2.9.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/awkward-cpp-52-py313h45a0507_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-auth-0.10.1-hfd47d4b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-cal-0.9.13-hea39f9f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-common-0.12.6-h8616949_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-compression-0.3.2-hb9ea233_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-event-stream-0.6.0-ha9bd753_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-http-0.10.12-h1037d30_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-io-0.26.3-hc95b61d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-mqtt-0.15.2-h6fabf1c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-s3-0.11.5-hb15a67f_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-sdkutils-0.2.4-h901532c_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-checksums-0.2.10-h31279ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-crt-cpp-0.37.4-h1135fef_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-sdk-cpp-1.11.747-h17cee85_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-core-cpp-1.16.2-h87f1c7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-identity-cpp-1.13.3-h1135191_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-blobs-cpp-12.16.0-h9b4319f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-common-cpp-12.12.0-h7373072_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.14.0-he1781d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backports.asyncio.runner-1.2.0-pyh5ded981_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/backports.zstd-1.3.0-py313h591e92b_0.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/osx-64/blosc-1.21.6-hd145fbb_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.2.0-py313h8d69aa9_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brunsli-0.1-ha00ef93_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.6-hb5e19a0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/c-blosc2-2.23.1-h548f922_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-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-7.0.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/canonicaljson-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-2.0.0-py313hf57695f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/charls-2.4.3-hcc62823_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.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/osx-64/contourpy-1.3.3-py313h98b818e_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.13.5-py313h035b7d0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.12-py313hd8ed1ab_100.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cryptography-46.0.5-py313h6e3882f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cyrus-sasl-2.1.28-h7cc0300_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cytoolz-1.1.0-py313h36bb7f5_2.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/osx-64/dav1d-1.2.1-h0dc2134_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.20-py313h8b5a893_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/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/dnspython-2.8.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/donfig-0.8.1.post1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ecdsa-0.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.3.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-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/executing-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fabio-2025.10.0-py313hceb611b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.135.2-hc25896d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.23-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.135.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.25.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-7.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gflags-2.2.2-hac325c4_1005.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/giflib-5.2.2-h10d778d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/glog-0.7.1-h2790a97_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/glymur-0.14.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gmp-6.3.0-hf036a51_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gmpy2-2.3.0-py313h75c6c5f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/google-crc32c-1.8.0-py313h49a2f01_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/greenlet-3.3.2-py313h5fe49f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhcf101f3_1.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/osx-64/h5py-3.16.0-nompi_py313h15f83ed_101.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-2.1.0-nompi_h3b1597d_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5plugin-6.0.0-py313hfdb907d_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/httptools-0.7.1-py313hf050af9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-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/osx-64/icu-78.3-h25d91c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.18-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/imagecodecs-2026.3.6-py313h7f7f87f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imageio-2.37.0-pyhfb79c49_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_resources-6.5.2-pyhd8ed1ab_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/ipykernel-7.2.0-pyh5552912_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.12.0-pyhecfbec7_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/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isort-8.0.1-pyhd8ed1ab_0.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/jmespath-1.1.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json-merge-patch-0.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpointer-3.1.1-pyhcf101f3_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/jsonschema-with-format-nongpl-4.26.0-hcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.3.0-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/jupyter_events-0.12.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.17.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.6-pyhd8ed1ab_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/jupyterlab_server-2.28.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/jxrlib-1.1-h10d778d_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.22.2-h207b36a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.18-h90db99b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.1.0-h35c7297_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20260107.1-cxx17_h7ed6875_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libadbc-driver-postgresql-1.10.0-hc76a90b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libadbc-driver-sqlite-1.10.0-h5c786d0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libaec-1.1.5-he7c3a48_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-23.0.1-h6b6ab80_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-23.0.1-h66151e4_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-compute-23.0.1-h5d4fa73_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-23.0.1-h66151e4_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-23.0.1-h613493e_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libavif16-1.4.1-h9d3eb37_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.11.0-6_he492b99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.2.0-h8616949_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.2.0-h8616949_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.2.0-h8616949_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.11.0-6_h9b27e0a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcrc32c-1.1.2-he49afe7_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.19.0-h8f0b9e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-22.1.2-h19cb2f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.25-h517ebb2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libevent-2.1.12-ha90c15b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.5-hcc62823_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.5.2-hd1f9c09_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.14.3-h694c41f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.14.3-h58fbd8d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgcc-15.2.0-h08519bb_18.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.2.0-h7e5c614_18.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.2.0-hd16e46c_18.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-3.3.0-h10ed7cb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-storage-3.3.0-hea209c6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.78.1-h147dede_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libhwy-1.3.0-hab838a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h57a12c2_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.2-h8616949_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libjxl-0.11.2-hde0fb83_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.11.0-6_h859234e_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.2-h11316ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-hf3981d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.68.1-h70048d4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libntlm-1.8-h6e16a3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.32-openmp_h9e49c7b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopentelemetry-cpp-1.26.0-h7a0a166_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopentelemetry-cpp-headers-1.26.0-h694c41f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libparquet-23.0.1-h527dc83_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.56-he930e7c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpq-18.3-h94170d9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-6.33.5-h29d92e8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2025.11.05-h6e8c311_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.21-hc6ced15_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.52.0-h77d7759_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.1-hed3591d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libthrift-0.22.0-h687e942_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.1-ha0a348c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libutf8proc-2.11.3-hc282952_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.51.0-h58003a5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.17.0-hf1f96e2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-16-2.15.2-h7a90416_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.15.2-hd552753_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxslt-1.1.43-h486b42e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.2-hbb4bfdb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libzopfli-1.0.3-h046ec9c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-22.1.2-h0d3cbff_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvmlite-0.46.0-py313h590e1ab_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/osx-64/lxml-6.0.2-py313h00bd3da_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lz4-4.4.5-py313hab77a93_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lz4-c-1.10.0-h240833e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mako-1.3.10-pyhcf101f3_1.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/osx-64/markupsafe-3.0.3-py313h035b7d0_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.1-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/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/minio-7.2.20-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.2.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mpc-1.4.0-h31caf2d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mpfr-4.2.2-h31caf2d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/msgpack-python-1.1.2-py313h5eff275_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.19.1-py313hf050af9_0.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/narwhals-2.18.1-pyhcf101f3_1.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-core-7.17.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ndindex-1.10.1-py313hc4a83b5_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/osx-64/nlohmann_json-3.12.0-h06076ce_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-7.5.5-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numba-0.64.0-py313h4fc6aae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numcodecs-0.16.5-py313h2f264a9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numexpr-2.14.1-py313h821d116_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.4.3-py313hb870fc3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/obstore-0.9.2-py313ha3116d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.4-h52bb76a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openjph-0.26.3-h2c0e27e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openldap-2.6.10-h2f5043c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py313hc34da29_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.1-hb6871ef_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/orc-2.3.0-hb9b210e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/orjson-3.11.7-py313h9317e59_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-3.0.1-py313hfd25234_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/parso-0.8.6-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/pathspec-1.0.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-12.1.1-py313h16bb925_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.4-pyhcf101f3_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/pre-commit-4.5.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/prometheus-cpp-1.3.0-h7802330_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.2.2-py313h16366db_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-h00291cd_1002.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/osx-64/pyarrow-23.0.1-py313habf4b1d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-23.0.1-py313h345cca6_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.3-pyhcf101f3_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/osx-64/pycryptodome-3.23.0-py313h590ad5b_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pydantic-core-2.41.5-py313hcc225dc_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.11.0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyflakes-3.4.0-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/osx-64/pyobjc-core-12.1-py313h07bcf3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-12.1-py313hf669bc3_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.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-asyncio-1.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-7.1.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.12-h894a449_100_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-blosc2-4.1.2-py313h99e2700_1.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.2.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-duckdb-1.3.2-py313h253db18_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-gil-3.13.12-h4df99d1_100.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-jose-3.5.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-librt-0.8.1-py313h22ab4a2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.22-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pytokens-0.4.1-py313h16366db_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.3-py313h7c6a591_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.1.0-py312h2ac7433_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rav1e-0.8.1-h618d828_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2025.11.05-h77e0585_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.3-h68b038d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/redis-py-7.4.0-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.33.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.19.7-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.30.0-py313hcc225dc_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyh5552912_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/snappy-1.2.2-h01f5ddf_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.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/sparse-0.18.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/sqlalchemy-2.0.48-py313h22ab4a2_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/stamina-25.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-1.0.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/svt-av1-4.0.1-h991f03e_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/tenacity-9.1.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyhc90fa1f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tifffile-2026.3.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-0.2.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-base-0.2.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-client-0.2.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-formats-0.2.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-server-0.2.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h7142dee_3.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/osx-64/tornado-6.5.5-py313hf59fe81_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.24.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-inspection-0.4.2-pyhd8ed1ab_1.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/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.1.0-py313h252b9d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.42.0-pyhc90fa1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.42.0-h76e4700_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/uvloop-0.22.1-py313hf050af9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.2.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/watchfiles-1.1.1-py313ha265c4a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-25.10.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/websocket-client-1.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/websockets-16.0-py313h16366db_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/wrapt-2.1.2-py313hf59fe81_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2026.2.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.12-h8616949_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.5-h8616949_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2026.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h4132b18_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zarr-3.1.5-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h27d9b8f_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zfp-1.0.1-h1b13a81_4.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.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.2-hbb4bfdb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-ng-2.3.3-h8bce59a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.25.0-py313hcb05632_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h3eecb57_6.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/_openmp_mutex-4.5-7_kmp_llvm.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/adbc-driver-manager-1.10.0-py313h6deaedc_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adbc-driver-postgresql-1.10.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adbc-driver-sqlite-1.10.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiofiles-25.1.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.22.1-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alembic-1.18.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-doc-0.0.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.13.0-pyhcf101f3_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/noarch/appdirs-1.4.4-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/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-25.1.0-py313h6535dbc_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.4.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgi-correlation-id-4.3.3-pyhd8ed1ab_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/async-lru-2.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-timeout-5.0.1-pyhcf101f3_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/asyncpg-0.31.0-py313h6688731_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/awkward-2.9.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/awkward-cpp-52-py313h2af2deb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.10.1-hcb83491_2.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.6.0-h351c84d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.10.12-h95cdebe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.26.3-h4137820_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.15.2-h69e7467_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.11.5-ha5d16b2_5.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.37.4-h5505c15_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.747-had22720_3.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/noarch/babel-2.18.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backports.asyncio.runner-1.2.0-pyh5ded981_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/backports.zstd-1.3.0-py313h48bb75e_0.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/osx-arm64/blosc-1.21.6-h7dd00d9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.2.0-py313hde1f3bb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brunsli-0.1-he0dfb12_2.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/c-blosc2-2.23.1-hf9886e1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-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-7.0.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/canonicaljson-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-2.0.0-py313h224173a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/charls-2.4.3-hf6b4638_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.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/osx-arm64/contourpy-1.3.3-py313h2af2deb_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.13.5-py313h65a2061_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.12-py313hd8ed1ab_100.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-46.0.5-py313he3f6fad_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-py313h0997733_2.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/osx-arm64/dav1d-1.2.1-hb547adb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.20-py313h1188861_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/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/dnspython-2.8.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/donfig-0.8.1.post1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ecdsa-0.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.3.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-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/executing-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fabio-2025.10.0-py313hf5115c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.135.2-hc25896d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.23-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.135.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.25.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-7.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.3.0-pyhd8ed1ab_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/glog-0.7.1-heb240a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/glymur-0.14.7-pyhd8ed1ab_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-py313h8b87f87_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/google-crc32c-1.8.0-py313h11ab6f4_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/greenlet-3.3.2-py313h1188861_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhcf101f3_1.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/osx-arm64/h5py-3.16.0-nompi_py313h2c4073f_101.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-2.1.0-nompi_hc95e3eb_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5plugin-6.0.0-py313h9c23d4e_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.7.1-py313h6535dbc_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-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/osx-arm64/icu-78.3-hef89b57_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.18-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/imagecodecs-2026.3.6-py313h8864aa1_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imageio-2.37.0-pyhfb79c49_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_resources-6.5.2-pyhd8ed1ab_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/ipykernel-7.2.0-pyh5552912_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.12.0-pyhecfbec7_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/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isort-8.0.1-pyhd8ed1ab_0.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/jmespath-1.1.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json-merge-patch-0.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpointer-3.1.1-pyhcf101f3_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/jsonschema-with-format-nongpl-4.26.0-hcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.3.0-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/jupyter_events-0.12.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.17.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.6-pyhd8ed1ab_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/jupyterlab_server-2.28.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jxrlib-1.1-h93a5062_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.22.2-h385eeb1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.18-hdfa7624_0.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/libadbc-driver-postgresql-1.10.0-h217c5a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libadbc-driver-sqlite-1.10.0-hb70094c_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-23.0.1-h2124f06_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-23.0.1-hee8fe31_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-compute-23.0.1-h3b6a98a_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-23.0.1-hee8fe31_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-23.0.1-h05be00f_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.4.1-hfce71f6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.11.0-6_h51639a9_openblas.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-6_hb0561ab_openblas.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.19.0-hd5a2499_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-22.1.2-h55c6f16_0.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/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.7.5-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_18.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-h07b0088_18.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-hdae7583_18.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/libhwy-1.3.0-h48b13b8_1.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/libjpeg-turbo-3.1.2-hc919400_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjxl-0.11.2-h913acd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.11.0-6_hd9741b5_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.2-h8088a28_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h84a0fba_1.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/libopenblas-0.3.32-openmp_he657e61_0.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/libparquet-23.0.1-h16c0493_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.56-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/libsodium-1.0.21-h1a92334_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.52.0-h1ae2325_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/libthrift-0.22.0-h14a376c_1.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/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/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.2-h5ef1a60_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.2-h8d039ee_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxslt-1.1.43-hb2570ba_1.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/libzopfli-1.0.3-h9f76cd9_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-22.1.2-hc7d1edf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvmlite-0.46.0-py313he297ed2_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/osx-arm64/lxml-6.0.2-py313he6cafaa_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-4.4.5-py313hd065f0a_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/noarch/mako-1.3.10-pyhcf101f3_1.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/osx-arm64/markupsafe-3.0.3-py313h65a2061_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.1-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/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/minio-7.2.20-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.2.0-pyhcf101f3_0.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-py313ha61f8ec_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-1.19.1-py313hd3e6d80_0.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/narwhals-2.18.1-pyhcf101f3_1.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-core-7.17.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ndindex-1.8-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.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/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-7.5.5-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numba-0.64.0-py313h3ca053b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numcodecs-0.16.5-py313h7d16b84_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numexpr-2.14.1-py313h73ed539_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.4.3-py313he4a34aa_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/obstore-0.9.2-py313h7d00576_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/openjph-0.26.3-h2a4d681_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openldap-2.6.10-hf7f56bc_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py313he4f8f71_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.1-hd24854e_1.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/orjson-3.11.7-py313hf195ed2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-3.0.1-py313h6974306_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/parso-0.8.6-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/pathspec-1.0.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.1.1-py313h45e5a15_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.4-pyhcf101f3_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/pre-commit-4.5.1-pyha770c72_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/noarch/prometheus_client-0.24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.2.2-py313h6688731_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/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/osx-arm64/pyarrow-23.0.1-py313h39782a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-23.0.1-py313h23b330d_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.3-pyhcf101f3_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/osx-arm64/pycryptodome-3.23.0-py313hf820cfb_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.41.5-py313h2c089d5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.11.0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyflakes-3.4.0-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/osx-arm64/pyobjc-core-12.1-py313h40b429f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-12.1-py313hcc5defa_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.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-asyncio-1.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-7.1.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.12-h20e6be0_100_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-blosc2-4.1.2-py313h7d607e3_1.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.2.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-duckdb-1.3.2-py313hb4b7877_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-gil-3.13.12-h4df99d1_100.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-jose-3.5.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-librt-0.8.1-py313h6688731_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.22-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytokens-0.4.1-py313h6688731_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.3-py313h65a2061_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/rav1e-0.8.1-h8246384_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/noarch/redis-py-7.4.0-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.33.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.19.7-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.30.0-py313h2c089d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyh5552912_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.2-hada39a4_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.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/sparse-0.18.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlalchemy-2.0.48-py313h6688731_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/stamina-25.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-1.0.0-pyhcf101f3_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/noarch/tblib-3.2.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyhc90fa1f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tifffile-2026.3.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-0.2.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-base-0.2.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-client-0.2.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-formats-0.2.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-server-0.2.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h010d191_3.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/osx-arm64/tornado-6.5.5-py313h0997733_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.24.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-inspection-0.4.2-pyhd8ed1ab_1.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/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.1.0-py313h5c29297_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.42.0-pyhc90fa1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.42.0-h76e4700_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.22.1-py313h6535dbc_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.2.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.1.1-py313h0b74987_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-25.10.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/websocket-client-1.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-16.0-py313h6688731_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-2.1.2-py313h0997733_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2026.2.0-pyhcf101f3_0.conda + - 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/noarch/xyzservices-2026.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h925e9cb_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zarr-3.1.5-pyhcf101f3_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/noarch/zict-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.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/zstandard-0.25.0-py313h9734d34_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hbf9d68e_6.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda + build_number: 20 + sha256: 1dd3fffd892081df9726d7eb7e0dea6198962ba775bd88842135a4ddb4deb3c9 + md5: a9f577daf3de00bca7c3c76c0ecbd1de + depends: + - __glibc >=2.17,<3.0.a0 + - libgomp >=7.5.0 + constrains: + - openmp_impl <0.0a0 + license: BSD-3-Clause + license_family: BSD + size: 28948 + timestamp: 1770939786096 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda + build_number: 20 + sha256: a2527b1d81792a0ccd2c05850960df119c2b6d8f5fdec97f2db7d25dc23b1068 + md5: 468fd3bb9e1f671d36c2cbc677e56f1d + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl <0.0a0 + license: BSD-3-Clause + license_family: BSD + size: 28926 + timestamp: 1770939656741 +- conda: https://conda.anaconda.org/conda-forge/osx-64/_openmp_mutex-4.5-7_kmp_llvm.conda + build_number: 7 + sha256: 30006902a9274de8abdad5a9f02ef7c8bb3d69a503486af0c1faee30b023e5b7 + md5: eaac87c21aff3ed21ad9656697bb8326 + depends: + - llvm-openmp >=9.0.1 + license: BSD-3-Clause + license_family: BSD + size: 8328 + timestamp: 1764092562779 +- 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 + size: 8325 + timestamp: 1764092507920 +- 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 + 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 + size: 9818 + timestamp: 1764034326319 +- conda: https://conda.anaconda.org/conda-forge/linux-64/adbc-driver-manager-1.10.0-py313h7033f15_0.conda + sha256: 4dae59bcf0eb6a10a486904e4dcb319f0df13ed2f2f8fb98d8b9b6cf64bf04d9 + md5: b8cdab6a6070a4a9893f9a8e883c091d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - pyarrow >=8.0.0 + license: Apache-2.0 + license_family: APACHE + size: 348564 + timestamp: 1767962243322 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/adbc-driver-manager-1.10.0-py313he352c24_0.conda + sha256: b3fe899a3827adcf568a75095add113b8eef7ad353331965916e322c4ddc85f6 + md5: d4af78503f79c64312d57bf7a7552123 + depends: + - libgcc >=14 + - libstdcxx >=14 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - pyarrow >=8.0.0 + license: Apache-2.0 + license_family: APACHE + size: 334489 + timestamp: 1767962407260 +- conda: https://conda.anaconda.org/conda-forge/osx-64/adbc-driver-manager-1.10.0-py313hbc4457e_0.conda + sha256: e9ea997e74d9cb712e0d7192b406e83d8a7041f0a686db0ab8480e98b25746d6 + md5: 840a2553146da80df97489b15a1e3f1c + depends: + - __osx >=11.0 + - libcxx >=19 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - pyarrow >=8.0.0 + license: Apache-2.0 + license_family: APACHE + size: 314620 + timestamp: 1767962676839 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/adbc-driver-manager-1.10.0-py313h6deaedc_0.conda + sha256: 126c23d9e8937118fb6a406c80fbb2f00003d5467a049389f2ac83017861253a + md5: 0b690c2cc29e607f96ddc85a97cc7bc4 + depends: + - __osx >=11.0 + - libcxx >=19 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - pyarrow >=8.0.0 + license: Apache-2.0 + license_family: APACHE + size: 301574 + timestamp: 1767963223079 +- conda: https://conda.anaconda.org/conda-forge/noarch/adbc-driver-postgresql-1.10.0-pyha770c72_0.conda + sha256: 6e7c57b7293dcbf15b25011246aa570c42800d48b5013b00721c75fe8f5131b3 + md5: 95d08731f97580da5dbeb5f1a86a3787 + depends: + - adbc-driver-manager >=1.10.0,<2.0a0 + - importlib_resources + - libadbc-driver-postgresql >=1.10.0,<1.10.1.0a0 + - python >=3.10 + constrains: + - pyarrow >=8.0.0 + license: Apache-2.0 + license_family: APACHE + size: 25401 + timestamp: 1767962903399 +- conda: https://conda.anaconda.org/conda-forge/noarch/adbc-driver-sqlite-1.10.0-pyha770c72_0.conda + sha256: 703e62c115de57f6cf87b8c815ab032e4bebb93f7516dd66ad111d7002facb27 + md5: bfeae3d2acc84bf8ef6776b4b506c130 + depends: + - adbc-driver-manager >=1.10.0,<2.0a0 + - importlib_resources + - libadbc-driver-sqlite >=1.10.0,<1.10.1.0a0 + - python >=3.10 + constrains: + - pyarrow >=8.0.0 + license: Apache-2.0 + license_family: APACHE + size: 25190 + timestamp: 1767962948604 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiofiles-25.1.0-pyhcf101f3_1.conda + sha256: f37288164cf28b916b184b0a5e89225e17af0e0c9bcd4d0dc39e5a597fcfeed1 + md5: a6435dc39a8031d33d6d52859913e939 + depends: + - python >=3.10 + - python + license: Apache-2.0 + license_family: APACHE + size: 24824 + timestamp: 1767290524894 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.22.1-pyhcf101f3_1.conda + sha256: 8b23dfe615f958724269733d348139fb7615f29e0d35a9b556fe823d65a941a8 + md5: 9be31ce1f8e613fbb3b140430e109d41 + depends: + - python >=3.10 + - python + license: MIT + license_family: MIT + size: 22318 + timestamp: 1767730199932 +- conda: https://conda.anaconda.org/conda-forge/noarch/alembic-1.18.4-pyhcf101f3_0.conda + sha256: 83fc576dbcd59427f55be9623e1b101a1607ed9b4dc8633d86ada30c6ec1cf1d + md5: c45fa7cf996b766cb63eadf3c3e6408a + depends: + - python >=3.10 + - sqlalchemy >=1.4.23 + - mako + - typing_extensions >=4.12 + - tomli + - python + license: MIT + license_family: MIT + size: 184763 + timestamp: 1770806831769 +- conda: https://conda.anaconda.org/conda-forge/noarch/annotated-doc-0.0.4-pyhcf101f3_0.conda + sha256: cc9fbc50d4ee7ee04e49ee119243e6f1765750f0fd0b4d270d5ef35461b643b1 + md5: 52be5139047efadaeeb19c6a5103f92a + depends: + - python >=3.10 + - python + license: MIT + license_family: MIT + size: 14222 + timestamp: 1762868213144 +- conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 + md5: 2934f256a8acfe48f6ebb4fce6cde29c + depends: + - python >=3.9 + - typing-extensions >=4.0.0 + license: MIT + license_family: MIT + size: 18074 + timestamp: 1733247158254 +- conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.13.0-pyhcf101f3_0.conda + sha256: f09aed24661cd45ba54a43772504f05c0698248734f9ae8cd289d314ac89707e + md5: af2df4b9108808da3dc76710fe50eae2 + depends: + - exceptiongroup >=1.0.2 + - idna >=2.8 + - python >=3.10 + - typing_extensions >=4.5 + - python + constrains: + - trio >=0.32.0 + - uvloop >=0.22.1 + - winloop >=0.2.3 + license: MIT + license_family: MIT + size: 146764 + timestamp: 1774359453364 +- 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 + size: 2706396 + timestamp: 1718551242397 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda + sha256: ac438ce5d3d3673a9188b535fc7cda413b479f0d52536aeeac1bd82faa656ea0 + md5: cc744ac4efe5bcaa8cca51ff5b850df0 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 3250813 + timestamp: 1718551360260 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aom-3.9.1-hf036a51_0.conda + sha256: 3032f2f55d6eceb10d53217c2a7f43e1eac83603d91e21ce502e8179e63a75f5 + md5: 3f17bc32cb7fcb2b4bf3d8d37f656eb8 + depends: + - __osx >=10.13 + - libcxx >=16 + license: BSD-2-Clause + license_family: BSD + size: 2749186 + timestamp: 1718551450314 +- 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 + size: 2235747 + timestamp: 1718551382432 +- conda: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyhd8ed1ab_1.conda + sha256: 5b9ef6d338525b332e17c3ed089ca2f53a5d74b7a7b432747d29c6466e39346d + md5: f4e90937bbfc3a4a92539545a37bb448 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 14835 + timestamp: 1733754069532 +- 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 + size: 10076 + timestamp: 1733332433806 +- conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + sha256: bea62005badcb98b1ae1796ec5d70ea0fc9539e7d59708ac4e7d41e2f4bb0bad + md5: 8ac12aff0860280ee0cff7fa2cf63f3b + depends: + - argon2-cffi-bindings + - python >=3.9 + - typing-extensions + constrains: + - argon2_cffi ==999 + license: MIT + license_family: MIT + size: 18715 + timestamp: 1749017288144 +- conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-25.1.0-py313h07c4f96_2.conda + sha256: ad188ccc06a06c633dc124b09e9e06fb9df4c32ffc38acc96ecc86e506062090 + md5: 27bbec9f2f3a15d32b60ec5734f5b41c + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.0.1 + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 35943 + timestamp: 1762509452935 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/argon2-cffi-bindings-25.1.0-py313h6194ac5_2.conda + sha256: 05d5a9c5a430a042415059ec2aea7c18f5b622f9e60a87455dfbae2b376b84a1 + md5: cdb38f966e17713e104a33156c6c1586 + depends: + - cffi >=1.0.1 + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 37634 + timestamp: 1762509564574 +- conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-25.1.0-py313hf050af9_2.conda + sha256: e2644e87c26512e38c63ace8fc19120a472c0983718a8aa264862c25294d0632 + md5: 1fedb53ffc72b7d1162daa934ad7996b + depends: + - __osx >=10.13 + - cffi >=1.0.1 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 33301 + timestamp: 1762509795647 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-25.1.0-py313h6535dbc_2.conda + sha256: 05ea6fa7109235cfb4fc24526bae1fe82d88bbb5e697ab3945c313f5f041af5b + md5: e23e087109b2096db4cf9a3985bab329 + depends: + - __osx >=11.0 + - cffi >=1.0.1 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 33947 + timestamp: 1762510144907 +- conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.4.0-pyhcf101f3_0.conda + sha256: 792da8131b1b53ff667bd6fc617ea9087b570305ccb9913deb36b8e12b3b5141 + md5: 85c4f19f377424eafc4ed7911b291642 + depends: + - python >=3.10 + - python-dateutil >=2.7.0 + - python-tzdata + - python + license: Apache-2.0 + license_family: APACHE + size: 113854 + timestamp: 1760831179410 +- conda: https://conda.anaconda.org/conda-forge/noarch/asgi-correlation-id-4.3.3-pyhd8ed1ab_0.conda + sha256: dfb3c7cfa5c2704ca0bfc3259f06fce3c722e1bcfcb13174149e65c6c8fabdec + md5: 750ade3651ec3b17658b01c5671fec94 + depends: + - python >=3.7,<4.0 + - starlette >=0.18 + license: BSD-4-Clause + size: 19693 + timestamp: 1725901418784 +- 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 + size: 28797 + timestamp: 1763410017955 +- conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.3.0-pyhcf101f3_0.conda + sha256: ea8486637cfb89dc26dc9559921640cd1d5fd37e5e02c33d85c94572139f2efe + md5: b85e84cb64c762569cc1a760c2327e0a + depends: + - python >=3.10 + - typing_extensions >=4.0.0 + - python + license: MIT + license_family: MIT + size: 22949 + timestamp: 1773926359134 +- conda: https://conda.anaconda.org/conda-forge/noarch/async-timeout-5.0.1-pyhcf101f3_2.conda + sha256: 6638b68ab2675d0bed1f73562a4e75a61863b903be1538282cddb56c8e8f75bd + md5: 0d0ef7e4a0996b2c4ac2175a12b3bf69 + depends: + - python >=3.10 + - python + license: Apache-2.0 + license_family: APACHE + size: 13559 + timestamp: 1767290444597 +- conda: https://conda.anaconda.org/conda-forge/linux-64/asyncpg-0.31.0-py313h54dd161_1.conda + sha256: 7bc4874a25ab5e4508db7a885d47716d62e2a0a9d592882f157564bfd8da6182 + md5: c65459a6764b53107358faed99c042a7 + depends: + - python + - async-timeout >=4.0.3 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: APACHE + size: 751821 + timestamp: 1768733524478 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/asyncpg-0.31.0-py313h62ef0ea_1.conda + sha256: edaa21d755cc8869c73facba39c342312587d388ce9c6e39860b633f7a979051 + md5: 5046111944a148e7987bc16b0d1f2b85 + depends: + - python + - async-timeout >=4.0.3 + - python 3.13.* *_cp313 + - libgcc >=14 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: APACHE + size: 721254 + timestamp: 1768733543291 +- conda: https://conda.anaconda.org/conda-forge/osx-64/asyncpg-0.31.0-py313h16366db_1.conda + sha256: b8b7c34ccc976d474029b0d4d2bde4dbff7888b59c945b1b26c9710367ba5ec5 + md5: 828101eebdbc16ac37e3d20044404467 + depends: + - python + - async-timeout >=4.0.3 + - __osx >=10.13 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: APACHE + size: 685496 + timestamp: 1768733527345 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/asyncpg-0.31.0-py313h6688731_1.conda + sha256: 0dc26262e6618acbfdfe4acb551549c65e244e8380a5b953c40813ea6428ed85 + md5: 58a9f408e9d83c965278b9a4f7af369c + depends: + - python + - async-timeout >=4.0.3 + - __osx >=11.0 + - python 3.13.* *_cp313 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: APACHE + size: 669749 + timestamp: 1768733554713 +- 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 + size: 64927 + timestamp: 1773935801332 +- conda: https://conda.anaconda.org/conda-forge/noarch/awkward-2.9.0-pyhcf101f3_0.conda + sha256: e92d541cc405fec08b46cb35c36eedf9dc04df7bec5e6aaf0e1ea8f11b503d83 + md5: 93fcf05b2824e06745272380bc7a7dfc + depends: + - python >=3.10 + - awkward-cpp ==52 + - importlib-metadata >=4.13.0 + - numpy >=1.18.0 + - packaging + - typing_extensions >=4.1.0 + - fsspec >=2022.11.0 + - python + license: BSD-3-Clause + license_family: BSD + size: 471272 + timestamp: 1770661007420 +- conda: https://conda.anaconda.org/conda-forge/linux-64/awkward-cpp-52-py313hd3cbb54_0.conda + sha256: 857c0dc555284bc51c72adebf99aa8b9529847c5ced25ea5711b1cdfac4e7d6a + md5: e2599c15b09b255b8a59be01ec743e68 + depends: + - python + - numpy >=1.21.3 + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - _x86_64-microarch-level >=1 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 618125 + timestamp: 1770652056311 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/awkward-cpp-52-py313h75bc965_0.conda + sha256: c4ee207a116f34195725158e2c82b42a05b5abc4d593ef4bec59b9fa9564eccf + md5: 4c339af478ca48f0554316115b0d801b + depends: + - python + - numpy >=1.21.3 + - libstdcxx >=14 + - libgcc >=14 + - python 3.13.* *_cp313 + - python_abi 3.13.* *_cp313 + track_features: + - awkward-cpp-p-0 + license: BSD-3-Clause + license_family: BSD + size: 566506 + timestamp: 1770652039982 +- conda: https://conda.anaconda.org/conda-forge/osx-64/awkward-cpp-52-py313h45a0507_0.conda + sha256: a237af4c55237b2707638fefdb94cec3bdedbf093fea534963662a261d8c1ac0 + md5: 4d88bf9f8138e6a4dfcb3b356b45cd22 + depends: + - python + - numpy >=1.21.3 + - _x86_64-microarch-level >=1 + - __osx >=10.13 + - libcxx >=19 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 528939 + timestamp: 1770651924710 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/awkward-cpp-52-py313h2af2deb_0.conda + sha256: 8bfe8ea72ce6211905041c555fd8b20c15538eee26ff7a058ace4d6829d2ab03 + md5: 913232a6559e78adf9002410e93c0b1e + depends: + - python + - numpy >=1.21.3 + - libcxx >=19 + - __osx >=11.0 + - python 3.13.* *_cp313 + - python_abi 3.13.* *_cp313 + track_features: + - awkward-cpp-p-0 + license: BSD-3-Clause + license_family: BSD + size: 469361 + timestamp: 1770651918950 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.10.1-h2d2dd48_2.conda + sha256: 292aa18fe6ab5351710e6416fbd683eaef3aa5b1b7396da9350ff08efc660e4f + md5: 675ea6d90900350b1dcfa8231a5ea2dd + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - 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 + - aws-c-http >=0.10.12,<0.10.13.0a0 + - aws-c-io >=0.26.3,<0.26.4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 134426 + timestamp: 1774274932726 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.10.1-h5c15aeb_2.conda + sha256: d15701b2f94a2dcbeddbd67ee2fd15fd021cb80af5eb7ca9a3ec0fdff1340e69 + md5: 6f432449fb77917e5ace87fa300a36e6 + depends: + - libgcc >=14 + - aws-c-http >=0.10.12,<0.10.13.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-io >=0.26.3,<0.26.4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 142765 + timestamp: 1774274954323 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-auth-0.10.1-hfd47d4b_2.conda + sha256: a8a1ed63c7917278de7c1084d5a53ea7697e4d661757f51fa9556f6d043d2332 + md5: 1ad72a30bee6953028cce501c81476eb + depends: + - __osx >=11.0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 + - aws-c-io >=0.26.3,<0.26.4.0a0 + - aws-c-http >=0.10.12,<0.10.13.0a0 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + license: Apache-2.0 + license_family: APACHE + size: 120834 + timestamp: 1774275051230 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.10.1-hcb83491_2.conda + sha256: aba942578ad57e7b584434ed4e39c5ff7ed4ad3f326ac3eda26913ca343ea255 + md5: 1c701edc28f543a0e040325b223d5ca0 + depends: + - __osx >=11.0 + - 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-cal >=0.9.13,<0.9.14.0a0 + - aws-c-http >=0.10.12,<0.10.13.0a0 + license: Apache-2.0 + license_family: APACHE + size: 116820 + timestamp: 1774275057443 +- 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 + size: 56230 + timestamp: 1764593147526 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.9.13-hc50a40c_1.conda + sha256: 6273c7d5420eeb2450e0f2ce23d1d5a8da165a535ca8a7d2ad7005104d8697d8 + md5: 3c3c5433231502463d52abe1977885ad + depends: + - 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 + size: 59473 + timestamp: 1764593161815 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-cal-0.9.13-hea39f9f_1.conda + sha256: c085b749572ca7c137dfbf8a2a4fd505657f8f7f8a7b374d5f41bf4eb2dd9214 + md5: cbf7be9e03e8b5e38ec60b6dbdf3a649 + depends: + - __osx >=10.13 + - aws-c-common >=0.12.6,<0.12.7.0a0 + license: Apache-2.0 + license_family: Apache + size: 45262 + timestamp: 1764593359925 +- 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 + size: 45233 + timestamp: 1764593742187 +- 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 + size: 239605 + timestamp: 1763585595898 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.12.6-he30d5cf_0.conda + sha256: e4e9c47001c9a8bb9480c02a3e5c00d5494be71d952d1dbb9ea8506e97045fda + md5: f129515fce5e6cd2262ad2ba35ae2fe1 + depends: + - libgcc >=14 + license: Apache-2.0 + license_family: Apache + size: 263061 + timestamp: 1763585722720 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-common-0.12.6-h8616949_0.conda + sha256: 66fb2710898bb3e25cb4af52ee88a0559dcde5e56e6bd09b31b98a346a89b2e3 + md5: c7f2d588a6d50d170b343f3ae0b72e62 + depends: + - __osx >=10.13 + license: Apache-2.0 + license_family: Apache + size: 230785 + timestamp: 1763585852531 +- 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 + size: 224116 + timestamp: 1763585987935 +- 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 + size: 22278 + timestamp: 1767790836624 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.2-h6f28e42_0.conda + sha256: 835cdc4ad2e61354cb9f91068e6f8e5e90469fbbd2f2cc7e72bb6c16614bc81e + md5: ef3cfebe67bca3dfa00e8c1c470aac01 + depends: + - libgcc >=14 + - aws-c-common >=0.12.6,<0.12.7.0a0 + license: Apache-2.0 + license_family: APACHE + size: 23531 + timestamp: 1767790896527 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-compression-0.3.2-hb9ea233_0.conda + sha256: 599eff2c7b6d2e4e2ed1594e330f5f4f06f0fbe21d20d53beb78e3443344555c + md5: da394e3dc9c78278c8bdbd3a81fdbdb2 + depends: + - __osx >=10.13 + - aws-c-common >=0.12.6,<0.12.7.0a0 + license: Apache-2.0 + license_family: APACHE + size: 21769 + timestamp: 1767790884673 +- 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 + size: 21470 + timestamp: 1767790900862 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.6.0-h9b893ba_1.conda + sha256: 4a1a060ab40cb4fa39d24418758ca9faa1f51df6918f05143118e79bb11b4350 + md5: cd4946050ecfcb3c6fd09106ae6a261e + depends: + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - aws-c-io >=0.26.3,<0.26.4.0a0 + - aws-checksums >=0.2.10,<0.2.11.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + license: Apache-2.0 + license_family: APACHE + size: 58989 + timestamp: 1774270004533 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.6.0-h7ae2b9c_1.conda + sha256: 6cd1d9edace543dee65fbaee18ff7e53049af7e1b99164586460e35419fec1da + md5: 6517e37f9cdfca36c5e6ebd83f695cad + depends: + - libstdcxx >=14 + - libgcc >=14 + - aws-checksums >=0.2.10,<0.2.11.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 + size: 62078 + timestamp: 1774270021010 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-event-stream-0.6.0-ha9bd753_1.conda + sha256: ebabb698d403645908c80a4b5b68574ae1bcdd4e8fa2656b5fa3e90f436aa3ca + md5: 0a2789f092ae9f948052a9879e3db8b1 + depends: + - __osx >=11.0 + - libcxx >=19 + - aws-c-common >=0.12.6,<0.12.7.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 + size: 53812 + timestamp: 1774270090968 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.6.0-h351c84d_1.conda + sha256: 8927fac75ad4cc4a2fbece5dbcc666cd6672a8ad87370cb183ff4d4f3e11f371 + md5: 228fe528ff814e420d8e13757f3c381e + depends: + - libcxx >=19 + - __osx >=11.0 + - aws-c-common >=0.12.6,<0.12.7.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 + size: 53641 + timestamp: 1774270084862 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.10.12-h4bacb7b_1.conda + sha256: c6f910d400ef9034493988e8cd37bd4712e42d85921122bcda4ba68d4614b131 + md5: 7bc920933e5fb225aba86a788164a8f1 + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - aws-c-io >=0.26.3,<0.26.4.0a0 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + - aws-c-compression >=0.3.2,<0.3.3.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + license: Apache-2.0 + license_family: APACHE + size: 225868 + timestamp: 1774270031584 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.10.12-h8f13f89_1.conda + sha256: 0ece973773521ba876c6657128dde0e352e17a1bb521580bdb0b1ccaf7ccb6d0 + md5: 4d0cb5765415582643197c5ff30c1a4e + depends: + - libgcc >=14 + - aws-c-io >=0.26.3,<0.26.4.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-c-compression >=0.3.2,<0.3.3.0a0 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + license: Apache-2.0 + license_family: APACHE + size: 215103 + timestamp: 1774270042527 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-http-0.10.12-h1037d30_1.conda + sha256: 2d4f9530f8501f7d4dba75410ffccfce077f8146aaffb480966dd170b617e225 + md5: 653c8a2b287bc6980b834b0a94896f56 + depends: + - __osx >=11.0 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + - aws-c-io >=0.26.3,<0.26.4.0a0 + - aws-c-compression >=0.3.2,<0.3.3.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + license: Apache-2.0 + license_family: APACHE + size: 193409 + timestamp: 1774270095369 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.10.12-h95cdebe_1.conda + sha256: b25380b43c2c5733dcaac88b075fa286893af1c147ca40d50286df150ace5fb8 + md5: 806ff124512457583d675c62336b1392 + depends: + - __osx >=11.0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-c-io >=0.26.3,<0.26.4.0a0 + - aws-c-compression >=0.3.2,<0.3.3.0a0 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + license: Apache-2.0 + license_family: APACHE + size: 172940 + timestamp: 1774270153001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.26.3-hc87160b_0.conda + sha256: c66ebb7815949db72bab7c86bf477197e4bc6937c381cf32248bdd1ce496db00 + md5: dde6a3e4fe6bb2ecd2a7050dd1e701fb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + - s2n >=1.7.1,<1.7.2.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + license: Apache-2.0 + license_family: APACHE + size: 181624 + timestamp: 1773868304737 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.26.3-h8d25f22_0.conda + sha256: 43d8b58db750a94764df118fc748392e324b79f85f20e6e18bdb6134d0d80179 + md5: 36ea3f8f0416ecadd8f48d158790b6c6 + depends: + - libgcc >=14 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - s2n >=1.7.1,<1.7.2.0a0 + license: Apache-2.0 + license_family: APACHE + size: 185910 + timestamp: 1773868325640 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-io-0.26.3-hc95b61d_0.conda + sha256: 666c24912c4fcc33f87f232f0154e784c44e953c718a90d37ee660b56735d693 + md5: 6db10338a49d5ed2bb4aa1099660a7b9 + 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 + size: 182875 + timestamp: 1773868329671 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.26.3-h4137820_0.conda + sha256: 0e6ba2c8f250f466b9d671d3970e1f7c149c925b79c10fa7778708192a2a7833 + md5: 730d1cbd0973bd7ac150e181d3b572f3 + depends: + - __osx >=11.0 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + license: Apache-2.0 + license_family: APACHE + size: 177072 + timestamp: 1773868341204 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.15.2-he9ea9c5_1.conda + sha256: 3fc68793c0ca2c36524ae67abac696ce6b066a8be6b2b980cbdc40ae1310041a + md5: 8e77514673f5773b40ff8953583938b6 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - aws-c-io >=0.26.3,<0.26.4.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-c-http >=0.10.12,<0.10.13.0a0 + license: Apache-2.0 + license_family: APACHE + size: 221711 + timestamp: 1774275485771 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.15.2-hdc5d86d_1.conda + sha256: 640941aae63031de6e5d118a32741ba3ef3d892d077052d92e4c5fdaec55fbf0 + md5: a407faf5b7e0c97acfb83ff7032806ac + depends: + - libgcc >=14 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-c-io >=0.26.3,<0.26.4.0a0 + - aws-c-http >=0.10.12,<0.10.13.0a0 + license: Apache-2.0 + license_family: APACHE + size: 196681 + timestamp: 1774275512330 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-mqtt-0.15.2-h6fabf1c_1.conda + sha256: 038c5ee255149fac9a8ae250ec4ae07874de03b441e13bbcb1da2f1209bf824e + md5: 9b31ecb17e02da5f8fb4107f158f7ff2 + depends: + - __osx >=11.0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-c-io >=0.26.3,<0.26.4.0a0 + - aws-c-http >=0.10.12,<0.10.13.0a0 + license: Apache-2.0 + license_family: APACHE + size: 193461 + timestamp: 1774275585830 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.15.2-h69e7467_1.conda + sha256: 69a12dfccdeb1497e3fbcaedea77c7adab854b482558aaa4ce5dea3a80d08c76 + md5: 1f4f6b9a183bea3ddf9af5ebcda0933d + depends: + - __osx >=11.0 + - aws-c-io >=0.26.3,<0.26.4.0a0 + - aws-c-http >=0.10.12,<0.10.13.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + license: Apache-2.0 + license_family: APACHE + size: 156423 + timestamp: 1774275623505 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.11.5-h6d69fc9_5.conda + sha256: c15869656f5fbebe27cc5aa58b23831f75d85502d324fedd7ee7e552c79b495d + md5: 4c5c16bf1133dcfe100f33dd4470998e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - aws-c-io >=0.26.3,<0.26.4.0a0 + - aws-checksums >=0.2.10,<0.2.11.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-c-http >=0.10.12,<0.10.13.0a0 + - openssl >=3.5.5,<4.0a0 + - aws-c-auth >=0.10.1,<0.10.2.0a0 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + license: Apache-2.0 + license_family: APACHE + size: 151340 + timestamp: 1774282148690 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.11.5-h1747a43_5.conda + sha256: 231feeb591c2e77459c60f69288aaed9114d323141ff7a09fb4ad70d6c06c9df + md5: 3dec5bb65af0e9164fe1d1f7247e386d + depends: + - libgcc >=14 + - aws-c-common >=0.12.6,<0.12.7.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 + - openssl >=3.5.5,<4.0a0 + - aws-c-http >=0.10.12,<0.10.13.0a0 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + license: Apache-2.0 + license_family: APACHE + size: 156882 + timestamp: 1774282164494 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-s3-0.11.5-hb15a67f_5.conda + sha256: a32c773421a3e29f6aa442a21d870b456664e89f0246e9787a0b817b8b44eb71 + md5: de95ae4c99b257ffeb2391c9d46b6e58 + depends: + - __osx >=11.0 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + - aws-c-auth >=0.10.1,<0.10.2.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-c-http >=0.10.12,<0.10.13.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 + size: 134173 + timestamp: 1774282225703 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.11.5-ha5d16b2_5.conda + sha256: bd8f4ffb8346dd02bda2bc1ae9993ebdb131298b1308cb9e6b1e771b530d9dd5 + md5: f33735fd60f9c4a21c51a0283eb8afc1 + depends: + - __osx >=11.0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-c-http >=0.10.12,<0.10.13.0a0 + - aws-c-auth >=0.10.1,<0.10.2.0a0 + - aws-c-cal >=0.9.13,<0.9.14.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 + size: 129783 + timestamp: 1774282252139 +- 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 + size: 59383 + timestamp: 1764610113765 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.4-h6f28e42_4.conda + sha256: 33c5279607c4b47cdd6e7217d70410ced7b67aa430aa98f77a55c068600dff09 + md5: 92b452c0a36ed41ae93db16662f7ee8b + depends: + - libgcc >=14 + - aws-c-common >=0.12.6,<0.12.7.0a0 + license: Apache-2.0 + license_family: APACHE + size: 62893 + timestamp: 1764755676453 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-sdkutils-0.2.4-h901532c_4.conda + sha256: 468629dbf52fee6dcabda1fcb0c0f2f29941b9001dcc75a57ebfbe38d0bde713 + md5: b384fb05730f549a55cdb13c484861eb + depends: + - __osx >=10.13 + - aws-c-common >=0.12.6,<0.12.7.0a0 + license: Apache-2.0 + license_family: APACHE + size: 55664 + timestamp: 1764610141049 +- 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 + size: 53430 + timestamp: 1764755714246 +- 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 + size: 101435 + timestamp: 1771063496927 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.10-h6f28e42_0.conda + sha256: c8c7743eb555f9cfc541aa7ebfa23992e74cac0b6f4bac13a4a62851016e6f16 + md5: 17dbd98b7b170b74b8434428c3a442bc + depends: + - libgcc >=14 + - aws-c-common >=0.12.6,<0.12.7.0a0 + license: Apache-2.0 + license_family: APACHE + size: 99788 + timestamp: 1771063483611 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-checksums-0.2.10-h31279ed_0.conda + sha256: 8776d3d51e03ba373a13e4cd4adaf70fd15323c50f1dde85669dc4e379c10dbd + md5: 28a458ade86d135a90951d816760cc5c + depends: + - __osx >=11.0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + license: Apache-2.0 + license_family: APACHE + size: 95954 + timestamp: 1771063481230 +- 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 + size: 91917 + timestamp: 1771063496505 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.37.4-h4c8aef7_3.conda + sha256: b82d0bc6d4b716347e1aefb0acc6e4bff04b3f807537ada9b458a7e467beb2a0 + md5: 798a499cf76e530a992365d557ba5827 + depends: + - libgcc >=14 + - libstdcxx >=14 + - __glibc >=2.17,<3.0.a0 + - aws-c-event-stream >=0.6.0,<0.6.1.0a0 + - aws-c-mqtt >=0.15.2,<0.15.3.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-c-s3 >=0.11.5,<0.11.6.0a0 + - aws-c-http >=0.10.12,<0.10.13.0a0 + - aws-c-io >=0.26.3,<0.26.4.0a0 + - aws-c-auth >=0.10.1,<0.10.2.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 + size: 410120 + timestamp: 1774286908570 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.37.4-h27c02a5_3.conda + sha256: 2a8d7aff96dc5f42f259fb5f687011efb27f02cf8bba895b6cdd3c936b4536f9 + md5: e535c1bc3afb6aaa11e6818a66395559 + depends: + - libgcc >=14 + - libstdcxx >=14 + - aws-c-event-stream >=0.6.0,<0.6.1.0a0 + - aws-c-auth >=0.10.1,<0.10.2.0a0 + - aws-c-io >=0.26.3,<0.26.4.0a0 + - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 + - aws-c-http >=0.10.12,<0.10.13.0a0 + - aws-c-mqtt >=0.15.2,<0.15.3.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.11.5,<0.11.6.0a0 + license: Apache-2.0 + license_family: APACHE + size: 326733 + timestamp: 1774286925145 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-crt-cpp-0.37.4-h1135fef_3.conda + sha256: 9b0b483955197f0e4e6107adab3f9ccfbcc6f55716fe1a79d0708e0494c9f33e + md5: 5db17ee0bbf98a7f75d49fb621f446da + depends: + - libcxx >=19 + - __osx >=11.0 + - aws-c-event-stream >=0.6.0,<0.6.1.0a0 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + - aws-c-mqtt >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.26.3,<0.26.4.0a0 + - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 + - aws-c-s3 >=0.11.5,<0.11.6.0a0 + - aws-c-http >=0.10.12,<0.10.13.0a0 + - aws-c-auth >=0.10.1,<0.10.2.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + license: Apache-2.0 + license_family: APACHE + size: 347001 + timestamp: 1774287065748 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.37.4-h5505c15_3.conda + sha256: bb9e0abbe22825810776e4c6929f4587567b795272126aaca7e55b30c91f2d29 + md5: a13b36ec511c0589632e3689cd34ccc0 + depends: + - libcxx >=19 + - __osx >=11.0 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + - aws-c-mqtt >=0.15.2,<0.15.3.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 + - aws-c-event-stream >=0.6.0,<0.6.1.0a0 + - aws-c-http >=0.10.12,<0.10.13.0a0 + - aws-c-auth >=0.10.1,<0.10.2.0a0 + - aws-c-s3 >=0.11.5,<0.11.6.0a0 + - aws-c-io >=0.26.3,<0.26.4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 269460 + timestamp: 1774286981607 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.747-hc3785e1_3.conda + sha256: 62b7e565852fa061a26281b2890e432853fabefa8ea3dc22d00d39295a030805 + md5: cfffedbfd03d5a6bb74157c14b6f0cdf + depends: + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=14 + - libgcc >=14 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - libzlib >=1.3.1,<2.0a0 + - aws-crt-cpp >=0.37.4,<0.37.5.0a0 + - aws-c-event-stream >=0.6.0,<0.6.1.0a0 + - libcurl >=8.19.0,<9.0a0 + license: Apache-2.0 + license_family: APACHE + size: 3624521 + timestamp: 1773666645246 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.747-h4846bbe_3.conda + sha256: 620a06a52270209ccfbf3845c0b19f9e1a95ec02bc9f85a61b1a3bcf43a90dfc + md5: e8af6ca47a3bad469477b27f0fedb8ba + depends: + - libgcc >=14 + - libstdcxx >=14 + - aws-crt-cpp >=0.37.4,<0.37.5.0a0 + - aws-c-event-stream >=0.6.0,<0.6.1.0a0 + - libzlib >=1.3.1,<2.0a0 + - libcurl >=8.19.0,<9.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + license: Apache-2.0 + license_family: APACHE + size: 3437133 + timestamp: 1773666674653 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-sdk-cpp-1.11.747-h17cee85_3.conda + sha256: 18d5f429af85e49fc0d6137e18cc9f01e7d780a41b0b00294e2675a11518f13b + md5: e8299cee5be5f088f68a0d354a9e0b78 + depends: + - libcxx >=19 + - __osx >=11.0 + - aws-c-event-stream >=0.6.0,<0.6.1.0a0 + - libcurl >=8.19.0,<9.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-crt-cpp >=0.37.4,<0.37.5.0a0 + - libzlib >=1.3.1,<2.0a0 + license: Apache-2.0 + license_family: APACHE + size: 3476887 + timestamp: 1773666675362 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.747-had22720_3.conda + sha256: b5ce4fafe17ab58980f944b9a45504ce45dda0423064591d51240eb8308589af + md5: 157ae2a6008d62f61107f5b78dce06d2 + depends: + - libcxx >=19 + - __osx >=11.0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-c-event-stream >=0.6.0,<0.6.1.0a0 + - libcurl >=8.19.0,<9.0a0 + - libzlib >=1.3.1,<2.0a0 + - aws-crt-cpp >=0.37.4,<0.37.5.0a0 + license: Apache-2.0 + license_family: APACHE + size: 3260974 + timestamp: 1773666675518 +- 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 + size: 348729 + timestamp: 1768837519361 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.16.2-h412bcfc_0.conda + sha256: f9660e07715c3e39acc669b135eb21b720dcbf67a9b70b2c4844cd3f417d1da1 + md5: f33215f0a86cb891a25fe3474322c52f + depends: + - libcurl >=8.18.0,<9.0a0 + - libgcc >=14 + - libstdcxx >=14 + - openssl >=3.5.4,<4.0a0 + license: MIT + license_family: MIT + size: 339770 + timestamp: 1768839060052 +- conda: https://conda.anaconda.org/conda-forge/osx-64/azure-core-cpp-1.16.2-h87f1c7e_0.conda + sha256: bc2cde0d7204b3574084de1d83d80bceb7eb1550a17a0f0ccedbb312145475d3 + md5: 24997c4c96d1875956abd9ce37f262eb + depends: + - __osx >=10.13 + - libcurl >=8.18.0,<9.0a0 + - libcxx >=19 + - openssl >=3.5.4,<4.0a0 + license: MIT + license_family: MIT + size: 298273 + timestamp: 1768837905794 +- 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 + size: 290928 + timestamp: 1768837810218 +- 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 + size: 250511 + timestamp: 1770344967948 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.13.3-h54aad0d_1.conda + sha256: 6fa59cec7b2f7e707c7df75bd79fd73e81e977b4c776a5906f2595b047727857 + md5: fa3f5e45f4cae42b2258f76e76246a6b + depends: + - 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 + size: 229882 + timestamp: 1770346575036 +- conda: https://conda.anaconda.org/conda-forge/osx-64/azure-identity-cpp-1.13.3-h1135191_1.conda + sha256: 182769c18c23e2b29bb35f6fca4c233f0125f84418dacb2c36912298dafbe42e + md5: 14d2491d2dfcbb127fa0ff6219704ab5 + depends: + - __osx >=10.13 + - azure-core-cpp >=1.16.2,<1.16.3.0a0 + - libcxx >=19 + - openssl >=3.5.5,<4.0a0 + license: MIT + license_family: MIT + size: 175167 + timestamp: 1770345309347 +- 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 + size: 167424 + timestamp: 1770345338067 +- 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 + size: 579825 + timestamp: 1770321459546 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.16.0-h3935e50_1.conda + sha256: 65507ad21613f91c5f1091aa8c61e3bb50400adec59cdc72fe7d7b8c3c867baf + md5: 14916a528849f395fa7ae4ba57bfbe52 + depends: + - 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 + size: 519763 + timestamp: 1770323249512 +- conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-blobs-cpp-12.16.0-h9b4319f_1.conda + sha256: e4756a363d3abf2de78c068df050d7db53072c27f5a12666e008bd027ab5610a + md5: 2d5fe7cce366e8b01d4b45985c131fb8 + depends: + - __osx >=10.13 + - 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 + size: 433648 + timestamp: 1770321878865 +- 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 + size: 426735 + timestamp: 1770322058844 +- 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 + size: 150405 + timestamp: 1770240307002 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.12.0-h2356a00_1.conda + sha256: 8a46628c96c1680642a9febdcbe09e9f69a4a95cb73c7c383fc3cda0a2508f01 + md5: 05eb1cab5bd36615409adc9d69457bad + depends: + - 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 + size: 141299 + timestamp: 1770241726288 +- conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-common-cpp-12.12.0-h7373072_1.conda + sha256: 4ecd8e48c9222fce1c69d25e85056ab60c44e65b7a160484aae86a65c684b7e8 + md5: 743d031253118e250b26f32809910191 + depends: + - __osx >=10.13 + - 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 + size: 126170 + timestamp: 1770240607790 +- 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 + size: 121500 + timestamp: 1770240531430 +- 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 + size: 302524 + timestamp: 1770384269834 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.14.0-h23384eb_1.conda + sha256: 4c0d300688224328306887be3f4f703bb0d9d7300c47044e6afc65873ec5e611 + md5: 2f3f77890de239042067d302ce1346a2 + depends: + - 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 + size: 269986 + timestamp: 1770385876662 +- conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.14.0-he1781d6_1.conda + sha256: 1ae895785ce2947686ba55126e8ebda4a42f9e0c992bf2c710436d95c85ac756 + md5: cd3513aad4fac4078622d18538244fdc + depends: + - __osx >=10.13 + - 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 + size: 205170 + timestamp: 1770384661520 +- 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 + size: 198153 + timestamp: 1770384528646 +- 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 + size: 7684321 + timestamp: 1772555330347 +- conda: https://conda.anaconda.org/conda-forge/noarch/backports.asyncio.runner-1.2.0-pyh5ded981_2.conda + sha256: 2ade43752e8494f110a2cfb9e4d5b1ea29e3dcb037fba63395442d00371e8bf9 + md5: 0fd7e45c862b3305226a992f9f7b204a + depends: + - python >=3.11 + - python + constrains: + - python >=3.11 + license: PSF-2.0 + license_family: PSF + size: 10186 + timestamp: 1753456386827 +- conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.3.0-py313h18e8e13_0.conda + sha256: 9552afbec37c4d8d0e83a5c4c6b3c7f4b8785f935094ce3881e0a249045909ce + md5: d9e90792551a527200637e23a915dd79 + depends: + - python + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - python_abi 3.13.* *_cp313 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause AND MIT AND EPL-2.0 + size: 240943 + timestamp: 1767044981366 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/backports.zstd-1.3.0-py313h3d57138_0.conda + sha256: 61e4757233111133b64125706c9c5dc2d36818eec0cc1894784a08e615a87b37 + md5: c0fd0009041efedb247ba54df0f423ee + depends: + - python + - python 3.13.* *_cp313 + - libgcc >=14 + - python_abi 3.13.* *_cp313 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause AND MIT AND EPL-2.0 + size: 247081 + timestamp: 1767045002495 +- conda: https://conda.anaconda.org/conda-forge/osx-64/backports.zstd-1.3.0-py313h591e92b_0.conda + sha256: 4133ba0e5ab6a0955b57a49ad4014148df6e4b79bef4309a1cdd407afd853444 + md5: c602f30b6c45567cd5cfb074631beb5d + depends: + - python + - __osx >=10.13 + - python_abi 3.13.* *_cp313 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause AND MIT AND EPL-2.0 + size: 241212 + timestamp: 1767044991370 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/backports.zstd-1.3.0-py313h48bb75e_0.conda + sha256: f3047ca3b41bb444b4b5a71a6eee182623192c77019746dd4685fd260becb249 + md5: 54008c5cc8928e5cb5a0f9206b829451 + depends: + - python + - python 3.13.* *_cp313 + - __osx >=11.0 + - zstd >=1.5.7,<1.6.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause AND MIT AND EPL-2.0 + size: 244371 + timestamp: 1767045003420 +- 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 + 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 + 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 + 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 + size: 4409 + timestamp: 1770719370682 +- 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 + size: 48427 + timestamp: 1733513201413 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/blosc-1.21.6-hb4dfabd_1.conda + sha256: f1e408fc32e1fda8dee9c3fceee5650fd622526e4dc6fa1f1926f497b5508d13 + md5: 2cbbd6264ad58887c40aab37f2abdaba + depends: + - 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 + size: 36414 + timestamp: 1733513501944 +- conda: https://conda.anaconda.org/conda-forge/osx-64/blosc-1.21.6-hd145fbb_1.conda + sha256: 876bdb1947644b4408f498ac91c61f1f4987d2c57eb47c0aba0d5ee822cd7da9 + md5: 717852102c68a082992ce13a53403f9d + depends: + - __osx >=10.13 + - 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 + size: 46990 + timestamp: 1733513422834 +- 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 + size: 33602 + timestamp: 1733513285902 +- 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 + size: 4240579 + timestamp: 1773302678722 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py313hf159716_1.conda + sha256: dadec2879492adede0a9af0191203f9b023f788c18efd45ecac676d424c458ae + md5: 6c4d3597cf43f3439a51b2b13e29a4ba + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - libbrotlicommon 1.2.0 hb03c661_1 + license: MIT + license_family: MIT + size: 367721 + timestamp: 1764017371123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.2.0-py313hb260801_1.conda + sha256: 5fe27389162240ab9a5cd8d112d51bdd9019f9a68c5593b5298e54f0437f714f + md5: 523c55147ba15d3e0e0cdb9f67cda339 + depends: + - libgcc >=14 + - libstdcxx >=14 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - libbrotlicommon 1.2.0 he30d5cf_1 + license: MIT + license_family: MIT + size: 372678 + timestamp: 1764017653333 +- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.2.0-py313h8d69aa9_1.conda + sha256: 3d328413ff65a12af493066d721d12f5ee82a0adf3565629ce4c797c4680162c + md5: 7c5e382b4d5161535f1dd258103fea51 + depends: + - __osx >=10.13 + - libcxx >=19 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - libbrotlicommon 1.2.0 h8616949_1 + license: MIT + license_family: MIT + size: 389859 + timestamp: 1764018040907 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.2.0-py313hde1f3bb_1.conda + sha256: 2e21dccccd68bedd483300f9ab87a425645f6776e6e578e10e0dd98c946e1be9 + md5: b03732afa9f4f54634d94eb920dfb308 + depends: + - __osx >=11.0 + - libcxx >=19 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - libbrotlicommon 1.2.0 hc919400_1 + license: MIT + license_family: MIT + size: 359568 + timestamp: 1764018359470 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brunsli-0.1-hd1e3526_2.conda + sha256: b4831ac06bb65561342cedf3d219cf9b096f20b8d62cda74f0177dffed79d4d5 + md5: 5948f4fead433c6e5c46444dbfb01162 + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon >=1.2.0,<1.3.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libgcc >=14 + - libstdcxx >=14 + license: MIT + license_family: MIT + size: 168501 + timestamp: 1761758949420 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brunsli-0.1-h099923c_2.conda + sha256: 2adb8fea6c367ff4e741aa74d92f310146530cbca491f31fe0fac331c8f93c47 + md5: 32d695fc8f785112a635b6de767a3e15 + depends: + - libbrotlicommon >=1.2.0,<1.3.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libgcc >=14 + - libstdcxx >=14 + license: MIT + license_family: MIT + size: 166228 + timestamp: 1761758903191 +- conda: https://conda.anaconda.org/conda-forge/osx-64/brunsli-0.1-ha00ef93_2.conda + sha256: 8267fa351967ffb2587ea58f93226abe57d68a020758cab56591dc7fa4eb455d + md5: 44c70b2db8d9b7be20a86bd40a2aa9e9 + depends: + - __osx >=10.13 + - libbrotlicommon >=1.2.0,<1.3.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libcxx >=19 + license: MIT + license_family: MIT + size: 147378 + timestamp: 1761759461091 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brunsli-0.1-he0dfb12_2.conda + sha256: f32d7c6285601ac3f6baf0715b225fd017702cf24260c6f7f14f7b6e721d92bc + md5: 4cfe5258439d88ce2ef0b159007ee067 + depends: + - __osx >=11.0 + - libbrotlicommon >=1.2.0,<1.3.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libcxx >=19 + license: MIT + license_family: MIT + size: 141089 + timestamp: 1761759272675 +- 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 + size: 260182 + timestamp: 1771350215188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda + sha256: b3495077889dde6bb370938e7db82be545c73e8589696ad0843a32221520ad4c + md5: 840d8fc0d7b3209be93080bc20e07f2d + depends: + - libgcc >=14 + license: bzip2-1.0.6 + license_family: BSD + size: 192412 + timestamp: 1771350241232 +- conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_9.conda + sha256: 9f242f13537ef1ce195f93f0cc162965d6cc79da578568d6d8e50f70dd025c42 + md5: 4173ac3b19ec0a4f400b4f782910368b + depends: + - __osx >=10.13 + license: bzip2-1.0.6 + license_family: BSD + size: 133427 + timestamp: 1771350680709 +- 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 + size: 124834 + timestamp: 1771350416561 +- 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 + size: 207882 + timestamp: 1765214722852 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.6-he30d5cf_0.conda + sha256: 7ec8a68efe479e2e298558cbc2e79d29430d5c7508254268818c0ae19b206519 + md5: 1dfbec0d08f112103405756181304c16 + depends: + - libgcc >=14 + license: MIT + license_family: MIT + size: 217215 + timestamp: 1765214743735 +- conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.6-hb5e19a0_0.conda + sha256: 2f5bc0292d595399df0d168355b4e9820affc8036792d6984bd751fdda2bcaea + md5: fc9a153c57c9f070bebaa7eef30a8f17 + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 186122 + timestamp: 1765215100384 +- 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 + size: 180327 + timestamp: 1765215064054 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.23.1-hc31b594_0.conda + sha256: b6ce82ebe3cf24e70179bd656eacfa97ce9df9a500f2cec6843043466a5e6af8 + md5: 68ceffc6cadae61846a207cae60de094 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - lz4-c >=1.10.0,<1.11.0a0 + - zlib-ng >=2.3.3,<2.4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 353899 + timestamp: 1772620395951 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-blosc2-2.23.1-hde6442c_0.conda + sha256: dce56dbfe215103ab2619b9897b5e1a2e8048e9b382f9e6aad36fee2d93d1b00 + md5: 79b0ca3aedf9eb4e158d81eaeaa72b5b + depends: + - libgcc >=14 + - libstdcxx >=14 + - lz4-c >=1.10.0,<1.11.0a0 + - zlib-ng >=2.3.3,<2.4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 318225 + timestamp: 1772620329676 +- conda: https://conda.anaconda.org/conda-forge/osx-64/c-blosc2-2.23.1-h548f922_0.conda + sha256: 4766ee318fd57b956875064a390d277755ad4dfeb5ef6cd7f592c31058cd7a79 + md5: ea2963a308e8fe5eba56405e7820db6c + depends: + - __osx >=10.13 + - libcxx >=19 + - lz4-c >=1.10.0,<1.11.0a0 + - zlib-ng >=2.3.3,<2.4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 288387 + timestamp: 1772621206480 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-blosc2-2.23.1-hf9886e1_0.conda + sha256: 666200e72dda686cb705365eb6710d123b1e2b0cc4227e51a674a1feea3ba05e + md5: 67a5ede6098a3f291c90a083458ea911 + depends: + - __osx >=11.0 + - libcxx >=19 + - lz4-c >=1.10.0,<1.11.0a0 + - zlib-ng >=2.3.3,<2.4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 255095 + timestamp: 1772620752027 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda + sha256: 67cc7101b36421c5913a1687ef1b99f85b5d6868da3abbf6ec1a4181e79782fc + md5: 4492fd26db29495f0ba23f146cd5638d + depends: + - __unix + license: ISC + size: 147413 + timestamp: 1772006283803 +- 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 + 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 + size: 11065 + timestamp: 1615209567874 +- conda: https://conda.anaconda.org/conda-forge/noarch/cachetools-7.0.5-pyhd8ed1ab_0.conda + sha256: edfecb626da69607f926f51ad0d24942bfe9f7a29391d55d4ac62403e878605b + md5: a66a1542c3ed584ca4fdb23955d81e91 + depends: + - python >=3.10 + license: MIT + license_family: MIT + size: 19034 + timestamp: 1773120473852 +- conda: https://conda.anaconda.org/conda-forge/noarch/canonicaljson-2.0.0-pyhd8ed1ab_0.conda + sha256: 2b73c926cf83265cf394ba9ba11839b0a7008ad2af1c55f1e8002f81cb682d00 + md5: 7d027ed4883d11a8ba7b27e0dd56df47 + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 13344 + timestamp: 1737528464034 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda + sha256: a6b118fd1ed6099dc4fc03f9c492b88882a780fadaef4ed4f93dc70757713656 + md5: 765c4d97e877cdbbb88ff33152b86125 + depends: + - python >=3.10 + license: ISC + size: 151445 + timestamp: 1772001170301 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py313hf46b229_1.conda + sha256: 2162a91819945c826c6ef5efe379e88b1df0fe9a387eeba23ddcf7ebeacd5bd6 + md5: d0616e7935acab407d1543b28c446f6f + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.5.2,<3.6.0a0 + - libgcc >=14 + - pycparser + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 298357 + timestamp: 1761202966461 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-2.0.0-py313h897158f_1.conda + sha256: 10f6ca0e48bbed90b252fca49b188df0016b7033a9fcb472479585056fd38433 + md5: 59837145ebd94715f75b0f0aef732d5c + depends: + - libffi >=3.5.2,<3.6.0a0 + - libgcc >=14 + - pycparser + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 316294 + timestamp: 1761203943693 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-2.0.0-py313hf57695f_1.conda + sha256: 16c8c80bebe1c3d671382a64beaa16996e632f5b75963379e2b084eb6bc02053 + md5: b10f64f2e725afc9bf2d9b30eff6d0ea + depends: + - __osx >=10.13 + - libffi >=3.5.2,<3.6.0a0 + - pycparser + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 290946 + timestamp: 1761203173891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-2.0.0-py313h224173a_1.conda + sha256: 1fa69651f5e81c25d48ac42064db825ed1a3e53039629db69f86b952f5ce603c + md5: 050374657d1c7a4f2ea443c0d0cbd9a0 + depends: + - __osx >=11.0 + - libffi >=3.5.2,<3.6.0a0 + - pycparser + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 291376 + timestamp: 1761203583358 +- 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 + size: 13589 + timestamp: 1763607964133 +- conda: https://conda.anaconda.org/conda-forge/linux-64/charls-2.4.3-hecca717_0.conda + sha256: 53504e965499b4845ca3dc63d5905d5a1e686fcb9ab17e83c018efa479e787d0 + md5: 937ca49a245fcf2b88d51b6b52959426 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + license: BSD-3-Clause + license_family: BSD + size: 161768 + timestamp: 1772712510770 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/charls-2.4.3-hfae3067_0.conda + sha256: 2d77b4b561285e4da734c64c424aa1987b0711bc3a7821aa394aa92e724f394d + md5: 91e02ada51132cb7a5a892d24207d5f2 + depends: + - libgcc >=14 + - libstdcxx >=14 + license: BSD-3-Clause + license_family: BSD + size: 167100 + timestamp: 1772713969600 +- conda: https://conda.anaconda.org/conda-forge/osx-64/charls-2.4.3-hcc62823_0.conda + sha256: 8755decbc126ed207da4618b104ee2a8a3336c1511264d5549b22dd21d356667 + md5: 04d7337a89a1def07cf2b2bd96e2b04a + depends: + - __osx >=11.0 + - libcxx >=19 + license: BSD-3-Clause + license_family: BSD + size: 135256 + timestamp: 1772713129777 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/charls-2.4.3-hf6b4638_0.conda + sha256: 1009bd6c2bb26e41dada4015793a1edf44d1320c7ca14fc646f89b0b51236e20 + md5: 91f1daf22f72792e11382938bb0dd9ac + depends: + - __osx >=11.0 + - libcxx >=19 + license: BSD-3-Clause + license_family: BSD + size: 118790 + timestamp: 1772712898684 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.6-pyhd8ed1ab_0.conda + sha256: d86dfd428b2e3c364fa90e07437c8405d635aa4ef54b25ab51d9c712be4112a5 + md5: 49ee13eb9b8f44d63879c69b8a40a74b + depends: + - python >=3.10 + license: MIT + license_family: MIT + size: 58510 + timestamp: 1773660086450 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda + sha256: 38cfe1ee75b21a8361c8824f5544c3866f303af1762693a178266d7f198e8715 + md5: ea8a6c3256897cc31263de9f455e25d9 + depends: + - python >=3.10 + - __unix + - python + license: BSD-3-Clause + license_family: BSD + size: 97676 + timestamp: 1764518652276 +- 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 + 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 + 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 + size: 14690 + timestamp: 1753453984907 +- conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py313hc8edb43_4.conda + sha256: 7f86eb205d2d7fcf2c82654a08c6a240623ac34cb406206b4b1f1afa5cda8e49 + md5: 33639459bc29437315d4bff9ed5bc7a7 + depends: + - numpy >=1.25 + - python + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=14 + - libgcc >=14 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 321850 + timestamp: 1769155964333 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/contourpy-1.3.3-py313h75bc965_4.conda + sha256: 970a8dadfeae15639136a046dfbb44711425b04a0660f99162887f444f7cc9e2 + md5: e0ca534fbf414d1a05bbb8dec094dd1d + depends: + - numpy >=1.25 + - python + - libstdcxx >=14 + - libgcc >=14 + - python 3.13.* *_cp313 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 340043 + timestamp: 1769155978718 +- conda: https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.3.3-py313h98b818e_4.conda + sha256: bb5ae30df17e054668717b46c2053534a8a7d1bc94aedb8d6d22917c59eaa63c + md5: 24c06ae9a202f16555c5a1f8006a0bd7 + depends: + - numpy >=1.25 + - python + - libcxx >=19 + - __osx >=10.13 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 298562 + timestamp: 1769156074957 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.3.3-py313h2af2deb_4.conda + sha256: 6320cd6c16fdcf25efa493f9a2c54b2687911967a5e90544d599c535535387e9 + md5: afd3e394d14e627be0de6e8ee3553dae + depends: + - numpy >=1.25 + - python + - libcxx >=19 + - __osx >=11.0 + - python 3.13.* *_cp313 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 286789 + timestamp: 1769156187387 +- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.13.5-py313h3dea7bd_0.conda + sha256: 4b38c6648d0ccd6dca1d1e0d826609aaf2fabfd662257c1fff00bdd0e69e02da + md5: acbda45380f5097ade59014704eb0ba0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - tomli + license: Apache-2.0 + license_family: APACHE + size: 395334 + timestamp: 1773760969371 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/coverage-7.13.5-py313hfa222a2_0.conda + sha256: b7893173bda3b95f6a0ffa7f8afa3bf4704c4b36ca363bb3714cd63ae4e65794 + md5: 136841599b2e1d56bce8733525378545 + depends: + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - tomli + license: Apache-2.0 + license_family: APACHE + size: 396668 + timestamp: 1773762225599 +- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.13.5-py313h035b7d0_0.conda + sha256: e5c7ba0e9fdc80c64975d47da23b4bec2aeade29e1f3b734fe2cf547535c99c2 + md5: 253be7e7dddee10871606824cbd7208f + depends: + - __osx >=11.0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - tomli + license: Apache-2.0 + license_family: APACHE + size: 394683 + timestamp: 1773761109302 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.13.5-py313h65a2061_0.conda + sha256: 81b811c845e5a585812af256da9c2488d65f520bb74e4bb766d031fda15b8957 + md5: 0dbaee2d94c17eb38562c9b74d9b31ec + depends: + - __osx >=11.0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + - tomli + license: Apache-2.0 + license_family: APACHE + size: 394533 + timestamp: 1773761662394 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.12-py313hd8ed1ab_100.conda + noarch: generic + sha256: 7636809bda35add7af66cda1fee156136fcba0a1e24bbef1d591ee859df755a8 + md5: 9a4b8a37303b933b847c14a310f0557b + depends: + - python >=3.13,<3.14.0a0 + - python_abi * *_cp313 + license: Python-2.0 + size: 48648 + timestamp: 1770270374831 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-46.0.5-py313heb322e3_0.conda + sha256: 553f4ee18ad755d690ad63fa8e00d89598ecc4945ec046a8af808ddee5bb1ca0 + md5: 964f25e322b16cae073da8f5b7adf123 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.14 + - libgcc >=14 + - openssl >=3.5.5,<4.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - __glibc >=2.17 + license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT + license_family: BSD + size: 1718868 + timestamp: 1770772833949 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cryptography-46.0.5-py313h2e85185_0.conda + sha256: f799fc4ceb2b20bce5b7bbe4038c4fc273fb49d8ccc5d4bd7d34b434fd790ed0 + md5: 9f017a0f98d0efb83e04a5ce9f01598e + depends: + - cffi >=1.14 + - libgcc >=14 + - openssl >=3.5.5,<4.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - __glibc >=2.17 + license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT + license_family: BSD + size: 1710168 + timestamp: 1770772502541 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cryptography-46.0.5-py313h6e3882f_0.conda + sha256: 92a8512b8e4b00e8afd8e3e5a77b1bf384f30ecbccbd5163c9c596098b06d914 + md5: 071bcb7607cc391596db9b193a1f5014 + depends: + - __osx >=10.13 + - cffi >=1.14 + - openssl >=3.5.5,<4.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - __osx >=10.13 + license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT + license_family: BSD + size: 1652433 + timestamp: 1770772806563 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-46.0.5-py313he3f6fad_0.conda + sha256: 5d27780eae308b9602eb80b62b8fada46680c3fc68bfb249c95ddd07f74e74d2 + md5: 2cca7fe0caca845c02b37d8b465a18fa + depends: + - __osx >=11.0 + - cffi >=1.14 + - openssl >=3.5.5,<4.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - __osx >=11.0 + license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT + license_family: BSD + size: 1600031 + timestamp: 1770773038178 +- 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 + size: 210103 + timestamp: 1771943128249 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cyrus-sasl-2.1.28-h6598af7_1.conda + sha256: 0606296a3b0cc757229dd97db8c6dc0f77e54f975f89ae63c36fb01e2a2abe61 + md5: f4fbf4001970e3e58984281a12c99969 + depends: + - krb5 >=1.22.2,<1.23.0a0 + - libgcc >=13 + - libntlm + - libstdcxx >=13 + - libxcrypt >=4.4.36 + - openssl >=3.5.5,<4.0a0 + license: BSD-3-Clause-Attribution + license_family: BSD + size: 224450 + timestamp: 1771943147365 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cyrus-sasl-2.1.28-h7cc0300_1.conda + sha256: 4eb204b177a95eff980eeb58dcaa317564d22eb9f07b6dca440e3c57cfb15aea + md5: 7cca8a57fc2450bf088a257faf30c815 + 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 + size: 198777 + timestamp: 1771943943021 +- 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 + size: 194397 + timestamp: 1771943557428 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cytoolz-1.1.0-py313h07c4f96_2.conda + sha256: fd33f531288fb08afef72a65414d29caefbba31cb398533534794475af35b1b3 + md5: 7e7e3c5a8a28c6b8eb430183e0554adf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - toolz >=0.10.0 + license: BSD-3-Clause + license_family: BSD + size: 620281 + timestamp: 1771855841837 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cytoolz-1.1.0-py313he149459_2.conda + sha256: 42db998d6eec4f4585356eec3cb3006a09696c67149c92fb2cf7ee8c5613fcc9 + md5: 3c05236bd38cdf06c9fb90e36e27adff + depends: + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - toolz >=0.10.0 + license: BSD-3-Clause + license_family: BSD + size: 608289 + timestamp: 1771857339206 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cytoolz-1.1.0-py313h36bb7f5_2.conda + sha256: f88f35acd597f275f83a16fa0d370f439206ae310bf028fd90ec242cecb2e8ed + md5: bdeebe589a7c1d098f7db85f2d03604a + depends: + - __osx >=10.13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - toolz >=0.10.0 + license: BSD-3-Clause + license_family: BSD + size: 593717 + timestamp: 1771856046878 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cytoolz-1.1.0-py313h0997733_2.conda + sha256: d272fa92cbf6b4de83a47702878e1ac75efc665d7f60f1c2818c8c33ebd4cfa6 + md5: 5b7dd41f7974dd5d52bf37cbc0322e84 + depends: + - __osx >=11.0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + - toolz >=0.10.0 + license: BSD-3-Clause + license_family: BSD + size: 594945 + timestamp: 1771856362962 +- 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 + 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 + size: 1066502 + timestamp: 1773823162829 +- 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 + size: 760229 + timestamp: 1685695754230 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dav1d-1.2.1-h31becfc_0.conda + sha256: 33fe66d025cf5bac7745196d1a3dd7a437abcf2dbce66043e9745218169f7e17 + md5: 6e5a87182d66b2d1328a96b61ca43a62 + depends: + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 347363 + timestamp: 1685696690003 +- conda: https://conda.anaconda.org/conda-forge/osx-64/dav1d-1.2.1-h0dc2134_0.conda + sha256: ec71a835866b42e946cd2039a5f7a6458851a21890d315476f5e66790ac11c96 + md5: 9d88733c715300a39f8ca2e936b7808d + license: BSD-2-Clause + license_family: BSD + size: 668439 + timestamp: 1685696184631 +- 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 + size: 316394 + timestamp: 1685695959391 +- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.20-py313h5d5ffb9_0.conda + sha256: 8d76d4eeb5a8e3c5666880b465593fdf4a44f47fbbe89ff5b8f9abbe43026326 + md5: e94dbbec2589f3b1d821f43a4bf2ab45 + depends: + - python + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 2872698 + timestamp: 1769744980407 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.20-py313h59403f9_0.conda + sha256: 98319822864abe87609374aeee12777ac2450cf318ebbd94f048579af1eae662 + md5: d1d4ca73bde638bca0add96af928f484 + depends: + - python + - libgcc >=14 + - python 3.13.* *_cp313 + - libstdcxx >=14 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 2825771 + timestamp: 1769744990511 +- conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.20-py313h8b5a893_0.conda + sha256: 50e6280b8fc3eca1dad3a03deb7bb861c34c61e85331f3ff37f1faed833e968a + md5: d97267b6016ad4bfb48874defeab29ea + depends: + - python + - __osx >=10.13 + - libcxx >=19 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 2771547 + timestamp: 1769745020308 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.20-py313h1188861_0.conda + sha256: 372464b345220758769f49e76d125933008abec7048df4077a851adcc79da1e8 + md5: b3a832c19cfa5dfcce7575750ef693ed + depends: + - python + - libcxx >=19 + - python 3.13.* *_cp313 + - __osx >=11.0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 2761021 + timestamp: 1769744996428 +- 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 + 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 + 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 + size: 15896 + timestamp: 1768934186726 +- 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 + 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 + size: 845608 + timestamp: 1773858577032 +- conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.8.0-pyhcf101f3_0.conda + sha256: ef1e7b8405997ed3d6e2b6722bd7088d4a8adf215e7c88335582e65651fb4e05 + md5: d73fdc05f10693b518f52c994d748c19 + depends: + - python >=3.10,<4.0.0 + - sniffio + - python + constrains: + - aioquic >=1.2.0 + - cryptography >=45 + - httpcore >=1.0.0 + - httpx >=0.28.0 + - h2 >=4.2.0 + - idna >=3.10 + - trio >=0.30 + - wmi >=1.5.1 + license: ISC + size: 196500 + timestamp: 1757292856922 +- conda: https://conda.anaconda.org/conda-forge/noarch/donfig-0.8.1.post1-pyhd8ed1ab_1.conda + sha256: d58e97d418f71703e822c422af5b9c431e3621a0ecdc8b0334c1ca33e076dfe7 + md5: c56a7fa5597ad78b62e1f5d21f7f8b8f + depends: + - python >=3.9 + - pyyaml + license: MIT + license_family: MIT + size: 22491 + timestamp: 1734368817583 +- conda: https://conda.anaconda.org/conda-forge/noarch/ecdsa-0.19.2-pyhd8ed1ab_0.conda + sha256: 279bba0bcb2248ec21807fcb1459b52abff42154811b85b4a0c62c54aba6773f + md5: d3422625946166c45d353f5b96fc02da + depends: + - gmpy2 + - python >=3.10 + - six >=1.9.0 + license: MIT + license_family: MIT + size: 129113 + timestamp: 1774556826565 +- conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.3.0-pyhd8ed1ab_0.conda + sha256: c37320864c35ef996b0e02e289df6ee89582d6c8e233e18dc9983375803c46bb + md5: 3bc0ac31178387e8ed34094d9481bfe8 + depends: + - dnspython >=2.0.0 + - idna >=2.0.0 + - python >=3.10 + license: Unlicense + size: 46767 + timestamp: 1756221480106 +- conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.3.0-hd8ed1ab_0.conda + sha256: 6a518e00d040fcad016fb2dde29672aa3476cd9ae33ea5b7b257222e66037d89 + md5: 2452e434747a6b742adc5045f2182a8e + depends: + - email-validator >=2.3.0,<2.3.1.0a0 + license: Unlicense + size: 7077 + timestamp: 1756221480651 +- conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda + sha256: 80f579bfc71b3dab5bef74114b89e26c85cb0df8caf4c27ab5ffc16363d57ee7 + md5: 3366592d3c219f2731721f11bc93755c + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 11259 + timestamp: 1733327239578 +- conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + sha256: 2209534fbf2f70c20661ff31f57ab6a97b82ee98812e8a2dcb2b36a0d345727c + md5: 71bf9646cbfabf3022c8da4b6b4da737 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 21908 + timestamp: 1733749746332 +- 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 + size: 21333 + timestamp: 1763918099466 +- 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 + size: 30753 + timestamp: 1756729456476 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fabio-2025.10.0-py313h29aa505_1.conda + sha256: 9ed9c670ab24e3fc72133c5587b351272edb6864d1e240fc08dc33845166ef81 + md5: 1ade29518159bddcf93fcf5b214b2787 + depends: + - __glibc >=2.17,<3.0.a0 + - glymur + - h5py + - hdf5plugin + - libgcc >=14 + - lxml + - numpy >=1.23,<3 + - pillow + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT AND LGPL-3.0-or-later + license_family: Other + size: 1038282 + timestamp: 1768550751492 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fabio-2025.10.0-py313hcc1970c_1.conda + sha256: 55bca5bb20b94741dfc1eca2a2608248f2d6fcdfebe4b86b72a0ea0c5f84fc9e + md5: c5da122404f51ab805150bda2eb88cf8 + depends: + - glymur + - h5py + - hdf5plugin + - libgcc >=14 + - lxml + - numpy >=1.23,<3 + - pillow + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: MIT AND LGPL-3.0-or-later + license_family: Other + size: 1021366 + timestamp: 1768550797132 +- conda: https://conda.anaconda.org/conda-forge/osx-64/fabio-2025.10.0-py313hceb611b_1.conda + sha256: 6f9ef4d65f3c1cb19a14fc39e947d49c640b11d9f7df217826f3eb42cdffa695 + md5: b1b471820ea0714d08a0bdef1959d987 + depends: + - __osx >=10.13 + - glymur + - h5py + - hdf5plugin + - lxml + - numpy >=1.23,<3 + - pillow + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT AND LGPL-3.0-or-later + license_family: Other + size: 951330 + timestamp: 1768551099421 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fabio-2025.10.0-py313hf5115c3_1.conda + sha256: 62acd36f19605f2c9236ce86e7b7ff2baf242a6d2c21e733ad38af11f1d703f0 + md5: 503de247648939d455c8f5eb44892e38 + depends: + - __osx >=11.0 + - glymur + - h5py + - hdf5plugin + - lxml + - numpy >=1.23,<3 + - pillow + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: MIT AND LGPL-3.0-or-later + license_family: Other + size: 942713 + timestamp: 1768551298778 +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.135.2-hc25896d_0.conda + sha256: a9daf52c37baed7b6f6280411d89ec035bbeea9d580734e1c5f9e54eacfd7288 + md5: d8f65c6808d64f9259c30d5e45076c4d + depends: + - fastapi-core ==0.135.2 pyhcf101f3_0 + - email_validator + - fastapi-cli + - httpx + - jinja2 + - pydantic-settings + - pydantic-extra-types + - python-multipart + - uvicorn-standard + license: MIT + license_family: MIT + size: 4817 + timestamp: 1774290725801 +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.23-pyhcf101f3_0.conda + sha256: cb60fc8c96dcd2a6335914d4d6d7d5f5549c9e1ff4533be28ba699e648babf37 + md5: 442ec6511754418c87a84bc1dc0c5384 + depends: + - python >=3.10 + - rich-toolkit >=0.14.8 + - tomli >=2.0.0 + - typer >=0.15.1 + - uvicorn-standard >=0.15.0 + - python + license: MIT + license_family: MIT + size: 18920 + timestamp: 1771293215825 +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.135.2-pyhcf101f3_0.conda + sha256: 849c179ffd86f3c1045a15bf6af1b3bbce39f8c67eb48769fc5fa5620a25b307 + md5: 81998811f3e68132d4718be59d6cef94 + depends: + - python >=3.10 + - annotated-doc >=0.0.2 + - starlette >=0.46.0 + - typing_extensions >=4.8.0 + - typing-inspection >=0.4.2 + - pydantic >=2.9.0 + - python + constrains: + - email_validator >=2.0.0 + - fastapi-cli >=0.0.8 + - httpx >=0.23.0,<1.0.0 + - jinja2 >=3.1.5 + - pydantic-extra-types >=2.0.0 + - pydantic-settings >=2.0.0 + - python-multipart >=0.0.18 + - uvicorn-standard >=0.12.0 + license: MIT + license_family: MIT + size: 95598 + timestamp: 1774290725801 +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.25.2-pyhd8ed1ab_0.conda + sha256: dddea9ec53d5e179de82c24569d41198f98db93314f0adae6b15195085d5567f + md5: f58064cec97b12a7136ebb8a6f8a129b + depends: + - python >=3.10 + license: Unlicense + size: 25845 + timestamp: 1773314012590 +- conda: https://conda.anaconda.org/conda-forge/noarch/flake8-7.3.0-pyhd8ed1ab_0.conda + sha256: a32e511ea71a9667666935fd9f497f00bcc6ed0099ef04b9416ac24606854d58 + md5: 04a55140685296b25b79ad942264c0ef + depends: + - mccabe >=0.7.0,<0.8.0 + - pycodestyle >=2.14.0,<2.15.0 + - pyflakes >=3.4.0,<3.5.0 + - python >=3.9 + license: MIT + license_family: MIT + size: 111916 + timestamp: 1750968083921 +- conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + sha256: 2509992ec2fd38ab27c7cdb42cf6cadc566a1cc0d1021a2673475d9fa87c6276 + md5: d3549fd50d450b6d9e7dddff25dd2110 + depends: + - cached-property >=1.3.0 + - python >=3.9,<4 + license: MPL-2.0 + license_family: MOZILLA + size: 16705 + timestamp: 1733327494780 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.3.0-pyhd8ed1ab_0.conda + sha256: b4a7aec32167502dd4a2d1fb1208c63760828d7111339aa5b305b2d776afa70f + md5: c18d2ba7577cdc618a20d45f1e31d14b + depends: + - python >=3.10 + license: BSD-3-Clause + license_family: BSD + size: 148973 + timestamp: 1774699581537 +- 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 + size: 119654 + timestamp: 1726600001928 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa + md5: 4ff634d515abbf664774b5e1168a9744 + depends: + - libgcc >=13 + - libstdcxx >=13 + license: BSD-3-Clause + license_family: BSD + size: 106638 + timestamp: 1726599967617 +- conda: https://conda.anaconda.org/conda-forge/osx-64/gflags-2.2.2-hac325c4_1005.conda + sha256: c0bea66f71a6f4baa8d4f0248e17f65033d558d9e882c0af571b38bcca3e4b46 + md5: a26de8814083a6971f14f9c8c3cb36c2 + depends: + - __osx >=10.13 + - libcxx >=17 + license: BSD-3-Clause + license_family: BSD + size: 84946 + timestamp: 1726600054963 +- 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 + size: 82090 + timestamp: 1726600145480 +- 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 + size: 77248 + timestamp: 1712692454246 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/giflib-5.2.2-h31becfc_0.conda + sha256: a79dc3bd54c4fb1f249942ee2d5b601a76ecf9614774a4cff9af49adfa458db2 + md5: 2f809afaf0ba1ea4135dce158169efac + depends: + - libgcc-ng >=12 + license: MIT + license_family: MIT + size: 82124 + timestamp: 1712692444545 +- conda: https://conda.anaconda.org/conda-forge/osx-64/giflib-5.2.2-h10d778d_0.conda + sha256: 2c825df829097536314a195ae5cacaa8695209da6b4400135a65d8e23c008ff8 + md5: 03e8c9b4d3da5f3d6eabdd020c2d63ac + license: MIT + license_family: MIT + size: 74516 + timestamp: 1712692686914 +- 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 + size: 71613 + timestamp: 1712692611426 +- 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 + size: 143452 + timestamp: 1718284177264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 + md5: 08940a32c6ced3703d1412dd37df4f62 + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 145811 + timestamp: 1718284208668 +- conda: https://conda.anaconda.org/conda-forge/osx-64/glog-0.7.1-h2790a97_0.conda + sha256: dd56547db8625eb5c91bb0a9fbe8bd6f5c7fbf5b6059d46365e94472c46b24f9 + md5: 06cf91665775b0da395229cd4331b27d + depends: + - __osx >=10.13 + - gflags >=2.2.2,<2.3.0a0 + - libcxx >=16 + license: BSD-3-Clause + license_family: BSD + size: 117017 + timestamp: 1718284325443 +- 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 + size: 112215 + timestamp: 1718284365403 +- conda: https://conda.anaconda.org/conda-forge/noarch/glymur-0.14.7-pyhd8ed1ab_0.conda + sha256: 10eb80099319848e0bc6d9c43d55634e856958e1c7a104612190bf457bb07705 + md5: 51cffc356cd6bdb4dce836c93c296f06 + depends: + - imageio + - lxml + - numpy + - openjpeg >=2.4.0 + - packaging + - python >=3.11 + - setuptools + license: MIT + license_family: MIT + size: 2732463 + timestamp: 1770246265597 +- 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 + size: 460055 + timestamp: 1718980856608 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmp-6.3.0-h0a1ffab_2.conda + sha256: a5e341cbf797c65d2477b27d99091393edbaa5178c7d69b7463bb105b0488e69 + md5: 7cbfb3a8bb1b78a7f5518654ac6725ad + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: GPL-2.0-or-later OR LGPL-3.0-or-later + size: 417323 + timestamp: 1718980707330 +- conda: https://conda.anaconda.org/conda-forge/osx-64/gmp-6.3.0-hf036a51_2.conda + sha256: 75aa5e7a875afdcf4903b7dc98577672a3dc17b528ac217b915f9528f93c85fc + md5: 427101d13f19c4974552a4e5b072eef1 + depends: + - __osx >=10.13 + - libcxx >=16 + license: GPL-2.0-or-later OR LGPL-3.0-or-later + size: 428919 + timestamp: 1718981041839 +- 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 + size: 365188 + timestamp: 1718981343258 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.3.0-py313h86d8783_1.conda + sha256: 911dcf5c1c810b92ae4811505af46672a1b52718bb1c1d1f200d694562362294 + md5: 047e3ea395eab013f918b338fecc19a0 + 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.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: LGPL-3.0-or-later + license_family: LGPL + size: 255065 + timestamp: 1773245107465 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmpy2-2.3.0-py313h4ba42fe_1.conda + sha256: c4f6fd06a3969e53ff73cbff33a25b0e04459e5163d80b70d454edf1ed933e26 + md5: 716ec6195e7595306db18d70af0d123b + depends: + - gmp >=6.3.0,<7.0a0 + - libgcc >=14 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: LGPL-3.0-or-later + license_family: LGPL + size: 244521 + timestamp: 1773245215540 +- conda: https://conda.anaconda.org/conda-forge/osx-64/gmpy2-2.3.0-py313h75c6c5f_1.conda + sha256: 583dee49d53557eafc45071f9095039ea138dc4261b6fd2ef4077240f2f8fb81 + md5: 2f2a88135b05787ef61ce06aa14f3748 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: LGPL-3.0-or-later + license_family: LGPL + size: 203422 + timestamp: 1773245713766 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.3.0-py313h8b87f87_1.conda + sha256: 451f0d2a87554c1d81198773ff92ec555f7c00a52f006ae07fc4241875ca55ca + md5: 6a69d87e99c0a36f6654c9774c00ba28 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: LGPL-3.0-or-later + license_family: LGPL + size: 195032 + timestamp: 1773245561627 +- conda: https://conda.anaconda.org/conda-forge/linux-64/google-crc32c-1.8.0-py313h74173ec_1.conda + sha256: c0e39ebce8b9d8bc4e734bb5d2538e60f7c8c85ec04f9b0690fc6e1cb9656869 + md5: d358850e37a98739224fdc265d7d8eb7 + depends: + - __glibc >=2.17,<3.0.a0 + - libcrc32c >=1.1.2,<1.2.0a0 + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: Apache + size: 25326 + timestamp: 1768549200259 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/google-crc32c-1.8.0-py313hfb67750_1.conda + sha256: 60be9c3181df80002edf50b801a3cf29e67c050efda5db7d643d5a4192a190dc + md5: e1a08f23118c391177af6bbca8bec7c9 + depends: + - libcrc32c >=1.1.2,<1.2.0a0 + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: Apache + size: 25658 + timestamp: 1768549235960 +- conda: https://conda.anaconda.org/conda-forge/osx-64/google-crc32c-1.8.0-py313h49a2f01_1.conda + sha256: 42b0be206602e6521f3095cda4b7752b36be9548cb1d374d2107d986c870d202 + md5: 623c30b99d3d699f052ee20bd5ba4ec2 + depends: + - __osx >=10.13 + - libcrc32c >=1.1.2,<1.2.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: Apache + size: 24380 + timestamp: 1768549497226 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/google-crc32c-1.8.0-py313h11ab6f4_1.conda + sha256: 475172f172fbe15eb3dcb7a7c31f83792e5ca18064f1ae56502cdeaafca97592 + md5: 08e5ab1798fd9a890447baa09bb31e8f + depends: + - __osx >=11.0 + - libcrc32c >=1.1.2,<1.2.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: Apache + size: 25467 + timestamp: 1768549431006 +- conda: https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.3.2-py313h5d5ffb9_0.conda + sha256: bef83cb6284c3332be5eb4129dce0cbe87a4c0f64cff3d6a0ded3dd5c6e673c2 + md5: 0199b03b39892320265af92b5e3e9093 + depends: + - python + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=14 + - libgcc >=14 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 254450 + timestamp: 1771658392272 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/greenlet-3.3.2-py313h59403f9_0.conda + sha256: 0bf60fdc8891d48465d4f4cc40e3a1ba46346848b3a4999700ecb8ca7ae75bac + md5: 59bef38681439b106ade8d7e7b8e4e9a + depends: + - python + - libgcc >=14 + - libstdcxx >=14 + - python 3.13.* *_cp313 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 259665 + timestamp: 1771658402366 +- conda: https://conda.anaconda.org/conda-forge/osx-64/greenlet-3.3.2-py313h5fe49f0_0.conda + sha256: ece3b76a7dbf81c979401729d1330ec55c19b0547f34e30bf33229c1679a8e1f + md5: c64b0333b3f8724368b69fe37fd19bd7 + depends: + - python + - libcxx >=19 + - __osx >=11.0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 249693 + timestamp: 1771658523891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/greenlet-3.3.2-py313h1188861_0.conda + sha256: b34b145089aaa70efb6a9ccbc165349077fdc74f886775eb598dabd6a3771f8a + md5: a5478ab23d671342d57f4ad20a09876e + depends: + - python + - __osx >=11.0 + - libcxx >=19 + - python 3.13.* *_cp313 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 251405 + timestamp: 1771658487166 +- conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhcf101f3_1.conda + sha256: 96cac6573fd35ae151f4d6979bab6fbc90cb6b1fb99054ba19eb075da9822fcb + md5: b8993c19b0c32a2f7b66cbb58ca27069 + depends: + - python >=3.10 + - typing_extensions + - python + license: MIT + license_family: MIT + size: 39069 + timestamp: 1767729720872 +- 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 + 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 + size: 57732 + timestamp: 1769241877548 +- conda: https://conda.anaconda.org/conda-forge/linux-64/h5py-3.16.0-nompi_py313h22c32d4_101.conda + sha256: 1290902d886f4d19c929655e85fe01def942bb6ae2a4f37a2daff922d6b42d69 + md5: 1ff13bf3fc5366d6c9de497379f424e4 + depends: + - __glibc >=2.17,<3.0.a0 + - cached-property + - hdf5 >=2.1.0,<3.0a0 + - libgcc >=14 + - numpy >=1.23,<3 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 1336298 + timestamp: 1774712276077 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/h5py-3.16.0-nompi_py313h14703b5_101.conda + sha256: cf34c6fa6ed1f95146b558d531d77cdbf20684a228978a0a52e9ff90cb0beff3 + md5: 4f75f050dda1a42a9ace57a7f63126fa + depends: + - cached-property + - hdf5 >=2.1.0,<3.0a0 + - libgcc >=14 + - numpy >=1.23,<3 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 1304489 + timestamp: 1774712788336 +- conda: https://conda.anaconda.org/conda-forge/osx-64/h5py-3.16.0-nompi_py313h15f83ed_101.conda + sha256: 5219eefb8a677bbaad0a095435571c6c2bb4806e3d0d33b3e8735a3d8da0ce1c + md5: 824f828c529e49277da34d4d811037a3 + depends: + - __osx >=11.0 + - cached-property + - hdf5 >=2.1.0,<3.0a0 + - numpy >=1.23,<3 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 1199001 + timestamp: 1774712614643 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/h5py-3.16.0-nompi_py313h2c4073f_101.conda + sha256: ea8f76bc27ac4afc0d668d91bc2e8db3d2efc17ccdf53bcb7047b48b3fb43fdb + md5: 50b4e615d597256d085769100ac9f172 + depends: + - __osx >=11.0 + - cached-property + - hdf5 >=2.1.0,<3.0a0 + - numpy >=1.23,<3 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 1198247 + timestamp: 1774713693186 +- conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-2.1.0-nompi_hd4fcb43_103.conda + sha256: 79c3592e00ce9974e3d08e4bd28bfbe9f86c03064880efe3cfcff807a633abd1 + md5: dcb50cd5fed839129afb25f1061f6b7f + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.10.1,<0.10.2.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-c-http >=0.10.12,<0.10.13.0a0 + - aws-c-io >=0.26.3,<0.26.4.0a0 + - aws-c-s3 >=0.11.5,<0.11.6.0a0 + - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 + - libaec >=1.1.5,<2.0a0 + - libcurl >=8.19.0,<9.0a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.3.0 + - libstdcxx >=14 + - libzlib >=1.3.2,<2.0a0 + - openssl >=3.5.5,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 4408274 + timestamp: 1774661981887 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/hdf5-2.1.0-nompi_h81b49a2_103.conda + sha256: 81956e2b6a4c71e99c3fefde265f873cd9463de9ed08a462dde4b8df2408e246 + md5: c38c0cf39c1a35cb691e57a865d76cae + depends: + - aws-c-auth >=0.10.1,<0.10.2.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-c-http >=0.10.12,<0.10.13.0a0 + - aws-c-io >=0.26.3,<0.26.4.0a0 + - aws-c-s3 >=0.11.5,<0.11.6.0a0 + - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 + - libaec >=1.1.5,<2.0a0 + - libcurl >=8.19.0,<9.0a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.3.0 + - libstdcxx >=14 + - libzlib >=1.3.2,<2.0a0 + - openssl >=3.5.5,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 4039828 + timestamp: 1774661897411 +- conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-2.1.0-nompi_h3b1597d_103.conda + sha256: a18a9142345aa07d8711061f2a5b445f18cae137fb9bb027e3939244464f3015 + md5: ffaa24507218ed257bf69420ee8412f5 + depends: + - __osx >=11.0 + - aws-c-auth >=0.10.1,<0.10.2.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-c-http >=0.10.12,<0.10.13.0a0 + - aws-c-io >=0.26.3,<0.26.4.0a0 + - aws-c-s3 >=0.11.5,<0.11.6.0a0 + - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 + - libaec >=1.1.5,<2.0a0 + - libcurl >=8.19.0,<9.0a0 + - libcxx >=19 + - libgfortran + - libgfortran5 >=14.3.0 + - libzlib >=1.3.2,<2.0a0 + - openssl >=3.5.5,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 3817037 + timestamp: 1774662882398 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-2.1.0-nompi_hc95e3eb_103.conda + sha256: f236f50377869ba9561e4f50df6240f544d2755b7c7b5867a9b99d41f814e5da + md5: 03316cdd768f449e9293d4284a13adb3 + depends: + - __osx >=11.0 + - aws-c-auth >=0.10.1,<0.10.2.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-c-http >=0.10.12,<0.10.13.0a0 + - aws-c-io >=0.26.3,<0.26.4.0a0 + - aws-c-s3 >=0.11.5,<0.11.6.0a0 + - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 + - libaec >=1.1.5,<2.0a0 + - libcurl >=8.19.0,<9.0a0 + - libcxx >=19 + - libgfortran + - libgfortran5 >=14.3.0 + - libzlib >=1.3.2,<2.0a0 + - openssl >=3.5.5,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 3418107 + timestamp: 1774662175390 +- conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5plugin-6.0.0-py313hdbdd960_5.conda + sha256: 761419953e0d6f8c1b4350fec925da3d0ae9d8912510532375d02eebc5d35b6d + md5: 4da834a5990833e8f2adc4cade759f71 + depends: + - __glibc >=2.17,<3.0.a0 + - blosc >=1.21.6,<2.0a0 + - bzip2 >=1.0.8,<2.0a0 + - c-blosc2 >=2.23.1,<2.24.0a0 + - h5py >=3.0.0 + - hdf5 >=2.1.0,<3.0a0 + - libgcc >=14 + - libstdcxx >=14 + - libzlib >=1.3.2,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - zstd >=1.5.7,<1.6.0a0 + license: MIT + license_family: MIT + size: 3378570 + timestamp: 1774735883244 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/hdf5plugin-6.0.0-py313h900b84a_5.conda + sha256: f142c1cf984b297100770952a79d7987d3ed2b97f4e4afa772ea1b90e8c8a34d + md5: b847d8589654719309462ab253af68d9 + depends: + - blosc >=1.21.6,<2.0a0 + - bzip2 >=1.0.8,<2.0a0 + - c-blosc2 >=2.23.1,<2.24.0a0 + - h5py >=3.0.0 + - hdf5 >=2.1.0,<3.0a0 + - libgcc >=14 + - libstdcxx >=14 + - libzlib >=1.3.2,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + - zstd >=1.5.7,<1.6.0a0 + license: MIT + license_family: MIT + size: 3255044 + timestamp: 1774735899490 +- conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5plugin-6.0.0-py313hfdb907d_5.conda + sha256: c8032a12c65edb807fc208336ba63db164a978bc352d76dd775137ef8f1faa7f + md5: 99a6c608588689c960059dafc5f4f41f + depends: + - __osx >=11.0 + - blosc >=1.21.6,<2.0a0 + - bzip2 >=1.0.8,<2.0a0 + - c-blosc2 >=2.23.1,<2.24.0a0 + - h5py >=3.0.0 + - hdf5 >=2.1.0,<3.0a0 + - libcxx >=19 + - libzlib >=1.3.2,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - zstd >=1.5.7,<1.6.0a0 + license: MIT + license_family: MIT + size: 2964099 + timestamp: 1774736268133 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5plugin-6.0.0-py313h9c23d4e_5.conda + sha256: 9408b35e05e63fc95a8aaee51ddaa840841313405f2a3f69f26128c602450377 + md5: 6337e197bf633a1c9fd30ff14aba259e + depends: + - __osx >=11.0 + - blosc >=1.21.6,<2.0a0 + - bzip2 >=1.0.8,<2.0a0 + - c-blosc2 >=2.23.1,<2.24.0a0 + - h5py >=3.0.0 + - hdf5 >=2.1.0,<3.0a0 + - libcxx >=19 + - libzlib >=1.3.2,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + - zstd >=1.5.7,<1.6.0a0 + license: MIT + license_family: MIT + size: 2792356 + timestamp: 1774736545418 +- 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 + size: 30731 + timestamp: 1737618390337 +- conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda + sha256: 04d49cb3c42714ce533a8553986e1642d0549a05dc5cc48e0d43ff5be6679a5b + md5: 4f14640d58e2cc0aa0819d9d8ba125bb + depends: + - python >=3.9 + - h11 >=0.16 + - h2 >=3,<5 + - sniffio 1.* + - anyio >=4.0,<5.0 + - certifi + - python + license: BSD-3-Clause + license_family: BSD + size: 49483 + timestamp: 1745602916758 +- conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.7.1-py313h07c4f96_1.conda + sha256: 0d549eca227e015b272c33646cdaed34d4619f6fe6d6196e2fddc31ec5144df9 + md5: 98e227930f49172e4f44ae8063341b0e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 98479 + timestamp: 1762504150954 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.7.1-py313h6194ac5_1.conda + sha256: 3f626ee931ff4dab97c423575141a5479a0f85359a2a85e40782461d1f300929 + md5: 3bcdc18bbf06931f4d3238551ff8cf23 + depends: + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 96680 + timestamp: 1762504216568 +- conda: https://conda.anaconda.org/conda-forge/osx-64/httptools-0.7.1-py313hf050af9_1.conda + sha256: a6644bdc3220a3efb3b3b096dac59087b1ac5e134f4ad9f5cf5a1a958f364f0d + md5: da6a6e53e4c578394df6fcc946e41e47 + depends: + - __osx >=10.13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 89566 + timestamp: 1762504468066 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.7.1-py313h6535dbc_1.conda + sha256: 96a97f65ebf4944b94a5a7cac5da5b0f63b407de8a896567d1b7374cf2516071 + md5: c5a14118255fb5dea8ca89a330e5a231 + depends: + - __osx >=11.0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 90169 + timestamp: 1762504332321 +- conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 + md5: d6989ead454181f4f9bc987d3dc4e285 + depends: + - anyio + - certifi + - httpcore 1.* + - idna + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 63082 + timestamp: 1733663449209 +- 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 + size: 17397 + timestamp: 1737618427549 +- 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 + size: 12723451 + timestamp: 1773822285671 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.3-hcab7f73_0.conda + sha256: 49ba6aed2c6b482bb0ba41078057555d29764299bc947b990708617712ef6406 + md5: 546da38c2fa9efacf203e2ad3f987c59 + depends: + - libgcc >=14 + - libstdcxx >=14 + license: MIT + license_family: MIT + size: 12837286 + timestamp: 1773822650615 +- conda: https://conda.anaconda.org/conda-forge/osx-64/icu-78.3-h25d91c4_0.conda + sha256: 1294117122d55246bb83ad5b589e2a031aacdf2d0b1f99fd338aa4394f881735 + md5: 627eca44e62e2b665eeec57a984a7f00 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 12273764 + timestamp: 1773822733780 +- 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 + size: 12361647 + timestamp: 1773822915649 +- conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.18-pyhd8ed1ab_0.conda + sha256: 3bae1b612ccc71e49c5795a369a82c4707ae6fd4e63360e8ecc129f9539f779b + md5: 635d1a924e1c55416fce044ed96144a2 + depends: + - python >=3.10 + - ukkonen + license: MIT + license_family: MIT + size: 79749 + timestamp: 1774239544252 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda + sha256: ae89d0299ada2a3162c2614a9d26557a92aa6a77120ce142f8e0109bbf0342b0 + md5: 53abe63df7e10a6ba605dc5f9f961d36 + depends: + - python >=3.10 + license: BSD-3-Clause + license_family: BSD + size: 50721 + timestamp: 1760286526795 +- conda: https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2026.3.6-py313h67fa517_1.conda + sha256: d58d2b24d2182d0095c3a38cf5ef234ca53b0124915df0488fbbe474976ece50 + md5: d6b7103e094d82bc1ae137787fd5cedf + depends: + - __glibc >=2.17,<3.0.a0 + - blosc >=1.21.6,<2.0a0 + - brunsli >=0.1,<1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - c-blosc2 >=2.23.1,<2.24.0a0 + - charls >=2.4.3,<2.5.0a0 + - giflib >=5.2.2,<5.3.0a0 + - jxrlib >=1.1,<1.2.0a0 + - lcms2 >=2.18,<3.0a0 + - lerc >=4.0.0,<5.0a0 + - libaec >=1.1.5,<2.0a0 + - libavif16 >=1.4.0,<2.0a0 + - libbrotlicommon >=1.2.0,<1.3.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libdeflate >=1.25,<1.26.0a0 + - libgcc >=14 + - libjpeg-turbo >=3.1.2,<4.0a0 + - libjxl >=0.11,<1.0a0 + - liblzma >=5.8.2,<6.0a0 + - libpng >=1.6.55,<1.7.0a0 + - libstdcxx >=14 + - libtiff >=4.7.1,<4.8.0a0 + - libwebp-base >=1.6.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - libzopfli >=1.0.3,<1.1.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - numpy >=1.23,<3 + - openjpeg >=2.5.4,<3.0a0 + - openjph >=0.26.3,<0.27.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - snappy >=1.2.2,<1.3.0a0 + - zfp >=1.0.1,<2.0a0 + - zlib-ng >=2.3.3,<2.4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 2069418 + timestamp: 1772886195300 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/imagecodecs-2026.3.6-py313hcf3ee17_1.conda + sha256: a93f4b2e8e43617cb6a94e452ef7723aef8ed3856fd36cc1e921a61b41ed1ad1 + md5: f82c3cfad36ecfc3744cf948c3687811 + depends: + - blosc >=1.21.6,<2.0a0 + - brunsli >=0.1,<1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - c-blosc2 >=2.23.1,<2.24.0a0 + - charls >=2.4.3,<2.5.0a0 + - giflib >=5.2.2,<5.3.0a0 + - jxrlib >=1.1,<1.2.0a0 + - lcms2 >=2.18,<3.0a0 + - lerc >=4.0.0,<5.0a0 + - libaec >=1.1.5,<2.0a0 + - libavif16 >=1.4.0,<2.0a0 + - libbrotlicommon >=1.2.0,<1.3.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libdeflate >=1.25,<1.26.0a0 + - libgcc >=14 + - libjpeg-turbo >=3.1.2,<4.0a0 + - libjxl >=0.11,<1.0a0 + - liblzma >=5.8.2,<6.0a0 + - libpng >=1.6.55,<1.7.0a0 + - libstdcxx >=14 + - libtiff >=4.7.1,<4.8.0a0 + - libwebp-base >=1.6.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - libzopfli >=1.0.3,<1.1.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - numpy >=1.23,<3 + - openjpeg >=2.5.4,<3.0a0 + - openjph >=0.26.3,<0.27.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + - snappy >=1.2.2,<1.3.0a0 + - zfp >=1.0.1,<2.0a0 + - zlib-ng >=2.3.3,<2.4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 1958152 + timestamp: 1772886283759 +- conda: https://conda.anaconda.org/conda-forge/osx-64/imagecodecs-2026.3.6-py313h7f7f87f_1.conda + sha256: b192eaa8173ecee2f617dabc9a034ec14b665c2c2e14645c32343574a632bc71 + md5: c12ee2d5456102a9d4ed82cff17e9621 + depends: + - __osx >=11.0 + - blosc >=1.21.6,<2.0a0 + - brunsli >=0.1,<1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - c-blosc2 >=2.23.1,<2.24.0a0 + - charls >=2.4.3,<2.5.0a0 + - giflib >=5.2.2,<5.3.0a0 + - jxrlib >=1.1,<1.2.0a0 + - lcms2 >=2.18,<3.0a0 + - lerc >=4.0.0,<5.0a0 + - libaec >=1.1.5,<2.0a0 + - libavif16 >=1.4.0,<2.0a0 + - libbrotlicommon >=1.2.0,<1.3.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libcxx >=19 + - libdeflate >=1.25,<1.26.0a0 + - libjpeg-turbo >=3.1.2,<4.0a0 + - libjxl >=0.11,<1.0a0 + - liblzma >=5.8.2,<6.0a0 + - libpng >=1.6.55,<1.7.0a0 + - libtiff >=4.7.1,<4.8.0a0 + - libwebp-base >=1.6.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - libzopfli >=1.0.3,<1.1.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - numpy >=1.23,<3 + - openjpeg >=2.5.4,<3.0a0 + - openjph >=0.26.3,<0.27.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - snappy >=1.2.2,<1.3.0a0 + - zfp >=1.0.1,<2.0a0 + - zlib-ng >=2.3.3,<2.4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 1645260 + timestamp: 1772886465831 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/imagecodecs-2026.3.6-py313h8864aa1_1.conda + sha256: f09c53e16a48bc862496bbaa0716b339f077085b3a1d5903e482ce25b3732075 + md5: 632a02dbb28f0837a5a7ad4d6b536c83 + depends: + - __osx >=11.0 + - blosc >=1.21.6,<2.0a0 + - brunsli >=0.1,<1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - c-blosc2 >=2.23.1,<2.24.0a0 + - charls >=2.4.3,<2.5.0a0 + - giflib >=5.2.2,<5.3.0a0 + - jxrlib >=1.1,<1.2.0a0 + - lcms2 >=2.18,<3.0a0 + - lerc >=4.0.0,<5.0a0 + - libaec >=1.1.5,<2.0a0 + - libavif16 >=1.4.0,<2.0a0 + - libbrotlicommon >=1.2.0,<1.3.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libcxx >=19 + - libdeflate >=1.25,<1.26.0a0 + - libjpeg-turbo >=3.1.2,<4.0a0 + - libjxl >=0.11,<1.0a0 + - liblzma >=5.8.2,<6.0a0 + - libpng >=1.6.55,<1.7.0a0 + - libtiff >=4.7.1,<4.8.0a0 + - libwebp-base >=1.6.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - libzopfli >=1.0.3,<1.1.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - numpy >=1.23,<3 + - openjpeg >=2.5.4,<3.0a0 + - openjph >=0.26.3,<0.27.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + - snappy >=1.2.2,<1.3.0a0 + - zfp >=1.0.1,<2.0a0 + - zlib-ng >=2.3.3,<2.4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 1641807 + timestamp: 1772886738872 +- conda: https://conda.anaconda.org/conda-forge/noarch/imageio-2.37.0-pyhfb79c49_0.conda + sha256: 8ef69fa00c68fad34a3b7b260ea774fda9bd9274fd706d3baffb9519fd0063fe + md5: b5577bc2212219566578fd5af9993af6 + depends: + - numpy + - pillow >=8.3.2 + - python >=3.9 + license: BSD-2-Clause + license_family: BSD + size: 293226 + timestamp: 1738273949742 +- 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 + size: 34387 + timestamp: 1773931568510 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + sha256: acc1d991837c0afb67c75b77fdc72b4bf022aac71fedd8b9ea45918ac9b08a80 + md5: c85c76dc67d75619a92f51dfbce06992 + depends: + - python >=3.9 + - zipp >=3.1.0 + constrains: + - importlib-resources >=6.5.2,<6.5.3.0a0 + license: Apache-2.0 + license_family: APACHE + size: 33781 + timestamp: 1736252433366 +- 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 + size: 13387 + timestamp: 1760831448842 +- 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 + 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 + size: 133644 + timestamp: 1770566133040 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.12.0-pyhecfbec7_0.conda + sha256: 932044bd893f7adce6c9b384b96a72fd3804cc381e76789398c2fae900f21df7 + md5: b293210beb192c3024683bf6a998a0b8 + 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 + - pygments >=2.14.0 + - python >=3.12 + - stack_data >=0.6.0 + - traitlets >=5.13.0 + - pexpect >4.6 + - python + license: BSD-3-Clause + license_family: BSD + size: 649967 + timestamp: 1774609994657 +- 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 + size: 13993 + timestamp: 1737123723464 +- conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + sha256: 08e838d29c134a7684bca0468401d26840f41c92267c4126d7b43a6b533b0aed + md5: 0b0154421989637d424ccf0f104be51a + depends: + - arrow >=0.15.0 + - python >=3.9 + license: MIT + license_family: MIT + size: 19832 + timestamp: 1733493720346 +- 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 + size: 72146 + timestamp: 1772278531671 +- 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 + 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 + size: 120685 + timestamp: 1764517220861 +- conda: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.1.0-pyhcf101f3_1.conda + sha256: 904d43d5210584004cf8b38f9657c717661ae55b0fb3f60573be974e50653fa1 + md5: cc73a9bd315659dc5307a5270f44786f + depends: + - python >=3.10 + - python + license: MIT + license_family: MIT + size: 25946 + timestamp: 1769161799923 +- conda: https://conda.anaconda.org/conda-forge/noarch/json-merge-patch-0.2-pyhd8ed1ab_2.conda + sha256: dcb8881bd19ed15e321ae35bddd74c22277fbd5f4e47e4d62f40362f9212305d + md5: 4d05d9514233b53fe421c34e6b249c6b + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 11200 + timestamp: 1734249397662 +- conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.14.0-pyhd8ed1ab_0.conda + sha256: 9daa95bd164c8fa23b3ab196e906ef806141d749eddce2a08baa064f722d25fa + md5: 1269891272187518a0a75c286f7d0bbf + depends: + - python >=3.10 + license: Apache-2.0 + license_family: APACHE + size: 34731 + timestamp: 1774655440045 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_1.conda + sha256: 304955757d1fedbe344af43b12b5467cca072f83cce6109361ba942e186b3993 + md5: cb60ae9cf02b9fcb8004dec4089e5691 + depends: + - jsonpointer >=1.9 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 17311 + timestamp: 1733814664790 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonpointer-3.1.1-pyhcf101f3_0.conda + sha256: a3d10301b6ff399ba1f3d39e443664804a3d28315a4fb81e745b6817845f70ae + md5: 89bf346df77603055d3c8fe5811691e6 + depends: + - python >=3.10 + - python + license: BSD-3-Clause + license_family: BSD + size: 14190 + timestamp: 1774311356147 +- 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 + 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 + size: 19236 + timestamp: 1757335715225 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.26.0-hcf101f3_0.conda + sha256: 6886fc61e4e4edd38fd38729976b134e8bd2143f7fce56cc80d7ac7bac99bce1 + md5: 8368d58342d0825f0843dc6acdd0c483 + depends: + - jsonschema >=4.26.0,<4.26.1.0a0 + - fqdn + - idna + - isoduration + - jsonpointer >1.13 + - rfc3339-validator + - rfc3986-validator >0.1.0 + - rfc3987-syntax >=1.1.0 + - uri-template + - webcolors >=24.6.0 + license: MIT + license_family: MIT + size: 4740 + timestamp: 1767839954258 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.3.0-pyhcf101f3_0.conda + sha256: 897ad2e2c2335ef3c2826d7805e16002a1fd0d509b4ae0bc66617f0e0ff07bc2 + md5: 62b7c96c6cd77f8173cc5cada6a9acaa + depends: + - importlib-metadata >=4.8.3 + - jupyter_server >=1.1.2 + - python >=3.10 + - python + license: BSD-3-Clause + license_family: BSD + size: 60377 + timestamp: 1756388269267 +- 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 + 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 + size: 65503 + timestamp: 1760643864586 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyhe01879c_0.conda + sha256: e9964aaaf6d24a685cd5ce9d75731b643ed7f010fb979574a6580cd2f974c6cd + md5: 31e11c30bbee1682a55627f953c6725a + depends: + - jsonschema-with-format-nongpl >=4.18.0 + - packaging + - python >=3.9 + - python-json-logger >=2.0.4 + - pyyaml >=5.3 + - referencing + - rfc3339-validator + - rfc3986-validator >=0.1.1 + - traitlets >=5.3 + - python + license: BSD-3-Clause + license_family: BSD + size: 24306 + timestamp: 1770937604863 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.17.0-pyhcf101f3_0.conda + sha256: 74c4e642be97c538dae1895f7052599dfd740d8bd251f727bce6453ce8d6cd9a + md5: d79a87dcfa726bcea8e61275feed6f83 + depends: + - anyio >=3.1.0 + - argon2-cffi >=21.1 + - jinja2 >=3.0.3 + - jupyter_client >=7.4.4 + - jupyter_core >=4.12,!=5.0.* + - jupyter_events >=0.11.0 + - jupyter_server_terminals >=0.4.4 + - nbconvert-core >=6.4.4 + - nbformat >=5.3.0 + - overrides >=5.0 + - packaging >=22.0 + - prometheus_client >=0.9 + - python >=3.10 + - pyzmq >=24 + - send2trash >=1.8.2 + - terminado >=0.8.3 + - tornado >=6.2.0 + - traitlets >=5.6.0 + - websocket-client >=1.7 + - python + license: BSD-3-Clause + license_family: BSD + size: 347094 + timestamp: 1755870522134 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.4-pyhcf101f3_0.conda + sha256: 5eda79ed9f53f590031d29346abd183051263227dd9ee667b5ca1133ce297654 + md5: 7b8bace4943e0dc345fc45938826f2b8 + depends: + - python >=3.10 + - terminado >=0.8.3 + - python + license: BSD-3-Clause + license_family: BSD + size: 22052 + timestamp: 1768574057200 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.6-pyhd8ed1ab_0.conda + sha256: 436a70259a9b4e13ce8b15faa8b37342835954d77a0a74d21dd24547e0871088 + md5: bcbb401d6fa84e0cee34d4926b0e9e93 + depends: + - async-lru >=1.0.0 + - httpx >=0.25.0,<1 + - ipykernel >=6.5.0,!=6.30.0 + - jinja2 >=3.0.3 + - jupyter-lsp >=2.0.0 + - jupyter_core + - jupyter_server >=2.4.0,<3 + - jupyterlab_server >=2.28.0,<3 + - notebook-shim >=0.2 + - packaging + - python >=3.10 + - setuptools >=41.1.0 + - tomli >=1.2.2 + - tornado >=6.2.0 + - traitlets + license: BSD-3-Clause + license_family: BSD + size: 8245973 + timestamp: 1773240966438 +- 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 + size: 18711 + timestamp: 1733328194037 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.28.0-pyhcf101f3_0.conda + sha256: 381d2d6a259a3be5f38a69463e0f6c5dcf1844ae113058007b51c3bef13a7cee + md5: a63877cb23de826b1620d3adfccc4014 + depends: + - babel >=2.10 + - jinja2 >=3.0.3 + - json5 >=0.9.0 + - jsonschema >=4.18 + - jupyter_server >=1.21,<3 + - packaging >=21.3 + - python >=3.10 + - requests >=2.31 + - python + license: BSD-3-Clause + license_family: BSD + size: 51621 + timestamp: 1761145478692 +- conda: https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda + sha256: 2057ca87b313bde5b74b93b0e696f8faab69acd4cb0edebb78469f3f388040c0 + md5: 5aeabe88534ea4169d4c49998f293d6c + depends: + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 239104 + timestamp: 1703333860145 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jxrlib-1.1-h31becfc_3.conda + sha256: 157e151068d44042c56d6dd6f634d0b2c1fe084114ae56125299f518dd8b1500 + md5: 720f7b9ccdf426ac73dafcf92f7d7bf4 + depends: + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 238091 + timestamp: 1703333994798 +- conda: https://conda.anaconda.org/conda-forge/osx-64/jxrlib-1.1-h10d778d_3.conda + sha256: a548a4be14a4c76d6d992a5c1feffcbb08062f5c57abc6e4278d40c2c9a7185b + md5: cfaf81d843a80812fe16a68bdae60562 + license: BSD-2-Clause + license_family: BSD + size: 220376 + timestamp: 1703334073774 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/jxrlib-1.1-h93a5062_3.conda + sha256: c9e0d3cf9255d4585fa9b3d07ace3bd934fdc6a67ef4532e5507282eff2364ab + md5: 879997fd868f8e9e4c2a12aec8583799 + license: BSD-2-Clause + license_family: BSD + size: 197843 + timestamp: 1703334079437 +- 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 + size: 134088 + timestamp: 1754905959823 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.3-h86ecc28_0.conda + sha256: 5ce830ca274b67de11a7075430a72020c1fb7d486161a82839be15c2b84e9988 + md5: e7df0aab10b9cbb73ab2a467ebfaf8c7 + depends: + - libgcc >=13 + license: LGPL-2.1-or-later + size: 129048 + timestamp: 1754906002667 +- 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 + size: 1386730 + timestamp: 1769769569681 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.22.2-hfd895c2_0.conda + sha256: b53999d888dda53c506b264e8c02b5f5c8e022c781eda0718f007339e6bc90ba + md5: d9ca108bd680ea86a963104b6b3e95ca + depends: + - 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 + size: 1517436 + timestamp: 1769773395215 +- conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.22.2-h207b36a_0.conda + sha256: df009385e8262c234c0dae9016540b86dad3d299f0d9366d08e327e8e7731634 + md5: e66e2c52d2fdddcf314ad750fb4ebb4a + depends: + - __osx >=10.13 + - 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 + size: 1193620 + timestamp: 1769770267475 +- 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 + size: 1160828 + timestamp: 1769770119811 +- 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 + size: 94312 + timestamp: 1761596921009 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.18-h0c24ade_0.conda + sha256: 836ec4b895352110335b9fdcfa83a8dcdbe6c5fb7c06c4929130600caea91c0a + md5: 6f2e2c8f58160147c4d1c6f4c14cbac4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libjpeg-turbo >=3.1.2,<4.0a0 + - libtiff >=4.7.1,<4.8.0a0 + license: MIT + license_family: MIT + size: 249959 + timestamp: 1768184673131 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.18-h9d5b58d_0.conda + sha256: 379ef5e91a587137391a6149755d0e929f1a007d2dcb211318ac670a46c8596f + md5: bb960f01525b5e001608afef9d47b79c + depends: + - libgcc >=14 + - libjpeg-turbo >=3.1.2,<4.0a0 + - libtiff >=4.7.1,<4.8.0a0 + license: MIT + license_family: MIT + size: 293039 + timestamp: 1768184778398 +- conda: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.18-h90db99b_0.conda + sha256: 3ec16c491425999a8461e1b7c98558060a4645a20cf4c9ac966103c724008cc2 + md5: 753acc10c7277f953f168890e5397c80 + depends: + - __osx >=10.13 + - libjpeg-turbo >=3.1.2,<4.0a0 + - libtiff >=4.7.1,<4.8.0a0 + license: MIT + license_family: MIT + size: 226870 + timestamp: 1768184917403 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.18-hdfa7624_0.conda + sha256: d768da024ab74a4b30642401877fa914a68bdc238667f16b1ec2e0e98b2451a6 + md5: 6631a7bd2335bb9699b1dbc234b19784 + depends: + - __osx >=11.0 + - libjpeg-turbo >=3.1.2,<4.0a0 + - libtiff >=4.7.1,<4.8.0a0 + license: MIT + license_family: MIT + size: 211756 + timestamp: 1768184994800 +- 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 + size: 728002 + timestamp: 1774197446916 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda + sha256: 7abd913d81a9bf00abb699e8987966baa2065f5132e37e815f92d90fc6bba530 + md5: a21644fc4a83da26452a718dc9468d5f + depends: + - zstd >=1.5.7,<1.6.0a0 + constrains: + - binutils_impl_linux-aarch64 2.45.1 + license: GPL-3.0-only + license_family: GPL + size: 875596 + timestamp: 1774197520746 +- 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 + size: 261513 + timestamp: 1773113328888 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.1.0-h52b7260_0.conda + sha256: 8957fd460c1c132c8031f65fd5f56ec3807fd71b7cab2c5e2b0937b13404ab36 + md5: d13423b06447113a90b5b1366d4da171 + depends: + - libgcc >=14 + - libstdcxx >=14 + license: Apache-2.0 + license_family: Apache + size: 240444 + timestamp: 1773114901155 +- conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.1.0-h35c7297_0.conda + sha256: f918716c71c8bebbc0c40e1050878aa512fea92c1d17c363ca35650bc60f6c35 + md5: d2fe7e177d1c97c985140bd54e2a5e33 + depends: + - __osx >=11.0 + - libcxx >=19 + license: Apache-2.0 + license_family: Apache + size: 215089 + timestamp: 1773114468701 +- 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 + size: 164222 + timestamp: 1773114244984 +- 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 + size: 1384817 + timestamp: 1770863194876 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20260107.1-cxx17_h6983b43_0.conda + sha256: 37675140819e10235a8ff342cb09f688f843ac390b64856d8e230700bbd7d5aa + md5: 2a19160c13e688710dd200812fc9a6d3 + depends: + - libgcc >=14 + - libstdcxx >=14 + constrains: + - abseil-cpp =20260107.1 + - libabseil-static =20260107.1=cxx17* + license: Apache-2.0 + license_family: Apache + size: 1401836 + timestamp: 1770863223557 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20260107.1-cxx17_h7ed6875_0.conda + sha256: 2b4ff36082ddfbacc47ac6e11d4dd9f3403cd109ce8d7f0fbee0cdd47cdef013 + md5: 317f40d7bd7bf6d54b56d4a5b5f5085d + depends: + - __osx >=10.13 + - libcxx >=19 + constrains: + - libabseil-static =20260107.1=cxx17* + - abseil-cpp =20260107.1 + license: Apache-2.0 + license_family: Apache + size: 1217836 + timestamp: 1770863510112 +- 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 + size: 1229639 + timestamp: 1770863511331 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libadbc-driver-postgresql-1.10.0-hedb09cf_0.conda + sha256: 98ff6e84922a8e9890535a024c58a7df9d6d65dcdd31637b9cc0d3c716d7bf9a + md5: c9cbad505654b11d9e0a648cd5286661 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libpq >=18.1,<19.0a0 + - libstdcxx >=14 + license: Apache-2.0 + license_family: APACHE + size: 277747 + timestamp: 1767962680623 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libadbc-driver-postgresql-1.10.0-hd3e9c16_0.conda + sha256: b5b5573f889cef81774d652e8b3058009a20cc8cf4ebc63b6004eb27130f905e + md5: 94ef29b33c06e40dd2b8ff1825a0e6e0 + depends: + - libgcc >=14 + - libpq >=18.1,<19.0a0 + - libstdcxx >=14 + license: Apache-2.0 + license_family: APACHE + size: 310535 + timestamp: 1767962839757 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libadbc-driver-postgresql-1.10.0-hc76a90b_0.conda + sha256: acd7cd2830ed807a6b06f39200ec0a6e46f34fe548722d1da5acdf9b311d3dd3 + md5: 069e9ea088b9fecf5bdbba4b8fe1f1d4 + depends: + - __osx >=11.0 + - libcxx >=19 + - libpq >=18.1,<19.0a0 + license: Apache-2.0 + license_family: APACHE + size: 259159 + timestamp: 1767963191888 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libadbc-driver-postgresql-1.10.0-h217c5a4_0.conda + sha256: e28fd188ca7e89c877c2dc377c0642f82232898e2ecfe3b5d7bf04c09802d435 + md5: f6cc743b07ebaeb7e43dc9db4c65e4b6 + depends: + - __osx >=11.0 + - libcxx >=19 + - libpq >=18.1,<19.0a0 + license: Apache-2.0 + license_family: APACHE + size: 236420 + timestamp: 1767963767651 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libadbc-driver-sqlite-1.10.0-hcea63bf_0.conda + sha256: a1453f576061b373d972a82448837c9247b02c99645c3b594f54e5f5737ce68b + md5: bba5965f80c09bf20cb0c0ea7b79375a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libsqlite >=3.51.1,<4.0a0 + - libstdcxx >=14 + license: Apache-2.0 + license_family: APACHE + size: 194792 + timestamp: 1767962824488 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libadbc-driver-sqlite-1.10.0-h54c4e81_0.conda + sha256: 98fe078a55fc26f648f793c310d057a7940fa63f6ec1014336096d32febce4ca + md5: d3dd8f4267a013ec9f7c781635be1b64 + depends: + - libgcc >=14 + - libsqlite >=3.51.1,<4.0a0 + - libstdcxx >=14 + license: Apache-2.0 + license_family: APACHE + size: 221402 + timestamp: 1767962988133 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libadbc-driver-sqlite-1.10.0-h5c786d0_0.conda + sha256: 3efb0b7eb4f458dbf6e56f449b23466799fd707af57f2573cc57f6708a4d727d + md5: b0530efeebdd76337a04df3805fe1746 + depends: + - __osx >=11.0 + - libcxx >=19 + - libsqlite >=3.51.1,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 204528 + timestamp: 1767963380767 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libadbc-driver-sqlite-1.10.0-hb70094c_0.conda + sha256: 17556331407dc011a8ad9d3727150e3e75990a09909a4a15bdbb2a4ec8d2187c + md5: 1962560ece9b6fb15bc992fc8048365a + depends: + - __osx >=11.0 + - libcxx >=19 + - libsqlite >=3.51.1,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 189705 + timestamp: 1767963942272 +- 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 + size: 36544 + timestamp: 1769221884824 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libaec-1.1.5-hff7e48a_0.conda + sha256: 8b74acb52cda5f4ba91f59c85132f582de5db9dceff4e252f49c2525d14c600c + md5: 345c7bf559743adb5375ee3603911065 + depends: + - libgcc >=14 + - libstdcxx >=14 + license: BSD-2-Clause + license_family: BSD + size: 37745 + timestamp: 1769221878827 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libaec-1.1.5-he7c3a48_0.conda + sha256: b42ac9c684c730cb97cb3931a0a97aaf791da38bace4f6944eca10de609e5946 + md5: 975f98248cde8d54884c6d1eb5184e13 + depends: + - __osx >=10.13 + - libcxx >=19 + license: BSD-2-Clause + license_family: BSD + size: 30555 + timestamp: 1769222189944 +- 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 + size: 30390 + timestamp: 1769222133373 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-23.0.1-ha7f89c6_9_cpu.conda + build_number: 9 + sha256: 227150d746680ddb0c1e8c346647d62f3e6b6fc43c22f87a330c616c9ef68d9d + md5: b94c6431eadc98b61f4b9c62a338b3c6 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.37.4,<0.37.5.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: + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + license: Apache-2.0 + license_family: APACHE + size: 6492912 + timestamp: 1774232411616 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-23.0.1-h155c802_9_cpu.conda + build_number: 9 + sha256: 8c537ca288ffd799118bb3daa0aa8a31991c0a25848246b1aa8f70ee2b330433 + md5: 8fe2e36860d0e119173b1e203708131a + depends: + - aws-crt-cpp >=0.37.4,<0.37.5.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: + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + license: Apache-2.0 + license_family: APACHE + size: 6061902 + timestamp: 1774230780577 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-23.0.1-h6b6ab80_9_cpu.conda + build_number: 9 + sha256: 808ad16fd0f14ac82f4d4112280bbb9cd895da1d6189a8e38286bc1249b01c8a + md5: 98988c7b23a97e2ad179759134276eeb + depends: + - __osx >=11.0 + - aws-crt-cpp >=0.37.4,<0.37.5.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: + - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 + license: Apache-2.0 + license_family: APACHE + size: 4366438 + timestamp: 1774234243280 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-23.0.1-h2124f06_9_cpu.conda + build_number: 9 + sha256: f83971e3ac14af1bac795ea10cfbec05b61be727706add6afa687c73ce8549b5 + md5: b465d5d30009bdf37d672f825017840a + depends: + - __osx >=11.0 + - aws-crt-cpp >=0.37.4,<0.37.5.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: + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + license: Apache-2.0 + license_family: APACHE + size: 4249863 + timestamp: 1774231755880 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-23.0.1-h635bf11_9_cpu.conda + build_number: 9 + sha256: 42fb618f2402d14e96987d82f36453793ee7bae07c8dfa7fee54491bf1d163d9 + md5: 84cdfd12ec9a363b400f7d3850838ea3 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 23.0.1 ha7f89c6_9_cpu + - libarrow-compute 23.0.1 h53684a4_9_cpu + - libgcc >=14 + - libstdcxx >=14 + license: Apache-2.0 + license_family: APACHE + size: 609325 + timestamp: 1774232640179 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-23.0.1-hb326ee9_9_cpu.conda + build_number: 9 + sha256: 555ad71b9d3da2245785e6499315c920c8db7cb8905e2f74f7a895c682e16d6a + md5: 133d1129f5b9945fa3f034c88c54ba11 + depends: + - libarrow 23.0.1 h155c802_9_cpu + - libarrow-compute 23.0.1 hdd99842_9_cpu + - libgcc >=14 + - libstdcxx >=14 + license: Apache-2.0 + license_family: APACHE + size: 567832 + timestamp: 1774230923191 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-23.0.1-h66151e4_9_cpu.conda + build_number: 9 + sha256: e0863f1c9a8659e68bfebc85a319741c74371e2f04fa6908a5b103bce0aaed28 + md5: 9c59de5a4b55ec612474fd303d3f75f2 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libarrow 23.0.1 h6b6ab80_9_cpu + - libarrow-compute 23.0.1 h5d4fa73_9_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 + size: 560913 + timestamp: 1774234961768 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-23.0.1-hee8fe31_9_cpu.conda + build_number: 9 + sha256: 807b643446069dcdac76cc9a034d5d6dddc26c28dd6d489bb7470e8444abf7be + md5: 7cda086867aa6c8c5fed0acd7342e597 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libarrow 23.0.1 h2124f06_9_cpu + - libarrow-compute 23.0.1 h3b6a98a_9_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 + size: 537445 + timestamp: 1774232143744 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-23.0.1-h53684a4_9_cpu.conda + build_number: 9 + sha256: 6ce44b5992a855e2412d904181729272b4732e8ebd8283a20b5b0b93f91f48f3 + md5: b3ba3597c481a636fc161185819cf6b1 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 23.0.1 ha7f89c6_9_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 + size: 3003173 + timestamp: 1774232490011 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-compute-23.0.1-hdd99842_9_cpu.conda + build_number: 9 + sha256: 2db007e0f87403c2466307963857b9a349290f08bdbabe3d2a19569ad4c9f26b + md5: 36bf464829a411fb6aac0a0e89aaab01 + depends: + - libarrow 23.0.1 h155c802_9_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 + size: 2570646 + timestamp: 1774230827833 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-compute-23.0.1-h5d4fa73_9_cpu.conda + build_number: 9 + sha256: 7bddce085a137c70069bd37313724ef00d060b6c7c1c55d76f51bd2e4172c976 + md5: e3356cb1de84a65a2a6fdcb75cc9360c + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libarrow 23.0.1 h6b6ab80_9_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 + size: 2402737 + timestamp: 1774234492 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-compute-23.0.1-h3b6a98a_9_cpu.conda + build_number: 9 + sha256: b37ca8baebed6d2aab5a24b7abe054ae1fb27aacf41ffe0316219d4be42079b9 + md5: 815aba0e26cb9494dbe428586e95dd2f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libarrow 23.0.1 h2124f06_9_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 + size: 2258629 + timestamp: 1774231884175 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-23.0.1-h635bf11_9_cpu.conda + build_number: 9 + sha256: cc3fb77d53f7e2db2cd35ffc1371d677d9e13682b7964e196cab533b319a85ea + md5: 9c5282b7aaf2261d3dbe5a61d24d5337 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 23.0.1 ha7f89c6_9_cpu + - libarrow-acero 23.0.1 h635bf11_9_cpu + - libarrow-compute 23.0.1 h53684a4_9_cpu + - libgcc >=14 + - libparquet 23.0.1 h7376487_9_cpu + - libstdcxx >=14 + license: Apache-2.0 + license_family: APACHE + size: 607738 + timestamp: 1774232745741 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-23.0.1-hb326ee9_9_cpu.conda + build_number: 9 + sha256: 701698a850ebf8e7bb0c37af8083f1add83af1c4c29cfdeefe231c655700c187 + md5: 8209b5b3b93aeac194228cc3fad2519f + depends: + - libarrow 23.0.1 h155c802_9_cpu + - libarrow-acero 23.0.1 hb326ee9_9_cpu + - libarrow-compute 23.0.1 hdd99842_9_cpu + - libgcc >=14 + - libparquet 23.0.1 h87079af_9_cpu + - libstdcxx >=14 + license: Apache-2.0 + license_family: APACHE + size: 569672 + timestamp: 1774230979201 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-23.0.1-h66151e4_9_cpu.conda + build_number: 9 + sha256: 9dbc4f5a19d57e3231e6ce135d1f4951bb13d27263c93acc2a91c79148ec8602 + md5: 6be29d8b5159c70026d967966c80792d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libarrow 23.0.1 h6b6ab80_9_cpu + - libarrow-acero 23.0.1 h66151e4_9_cpu + - libarrow-compute 23.0.1 h5d4fa73_9_cpu + - libcxx >=21 + - libopentelemetry-cpp >=1.26.0,<1.27.0a0 + - libparquet 23.0.1 h527dc83_9_cpu + - libprotobuf >=6.33.5,<6.33.6.0a0 + license: Apache-2.0 + license_family: APACHE + size: 551166 + timestamp: 1774235299847 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-23.0.1-hee8fe31_9_cpu.conda + build_number: 9 + sha256: 42672a9adaadb8da15566e24cf2de35d1d05cc3db72413affdfdc12985ac92a0 + md5: 110646c79598670eaa007968280b5596 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libarrow 23.0.1 h2124f06_9_cpu + - libarrow-acero 23.0.1 hee8fe31_9_cpu + - libarrow-compute 23.0.1 h3b6a98a_9_cpu + - libcxx >=21 + - libopentelemetry-cpp >=1.26.0,<1.27.0a0 + - libparquet 23.0.1 h16c0493_9_cpu + - libprotobuf >=6.33.5,<6.33.6.0a0 + license: Apache-2.0 + license_family: APACHE + size: 536818 + timestamp: 1774232323846 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-23.0.1-hb4dd7c2_9_cpu.conda + build_number: 9 + sha256: 037f4befc2df64d9c7903eb7508c1495772f17b7a318b5a888aaddb6307b48a0 + md5: d5338f154126253750e8ccc539386b92 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libarrow 23.0.1 ha7f89c6_9_cpu + - libarrow-acero 23.0.1 h635bf11_9_cpu + - libarrow-dataset 23.0.1 h635bf11_9_cpu + - libgcc >=14 + - libprotobuf >=6.33.5,<6.33.6.0a0 + - libstdcxx >=14 + license: Apache-2.0 + license_family: APACHE + size: 518730 + timestamp: 1774232781245 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-23.0.1-hf29bd21_9_cpu.conda + build_number: 9 + sha256: 804a0a946f5ef52f125f16a6621882361c924a80e8770daffe6f4138acca1025 + md5: 6ec9c787823db8fdb9908db9e9c63119 + depends: + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libarrow 23.0.1 h155c802_9_cpu + - libarrow-acero 23.0.1 hb326ee9_9_cpu + - libarrow-dataset 23.0.1 hb326ee9_9_cpu + - libgcc >=14 + - libprotobuf >=6.33.5,<6.33.6.0a0 + - libstdcxx >=14 + license: Apache-2.0 + license_family: APACHE + size: 489159 + timestamp: 1774231008745 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-23.0.1-h613493e_9_cpu.conda + build_number: 9 + sha256: b93ace7487e34db4bd987e8d428f390ae627317968c48d16fd14314e35fdd419 + md5: d248a26d3956bd6c7267539586b5c6e6 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libarrow 23.0.1 h6b6ab80_9_cpu + - libarrow-acero 23.0.1 h66151e4_9_cpu + - libarrow-dataset 23.0.1 h66151e4_9_cpu + - libcxx >=21 + - libprotobuf >=6.33.5,<6.33.6.0a0 + license: Apache-2.0 + license_family: APACHE + size: 466755 + timestamp: 1774235410627 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-23.0.1-h05be00f_9_cpu.conda + build_number: 9 + sha256: 37b12a2d645c267e0f289ccf5890d0df1cad5f300fabe116a2cca5608f89181d + md5: cff8fd0f1cc0801a172114f7742ede4a + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libarrow 23.0.1 h2124f06_9_cpu + - libarrow-acero 23.0.1 hee8fe31_9_cpu + - libarrow-dataset 23.0.1 hee8fe31_9_cpu + - libcxx >=21 + - libprotobuf >=6.33.5,<6.33.6.0a0 + license: Apache-2.0 + license_family: APACHE + size: 472305 + timestamp: 1774232406953 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.4.1-hcfa2d63_0.conda + sha256: e29d8ed0334305c6bafecb32f9a1967cfc0a081eac916e947a1f2f7c4bb41947 + md5: f79415aee8862b3af85ea55dea37e46b + depends: + - __glibc >=2.17,<3.0.a0 + - aom >=3.9.1,<3.10.0a0 + - dav1d >=1.2.1,<1.2.2.0a0 + - libgcc >=14 + - rav1e >=0.8.1,<0.9.0a0 + - svt-av1 >=4.0.1,<4.0.2.0a0 + license: BSD-2-Clause + license_family: BSD + size: 148710 + timestamp: 1774042709303 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.4.1-ha599f14_0.conda + sha256: ef94450974f46f247bb230e5127ac8deeed4d8652c8420aeb5b3abff5d8c7bef + md5: f62ded0248f8fae85ada62014d5a1e54 + depends: + - aom >=3.9.1,<3.10.0a0 + - dav1d >=1.2.1,<1.2.2.0a0 + - libgcc >=14 + - rav1e >=0.8.1,<0.9.0a0 + - svt-av1 >=4.0.1,<4.0.2.0a0 + license: BSD-2-Clause + license_family: BSD + size: 147953 + timestamp: 1774042696884 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libavif16-1.4.1-h9d3eb37_0.conda + sha256: b05246b6940fab957585bbc45bca440c0ad4e98ba3ead0ddb28b95ac7583337c + md5: ceedf05905ff9d9bc784ed91a5705f01 + depends: + - __osx >=11.0 + - aom >=3.9.1,<3.10.0a0 + - dav1d >=1.2.1,<1.2.2.0a0 + - rav1e >=0.8.1,<0.9.0a0 + - svt-av1 >=4.0.1,<4.0.2.0a0 + license: BSD-2-Clause + license_family: BSD + size: 132870 + timestamp: 1774043184519 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.4.1-hfce71f6_0.conda + sha256: 09e31e51026a3b74d947ba4b30a68dd99013aeef2860bcb03565bf43cad18da6 + md5: 2df04ee54a2ce2d34cf375eb02a63725 + depends: + - __osx >=11.0 + - aom >=3.9.1,<3.10.0a0 + - dav1d >=1.2.1,<1.2.2.0a0 + - rav1e >=0.8.1,<0.9.0a0 + - svt-av1 >=4.0.1,<4.0.2.0a0 + license: BSD-2-Clause + license_family: BSD + size: 118959 + timestamp: 1774043016600 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-6_h4a7cf45_openblas.conda + build_number: 6 + sha256: 7bfe936dbb5db04820cf300a9cc1f5ee8d5302fc896c2d66e30f1ee2f20fbfd6 + md5: 6d6d225559bfa6e2f3c90ee9c03d4e2e + depends: + - libopenblas >=0.3.32,<0.3.33.0a0 + - libopenblas >=0.3.32,<1.0a0 + constrains: + - blas 2.306 openblas + - liblapack 3.11.0 6*_openblas + - liblapacke 3.11.0 6*_openblas + - libcblas 3.11.0 6*_openblas + - mkl <2026 + license: BSD-3-Clause + license_family: BSD + size: 18621 + timestamp: 1774503034895 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.11.0-6_haddc8a3_openblas.conda + build_number: 6 + sha256: 7374c744c37786bfa4cfd30bbbad13469882e5d9f32ed792922b447b7e369554 + md5: 652bb20bb4618cacd11e17ae070f47ce + depends: + - libopenblas >=0.3.32,<0.3.33.0a0 + - libopenblas >=0.3.32,<1.0a0 + constrains: + - blas 2.306 openblas + - mkl <2026 + - liblapack 3.11.0 6*_openblas + - liblapacke 3.11.0 6*_openblas + - libcblas 3.11.0 6*_openblas + license: BSD-3-Clause + license_family: BSD + size: 18682 + timestamp: 1774503047392 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.11.0-6_he492b99_openblas.conda + build_number: 6 + sha256: 6865098475f3804208038d0c424edf926f4dc9eacaa568d14e29f59df53731fd + md5: 93e7fc07b395c9e1341d3944dcf2aced + depends: + - libopenblas >=0.3.32,<0.3.33.0a0 + - libopenblas >=0.3.32,<1.0a0 + constrains: + - libcblas 3.11.0 6*_openblas + - blas 2.306 openblas + - mkl <2026 + - liblapacke 3.11.0 6*_openblas + - liblapack 3.11.0 6*_openblas + license: BSD-3-Clause + license_family: BSD + size: 18724 + timestamp: 1774503646078 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.11.0-6_h51639a9_openblas.conda + build_number: 6 + sha256: 979227fc03628925037ab2dfda008eb7b5592644d9c2c21dd285cefe8c42553d + md5: e551103471911260488a02155cef9c94 + depends: + - libopenblas >=0.3.32,<0.3.33.0a0 + - libopenblas >=0.3.32,<1.0a0 + constrains: + - liblapacke 3.11.0 6*_openblas + - liblapack 3.11.0 6*_openblas + - blas 2.306 openblas + - libcblas 3.11.0 6*_openblas + - mkl <2026 + license: BSD-3-Clause + license_family: BSD + size: 18859 + timestamp: 1774504387211 +- 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 + size: 79965 + timestamp: 1764017188531 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.2.0-he30d5cf_1.conda + sha256: 5fa8c163c8d776503aa68cdaf798ff9440c76a0a1c3ea84e0c43dbf1ece8af4d + md5: 8ec1d03f3000108899d1799d9964f281 + depends: + - libgcc >=14 + license: MIT + license_family: MIT + size: 80030 + timestamp: 1764017273715 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.2.0-h8616949_1.conda + sha256: 4c19b211b3095f541426d5a9abac63e96a5045e509b3d11d4f9482de53efe43b + md5: f157c098841474579569c85a60ece586 + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 78854 + timestamp: 1764017554982 +- 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 + size: 79443 + timestamp: 1764017945924 +- 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 + size: 34632 + timestamp: 1764017199083 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.2.0-he30d5cf_1.conda + sha256: 494365e8f58799ea95a6e82334ef696e9c2120aecd6626121694b30a15033301 + md5: 47e5b71b77bb8b47b4ecf9659492977f + depends: + - libbrotlicommon 1.2.0 he30d5cf_1 + - libgcc >=14 + license: MIT + license_family: MIT + size: 33166 + timestamp: 1764017282936 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.2.0-h8616949_1.conda + sha256: 729158be90ae655a4e0427fe4079767734af1f9b69ff58cf94ca6e8d4b3eb4b7 + md5: 63186ac7a8a24b3528b4b14f21c03f54 + depends: + - __osx >=10.13 + - libbrotlicommon 1.2.0 h8616949_1 + license: MIT + license_family: MIT + size: 30835 + timestamp: 1764017584474 +- 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 + size: 29452 + timestamp: 1764017979099 +- 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 + size: 298378 + timestamp: 1764017210931 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.2.0-he30d5cf_1.conda + sha256: f998c03257b9aa1f7464446af2cf424862f0e54258a2a588309853e45ae771df + md5: 6553a5d017fe14859ea8a4e6ea5def8f + depends: + - libbrotlicommon 1.2.0 he30d5cf_1 + - libgcc >=14 + license: MIT + license_family: MIT + size: 309304 + timestamp: 1764017292044 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.2.0-h8616949_1.conda + sha256: 8ece7b41b6548d6601ac2c2cd605cf2261268fc4443227cc284477ed23fbd401 + md5: 12a58fd3fc285ce20cf20edf21a0ff8f + depends: + - __osx >=10.13 + - libbrotlicommon 1.2.0 h8616949_1 + license: MIT + license_family: MIT + size: 310355 + timestamp: 1764017609985 +- 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 + size: 290754 + timestamp: 1764018009077 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-6_h0358290_openblas.conda + build_number: 6 + sha256: 57edafa7796f6fa3ebbd5367692dd4c7f552be42109c2dd1a7c89b55089bf374 + md5: 36ae340a916635b97ac8a0655ace2a35 + depends: + - libblas 3.11.0 6_h4a7cf45_openblas + constrains: + - blas 2.306 openblas + - liblapack 3.11.0 6*_openblas + - liblapacke 3.11.0 6*_openblas + license: BSD-3-Clause + license_family: BSD + size: 18622 + timestamp: 1774503050205 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.11.0-6_hd72aa62_openblas.conda + build_number: 6 + sha256: 5dd9e872cf8ebd632f31cd3a5ca6d3cb331f4d3a90bfafbe572093afeb77632b + md5: 939e300b110db241a96a1bed438c315b + depends: + - libblas 3.11.0 6_haddc8a3_openblas + constrains: + - blas 2.306 openblas + - liblapack 3.11.0 6*_openblas + - liblapacke 3.11.0 6*_openblas + license: BSD-3-Clause + license_family: BSD + size: 18689 + timestamp: 1774503058069 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.11.0-6_h9b27e0a_openblas.conda + build_number: 6 + sha256: 8422e1ce083e015bdb44addd25c9a8fe99aa9b0edbd9b7f1239b7ac1e3d04f77 + md5: 2a174868cb9e136c4e92b3ffc2815f04 + depends: + - libblas 3.11.0 6_he492b99_openblas + constrains: + - liblapacke 3.11.0 6*_openblas + - blas 2.306 openblas + - liblapack 3.11.0 6*_openblas + license: BSD-3-Clause + license_family: BSD + size: 18713 + timestamp: 1774503667477 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.11.0-6_hb0561ab_openblas.conda + build_number: 6 + sha256: 2e6b3e9b1ab672133b70fc6730e42290e952793f132cb5e72eee22835463eba0 + md5: 805c6d31c5621fd75e53dfcf21fb243a + depends: + - libblas 3.11.0 6_h51639a9_openblas + constrains: + - liblapacke 3.11.0 6*_openblas + - blas 2.306 openblas + - liblapack 3.11.0 6*_openblas + license: BSD-3-Clause + license_family: BSD + size: 18863 + timestamp: 1774504433388 +- 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 + size: 20440 + timestamp: 1633683576494 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea + md5: 268ee639c17ada0002fb04dd21816cc2 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + license: BSD-3-Clause + license_family: BSD + size: 18669 + timestamp: 1633683724891 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcrc32c-1.1.2-he49afe7_0.tar.bz2 + sha256: 3043869ac1ee84554f177695e92f2f3c2c507b260edad38a0bf3981fce1632ff + md5: 23d6d5a69918a438355d7cbc4c3d54c9 + depends: + - libcxx >=11.1.0 + license: BSD-3-Clause + license_family: BSD + size: 20128 + timestamp: 1633683906221 +- 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 + size: 18765 + timestamp: 1633683992603 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.19.0-hcf29cc6_0.conda + sha256: a0390fd0536ebcd2244e243f5f00ab8e76ab62ed9aa214cd54470fe7496620f4 + md5: d50608c443a30c341c24277d28290f76 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.22.2,<1.23.0a0 + - libgcc >=14 + - libnghttp2 >=1.67.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.5,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: curl + license_family: MIT + size: 466704 + timestamp: 1773218522665 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.19.0-hc57f145_0.conda + sha256: 75c1b2f9cff7598c593dda96c55963298bebb5bcb5a77af0b4c41cb03d26100b + md5: d5306c7ec07faf48cfb0e552c67339e0 + depends: + - krb5 >=1.22.2,<1.23.0a0 + - libgcc >=14 + - libnghttp2 >=1.67.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.5,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: curl + license_family: MIT + size: 485694 + timestamp: 1773218484057 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.19.0-h8f0b9e4_0.conda + sha256: 55c6b34ae18a7f8f57d9ffe3f4ec2a82ddcc8a87248d2447f9bbba3ba66d8aec + md5: 8bc2742696d50c358f4565b25ba33b08 + depends: + - __osx >=11.0 + - krb5 >=1.22.2,<1.23.0a0 + - libnghttp2 >=1.67.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.5,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: curl + license_family: MIT + size: 419039 + timestamp: 1773219507657 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.19.0-hd5a2499_0.conda + sha256: c4d581b067fa60f9dc0e1c5f18b756760ff094a03139e6b206eb98d185ae2bb1 + md5: 9fc7771fc8104abed9119113160be15a + depends: + - __osx >=11.0 + - krb5 >=1.22.2,<1.23.0a0 + - libnghttp2 >=1.67.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.5,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: curl + license_family: MIT + size: 399616 + timestamp: 1773219210246 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-22.1.2-h19cb2f5_0.conda + sha256: 46561199545890e050a8a90edcfce984e5f881da86b09388926e3a6c6b759dec + md5: ed6f7b7a35f942a0301e581d72616f7d + depends: + - __osx >=11.0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 564908 + timestamp: 1774439353713 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-22.1.2-h55c6f16_0.conda + sha256: d1402087c8792461bfc081629e8aa97e6e577a31ae0b84e6b9cc144a18f48067 + md5: 4280e0a7fd613b271e022e60dea0138c + depends: + - __osx >=11.0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 568094 + timestamp: 1774439202359 +- 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 + size: 73490 + timestamp: 1761979956660 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.25-h1af38f5_0.conda + sha256: 48814b73bd462da6eed2e697e30c060ae16af21e9fbed30d64feaf0aad9da392 + md5: a9138815598fe6b91a1d6782ca657b0c + depends: + - libgcc >=14 + license: MIT + license_family: MIT + size: 71117 + timestamp: 1761979776756 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.25-h517ebb2_0.conda + sha256: 025f8b1e85dd8254e0ca65f011919fb1753070eb507f03bca317871a884d24de + md5: 31aa65919a729dc48180893f62c25221 + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 70840 + timestamp: 1761980008502 +- 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 + size: 55420 + timestamp: 1761980066242 +- 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 + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + license: BSD-2-Clause + license_family: BSD + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda + sha256: 6cc49785940a99e6a6b8c6edbb15f44c2dd6c789d9c283e5ee7bdfedd50b4cd6 + md5: 1f4ed31220402fcddc083b4bff406868 + depends: + - ncurses + - __osx >=10.13 + - ncurses >=6.5,<7.0a0 + license: BSD-2-Clause + license_family: BSD + size: 115563 + timestamp: 1738479554273 +- 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 + size: 107691 + timestamp: 1738479560845 +- 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 + size: 112766 + timestamp: 1702146165126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 + md5: a9a13cb143bbaa477b1ebaefbe47a302 + depends: + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 115123 + timestamp: 1702146237623 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda + sha256: 0d238488564a7992942aa165ff994eca540f687753b4f0998b29b4e4d030ff43 + md5: 899db79329439820b7e8f8de41bca902 + license: BSD-2-Clause + license_family: BSD + size: 106663 + timestamp: 1702146352558 +- 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 + size: 107458 + timestamp: 1702146414478 +- 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 + size: 427426 + timestamp: 1685725977222 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 + md5: 96ae6083cd1ac9f6bc81631ac835b317 + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 438992 + timestamp: 1685726046519 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libevent-2.1.12-ha90c15b_1.conda + sha256: e0bd9af2a29f8dd74309c0ae4f17a7c2b8c4b89f875ff1d6540c941eefbd07fb + md5: e38e467e577bd193a7d5de7c2c540b04 + depends: + - openssl >=3.1.1,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 372661 + timestamp: 1685726378869 +- 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 + size: 368167 + timestamp: 1685726248899 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.5-hecca717_0.conda + sha256: e8c2b57f6aacabdf2f1b0924bd4831ce5071ba080baa4a9e8c0d720588b6794c + md5: 49f570f3bc4c874a06ea69b7225753af + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + constrains: + - expat 2.7.5.* + license: MIT + license_family: MIT + size: 76624 + timestamp: 1774719175983 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.7.5-hfae3067_0.conda + sha256: 6d438fc0bfdb263c24654fe49c09b31f06ec78eb709eb386392d2499af105f85 + md5: 05d1e0b30acd816a192c03dc6e164f4d + depends: + - libgcc >=14 + constrains: + - expat 2.7.5.* + license: MIT + license_family: MIT + size: 76523 + timestamp: 1774719129371 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.5-hcc62823_0.conda + sha256: 341d8a457a8342c396a8ac788da2639cbc8b62568f6ba2a3d322d1ace5aa9e16 + md5: 1d6e71b8c73711e28ffe207acdc4e2f8 + depends: + - __osx >=11.0 + constrains: + - expat 2.7.5.* + license: MIT + license_family: MIT + size: 74797 + timestamp: 1774719557730 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.5-hf6b4638_0.conda + sha256: 06780dec91dd25770c8cf01e158e1062fbf7c576b1406427475ce69a8af75b7e + md5: a32123f93e168eaa4080d87b0fb5da8a + depends: + - __osx >=11.0 + constrains: + - expat 2.7.5.* + license: MIT + license_family: MIT + size: 68192 + timestamp: 1774719211725 +- 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 + size: 58592 + timestamp: 1769456073053 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda + sha256: 3df4c539449aabc3443bbe8c492c01d401eea894603087fca2917aa4e1c2dea9 + md5: 2f364feefb6a7c00423e80dcb12db62a + depends: + - libgcc >=14 + license: MIT + license_family: MIT + size: 55952 + timestamp: 1769456078358 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.5.2-hd1f9c09_0.conda + sha256: 951958d1792238006fdc6fce7f71f1b559534743b26cc1333497d46e5903a2d6 + md5: 66a0dc7464927d0853b590b6f53ba3ea + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 53583 + timestamp: 1769456300951 +- 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 + size: 40979 + timestamp: 1769456747661 +- 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 + size: 8049 + timestamp: 1774298163029 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype-2.14.3-h8af1aa0_0.conda + sha256: 752e4f66283d7deb4c6fd47d88df644d8daa2aaa825a54f3bf350a625190192a + md5: a229e22d4d8814a07702b0919d8e6701 + depends: + - libfreetype6 >=2.14.3 + license: GPL-2.0-only OR FTL + size: 8125 + timestamp: 1774301094057 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.14.3-h694c41f_0.conda + sha256: b5daa4cee3beb98a0317e81a20aa507b9f897a9e21b11fe0b2e32852e372f746 + md5: 63b822fcf984c891f0afab2eedfcfaf4 + depends: + - libfreetype6 >=2.14.3 + license: GPL-2.0-only OR FTL + size: 8088 + timestamp: 1774298785964 +- 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 + size: 8091 + timestamp: 1774298691258 +- 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 + size: 384575 + timestamp: 1774298162622 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype6-2.14.3-hdae7a39_0.conda + sha256: 8e6b27fe4eec4c2fa7b7769a21973734c8dba1de80086fb0213e58375ac09f4c + md5: b99ed99e42dafb27889483b3098cace7 + depends: + - 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 + size: 422941 + timestamp: 1774301093473 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.14.3-h58fbd8d_0.conda + sha256: 9d34b5b2be6ebdd3bcd9e21d6598d493afce4d3fcd2d419f3356022cb4d746fd + md5: 27515b8ab8bf4abd8d3d90cf11212411 + 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 + size: 364828 + timestamp: 1774298783922 +- 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 + size: 338085 + timestamp: 1774298689297 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda + sha256: faf7d2017b4d718951e3a59d081eb09759152f93038479b768e3d612688f83f5 + md5: 0aa00f03f9e39fb9876085dee11a85d4 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==15.2.0=*_18 + - libgomp 15.2.0 he0feb66_18 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1041788 + timestamp: 1771378212382 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_18.conda + sha256: 43df385bedc1cab11993c4369e1f3b04b4ca5d0ea16cba6a0e7f18dbc129fcc9 + md5: 552567ea2b61e3a3035759b2fdb3f9a6 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==15.2.0=*_18 + - libgomp 15.2.0 h8acb6b2_18 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 622900 + timestamp: 1771378128706 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgcc-15.2.0-h08519bb_18.conda + sha256: 83366f11615ab234aa1e0797393f9e07b78124b5a24c4a9f8af0113d02df818e + md5: 9a5cb96e43f5c2296690186e15b3296f + depends: + - _openmp_mutex + constrains: + - libgcc-ng ==15.2.0=*_18 + - libgomp 15.2.0 18 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 423025 + timestamp: 1771378225170 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgcc-15.2.0-hcbb3090_18.conda + sha256: 1d9c4f35586adb71bcd23e31b68b7f3e4c4ab89914c26bed5f2859290be5560e + md5: 92df6107310b1fff92c4cc84f0de247b + depends: + - _openmp_mutex + constrains: + - libgcc-ng ==15.2.0=*_18 + - libgomp 15.2.0 18 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 401974 + timestamp: 1771378877463 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_18.conda + sha256: e318a711400f536c81123e753d4c797a821021fb38970cebfb3f454126016893 + md5: d5e96b1ed75ca01906b3d2469b4ce493 + depends: + - libgcc 15.2.0 he0feb66_18 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 27526 + timestamp: 1771378224552 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_18.conda + sha256: 83bb0415f59634dccfa8335d4163d1f6db00a27b36666736f9842b650b92cf2f + md5: 4feebd0fbf61075a1a9c2e9b3936c257 + depends: + - libgcc 15.2.0 h8acb6b2_18 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 27568 + timestamp: 1771378136019 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_18.conda + sha256: d2c9fad338fd85e4487424865da8e74006ab2e2475bd788f624d7a39b2a72aee + md5: 9063115da5bc35fdc3e1002e69b9ef6e + depends: + - libgfortran5 15.2.0 h68bc16d_18 + constrains: + - libgfortran-ng ==15.2.0=*_18 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 27523 + timestamp: 1771378269450 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-15.2.0-he9431aa_18.conda + sha256: 7dcd7dff2505d56fd5272a6e712ec912f50a46bf07dc6873a7e853694304e6e4 + md5: 41f261f5e4e2e8cbd236c2f1f15dae1b + depends: + - libgfortran5 15.2.0 h1b7bec0_18 + constrains: + - libgfortran-ng ==15.2.0=*_18 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 27587 + timestamp: 1771378169244 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.2.0-h7e5c614_18.conda + sha256: fb06c2a2ef06716a0f2a6550f5d13cdd1d89365993068512b7ae3c34e6e665d9 + md5: 34a9f67498721abcfef00178bcf4b190 + depends: + - libgfortran5 15.2.0 hd16e46c_18 + constrains: + - libgfortran-ng ==15.2.0=*_18 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 139761 + timestamp: 1771378423828 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-h07b0088_18.conda + sha256: 63f89087c3f0c8621c5c89ecceec1e56e5e1c84f65fc9c5feca33a07c570a836 + md5: 26981599908ed2205366e8fc91b37fc6 + depends: + - libgfortran5 15.2.0 hdae7583_18 + constrains: + - libgfortran-ng ==15.2.0=*_18 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 138973 + timestamp: 1771379054939 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_18.conda + sha256: 539b57cf50ec85509a94ba9949b7e30717839e4d694bc94f30d41c9d34de2d12 + md5: 646855f357199a12f02a87382d429b75 + 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 + size: 2482475 + timestamp: 1771378241063 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-15.2.0-h1b7bec0_18.conda + sha256: 85347670dfb4a8d4c13cd7cae54138dcf2b1606b6bede42eef5507bf5f9660c6 + md5: 574d88ce3348331e962cfa5ed451b247 + depends: + - libgcc >=15.2.0 + constrains: + - libgfortran 15.2.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1486341 + timestamp: 1771378148102 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.2.0-hd16e46c_18.conda + sha256: ddaf9dcf008c031b10987991aa78643e03c24a534ad420925cbd5851b31faa11 + md5: ca52daf58cea766656266c8771d8be81 + depends: + - libgcc >=15.2.0 + constrains: + - libgfortran 15.2.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1062274 + timestamp: 1771378232014 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-hdae7583_18.conda + sha256: 91033978ba25e6a60fb86843cf7e1f7dc8ad513f9689f991c9ddabfaf0361e7e + md5: c4a6f7989cffb0544bfd9207b6789971 + depends: + - libgcc >=15.2.0 + constrains: + - libgfortran 15.2.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 598634 + timestamp: 1771378886363 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.conda + sha256: 21337ab58e5e0649d869ab168d4e609b033509de22521de1bfed0c031bfc5110 + md5: 239c5e9546c38a1e884d69effcf4c882 + depends: + - __glibc >=2.17,<3.0.a0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 603262 + timestamp: 1771378117851 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_18.conda + sha256: fc716f11a6a8525e27a5d332ef6a689210b0d2a4dd1133edc0f530659aa9faa6 + md5: 4faa39bf919939602e594253bd673958 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 588060 + timestamp: 1771378040807 +- 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 + size: 2558266 + timestamp: 1774212240265 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-3.3.0-h04dcd46_1.conda + sha256: b00ca3d844b3c0aedc4b0aa19aa0dd6b8deab1fee6000aaf75449ead0a5d73ae + md5: c5d95a4198a6553d2341437dcbdef3e9 + depends: + - 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 + size: 2486649 + timestamp: 1774212478093 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-3.3.0-h10ed7cb_1.conda + sha256: f1cbb2d47411d8a53b1e1f317fc36218faf741fefd01a17fc00522765d658e00 + md5: b17f4b2c7ae59e9c60ea906da04bc54a + 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 + size: 1803918 + timestamp: 1774214391428 +- 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 + size: 1773417 + timestamp: 1774214139261 +- 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 + size: 779217 + timestamp: 1774212426084 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-3.3.0-h66d5b86_1.conda + sha256: 35504b8440926e26855ba34c40bddcd7800d910b07a28d02e2fa908ed1a211ed + md5: b439165fc8bd5f9ce11f27c6e401a9fa + depends: + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=14 + - libgoogle-cloud 3.3.0 h04dcd46_1 + - libstdcxx >=14 + - libzlib >=1.3.2,<2.0a0 + - openssl + license: Apache-2.0 + license_family: Apache + size: 727441 + timestamp: 1774212641041 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-storage-3.3.0-hea209c6_1.conda + sha256: 94c0e4cff0a6369df29b3a20f1d4fdb4d981e73e682a0cade6b6e847d9dc8f7d + md5: d1a3742cd1f9bc2e4f7395b446f49b96 + depends: + - __osx >=11.0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libcxx >=19 + - libgoogle-cloud 3.3.0 h10ed7cb_1 + - libzlib >=1.3.2,<2.0a0 + - openssl + license: Apache-2.0 + license_family: Apache + size: 540742 + timestamp: 1774214836989 +- 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 + size: 523970 + timestamp: 1774214725148 +- 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 + size: 7021360 + timestamp: 1774020290672 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.78.1-heab1e18_0.conda + sha256: a9a7c7f788526479bc5e0ba6c6b4cb0e534dc259f75a8597917cc782d61d48ed + md5: c8ee69a26fce1cb948e7b8e559649d65 + depends: + - 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 + size: 6670294 + timestamp: 1774012507815 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.78.1-h147dede_0.conda + sha256: ecf98c41dbde09fb3bf6878d7099613c10e256223ec7ccdb5eb401948eadc558 + md5: 69524227096cee1a8af2f4693cf6afa2 + 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 + size: 5153859 + timestamp: 1774015913341 +- 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 + size: 4820402 + timestamp: 1774012715207 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.3.0-h4c17acf_1.conda + sha256: 2bdd1cdd677b119abc5e83069bec2e28fe6bfb21ebaea3cd07acee67f38ea274 + md5: c2a0c1d0120520e979685034e0b79859 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + license: Apache-2.0 OR BSD-3-Clause + size: 1448617 + timestamp: 1758894401402 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libhwy-1.3.0-h81d0cf9_1.conda + sha256: a6a441692b27606f8ef64ee9e6a0c72c615c2e25b01c282ee080ee8f97861943 + md5: d5b93534e24e7c15792b3f336c52af07 + depends: + - libgcc >=14 + - libstdcxx >=14 + license: Apache-2.0 OR BSD-3-Clause + size: 1180000 + timestamp: 1758894754411 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libhwy-1.3.0-hab838a1_1.conda + sha256: 2f49632a3fd9ec5e38a45738f495f8c665298b0b35e6c89cef8e0fbc39b3f791 + md5: bb8ff4fec8150927a54139af07ef8069 + depends: + - __osx >=10.13 + - libcxx >=19 + license: Apache-2.0 OR BSD-3-Clause + size: 1003288 + timestamp: 1758894613094 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libhwy-1.3.0-h48b13b8_1.conda + sha256: 837fe775ba8ec9f08655bb924e28dba390d917423350333a75fd5eeac0776174 + md5: 6375717f5fcd756de929a06d0e40fab0 + depends: + - __osx >=11.0 + - libcxx >=19 + license: Apache-2.0 OR BSD-3-Clause + size: 581579 + timestamp: 1758894814983 +- 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 + size: 790176 + timestamp: 1754908768807 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-h90929bb_2.conda + sha256: 1473451cd282b48d24515795a595801c9b65b567fe399d7e12d50b2d6cdb04d9 + md5: 5a86bf847b9b926f3a4f203339748d78 + depends: + - libgcc >=14 + license: LGPL-2.1-only + size: 791226 + timestamp: 1754910975665 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h57a12c2_2.conda + sha256: a1c8cecdf9966921e13f0ae921309a1f415dfbd2b791f2117cf7e8f5e61a48b6 + md5: 210a85a1119f97ea7887188d176db135 + depends: + - __osx >=10.13 + license: LGPL-2.1-only + size: 737846 + timestamp: 1754908900138 +- 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 + size: 750379 + timestamp: 1754909073836 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.2-hb03c661_0.conda + sha256: cc9aba923eea0af8e30e0f94f2ad7156e2984d80d1e8e7fe6be5a1f257f0eb32 + md5: 8397539e3a0bbd1695584fb4f927485a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 633710 + timestamp: 1762094827865 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.1.2-he30d5cf_0.conda + sha256: 84064c7c53a64291a585d7215fe95ec42df74203a5bf7615d33d49a3b0f08bb6 + md5: 5109d7f837a3dfdf5c60f60e311b041f + depends: + - libgcc >=14 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 691818 + timestamp: 1762094728337 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.2-h8616949_0.conda + sha256: ebe2877abc046688d6ea299e80d8322d10c69763f13a102010f90f7168cc5f54 + md5: 48dda187f169f5a8f1e5e07701d5cdd9 + depends: + - __osx >=10.13 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 586189 + timestamp: 1762095332781 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.2-hc919400_0.conda + sha256: 6c061c56058bb10374daaef50e81b39cf43e8aee21f0037022c0c39c4f31872f + md5: f0695fbecf1006f27f4395d64bd0c4b8 + depends: + - __osx >=11.0 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 551197 + timestamp: 1762095054358 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.2-ha09017c_0.conda + sha256: 0c2399cef02953b719afe6591223fb11d287d5a108ef8bb9a02dd509a0f738d7 + md5: 1df8c1b1d6665642107883685db6cf37 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - libhwy >=1.3.0,<1.4.0a0 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + license: BSD-3-Clause + license_family: BSD + size: 1883476 + timestamp: 1770801977654 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjxl-0.11.2-h71be66a_0.conda + sha256: 880d6a176e0fed5f3a8b1db034f6ee59dab1622d0ab03ea1298ddd9d42f6fa5d + md5: 0f640337bf465aa7b663a6ba399d4fc4 + depends: + - libgcc >=14 + - libstdcxx >=14 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + - libhwy >=1.3.0,<1.4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 1489440 + timestamp: 1770801995062 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libjxl-0.11.2-hde0fb83_0.conda + sha256: 4c7fd37ccdb49bfc947307367693701b040e78333896e0db3effd90dee64549b + md5: fb86ff643e4f58119644c0c8d0b1d785 + depends: + - libcxx >=19 + - __osx >=10.13 + - libhwy >=1.3.0,<1.4.0a0 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + license: BSD-3-Clause + license_family: BSD + size: 1740498 + timestamp: 1770802213315 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjxl-0.11.2-h913acd8_0.conda + sha256: 44fdcae8ab3958f371565198f82d0748714dccc8a897ca202e54e18bde096f0d + md5: bec365333f77af833f8e46f6de96e2a2 + depends: + - libcxx >=19 + - __osx >=11.0 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + - libhwy >=1.3.0,<1.4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 1032335 + timestamp: 1770802059749 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-6_h47877c9_openblas.conda + build_number: 6 + sha256: 371f517eb7010b21c6cc882c7606daccebb943307cb9a3bf2c70456a5c024f7d + md5: 881d801569b201c2e753f03c84b85e15 + depends: + - libblas 3.11.0 6_h4a7cf45_openblas + constrains: + - blas 2.306 openblas + - liblapacke 3.11.0 6*_openblas + - libcblas 3.11.0 6*_openblas + license: BSD-3-Clause + license_family: BSD + size: 18624 + timestamp: 1774503065378 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.11.0-6_h88aeb00_openblas.conda + build_number: 6 + sha256: 67472a3cb761ff95527387ea0367883a22f9fbda1283b9880e5ad644fafd0735 + md5: e23a27b52fb320687239e2c5ae4d7540 + depends: + - libblas 3.11.0 6_haddc8a3_openblas + constrains: + - blas 2.306 openblas + - liblapacke 3.11.0 6*_openblas + - libcblas 3.11.0 6*_openblas + license: BSD-3-Clause + license_family: BSD + size: 18702 + timestamp: 1774503068721 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.11.0-6_h859234e_openblas.conda + build_number: 6 + sha256: 27aa20356e85f5fda5651866fed28e145dc98587f0bdd358a07d87bf1a68e427 + md5: 0808639f35afc076d89375aac666e8cb + depends: + - libblas 3.11.0 6_he492b99_openblas + constrains: + - libcblas 3.11.0 6*_openblas + - liblapacke 3.11.0 6*_openblas + - blas 2.306 openblas + license: BSD-3-Clause + license_family: BSD + size: 18727 + timestamp: 1774503690636 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.11.0-6_hd9741b5_openblas.conda + build_number: 6 + sha256: 21606b7346810559e259807497b86f438950cf19e71838e44ebaf4bd2b35b549 + md5: ee33d2d05a7c5ea1f67653b37eb74db1 + depends: + - libblas 3.11.0 6_h51639a9_openblas + constrains: + - liblapacke 3.11.0 6*_openblas + - libcblas 3.11.0 6*_openblas + - blas 2.306 openblas + license: BSD-3-Clause + license_family: BSD + size: 18863 + timestamp: 1774504467905 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda + sha256: 755c55ebab181d678c12e49cced893598f2bab22d582fbbf4d8b83c18be207eb + md5: c7c83eecbb72d88b940c249af56c8b17 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + constrains: + - xz 5.8.2.* + license: 0BSD + size: 113207 + timestamp: 1768752626120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.2-he30d5cf_0.conda + sha256: 843c46e20519651a3e357a8928352b16c5b94f4cd3d5481acc48be2e93e8f6a3 + md5: 96944e3c92386a12755b94619bae0b35 + depends: + - libgcc >=14 + constrains: + - xz 5.8.2.* + license: 0BSD + size: 125916 + timestamp: 1768754941722 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.2-h11316ed_0.conda + sha256: 7ab3c98abd3b5d5ec72faa8d9f5d4b50dcee4970ed05339bc381861199dabb41 + md5: 688a0c3d57fa118b9c97bf7e471ab46c + depends: + - __osx >=10.13 + constrains: + - xz 5.8.2.* + license: 0BSD + size: 105482 + timestamp: 1768753411348 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.2-h8088a28_0.conda + sha256: 7bfc7ffb2d6a9629357a70d4eadeadb6f88fa26ebc28f606b1c1e5e5ed99dc7e + md5: 009f0d956d7bfb00de86901d16e486c7 + depends: + - __osx >=11.0 + constrains: + - xz 5.8.2.* + license: 0BSD + size: 92242 + timestamp: 1768752982486 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda + sha256: fe171ed5cf5959993d43ff72de7596e8ac2853e9021dec0344e583734f1e0843 + md5: 2c21e66f50753a083cbe6b80f38268fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: BSD-2-Clause + license_family: BSD + size: 92400 + timestamp: 1769482286018 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmpdec-4.0.0-he30d5cf_1.conda + sha256: 57c0dd12d506e84541c4e877898bd2a59cca141df493d34036f18b2751e0a453 + md5: 7b9813e885482e3ccb1fa212b86d7fd0 + depends: + - libgcc >=14 + license: BSD-2-Clause + license_family: BSD + size: 114056 + timestamp: 1769482343003 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-hf3981d6_1.conda + sha256: 1096c740109386607938ab9f09a7e9bca06d86770a284777586d6c378b8fb3fd + md5: ec88ba8a245855935b871a7324373105 + depends: + - __osx >=10.13 + license: BSD-2-Clause + license_family: BSD + size: 79899 + timestamp: 1769482558610 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h84a0fba_1.conda + sha256: 1089c7f15d5b62c622625ec6700732ece83be8b705da8c6607f4dabb0c4bd6d2 + md5: 57c4be259f5e0b99a5983799a228ae55 + depends: + - __osx >=11.0 + license: BSD-2-Clause + license_family: BSD + size: 73690 + timestamp: 1769482560514 +- 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 + size: 663344 + timestamp: 1773854035739 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.68.1-hd3077d7_0.conda + sha256: 13782715b9eeebc4ad16d36e84ca569d1495e3516aea3fe546a32caa0a597d82 + md5: be5f0f007a4500a226ef001115535a3d + depends: + - 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 + size: 726928 + timestamp: 1773854039807 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.68.1-h70048d4_0.conda + sha256: 899551e16aac9dfb85bfc2fd98b655f4d1b7fea45720ec04ccb93d95b4d24798 + md5: dba4c95e2fe24adcae4b77ebf33559ae + 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 + size: 606749 + timestamp: 1773854765508 +- 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 + size: 576526 + timestamp: 1773854624224 +- 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 + size: 33418 + timestamp: 1734670021371 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libntlm-1.4-hf897c2e_1002.tar.bz2 + sha256: 0e303d7a8845391bd1634efb65dc9d9b82b5608ebeb32fb77a56d1ed696d2eee + md5: 835c7c4137821de5c309f4266a51ba89 + depends: + - libgcc-ng >=9.3.0 + license: LGPL-2.1-or-later + size: 39449 + timestamp: 1609781865660 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libntlm-1.8-h6e16a3a_0.conda + sha256: 2ab918f7cc00852d70088e0b9e49fda4ef95229126cf3c52a8297686938385f2 + md5: 23d706dbe90b54059ad86ff826677f39 + depends: + - __osx >=10.13 + license: LGPL-2.1-or-later + size: 33742 + timestamp: 1734670081910 +- 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 + size: 31099 + timestamp: 1734670168822 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.32-pthreads_h94d23a6_0.conda + sha256: 6dc30b28f32737a1c52dada10c8f3a41bc9e021854215efca04a7f00487d09d9 + md5: 89d61bc91d3f39fda0ca10fcd3c68594 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.3.0 + constrains: + - openblas >=0.3.32,<0.3.33.0a0 + license: BSD-3-Clause + license_family: BSD + size: 5928890 + timestamp: 1774471724897 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.32-pthreads_h9d3fd7e_0.conda + sha256: 51fcf5eb1fc43bfeca5bf3aa3f51546e92e5a92047ba47146dcea555142e30f8 + md5: 5d2ce5cf40443d055ec6d33840192265 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.3.0 + constrains: + - openblas >=0.3.32,<0.3.33.0a0 + license: BSD-3-Clause + license_family: BSD + size: 5122134 + timestamp: 1774471612323 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.32-openmp_h9e49c7b_0.conda + sha256: 6764229359cd927c9efc036930ba28f83436b8d6759c5ac4ea9242fc29a7184e + md5: 4058c5f8dbef6d28cb069f96b95ae6df + depends: + - __osx >=11.0 + - libgfortran + - libgfortran5 >=14.3.0 + - llvm-openmp >=19.1.7 + constrains: + - openblas >=0.3.32,<0.3.33.0a0 + license: BSD-3-Clause + license_family: BSD + size: 6289730 + timestamp: 1774474444702 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.32-openmp_he657e61_0.conda + sha256: 713e453bde3531c22a660577e59bf91ef578dcdfd5edb1253a399fa23514949a + md5: 3a1111a4b6626abebe8b978bb5a323bf + depends: + - __osx >=11.0 + - libgfortran + - libgfortran5 >=14.3.0 + - llvm-openmp >=19.1.7 + constrains: + - openblas >=0.3.32,<0.3.33.0a0 + license: BSD-3-Clause + license_family: BSD + size: 4308797 + timestamp: 1774472508546 +- 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 + size: 934274 + timestamp: 1774001192674 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.26.0-hd82aec3_0.conda + sha256: 6de167b2c5d1d30e90b69ce1c99ff5b05755f722478b545c8a4730a881f1e71e + md5: e45a267739e4083b0f96fe7b0b2f0977 + 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 h8af1aa0_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 + size: 925106 + timestamp: 1774001232585 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libopentelemetry-cpp-1.26.0-h7a0a166_0.conda + sha256: 6da1b908f427d66ca4a062df2026059229bdbdf5264c4095eec1e64f9351c837 + md5: 93aab3ab901b5b57d8d5d72308ead951 + 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 h694c41f_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 + size: 602246 + timestamp: 1774001890965 +- 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 + size: 579527 + timestamp: 1774001294901 +- 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 + size: 396403 + timestamp: 1774001149705 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.26.0-h8af1aa0_0.conda + sha256: 981215092454237d376e0a7e82d2b11d42d0f4d5f5640bb124f1f140c6980fd9 + md5: 8f9be9a3d450278168ea65b84b6d7f7b + license: Apache-2.0 + license_family: APACHE + size: 396893 + timestamp: 1774001198802 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libopentelemetry-cpp-headers-1.26.0-h694c41f_0.conda + sha256: 039ced2fa6d5fc5d23d06e2764709f0db9af5fbaef486309d47bec0895eddfa6 + md5: 6ed6a92518104721c0e37c032dd9769e + license: Apache-2.0 + license_family: APACHE + size: 395724 + timestamp: 1774001742305 +- 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 + size: 396412 + timestamp: 1774001222028 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-23.0.1-h7376487_9_cpu.conda + build_number: 9 + sha256: 2ab9ac48c43b9800777c05b504337ef93597bf310ac8cff957796cc6776992a2 + md5: 2dccf1b6cf9dba8857050740dbc0497e + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 23.0.1 ha7f89c6_9_cpu + - libgcc >=14 + - libstdcxx >=14 + - libthrift >=0.22.0,<0.22.1.0a0 + - openssl >=3.5.5,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 1390169 + timestamp: 1774232604005 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-23.0.1-h87079af_9_cpu.conda + build_number: 9 + sha256: c28e986f23717e1ab14620d0fba9cc9a10d98a5bdfe7335588eabb291a973b0f + md5: 8dd6ed191050ae20c000ec144f17be3d + depends: + - libarrow 23.0.1 h155c802_9_cpu + - libgcc >=14 + - libstdcxx >=14 + - libthrift >=0.22.0,<0.22.1.0a0 + - openssl >=3.5.5,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 1272047 + timestamp: 1774230901373 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libparquet-23.0.1-h527dc83_9_cpu.conda + build_number: 9 + sha256: 7b9cbfada276fc282ec938c28588f6cf88ffa3c54a9f33e3ee08dee7ae285913 + md5: 9e31ce0e4df468d3bc244e1218e19b3a + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libarrow 23.0.1 h6b6ab80_9_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.5,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 1093529 + timestamp: 1774234839856 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-23.0.1-h16c0493_9_cpu.conda + build_number: 9 + sha256: 85fc60c1db0d7908dac20a04300f979c39f3997fd9678eed4e211ffd1d4ddc51 + md5: 3b6e1cea9cf48fbf2312a1b5f5745d35 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libarrow 23.0.1 h2124f06_9_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.5,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 1072901 + timestamp: 1774232081998 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.56-h421ea60_0.conda + sha256: 4f9fca3bc21e485ec0b3eb88db108b6cf9ab9a481cdf7d2ac6f9d30350b45ead + md5: 97169784f0775c85683c3d8badcea2c3 + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - libzlib >=1.3.2,<2.0a0 + license: zlib-acknowledgement + size: 317540 + timestamp: 1774513272700 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.56-h1abf092_0.conda + sha256: 478c923cce506ff366cc765ab98feda4ce33a83329a8271b76289da9f0ae19f3 + md5: d5aff85583507906d19696d4961f4738 + depends: + - libgcc >=14 + - libzlib >=1.3.2,<2.0a0 + license: zlib-acknowledgement + size: 340342 + timestamp: 1774513287212 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.56-he930e7c_0.conda + sha256: aa1f03701b8d6e22d1caea2c4a368cf0c35b3f9edb01fa78cc87b673d7d76f5a + md5: 635ddc7697d405386dcb64d777c545b5 + depends: + - __osx >=11.0 + - libzlib >=1.3.2,<2.0a0 + license: zlib-acknowledgement + size: 299085 + timestamp: 1774513337570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.56-h132b30e_0.conda + sha256: 3aac73e6c8b2d6dc38f8918c8de3354ed920db00fd9234c000b20fd66323c463 + md5: ce25ae471d213f9dd5edb0fe8e0b102a + depends: + - __osx >=11.0 + - libzlib >=1.3.2,<2.0a0 + license: zlib-acknowledgement + size: 289288 + timestamp: 1774513431937 +- 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 + size: 2865686 + timestamp: 1772136328077 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpq-18.3-h7d4fc67_0.conda + sha256: 878b5d316087a226eb235f0dd46e7de39941afe13c5d3c7f6a289e8853d45333 + md5: 7eb18b198b1d35da9352062c69c4ee64 + depends: + - 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 + size: 2854221 + timestamp: 1772136342536 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libpq-18.3-h94170d9_0.conda + sha256: c82849cfc403c53982612aa61534802e72a810d5fe26f3aefecd1efcbea4195c + md5: 8f4f1c2407327f61202e0bf26efdfb6d + 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 + size: 2561593 + timestamp: 1772137333497 +- 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 + size: 2705141 + timestamp: 1772136813226 +- 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 + size: 3638698 + timestamp: 1769749419271 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-6.33.5-h1f88751_0.conda + sha256: f68780642c215b93f4991c43d88ab0af8a08e66826e68affc65b8905cc21d86b + md5: 7f4a589ae616399b7e375053e82a3b12 + depends: + - libabseil * cxx17* + - libabseil >=20260107.0,<20260108.0a0 + - libgcc >=14 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 3465308 + timestamp: 1769748410724 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-6.33.5-h29d92e8_0.conda + sha256: adb74f4f1b1e13b02683ede915ce3a9fbf414325af8e035546c0498ffef870f6 + md5: d6d60b0a64a711d70ec2fd0105c299f9 + 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 + size: 2774545 + timestamp: 1769749167835 +- 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 + size: 2713660 + timestamp: 1769748299578 +- 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 + size: 213122 + timestamp: 1768190028309 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2025.11.05-hc5e897d_1.conda + sha256: 74c0bfb8ac4d725584b45d0ea885bd3faa3b50f6cdfabef421e1b6c4c7844a7f + md5: 08f9cbede3e01bc1c51e4dd0267d585f + depends: + - libabseil * cxx17* + - libabseil >=20260107.0,<20260108.0a0 + - libgcc >=14 + - libstdcxx >=14 + constrains: + - re2 2025.11.05.* + license: BSD-3-Clause + license_family: BSD + size: 206469 + timestamp: 1768189988250 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2025.11.05-h6e8c311_1.conda + sha256: 092f1ed90ba105402b0868eda0a1a11fd1aedd93ea6bb7a57f6e2fc2218806d5 + md5: 154f9f623c04dac40752d279bfdecebf + 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 + size: 179250 + timestamp: 1768190310379 +- 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 + size: 165851 + timestamp: 1768190225157 +- 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 + size: 277661 + timestamp: 1772479381288 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.21-h80f16a2_3.conda + sha256: d6112f3a7e7ffcd726ce653724f979b528cb8a19675fc06016a5d360ef94e9a4 + md5: 9e1fe4202543fa5b6ab58dbf12d34ced + depends: + - libgcc >=14 + license: ISC + size: 272649 + timestamp: 1772479384085 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.21-hc6ced15_3.conda + sha256: 7dd254e844372fbf3a60a7c029df1ea0cb3fa0b18586cda769d9cd6cc0e59c4b + md5: c4b8a6c8a8aa6ed657a3c1c1eb6917e9 + depends: + - __osx >=10.13 + license: ISC + size: 291865 + timestamp: 1772479644707 +- 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 + size: 248039 + timestamp: 1772479570912 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.52.0-hf4e2dac_0.conda + sha256: d716847b7deca293d2e49ed1c8ab9e4b9e04b9d780aea49a97c26925b28a7993 + md5: fd893f6a3002a635b5e50ceb9dd2c0f4 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=78.2,<79.0a0 + - libgcc >=14 + - libzlib >=1.3.1,<2.0a0 + license: blessing + size: 951405 + timestamp: 1772818874251 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.52.0-h10b116e_0.conda + sha256: 1ddaf91b44fae83856276f4cb7ce544ffe41d4b55c1e346b504c6b45f19098d6 + md5: 77891484f18eca74b8ad83694da9815e + depends: + - icu >=78.2,<79.0a0 + - libgcc >=14 + - libzlib >=1.3.1,<2.0a0 + license: blessing + size: 952296 + timestamp: 1772818881550 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.52.0-h77d7759_0.conda + sha256: f500d1cd50cfcd288d02b8fc3c3b7ecf8de6fec7b86e57ea058def02908e4231 + md5: d553eb96758e038b04027b30fe314b2d + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + license: blessing + size: 996526 + timestamp: 1772819669038 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.52.0-h1ae2325_0.conda + sha256: beb0fd5594d6d7c7cd42c992b6bb4d66cbb39d6c94a8234f15956da99a04306c + md5: f6233a3fddc35a2ec9f617f79d6f3d71 + depends: + - __osx >=11.0 + - icu >=78.2,<79.0a0 + - libzlib >=1.3.1,<2.0a0 + license: blessing + size: 918420 + timestamp: 1772819478684 +- 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 + size: 304790 + timestamp: 1745608545575 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-h18c354c_0.conda + sha256: 1e289bcce4ee6a5817a19c66e296f3c644dcfa6e562e5c1cba807270798814e7 + md5: eecc495bcfdd9da8058969656f916cc2 + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.0,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 311396 + timestamp: 1745609845915 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.1-hed3591d_0.conda + sha256: 00654ba9e5f73aa1f75c1f69db34a19029e970a4aeb0fa8615934d8e9c369c3c + md5: a6cb15db1c2dc4d3a5f6cf3772e09e81 + depends: + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.0,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 284216 + timestamp: 1745608575796 +- 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 + size: 279193 + timestamp: 1745608793272 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_18.conda + sha256: 78668020064fdaa27e9ab65cd2997e2c837b564ab26ce3bf0e58a2ce1a525c6e + md5: 1b08cd684f34175e4514474793d44bcb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 15.2.0 he0feb66_18 + constrains: + - libstdcxx-ng ==15.2.0=*_18 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 5852330 + timestamp: 1771378262446 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_18.conda + sha256: 31fdb9ffafad106a213192d8319b9f810e05abca9c5436b60e507afb35a6bc40 + md5: f56573d05e3b735cb03efeb64a15f388 + depends: + - libgcc 15.2.0 h8acb6b2_18 + constrains: + - libstdcxx-ng ==15.2.0=*_18 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 5541411 + timestamp: 1771378162499 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_18.conda + sha256: 3c902ffd673cb3c6ddde624cdb80f870b6c835f8bf28384b0016e7d444dd0145 + md5: 6235adb93d064ecdf3d44faee6f468de + depends: + - libstdcxx 15.2.0 h934c35e_18 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 27575 + timestamp: 1771378314494 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-15.2.0-hdbbeba8_18.conda + sha256: 035a31cde134e706e30029a837a31f729ad32b7c5bca023271dfe91a8ba6c896 + md5: 699d294376fe18d80b7ce7876c3a875d + depends: + - libstdcxx 15.2.0 hef695bb_18 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 27645 + timestamp: 1771378204663 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.22.0-h454ac66_1.conda + sha256: 4888b9ea2593c36ca587a5ebe38d0a56a0e6d6a9e4bb7da7d9a326aaaca7c336 + md5: 8ed82d90e6b1686f5e98f8b7825a15ef + depends: + - __glibc >=2.17,<3.0.a0 + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=14 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.1,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 424208 + timestamp: 1753277183984 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.22.0-h046380b_1.conda + sha256: 43fdf51565c239246a169e2d04bd35e3e2e227ccf8fcd4e2bba77431eadee623 + md5: 775bd916d4f0db14754da3f4a5575d15 + depends: + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=14 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.1,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 415854 + timestamp: 1753277171370 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libthrift-0.22.0-h687e942_1.conda + sha256: a0f9fdc663db089fde4136a0bd6c819d7f8daf869fc3ca8582201412e47f298c + md5: 69251ed374b31a5664bf5ba58626f3b7 + depends: + - __osx >=10.13 + - libcxx >=19 + - libevent >=2.1.12,<2.1.13.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.1,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 331822 + timestamp: 1753277335578 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.22.0-h14a376c_1.conda + sha256: 8b703f2c6e47ed5886d7298601b9416b59e823fc8d1a8fa867192c94c5911aac + md5: 3161023bb2f8c152e4c9aa59bdd40975 + depends: + - __osx >=11.0 + - libcxx >=19 + - libevent >=2.1.12,<2.1.13.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.1,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 323360 + timestamp: 1753277264380 +- 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 + size: 435273 + timestamp: 1762022005702 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.1-hdb009f0_1.conda + sha256: 7ff79470db39e803e21b8185bc8f19c460666d5557b1378d1b1e857d929c6b39 + md5: 8c6fd84f9c87ac00636007c6131e457d + depends: + - 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 + size: 488407 + timestamp: 1762022048105 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.1-ha0a348c_1.conda + sha256: e53424c34147301beae2cd9223ebf593720d94c038b3f03cacd0535e12c9668e + md5: 9d4344f94de4ab1330cdc41c40152ea6 + depends: + - __osx >=10.13 + - 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 + size: 404591 + timestamp: 1762022511178 +- 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 + size: 373892 + timestamp: 1762022345545 +- 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 + size: 85969 + timestamp: 1768735071295 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.11.3-hec6f9f7_0.conda + sha256: a67e1c2355f98befb280bc91990504500ba28a82d5441c9fb9e10015abfd3b14 + md5: afc02d5958046be06b176058e9d630d7 + depends: + - libgcc >=14 + license: MIT + license_family: MIT + size: 86509 + timestamp: 1768735090367 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libutf8proc-2.11.3-hc282952_0.conda + sha256: 626db214208e8da6aa9a904518a0442e5bff7b4602cc295dd5ce1f4a98844c1d + md5: 2c49b6f6ec9a510bbb75ecbd2a572697 + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 84535 + timestamp: 1768735249136 +- 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 + size: 87916 + timestamp: 1768735311947 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda + sha256: 1a7539cfa7df00714e8943e18de0b06cceef6778e420a5ee3a2a145773758aee + md5: db409b7c1720428638e7c0d509d3e1b5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: BSD-3-Clause + license_family: BSD + size: 40311 + timestamp: 1766271528534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.41.3-h1022ec0_0.conda + sha256: c37a8e89b700646f3252608f8368e7eb8e2a44886b92776e57ad7601fc402a11 + md5: cf2861212053d05f27ec49c3784ff8bb + depends: + - libgcc >=14 + license: BSD-3-Clause + license_family: BSD + size: 43453 + timestamp: 1766271546875 +- 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 + size: 895108 + timestamp: 1753948278280 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.51.0-he30d5cf_1.conda + sha256: 7a0fb5638582efc887a18b7d270b0c4a6f6e681bf401cab25ebafa2482569e90 + md5: 8e62bf5af966325ee416f19c6f14ffa3 + depends: + - libgcc >=14 + license: MIT + license_family: MIT + size: 629238 + timestamp: 1753948296190 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.51.0-h58003a5_1.conda + sha256: d90dd0eee6f195a5bd14edab4c5b33be3635b674b0b6c010fb942b956aa2254c + md5: fbfc6cf607ae1e1e498734e256561dc3 + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 422612 + timestamp: 1753948458902 +- 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 + size: 421195 + timestamp: 1753948426421 +- 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 + size: 429011 + timestamp: 1752159441324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.6.0-ha2e29f5_0.conda + sha256: b03700a1f741554e8e5712f9b06dd67e76f5301292958cd3cb1ac8c6fdd9ed25 + md5: 24e92d0942c799db387f5c9d7b81f1af + depends: + - libgcc >=14 + constrains: + - libwebp 1.6.0 + license: BSD-3-Clause + license_family: BSD + size: 359496 + timestamp: 1752160685488 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda + sha256: 00dbfe574b5d9b9b2b519acb07545380a6bc98d1f76a02695be4995d4ec91391 + md5: 7bb6608cf1f83578587297a158a6630b + depends: + - __osx >=10.13 + constrains: + - libwebp 1.6.0 + license: BSD-3-Clause + license_family: BSD + size: 365086 + timestamp: 1752159528504 +- 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 + size: 294974 + timestamp: 1752159906788 +- 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 + size: 395888 + timestamp: 1727278577118 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b + md5: cd14ee5cca2464a425b1dbfc24d90db2 + depends: + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 397493 + timestamp: 1727280745441 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.17.0-hf1f96e2_0.conda + sha256: 8896cd5deff6f57d102734f3e672bc17120613647288f9122bec69098e839af7 + md5: bbeca862892e2898bdb45792a61c4afc + depends: + - __osx >=10.13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 323770 + timestamp: 1727278927545 +- 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 + size: 323658 + timestamp: 1727278733917 +- 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 + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.2-he237659_0.conda + sha256: 275c324f87bda1a3b67d2f4fcc3555eeff9e228a37655aa001284a7ceb6b0392 + md5: e49238a1609f9a4a844b09d9926f2c3d + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=78.2,<79.0a0 + - libgcc >=14 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.2,<6.0a0 + - libxml2-16 2.15.2 hca6bf5a_0 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + size: 45968 + timestamp: 1772704614539 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.15.2-h825857f_0.conda + sha256: 3e51e1952cb60c8107094b6b78473d91ff49d428ad4bef6806124b383e8fe29c + md5: 19de96909ee1198e2853acd8aba89f6c + depends: + - icu >=78.2,<79.0a0 + - libgcc >=14 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.2,<6.0a0 + - libxml2-16 2.15.2 h79dcc73_0 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + size: 47837 + timestamp: 1772704681112 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.15.2-hd552753_0.conda + sha256: 5b9e8a5146275ac0539231f646ee51a9e4629e730026ff69dadff35bfb745911 + md5: eea3155f3b4a3b75af504c871ec23858 + depends: + - __osx >=11.0 + - icu >=78.2,<79.0a0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.2,<6.0a0 + - libxml2-16 2.15.2 h7a90416_0 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + size: 41106 + timestamp: 1772705465931 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.2-h8d039ee_0.conda + sha256: 99cb32dd06a2e58c12981b71a84b052293f27b5ab042e3f21d895f5d7ee13eff + md5: e476ba84e57f2bd2004a27381812ad4e + depends: + - __osx >=11.0 + - icu >=78.2,<79.0a0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.2,<6.0a0 + - libxml2-16 2.15.2 h5ef1a60_0 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + size: 41206 + timestamp: 1772704982288 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.2-hca6bf5a_0.conda + sha256: 08d2b34b49bec9613784f868209bb7c3bb8840d6cf835ff692e036b09745188c + md5: f3bc152cb4f86babe30f3a4bf0dbef69 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=78.2,<79.0a0 + - libgcc >=14 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.2,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - libxml2 2.15.2 + license: MIT + license_family: MIT + size: 557492 + timestamp: 1772704601644 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-16-2.15.2-h79dcc73_0.conda + sha256: da6b2ebbcecc158200d90be39514e4e902971628029b35b7f6ad57270659c5d9 + md5: e3ec9079759d35b875097d6a9a69e744 + depends: + - icu >=78.2,<79.0a0 + - libgcc >=14 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.2,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - libxml2 2.15.2 + license: MIT + license_family: MIT + size: 598438 + timestamp: 1772704671710 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-16-2.15.2-h7a90416_0.conda + sha256: f67e4b7d7f97e57ecd611a42e42d5f6c047fd3d1eb8270813b888924440c8a59 + md5: 0c8bdbfd118f5963ab343846094932a3 + depends: + - __osx >=11.0 + - icu >=78.2,<79.0a0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.2,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - libxml2 2.15.2 + license: MIT + license_family: MIT + size: 495922 + timestamp: 1772705426323 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.2-h5ef1a60_0.conda + sha256: 6432259204e78c8a8a815afae987fbf60bd722605fe2c4b022e65196b17d4537 + md5: b284e2b02d53ef7981613839fb86beee + depends: + - __osx >=11.0 + - icu >=78.2,<79.0a0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.2,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - libxml2 2.15.2 + license: MIT + license_family: MIT + size: 466220 + timestamp: 1772704950232 +- 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 + size: 245434 + timestamp: 1757963724977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxslt-1.1.43-h6700d25_1.conda + sha256: 8a816572a4650149d28c0b8b44e294380de18787735d00c7cf5fad91dba8e286 + md5: 0f31501ccd51a40f0a91381080ae7368 + depends: + - libgcc >=14 + - libxml2 + - libxml2-16 >=2.14.6 + license: MIT + license_family: MIT + size: 253367 + timestamp: 1757964660396 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libxslt-1.1.43-h486b42e_1.conda + sha256: 00d6b5e92fc1c5d86e095b9b6840f793d9fc4c9b4a7753fa0f8197ab11d5eb90 + md5: 367b8029352f3899fb76cc20f4d144b9 + depends: + - __osx >=10.13 + - libxml2 + - libxml2-16 >=2.14.6 + license: MIT + license_family: MIT + size: 225660 + timestamp: 1757964032926 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxslt-1.1.43-hb2570ba_1.conda + sha256: 7a4d0676ab1407fecb24d4ada7fe31a98c8889f61f04612ea533599c22b8c472 + md5: 90f7ed12bb3c164c758131b3d3c2ab0c + depends: + - __osx >=11.0 + - libxml2 + - libxml2-16 >=2.14.6 + license: MIT + license_family: MIT + size: 220345 + timestamp: 1757964000982 +- 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 + size: 63629 + timestamp: 1774072609062 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda + sha256: eb111e32e5a7313a5bf799c7fb2419051fa2fe7eff74769fac8d5a448b309f7f + md5: 502006882cf5461adced436e410046d1 + constrains: + - zlib 1.3.2 *_2 + license: Zlib + license_family: Other + size: 69833 + timestamp: 1774072605429 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.2-hbb4bfdb_2.conda + sha256: 4c6da089952b2d70150c74234679d6f7ac04f4a98f9432dec724968f912691e7 + md5: 30439ff30578e504ee5e0b390afc8c65 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.2 *_2 + license: Zlib + license_family: Other + size: 59000 + timestamp: 1774073052242 +- 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 + size: 47759 + timestamp: 1774072956767 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzopfli-1.0.3-h9c3ff4c_0.tar.bz2 + sha256: ff94f30b2e86cbad6296cf3e5804d442d9e881f7ba8080d92170981662528c6e + md5: c66fe2d123249af7651ebde8984c51c2 + depends: + - libgcc-ng >=9.3.0 + - libstdcxx-ng >=9.3.0 + license: Apache-2.0 + license_family: Apache + size: 168074 + timestamp: 1607309189989 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzopfli-1.0.3-h01db608_0.tar.bz2 + sha256: 56d57e2a1451e9d16b019e6edee8b545653bef3122b34c349dd3f52b9ffe59e8 + md5: 1ee98b0c2d17d98c4730c3036a335eb2 + depends: + - libgcc-ng >=9.3.0 + - libstdcxx-ng >=9.3.0 + license: Apache-2.0 + license_family: Apache + size: 171299 + timestamp: 1607309446885 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libzopfli-1.0.3-h046ec9c_0.tar.bz2 + sha256: 3f35f8adf997467699a01819aeabba153ef554e796618c446a9626c2173aee90 + md5: 55f3f5c9bccca18d33cb3a4bcfe002d7 + depends: + - libcxx >=11.0.0 + license: Apache-2.0 + license_family: Apache + size: 162262 + timestamp: 1607309210977 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzopfli-1.0.3-h9f76cd9_0.tar.bz2 + sha256: e3003b8efe551902dc60b21c81d7164b291b26b7862704421368d26ba5c10fa0 + md5: a0758d74f57741aa0d9ede13fd592e56 + depends: + - libcxx >=11.0.0 + license: Apache-2.0 + license_family: Apache + size: 147901 + timestamp: 1607309166373 +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-22.1.2-h0d3cbff_0.conda + sha256: 5dc4c6f21d97d608d5889227e36f77e3316be63464000df4b23194a9b10d1017 + md5: 2f82b78f43520355ae2d297fecde25fd + depends: + - __osx >=11.0 + constrains: + - openmp 22.1.2|22.1.2.* + - intel-openmp <0.0a0 + license: Apache-2.0 WITH LLVM-exception + size: 310956 + timestamp: 1774732996355 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-22.1.2-hc7d1edf_0.conda + sha256: d8acb8e790312346a286f7168380ca3ce86d5982fb073df6e0fbec1e51fa47a1 + md5: 9c162044093d8d689836dafe3c27fe06 + depends: + - __osx >=11.0 + constrains: + - intel-openmp <0.0a0 + - openmp 22.1.2|22.1.2.* + license: Apache-2.0 WITH LLVM-exception + size: 285695 + timestamp: 1774733561929 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.46.0-py313hdd307be_0.conda + sha256: 0e1bc6ee1c7885cc26c37fcd1a2095169a4e4e148860c600d3f685b6a4f32322 + md5: d99ac09b331711fd12e16323ca8d96e4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-2-Clause + license_family: BSD + size: 34130706 + timestamp: 1765280056189 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/llvmlite-0.46.0-py313ha7661e1_0.conda + sha256: ed8f559ad979076b0d403b99a0d7db05c8d2cbbda79cfcb36ceb4244ef8eb67d + md5: 2dd0316e2b235d715583cc756b0b04e3 + depends: + - libgcc >=14 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-2-Clause + license_family: BSD + size: 36640815 + timestamp: 1765280006315 +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvmlite-0.46.0-py313h590e1ab_0.conda + sha256: f1549261f0f2f24c2dd2c7a613b465c0c3e4e1158c43a72224c228aa0b5cb76f + md5: ab9fe8b3937e90b22a18554c3d961e97 + depends: + - __osx >=10.13 + - libcxx >=19 + - libzlib >=1.3.1,<2.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-2-Clause + license_family: BSD + size: 26010458 + timestamp: 1765280511277 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvmlite-0.46.0-py313he297ed2_0.conda + sha256: d59fdc5a5682e3f6c17f1c8dc73019afaf6724f4ecd10878515438ca35683269 + md5: 81f05ab2abc842253505133ffa652bf5 + depends: + - __osx >=11.0 + - libcxx >=19 + - libzlib >=1.3.1,<2.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-2-Clause + license_family: BSD + size: 24338921 + timestamp: 1765280468997 +- 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 + size: 8250 + timestamp: 1650660473123 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lxml-6.0.2-py313h4a16004_2.conda + sha256: f2b2ffa585d1bf74faea4c04e7e39b4230c1390c0b889e2ac725fc2a343d9de0 + md5: eb93cf5d79939716bc82434eb7e1af30 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libxml2 + - libxml2-16 >=2.14.6 + - libxslt >=1.1.43,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause and MIT-CMU + size: 1606959 + timestamp: 1762506368003 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lxml-6.0.2-py313h30cdae8_2.conda + sha256: 7d6c5425e84353bbd1fb2a3658c2d7e3169e656dfef7e59c34f5bf7e8a6aabb4 + md5: afa4cdff5e3351fba38e3f11ced5b690 + depends: + - libgcc >=14 + - libxml2 + - libxml2-16 >=2.14.6 + - libxslt >=1.1.43,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause and MIT-CMU + size: 1527830 + timestamp: 1762506450003 +- conda: https://conda.anaconda.org/conda-forge/osx-64/lxml-6.0.2-py313h00bd3da_2.conda + sha256: ad3ad781171593306f754442c8ccd4853bc90a57b30b49f48de723a8d6065d3e + md5: 4158c697b90cba2db2ca8d58bd4461fb + depends: + - __osx >=10.13 + - libxml2 + - libxml2-16 >=2.14.6 + - libxslt >=1.1.43,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause and MIT-CMU + size: 1425902 + timestamp: 1762506837309 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lxml-6.0.2-py313he6cafaa_2.conda + sha256: 1be65e16e4e89d333de95b356a75df9f050a0f505e6b82633ba8157c76239835 + md5: fbeb15565dc7202f9dce40783d0b270d + depends: + - __osx >=11.0 + - libxml2 + - libxml2-16 >=2.14.6 + - libxslt >=1.1.43,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause and MIT-CMU + size: 1380383 + timestamp: 1762507111934 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py313h28739b2_1.conda + sha256: cbc82f4fa7587376c038d2f0471a73efa7ade4439857b04a0cc839262f1de6e5 + md5: e69ad33075938ba81e43311da86b809c + depends: + - python + - lz4-c + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - python_abi 3.13.* *_cp313 + - lz4-c >=1.10.0,<1.11.0a0 + license: BSD-3-Clause + license_family: BSD + size: 44861 + timestamp: 1765026393230 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-4.4.5-py313h2c0738f_1.conda + sha256: 22e8afddb914e3f751671ffb6e7c847ede4eb634e6f35aeee53389adcd2edcec + md5: 33766682da44bee1aeb2935b56de834c + depends: + - python + - lz4-c + - libgcc >=14 + - python 3.13.* *_cp313 + - lz4-c >=1.10.0,<1.11.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 52420 + timestamp: 1765026434653 +- conda: https://conda.anaconda.org/conda-forge/osx-64/lz4-4.4.5-py313hab77a93_1.conda + sha256: a35f5d5225d4c6dd13e229881d3013e18f0e3a372bb6e3d9bf299fc832309143 + md5: 6838efa78f5071775a7766062cfc85d2 + depends: + - python + - lz4-c + - __osx >=10.13 + - python_abi 3.13.* *_cp313 + - lz4-c >=1.10.0,<1.11.0a0 + license: BSD-3-Clause + license_family: BSD + size: 42939 + timestamp: 1765026491273 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-4.4.5-py313hd065f0a_1.conda + sha256: 71dfac3971dcd134c8a31b3f670d00b8d551e275fb386568ec11ab68d95fe540 + md5: ece4dab2afb98b065b69ce769a5c6c42 + depends: + - python + - lz4-c + - python 3.13.* *_cp313 + - __osx >=11.0 + - lz4-c >=1.10.0,<1.11.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 126950 + timestamp: 1765026420116 +- 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 + size: 167055 + timestamp: 1733741040117 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 + md5: 6654e411da94011e8fbe004eacb8fe11 + depends: + - libgcc >=13 + - libstdcxx >=13 + license: BSD-2-Clause + license_family: BSD + size: 184953 + timestamp: 1733740984533 +- conda: https://conda.anaconda.org/conda-forge/osx-64/lz4-c-1.10.0-h240833e_1.conda + sha256: 8da3c9d4b596e481750440c0250a7e18521e7f69a47e1c8415d568c847c08a1c + md5: d6b9bd7e356abd7e3a633d59b753495a + depends: + - __osx >=10.13 + - libcxx >=18 + license: BSD-2-Clause + license_family: BSD + size: 159500 + timestamp: 1733741074747 +- 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 + size: 148824 + timestamp: 1733741047892 +- conda: https://conda.anaconda.org/conda-forge/noarch/mako-1.3.10-pyhcf101f3_1.conda + sha256: 6099a13faaaf22afa8daa273929f393d41140fc03509b4ef1e2f6858b511699d + md5: 99f74609a309e434f25f0ede5f50580c + depends: + - python >=3.10 + - importlib-metadata + - markupsafe >=0.9.2 + - python + license: MIT + license_family: MIT + size: 71947 + timestamp: 1764678340587 +- 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 + size: 64736 + timestamp: 1754951288511 +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py313h3dea7bd_1.conda + sha256: 72ed7c0216541d65a17b171bf2eec4a3b81e9158d8ed48e59e1ecd3ae302d263 + md5: aeb9b9da79fd0258b3db091d1fefcd71 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - jinja2 >=3.0.0 + license: BSD-3-Clause + license_family: BSD + size: 26100 + timestamp: 1772445154165 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.3-py313hfa222a2_1.conda + sha256: e17b67ce69e04c9ac2b4d1e5458c924226cc8fba590f26c49983a2285879df56 + md5: ff5f5c0af92d01fff0aff006a8eb78a8 + depends: + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - jinja2 >=3.0.0 + license: BSD-3-Clause + license_family: BSD + size: 26561 + timestamp: 1772446359098 +- conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.3-py313h035b7d0_1.conda + sha256: e589b345402e352fb47394f7bc311c241f37627a34a9becc9299b395809a5853 + md5: 3d88718cbd26857fb68fa899e80177ea + depends: + - __osx >=11.0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - jinja2 >=3.0.0 + license: BSD-3-Clause + license_family: BSD + size: 25312 + timestamp: 1772445439146 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.3-py313h65a2061_1.conda + sha256: f62892a42948c61aa0a13d9a36ff811651f0a1102331223594aecf3cc042bece + md5: 0195d558b0c0ab8f4af3089af83067c5 + depends: + - __osx >=11.0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - jinja2 >=3.0.0 + license: BSD-3-Clause + license_family: BSD + size: 26009 + timestamp: 1772445537524 +- conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.1-pyhd8ed1ab_0.conda + sha256: 9d690334de0cd1d22c51bc28420663f4277cfa60d34fa5cad1ce284a13f1d603 + md5: 00e120ce3e40bad7bfc78861ce3c4a25 + depends: + - python >=3.10 + - traitlets + license: BSD-3-Clause + license_family: BSD + size: 15175 + timestamp: 1761214578417 +- 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 + size: 12934 + timestamp: 1733216573915 +- 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 + size: 14465 + timestamp: 1733255681319 +- conda: https://conda.anaconda.org/conda-forge/noarch/minio-7.2.20-pyhd8ed1ab_0.conda + sha256: 132cd2ac509a15cb41a1f9c55f190c2c6ab278a8ee4915b178920c3606beb9af + md5: 3244fc3d4bc0be3ea995df133a4d9436 + depends: + - argon2-cffi + - certifi + - pycryptodome + - python >=3.10 + - typing_extensions + - urllib3 + license: Apache-2.0 + license_family: Apache + size: 69324 + timestamp: 1764207690145 +- conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.2.0-pyhcf101f3_0.conda + sha256: d3fb4beb5e0a52b6cc33852c558e077e1bfe44df1159eb98332d69a264b14bae + md5: b11e360fc4de2b0035fc8aaa74f17fd6 + depends: + - python >=3.10 + - typing_extensions + - python + license: BSD-3-Clause + license_family: BSD + size: 74250 + timestamp: 1766504456031 +- 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 + size: 100245 + timestamp: 1774472435333 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpc-1.4.0-he6dc3fb_0.conda + sha256: 69f25e0c9ce2827097549a74a83f2c31c9c40fa4a668a4db96462e5a7eeb9634 + md5: b3aa59caa59a7b0288a21b097f8b6bc4 + depends: + - gmp >=6.3.0,<7.0a0 + - libgcc >=14 + - mpfr >=4.2.2,<5.0a0 + license: LGPL-3.0-or-later + license_family: LGPL + size: 121080 + timestamp: 1774472380541 +- conda: https://conda.anaconda.org/conda-forge/osx-64/mpc-1.4.0-h31caf2d_0.conda + sha256: 272ac1d9a2db3c9dbe2359c79784558a4e9b38624a0cc07c8f50b500a1b95d25 + md5: 52b3fbb35494ec12913a308397f52a9d + 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 + size: 91763 + timestamp: 1774472790640 +- 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 + size: 86181 + timestamp: 1774472395307 +- 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 + size: 730422 + timestamp: 1773413915171 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpfr-4.2.2-h3faef18_0.conda + sha256: ca2c993ad80a54f3f13b6c7857f17301acaf30b48bb1c455d890f596892417f7 + md5: 0fa4a1bcdb9e3224ab97b966d27e4949 + depends: + - gmp >=6.3.0,<7.0a0 + - libgcc >=14 + license: LGPL-3.0-only + license_family: LGPL + size: 1933306 + timestamp: 1773413839223 +- conda: https://conda.anaconda.org/conda-forge/osx-64/mpfr-4.2.2-h31caf2d_0.conda + sha256: 0a238d8500b2206b04f780093c25d83694c8c9628ea50f4376463c608168bf95 + md5: bc5ac4d19d24a6062f60560aab0e8976 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + license: LGPL-3.0-only + license_family: LGPL + size: 374756 + timestamp: 1773414598704 +- 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 + size: 348767 + timestamp: 1773414111071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.1.2-py313h7037e92_1.conda + sha256: fac37e267dd1d07527f0b078ffe000916e80e8c89cfe69d466f5775b88e93df2 + md5: cd1cfde0ea3bca6c805c73ffa988b12a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: Apache + size: 103129 + timestamp: 1762504205590 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/msgpack-python-1.1.2-py313he6111f0_1.conda + sha256: bb8be63d71f7a060dd69acaade9cc8141302df52a65a538ad3e2ee61d772b3e6 + md5: b55870c4ec681604a65f422cddd755a7 + depends: + - libgcc >=14 + - libstdcxx >=14 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: Apache + size: 99460 + timestamp: 1762504133614 +- conda: https://conda.anaconda.org/conda-forge/osx-64/msgpack-python-1.1.2-py313h5eff275_1.conda + sha256: ac8d0cd48aace3fe3129e21ec0f1f37dd9548b048b04db492a5b7fddb1dea20c + md5: 44f1e465412acc4aeb8290acd756fb58 + depends: + - __osx >=10.13 + - libcxx >=19 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: Apache + size: 91891 + timestamp: 1762504487164 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/msgpack-python-1.1.2-py313ha61f8ec_1.conda + sha256: b4a7557abb838de3890ceee6c61f78540b4b8ce74f2a03c334d7df5d476f7faa + md5: 78bc73f3c5e84b432cdea463ea4e953e + depends: + - __osx >=11.0 + - libcxx >=19 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: Apache + size: 91725 + timestamp: 1762504404391 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.19.1-py313h07c4f96_0.conda + sha256: a8ff4c2a0d704e86ba1f740178ba9260954c606c095b45dd021ff9ce52f0b9c4 + md5: c313519b83810f1e0fd4c531d3275119 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - mypy_extensions >=1.0.0 + - pathspec >=0.9.0 + - psutil >=4.0 + - python >=3.13,<3.14.0a0 + - python-librt >=0.6.2 + - python_abi 3.13.* *_cp313 + - typing_extensions >=4.6.0 + license: MIT + license_family: MIT + size: 20141878 + timestamp: 1765796286527 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mypy-1.19.1-py313hd81a959_0.conda + sha256: c39c0309f88dde4d2dde02f16a9f33a4ad1a141135df86494f90a024f3a026c4 + md5: b2f9988b6312bd5f7bd6c7fb5cbe958f + depends: + - libgcc >=14 + - mypy_extensions >=1.0.0 + - pathspec >=0.9.0 + - psutil >=4.0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python-librt >=0.6.2 + - python_abi 3.13.* *_cp313 + - typing_extensions >=4.6.0 + license: MIT + license_family: MIT + size: 17259824 + timestamp: 1765796444405 +- conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.19.1-py313hf050af9_0.conda + sha256: 174cd4b4d942f8ec9ed0867905155eb2fbf3a4820cad3a34a30c4072e8306c9d + md5: dc058d59bfa10522271318946ff5777b + depends: + - __osx >=10.13 + - mypy_extensions >=1.0.0 + - pathspec >=0.9.0 + - psutil >=4.0 + - python >=3.13,<3.14.0a0 + - python-librt >=0.6.2 + - python_abi 3.13.* *_cp313 + - typing_extensions >=4.6.0 + license: MIT + license_family: MIT + size: 13747873 + timestamp: 1765796600005 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-1.19.1-py313hd3e6d80_0.conda + sha256: 7f52c1ede45433ae03b1ea4a45e1e6ed3fdf4f6e9e54d9ac05718205f49856e7 + md5: dd6f5c085908e1945002e50d60c5c4d8 + depends: + - __osx >=11.0 + - mypy_extensions >=1.0.0 + - pathspec >=0.9.0 + - psutil >=4.0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python-librt >=0.6.2 + - python_abi 3.13.* *_cp313 + - typing_extensions >=4.6.0 + license: MIT + license_family: MIT + size: 11070584 + timestamp: 1765795751296 +- 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 + size: 11766 + timestamp: 1745776666688 +- conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.18.1-pyhcf101f3_1.conda + sha256: 541fd4390a0687228b8578247f1536a821d9261389a65585af9d1a6f2a14e1e0 + md5: 30bec5e8f4c3969e2b1bd407c5e52afb + depends: + - python >=3.10 + - python + license: MIT + license_family: MIT + size: 280459 + timestamp: 1774380620329 +- 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 + size: 28473 + timestamp: 1766485646962 +- conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.17.0-pyhcf101f3_0.conda + sha256: 628fea99108df8e33396bb0b88658ec3d58edf245df224f57c0dce09615cbed2 + md5: b14079a39ae60ac7ad2ec3d9eab075ca + 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.0 *_0 + license: BSD-3-Clause + license_family: BSD + size: 202284 + timestamp: 1769709543555 +- 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 + size: 100945 + timestamp: 1733402844974 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + license: X11 AND BSD-3-Clause + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda + sha256: ea4a5d27ded18443749aefa49dc79f6356da8506d508b5296f60b8d51e0c4bd9 + md5: ced34dd9929f491ca6dab6a2927aff25 + depends: + - __osx >=10.13 + license: X11 AND BSD-3-Clause + size: 822259 + timestamp: 1738196181298 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + license: X11 AND BSD-3-Clause + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ndindex-1.10.1-py313h7033f15_0.conda + sha256: 7ac6a3718f39bcde66486346b8f2f78b449de1f69dee98ada9aafafc011c358c + md5: f0db808169f9f10e25c6ca4a9a79583f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 245194 + timestamp: 1763658106189 +- conda: https://conda.anaconda.org/conda-forge/noarch/ndindex-1.8-pyhd8ed1ab_1.conda + sha256: 9d1d9a97dffc08878582644ac36a58a58ab6fd3007829632422eecbf6c9c69ae + md5: 34cd9589f4124ff0016f100dc044180a + depends: + - python >=3.8 + license: MIT + license_family: MIT + size: 70642 + timestamp: 1717010437985 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ndindex-1.10.1-py313hc4a83b5_0.conda + sha256: 6f163cd8f418d1657885b42e86099c31bbfa9801a65f9530e3f546f092c62ce2 + md5: 682a418f8fa5c3fdbc83bff5bb98b5fe + depends: + - __osx >=10.13 + - libcxx >=19 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 240539 + timestamp: 1763658314313 +- 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 + size: 11543 + timestamp: 1733325673691 +- 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 + size: 136216 + timestamp: 1758194284857 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.12.0-h7ac5ae9_1.conda + sha256: 03b4ffbcd3c20276f6fd9743e2d7fc8c4bed2006ac4481d90ee8f2a5d74acd5d + md5: 6cbb2594cea5f2cc2907170655852ba9 + constrains: + - nlohmann_json-abi ==3.12.0 + license: MIT + license_family: MIT + size: 136931 + timestamp: 1758194316834 +- conda: https://conda.anaconda.org/conda-forge/osx-64/nlohmann_json-3.12.0-h06076ce_1.conda + sha256: 8e1b8ac88e07da2910c72466a94d1fc77aa13c722f8ddbc7ae3beb7c19b41fc7 + md5: 97d7a1cda5546cb0bbdefa3777cb9897 + constrains: + - nlohmann_json-abi ==3.12.0 + license: MIT + license_family: MIT + size: 137081 + timestamp: 1768670842725 +- 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 + size: 137595 + timestamp: 1768670878127 +- 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 + 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 + size: 3843 + timestamp: 1582593857545 +- conda: https://conda.anaconda.org/conda-forge/noarch/notebook-7.5.5-pyhcf101f3_0.conda + sha256: 11cfeabc41ed73bb088315d96cfdfeaaa10470c06ce6332bae368590e3047ef6 + md5: 471096452091ae8c460928ad5ff143cc + depends: + - importlib_resources >=5.0 + - jupyter_server >=2.4.0,<3 + - jupyterlab >=4.5.6,<4.6 + - jupyterlab_server >=2.28.0,<3 + - notebook-shim >=0.2,<0.3 + - python >=3.10 + - tornado >=6.2.0 + - python + license: BSD-3-Clause + license_family: BSD + size: 10113914 + timestamp: 1773250273088 +- conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + sha256: 7b920e46b9f7a2d2aa6434222e5c8d739021dbc5cc75f32d124a8191d86f9056 + md5: e7f89ea5f7ea9401642758ff50a2d9c1 + depends: + - jupyter_server >=1.8,<3 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 16817 + timestamp: 1733408419340 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numba-0.64.0-py313h5dce7c4_0.conda + sha256: 3c6e9f28b5d1d987041011c0b5a1052e730df6c682b47e8a7fd7b6f00040d562 + md5: 90caff1954fb5cacc0b3e75f5066ae7c + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + - libgcc >=14 + - libstdcxx >=14 + - llvmlite >=0.46.0,<0.47.0a0 + - numpy >=1.22.3,<2.5 + - numpy >=1.23,<3 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - cuda-version >=11.2 + - scipy >=1.0 + - libopenblas !=0.3.6 + - cudatoolkit >=11.2 + - tbb >=2021.6.0 + - cuda-python >=11.6 + license: BSD-2-Clause + license_family: BSD + size: 5764718 + timestamp: 1772481814929 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numba-0.64.0-py313he752a65_0.conda + sha256: 05f04c06d248fad67c3ee9b43bfb9915b7a40976770689082184eb509e19996a + md5: 83cd36fcbe19cf699e3e86503ba29449 + depends: + - _openmp_mutex >=4.5 + - libgcc >=14 + - libstdcxx >=14 + - llvmlite >=0.46.0,<0.47.0a0 + - numpy >=1.22.3,<2.5 + - numpy >=1.23,<3 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - cuda-version >=11.2 + - scipy >=1.0 + - cuda-python >=11.6 + - tbb >=2021.6.0 + - cudatoolkit >=11.2 + license: BSD-2-Clause + license_family: BSD + size: 5751785 + timestamp: 1772481873150 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numba-0.64.0-py313h4fc6aae_0.conda + sha256: 05cf14b53d85c7bec07beeb644ff73ad53088c61d5b83fd4d2c9f5d0697d892e + md5: cf7b4f0e369bd47903c552a22a390955 + depends: + - __osx >=11.0 + - libcxx >=19 + - llvm-openmp >=19.1.7 + - llvm-openmp >=22.1.0 + - llvmlite >=0.46.0,<0.47.0a0 + - numpy >=1.22.3,<2.5 + - numpy >=1.23,<3 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - cuda-version >=11.2 + - libopenblas !=0.3.6 + - cuda-python >=11.6 + - cudatoolkit >=11.2 + - scipy >=1.0 + - tbb >=2021.6.0 + license: BSD-2-Clause + license_family: BSD + size: 5730801 + timestamp: 1772482474350 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numba-0.64.0-py313h3ca053b_0.conda + sha256: a7d1456b321218d532d73a0d47ef97f42f8729b09d579ae1bed3a9645f5deb38 + md5: 8c539246e98c032220a3e7c0f48f04b8 + depends: + - __osx >=11.0 + - libcxx >=19 + - llvm-openmp >=19.1.7 + - llvm-openmp >=22.1.0 + - llvmlite >=0.46.0,<0.47.0a0 + - numpy >=1.22.3,<2.5 + - numpy >=1.23,<3 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - libopenblas >=0.3.18,!=0.3.20 + - cuda-python >=11.6 + - scipy >=1.0 + - cudatoolkit >=11.2 + - cuda-version >=11.2 + - tbb >=2021.6.0 + license: BSD-2-Clause + license_family: BSD + size: 5739127 + timestamp: 1772482294462 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numcodecs-0.16.5-py313h08cd8bf_0.conda + sha256: 7c35d46639f8638849535a22cb7ae1b7210121be0c7b053d8e2ab7ed485e6bff + md5: 0f394ef25fb81d1dec8ff4fa716f00bd + depends: + - __glibc >=2.17,<3.0.a0 + - deprecated + - libgcc >=14 + - libstdcxx >=14 + - msgpack-python + - numpy >=1.23,<3 + - numpy >=1.24 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - typing_extensions + license: MIT + license_family: MIT + size: 808201 + timestamp: 1764782369322 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numcodecs-0.16.5-py313h9de0199_0.conda + sha256: e30ea768129a6b55726aa847e7eca316bcde5708bed49b7c8ea3bf86d73fe43a + md5: 58cc91a24bac163be58d5fabd66b3213 + depends: + - deprecated + - libgcc >=14 + - libstdcxx >=14 + - msgpack-python + - numpy >=1.23,<3 + - numpy >=1.24 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + - typing_extensions + license: MIT + license_family: MIT + size: 792289 + timestamp: 1764782491691 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numcodecs-0.16.5-py313h2f264a9_0.conda + sha256: bd734073319abbc2e2fa9ff745d5d2bc87c5cfb7d8dfee5ecc62ed0bc900e902 + md5: 296c6e5c1ecc11e592cc534fd73feac8 + depends: + - __osx >=10.13 + - deprecated + - libcxx >=19 + - msgpack-python + - numpy >=1.23,<3 + - numpy >=1.24 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - typing_extensions + license: MIT + license_family: MIT + size: 754832 + timestamp: 1764782873679 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numcodecs-0.16.5-py313h7d16b84_0.conda + sha256: adcdce0d5ca54fb7ca7433821b41a582d9f607391c08e84f636ed38a91794f05 + md5: 6a2c4584a1a126a1ecc459002bab966f + depends: + - __osx >=11.0 + - deprecated + - libcxx >=19 + - msgpack-python + - numpy >=1.23,<3 + - numpy >=1.24 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + - typing_extensions + license: MIT + license_family: MIT + size: 662641 + timestamp: 1764782646099 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numexpr-2.14.1-py313h24ae7f9_101.conda + sha256: 26917aa008b9753ec0e4658521ee6ef144414f49db65e2ce83fbf316914f318b + md5: b7e46fb2704458afc67fb95773528967 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - nomkl + - numpy >=1.23,<3 + - numpy >=1.23.0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 214953 + timestamp: 1762594973222 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numexpr-2.14.1-py313hc98aa87_1.conda + sha256: c4fd2b2c92c61cb7cbc8c361c7ef9b1124bac4b9e881b3955fedee0e915061a6 + md5: 3e45411484ba1b6cacd817204a0e79c4 + depends: + - libgcc >=14 + - libstdcxx >=14 + - numpy >=1.23,<3 + - numpy >=1.23.0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 212679 + timestamp: 1762595087783 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numexpr-2.14.1-py313h821d116_1.conda + sha256: bbbadfe0addfbdb277b15e727c8ccf2093843e8ac114e81abd8198ad7fcfb0ee + md5: a727872d1a11ac14dae71862b09ac6c6 + depends: + - __osx >=10.13 + - libcxx >=19 + - numpy >=1.23,<3 + - numpy >=1.23.0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 207904 + timestamp: 1762595170651 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numexpr-2.14.1-py313h73ed539_1.conda + sha256: f3b9301717dfc48284fd3b7baa827dd186fe17aa6854164310ee8b26493070e0 + md5: a323c1c03577617e96323f848127fb07 + depends: + - __osx >=11.0 + - libcxx >=19 + - numpy >=1.23,<3 + - numpy >=1.23.0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 199255 + timestamp: 1762595309546 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.3-py313hf6604e3_0.conda + sha256: bcf75998ea3ae133df3580fb427d1054b006b093799430f499fd7ce8207d34c7 + md5: c4a9d2e77eb9fee983a70cf5f047c202 + depends: + - python + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - python_abi 3.13.* *_cp313 + - libcblas >=3.9.0,<4.0a0 + - liblapack >=3.9.0,<4.0a0 + - libblas >=3.9.0,<4.0a0 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + size: 8857056 + timestamp: 1773839226294 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-2.4.3-py313h11e5ff7_0.conda + sha256: 35a3ea7b8d2963920ef45acecf983c24c165e32d8592bac8728515d741e7af44 + md5: b9bfd5cc1515f36131b1aa087a24e574 + depends: + - python + - libgcc >=14 + - libstdcxx >=14 + - python 3.13.* *_cp313 + - liblapack >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - python_abi 3.13.* *_cp313 + - libblas >=3.9.0,<4.0a0 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + size: 7930822 + timestamp: 1773839278435 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.4.3-py313hb870fc3_0.conda + sha256: 2ef07192b3e53dd783438fcc4c18cb9fcbb40ee39c5db024e9e78c0adb047e33 + md5: a8edd94da68a8ea91e35889708959578 + depends: + - python + - __osx >=11.0 + - libcxx >=19 + - libblas >=3.9.0,<4.0a0 + - liblapack >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + size: 8064515 + timestamp: 1773839158532 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.4.3-py313he4a34aa_0.conda + sha256: d55c3f4b13486bf8e3cadaf731a5d9b67aa9deb51f7c30e381b948a9ada20ef0 + md5: 03b99caf1270c27febfcceb4f1090af7 + depends: + - python + - python 3.13.* *_cp313 + - __osx >=11.0 + - libcxx >=19 + - liblapack >=3.9.0,<4.0a0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + size: 6924384 + timestamp: 1773839167287 +- conda: https://conda.anaconda.org/conda-forge/linux-64/obstore-0.9.2-py313h5c7d99a_0.conda + sha256: 5a187edad44a74f779460196e0eb6eb805d1649fb08353a43b4588f5721279cc + md5: 94c9abe92453771386138c4f513e3474 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + size: 3246748 + timestamp: 1773327897136 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/obstore-0.9.2-py313he77ad87_0.conda + sha256: ce0fd7ea402dee8b3e2c24144860321a52b6a330f31e6e70edb19e4f888c5e5e + md5: 45638c0bc37d31d1aa7f2f74ad989594 + depends: + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + size: 3209711 + timestamp: 1773327899974 +- conda: https://conda.anaconda.org/conda-forge/osx-64/obstore-0.9.2-py313ha3116d7_0.conda + sha256: 6c5cf861862bc00ee0944c69132bd455b58886238278510a1793ccc99c1c3a8f + md5: f9edddf954d35da5b4d9b7933db4752c + depends: + - __osx >=11.0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 3149525 + timestamp: 1773328609215 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/obstore-0.9.2-py313h7d00576_0.conda + sha256: 90224b4808f17144f8e5bc861815b715e57c038149d1df30c944f0df05f37485 + md5: 91d9d0da530b692916b50ae790bed719 + depends: + - __osx >=11.0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 2961473 + timestamp: 1773328358554 +- 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 + size: 355400 + timestamp: 1758489294972 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.4-h5da879a_0.conda + sha256: bd1bc8bdde5e6c5cbac42d462b939694e40b59be6d0698f668515908640c77b8 + md5: cea962410e327262346d48d01f05936c + depends: + - 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 + size: 392636 + timestamp: 1758489353577 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.4-h52bb76a_0.conda + sha256: 9a37ecf9c086f3a50d0132e6087dcbe7ea978d80e2da267fa3199c486529b311 + md5: 46e628da6e796c948fa8ec9d6d10bda3 + 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 + size: 335227 + timestamp: 1772625294157 +- 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 + size: 319697 + timestamp: 1772625397692 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openjph-0.26.3-h8d634f6_0.conda + sha256: 4587e7762f27cad93619de77fa0573e2e17a899892d4bed3010196093e343533 + md5: 792d5b6e99677177f5527a758a02bc07 + depends: + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=14 + - libgcc >=14 + - libtiff >=4.7.1,<4.8.0a0 + license: BSD-2-Clause + license_family: BSD + size: 279846 + timestamp: 1771349499024 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjph-0.26.3-h55827e0_0.conda + sha256: b3bb469fed20d795c03ca45272f247b4f216df12de8a726ea1fa8dcd04348ab7 + md5: cc1ebab576bd98d2cd82b0fbca20d033 + depends: + - libstdcxx >=14 + - libgcc >=14 + - libtiff >=4.7.1,<4.8.0a0 + license: BSD-2-Clause + license_family: BSD + size: 228534 + timestamp: 1771349510383 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openjph-0.26.3-h2c0e27e_0.conda + sha256: 31dc4a54fdd07dae11a7e0dc14cf8416d3eedb16492e3504d7f3d061f97ab9e2 + md5: 93c8b8f214a659b8e506f084206603da + depends: + - libcxx >=19 + - __osx >=11.0 + - libtiff >=4.7.1,<4.8.0a0 + license: BSD-2-Clause + license_family: BSD + size: 266107 + timestamp: 1771349760954 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjph-0.26.3-h2a4d681_0.conda + sha256: 8da463f8e61ce53ab8e577a7a039d8af84aa431058004b6b7d76606470933e78 + md5: a41bb9b11d64287b789c267f715efe75 + depends: + - __osx >=11.0 + - libcxx >=19 + - libtiff >=4.7.1,<4.8.0a0 + license: BSD-2-Clause + license_family: BSD + size: 182293 + timestamp: 1771349598209 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.10-hbde042b_1.conda + sha256: 2e185a3dc2bdc4525dd68559efa3f24fa9159a76c40473e320732b35115163b2 + md5: 3c40a106eadf7c14c6236ceddb267893 + 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.5,<4.0a0 + license: OLDAP-2.8 + license_family: BSD + size: 785570 + timestamp: 1771970256722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openldap-2.6.10-h2fb54aa_1.conda + sha256: 32c9bd01e108a6983778c13b54ff6a99cb2eca188ce217db907819ec6d1d5db7 + md5: b761e5f1358577a16ca187c6116d9fcc + depends: + - cyrus-sasl >=2.1.28,<3.0a0 + - krb5 >=1.22.2,<1.23.0a0 + - libgcc >=14 + - libstdcxx >=14 + - openssl >=3.5.5,<4.0a0 + license: OLDAP-2.8 + license_family: BSD + size: 907905 + timestamp: 1771970279050 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openldap-2.6.10-h2f5043c_1.conda + sha256: fa87c91cad35b239fe849085521abb525bc37f5dc6aeacb553f964a71671d746 + md5: bb2df226289c661053b92100ada260c9 + depends: + - __osx >=11.0 + - cyrus-sasl >=2.1.28,<3.0a0 + - krb5 >=1.22.2,<1.23.0a0 + - libcxx >=19 + - openssl >=3.5.5,<4.0a0 + license: OLDAP-2.8 + license_family: BSD + size: 773589 + timestamp: 1771970878018 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openldap-2.6.10-hf7f56bc_1.conda + sha256: e0b08e88f52391c829d347039c6152e3f39b8b0ca0baf85b42fa38e8edb2ff17 + md5: a9a018599629925fb1e597e5a730d2af + depends: + - __osx >=11.0 + - cyrus-sasl >=2.1.28,<3.0a0 + - krb5 >=1.22.2,<1.23.0a0 + - libcxx >=19 + - openssl >=3.5.5,<4.0a0 + license: OLDAP-2.8 + license_family: BSD + size: 843972 + timestamp: 1771970904727 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py313ha4be090_3.conda + sha256: ee3e071cbc0be5600747631b41da17349be6fd25c982c9a9644cda3953bbf8b5 + md5: 993d27015ca7aa1de3f4a471a9b5309e + depends: + - et_xmlfile + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 484606 + timestamp: 1769122088626 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openpyxl-3.1.5-py313h111ca60_3.conda + sha256: 36998a9b7500cf9aebeb8f4d6101d6dc9b53eccd8bac225f86ad82c49c22870e + md5: 644a8f27230a9cb57ce7010b157f9141 + depends: + - et_xmlfile + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 485174 + timestamp: 1769122138198 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py313hc34da29_3.conda + sha256: 999e9ee899177b8ddbfd9f392fc86df5f962c75f4cc06ff4ff217cdadcd51cac + md5: a0ee9f9b49a5bb1bae9513db7bb86595 + depends: + - et_xmlfile + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 486427 + timestamp: 1769122429300 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py313he4f8f71_3.conda + sha256: bf4e6418868902144039737846c2bb18462359ffcab6b7d91f40e63b40afe5bb + md5: efbd4d9fbc03317972be69883bbce470 + depends: + - et_xmlfile + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 487057 + timestamp: 1769122365591 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.1-h35e630c_1.conda + sha256: 44c877f8af015332a5d12f5ff0fb20ca32f896526a7d0cdb30c769df1144fb5c + md5: f61eb8cd60ff9057122a3d338b99c00f + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=14 + license: Apache-2.0 + license_family: Apache + size: 3164551 + timestamp: 1769555830639 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.1-h546c87b_1.conda + sha256: 7f8048c0e75b2620254218d72b4ae7f14136f1981c5eb555ef61645a9344505f + md5: 25f5885f11e8b1f075bccf4a2da91c60 + depends: + - ca-certificates + - libgcc >=14 + license: Apache-2.0 + license_family: Apache + size: 3692030 + timestamp: 1769557678657 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.1-hb6871ef_1.conda + sha256: e02e5639b0e4d6d4fcf0f3b082642844fb5a37316f5b0a1126c6271347462e90 + md5: 30bb8d08b99b9a7600d39efb3559fff0 + depends: + - __osx >=10.13 + - ca-certificates + license: Apache-2.0 + license_family: Apache + size: 2777136 + timestamp: 1769557662405 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.1-hd24854e_1.conda + sha256: 361f5c5e60052abc12bdd1b50d7a1a43e6a6653aab99a2263bf2288d709dcf67 + md5: f4f6ad63f98f64191c3e77c5f5f29d76 + depends: + - __osx >=11.0 + - ca-certificates + license: Apache-2.0 + license_family: Apache + size: 3104268 + timestamp: 1769556384749 +- 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 + size: 1468651 + timestamp: 1773230208923 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.3.0-hce1ac79_0.conda + sha256: c44a1d88d4ef953ca897f795b772b4b2b900d98c2ef815d956c79d82dd91115b + md5: 62f1cfadc1aa30f3c0ec5948996bbc6b + depends: + - tzdata + - libstdcxx >=14 + - libgcc >=14 + - snappy >=1.2.2,<1.3.0a0 + - libprotobuf >=6.33.5,<6.33.6.0a0 + - zstd >=1.5.7,<1.6.0a0 + - libabseil >=20260107.1,<20260108.0a0 + - libabseil * cxx17* + - lz4-c >=1.10.0,<1.11.0a0 + - libzlib >=1.3.1,<2.0a0 + license: Apache-2.0 + license_family: APACHE + size: 1456422 + timestamp: 1773230231203 +- conda: https://conda.anaconda.org/conda-forge/osx-64/orc-2.3.0-hb9b210e_0.conda + sha256: c4872822be78b2503bba06b906604c87000e3a63c7b7b8cb459463d46c55814b + md5: 292d30447800bc51a0d3e0e9738f5730 + depends: + - tzdata + - libcxx >=19 + - __osx >=11.0 + - libprotobuf >=6.33.5,<6.33.6.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + - snappy >=1.2.2,<1.3.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - libabseil >=20260107.1,<20260108.0a0 + - libabseil * cxx17* + license: Apache-2.0 + license_family: APACHE + size: 594601 + timestamp: 1773230256637 +- 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 + size: 548180 + timestamp: 1773230270828 +- conda: https://conda.anaconda.org/conda-forge/linux-64/orjson-3.11.7-py313h541fbb8_0.conda + sha256: 8fb560eb52e72e2181fe0fb0e934a1e2b9bbd9d07fdb0994fceaece76ec32a36 + md5: df31eabe76aa03309c7ba9b5018a4a59 + depends: + - python + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python_abi 3.13.* *_cp313 + constrains: + - __glibc >=2.17 + license: Apache-2.0 + license_family: APACHE + size: 347329 + timestamp: 1771788973176 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orjson-3.11.7-py313h9a81766_0.conda + sha256: 06db4bb10ab819e78974d7ef561e700075d7311f94f80732f32b1dbc455b37b6 + md5: 4788a3cd99a6145f138c7a7a4395addd + depends: + - python + - libgcc >=14 + - python 3.13.* *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - __glibc >=2.17 + license: Apache-2.0 + license_family: APACHE + size: 359833 + timestamp: 1771788981420 +- conda: https://conda.anaconda.org/conda-forge/osx-64/orjson-3.11.7-py313h9317e59_0.conda + sha256: f98af39f2692098af81ba54e65daefba695cf3da844e1736b0db85617faa688c + md5: b443ae9fdac2d09c23f33ea0565e95c5 + depends: + - python + - __osx >=10.13 + - python_abi 3.13.* *_cp313 + constrains: + - __osx >=10.13 + license: Apache-2.0 + license_family: APACHE + size: 335571 + timestamp: 1771788968654 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orjson-3.11.7-py313hf195ed2_0.conda + sha256: a7355a84c29225838e32e29ababaea8c04a70e086ada540897c607e8cebe0757 + md5: d62cc2109f80cf895b9976f00bf82ac0 + depends: + - python + - python 3.13.* *_cp313 + - __osx >=11.0 + - python_abi 3.13.* *_cp313 + constrains: + - __osx >=11.0 + license: Apache-2.0 + license_family: APACHE + size: 320642 + timestamp: 1771788992012 +- conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + sha256: 1840bd90d25d4930d60f57b4f38d4e0ae3f5b8db2819638709c36098c6ba770c + md5: e51f1e4089cad105b6cac64bd8166587 + depends: + - python >=3.9 + - typing_utils + license: Apache-2.0 + license_family: APACHE + size: 30139 + timestamp: 1734587755455 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda + sha256: c1fc0f953048f743385d31c468b4a678b3ad20caffdeaa94bed85ba63049fd58 + md5: b76541e68fea4d511b1ac46a28dcd2c6 + depends: + - python >=3.8 + - python + license: Apache-2.0 + license_family: APACHE + size: 72010 + timestamp: 1769093650580 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.1-py313hbfd7664_0.conda + sha256: 01a14cb74d9773674d07ab250b70a7fbd140edfb19cf3ec2ba70147bdaec13d2 + md5: 1c8807728f0333228766dee685394e16 + depends: + - python + - numpy >=1.26.0 + - python-dateutil >=2.8.2 + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - numpy >=1.23,<3 + - python_abi 3.13.* *_cp313 + 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 + size: 14972232 + timestamp: 1771408987551 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-3.0.1-py313h9226a20_0.conda + sha256: 455faf9437f06d469b12f7460e94281b63924c6f9a802902ba88af00960e0e21 + md5: feac7f5e15a122bd37e29ea9ebd73eaf + depends: + - python + - numpy >=1.26.0 + - python-dateutil >=2.8.2 + - libgcc >=14 + - libstdcxx >=14 + - python 3.13.* *_cp313 + - numpy >=1.23,<3 + - python_abi 3.13.* *_cp313 + 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 + size: 14766794 + timestamp: 1771408988752 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-3.0.1-py313hfd25234_0.conda + sha256: c4a8f0980a036e73d7e60e6852e58c70b585de24081ad78d6899bb1a5b8bf295 + md5: 7bfcfb0c9857e5884ff7c2f2bf23ec88 + depends: + - python + - numpy >=1.26.0 + - python-dateutil >=2.8.2 + - libcxx >=19 + - __osx >=11.0 + - python_abi 3.13.* *_cp313 + - 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 + size: 14259868 + timestamp: 1771409287844 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-3.0.1-py313h6974306_0.conda + sha256: 2407cc540bcfcc74657730f66b0741920f0a4e037027402d0544795514bc6ef6 + md5: 346e7db4e1eeed5d50df059013d1849a + depends: + - python + - numpy >=1.26.0 + - python-dateutil >=2.8.2 + - libcxx >=19 + - __osx >=11.0 + - python 3.13.* *_cp313 + - numpy >=1.23,<3 + - python_abi 3.13.* *_cp313 + 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 + size: 14024089 + timestamp: 1771409122467 +- 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 + size: 11627 + timestamp: 1631603397334 +- conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.6-pyhcf101f3_0.conda + sha256: 42b2d77ccea60752f3aa929a6413a7835aaacdbbde679f2f5870a744fa836b94 + md5: 97c1ce2fffa1209e7afb432810ec6e12 + depends: + - python >=3.10 + - python + license: MIT + license_family: MIT + size: 82287 + timestamp: 1770676243987 +- 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 + size: 20884 + timestamp: 1715026639309 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.4-pyhd8ed1ab_0.conda + sha256: 29ea20d0faf20374fcd61c25f6d32fb8e9a2c786a7f1473a0c3ead359470fbe1 + md5: 2908273ac396d2cd210a8127f5f1c0d6 + depends: + - python >=3.10 + license: MPL-2.0 + license_family: MOZILLA + size: 53739 + timestamp: 1769677743677 +- 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 + size: 53561 + timestamp: 1733302019362 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.1.1-py313h80991f8_0.conda + sha256: 50738b145a45db78ec12ffebf649127d53e1777166c5c3b006476890250ac265 + md5: 2d5ee4938cdde91a8967f3eea686c546 + depends: + - python + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - tk >=8.6.13,<8.7.0a0 + - zlib-ng >=2.3.3,<2.4.0a0 + - python_abi 3.13.* *_cp313 + - libwebp-base >=1.6.0,<2.0a0 + - openjpeg >=2.5.4,<3.0a0 + - libtiff >=4.7.1,<4.8.0a0 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - libjpeg-turbo >=3.1.2,<4.0a0 + - libxcb >=1.17.0,<2.0a0 + - lcms2 >=2.18,<3.0a0 + license: HPND + size: 1043560 + timestamp: 1770794002407 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-12.1.1-py313h20c1486_0.conda + sha256: 9897e98e7326307f092591bebbe69a07e616a4ad878b80b4cb7ad3bd2afc2969 + md5: 2e1274f9ae78b501d4870ad9e6a22809 + depends: + - python + - libgcc >=14 + - python 3.13.* *_cp313 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - openjpeg >=2.5.4,<3.0a0 + - libjpeg-turbo >=3.1.2,<4.0a0 + - libxcb >=1.17.0,<2.0a0 + - libwebp-base >=1.6.0,<2.0a0 + - tk >=8.6.13,<8.7.0a0 + - libtiff >=4.7.1,<4.8.0a0 + - python_abi 3.13.* *_cp313 + - lcms2 >=2.18,<3.0a0 + - zlib-ng >=2.3.3,<2.4.0a0 + license: HPND + size: 1022071 + timestamp: 1770794010333 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-12.1.1-py313h16bb925_0.conda + sha256: ea91061c350114c996ce1dbdabe0916e4ac69cb85fad24c6057cf2d980ce4585 + md5: 48512b2603412e99b702dd177f991ffd + depends: + - python + - __osx >=10.13 + - libwebp-base >=1.6.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libtiff >=4.7.1,<4.8.0a0 + - libjpeg-turbo >=3.1.2,<4.0a0 + - python_abi 3.13.* *_cp313 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - lcms2 >=2.18,<3.0a0 + - tk >=8.6.13,<8.7.0a0 + - openjpeg >=2.5.4,<3.0a0 + - zlib-ng >=2.3.3,<2.4.0a0 + license: HPND + size: 977327 + timestamp: 1770794115029 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.1.1-py313h45e5a15_0.conda + sha256: a9cd5dd2c96c9f1714bdbe32341f6e8318a751e7d6dfa446267335418b6a0932 + md5: a261959853e116b05a6c59e5944bf689 + depends: + - python + - python 3.13.* *_cp313 + - __osx >=11.0 + - zlib-ng >=2.3.3,<2.4.0a0 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - python_abi 3.13.* *_cp313 + - libxcb >=1.17.0,<2.0a0 + - libjpeg-turbo >=3.1.2,<4.0a0 + - libtiff >=4.7.1,<4.8.0a0 + - tk >=8.6.13,<8.7.0a0 + - openjpeg >=2.5.4,<3.0a0 + - lcms2 >=2.18,<3.0a0 + - libwebp-base >=1.6.0,<2.0a0 + license: HPND + size: 966809 + timestamp: 1770794152240 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.4-pyhcf101f3_0.conda + sha256: 0289f0a38337ee201d984f8f31f11f6ef076cfbbfd0ab9181d12d9d1d099bf46 + md5: 82c1787f2a65c0155ef9652466ee98d6 + depends: + - python >=3.10 + - python + license: MIT + license_family: MIT + size: 25646 + timestamp: 1773199142345 +- 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 + size: 25877 + timestamp: 1764896838868 +- conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.5.1-pyha770c72_0.conda + sha256: 5b81b7516d4baf43d0c185896b245fa7384b25dc5615e7baa504b7fa4e07b706 + md5: 7f3ac694319c7eaf81a0325d6405e974 + 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 + size: 200827 + timestamp: 1765937577534 +- 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 + size: 199544 + timestamp: 1730769112346 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + sha256: 9350d7bbc3982a732ff13a7fd17b585509e3b7d0191ac7b810cc3224868e3648 + md5: 10f4301290e51c49979ff98d1bdf2556 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + license: MIT + license_family: MIT + size: 211335 + timestamp: 1730769181127 +- conda: https://conda.anaconda.org/conda-forge/osx-64/prometheus-cpp-1.3.0-h7802330_0.conda + sha256: af754a477ee2681cb7d5d77c621bd590d25fe1caf16741841fc2d176815fc7de + md5: f36107fa2557e63421a46676371c4226 + depends: + - __osx >=10.13 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - zlib + license: MIT + license_family: MIT + size: 179103 + timestamp: 1730769223221 +- 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 + size: 173220 + timestamp: 1730769371051 +- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.24.1-pyhd8ed1ab_0.conda + sha256: 75b2589159d04b3fb92db16d9970b396b9124652c784ab05b66f584edc97f283 + md5: 7526d20621b53440b0aae45d4797847e + depends: + - python >=3.10 + license: Apache-2.0 + license_family: Apache + size: 56634 + timestamp: 1768476602855 +- conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda + sha256: 4817651a276016f3838957bfdf963386438c70761e9faec7749d411635979bae + md5: edb16f14d920fb3faf17f5ce582942d6 + depends: + - python >=3.10 + - wcwidth + constrains: + - prompt_toolkit 3.0.52 + license: BSD-3-Clause + license_family: BSD + size: 273927 + timestamp: 1756321848365 +- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py313h54dd161_0.conda + sha256: f19fd682d874689dfde20bf46d7ec1a28084af34583e0405685981363af47c91 + md5: 25fe6e02c2083497b3239e21b49d8093 + depends: + - python + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 228663 + timestamp: 1769678153829 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-7.2.2-py313h62ef0ea_0.conda + sha256: 4d79590af157f1f82fe703fff6145b7f0d8513ab57c3eb1ea1a6c91a07de477a + md5: 4bc123e8d0009f5c3d7e252fb3669aad + depends: + - python + - libgcc >=14 + - python 3.13.* *_cp313 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 233242 + timestamp: 1769678166435 +- conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.2.2-py313h16366db_0.conda + sha256: b50a9d64aabd30c05e405cc1166f21fd7dee8d1b42ef38116701883d3bd4d5fa + md5: c8185e1891ace76e565b4c28dd50ed5d + depends: + - python + - __osx >=10.13 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 239894 + timestamp: 1769678319684 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.2.2-py313h6688731_0.conda + sha256: 1d2a6039fb71d61134b1d6816202529f2f6286c83b59bc1491fd288f5c08046e + md5: ba2d89e51a855963c767648f44c03871 + depends: + - python + - __osx >=11.0 + - python 3.13.* *_cp313 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 242596 + timestamp: 1769678288893 +- 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 + size: 8252 + timestamp: 1726802366959 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba + md5: bb5a90c93e3bac3d5690acf76b4a6386 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 8342 + timestamp: 1726803319942 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-h00291cd_1002.conda + sha256: 05944ca3445f31614f8c674c560bca02ff05cb51637a96f665cb2bbe496099e5 + md5: 8bcf980d2c6b17094961198284b8e862 + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 8364 + timestamp: 1726802331537 +- 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 + size: 8381 + timestamp: 1726802424786 +- 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 + 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 + size: 16668 + timestamp: 1733569518868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-23.0.1-py313h78bf25f_0.conda + sha256: 35c4e89573067e008d051336aa2b16350ed616a5f457ba851f97e859b9c988d0 + md5: bd299f66ab2d10d1e03d4148397fe263 + depends: + - libarrow-acero 23.0.1.* + - libarrow-dataset 23.0.1.* + - libarrow-substrait 23.0.1.* + - libparquet 23.0.1.* + - pyarrow-core 23.0.1 *_0_* + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: APACHE + size: 28664 + timestamp: 1771307351295 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-23.0.1-py313h1258fbd_0.conda + sha256: 79f985c04c4e3a562bf0adb9b10aa18cf5cc9bbc1ef3ca198769cfa1f1068375 + md5: eb313ab42e3d43b1b65080a2998db2d4 + depends: + - libarrow-acero 23.0.1.* + - libarrow-dataset 23.0.1.* + - libarrow-substrait 23.0.1.* + - libparquet 23.0.1.* + - pyarrow-core 23.0.1 *_0_* + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: APACHE + size: 28769 + timestamp: 1771307381804 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-23.0.1-py313habf4b1d_0.conda + sha256: a53e24ff7d730dbdbd9ce4a798a9caf7c0a6485579434d7106600772d028b724 + md5: da8b83fbeae3568e0459ee484d3e44c7 + depends: + - libarrow-acero 23.0.1.* + - libarrow-dataset 23.0.1.* + - libarrow-substrait 23.0.1.* + - libparquet 23.0.1.* + - pyarrow-core 23.0.1 *_0_* + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: APACHE + size: 28614 + timestamp: 1771307943088 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-23.0.1-py313h39782a4_0.conda + sha256: c4ba7bc7f5ef2387dac89ce3c3a569a80e166f8fdd2e4e5a4e8fdb0667f17e3b + md5: 71741a4edcffdd272f6dc46672131545 + depends: + - libarrow-acero 23.0.1.* + - libarrow-dataset 23.0.1.* + - libarrow-substrait 23.0.1.* + - libparquet 23.0.1.* + - pyarrow-core 23.0.1 *_0_* + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: APACHE + size: 28712 + timestamp: 1771307867424 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-23.0.1-py313h98bfbea_0_cpu.conda + sha256: cdf599116ebc254821e65f5883e9950b42f516a5868ee1c3bbbadc482a4da72c + md5: d2b771a9050c52941a61a72f2d161c64 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 23.0.1.* *cpu + - libarrow-compute 23.0.1.* *cpu + - libgcc >=14 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - numpy >=1.23,<3 + - apache-arrow-proc * cpu + license: Apache-2.0 + license_family: APACHE + size: 4764506 + timestamp: 1771307241382 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-23.0.1-py313hc35d149_0_cpu.conda + sha256: 00e8b2c147859fb31843e540189c2cab437780892c659c0928eb0acf814ed48a + md5: 95620fee5c33dc3e8dbd46284c117534 + depends: + - libarrow 23.0.1.* *cpu + - libarrow-compute 23.0.1.* *cpu + - libgcc >=14 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - numpy >=1.23,<3 + - apache-arrow-proc * cpu + license: Apache-2.0 + license_family: APACHE + size: 4522202 + timestamp: 1771307351603 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-23.0.1-py313h345cca6_0_cpu.conda + sha256: b9f78e0002a9ff369a852ef79b52e31903ac5eae3df46cd0fc54a30dbd067d22 + md5: 716f127a3cf7da213e06ee0c90a564d4 + depends: + - __osx >=11.0 + - libarrow 23.0.1.* *cpu + - libarrow-compute 23.0.1.* *cpu + - libcxx >=21 + - libzlib >=1.3.1,<2.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - numpy >=1.23,<3 + - apache-arrow-proc * cpu + license: Apache-2.0 + license_family: APACHE + size: 4432950 + timestamp: 1771307856637 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-23.0.1-py313h23b330d_0_cpu.conda + sha256: 878cfede0bf8df7e6c301e2608911ab881c157ce3b3b7db26d297b831852c9ff + md5: 756a77ba6692d72c2fb1d12dea1ddb86 + depends: + - __osx >=11.0 + - libarrow 23.0.1.* *cpu + - libarrow-compute 23.0.1.* *cpu + - libcxx >=21 + - libzlib >=1.3.1,<2.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - apache-arrow-proc * cpu + - numpy >=1.23,<3 + license: Apache-2.0 + license_family: APACHE + size: 4243591 + timestamp: 1771307809164 +- conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.3-pyhcf101f3_0.conda + sha256: 6fd53b7a2793404aef62313ff2fcfef0c661d6b71de90ef3d38c0908249eea76 + md5: f5a488544d2eb37f46b3bebf1f378337 + depends: + - python >=3.10 + - python + license: BSD-2-Clause + license_family: BSD + size: 66593 + timestamp: 1773729387446 +- 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 + 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 + size: 110100 + timestamp: 1733195786147 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pycryptodome-3.23.0-py313h6123c0d_2.conda + sha256: 8a389621b0bf6bbce6f1732c4d4da09b3dad4c413e029726465f244ff25b55ec + md5: 9515285f632cbc82b783df886713f998 + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-2-Clause + license_family: BSD + size: 1681620 + timestamp: 1768755547718 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pycryptodome-3.23.0-py313h2fc25cf_2.conda + sha256: 36f99b72ad3e9eb1b8423a0600c62c6ad6156d06029a7d0bc44204ac029b2b7b + md5: d4cae0d0e037b89ab46d9d98cbfefd64 + depends: + - gmp >=6.3.0,<7.0a0 + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: BSD-2-Clause + license_family: BSD + size: 1702428 + timestamp: 1768755593840 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pycryptodome-3.23.0-py313h590ad5b_2.conda + sha256: d941f0c59c49e15b13cd4dcbb41a012bbb780343edef717896bc342bc5fa69b9 + md5: f64e991c50702719dfc20583d9d14c19 + depends: + - __osx >=10.13 + - gmp >=6.3.0,<7.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-2-Clause + license_family: BSD + size: 1668035 + timestamp: 1768755841751 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pycryptodome-3.23.0-py313hf820cfb_2.conda + sha256: 6df8862e686b4c55f30d9143cfed53c7e20fd452bc5fc5294438ec1075bd1c5d + md5: fd8e3052c1a837904be72f6570717828 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: BSD-2-Clause + license_family: BSD + size: 1671416 + timestamp: 1768755791165 +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda + sha256: 868569d9505b7fe246c880c11e2c44924d7613a8cdcc1f6ef85d5375e892f13d + md5: c3946ed24acdb28db1b5d63321dbca7d + depends: + - typing-inspection >=0.4.2 + - typing_extensions >=4.14.1 + - python >=3.10 + - typing-extensions >=4.6.1 + - annotated-types >=0.6.0 + - pydantic-core ==2.41.5 + - python + license: MIT + license_family: MIT + size: 340482 + timestamp: 1764434463101 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.41.5-py313h843e2db_1.conda + sha256: b15568ddc03bd33ea41610e5df951be4e245cd61957cbf8c2cfd12557f3d53b5 + md5: f27c39a1906771bbe56cd26a76bf0b8b + depends: + - python + - typing-extensions >=4.6.0,!=4.7.0 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - python_abi 3.13.* *_cp313 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + size: 1940186 + timestamp: 1762989000579 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.41.5-py313h5e7b836_1.conda + sha256: df87d763c450ca0dc7a916987674fe1db153e6713cc488cedb0997ad5e807e96 + md5: dd7a9ffb9145ce5651b10b846d41b8ef + depends: + - python + - typing-extensions >=4.6.0,!=4.7.0 + - python 3.13.* *_cp313 + - libgcc >=14 + - python_abi 3.13.* *_cp313 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + size: 1824747 + timestamp: 1762989007285 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pydantic-core-2.41.5-py313hcc225dc_1.conda + sha256: 73de35081774d9b445dd807ac4d4e043846159b2de348b8e6a81f1b810210fe4 + md5: e12491c39d2ea259771ce4d80a91817f + depends: + - python + - typing-extensions >=4.6.0,!=4.7.0 + - __osx >=10.13 + - python_abi 3.13.* *_cp313 + constrains: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 1947011 + timestamp: 1762989008917 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.41.5-py313h2c089d5_1.conda + sha256: 08398c0599084837ba89d69db00b3d0973dc86d6519957dc6c1b480e2571451a + md5: eaeed566f6d88c0a08d73700b34be4a2 + depends: + - python + - typing-extensions >=4.6.0,!=4.7.0 + - python 3.13.* *_cp313 + - __osx >=11.0 + - python_abi 3.13.* *_cp313 + constrains: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 1778337 + timestamp: 1762989007829 +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.1-pyhcf101f3_0.conda + sha256: 385a900cf5d1d39dafab6088537c58a32d572fd237d7c4598def92c4c1120cb8 + md5: 96513760035d70917819a2840155d23a + depends: + - python >=3.10 + - pydantic >=2.5.2 + - python + constrains: + - phonenumbers >=8,<9 + - pycountry >=23 + - semver >=3.0.2,<4 + - python-ulid >=1,<4 + - pendulum >=3.0.0,<4.0.0 + - pytz >=2024.1 + - tzdata >=2024a + license: MIT + license_family: MIT + size: 72040 + timestamp: 1773664659868 +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.11.0-pyh3cfb1c2_0.conda + sha256: 0580a33a0b405e222f9c0294fa5052629e3d69dfdfa93db4438c4a215a5874dc + md5: c4286d133d776242af0793343f867f11 + depends: + - pydantic >=2.7.0 + - python >=3.10 + - python-dotenv >=0.21.0 + - typing-inspection >=0.4.0 + license: MIT + license_family: MIT + size: 41378 + timestamp: 1758734155852 +- conda: https://conda.anaconda.org/conda-forge/noarch/pyflakes-3.4.0-pyhd8ed1ab_0.conda + sha256: 4b6fb3f7697b4e591c06149671699777c71ca215e9ec16d5bd0767425e630d65 + md5: dba204e749e06890aeb3756ef2b1bf35 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 59592 + timestamp: 1750492011671 +- 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 + size: 893031 + timestamp: 1774796815820 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-12.1-py313h07bcf3a_0.conda + sha256: 1e0edd34b804e20ba064dcebcfce3066d841ec812f29ed65902da7192af617d1 + md5: 6a2c3a617a70f97ca53b7b88461b1c27 + depends: + - __osx >=10.13 + - libffi >=3.5.2,<3.6.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - setuptools + license: MIT + license_family: MIT + size: 491157 + timestamp: 1763151415674 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-12.1-py313h40b429f_0.conda + sha256: 307ca29ebf2317bd2561639b1ee0290fd8c03c3450fa302b9f9437d8df6a5280 + md5: 31a0a72f3466682d0ea2ebcbd7d319b8 + depends: + - __osx >=11.0 + - libffi >=3.5.2,<3.6.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + - setuptools + license: MIT + license_family: MIT + size: 481508 + timestamp: 1763152124940 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-12.1-py313hf669bc3_0.conda + sha256: 4761b8448bb9ecfcd9636a506104e6474e0f4cb73d108f2088997702ae984a00 + md5: 628b5ad83d6140fe4bfa937e2f357ed7 + depends: + - __osx >=10.13 + - libffi >=3.5.2,<3.6.0a0 + - pyobjc-core 12.1.* + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 374120 + timestamp: 1763160397755 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-12.1-py313hcc5defa_0.conda + sha256: 194e188d8119befc952d04157079733e2041a7a502d50340ddde632658799fdc + md5: a6d28c8fc266a3d3c3dae183e25c4d31 + depends: + - __osx >=11.0 + - libffi >=3.5.2,<3.6.0a0 + - pyobjc-core 12.1.* + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 376136 + timestamp: 1763160678792 +- 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 + size: 21085 + timestamp: 1733217331982 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda + sha256: 9e749fb465a8bedf0184d8b8996992a38de351f7c64e967031944978de03a520 + md5: 2b694bad8a50dc2f712f5368de866480 + depends: + - pygments >=2.7.2 + - python >=3.10 + - iniconfig >=1.0.1 + - packaging >=22 + - pluggy >=1.5,<2 + - tomli >=1 + - colorama >=0.4 + - exceptiongroup >=1 + - python + constrains: + - pytest-faulthandler >=2 + license: MIT + license_family: MIT + size: 299581 + timestamp: 1765062031645 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-asyncio-1.3.0-pyhcf101f3_0.conda + sha256: e782cf0555e4d54102423ad3421c8122f97a7a7c2d55c677a91e32d7c3e2b059 + md5: 80eccce75e6728e9e728370984bdc6fd + depends: + - pytest >=8.2,<10 + - python >=3.10 + - typing_extensions >=4.12 + - backports.asyncio.runner >=1.1,<2 + - python + license: Apache-2.0 + license_family: APACHE + size: 39223 + timestamp: 1762797319837 +- 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 + size: 29559 + timestamp: 1774139250481 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.12-hc97d973_100_cp313.conda + build_number: 100 + sha256: 8a08fe5b7cb5a28aa44e2994d18dbf77f443956990753a4ca8173153ffb6eb56 + md5: 4c875ed0e78c2d407ec55eadffb8cf3d + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.7.3,<3.0a0 + - libffi >=3.5.2,<3.6.0a0 + - libgcc >=14 + - liblzma >=5.8.2,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.51.2,<4.0a0 + - libuuid >=2.41.3,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.5.5,<4.0a0 + - python_abi 3.13.* *_cp313 + - readline >=8.3,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + license: Python-2.0 + size: 37364553 + timestamp: 1770272309861 + python_site_packages_path: lib/python3.13/site-packages +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.13.12-h4c0d347_100_cp313.conda + build_number: 100 + sha256: a6bdf48a245d70526b4e6a277a4b344ec3f7c787b358e5377d544ac9a303c111 + md5: 732a86d6786402b95e1dc68c32022500 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.7.3,<3.0a0 + - libffi >=3.5.2,<3.6.0a0 + - libgcc >=14 + - liblzma >=5.8.2,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.51.2,<4.0a0 + - libuuid >=2.41.3,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.5.5,<4.0a0 + - python_abi 3.13.* *_cp313 + - readline >=8.3,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + license: Python-2.0 + size: 33986700 + timestamp: 1770270924894 + python_site_packages_path: lib/python3.13/site-packages +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.12-h894a449_100_cp313.conda + build_number: 100 + sha256: 9548dcf58cf6045aa4aa1f2f3fa6110115ca616a8d5fa142a24081d2b9d91291 + md5: 99b1fa1fe8a8ab58224969f4568aadca + depends: + - __osx >=10.13 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.7.3,<3.0a0 + - libffi >=3.5.2,<3.6.0a0 + - liblzma >=5.8.2,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.51.2,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.5.5,<4.0a0 + - python_abi 3.13.* *_cp313 + - readline >=8.3,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + license: Python-2.0 + size: 17570178 + timestamp: 1770272361922 + python_site_packages_path: lib/python3.13/site-packages +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.12-h20e6be0_100_cp313.conda + build_number: 100 + sha256: 9a4f16a64def0853f0a7b6a7beb40d498fd6b09bee10b90c3d6069b664156817 + md5: 179c0f5ae4f22bc3be567298ed0b17b9 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.7.3,<3.0a0 + - libffi >=3.5.2,<3.6.0a0 + - liblzma >=5.8.2,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.51.2,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.5.5,<4.0a0 + - python_abi 3.13.* *_cp313 + - readline >=8.3,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + license: Python-2.0 + size: 12770674 + timestamp: 1770272314517 + python_site_packages_path: lib/python3.13/site-packages +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-blosc2-4.1.2-py313h9545597_1.conda + sha256: 98943eb5ba9419deb1d6e733879ac7d0145d0687859c032c5ef83d19403b8615 + md5: 2ece443ffad41fda89ee8e74b0161f9a + depends: + - __glibc >=2.17,<3.0.a0 + - c-blosc2 >=2.23.1,<2.24.0a0 + - libgcc >=14 + - libstdcxx >=14 + - msgpack-python + - ndindex + - numexpr >=2.12.1 + - numpy >=1.23,<3 + - numpy >=1.26.0 + - platformdirs + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - requests + license: BSD-3-Clause + license_family: BSD + size: 1154973 + timestamp: 1772626273337 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-blosc2-4.1.2-py313h75e4f28_1.conda + sha256: 11c5bc0942ae9582d51d70a0b9d418bf40c30145622c00e984515d9b48c562e8 + md5: d1f1c39cd3b6c547de4517150394ff93 + depends: + - c-blosc2 >=2.23.1,<2.24.0a0 + - libgcc >=14 + - libstdcxx >=14 + - msgpack-python + - ndindex + - numexpr >=2.12.1 + - numpy >=1.23,<3 + - numpy >=1.26.0 + - platformdirs + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + - requests + license: BSD-3-Clause + license_family: BSD + size: 1154395 + timestamp: 1772626319763 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-blosc2-4.1.2-py313h99e2700_1.conda + sha256: 779f828c76f546420dbd31d8476835e0920b7de773571344264646dea1b2c2d5 + md5: 7eef232bedadb174b98e5964a7b1d0be + depends: + - __osx >=11.0 + - c-blosc2 >=2.23.1,<2.24.0a0 + - libcxx >=19 + - msgpack-python + - ndindex + - numexpr >=2.12.1 + - numpy >=1.23,<3 + - numpy >=1.26.0 + - platformdirs + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - requests + license: BSD-3-Clause + license_family: BSD + size: 1107955 + timestamp: 1772626729079 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-blosc2-4.1.2-py313h7d607e3_1.conda + sha256: b6bdbd5557492b2bdc8eef4679836a465fdfe323d4cc6a21ce9255252719985b + md5: 6ec720acdcd47ac7b5f4e7cb738bfb9b + depends: + - __osx >=11.0 + - c-blosc2 >=2.23.1,<2.24.0a0 + - libcxx >=19 + - msgpack-python + - ndindex + - numexpr >=2.12.1 + - numpy >=1.23,<3 + - numpy >=1.26.0 + - platformdirs + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + - requests + license: BSD-3-Clause + license_family: BSD + size: 1018680 + timestamp: 1772626864786 +- 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 + size: 233310 + timestamp: 1751104122689 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.2.1-pyhcf101f3_0.conda + sha256: 5a70a9cbcf48be522c2b82df8c7a57988eed776f159142b0d30099b61f31a35e + md5: f2e88fc463b249bc1f40d9ca969d9b5e + depends: + - python >=3.10 + - filelock >=3.15.4 + - platformdirs <5,>=4.3.6 + - python + license: MIT + license_family: MIT + size: 34137 + timestamp: 1774605818480 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.2-pyhcf101f3_0.conda + sha256: 74e417a768f59f02a242c25e7db0aa796627b5bc8c818863b57786072aeb85e5 + md5: 130584ad9f3a513cdd71b1fdc1244e9c + depends: + - python >=3.10 + license: BSD-3-Clause + license_family: BSD + size: 27848 + timestamp: 1772388605021 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-duckdb-1.3.2-py313h7033f15_0.conda + sha256: 7bf8b0d04c7a13fdec84f349a63d857a7655b1cf0c350d0390722a472d28b018 + md5: 2675d531dcba6deeb2338dbdf4cda7ad + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 24452451 + timestamp: 1752086879946 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-duckdb-1.3.2-py313he352c24_0.conda + sha256: 8ff0a861dc6872acf3503085640c7ecf235d553f9f02d822e39cbc11bb1370ef + md5: e0bf0565bee2eda229a63dee451cba8b + depends: + - libgcc >=14 + - libstdcxx >=14 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 23304777 + timestamp: 1752087381696 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-duckdb-1.3.2-py313h253db18_0.conda + sha256: c73abe4b6eb44c72e50c398a2a607e18b93d86e6026e5a8cd2e43dc95629895f + md5: ab5342a28a5a2b46b43ff0c379e8231a + depends: + - __osx >=10.13 + - libcxx >=19 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 21705609 + timestamp: 1752086431589 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-duckdb-1.3.2-py313hb4b7877_0.conda + sha256: 8c0327f5f2ce592f859a9afb87a8cfdfd96ed1c3d0508dc9e56a8c6bd44dcdca + md5: cbfdd7f449ac91db9bc81ec9ee617e72 + depends: + - __osx >=11.0 + - libcxx >=19 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 19907420 + timestamp: 1752087142088 +- 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 + size: 244628 + timestamp: 1755304154927 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.12-h4df99d1_100.conda + sha256: f306304235197434494355351ac56020a65b7c5c56ff10ca1ed53356d575557a + md5: 3d92938d5b83c49162ade038aab58a59 + depends: + - cpython 3.13.12.* + - python_abi * *_cp313 + license: Python-2.0 + size: 48618 + timestamp: 1770270436560 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-jose-3.5.0-pyhff2d567_0.conda + sha256: 785a3be2b9ce6d2f2f480bf1805c737f17e84c7e6382162eb83aea7d19089b87 + md5: 1b8523e5a0a5809e42c0f53a648efb28 + depends: + - cryptography >=3.4.0 + - ecdsa !=0.15 + - pyasn1 >=0.5.0 + - python >=3.9 + - rsa >=4.0,<5.0,!=4.4,!=4.1.1 + license: MIT + license_family: MIT + size: 76008 + timestamp: 1748530600158 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca + md5: a61bf9ec79426938ff785eb69dbb1960 + depends: + - python >=3.6 + license: BSD-2-Clause + license_family: BSD + size: 13383 + timestamp: 1677079727691 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.8.1-py313h54dd161_0.conda + sha256: cd17129a3d2b5d36e3b463c38acde70e586a2d22349eceb51491a66c5b087ea2 + md5: fc0f3bf6754230961feb255201bae178 + depends: + - python + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 77123 + timestamp: 1771423011743 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-librt-0.8.1-py313h62ef0ea_0.conda + sha256: d11c21ffbc94831bef5510ad19ac9408ff48701aa2d3c63e45fccfc2d925e9d5 + md5: 10745f1b7158b86366f3db1b43aea87e + depends: + - python + - libgcc >=14 + - python 3.13.* *_cp313 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 76652 + timestamp: 1771423032890 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-librt-0.8.1-py313h22ab4a2_0.conda + sha256: 60d6b473e31ca75655e410ce87543f40c04a97ab4337eb107e6aeb1d48da1adc + md5: 9bfe42bc3791f68de8b74e92dcdb0b53 + depends: + - python + - __osx >=11.0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 69125 + timestamp: 1771423064777 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-librt-0.8.1-py313h6688731_0.conda + sha256: a3e6d45f6b180e907d343e2282f93599a3919ccba8dc28dc254a36a17c56fbfa + md5: d81abf0724884470b65ec20b4e610f72 + depends: + - python + - python 3.13.* *_cp313 + - __osx >=11.0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 72953 + timestamp: 1771423111284 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.22-pyhcf101f3_0.conda + sha256: 8275c88b0f138dbd602c53bae9a11789126c6a2c97f7e89f679d3e7ccbb121ba + md5: 5a2610edf297cbd1cbc0e2c17bc47efc + depends: + - python >=3.10 + - python + license: Apache-2.0 + license_family: APACHE + size: 30342 + timestamp: 1769356329419 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.3-pyhd8ed1ab_0.conda + sha256: 467134ef39f0af2dbb57d78cb3e4821f01003488d331a8dd7119334f4f47bfbd + md5: 7ead57407430ba33f681738905278d03 + depends: + - python >=3.10 + license: Apache-2.0 + license_family: APACHE + size: 143542 + timestamp: 1765719982349 +- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda + build_number: 8 + sha256: 210bffe7b121e651419cb196a2a63687b087497595c9be9d20ebe97dd06060a7 + md5: 94305520c52a4aa3f6c2b1ff6008d9f8 + constrains: + - python 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 7002 + timestamp: 1752805902938 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pytokens-0.4.1-py313h54dd161_1.conda + sha256: 543302099bbe6b2e77e8a43894dc3894a0bf47e18ea1b0b21ade196f0bdf1ce7 + md5: 8aafbc11caed472c9f7a174f9925fb94 + depends: + - python + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 277555 + timestamp: 1771613648731 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pytokens-0.4.1-py313h62ef0ea_1.conda + sha256: ba3eba7f5f405f674d45e2c072dda617ac03d9154b19316fd03f1427e64e8799 + md5: 786376d0c67cb309a649076b81c6c99d + depends: + - python + - python 3.13.* *_cp313 + - libgcc >=14 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 273720 + timestamp: 1771613680111 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pytokens-0.4.1-py313h16366db_1.conda + sha256: dcceada5b29687ac1aa6d2e939fca657b82116f772d446e065517390976d16f2 + md5: c4b28b6dfa32d1075b82581ca73011b2 + depends: + - python + - __osx >=10.13 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 167235 + timestamp: 1771613661672 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytokens-0.4.1-py313h6688731_1.conda + sha256: 444367e07857e2aa3743527bec8c10f350bb2afe9aa64471d2967ee53f11736a + md5: 767332a78d1bae3bdaeff9ac780489b7 + depends: + - python + - __osx >=11.0 + - python 3.13.* *_cp313 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 168171 + timestamp: 1771613797349 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py313h3dea7bd_1.conda + sha256: ef7df29b38ef04ec67a8888a4aa039973eaa377e8c4b59a7be0a1c50cd7e4ac6 + md5: f256753e840c3cd3766488c9437a8f8b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + size: 201616 + timestamp: 1770223543730 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.3-py313hd3a54cf_1.conda + sha256: 9dbfdb53af5d27ac2eec5db4995979fdaaea76766d4f01cd3524dd7d24f79fb9 + md5: 14b86e046b0c5c5508602165287dd01c + depends: + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + size: 194182 + timestamp: 1770223431084 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.3-py313h7c6a591_1.conda + sha256: ab5f6c27d24facd1832481ccd8f432c676472d57596a3feaa77880a1462cdb2a + md5: 0eaf6cf9939bb465ee62b17d04254f9e + depends: + - __osx >=10.13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + size: 192051 + timestamp: 1770223971430 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.3-py313h65a2061_1.conda + sha256: 950725516f67c9691d81bb8dde8419581c5332c5da3da10c9ba8cbb1698b825d + md5: 5d0c8b92128c93027632ca8f8dc1190f + depends: + - __osx >=11.0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + size: 188763 + timestamp: 1770224094408 +- 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 + size: 211567 + timestamp: 1771716961404 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-27.1.0-py312hdf0a211_2.conda + noarch: python + sha256: afdff66cb54e22d0d2c682731e08bb8f319dfd93f3cdcff4a4640cb5a8ae2460 + md5: 130d781798bb24a0b86290e65acd50d8 + depends: + - python + - libstdcxx >=14 + - libgcc >=14 + - zeromq >=4.3.5,<4.4.0a0 + - _python_abi3_support 1.* + - cpython >=3.12 + license: BSD-3-Clause + license_family: BSD + size: 212585 + timestamp: 1771716963309 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.1.0-py312h2ac7433_2.conda + noarch: python + sha256: 475d5a751740eef86b4469b73759a42bcf82abb292fde7506081196378552cf3 + md5: 98bc7fb12f6efc9c08eeeac21008a199 + depends: + - python + - __osx >=11.0 + - libcxx >=19 + - _python_abi3_support 1.* + - cpython >=3.12 + - zeromq >=4.3.5,<4.4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 192884 + timestamp: 1771717048943 +- 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 + size: 191641 + timestamp: 1771717073430 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.8.1-h1fbca29_0.conda + sha256: cf550bbc8e5ebedb6dba9ccaead3e07bd1cb86b183644a4c853e06e4b3ad5ac7 + md5: d83958768626b3c8471ce032e28afcd3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + constrains: + - __glibc >=2.17 + license: BSD-2-Clause + license_family: BSD + size: 5595970 + timestamp: 1772540833621 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rav1e-0.8.1-h9d4cc37_0.conda + sha256: b54b0e66d264ce5904862012f08eda155ecfc6520f66a321f9363682fef94c59 + md5: a3c060f1a410865150bb1d59cddf6d7c + depends: + - libgcc >=14 + constrains: + - __glibc >=2.17 + license: BSD-2-Clause + license_family: BSD + size: 5253980 + timestamp: 1772540729272 +- conda: https://conda.anaconda.org/conda-forge/osx-64/rav1e-0.8.1-h618d828_0.conda + sha256: 4286abee88102b8889d2d20e79a51424fcee2aa24aba3d0ea3c5c7ee251d48ca + md5: 19c2d0ae0255c175faec576d43fe9763 + depends: + - __osx >=11.0 + constrains: + - __osx >=10.13 + license: BSD-2-Clause + license_family: BSD + size: 1129893 + timestamp: 1772541463868 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rav1e-0.8.1-h8246384_0.conda + sha256: 925e35b71fe513e0380ecd2fe137e3f4f248bf7ce4bad96946c7c704b7a50d26 + md5: 4706a8a71474c692482c3f86c2175454 + depends: + - __osx >=11.0 + constrains: + - __osx >=11.0 + license: BSD-2-Clause + license_family: BSD + size: 886953 + timestamp: 1772541394570 +- 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 + size: 27469 + timestamp: 1768190052132 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2025.11.05-he0da282_1.conda + sha256: 6839b3f4cbd900e974f62b069f4231d3f7a2c74731ef8fb0b4a858e66f7187ae + md5: 19c3c9412a4a46965c3a057eeefecbef + depends: + - libre2-11 2025.11.05 hc5e897d_1 + license: BSD-3-Clause + license_family: BSD + size: 27491 + timestamp: 1768190008421 +- conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2025.11.05-h77e0585_1.conda + sha256: 1aeb9a9554cc719d454ad6158afbb0c249973fa4ee1d782d7e40cbec1de9b061 + md5: b2cc31f114e4487d24e5617e62a24017 + depends: + - libre2-11 2025.11.05 h6e8c311_1 + license: BSD-3-Clause + license_family: BSD + size: 27447 + timestamp: 1768190352348 +- 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 + size: 27445 + timestamp: 1768190259003 +- 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 + size: 345073 + timestamp: 1765813471974 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.3-hb682ff5_0.conda + sha256: fe695f9d215e9a2e3dd0ca7f56435ab4df24f5504b83865e3d295df36e88d216 + md5: 3d49cad61f829f4f0e0611547a9cda12 + depends: + - libgcc >=14 + - ncurses >=6.5,<7.0a0 + license: GPL-3.0-only + license_family: GPL + size: 357597 + timestamp: 1765815673644 +- conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.3-h68b038d_0.conda + sha256: 4614af680aa0920e82b953fece85a03007e0719c3399f13d7de64176874b80d5 + md5: eefd65452dfe7cce476a519bece46704 + depends: + - __osx >=10.13 + - ncurses >=6.5,<7.0a0 + license: GPL-3.0-only + license_family: GPL + size: 317819 + timestamp: 1765813692798 +- 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 + size: 313930 + timestamp: 1765813902568 +- conda: https://conda.anaconda.org/conda-forge/noarch/redis-py-7.4.0-pyhd8ed1ab_0.conda + sha256: ec4ea5805d1d845159e433c72e04bf9ecc4bb3977285b59006071258a5b6f648 + md5: f03076f8b769d63b42018c739b9d65ee + depends: + - async-timeout >=4.0.3 + - python >=3.10 + license: MIT + license_family: MIT + size: 263076 + timestamp: 1774356425360 +- 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 + size: 51788 + timestamp: 1760379115194 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.33.1-pyhcf101f3_0.conda + sha256: c0249bc4bf4c0e8e06d0e7b4d117a5d593cc4ab2144d5006d6d47c83cb0af18e + md5: 10afbb4dbf06ff959ad25a92ccee6e59 + 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,<6 + license: Apache-2.0 + size: 63712 + timestamp: 1774894783063 +- conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + sha256: 2e4372f600490a6e0b3bac60717278448e323cab1c0fecd5f43f7c56535a99c5 + md5: 36de09a8d3e5d5e6f4ee63af49e59706 + depends: + - python >=3.9 + - six + license: MIT + license_family: MIT + size: 10209 + timestamp: 1733600040800 +- conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + sha256: 2a5b495a1de0f60f24d8a74578ebc23b24aa53279b1ad583755f223097c41c37 + md5: 912a71cc01012ee38e6b90ddd561e36f + depends: + - python + license: MIT + license_family: MIT + size: 7818 + timestamp: 1598024297745 +- conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda + sha256: 70001ac24ee62058557783d9c5a7bbcfd97bd4911ef5440e3f7a576f9e43bc92 + md5: 7234f99325263a5af6d4cd195035e8f2 + depends: + - python >=3.9 + - lark >=1.2.2 + - python + license: MIT + license_family: MIT + size: 22913 + timestamp: 1752876729969 +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda + sha256: b06ce84d6a10c266811a7d3adbfa1c11f13393b91cc6f8a5b468277d90be9590 + md5: 7a6289c50631d620652f5045a63eb573 + 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 + size: 208472 + timestamp: 1771572730357 +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.19.7-pyhcf101f3_0.conda + sha256: 9cf3b9a083ebdee70ef5a48fbe409d91d2a8c4eed3c581a7b33b4d5ca7c813be + md5: 8b1a4d854f9a4ea1e4abc93ccab0ded9 + depends: + - python >=3.10 + - rich >=13.7.1 + - click >=8.1.7 + - typing_extensions >=4.12.2 + - python + license: MIT + license_family: MIT + size: 32484 + timestamp: 1771977622605 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.30.0-py313h843e2db_0.conda + sha256: 076d26e51c62c8ecfca6eb19e3c1febdd7632df1990a7aa53da5df5e54482b1c + md5: 779e3307a0299518713765b83a36f4b1 + depends: + - python + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - python_abi 3.13.* *_cp313 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + size: 383230 + timestamp: 1764543223529 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.30.0-py313h8f1d341_0.conda + sha256: d5bbccdc272401f3db75384a3ebc86402ab0a781dc228d50b363742ef0c44666 + md5: e4f5ae404534848a16d0c40442ff64bc + depends: + - python + - libgcc >=14 + - python_abi 3.13.* *_cp313 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + size: 379877 + timestamp: 1764543343027 +- conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.30.0-py313hcc225dc_0.conda + sha256: 8955e67a30f44fbfd390374ba27f445b9e56818b023ccb8fe8f0cd00bec03caa + md5: 7c8790b86262342a2c4f4c9709cf61ae + depends: + - python + - __osx >=10.13 + - python_abi 3.13.* *_cp313 + constrains: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 370868 + timestamp: 1764543169321 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.30.0-py313h2c089d5_0.conda + sha256: db63344f91e8bfe77703c6764aa9eeafb44d165e286053214722814eabda0264 + md5: 190c2d0d4e98ec97df48cdb74caf44d8 + depends: + - python + - __osx >=11.0 + - python 3.13.* *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 358961 + timestamp: 1764543165314 +- conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda + sha256: e32e94e7693d4bc9305b36b8a4ef61034e0428f58850ebee4675978e3c2e5acf + md5: 58958bb50f986ac0c46f73b6e290d5fe + depends: + - pyasn1 >=0.1.3 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 31709 + timestamp: 1744825527634 +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.7.1-h1cbb8d7_1.conda + sha256: dbbe4ab36b90427f12d69fc14a8b601b6bca4185c6c4dd67b8046a8da9daec03 + md5: 9d978822b57bafe72ebd3f8b527bba71 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - openssl >=3.5.5,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 395083 + timestamp: 1773251675551 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.7.1-h6629d95_1.conda + sha256: 1b0cd55437afac08d1f47eb6daa30b703188c1486df6c0301c9001d036b4825a + md5: 40c64f66ef2b34a189716eeb5081df75 + depends: + - libgcc >=14 + - openssl >=3.5.5,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 360875 + timestamp: 1773251699504 +- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyh5552912_1.conda + sha256: 8fc024bf1a7b99fc833b131ceef4bef8c235ad61ecb95a71a6108be2ccda63e8 + md5: b70e2d44e6aa2beb69ba64206a16e4c6 + depends: + - __osx + - pyobjc-framework-cocoa + - python >=3.10 + - python + license: BSD-3-Clause + license_family: BSD + size: 22519 + timestamp: 1770937603551 +- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyha191276_1.conda + sha256: 59656f6b2db07229351dfb3a859c35e57cc8e8bcbc86d4e501bff881a6f771f1 + md5: 28eb91468df04f655a57bcfbb35fc5c5 + depends: + - __linux + - python >=3.10 + - python + license: BSD-3-Clause + license_family: BSD + size: 24108 + timestamp: 1770937597662 +- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.1-pyh332efcf_0.conda + sha256: 82088a6e4daa33329a30bc26dc19a98c7c1d3f05c0f73ce9845d4eab4924e9e1 + md5: 8e194e7b992f99a5015edbd4ebd38efd + depends: + - python >=3.10 + license: MIT + license_family: MIT + size: 639697 + timestamp: 1773074868565 +- conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_2.conda + sha256: 1d6534df8e7924d9087bd388fbac5bd868c5bf8971c36885f9f016da0657d22b + md5: 83ea3a2ddb7a75c1b09cea582aa4f106 + depends: + - python >=3.10 + license: MIT + license_family: MIT + size: 15018 + timestamp: 1762858315311 +- 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 + size: 18455 + timestamp: 1753199211006 +- 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 + size: 45829 + timestamp: 1762948049098 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.2-he774c54_1.conda + sha256: a8a79c53852fb07286407907402caa5a96b6e22b518c4f010be40647f9ee3726 + md5: 3dec912091fb88614afa0af2712c1362 + depends: + - libgcc >=14 + - libstdcxx >=14 + - libgcc >=14 + license: BSD-3-Clause + license_family: BSD + size: 47096 + timestamp: 1762948094646 +- conda: https://conda.anaconda.org/conda-forge/osx-64/snappy-1.2.2-h01f5ddf_1.conda + sha256: 1525e6d8e2edf32dabfe2a8e2fc8bf2df81c5ef9f0b5374a3d4ccfa672bfd949 + md5: 2e993292ec18af5cd480932d448598cf + depends: + - libcxx >=19 + - __osx >=10.13 + license: BSD-3-Clause + license_family: BSD + size: 40023 + timestamp: 1762948053450 +- 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 + size: 38883 + timestamp: 1762948066818 +- conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.conda + sha256: dce518f45e24cd03f401cb0616917773159a210c19d601c5f2d4e0e5879d30ad + md5: 03fe290994c5e4ec17293cfb6bdce520 + depends: + - python >=3.10 + license: Apache-2.0 + license_family: Apache + size: 15698 + timestamp: 1762941572482 +- 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 + 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 + size: 38187 + timestamp: 1769034509657 +- conda: https://conda.anaconda.org/conda-forge/noarch/sparse-0.18.0-pyhcf101f3_0.conda + sha256: b18229272e7b662f8b3e1be4d768753e7b6e6fdf36c5a82878aeec759c6bfaf5 + md5: c67d2c8ce612c88ece7221fe0b5357f2 + depends: + - python >=3.11 + - numpy >=1.17 + - numba >=0.49 + - python + license: BSD-3-Clause + license_family: BSD + size: 124963 + timestamp: 1771482567549 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.48-py313h54dd161_0.conda + sha256: 0247136c0fac0e3db409647ad6a9e7112c765f96f8b5fa8be1b89230382cb63f + md5: 51a6cb32144ac68479a96d75e3e72bfc + depends: + - python + - greenlet !=0.4.17 + - typing-extensions >=4.6.0 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 3846664 + timestamp: 1772644902869 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sqlalchemy-2.0.48-py313hc37f9cf_0.conda + sha256: cefd626f9d9cfadef4ed9f48d63519df16899617e76ec9c08dbfde3e0b1d679b + md5: eb5d1444f3deb8787413c70a5872c411 + depends: + - python + - greenlet !=0.4.17 + - typing-extensions >=4.6.0 + - libgcc >=14 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 3849664 + timestamp: 1772645119064 +- conda: https://conda.anaconda.org/conda-forge/osx-64/sqlalchemy-2.0.48-py313h22ab4a2_0.conda + sha256: 451ff654daddf5743c78e30270c5c2e8ea668503c17138827dd5fbb2fff372a7 + md5: 13494380f3ac4725041c182dc9821ae3 + depends: + - python + - greenlet !=0.4.17 + - typing-extensions >=4.6.0 + - __osx >=11.0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 3837102 + timestamp: 1772644920192 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlalchemy-2.0.48-py313h6688731_0.conda + sha256: 9f5f536db291974430b2a498ab522ba1a77ffdab220d0c3532a0d3355db2d578 + md5: d96ecd4ad18488b26b4c599df74772d9 + depends: + - python + - greenlet !=0.4.17 + - typing-extensions >=4.6.0 + - python 3.13.* *_cp313 + - __osx >=11.0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 3841074 + timestamp: 1772644992763 +- 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 + size: 26988 + timestamp: 1733569565672 +- conda: https://conda.anaconda.org/conda-forge/noarch/stamina-25.2.0-pyhd8ed1ab_0.conda + sha256: 4bf4b5cf5361438de472ae8771c9490c61f2b75ff049580f99d0ff5bdbc7b203 + md5: 098c0d9bdd383d77001e639efe90c35b + depends: + - python >=3.10 + - tenacity + - typing_extensions + license: MIT + license_family: MIT + size: 21853 + timestamp: 1765576612116 +- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-1.0.0-pyhcf101f3_0.conda + sha256: 1a1dc376e95491f4b2003f4428e6f7caf4a3de0ef9869248b29dcc9704c34b39 + md5: 8fbd5b6879350f1b5303c1a652d4b781 + depends: + - anyio >=3.6.2,<5 + - python >=3.10 + - typing_extensions >=4.10.0 + - python + license: BSD-3-Clause + license_family: BSD + size: 63717 + timestamp: 1774215956101 +- 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 + size: 2619743 + timestamp: 1769664536467 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-4.0.1-hfae3067_0.conda + sha256: 6518e4575e83e38b07460f504b6467124f9a16e4d368af42ca54a69603002078 + md5: 943fcd76194904358b2587d627ee6388 + depends: + - libgcc >=14 + - libstdcxx >=14 + license: BSD-2-Clause + license_family: BSD + size: 2042800 + timestamp: 1769668627820 +- conda: https://conda.anaconda.org/conda-forge/osx-64/svt-av1-4.0.1-h991f03e_0.conda + sha256: 5f8c150f558437364bfe6dade1a81cf1b3fe8ba291d8d8db01f889c32a310f08 + md5: 111339b9431e9de1e37ffa8e53040609 + depends: + - __osx >=10.13 + - libcxx >=19 + license: BSD-2-Clause + license_family: BSD + size: 2364161 + timestamp: 1769664663364 +- 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 + size: 1456245 + timestamp: 1769664727051 +- 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 + size: 19397 + timestamp: 1762956379123 +- conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.4-pyhcf101f3_0.conda + sha256: 32e75900d6a094ffe4290a8c9f1fa15744d9da8ff617aba4acaa0f057a065c34 + md5: 043f0599dc8aa023369deacdb5ac24eb + depends: + - python >=3.10 + - python + license: Apache-2.0 + license_family: APACHE + size: 31404 + timestamp: 1770510172846 +- conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyhc90fa1f_1.conda + sha256: 6b6727a13d1ca6a23de5e6686500d0669081a117736a87c8abf444d60c1e40eb + md5: 17b43cee5cc84969529d5d0b0309b2cb + depends: + - __unix + - ptyprocess + - python >=3.10 + - tornado >=6.1.0 + - python + license: BSD-2-Clause + license_family: BSD + size: 24749 + timestamp: 1766513766867 +- conda: https://conda.anaconda.org/conda-forge/noarch/tifffile-2026.3.3-pyhd8ed1ab_0.conda + sha256: da24795c3000566167fbb51c0933acd7a46fe2661375ad4d8a1748aab2bc9537 + md5: cecacab21bc8f4ed17fac11bc8b08cf0 + depends: + - imagecodecs >=2025.11.11 + - numpy >=1.19.2 + - python >=3.11 + constrains: + - matplotlib-base >=3.3 + license: BSD-3-Clause + license_family: BSD + size: 193137 + timestamp: 1772701074188 +- conda: https://conda.anaconda.org/conda-forge/noarch/tiled-0.2.8-pyhd8ed1ab_0.conda + sha256: 2c7e6996302b5dd9b5cea13e770727760da33527f4d6318a312cf0671f410189 + md5: 0a109935ab2a49df2284fbda63f95068 + depends: + - python >=3.10 + - tiled-client 0.2.8 pyhd8ed1ab_0 + - tiled-formats 0.2.8 pyhd8ed1ab_0 + - tiled-server 0.2.8 pyhd8ed1ab_0 + license: BSD-3-Clause + license_family: BSD + size: 9162 + timestamp: 1772227286947 +- conda: https://conda.anaconda.org/conda-forge/noarch/tiled-base-0.2.8-pyhd8ed1ab_0.conda + sha256: 07420a32273ae0adba7f17a6f75e670185ff94e1db6b75f3604e7b9e7027a8f4 + md5: fdcdeb367ac469972ab11a59ea079a6c + depends: + - appdirs + - awkward + - click !=8.1.0 + - dask + - httpx >=0.20.0 + - json-merge-patch + - jsonpatch + - jsonschema + - lz4 + - msgpack-python >=1.0.0 + - ndindex + - numpy + - orjson + - pandas + - pyarrow + - pydantic-settings >=2,<2.12.0 + - python >=3.10 + - python-blosc2 + - pyyaml + - sparse >=0.13.0 + - typer + - xarray + - zstandard + license: BSD-3-Clause + license_family: BSD + size: 1420340 + timestamp: 1772227233161 +- conda: https://conda.anaconda.org/conda-forge/noarch/tiled-client-0.2.8-pyhd8ed1ab_0.conda + sha256: 788c8c41201796c32eadda15533c5128bc11e1c80cad430d85d7cf3a62095bf0 + md5: 844349e9ed4dd15ef5e99899b96ff27d + depends: + - entrypoints + - platformdirs + - pydantic + - python >=3.10 + - rich + - stamina + - tiled-base 0.2.8 pyhd8ed1ab_0 + - websockets + license: BSD-3-Clause + license_family: BSD + size: 8658 + timestamp: 1772227247543 +- conda: https://conda.anaconda.org/conda-forge/noarch/tiled-formats-0.2.8-pyhd8ed1ab_0.conda + sha256: ff569d1fd67e967327f6d4bb1fa20cdfdcac97767abe728ab719f06a4e87b1d8 + md5: 7d73265af3c74d0332d7040992833b26 + depends: + - h5netcdf + - h5py + - hdf5plugin + - openpyxl + - pillow + - python >=3.10 + - tifffile + - tiled-base 0.2.8 pyhd8ed1ab_0 + license: BSD-3-Clause + license_family: BSD + size: 8516 + timestamp: 1772227260510 +- conda: https://conda.anaconda.org/conda-forge/noarch/tiled-server-0.2.8-pyhd8ed1ab_0.conda + sha256: d8788265124e7dffeb6dad4d36994d80dcd4938b281d6758479965872e03bfcb + md5: c25fd3e4cc54e28cbcbd3f042f3960e0 + depends: + - adbc-driver-manager + - adbc-driver-postgresql + - adbc-driver-sqlite + - aiofiles + - aiosqlite + - alembic + - anyio + - asgi-correlation-id + - asyncpg + - cachetools + - canonicaljson + - fastapi >=0.122.0 + - jinja2 + - jmespath + - minio + - obstore + - openpyxl + - packaging + - prometheus_client + - pydantic >=2,<3 + - python >=3.10 + - python-dateutil + - python-duckdb <1.4.0 + - python-jose + - python-multipart + - redis-py + - sqlalchemy + - stamina + - starlette >=0.48.0 + - tiled-base 0.2.8 pyhd8ed1ab_0 + - toolz + - uvicorn + - watchfiles + - zarr + license: BSD-3-Clause + license_family: BSD + size: 9007 + timestamp: 1772227273685 +- 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 + size: 28285 + timestamp: 1729802975370 +- 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 + size: 3301196 + timestamp: 1769460227866 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h0dc03b3_103.conda + sha256: e25c314b52764219f842b41aea2c98a059f06437392268f09b03561e4f6e5309 + md5: 7fc6affb9b01e567d2ef1d05b84aa6ed + depends: + - libgcc >=14 + - libzlib >=1.3.1,<2.0a0 + constrains: + - xorg-libx11 >=1.8.12,<2.0a0 + license: TCL + license_family: BSD + size: 3368666 + timestamp: 1769464148928 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h7142dee_3.conda + sha256: 7f0d9c320288532873e2d8486c331ec6d87919c9028208d3f6ac91dc8f99a67b + md5: 6e6efb7463f8cef69dbcb4c2205bf60e + depends: + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 + license: TCL + license_family: BSD + size: 3282953 + timestamp: 1769460532442 +- 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 + size: 3127137 + timestamp: 1769460817696 +- 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 + size: 21561 + timestamp: 1774492402955 +- 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 + size: 53978 + timestamp: 1760707830681 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.5-py313h07c4f96_0.conda + sha256: 9e8497e1ecca77d03c6be2d3b5f901dfe0ab99686af4fb94ab418b7d449ac547 + md5: 6c0b0ae017b5bfd9c8d718217efd8f14 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: Apache + size: 882996 + timestamp: 1774358035145 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.5.5-py313he149459_0.conda + sha256: a7e81ec39fdbf383eae736e90b14c2ca8c4135898d8591e38e548199e1e8cd0d + md5: 72cdaf3d2963ec20c0b54154fe871985 + depends: + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: Apache + size: 883411 + timestamp: 1774359392374 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.5-py313hf59fe81_0.conda + sha256: 56aa23963d1b239505503292be6b7626a94bb37264cbeeada85c224615c23c0a + md5: 0e435c1a2ef13ac7b12d7cffe408d7af + depends: + - __osx >=11.0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: Apache + size: 882579 + timestamp: 1774358602446 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.5-py313h0997733_0.conda + sha256: c5b0ee042d8a0b88a3823226dc95b794c042c498aee330aa9b4d78bfad01d099 + md5: 303333dd882dfeb303cc8bfac178464b + depends: + - __osx >=11.0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: Apache + size: 883472 + timestamp: 1774358832451 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.24.0-pyhcf101f3_0.conda + sha256: e1116d08e6a55b2b42a090130c268f75211ad8e6a8e7749e977924de3864d487 + md5: 10870929f587540c5802cd9b071cba5c + depends: + - annotated-doc >=0.0.2 + - click >=8.2.1 + - python >=3.10 + - rich >=12.3.0 + - shellingham >=1.3.0 + - python + license: MIT + license_family: MIT + size: 117860 + timestamp: 1771292312899 +- 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 + size: 91383 + timestamp: 1756220668932 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda + sha256: 70db27de58a97aeb7ba7448366c9853f91b21137492e0b4430251a1870aa8ff4 + md5: a0a4a3035667fc34f29bfbd5c190baa6 + depends: + - python >=3.10 + - typing_extensions >=4.12.0 + license: MIT + license_family: MIT + size: 18923 + timestamp: 1764158430324 +- 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 + size: 51692 + timestamp: 1756220668932 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + sha256: 3088d5d873411a56bf988eee774559335749aed6f6c28e07bf933256afb9eb6c + md5: f6d7aa696c67756a650e91e15e88223c + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 15183 + timestamp: 1733331395943 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + sha256: 1d30098909076af33a35017eed6f2953af1c769e273a0626a04722ac4acaba3c + md5: ad659d0a2b3e47e38d829aa8cad2d610 + license: LicenseRef-Public-Domain + size: 119135 + timestamp: 1767016325805 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.1.0-py313h7037e92_0.conda + sha256: 7f2e4f38e57c17858c644259a1be868d6e98780239fd93bfa057cb5cfc24a928 + md5: cb423e0853b3dde2b3738db4dedf5ba2 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi + - libgcc >=14 + - libstdcxx >=14 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 14910 + timestamp: 1769438729201 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ukkonen-1.1.0-py313he6111f0_0.conda + sha256: 7fcc5fbdceea2c245631c4b0aa55499aea28d058e8a01136b85831ec2d2ff4e5 + md5: 813f281ae98f4d277ae5d65f49c4bf06 + depends: + - cffi + - libgcc >=14 + - libstdcxx >=14 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 15686 + timestamp: 1769438766961 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.1.0-py313h252b9d7_0.conda + sha256: 201d026c60bbbdd7c9bf9b3c61f807711ba24a9899a1b7f8a978b507d44d7efa + md5: e6ab56e180655e23353afea13caebc44 + depends: + - __osx >=10.13 + - cffi + - libcxx >=19 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 14202 + timestamp: 1769439075795 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.1.0-py313h5c29297_0.conda + sha256: d28d0242d3fa23784630c775d5b628ce25e2d45f5d3f1cfcdc3815bc954073fa + md5: 43b1eb729bd1cd9ea595548eb8100b65 + depends: + - __osx >=11.0 + - cffi + - libcxx >=19 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 14773 + timestamp: 1769439197815 +- conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + sha256: e0eb6c8daf892b3056f08416a96d68b0a358b7c46b99c8a50481b22631a4dfc0 + md5: e7cb0f5745e4c5035a460248334af7eb + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 23990 + timestamp: 1733323714454 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda + sha256: af641ca7ab0c64525a96fd9ad3081b0f5bcf5d1cbb091afb3f6ed5a9eee6111a + md5: 9272daa869e03efe68833e3dc7a02130 + 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 + size: 103172 + timestamp: 1767817860341 +- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.42.0-pyhc90fa1f_0.conda + sha256: f6522b921e7434775cd283c9b2382e5344db226e58bd36b294a1553700d0d1f9 + md5: c6ad593e48d81ab822b7ac6b9b054a0d + depends: + - __unix + - click >=7.0 + - h11 >=0.8 + - python >=3.10 + - typing_extensions >=4.0 + - python + license: BSD-3-Clause + license_family: BSD + size: 54908 + timestamp: 1773659868807 +- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.42.0-h76e4700_0.conda + sha256: 98f2619d66c477745272b8ec10dd4737055848372a007af3228bb9fb1547e894 + md5: 6eb0881849490cee741779c698f68d45 + depends: + - __unix + - uvicorn ==0.42.0 pyhc90fa1f_0 + - websockets >=10.4 + - httptools >=0.6.3 + - watchfiles >=0.20 + - python-dotenv >=0.13 + - pyyaml >=5.1 + - uvloop >=0.15.1 + license: BSD-3-Clause + license_family: BSD + size: 4141 + timestamp: 1773659868807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.22.1-py313h07c4f96_1.conda + sha256: 77a220ecf6c1467f94d6adda5fb1296f558f3f3044842dc0a52881eab5908dc0 + md5: 266caaa8701a13482ea924a77897b1e4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libuv >=1.51.0,<2.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT OR Apache-2.0 + size: 590601 + timestamp: 1762472969139 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.22.1-py313h6194ac5_1.conda + sha256: 707044205742d8df718d95538237910a18a9569dcdab304c1084389adb0d85d2 + md5: f19474201f37c32ec2043d6cec93f0b4 + depends: + - libgcc >=14 + - libuv >=1.51.0,<2.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: MIT OR Apache-2.0 + size: 546630 + timestamp: 1762472897860 +- conda: https://conda.anaconda.org/conda-forge/osx-64/uvloop-0.22.1-py313hf050af9_1.conda + sha256: 962b436ee710fd353cf420ed538c35376d3b5d5cd58655755396001b0c38b5ef + md5: 7133d80ca7ffd5d6538a8fbaf8d32c20 + depends: + - __osx >=10.13 + - libuv >=1.51.0,<2.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT OR Apache-2.0 + size: 506247 + timestamp: 1762473096616 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.22.1-py313h6535dbc_1.conda + sha256: 472568a70c0fb349b80af50e1a589f02b5a78a8fbe3ed1a9524dd7675750a677 + md5: 429a325aacea5f82b8af3a7fd7ad0220 + depends: + - __osx >=11.0 + - libuv >=1.51.0,<2.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: MIT OR Apache-2.0 + size: 487912 + timestamp: 1762473054199 +- conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.2.0-pyhcf101f3_0.conda + sha256: b83246d145ba0e6814d2ed0b616293e56924e6c7d6649101f5a4f97f9e757ed1 + md5: 704c22301912f7e37d0a92b2e7d5942d + 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 + size: 4647775 + timestamp: 1773133660203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.1.1-py313h5c7d99a_0.conda + sha256: 11a07764137af9bcf29e9e26671c1be1ea1302f7dd7075a4d41481489883eaff + md5: 9373034735566df29779429f0c0de511 + depends: + - __glibc >=2.17,<3.0.a0 + - anyio >=3.0.0 + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + size: 420641 + timestamp: 1760456759391 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.1.1-py313he77ad87_0.conda + sha256: 2bd26b15aac02063e469b2efbb7efc5499347940329011f6f8d40b287e1caa15 + md5: f276ef02ff6365c220d9f0a917c3b31f + depends: + - anyio >=3.0.0 + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + size: 411329 + timestamp: 1760456814453 +- conda: https://conda.anaconda.org/conda-forge/osx-64/watchfiles-1.1.1-py313ha265c4a_0.conda + sha256: 7763e5704bbb0c0a69e47542bed8cda8f328710b6427da20bcdcb4bf3affe1d4 + md5: 08bf0d738516aedd4d22d163e7f80926 + depends: + - __osx >=10.13 + - anyio >=3.0.0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 377651 + timestamp: 1760457095573 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.1.1-py313h0b74987_0.conda + sha256: 6c3bb78efbaa8aa616ef9fe8ddb14dd2a3d06324f6c6f38f80f4653c7961b402 + md5: c059753f94e279e722fec0532d28b390 + depends: + - __osx >=11.0 + - anyio >=3.0.0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 364700 + timestamp: 1760457647108 +- conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.6.0-pyhd8ed1ab_0.conda + sha256: e298b508b2473c4227206800dfb14c39e4b14fd79d4636132e9e1e4244cdf4aa + md5: c3197f8c0d5b955c904616b716aca093 + depends: + - python >=3.10 + license: MIT + license_family: MIT + size: 71550 + timestamp: 1770634638503 +- conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-25.10.0-pyhd8ed1ab_0.conda + sha256: 21f6c8a20fe050d09bfda3fb0a9c3493936ce7d6e1b3b5f8b01319ee46d6c6f6 + md5: 6639b6b0d8b5a284f027a2003669aa65 + depends: + - python >=3.10 + license: BSD-3-Clause + license_family: BSD + size: 18987 + timestamp: 1761899393153 +- 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 + size: 15496 + timestamp: 1733236131358 +- conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.9.0-pyhd8ed1ab_0.conda + sha256: 42a2b61e393e61cdf75ced1f5f324a64af25f347d16c60b14117393a98656397 + md5: 2f1ed718fcd829c184a6d4f0f2e07409 + depends: + - python >=3.10 + license: Apache-2.0 + license_family: APACHE + size: 61391 + timestamp: 1759928175142 +- conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-16.0-py313h54dd161_1.conda + sha256: d34ed37a2164ec741d9bf067ce17496c97ee39bee826a8164a6ab226ab67826a + md5: 2181c860102f18623f51760d7bccec35 + depends: + - python + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 367335 + timestamp: 1768087395845 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-16.0-py313h62ef0ea_1.conda + sha256: 9bd2d2ecc82c7d2d2d3dfb517ae9455e86ac0f7894df116f4d87f2314bd9bf74 + md5: f8d99c863f246f225d7eb696e4a69061 + depends: + - python + - libgcc >=14 + - python 3.13.* *_cp313 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 371783 + timestamp: 1768087403426 +- conda: https://conda.anaconda.org/conda-forge/osx-64/websockets-16.0-py313h16366db_1.conda + sha256: 30ab1bda72bb5d1d61e93494e858e8d6bb38ff95186d239f9c1309297a670c90 + md5: 4eaff37b51c95866f20b005da4f18cc7 + depends: + - python + - __osx >=10.13 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 368194 + timestamp: 1768087405219 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-16.0-py313h6688731_1.conda + sha256: 79b6b445dd9848077963cf7fa5214ba17c6084128419affd51f91d0cd7e7d5ae + md5: 2491c4cb83885c7905941c97b3473d78 + depends: + - python + - python 3.13.* *_cp313 + - __osx >=11.0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 371508 + timestamp: 1768087394531 +- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.1.2-py313h07c4f96_0.conda + sha256: f3c3647092eb58ee2a2fa000c32d7650ff5154d89c6810b69fb6dcda5238e221 + md5: 4adff3c0154b23cbaad7917cd929c41e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-2-Clause + license_family: BSD + size: 88686 + timestamp: 1772794812449 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-2.1.2-py313h6194ac5_0.conda + sha256: 442b96b3cc51eccc893fe504b2b8725cb821731c2b4237e3f94db2c937594744 + md5: e6fb5baa7faf555c7aa05bd60b17d5d8 + depends: + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: BSD-2-Clause + license_family: BSD + size: 88805 + timestamp: 1772794854313 +- conda: https://conda.anaconda.org/conda-forge/osx-64/wrapt-2.1.2-py313hf59fe81_0.conda + sha256: a57f98b175c17cd5e1795129a7358bd688c2762b5d4a6c5809145bcd29d48435 + md5: 7f40a21e6319c0b68e6bada3864caea6 + depends: + - __osx >=11.0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-2-Clause + license_family: BSD + size: 84573 + timestamp: 1772794979701 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-2.1.2-py313h0997733_0.conda + sha256: 783ea9fdbc29e3658261ed3f3695948db5fe0cebbb42bc541dc7e77c8e7b6968 + md5: 5dc4bd4bdb7fe2b2714db43f82a48689 + depends: + - __osx >=11.0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: BSD-2-Clause + license_family: BSD + size: 85132 + timestamp: 1772795528446 +- conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2026.2.0-pyhcf101f3_0.conda + sha256: 1d49f2c80c63913c5a9a525b64434a30cf1386502d0f24607db61bd46fa36a40 + md5: b1b3a2477c1b888f15bbef01d7a9615f + depends: + - python >=3.11 + - numpy >=1.26 + - packaging >=24.1 + - 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 + size: 1011911 + timestamp: 1771083999178 +- 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 + size: 15321 + timestamp: 1762976464266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-he30d5cf_1.conda + sha256: e9f6e931feeb2f40e1fdbafe41d3b665f1ab6cb39c5880a1fcf9f79a3f3c84a5 + md5: 1c246e1105000c3660558459e2fd6d43 + depends: + - libgcc >=14 + license: MIT + license_family: MIT + size: 16317 + timestamp: 1762977521691 +- conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.12-h8616949_1.conda + sha256: 928f28bd278c7da674b57d71b2e7f4ac4e7c7ce56b0bf0f60d6a074366a2e76d + md5: 47f1b8b4a76ebd0cd22bd7153e54a4dc + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 13810 + timestamp: 1762977180568 +- 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 + size: 14105 + timestamp: 1762976976084 +- 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 + size: 20591 + timestamp: 1762976546182 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-he30d5cf_1.conda + sha256: 128d72f36bcc8d2b4cdbec07507542e437c7d67f677b7d77b71ed9eeac7d6df1 + md5: bff06dcde4a707339d66d45d96ceb2e2 + depends: + - libgcc >=14 + license: MIT + license_family: MIT + size: 21039 + timestamp: 1762979038025 +- conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.5-h8616949_1.conda + sha256: b7b291cc5fd4e1223058542fca46f462221027779920dd433d68b98e858a4afc + md5: 435446d9d7db8e094d2c989766cfb146 + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 19067 + timestamp: 1762977101974 +- 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 + size: 19156 + timestamp: 1762977035194 +- 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 + size: 51732 + timestamp: 1774900074457 +- 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 + size: 85189 + timestamp: 1753484064210 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-h80f16a2_3.conda + sha256: 66265e943f32ce02396ad214e27cb35f5b0490b3bd4f064446390f9d67fa5d88 + md5: 032d8030e4a24fe1f72c74423a46fb88 + depends: + - libgcc >=14 + license: MIT + license_family: MIT + size: 88088 + timestamp: 1753484092643 +- conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h4132b18_3.conda + sha256: a335161bfa57b64e6794c3c354e7d49449b28b8d8a7c4ed02bf04c3f009953f9 + md5: a645bb90997d3fc2aea0adf6517059bd + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 79419 + timestamp: 1753484072608 +- 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 + size: 83386 + timestamp: 1753484079473 +- conda: https://conda.anaconda.org/conda-forge/noarch/zarr-3.1.5-pyhcf101f3_0.conda + sha256: c36bec7d02d2f227409fcc4cf586cf3a658af068b58374de7f8f2d0b5c1c84f9 + md5: c1844a94b2be61bb03bbb71574a0abfc + depends: + - python >=3.11 + - packaging >=22.0 + - numpy >=1.26 + - numcodecs >=0.14 + - typing_extensions >=4.9 + - donfig >=0.8 + - google-crc32c >=1.5 + - python + constrains: + - fsspec >=2023.10.0 + - obstore >=0.5.1 + license: MIT + license_family: MIT + size: 305998 + timestamp: 1763742695201 +- 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 + size: 311150 + timestamp: 1772476812121 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-hc0523f8_10.conda + sha256: 32f77d565687a8241ebfb66fe630dcb197efc84f6a8b59df8260b1191b7deb2c + md5: ac79d51c73c8fbe6ef6e9067191b7f1a + depends: + - libgcc >=14 + - libstdcxx >=14 + - libsodium >=1.0.21,<1.0.22.0a0 + - krb5 >=1.22.2,<1.23.0a0 + license: MPL-2.0 + license_family: MOZILLA + size: 350773 + timestamp: 1772476818466 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h27d9b8f_10.conda + sha256: c7265cc5184897358af8b87c614288bc79645ef4340e01c2cd8469078dc56007 + md5: 1a774dcaff94c2dd98451a26a46714b8 + depends: + - libcxx >=19 + - __osx >=11.0 + - libsodium >=1.0.21,<1.0.22.0a0 + - krb5 >=1.22.2,<1.23.0a0 + license: MPL-2.0 + license_family: MOZILLA + size: 260841 + timestamp: 1772476936933 +- 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 + size: 245246 + timestamp: 1772476886668 +- 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 + size: 277694 + timestamp: 1766549572069 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zfp-1.0.1-h05c1e92_5.conda + sha256: 25200bf068eb299ff9e6cdeeef528298bc11a82a6b43a1360dead2bd7d8f7a0e + md5: 0809f7fc3fe01142d0d1920bbe3b63c3 + depends: + - _openmp_mutex >=4.5 + - libgcc >=14 + - libstdcxx >=14 + license: BSD-3-Clause + license_family: BSD + size: 248846 + timestamp: 1766552554324 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zfp-1.0.1-h1b13a81_4.conda + sha256: fa9f5df5c864abe1360633029789c9d54881d75752e064d0b76ea0ba578cbff6 + md5: ab3f885d2b4f24cdcbc91926f3ad9301 + depends: + - __osx >=10.13 + - libcxx >=19 + - llvm-openmp >=19.1.7 + license: BSD-3-Clause + license_family: BSD + size: 211942 + timestamp: 1766458562226 +- 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 + size: 204043 + timestamp: 1766549790975 +- 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 + size: 36341 + timestamp: 1733261642963 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda + sha256: b4533f7d9efc976511a73ef7d4a2473406d7f4c750884be8e8620b0ce70f4dae + md5: 30cd29cb87d819caead4d55184c1d115 + depends: + - python >=3.10 + - python + license: MIT + license_family: MIT + size: 24194 + timestamp: 1764460141901 +- 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 + size: 95931 + timestamp: 1774072620848 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.2-hdc9db2a_2.conda + sha256: d651731b45f2d84591881da3ce3e4107a9ba6709fe790dbd5f7b8d9c89a02ed7 + md5: 493587274c81b34d198b085b46a86eaa + depends: + - libzlib 1.3.2 hdc9db2a_2 + license: Zlib + license_family: Other + size: 100515 + timestamp: 1774072641977 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.2-hbb4bfdb_2.conda + sha256: 5dd728cebca2e96fa48d41661f1a35ed0ee3cb722669eee4e2d854c6745655eb + md5: 6276aa61ffc361cbf130d78cfb88a237 + depends: + - __osx >=11.0 + - libzlib 1.3.2 hbb4bfdb_2 + license: Zlib + license_family: Other + size: 92411 + timestamp: 1774073075482 +- 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 + size: 81123 + timestamp: 1774072974535 +- 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 + size: 122618 + timestamp: 1770167931827 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-ng-2.3.3-ha7cb516_1.conda + sha256: 638a3a41a4fbfed52d3c60c8ef5a3693b3f12a5b1a3f58fa29f5698d0a0702e2 + md5: f731af71c723065d91b4c01bb822641b + depends: + - libgcc >=14 + - libstdcxx >=14 + license: Zlib + license_family: Other + size: 121046 + timestamp: 1770167944449 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-ng-2.3.3-h8bce59a_1.conda + sha256: 4a1beb656761c7d8c9a53474bfd3932c30d82af5d93a32b8ef626c01c059d981 + md5: b3ecb6480fd46194e3f7dd0ff4445dff + depends: + - __osx >=10.13 + - libcxx >=19 + license: Zlib + license_family: Other + size: 120464 + timestamp: 1770168263684 +- 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 + size: 94375 + timestamp: 1770168363685 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.25.0-py313h54dd161_1.conda + sha256: e6921de3669e1bbd5d050a3b771b46a887e7f4ffeb1ddd5e4d9fb01062a2f6e9 + md5: 710d4663806d0f72b2fb414e936223b5 + depends: + - python + - cffi >=1.11 + - zstd >=1.5.7,<1.5.8.0a0 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - python_abi 3.13.* *_cp313 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 471496 + timestamp: 1762512679097 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.25.0-py313h62ef0ea_1.conda + sha256: 4c7cf2116538200ce4ed2faac831b1bea7c5c73343ce0576e695361b52fe86a4 + md5: 16c5b3d2874e1b5162a114565bb20a8f + depends: + - python + - cffi >=1.11 + - zstd >=1.5.7,<1.5.8.0a0 + - libgcc >=14 + - python 3.13.* *_cp313 + - python_abi 3.13.* *_cp313 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 464061 + timestamp: 1762512695211 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.25.0-py313hcb05632_1.conda + sha256: eed36460cfd4afdcb5e3dbca1f493dd9251e90ad793680064efdeb72d95f16a0 + md5: da657125cfc67fe18e4499cf88dbe512 + depends: + - python + - cffi >=1.11 + - zstd >=1.5.7,<1.5.8.0a0 + - __osx >=10.13 + - python_abi 3.13.* *_cp313 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 468984 + timestamp: 1762512716065 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.25.0-py313h9734d34_1.conda + sha256: c8525ae1a739db3c9b4f901d08fd7811402cf46b61ddf5d63419a3c533e02071 + md5: 7ac13a947d4d9f57859993c06faf887b + depends: + - python + - cffi >=1.11 + - zstd >=1.5.7,<1.5.8.0a0 + - __osx >=11.0 + - python 3.13.* *_cp313 + - zstd >=1.5.7,<1.6.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 396449 + timestamp: 1762512722894 +- 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 + size: 601375 + timestamp: 1764777111296 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda + sha256: 569990cf12e46f9df540275146da567d9c618c1e9c7a0bc9d9cfefadaed20b75 + md5: c3655f82dcea2aa179b291e7099c1fcc + depends: + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 614429 + timestamp: 1764777145593 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h3eecb57_6.conda + sha256: 47101a4055a70a4876ffc87b750ab2287b67eca793f21c8224be5e1ee6394d3f + md5: 727109b184d680772e3122f40136d5ca + depends: + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 528148 + timestamp: 1764777156963 +- 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 + size: 433413 + timestamp: 1764777166076 diff --git a/pixi.toml b/pixi.toml index e6a36af..c1a9dd8 100644 --- a/pixi.toml +++ b/pixi.toml @@ -1,30 +1,34 @@ -# pixi.toml -# Project environments for als_tiled -[project] +[workspace] name = "als_tiled" channels = ["conda-forge"] +platforms = ["linux-64", "osx-64", "osx-arm64", "linux-aarch64"] -[environments.dev] -dependencies = [ - "python =3.11", - "pytest", - "mypy", - "ipython", - "notebook", - "tiled", - "fabio", - "zarr", - "numpy", - "pandas" -] +[environments.default] +features = ["bl733"] -[environments.bl733] -dependencies = [ - "python =3.11", - "tiled", - "fabio", - "zarr", - "numpy", - "pandas" -] +[dependencies] +python = "3.13.*" +pytest = "*" +pytest-cov = "*" +pytest-asyncio = "*" +mypy = "*" +ipython = "*" +notebook = "*" +tiled = "*" +fabio = "*" +zarr = "*" +numpy = "*" +pandas = "*" +black = "*" +isort = "*" +flake8 = "*" +pre-commit = "*" + +[feature.bl733.dependencies] +fabio = "*" + +[tasks] +test = "pytest --cov=splash_tiled --cov-report=term-missing" +lint = "flake8 src tests && black --check src tests && isort --check-only src tests && mypy src" +format = "black src tests && isort src tests" diff --git a/pyproject.toml b/pyproject.toml index d69773f..c07885f 100755 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,22 +26,6 @@ dependencies = [ ] [project.optional-dependencies] -dev = [ - "pytest>=7.0", - "pytest-cov", - "pytest-asyncio", - "black", - "isort", - "flake8", - "mypy", - "pre-commit", -] -test = [ - "pytest>=7.0", - "pytest-cov", - "pytest-asyncio", - "splash_tiled[bl733,tiled-all]", -] tiled-all = [ "tiled[all]>=0.2.8", ] diff --git a/pytest.ini b/pytest.ini new file mode 100644 index 0000000..fcccae1 --- /dev/null +++ b/pytest.ini @@ -0,0 +1,2 @@ +[pytest] +pythonpath = src From 8275c1c6742eb68526191e79ff023f84ea956bf0 Mon Sep 17 00:00:00 2001 From: Dylan McReynolds Date: Sat, 4 Apr 2026 17:48:24 -0700 Subject: [PATCH 06/31] added scripts for compiling tags from useroffice calls --- .dockerignore | 3 + .gitignore | 2 + README.md | 18 + pixi.lock | 13 + pixi.toml | 8 + pyproject.toml | 5 + src/splash_tiled/access_control/__init__.py | 0 .../access_control/tag_definitions.yml | 24 + src/splash_tiled/access_control/tiled_tags.py | 258 +++++++ .../access_control/user_office.py | 643 ++++++++++++++++++ tests/test_tiled_tags.py | 295 ++++++++ tests/test_user_office.py | 166 +++++ 12 files changed, 1435 insertions(+) create mode 100644 src/splash_tiled/access_control/__init__.py create mode 100644 src/splash_tiled/access_control/tag_definitions.yml create mode 100644 src/splash_tiled/access_control/tiled_tags.py create mode 100644 src/splash_tiled/access_control/user_office.py create mode 100644 tests/test_tiled_tags.py create mode 100644 tests/test_user_office.py diff --git a/.dockerignore b/.dockerignore index f4c1ff7..bc7b173 100755 --- a/.dockerignore +++ b/.dockerignore @@ -77,3 +77,6 @@ docs/ # CI/CD .github/ + +*.sqlite3 +tag_definitions.generated.yml diff --git a/.gitignore b/.gitignore index 4b67674..90785cd 100755 --- a/.gitignore +++ b/.gitignore @@ -181,3 +181,5 @@ ehthumbs.db *.hdf5 *.nc *.zarr/ +*.sqlite3 +tag_definitions.generated.yml diff --git a/README.md b/README.md index d3874b1..9744e4b 100755 --- a/README.md +++ b/README.md @@ -189,6 +189,24 @@ The application can be configured through environment variables: - `TILED_SERVER_ENABLE_ORIGINS`: Configure CORS origins - `PYTHONPATH`: Python module search path +## ESAF Sync Script + +The repository includes a small CLI for loading ESAFs into SQLite. + +```bash +als-esaf-sync \ + --beamline 7.0.2 \ + --beamline 12.3.2 \ + --db-path ./esafs.sqlite3 +``` + +The script stores data in four tables: + +- `beamline` for sync metadata per beamline +- `user` for PI, experimental lead, and participant identities +- `esaf` for the ESAF record itself +- `esaf_user` for user-to-ESAF roles + ## Contributing 1. Fork the repository diff --git a/pixi.lock b/pixi.lock index 5c136b9..a288b47 100644 --- a/pixi.lock +++ b/pixi.lock @@ -287,6 +287,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.1.1-py313h80991f8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-26.0.1-pyh145f28c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.4-pyhcf101f3_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/pre-commit-4.5.1-pyha770c72_0.conda @@ -686,6 +687,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-12.1.1-py313h20c1486_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-26.0.1-pyh145f28c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.4-pyhcf101f3_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/pre-commit-4.5.1-pyha770c72_0.conda @@ -1081,6 +1083,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-12.1.1-py313h16bb925_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-26.0.1-pyh145f28c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.4-pyhcf101f3_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/pre-commit-4.5.1-pyha770c72_0.conda @@ -1476,6 +1479,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.1.1-py313h45e5a15_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-26.0.1-pyh145f28c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.4-pyhcf101f3_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/pre-commit-4.5.1-pyha770c72_0.conda @@ -11124,6 +11128,15 @@ packages: license: HPND size: 966809 timestamp: 1770794152240 +- conda: https://conda.anaconda.org/conda-forge/noarch/pip-26.0.1-pyh145f28c_0.conda + sha256: 5f66ea31d62188c266c5a8752119b0cc90a5bf05963f665cf48a33e0ec58d39c + md5: 09a970fbf75e8ed1aa633827ded6aa4f + depends: + - python >=3.13.0a0 + license: MIT + license_family: MIT + size: 1180743 + timestamp: 1770270312477 - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.4-pyhcf101f3_0.conda sha256: 0289f0a38337ee201d984f8f31f11f6ef076cfbbfd0ab9181d12d9d1d099bf46 md5: 82c1787f2a65c0155ef9652466ee98d6 diff --git a/pixi.toml b/pixi.toml index c1a9dd8..f9c594c 100644 --- a/pixi.toml +++ b/pixi.toml @@ -9,6 +9,7 @@ features = ["bl733"] [dependencies] python = "3.13.*" +pip = "*" pytest = "*" pytest-cov = "*" pytest-asyncio = "*" @@ -16,6 +17,9 @@ mypy = "*" ipython = "*" notebook = "*" tiled = "*" +httpx = "*" +typer = "*" +pyyaml = "*" fabio = "*" zarr = "*" numpy = "*" @@ -32,3 +36,7 @@ fabio = "*" test = "pytest --cov=splash_tiled --cov-report=term-missing" lint = "flake8 src tests && black --check src tests && isort --check-only src tests && mypy src" format = "black src tests && isort src tests" +als-hub = "als-hub --db-path ./esafs.sqlite3" +compile-tags = "compile-tags" +compile-tags-db = "compile-tags compile --esaf-sqlite-path ./tags/esafs.sqlite3 --output-sqlite-path ./tags/compiled_tags.sqlite3" +generate-tags-yaml = "compile-tags generate-yaml --esaf-sqlite-path ./tags/esafs.sqlite3 --output-yaml-path ./tags/tag_definitions.generated.yml" diff --git a/pyproject.toml b/pyproject.toml index c07885f..ef7bbd4 100755 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,6 +22,9 @@ classifiers = [ ] requires-python = ">=3.11" dependencies = [ + "httpx>=0.27", + "PyYAML>=6", + "typer>=0.12", "tiled[client]>=0.2.8", ] @@ -40,6 +43,8 @@ Documentation = "https://github.com/als-lbl/splash_tiled#readme" [project.scripts] als-tiled = "splash_tiled.main:main" +als-hub = "splash_tiled.access_control.user_office:main" +compile-tags = "splash_tiled.access_control.tiled_tags:main" [tool.setuptools.packages.find] where = ["src"] diff --git a/src/splash_tiled/access_control/__init__.py b/src/splash_tiled/access_control/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/splash_tiled/access_control/tag_definitions.yml b/src/splash_tiled/access_control/tag_definitions.yml new file mode 100644 index 0000000..64d62cf --- /dev/null +++ b/src/splash_tiled/access_control/tag_definitions.yml @@ -0,0 +1,24 @@ +roles: + facility_user: + scopes: ["read:data", "read:metadata"] + facility_admin: + scopes: ["read:data", "read:metadata", + "write:data", "write:metadata", + "delete:node", "delete:revision", + "create:node", "register"] +tags: + SB-01482-001: + groups: + - name: SB-01482-001 + role: facility_user + auto_tags: + - name: data_admin + + data_admin: + users: + - name: cara + role: facility_admin +tag_owners: + data_admin: + users: + - name: cara diff --git a/src/splash_tiled/access_control/tiled_tags.py b/src/splash_tiled/access_control/tiled_tags.py new file mode 100644 index 0000000..184115d --- /dev/null +++ b/src/splash_tiled/access_control/tiled_tags.py @@ -0,0 +1,258 @@ +import sqlite3 +from pathlib import Path +from typing import Any +from urllib.parse import quote + +import typer +import yaml # type: ignore[import-untyped] +from tiled.access_control.access_tags import AccessTagsCompiler +from tiled.access_control.scopes import ALL_SCOPES + +from splash_tiled.access_control.user_office import ( + get_esaf_friendly_ids_by_beamline, + get_esaf_orcid_map, +) + +app = typer.Typer(add_completion=False) + + +def get_default_esaf_db_path() -> Path: + return Path(__file__).resolve().parents[3] / "esafs.sqlite3" + + +def get_default_output_sqlite_path() -> Path: + return Path(__file__).resolve().parent / "compiled_tags.sqlite" + + +def get_default_tag_definitions_path() -> Path: + return Path(__file__).resolve().parent / "tag_definitions.yml" + + +def get_default_generated_tag_definitions_path() -> Path: + return Path(__file__).resolve().parents[3] / "tag_definitions.generated.yml" + + +def load_esaf_groups(esaf_db_path: Path) -> dict[str, list[str]]: + with sqlite3.connect(esaf_db_path) as connection: + groups = get_esaf_orcid_map(connection) + for beamline_name in get_esaf_friendly_ids_by_beamline(connection): + groups.setdefault(f"{beamline_name}-staff", []) + return groups + + +def load_tag_definitions_template(tag_definitions_path: Path) -> dict[str, Any]: + with tag_definitions_path.open("r", encoding="utf-8") as file: + loaded = yaml.safe_load(file) or {} + + if not isinstance(loaded, dict): + raise typer.BadParameter( + f"Expected a mapping at the top level of {tag_definitions_path}.", + param_hint="--tag-definitions-path", + ) + + return loaded + + +def build_generated_tag_definitions( + esaf_db_path: Path, + tag_definitions_path: Path, +) -> dict[str, Any]: + template = load_tag_definitions_template(tag_definitions_path) + with sqlite3.connect(esaf_db_path) as connection: + esaf_ids_by_beamline = get_esaf_friendly_ids_by_beamline(connection) + + esaf_friendly_id_set = { + esaf_friendly_id + for esaf_friendly_ids in esaf_ids_by_beamline.values() + for esaf_friendly_id in esaf_friendly_ids + } + + template_tags = template.get("tags") or {} + if not isinstance(template_tags, dict): + raise typer.BadParameter( + f"Expected 'tags' to be a mapping in {tag_definitions_path}.", + param_hint="--tag-definitions-path", + ) + + generated_tags = { + name: value + for name, value in template_tags.items() + if name not in esaf_friendly_id_set + } + + for beamline_name, esaf_friendly_ids in esaf_ids_by_beamline.items(): + beamline_staff_group_name = f"{beamline_name}-staff" + for esaf_friendly_id in esaf_friendly_ids: + generated_tags[esaf_friendly_id] = { + "groups": [ + { + "name": esaf_friendly_id, + "role": "facility_user", + }, + { + "name": beamline_staff_group_name, + "role": "facility_user", + }, + ], + "auto_tags": [{"name": "data_admin"}], + } + + return { + "roles": template.get("roles") or {}, + "tags": generated_tags, + "tag_owners": template.get("tag_owners") or {}, + } + + +def write_tag_definitions_yaml( + tag_definitions: dict[str, Any], + output_yaml_path: Path, +) -> Path: + resolved_output_yaml_path = output_yaml_path.expanduser().resolve() + resolved_output_yaml_path.parent.mkdir(parents=True, exist_ok=True) + + with resolved_output_yaml_path.open("w", encoding="utf-8") as file: + yaml.safe_dump(tag_definitions, file, sort_keys=False) + + return resolved_output_yaml_path + + +def generate_tag_definitions_yaml( + esaf_db_path: Path, + tag_definitions_path: Path, + output_yaml_path: Path, +) -> Path: + generated_tag_definitions = build_generated_tag_definitions( + esaf_db_path=esaf_db_path, + tag_definitions_path=tag_definitions_path, + ) + return write_tag_definitions_yaml(generated_tag_definitions, output_yaml_path) + + +def resolve_output_sqlite_path(output_sqlite_path: Path) -> Path: + return output_sqlite_path.expanduser().resolve() + + +def ensure_output_sqlite_path(output_sqlite_path: Path) -> Path: + resolved_output_sqlite_path = resolve_output_sqlite_path(output_sqlite_path) + resolved_output_sqlite_path.parent.mkdir(parents=True, exist_ok=True) + + try: + resolved_output_sqlite_path.touch(exist_ok=True) + except OSError as exc: + raise typer.BadParameter( + ( + "Cannot create compiled tags database at " + f"{resolved_output_sqlite_path}. Choose a writable path." + ), + param_hint="--output-sqlite-path", + ) from exc + + return resolved_output_sqlite_path + + +def build_sqlite_uri(sqlite_path: Path) -> str: + resolved_sqlite_path = resolve_output_sqlite_path(sqlite_path) + return f"file:{quote(resolved_sqlite_path.as_posix(), safe='/')}" + + +def build_group_parser(esaf_db_path: Path): + groups = load_esaf_groups(esaf_db_path) + + def group_parser(groupname): + return groups[groupname] + + return group_parser + + +def compile_tags( + output_sqlite_path: Path, + esaf_db_path: Path, + tag_definitions_path: Path, + generated_tag_definitions_path: Path, +) -> None: + resolved_output_sqlite_path = ensure_output_sqlite_path(output_sqlite_path) + resolved_generated_tag_definitions_path = generate_tag_definitions_yaml( + esaf_db_path=esaf_db_path, + tag_definitions_path=tag_definitions_path, + output_yaml_path=generated_tag_definitions_path, + ) + + access_tags_compiler = AccessTagsCompiler( + ALL_SCOPES, + resolved_generated_tag_definitions_path, + {"uri": build_sqlite_uri(resolved_output_sqlite_path)}, + build_group_parser(esaf_db_path), + ) + + access_tags_compiler.load_tag_config() + access_tags_compiler.compile() + access_tags_compiler.connection.close() + + +@app.command("generate-yaml") +def generate_yaml_command( + output_yaml_path: Path = typer.Option( + get_default_generated_tag_definitions_path(), + "--output-yaml-path", + help="Path for the generated tag definitions YAML file.", + ), + esaf_db_path: Path = typer.Option( + get_default_esaf_db_path(), + "--esaf-sqlite-path", + help="Path to the ESAF SQLite database used to build ESAF tags.", + ), + tag_definitions_path: Path = typer.Option( + get_default_tag_definitions_path(), + "--tag-definitions-path", + help="Path to the template tag definitions YAML file.", + ), +) -> None: + resolved_output_yaml_path = generate_tag_definitions_yaml( + esaf_db_path=esaf_db_path, + tag_definitions_path=tag_definitions_path, + output_yaml_path=output_yaml_path, + ) + typer.echo(f"Generated tag definitions at {resolved_output_yaml_path}") + + +@app.command("compile") +def compile_command( + output_sqlite_path: Path = typer.Option( + get_default_output_sqlite_path(), + "--output-sqlite-path", + help="Path for the compiled tags SQLite database.", + ), + esaf_db_path: Path = typer.Option( + get_default_esaf_db_path(), + "--esaf-sqlite-path", + help="Path to the ESAF SQLite database used to resolve groups.", + ), + tag_definitions_path: Path = typer.Option( + get_default_tag_definitions_path(), + "--tag-definitions-path", + help="Path to the template tag definitions YAML file.", + ), + generated_tag_definitions_path: Path = typer.Option( + get_default_generated_tag_definitions_path(), + "--generated-yaml-path", + help=( + "Path for the generated tag definitions YAML file passed to " + "AccessTagsCompiler." + ), + ), +) -> None: + compile_tags( + output_sqlite_path=output_sqlite_path, + esaf_db_path=esaf_db_path, + tag_definitions_path=tag_definitions_path, + generated_tag_definitions_path=generated_tag_definitions_path, + ) + + +def main() -> None: + app() + + +if __name__ == "__main__": + main() diff --git a/src/splash_tiled/access_control/user_office.py b/src/splash_tiled/access_control/user_office.py new file mode 100644 index 0000000..4714748 --- /dev/null +++ b/src/splash_tiled/access_control/user_office.py @@ -0,0 +1,643 @@ +from __future__ import annotations + +import json +import sqlite3 +from collections.abc import Iterable +from datetime import UTC, datetime +from enum import StrEnum +from pathlib import Path +from textwrap import shorten +from time import perf_counter +from typing import Any + +import httpx +import typer + +DEFAULT_API_URL = "https://als-esaf.als.lbl.gov/EsafInformation/GetEsaf" + + +class Beamline(StrEnum): + BL_1_4 = "1.4" + # BL_2_0_1 = "2.0.1" + BL_2_1 = "2.1" + BL_2_4 = "2.4" + BL_3_2_1 = "3.2.1" + BL_3_3_1 = "3.3.1" + BL_3_3_2 = "3.3.2" + BL_4_0_2 = "4.0.2" + BL_4_0_3 = "4.0.3" + BL_4_2_2 = "4.2.2" + # BL_5_0_1 = "5.0.1" + # BL_5_0_2 = "5.0.2" + # BL_5_0_3 = "5.0.3" + BL_5_3_2_1 = "5.3.2.1" + BL_5_3_2_2 = "5.3.2.2" + BL_5_4 = "5.4" + BL_6_0_1 = "6.0.1" + BL_6_0_2 = "6.0.2" + BL_6_1_2 = "6.1.2" + BL_6_3_1 = "6.3.1" + BL_6_3_2 = "6.3.2" + BL_7_0_1_1 = "7.0.1.1" + BL_7_0_1_2 = "7.0.1.2" + BL_7_0_2 = "7.0.2" + BL_7_3_1 = "7.3.1" + BL_7_3_3 = "7.3.3" + BL_8_0_1 = "8.0.1" + # BL_8_2_1 = "8.2.1" + # BL_8_2_2 = "8.2.2" + # BL_8_3_1 = "8.3.1" + BL_8_3_2 = "8.3.2" + BL_9_0_1 = "9.0.1" + BL_9_0_2 = "9.0.2" + BL_9_3_1 = "9.3.1" + BL_9_3_2 = "9.3.2" + BL_10_0_1 = "10.0.1" + BL_10_3_2 = "10.3.2" + BL_11_0_1_1 = "11.0.1.1" + BL_11_0_1_2 = "11.0.1.2" + BL_11_0_2_1 = "11.0.2.1" + BL_11_0_2_2 = "11.0.2.2" + BL_11_3_1 = "11.3.1" + # BL_11_3_2 = "11.3.2" + BL_12_0_1 = "12.0.1" + BL_12_0_2 = "12.0.2" + BL_12_2_1 = "12.2.1" + BL_12_2_2 = "12.2.2" + BL_12_3_1 = "12.3.1" + BL_12_3_2 = "12.3.2" + + +ALL_BEAMLINES = [beamline.value for beamline in Beamline] + +app = typer.Typer( + help="Fetch ESAFs for one or more ALS beamlines and store them in SQLite.", + add_completion=False, +) + + +def utc_now() -> str: + return datetime.now(tz=UTC).isoformat() + + +def normalize_text(value: Any) -> str | None: + if value is None: + return None + text = str(value).strip() + return text or None + + +def normalize_email(value: Any) -> str | None: + text = normalize_text(value) + return text.lower() if text else None + + +def normalize_lbnl_id(value: Any) -> str | None: + text = normalize_text(value) + if text and text.lower() != "unknown": + return text + return None + + +def normalize_int(value: Any) -> int | None: + if value in (None, ""): + return None + return int(value) + + +def user_key(person: dict[str, Any]) -> str: + alsid = normalize_int(person.get("Alsid")) + if alsid is not None: + return f"alsid:{alsid}" + + email = normalize_email(person.get("Email")) + if email: + return f"email:{email}" + + lbnl_id = normalize_lbnl_id(person.get("LbnlId")) + if lbnl_id: + return f"lbnl:{lbnl_id}" + + name = normalize_text(person.get("Name")) + if name: + return f"name:{name.casefold()}" + + raise ValueError("Cannot derive a stable user key from empty participant data") + + +def ensure_schema(connection: sqlite3.Connection) -> None: + connection.executescript(""" + PRAGMA foreign_keys = ON; + + CREATE TABLE IF NOT EXISTS beamline ( + name TEXT PRIMARY KEY, + last_synced_at TEXT NOT NULL, + esaf_count INTEGER NOT NULL DEFAULT 0 + ); + + CREATE TABLE IF NOT EXISTS user ( + user_key TEXT PRIMARY KEY, + alsid INTEGER, + email TEXT, + lbnl_id TEXT, + name TEXT, + orcid TEXT + ); + + CREATE TABLE IF NOT EXISTS esaf ( + esaf_id INTEGER PRIMARY KEY, + beamline_name TEXT NOT NULL, + esaf_friendly_id TEXT, + proposal_id INTEGER, + proposal_friendly_id TEXT, + status TEXT, + title TEXT, + description TEXT, + version INTEGER, + pi_user_key TEXT, + exp_lead_user_key TEXT, + is_export_controlled TEXT, + materials_json TEXT NOT NULL, + scheduled_events_json TEXT NOT NULL, + raw_json TEXT NOT NULL, + updated_at TEXT NOT NULL, + FOREIGN KEY (beamline_name) REFERENCES beamline(name), + FOREIGN KEY (pi_user_key) REFERENCES user(user_key), + FOREIGN KEY (exp_lead_user_key) REFERENCES user(user_key) + ); + + CREATE TABLE IF NOT EXISTS esaf_user ( + esaf_id INTEGER NOT NULL, + user_key TEXT NOT NULL, + role TEXT NOT NULL, + PRIMARY KEY (esaf_id, user_key, role), + FOREIGN KEY (esaf_id) REFERENCES esaf(esaf_id) ON DELETE CASCADE, + FOREIGN KEY (user_key) REFERENCES user(user_key), + CHECK (role IN ('participant', 'pi', 'exp_lead')) + ); + + CREATE INDEX IF NOT EXISTS idx_esaf_beamline_name + ON esaf (beamline_name); + + CREATE INDEX IF NOT EXISTS idx_esaf_proposal_id + ON esaf (proposal_id); + + CREATE INDEX IF NOT EXISTS idx_esaf_proposal_friendly_id + ON esaf (proposal_friendly_id); + + CREATE INDEX IF NOT EXISTS idx_esaf_beamline_proposal_id + ON esaf (beamline_name, proposal_id); + """) + + +def fetch_esafs( + client: httpx.Client, + beamline: str, + api_url: str, +) -> list[dict[str, Any]]: + typer.echo(f"Fetching {beamline}...") + response = client.get(api_url, params={"bl": beamline}) + response.raise_for_status() + payload = response.json() + if not isinstance(payload, list): + raise ValueError( + f"Expected list response for beamline {beamline}, got {type(payload)!r}" + ) + return payload + + +def format_http_error(error: httpx.HTTPError) -> str: + if isinstance(error, httpx.HTTPStatusError): + response = error.response + request = error.request + return f"url={request.url} status={response.status_code}" + + request = error.request + url = request.url if request is not None else "" + return f"url={url} message={error}" + + +def print_http_error(beamline: str, error: httpx.HTTPError) -> str: + message = format_http_error(error) + typer.echo( + f"HTTP error for {beamline}: {message}", + err=True, + ) + return message + + +def collect_esaf_user_keys(esaf: dict[str, Any]) -> set[str]: + user_keys: set[str] = set() + for role_key in ("PI", "ExpLead"): + person = esaf.get(role_key) or {} + if person: + user_keys.add(user_key(person)) + + for participant in esaf.get("Participants") or []: + user_keys.add(user_key(participant)) + + return user_keys + + +def format_report_table(rows: list[dict[str, str]]) -> str: + headers = ["Beamline", "ESAFs", "New ESAFs", "Users", "New Users", "Error"] + keys = ["beamline", "esafs", "new_esafs", "users", "new_users", "error"] + widths = { + header: max( + len(header), + max( + (len(shorten(row[key], width=80, placeholder="...")) for row in rows), + default=0, + ), + ) + for header, key in zip(headers, keys, strict=True) + } + + def format_row(values: list[str]) -> str: + return " | ".join( + value.ljust(widths[header]) + for header, value in zip(headers, values, strict=True) + ) + + lines = [format_row(headers)] + lines.append("-+-".join("-" * widths[header] for header in headers)) + for row in rows: + values = [shorten(row[key], width=80, placeholder="...") for key in keys] + lines.append(format_row(values)) + return "\n".join(lines) + + +def print_report(rows: list[dict[str, str]], elapsed_seconds: float) -> None: + if not rows: + return + + typer.echo("\nBeamline sync report:") + typer.echo(format_report_table(rows)) + typer.echo(f"Total time: {elapsed_seconds:.2f} seconds") + + +def get_esaf_orcid_map(connection: sqlite3.Connection) -> dict[str, list[str]]: + rows = connection.execute(""" + SELECT DISTINCT e.esaf_friendly_id, u.orcid + FROM esaf AS e + LEFT JOIN esaf_user AS eu ON eu.esaf_id = e.esaf_id + LEFT JOIN user AS u ON u.user_key = eu.user_key + WHERE e.esaf_friendly_id IS NOT NULL + ORDER BY e.esaf_friendly_id, u.orcid + """).fetchall() + + orcid_map: dict[str, list[str]] = {} + for esaf_friendly_id, orcid in rows: + values = orcid_map.setdefault(esaf_friendly_id, []) + if orcid is not None: + values.append(orcid) + return orcid_map + + +def get_esaf_friendly_ids(connection: sqlite3.Connection) -> list[str]: + rows = connection.execute(""" + SELECT DISTINCT esaf_friendly_id + FROM esaf + WHERE esaf_friendly_id IS NOT NULL + ORDER BY esaf_friendly_id + """).fetchall() + + return [esaf_friendly_id for (esaf_friendly_id,) in rows] + + +def get_esaf_friendly_ids_by_beamline( + connection: sqlite3.Connection, +) -> dict[str, list[str]]: + rows = connection.execute(""" + SELECT beamline_name, esaf_friendly_id + FROM esaf + WHERE beamline_name IS NOT NULL + AND esaf_friendly_id IS NOT NULL + ORDER BY beamline_name, esaf_friendly_id + """).fetchall() + + esaf_ids_by_beamline: dict[str, list[str]] = {} + for beamline_name, esaf_friendly_id in rows: + esaf_ids_by_beamline.setdefault(beamline_name, []).append(esaf_friendly_id) + return esaf_ids_by_beamline + + +def user_exists(connection: sqlite3.Connection, key: str) -> bool: + row = connection.execute( + "SELECT 1 FROM user WHERE user_key = ?", + (key,), + ).fetchone() + return row is not None + + +def esaf_exists(connection: sqlite3.Connection, esaf_id: int) -> bool: + row = connection.execute( + "SELECT 1 FROM esaf WHERE esaf_id = ?", + (esaf_id,), + ).fetchone() + return row is not None + + +def upsert_user( + connection: sqlite3.Connection, person: dict[str, Any] +) -> tuple[str, bool]: + key = user_key(person) + is_new = not user_exists(connection, key) + connection.execute( + """ + INSERT INTO user (user_key, alsid, email, lbnl_id, name, orcid) + VALUES (?, ?, ?, ?, ?, ?) + ON CONFLICT(user_key) DO UPDATE SET + alsid = excluded.alsid, + email = excluded.email, + lbnl_id = excluded.lbnl_id, + name = excluded.name, + orcid = excluded.orcid + """, + ( + key, + normalize_int(person.get("Alsid")), + normalize_email(person.get("Email")), + normalize_lbnl_id(person.get("LbnlId")), + normalize_text(person.get("Name")), + normalize_text(person.get("Orcid")), + ), + ) + return key, is_new + + +def sync_esaf( + connection: sqlite3.Connection, + beamline: str, + esaf: dict[str, Any], + synced_at: str, +) -> tuple[bool, set[str]]: + pi = esaf.get("PI") or {} + exp_lead = esaf.get("ExpLead") or {} + participants = esaf.get("Participants") or [] + esaf_id = normalize_int(esaf.get("EsafId")) + if esaf_id is None: + raise ValueError("ESAF payload is missing EsafId") + is_new_esaf = not esaf_exists(connection, esaf_id) + new_user_keys: set[str] = set() + + pi_key = None + if pi: + pi_key, pi_is_new = upsert_user(connection, pi) + if pi_is_new: + new_user_keys.add(pi_key) + + exp_lead_key = None + if exp_lead: + exp_lead_key, exp_lead_is_new = upsert_user(connection, exp_lead) + if exp_lead_is_new: + new_user_keys.add(exp_lead_key) + + participant_keys: list[str] = [] + for participant in participants: + participant_key, participant_is_new = upsert_user(connection, participant) + participant_keys.append(participant_key) + if participant_is_new: + new_user_keys.add(participant_key) + + connection.execute( + """ + INSERT INTO esaf ( + esaf_id, + beamline_name, + esaf_friendly_id, + proposal_id, + proposal_friendly_id, + status, + title, + description, + version, + pi_user_key, + exp_lead_user_key, + is_export_controlled, + materials_json, + scheduled_events_json, + raw_json, + updated_at + ) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + ON CONFLICT(esaf_id) DO UPDATE SET + beamline_name = excluded.beamline_name, + esaf_friendly_id = excluded.esaf_friendly_id, + proposal_id = excluded.proposal_id, + proposal_friendly_id = excluded.proposal_friendly_id, + status = excluded.status, + title = excluded.title, + description = excluded.description, + version = excluded.version, + pi_user_key = excluded.pi_user_key, + exp_lead_user_key = excluded.exp_lead_user_key, + is_export_controlled = excluded.is_export_controlled, + materials_json = excluded.materials_json, + scheduled_events_json = excluded.scheduled_events_json, + raw_json = excluded.raw_json, + updated_at = excluded.updated_at + """, + ( + esaf_id, + beamline, + normalize_text(esaf.get("EsafFriendlyId")), + normalize_int(esaf.get("ProposalId")), + normalize_text(esaf.get("ProposalFriendlyId")), + normalize_text(esaf.get("Status")), + normalize_text(esaf.get("Title")), + normalize_text(esaf.get("Description")), + normalize_int(esaf.get("Version")), + pi_key, + exp_lead_key, + normalize_text(esaf.get("IsExportControlled")), + json.dumps(esaf.get("Materials") or []), + json.dumps(esaf.get("ScheduledEvents") or []), + json.dumps(esaf, sort_keys=True), + synced_at, + ), + ) + + connection.execute("DELETE FROM esaf_user WHERE esaf_id = ?", (esaf_id,)) + + rows: set[tuple[int, str, str]] = set() + if pi_key: + rows.add((esaf_id, pi_key, "pi")) + if exp_lead_key: + rows.add((esaf_id, exp_lead_key, "exp_lead")) + rows.update( + (esaf_id, participant_key, "participant") + for participant_key in participant_keys + ) + + connection.executemany( + "INSERT INTO esaf_user (esaf_id, user_key, role) VALUES (?, ?, ?)", + sorted(rows), + ) + return is_new_esaf, new_user_keys + + +def sync_beamline( + connection: sqlite3.Connection, + beamline: str, + esafs: Iterable[dict[str, Any]], + synced_at: str, +) -> tuple[int, int, int, int]: + items = list(esafs) + new_esaf_count = 0 + new_user_keys: set[str] = set() + total_user_keys: set[str] = set() + connection.execute( + """ + INSERT INTO beamline (name, last_synced_at, esaf_count) + VALUES (?, ?, ?) + ON CONFLICT(name) DO UPDATE SET + last_synced_at = excluded.last_synced_at, + esaf_count = excluded.esaf_count + """, + (beamline, synced_at, len(items)), + ) + with typer.progressbar(items, label=f"Syncing {beamline}") as progress: + for esaf in progress: + total_user_keys.update(collect_esaf_user_keys(esaf)) + is_new_esaf, esaf_new_user_keys = sync_esaf( + connection, beamline, esaf, synced_at + ) + new_esaf_count += int(is_new_esaf) + new_user_keys.update(esaf_new_user_keys) + return len(items), new_esaf_count, len(total_user_keys), len(new_user_keys) + + +def run( + beamlines: list[str], + db_path: Path, + api_url: str = DEFAULT_API_URL, + timeout: float = 30.0, +) -> int: + start_time = perf_counter() + db_path.parent.mkdir(parents=True, exist_ok=True) + failed_beamlines: list[str] = [] + report_rows: list[dict[str, str]] = [] + interrupted = False + + with httpx.Client(timeout=timeout, follow_redirects=True) as client: + with sqlite3.connect(db_path) as connection: + ensure_schema(connection) + try: + with typer.progressbar( + beamlines, label="Beamlines" + ) as beamline_progress: + for beamline in beamline_progress: + synced_at = utc_now() + try: + esafs = fetch_esafs( + client, beamline=beamline, api_url=api_url + ) + except httpx.HTTPError as error: + error_message = print_http_error(beamline, error) + failed_beamlines.append(beamline) + report_rows.append( + { + "beamline": beamline, + "esafs": "0", + "new_esafs": "0", + "users": "0", + "new_users": "0", + "error": error_message, + } + ) + continue + total, new_esafs, total_users, new_users = sync_beamline( + connection, + beamline=beamline, + esafs=esafs, + synced_at=synced_at, + ) + typer.echo(f"Stored {total} ESAFs for {beamline}") + typer.echo( + f"New for {beamline}: {new_esafs} ESAFs, {new_users} users" + ) + report_rows.append( + { + "beamline": beamline, + "esafs": str(total), + "new_esafs": str(new_esafs), + "users": str(total_users), + "new_users": str(new_users), + "error": "", + } + ) + except KeyboardInterrupt: + interrupted = True + finally: + elapsed_seconds = perf_counter() - start_time + print_report(report_rows, elapsed_seconds) + + if failed_beamlines: + typer.echo( + f"Failed beamlines: {', '.join(failed_beamlines)}", + err=True, + ) + return 1 + + if interrupted: + typer.echo("Sync interrupted by user.", err=True) + return 130 + + return 0 + + +def resolve_beamlines(selected: list[Beamline], sync_all: bool) -> list[str]: + if sync_all: + return ALL_BEAMLINES + + if selected: + return [beamline.value for beamline in selected] + + raise typer.BadParameter( + "Provide at least one --beamline value or pass --all.", + param_hint="--beamline/--all", + ) + + +@app.command() +def cli( + beamline: list[Beamline] = typer.Option( + [], + "--beamline", + help="Beamline to fetch. Repeat for multiple beamlines.", + ), + sync_all: bool = typer.Option( + False, + "--all", + help="Sync every beamline defined in the Beamline enum.", + ), + db_path: Path = typer.Option( + Path("esafs.sqlite3"), + "--db-path", + help="SQLite database path. Defaults to ./esafs.sqlite3.", + ), + api_url: str = typer.Option( + DEFAULT_API_URL, + "--api-url", + help="ESAF API base URL.", + ), + timeout: float = typer.Option( + 30.0, + "--timeout", + help="HTTP timeout in seconds.", + ), +) -> None: + resolved_beamlines = resolve_beamlines(beamline, sync_all) + raise SystemExit( + run( + beamlines=resolved_beamlines, + db_path=db_path, + api_url=api_url, + timeout=timeout, + ) + ) + + +def main() -> None: + app() diff --git a/tests/test_tiled_tags.py b/tests/test_tiled_tags.py new file mode 100644 index 0000000..681dc8e --- /dev/null +++ b/tests/test_tiled_tags.py @@ -0,0 +1,295 @@ +import sqlite3 +from pathlib import Path + +import pytest +import typer +import yaml # type: ignore[import-untyped] + +from splash_tiled.access_control.tiled_tags import ( + build_generated_tag_definitions, + build_group_parser, + build_sqlite_uri, + ensure_output_sqlite_path, + generate_tag_definitions_yaml, + write_tag_definitions_yaml, +) +from splash_tiled.access_control.user_office import ( + ensure_schema, + get_esaf_friendly_ids_by_beamline, + sync_beamline, +) + + +def test_ensure_output_sqlite_path_creates_parent_and_file(tmp_path: Path) -> None: + output_path = tmp_path / "nested" / "compiled_tags.sqlite" + + resolved_path = ensure_output_sqlite_path(output_path) + + assert resolved_path == output_path.resolve() + assert resolved_path.parent.is_dir() + assert resolved_path.is_file() + + +def test_build_sqlite_uri_uses_absolute_sqlite_file_uri(tmp_path: Path) -> None: + output_path = tmp_path / "compiled tags.sqlite" + + sqlite_uri = build_sqlite_uri(output_path) + + assert sqlite_uri == f"file:{output_path.resolve().as_posix().replace(' ', '%20')}" + + +def test_ensure_output_sqlite_path_raises_for_unwritable_directory( + monkeypatch: pytest.MonkeyPatch, tmp_path: Path +) -> None: + output_path = tmp_path / "compiled_tags.sqlite" + + def raise_permission_error(*args, **kwargs) -> None: + raise PermissionError("permission denied") + + monkeypatch.setattr(Path, "touch", raise_permission_error) + + with pytest.raises(typer.BadParameter, match="Choose a writable path"): + ensure_output_sqlite_path(output_path) + + +def test_build_generated_tag_definitions_includes_template_sections_and_esaf_tags( + tmp_path: Path, +) -> None: + esaf_db_path = tmp_path / "esafs.sqlite3" + template_path = tmp_path / "tag_definitions.yml" + + template_path.write_text( + """ +roles: + facility_user: + scopes: + - read:data + - read:metadata + facility_admin: + scopes: + - read:data +tags: + data_admin: + users: + - name: cara + role: facility_admin +tag_owners: + data_admin: + users: + - name: cara +""".lstrip(), + encoding="utf-8", + ) + + esaf = { + "Beamline": "12.3.2", + "Description": "Microdiffraction of ARPES samples", + "EsafFriendlyId": "SB-01482-001", + "EsafId": 36017, + "ExpLead": { + "Alsid": 83512, + "Email": "chu2@lbl.gov", + "LbnlId": "070285", + "Name": "Cheng Hu", + "Orcid": "0000-0003-2335-7806", + }, + "IsExportControlled": "No", + "Materials": [], + "PI": { + "Alsid": 11525, + "Email": "erotenberg@lbl.gov", + "LbnlId": "275451", + "Name": "Eli Rotenberg", + "Orcid": "0000-0002-3979-8844", + }, + "Participants": [], + "ProposalFriendlyId": "ALS-13362", + "ProposalId": 19907, + "ScheduledEvents": [], + "Status": "Draft", + "Title": "Microdiffraction of ARPES samples", + "Version": 1, + } + + with sqlite3.connect(esaf_db_path) as connection: + ensure_schema(connection) + sync_beamline( + connection, + beamline="12.3.2", + esafs=[esaf], + synced_at="2026-04-04T00:00:00+00:00", + ) + + with sqlite3.connect(esaf_db_path) as connection: + assert get_esaf_friendly_ids_by_beamline(connection) == { + "12.3.2": ["SB-01482-001"] + } + + generated = build_generated_tag_definitions(esaf_db_path, template_path) + + assert generated["roles"]["facility_user"]["scopes"] == [ + "read:data", + "read:metadata", + ] + assert generated["tags"]["SB-01482-001"] == { + "groups": [ + {"name": "SB-01482-001", "role": "facility_user"}, + {"name": "12.3.2-staff", "role": "facility_user"}, + ], + "auto_tags": [{"name": "data_admin"}], + } + assert generated["tags"]["data_admin"]["users"] == [ + {"name": "cara", "role": "facility_admin"} + ] + assert generated["tag_owners"]["data_admin"]["users"] == [{"name": "cara"}] + + +def test_write_tag_definitions_yaml_writes_yaml_file(tmp_path: Path) -> None: + output_yaml_path = tmp_path / "generated" / "tag_definitions.yml" + content = { + "roles": {"facility_user": {"scopes": ["read:data"]}}, + "tags": { + "SB-01482-001": { + "groups": [{"name": "SB-01482-001", "role": "facility_user"}] + } + }, + "tag_owners": {}, + } + + resolved_output_yaml_path = write_tag_definitions_yaml(content, output_yaml_path) + + assert resolved_output_yaml_path == output_yaml_path.resolve() + assert yaml.safe_load(output_yaml_path.read_text(encoding="utf-8")) == content + + +def test_generate_tag_definitions_yaml_writes_generated_esaf_tags( + tmp_path: Path, +) -> None: + esaf_db_path = tmp_path / "esafs.sqlite3" + template_path = tmp_path / "tag_definitions.yml" + output_yaml_path = tmp_path / "tag_definitions.generated.yml" + + template_path.write_text( + """ +roles: + facility_user: + scopes: + - read:data + - read:metadata +tags: + data_admin: + users: + - name: cara + role: facility_admin +tag_owners: + data_admin: + users: + - name: cara +""".lstrip(), + encoding="utf-8", + ) + + esaf = { + "Beamline": "12.3.2", + "Description": "Microdiffraction of ARPES samples", + "EsafFriendlyId": "SB-01482-001", + "EsafId": 36017, + "ExpLead": { + "Alsid": 83512, + "Email": "chu2@lbl.gov", + "LbnlId": "070285", + "Name": "Cheng Hu", + "Orcid": "0000-0003-2335-7806", + }, + "IsExportControlled": "No", + "Materials": [], + "PI": { + "Alsid": 11525, + "Email": "erotenberg@lbl.gov", + "LbnlId": "275451", + "Name": "Eli Rotenberg", + "Orcid": "0000-0002-3979-8844", + }, + "Participants": [], + "ProposalFriendlyId": "ALS-13362", + "ProposalId": 19907, + "ScheduledEvents": [], + "Status": "Draft", + "Title": "Microdiffraction of ARPES samples", + "Version": 1, + } + + with sqlite3.connect(esaf_db_path) as connection: + ensure_schema(connection) + sync_beamline( + connection, + beamline="12.3.2", + esafs=[esaf], + synced_at="2026-04-04T00:00:00+00:00", + ) + + resolved_output_yaml_path = generate_tag_definitions_yaml( + esaf_db_path=esaf_db_path, + tag_definitions_path=template_path, + output_yaml_path=output_yaml_path, + ) + + generated = yaml.safe_load(resolved_output_yaml_path.read_text(encoding="utf-8")) + assert resolved_output_yaml_path == output_yaml_path.resolve() + assert generated["tags"]["SB-01482-001"]["groups"] == [ + {"name": "SB-01482-001", "role": "facility_user"}, + {"name": "12.3.2-staff", "role": "facility_user"}, + ] + + +def test_build_group_parser_includes_empty_beamline_staff_groups( + tmp_path: Path, +) -> None: + esaf_db_path = tmp_path / "esafs.sqlite3" + + esaf = { + "Beamline": "12.3.2", + "Description": "Microdiffraction of ARPES samples", + "EsafFriendlyId": "SB-01482-001", + "EsafId": 36017, + "ExpLead": { + "Alsid": 83512, + "Email": "chu2@lbl.gov", + "LbnlId": "070285", + "Name": "Cheng Hu", + "Orcid": "0000-0003-2335-7806", + }, + "IsExportControlled": "No", + "Materials": [], + "PI": { + "Alsid": 11525, + "Email": "erotenberg@lbl.gov", + "LbnlId": "275451", + "Name": "Eli Rotenberg", + "Orcid": "0000-0002-3979-8844", + }, + "Participants": [], + "ProposalFriendlyId": "ALS-13362", + "ProposalId": 19907, + "ScheduledEvents": [], + "Status": "Draft", + "Title": "Microdiffraction of ARPES samples", + "Version": 1, + } + + with sqlite3.connect(esaf_db_path) as connection: + ensure_schema(connection) + sync_beamline( + connection, + beamline="12.3.2", + esafs=[esaf], + synced_at="2026-04-04T00:00:00+00:00", + ) + + group_parser = build_group_parser(esaf_db_path) + + assert group_parser("SB-01482-001") == [ + "0000-0002-3979-8844", + "0000-0003-2335-7806", + ] + assert group_parser("12.3.2-staff") == [] diff --git a/tests/test_user_office.py b/tests/test_user_office.py new file mode 100644 index 0000000..07bbc7c --- /dev/null +++ b/tests/test_user_office.py @@ -0,0 +1,166 @@ +import sqlite3 + +from splash_tiled.access_control.user_office import ( + ensure_schema, + get_esaf_orcid_map, + sync_beamline, + user_key, +) + + +def test_user_key_falls_back_to_email() -> None: + person = { + "Alsid": None, + "Email": "Scientist@LBL.GOV ", + "LbnlId": "Unknown", + "Name": "Scientist Name", + } + + assert user_key(person) == "email:scientist@lbl.gov" + + +def test_sync_beamline_persists_normalized_records() -> None: + esaf = { + "Beamline": "12.3.2", + "Description": ( + "We will bring quantum material crystals and measure their " + "properties under applied strain" + ), + "EsafFriendlyId": "ALS-13362-001", + "EsafId": 36017, + "ExpLead": { + "Alsid": 83512, + "Email": "CHu2@lbl.gov", + "LbnlId": "070285", + "Name": "Cheng Hu", + "Orcid": "0000-0003-2335-7806", + }, + "IsExportControlled": "No", + "Materials": ["Chemicals, including nanomaterials"], + "PI": { + "Alsid": 11525, + "Email": "erotenberg@lbl.gov", + "LbnlId": "275451", + "Name": "Eli Rotenberg", + "Orcid": "0000-0002-3979-8844", + }, + "Participants": [ + { + "Alsid": 83512, + "Email": "CHu2@lbl.gov", + "LbnlId": "070285", + "Name": "Cheng Hu", + "Orcid": "0000-0003-2335-7806", + }, + { + "Alsid": 11525, + "Email": "erotenberg@lbl.gov", + "LbnlId": "275451", + "Name": "Eli Rotenberg", + "Orcid": "0000-0002-3979-8844", + }, + ], + "ProposalFriendlyId": "ALS-13362", + "ProposalId": 19907, + "ScheduledEvents": [], + "Status": "Draft", + "Title": "Microdiffraction of ARPES samples", + "Version": 1, + } + + with sqlite3.connect(":memory:") as connection: + ensure_schema(connection) + sync_beamline( + connection, + beamline="12.3.2", + esafs=[esaf], + synced_at="2026-04-04T00:00:00+00:00", + ) + + beamline_row = connection.execute( + "SELECT name, esaf_count FROM beamline" + ).fetchone() + assert beamline_row == ("12.3.2", 1) + + esaf_row = connection.execute( + "SELECT beamline_name, pi_user_key, exp_lead_user_key " + "FROM esaf WHERE esaf_id = 36017" + ).fetchone() + assert esaf_row == ("12.3.2", "alsid:11525", "alsid:83512") + + user_count = connection.execute("SELECT COUNT(*) FROM user").fetchone()[0] + assert user_count == 2 + + role_rows = connection.execute( + "SELECT user_key, role FROM esaf_user WHERE esaf_id = 36017" + "ORDER BY role, user_key" + ).fetchall() + assert role_rows == [ + ("alsid:83512", "exp_lead"), + ("alsid:11525", "participant"), + ("alsid:83512", "participant"), + ("alsid:11525", "pi"), + ] + + +def test_get_esaf_orcid_map_returns_distinct_orcids_per_esaf() -> None: + esaf = { + "Beamline": "12.3.2", + "Description": "Microdiffraction of ARPES samples", + "EsafFriendlyId": "ALS-13362-001", + "EsafId": 36017, + "ExpLead": { + "Alsid": 83512, + "Email": "CHu2@lbl.gov", + "LbnlId": "070285", + "Name": "Cheng Hu", + "Orcid": "0000-0003-2335-7806", + }, + "IsExportControlled": "No", + "Materials": [], + "PI": { + "Alsid": 11525, + "Email": "erotenberg@lbl.gov", + "LbnlId": "275451", + "Name": "Eli Rotenberg", + "Orcid": "0000-0002-3979-8844", + }, + "Participants": [ + { + "Alsid": 83512, + "Email": "CHu2@lbl.gov", + "LbnlId": "070285", + "Name": "Cheng Hu", + "Orcid": "0000-0003-2335-7806", + }, + { + "Alsid": 11525, + "Email": "erotenberg@lbl.gov", + "LbnlId": "275451", + "Name": "Eli Rotenberg", + "Orcid": "0000-0002-3979-8844", + }, + ], + "ProposalFriendlyId": "ALS-13362", + "ProposalId": 19907, + "ScheduledEvents": [], + "Status": "Draft", + "Title": "Microdiffraction of ARPES samples", + "Version": 1, + } + + with sqlite3.connect(":memory:") as connection: + ensure_schema(connection) + sync_beamline( + connection, + beamline="12.3.2", + esafs=[esaf], + synced_at="2026-04-04T00:00:00+00:00", + ) + + assert get_esaf_orcid_map(connection) == { + "ALS-13362-001": [ + "0000-0002-3979-8844", + "0000-0003-2335-7806", + ] + } From 60cf761b2dceecc03b0ca6f2ed68791d58e7ea7e Mon Sep 17 00:00:00 2001 From: Dylan McReynolds Date: Tue, 28 Apr 2026 11:50:13 -0700 Subject: [PATCH 07/31] update for pixi --- README.md | 111 +++++++++++++++++++----------------------------------- 1 file changed, 38 insertions(+), 73 deletions(-) diff --git a/README.md b/README.md index 9744e4b..d897879 100755 --- a/README.md +++ b/README.md @@ -10,9 +10,9 @@ This project provides a specialized Tiled server configuration for managing scie - Built on the robust Tiled framework - Docker containerization for easy deployment -- Support for Python 3.11 and 3.12 +- Support for Python 3.13 - Comprehensive CI/CD pipeline with GitHub Actions -- Pre-configured development environment +- Reproducible development environment managed with [Pixi](https://pixi.sh/) ## Quick Start @@ -30,121 +30,86 @@ docker run -p 8000:8000 splash_tiled ```bash # Clone the repository -git clone https://github.com/als-lbl/splash_tiled.git +git clone https://github.com/als-computing/splash_tiled.git cd splash_tiled -# Install in development mode -pip install -e .[dev] +# Install and activate the environment +pixi install +pixi shell -# Run the application -als-tiled +# Run tests +pixi run test ``` ## Installation ### Requirements -- Python 3.11 or 3.12 +- [Pixi](https://pixi.sh/) (recommended) +- Python 3.13 - Docker (for containerized deployment) -### From Source +### With Pixi (recommended) ```bash -pip install -e . -``` - -### Development Installation +# Install Pixi if needed +curl -sSf https://pixi.sh/install.sh | bash -```bash -pip install -e .[dev] +# Install all dependencies +pixi install ``` -This installs additional development dependencies including: -- pytest for testing -- black for code formatting -- isort for import sorting -- flake8 for linting -- mypy for type checking -- pre-commit for git hooks +Pixi manages all dependencies (including Python 3.13) and installs the package in editable mode automatically. ## Development +This project uses [Pixi](https://pixi.sh/) for reproducible environments. -### Using Pixi for Development - -This project supports [Pixi](https://pixi.sh/) for reproducible Python environments. Pixi handles dependency management and environment setup automatically. +### Setup -#### Setting up with Pixi - -1. Install Pixi (if you don't have it): - ```bash - curl -sSf https://pixi.sh/install.sh | bash - # Or see https://pixi.sh/docs/install/ for other methods - ``` -2. Create and activate the development environment: - ```bash - pixi install - pixi shell - ``` -3. (Optional) To update dependencies: - ```bash - pixi update - ``` +```bash +# Install Pixi if you don't have it +curl -sSf https://pixi.sh/install.sh | bash -#### Running Tests with Pixi +# Install the environment +pixi install -```bash -pixi run test +# Start a shell in the environment +pixi shell ``` -#### Running Code Quality Checks with Pixi - +To update dependencies: ```bash -pixi run lint # Run all linters -pixi run format # Format code with black and isort -pixi run typecheck # Run mypy type checks +pixi update ``` -You can also run any tool in the environment with `pixi run ` (e.g., `pixi run pytest`). - -For more, see the [Pixi documentation](https://pixi.sh/docs/). - ### Running Tests ```bash -# Run all tests -pytest - -# Run tests with coverage -pytest --cov=splash_tiled +# Run all tests with coverage +pixi run test -# Run specific test file -pytest tests/test_main.py +# Or run pytest directly inside a pixi shell +pytest tests/test_specific.py ``` ### Code Quality -The project uses several tools to maintain code quality: +The project uses Black, isort, flake8, and mypy for code quality. -- **Black**: Code formatting -- **isort**: Import sorting -- **flake8**: Linting -- **mypy**: Type checking - -Run all quality checks: ```bash -black src tests -isort src tests -flake8 src tests -mypy src +pixi run lint # Check formatting, imports, style, and types +pixi run format # Auto-format code with black and isort ``` +For more, see the [Pixi documentation](https://pixi.sh/docs/). + ## Docker ### Building the Image ```bash -docker build -t splash_tiled -f .Containerfile . +docker build -t splash_tiled -f Containerfile . ``` ### Running the Container @@ -165,7 +130,7 @@ docker run -p 8000:8000 -v /path/to/data:/data splash_tiled The project includes a comprehensive GitHub Actions workflow that: 1. **Linting**: Runs code quality checks (black, isort, flake8, mypy) -2. **Testing**: Executes the test suite across Python 3.11 and 3.12 +2. **Testing**: Executes the test suite with Python 3.13 3. **Building**: Creates Docker images for multiple architectures 4. **Publishing**: Pushes images to GitHub Container Registry From 7d4274aca503dde748f2939a42383ae51898da29 Mon Sep 17 00:00:00 2001 From: Dylan McReynolds Date: Tue, 28 Apr 2026 11:53:56 -0700 Subject: [PATCH 08/31] add beamline staff to tags --- src/splash_tiled/access_control/tiled_tags.py | 6 +- .../access_control/user_office.py | 96 +++++++++++++++++++ tests/test_user_office.py | 34 +++++++ 3 files changed, 135 insertions(+), 1 deletion(-) diff --git a/src/splash_tiled/access_control/tiled_tags.py b/src/splash_tiled/access_control/tiled_tags.py index 184115d..408383c 100644 --- a/src/splash_tiled/access_control/tiled_tags.py +++ b/src/splash_tiled/access_control/tiled_tags.py @@ -9,6 +9,7 @@ from tiled.access_control.scopes import ALL_SCOPES from splash_tiled.access_control.user_office import ( + get_beamline_staff_group_map, get_esaf_friendly_ids_by_beamline, get_esaf_orcid_map, ) @@ -35,8 +36,11 @@ def get_default_generated_tag_definitions_path() -> Path: def load_esaf_groups(esaf_db_path: Path) -> dict[str, list[str]]: with sqlite3.connect(esaf_db_path) as connection: groups = get_esaf_orcid_map(connection) + beamline_staff_groups = get_beamline_staff_group_map(connection) for beamline_name in get_esaf_friendly_ids_by_beamline(connection): - groups.setdefault(f"{beamline_name}-staff", []) + groups[f"{beamline_name}-staff"] = beamline_staff_groups.get( + beamline_name, [] + ) return groups diff --git a/src/splash_tiled/access_control/user_office.py b/src/splash_tiled/access_control/user_office.py index 4714748..603a8d1 100644 --- a/src/splash_tiled/access_control/user_office.py +++ b/src/splash_tiled/access_control/user_office.py @@ -14,6 +14,7 @@ import typer DEFAULT_API_URL = "https://als-esaf.als.lbl.gov/EsafInformation/GetEsaf" +DEFAULT_STAFF_API_URL = "https://alsusweb.lbl.gov/GetStaffByBeamline/" class Beamline(StrEnum): @@ -176,6 +177,12 @@ def ensure_schema(connection: sqlite3.Connection) -> None: CHECK (role IN ('participant', 'pi', 'exp_lead')) ); + CREATE TABLE IF NOT EXISTS beamline_staff_user ( + beamline_name TEXT NOT NULL, + user_name TEXT NOT NULL, + PRIMARY KEY (beamline_name, user_name) + ); + CREATE INDEX IF NOT EXISTS idx_esaf_beamline_name ON esaf (beamline_name); @@ -276,6 +283,78 @@ def print_report(rows: list[dict[str, str]], elapsed_seconds: float) -> None: typer.echo(f"Total time: {elapsed_seconds:.2f} seconds") +def fetch_beamline_staff( + client: httpx.Client, + api_url: str = DEFAULT_STAFF_API_URL, +) -> list[dict[str, Any]]: + """Fetch all beamline staff from the ALS staff API. + + Returns the raw list of ``{"Beamline": ..., "Staff": [...]}`` records. + """ + response = client.get(api_url, params={"bl": "all"}) + response.raise_for_status() + payload = response.json() + if not isinstance(payload, list): + raise ValueError( + f"Expected list response from staff API, got {type(payload)!r}" + ) + return payload + + +def get_beamline_staff_groups( + staff_data: list[dict[str, Any]], +) -> dict[str, list[str]]: + """Build a mapping of beamline name -> list of member emails. + + Every person who appears in a beamline's Staff list is included as a + member of that beamline's group, identified by their (normalised) email + address. Entries without a usable email are skipped. + """ + groups: dict[str, list[str]] = {} + for entry in staff_data: + beamline_name = normalize_text(entry.get("Beamline")) + if not beamline_name: + continue + members: set[str] = set() + for person in entry.get("Staff") or []: + email = normalize_email(person.get("Email")) + if email: + members.add(email) + groups[beamline_name] = sorted(members) + return groups + + +def sync_beamline_staff_groups( + connection: sqlite3.Connection, + groups: dict[str, list[str]], +) -> None: + rows = [ + (beamline_name, user_name) + for beamline_name, members in groups.items() + for user_name in members + ] + connection.execute("DELETE FROM beamline_staff_user") + connection.executemany( + "INSERT INTO beamline_staff_user (beamline_name, user_name) VALUES (?, ?)", + sorted(set(rows)), + ) + + +def get_beamline_staff_group_map( + connection: sqlite3.Connection, +) -> dict[str, list[str]]: + rows = connection.execute(""" + SELECT beamline_name, user_name + FROM beamline_staff_user + ORDER BY beamline_name, user_name + """).fetchall() + + groups: dict[str, list[str]] = {} + for beamline_name, user_name in rows: + groups.setdefault(beamline_name, []).append(user_name) + return groups + + def get_esaf_orcid_map(connection: sqlite3.Connection) -> dict[str, list[str]]: rows = connection.execute(""" SELECT DISTINCT e.esaf_friendly_id, u.orcid @@ -523,6 +602,19 @@ def run( with httpx.Client(timeout=timeout, follow_redirects=True) as client: with sqlite3.connect(db_path) as connection: ensure_schema(connection) + try: + staff_data = fetch_beamline_staff(client) + staff_groups = get_beamline_staff_groups(staff_data) + sync_beamline_staff_groups(connection, staff_groups) + typer.echo( + "Stored beamline staff groups " f"for {len(staff_groups)} beamlines" + ) + except httpx.HTTPError as error: + typer.echo( + f"Failed to fetch beamline staff groups: " + f"{format_http_error(error)}", + err=True, + ) try: with typer.progressbar( beamlines, label="Beamlines" @@ -641,3 +733,7 @@ def cli( def main() -> None: app() + + +if __name__ == "__main__": + main() diff --git a/tests/test_user_office.py b/tests/test_user_office.py index 07bbc7c..7e499ec 100644 --- a/tests/test_user_office.py +++ b/tests/test_user_office.py @@ -2,8 +2,11 @@ from splash_tiled.access_control.user_office import ( ensure_schema, + get_beamline_staff_group_map, + get_beamline_staff_groups, get_esaf_orcid_map, sync_beamline, + sync_beamline_staff_groups, user_key, ) @@ -164,3 +167,34 @@ def test_get_esaf_orcid_map_returns_distinct_orcids_per_esaf() -> None: "0000-0003-2335-7806", ] } + + +def test_sync_beamline_staff_groups_persists_email_members() -> None: + staff_payload = [ + { + "Beamline": "9.3.2", + "Staff": [ + {"Email": "ejcrumlin@lbl.gov"}, + {"Email": "snemsak@lbl.gov"}, + {"Email": "EJCRUMLIN@LBL.GOV"}, + {"Email": " "}, + ], + }, + { + "Beamline": "12.3.2", + "Staff": [ + {"Email": "mblum@lbl.gov"}, + ], + }, + ] + + groups = get_beamline_staff_groups(staff_payload) + + with sqlite3.connect(":memory:") as connection: + ensure_schema(connection) + sync_beamline_staff_groups(connection, groups) + + assert get_beamline_staff_group_map(connection) == { + "12.3.2": ["mblum@lbl.gov"], + "9.3.2": ["ejcrumlin@lbl.gov", "snemsak@lbl.gov"], + } From c02a60af4b4bfc0ef1ccd3cfffecd8dd66e569ca Mon Sep 17 00:00:00 2001 From: Dylan McReynolds Date: Tue, 28 Apr 2026 18:42:42 -0700 Subject: [PATCH 09/31] add testing --- .flake8 | 2 + .gitignore | 5 + .pre-commit-config.yaml | 2 +- Containerfile | 14 +- README.md | 35 + TAGS.md | 239 + docker-compose.yaml | 81 + example_configs/bl733/config.yaml | 21 - pixi.lock | 5630 +++++++++++++++-- pixi.toml | 22 +- pyproject.toml | 1 + pytest.ini | 2 + scripts/seed_dev_catalog.py | 284 + scripts/sync_loop.sh | 4 + scripts/sync_scheduler.py | 217 + scripts/tiled_start.sh | 4 + ...initions.yml => tag_definitions_stub.yaml} | 14 +- src/splash_tiled/access_control/tiled_tags.py | 26 +- .../access_control/user_office.py | 3 + tests/test_tiled_tags.py | 198 +- tests/test_user_office.py | 2 +- tests/test_user_office_integration.py | 99 + tiled_config/config.yaml | 45 + tiled_config/config_compose.yaml | 31 + 24 files changed, 6362 insertions(+), 619 deletions(-) create mode 100644 .flake8 create mode 100644 TAGS.md create mode 100644 docker-compose.yaml delete mode 100644 example_configs/bl733/config.yaml create mode 100644 scripts/seed_dev_catalog.py create mode 100644 scripts/sync_loop.sh create mode 100644 scripts/sync_scheduler.py create mode 100644 scripts/tiled_start.sh rename src/splash_tiled/access_control/{tag_definitions.yml => tag_definitions_stub.yaml} (61%) create mode 100644 tests/test_user_office_integration.py create mode 100644 tiled_config/config.yaml create mode 100644 tiled_config/config_compose.yaml diff --git a/.flake8 b/.flake8 new file mode 100644 index 0000000..6deafc2 --- /dev/null +++ b/.flake8 @@ -0,0 +1,2 @@ +[flake8] +max-line-length = 120 diff --git a/.gitignore b/.gitignore index 90785cd..2765f5e 100755 --- a/.gitignore +++ b/.gitignore @@ -182,4 +182,9 @@ ehthumbs.db *.nc *.zarr/ *.sqlite3 +*.sqlite +*.db +*.sqlite-* +*.sqlite3-* tag_definitions.generated.yml +data/ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 7a5a2f8..05bd414 100755 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -26,7 +26,7 @@ repos: rev: 7.3.0 hooks: - id: flake8 - args: [--max-line-length=88, --extend-ignore=E203] + args: [--max-line-length=120, --extend-ignore=E203] - repo: https://github.com/pre-commit/mirrors-mypy rev: v1.19.1 diff --git a/Containerfile b/Containerfile index 7ac25f2..426acf9 100755 --- a/Containerfile +++ b/Containerfile @@ -1,12 +1,16 @@ FROM ghcr.io/bluesky/tiled:0.2.8 AS base -USER root - -RUN apt-get update && rm -rf /var/lib/apt/lists/* +# uv is a statically-linked Rust binary — no shared-library mprotect call, +# so it works under rootless Podman where `pip` (glibc RELRO) fails. +COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv USER app +ENV PATH=/app/bin:$PATH +ENV PYTHONPATH=/app/src:/tiled_deploy/config COPY --chown=app:app pyproject.toml README.md ./ COPY --chown=app:app src/ ./src/ -RUN python -m ensurepip -RUN python -m pip install --upgrade --no-cache-dir ".[bl733]" +RUN uv pip install --python /app/bin/python --no-cache ".[bl733]" +COPY --chown=app:app scripts/ ./scripts/ +COPY --chown=app:app src/splash_tiled/bl733/adapters/edf.py /tiled_deploy/config/custom/edf.py +COPY --chown=app:app src/splash_tiled/bl733/adapters/gb.py /tiled_deploy/config/custom/gb.py diff --git a/README.md b/README.md index d897879..f7f26d8 100755 --- a/README.md +++ b/README.md @@ -125,6 +125,41 @@ docker run -p 8000:8000 -e TILED_SERVER_ENABLE_ORIGINS=* splash_tiled docker run -p 8000:8000 -v /path/to/data:/data splash_tiled ``` +### Developer Compose Stack + +For access-control testing, use the compose stack in +`docker-compose.dev.yaml`. It starts: + +- `tiled`: Tiled server from the project `Containerfile` +- `sync-worker`: ESAF + staff sync loop from the same image, running on an interval +- `seed-data`: one-shot service that creates a `beamlines` container with + beamline containers, ESAF containers, and array nodes with different + `access_blob.tags` + +Start server + sync worker: + +```bash +docker compose -f docker-compose.dev.yaml up --build -d tiled sync-worker +``` + +Seed the catalog data: + +```bash +docker compose -f docker-compose.dev.yaml run --rm seed-data +``` + +Adjust sync cadence and target beamlines via environment variables in +`docker-compose.dev.yaml`: + +- `SYNC_CRON` (for example: `*/5 * * * *`) +- `BEAMLINES` (comma-separated list or `all`) + +Stop everything: + +```bash +docker compose -f docker-compose.dev.yaml down +``` + ## CI/CD The project includes a comprehensive GitHub Actions workflow that: diff --git a/TAGS.md b/TAGS.md new file mode 100644 index 0000000..8aeb3b8 --- /dev/null +++ b/TAGS.md @@ -0,0 +1,239 @@ +# Access Control: Tags + +This package implements tag-based access control for the Tiled catalog. Access to +nodes (arrays, containers) is governed by **tags** that are compiled into a SQLite +database and loaded by Tiled at startup. + +--- + +## Definitions + +### Role + +A named set of Tiled scopes. Two roles are defined in +[`tag_definitions_stub.yaml`](src/splash_tiled/access_control/tag_definitions_stub.yaml): + +| Role | Scopes | +|---|---| +| `facility_user` | `read:data`, `read:metadata` | +| `facility_admin` | read + write + delete + create + register | + +### Tag + +A named group of principals (users or ORCID groups) and the role they hold within +that tag. A node in the catalog is tagged by attaching one or more tag names to it; +only principals that are members of those tags can access the node. + +```yaml +# Example: everyone in the SB-01482-001 ESAF group gets read access +SB-01482-001: + groups: + - name: SB-01482-001 # resolved to a list of ORCIDs at compile time + role: facility_user +``` + +### Auto-tag + +A list of additional tags that are automatically applied whenever a node is tagged +with a given tag. If a node is tagged with `SB-01482-001`, Tiled also applies every +tag listed under its `auto_tags`, without the data writer having to name them +explicitly. + +```yaml +SB-01482-001: + auto_tags: + - name: data_admin # data admins automatically see every ESAF node + - name: 12.3.2-staff # beamline staff automatically see their own ESAFs +``` + +### Tag owner + +A set of principals that are allowed to *apply* a tag to a node. Defined in +`tag_owners`. If omitted for a tag, only Tiled admins can apply it. + +### Compiled tags database + +`compiled_tags.sqlite` — the output of the `tiled_tags compile` command. It +resolves every group name to a concrete list of user identities (ORCIDs) and stores +the results in a form that Tiled can query at request time. Tiled reloads this file +automatically; no server restart is required after a recompile. + +--- + +## How tags are used for proposals, staff, and auto-tags + +### ESAF / proposal tags + +Each ESAF (Experiment Safety Approval Form) is identified by a **friendly ID** such +as `SB-01482-001`. During compilation, one tag is emitted per ESAF: + +```yaml +SB-01482-001: + groups: + - name: SB-01482-001 # ESAF participants (resolved from User Office) + role: facility_user + - name: 12.3.2-staff # beamline staff also get read access + role: facility_user + auto_tags: + - name: data_admin # site-wide data admins always inherit access + - name: 12.3.2-staff # beamline staff tag applied automatically +``` + +A data writer tags a node with `SB-01482-001`. Tiled then grants read access to: +- every participant listed in that ESAF (resolved via their ORCID) +- every staff member of beamline `12.3.2` +- everyone in the `data_admin` tag + +### Beamline staff tags + +Each beamline gets an explicit staff tag of the form `-staff` (e.g. +`12.3.2-staff`). The group is populated from the User Office "beamline staff" +endpoint and compiled to a list of ORCIDs. + +```yaml +12.3.2-staff: + groups: + - name: 12.3.2-staff + role: facility_user +``` + +Staff tags can be applied directly to a node to grant access without requiring an +ESAF — for example, internal beamline commissioning data. They are also applied +automatically via `auto_tags` on every ESAF tag for that beamline (see above). + +### Static / administrative tags + +Tags such as `data_admin` are defined statically in +[`tag_definitions_stub.yaml`](src/splash_tiled/access_control/tag_definitions_stub.yaml) and list named users rather than +dynamically resolved groups: + +```yaml +data_admin: + users: + - name: cara + role: facility_admin +``` + +These are merged verbatim into the generated YAML and compiled alongside the +dynamic ESAF/staff tags. + +### Tag flow summary + +``` +node tagged with SB-01482-001 + │ + ├─ SB-01482-001 group → ESAF participants (facility_user) + ├─ 12.3.2-staff group → beamline staff (facility_user) + │ + └─ auto_tags applied automatically: + data_admin → site admins (facility_admin) + 12.3.2-staff → beamline staff (facility_user) +``` + +--- + +## How to run an update + +Updates are normally performed automatically by the `sync-worker` container on the +schedule configured by `SYNC_CRON`. The steps below show how to trigger a manual +update from the host or inside a container. + +### Step 1 — Sync ESAFs and staff from the User Office API + +```bash +python -m splash_tiled.access_control.user_office \ + --beamline 12.3.2 --beamline 9.3.2 --beamline 7.0.2 \ + --db-path data/esafs.sqlite3 \ + --api-url https://als-esaf.als.lbl.gov/EsafInformation/GetEsaf +``` + +Use `--all` instead of individual `--beamline` flags to sync every beamline. This +writes ESAF and staff records to `esafs.sqlite3`. + +### Step 2 — Compile tags + +```bash +python -m splash_tiled.access_control.tiled_tags compile \ + --esaf-sqlite-path data/esafs.sqlite3 \ + --tag-definitions-path src/splash_tiled/access_control/tag_definitions_stub.yaml \ + --generated-yaml-path data/tag_definitions.generated.yml \ + --output-sqlite-path data/compiled_tags.sqlite +``` + +This command: +1. Reads `esafs.sqlite3` to build per-ESAF and per-beamline-staff tags. +2. Merges them with the static definitions in `tag_definitions_stub.yaml`. +3. Writes the merged YAML to `tag_definitions.generated.yml` (useful for + inspection and debugging). +4. Compiles the YAML into `compiled_tags.sqlite`, resolving all group names to + ORCID lists. + +Tiled picks up the new `compiled_tags.sqlite` automatically — no restart needed. + +### Using podman-compose (inside the sync-worker container) + +```bash +podman-compose run --rm --no-deps sync-worker \ + python -m splash_tiled.access_control.tiled_tags compile \ + --esaf-sqlite-path /app/data/esafs.sqlite3 \ + --tag-definitions-path /app/src/splash_tiled/access_control/tag_definitions_stub.yaml \ + --generated-yaml-path /app/data/tag_definitions.generated.yml \ + --output-sqlite-path /app/data/compiled_tags.sqlite +``` + +### Verifying the result + +```bash +# Check compiled staff tags +sqlite3 data/compiled_tags.sqlite \ + "SELECT name FROM tags WHERE name LIKE '%-staff' ORDER BY name" + +# Count all compiled tags +sqlite3 data/compiled_tags.sqlite "SELECT COUNT(*) FROM tags" + +# Inspect a specific proposal's owners +sqlite3 data/compiled_tags.sqlite \ + "SELECT u.name FROM tags t + JOIN tags_users_scopes tus ON tus.tag_id = t.id + JOIN users u ON u.id = tus.user_id + WHERE t.name = 'SB-01482-001' LIMIT 20" +``` + +### Environment variables (sync-worker) + +| Variable | Default | Description | +|---|---|---| +| `SYNC_CRON` | — | Cron expression for automatic sync (required) | +| `BEAMLINES` | `12.3.2,9.3.2,7.0.2` | Comma-separated beamline list, or `all` | +| `ESAF_DB_PATH` | `/app/tags/esafs.sqlite3` | Path to the ESAF SQLite database | +| `TAGS_TEMPLATE` | `/app/src/.../tag_definitions_stub.yaml` | Static tag definitions template | +| `GENERATED_TAGS_YAML` | `/app/tags/tag_definitions.generated.yml` | Generated YAML output path | +| `COMPILED_TAGS_DB` | `/app/tags/compiled_tags.sqlite` | Compiled tags output path | + +--- + +## How to run the integration test + +An integration test is provided to verify that the tag compilation process works end-to-end with live data from the User Office API. This test is **skipped by default** to avoid hitting external services during normal test runs. + +To run the integration test: + +1. Ensure you have network access to the User Office API and any required credentials or environment variables set (see project README for details). +2. Run pytest with the `--user-office` marker enabled: + + ```bash + pixi run pytest -m user_office + ``` + + Or, if running directly: + + ```bash + pytest -m user_office + ``` + +3. The test is located in `tests/test_user_office_integration.py`. It will call the User Office API, trigger tag compilation, and check that the expected tags appear in the compiled tags database. + +**Note:** +- The test will be skipped unless you pass `-m user_office` to pytest. +- This test is intended for development and CI environments where live API access is available and permitted. +- For most development, the unit tests (which do not require live API access) are sufficient. diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..fa5d6c3 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,81 @@ +services: + tiled: + build: + context: . + dockerfile: Containerfile + security_opt: + - label=disable + userns_mode: keep-id + env_file: + - .env + user: "${UID:-1000}:${GID:-1000}" + security_opt: # for podman on SELinux systems, may be ignored in other environments + - label=disable + command: + - bash + - /app/scripts/tiled_start.sh + - /tiled_deploy/config + - --host + - 0.0.0.0 + - --port + - "8000" + ports: + - "8000:8000" + volumes: + - ./data:/app/data:rw,Z + - ./tags:/app/tags:rw,Z + - ./tiled_config/config.yaml:/tiled_deploy/config/config.yaml:ro + restart: unless-stopped + + sync-worker: + build: + context: . + dockerfile: Containerfile + security_opt: + - label=disable + userns_mode: keep-id + user: "${UID:-1000}:${GID:-1000}" + security_opt: + - label=disable + command: + - bash + - /app/scripts/sync_loop.sh + environment: + SYNC_CRON: "*/5 * * * *" + BEAMLINES: "12.3.2,9.3.2,7.0.2" + ESAF_DB_PATH: /app/data/esafs.sqlite3 + COMPILED_TAGS_DB: /app/data/compiled_tags.sqlite + GENERATED_TAGS_YAML: /app/data/tag_definitions.generated.yml + TAGS_TEMPLATE: /app/src/splash_tiled/access_control/tag_definitions_stub.yaml + volumes: + - ./data:/app/data:rw,Z + depends_on: + - tiled + restart: unless-stopped + + seed-data: + build: + context: . + dockerfile: Containerfile + security_opt: + - label=disable + userns_mode: keep-id + user: "${UID:-1000}:${GID:-1000}" + security_opt: + - label=disable + command: + - python + - /app/scripts/seed_dev_catalog.py + - --uri + - http://tiled:8000 + - --wait-seconds + - "90" + volumes: + - ./data:/app/data:rw,Z + - ./tags:/app/tags:ro,Z + depends_on: + - tiled + environment: + ALICE_PASSWORD: ${ALICE_PASSWORD} + COMPILED_TAGS_DB: /app/data/compiled_tags.sqlite + restart: "no" diff --git a/example_configs/bl733/config.yaml b/example_configs/bl733/config.yaml deleted file mode 100644 index 1e0f470..0000000 --- a/example_configs/bl733/config.yaml +++ /dev/null @@ -1,21 +0,0 @@ -file_extensions: - edf: application/x-edf - gb: application/x-gb - -# Placeholder for future exporters that would allow download of arrays as edf or gb -# To be determined if this should include download of metadata as txt files -#media_types: -# array: -# application/x-edf: splash_tiled.bl733.adapters.edf:export_edf -# application/x-gb: splash_tiled.bl733.adapters.gb:export_gb - -trees: - - path: / - tree: tiled.catalog:from_uri - args: - uri: ./data/catalog.db - readable_storage: [./data] - init_if_not_exists: true - adapters_by_mimetype: - application/x-edf: splash_tiled.bl733.adapters.edf:EDFAdapter - application/x-gb: splash_tiled.bl733.adapters.gb:GeneralBinaryPilatus2MAdapter diff --git a/pixi.lock b/pixi.lock index a288b47..2c424de 100644 --- a/pixi.lock +++ b/pixi.lock @@ -8,7 +8,6 @@ environments: packages: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.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/linux-64/adbc-driver-manager-1.10.0-py313h7033f15_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/adbc-driver-postgresql-1.10.0-pyha770c72_0.conda @@ -21,12 +20,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.13.0-pyhcf101f3_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/noarch/appdirs-1.4.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/apscheduler-3.11.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-25.1.0-py313h07c4f96_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.4.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asgi-correlation-id-4.3.3-pyhd8ed1ab_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/async-lru-2.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-timeout-5.0.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/asyncpg-0.31.0-py313h54dd161_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda @@ -50,13 +47,7 @@ environments: - 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/noarch/babel-2.18.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backports.asyncio.runner-1.2.0-pyh5ded981_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.3.0-py313h18e8e13_0.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/linux-64/blosc-1.21.6-he440d0b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py313hf159716_1.conda @@ -71,27 +62,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/canonicaljson-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py313hf46b229_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/charls-2.4.3-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.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/linux-64/contourpy-1.3.3-py313hc8edb43_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.13.5-py313h3dea7bd_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.12-py313hd8ed1ab_100.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-46.0.5-py313heb322e3_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-py313h07c4f96_2.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/linux-64/dav1d-1.2.1-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.20-py313h5d5ffb9_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/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/dnspython-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/donfig-0.8.1.post1-pyhd8ed1ab_1.conda @@ -101,14 +83,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-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/executing-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fabio-2025.10.0-py313h29aa505_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.135.2-hc25896d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.23-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.135.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.25.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-7.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.3.0-pyhd8ed1ab_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 @@ -130,41 +108,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-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/linux-64/icu-78.3-h33c6efd_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.18-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2026.3.6-py313h67fa517_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imageio-2.37.0-pyhfb79c49_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_resources-6.5.2-pyhd8ed1ab_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/ipykernel-7.2.0-pyha191276_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.12.0-pyhecfbec7_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/isoduration-20.11.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isort-8.0.1-pyhd8ed1ab_0.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/jmespath-1.1.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json-merge-patch-0.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpointer-3.1.1-pyhcf101f3_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/jsonschema-with-format-nongpl-4.26.0-hcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.3.0-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/jupyter_events-0.12.0-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.17.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.4-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.6-pyhd8ed1ab_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/jupyterlab_server-2.28.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.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/krb5-1.22.2-ha1258a1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.18-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 @@ -218,7 +176,6 @@ environments: - 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/libsodium-1.0.21-h280c20c_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.52.0-hf4e2dac_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_18.conda @@ -244,28 +201,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/mako-1.3.10-pyhcf101f3_1.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/linux-64/markupsafe-3.0.3-py313h3dea7bd_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.1-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/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/minio-7.2.20-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.2.0-pyhcf101f3_0.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/msgpack-python-1.1.2-py313h7037e92_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.19.1-py313h07c4f96_0.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/narwhals-2.18.1-pyhcf101f3_1.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-core-7.17.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ndindex-1.10.1-py313h7033f15_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/linux-64/nlohmann_json-3.12.0-h54a6638_1.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/notebook-7.5.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numba-0.64.0-py313h5dce7c4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numcodecs-0.16.5-py313h08cd8bf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numexpr-2.14.1-py313h24ae7f9_101.conda @@ -278,120 +223,81 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.1-h35e630c_1.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/orjson-3.11.7-py313h541fbb8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.1-py313hbfd7664_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/parso-0.8.6-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/pathspec-1.0.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.1.1-py313h80991f8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-26.0.1-pyh145f28c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.4-pyhcf101f3_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/pre-commit-4.5.1-pyha770c72_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/noarch/prometheus_client-0.24.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py313h54dd161_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/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/linux-64/pyarrow-23.0.1-py313h78bf25f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-23.0.1-py313h98bfbea_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.3-pyhcf101f3_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/linux-64/pycryptodome-3.23.0-py313h6123c0d_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.41.5-py313h843e2db_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.11.0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyflakes-3.4.0-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/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-asyncio-1.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-7.1.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.12-hc97d973_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-blosc2-4.1.2-py313h9545597_1.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.2.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-duckdb-1.3.2-py313h7033f15_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-gil-3.13.12-h4df99d1_100.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-jose-3.5.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.8.1-py313h54dd161_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.22-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pytokens-0.4.1-py313h54dd161_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py313h3dea7bd_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/rav1e-0.8.1-h1fbca29_0.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/noarch/redis-py-7.4.0-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.33.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.19.7-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.30.0-py313h843e2db_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.7.1-h1cbb8d7_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyha191276_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.1-pyh332efcf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h03e3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.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/sparse-0.18.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.48-py313h54dd161_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/stamina-25.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-1.0.0-pyhcf101f3_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/noarch/tblib-3.2.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.4-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyhc90fa1f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tifffile-2026.3.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-0.2.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-base-0.2.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-client-0.2.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-formats-0.2.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-server-0.2.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.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/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/linux-64/tornado-6.5.5-py313h07c4f96_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.24.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-inspection-0.4.2-pyhd8ed1ab_1.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/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.1.0-py313h7037e92_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzlocal-5.3.1-pyh8f84b5b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.42.0-pyhc90fa1f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.42.0-h76e4700_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.22.1-py313h07c4f96_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.2.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.1.1-py313h5c7d99a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-25.10.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/websocket-client-1.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-16.0-py313h54dd161_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.1.2-py313h07c4f96_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2026.2.0-pyhcf101f3_0.conda @@ -400,7 +306,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2026.3.0-pyhd8ed1ab_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/noarch/zarr-3.1.5-pyhcf101f3_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/noarch/zict-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda @@ -410,7 +315,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/adbc-driver-manager-1.10.0-py313he352c24_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/adbc-driver-postgresql-1.10.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/adbc-driver-sqlite-1.10.0-pyha770c72_0.conda @@ -422,12 +326,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.13.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/apscheduler-3.11.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/argon2-cffi-bindings-25.1.0-py313h6194ac5_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.4.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asgi-correlation-id-4.3.3-pyhd8ed1ab_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/async-lru-2.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-timeout-5.0.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/asyncpg-0.31.0-py313h62ef0ea_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda @@ -451,13 +353,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.16.0-h3935e50_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.12.0-h2356a00_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.14.0-h23384eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backports.asyncio.runner-1.2.0-pyh5ded981_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/backports.zstd-1.3.0-py313h3d57138_0.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/linux-aarch64/blosc-1.21.6-hb4dfabd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.2.0-py313hb260801_1.conda @@ -472,27 +368,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/canonicaljson-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-2.0.0-py313h897158f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/charls-2.4.3-hfae3067_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.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/linux-aarch64/contourpy-1.3.3-py313h75bc965_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/coverage-7.13.5-py313hfa222a2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.12-py313hd8ed1ab_100.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cryptography-46.0.5-py313h2e85185_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cyrus-sasl-2.1.28-h6598af7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cytoolz-1.1.0-py313he149459_2.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/linux-aarch64/dav1d-1.2.1-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.20-py313h59403f9_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/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/dnspython-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/donfig-0.8.1.post1-pyhd8ed1ab_1.conda @@ -502,14 +389,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-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/executing-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fabio-2025.10.0-py313hcc1970c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.135.2-hc25896d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.23-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.135.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.25.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-7.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/giflib-5.2.2-h31becfc_0.conda @@ -531,41 +414,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-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/linux-aarch64/icu-78.3-hcab7f73_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.18-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/imagecodecs-2026.3.6-py313hcf3ee17_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imageio-2.37.0-pyhfb79c49_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_resources-6.5.2-pyhd8ed1ab_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/ipykernel-7.2.0-pyha191276_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.12.0-pyhecfbec7_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/isoduration-20.11.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isort-8.0.1-pyhd8ed1ab_0.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/jmespath-1.1.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json-merge-patch-0.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpointer-3.1.1-pyhcf101f3_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/jsonschema-with-format-nongpl-4.26.0-hcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.3.0-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/jupyter_events-0.12.0-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.17.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.4-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.6-pyhd8ed1ab_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/jupyterlab_server-2.28.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jxrlib-1.1-h31becfc_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.22.2-hfd895c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.18-h9d5b58d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.1.0-h52b7260_0.conda @@ -619,7 +482,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpq-18.3-h7d4fc67_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-6.33.5-h1f88751_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2025.11.05-hc5e897d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.21-h80f16a2_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.52.0-h10b116e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-h18c354c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_18.conda @@ -645,27 +507,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/mako-1.3.10-pyhcf101f3_1.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/linux-aarch64/markupsafe-3.0.3-py313hfa222a2_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.1-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/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/minio-7.2.20-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.2.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpc-1.4.0-he6dc3fb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpfr-4.2.2-h3faef18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/msgpack-python-1.1.2-py313he6111f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mypy-1.19.1-py313hd81a959_0.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/narwhals-2.18.1-pyhcf101f3_1.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-core-7.17.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ndindex-1.8-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.12.0-h7ac5ae9_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-7.5.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numba-0.64.0-py313he752a65_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numcodecs-0.16.5-py313h9de0199_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numexpr-2.14.1-py313hc98aa87_1.conda @@ -678,120 +528,81 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.1-h546c87b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.3.0-hce1ac79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orjson-3.11.7-py313h9a81766_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-3.0.1-py313h9226a20_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/parso-0.8.6-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/pathspec-1.0.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-12.1.1-py313h20c1486_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-26.0.1-pyh145f28c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.4-pyhcf101f3_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/pre-commit-4.5.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.24.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-7.2.2-py313h62ef0ea_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.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/linux-aarch64/pyarrow-23.0.1-py313h1258fbd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-23.0.1-py313hc35d149_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.3-pyhcf101f3_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/linux-aarch64/pycryptodome-3.23.0-py313h2fc25cf_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.41.5-py313h5e7b836_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.11.0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyflakes-3.4.0-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/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-asyncio-1.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-7.1.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.13.12-h4c0d347_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-blosc2-4.1.2-py313h75e4f28_1.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.2.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-duckdb-1.3.2-py313he352c24_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-gil-3.13.12-h4df99d1_100.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-jose-3.5.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-librt-0.8.1-py313h62ef0ea_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.22-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pytokens-0.4.1-py313h62ef0ea_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.3-py313hd3a54cf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-27.1.0-py312hdf0a211_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rav1e-0.8.1-h9d4cc37_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2025.11.05-he0da282_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.3-hb682ff5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/redis-py-7.4.0-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.33.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.19.7-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.30.0-py313h8f1d341_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.7.1-h6629d95_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyha191276_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.1-pyh332efcf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.2-he774c54_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.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/sparse-0.18.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sqlalchemy-2.0.48-py313hc37f9cf_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/stamina-25.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-1.0.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-4.0.1-hfae3067_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/tenacity-9.1.4-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyhc90fa1f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tifffile-2026.3.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-0.2.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-base-0.2.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-client-0.2.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-formats-0.2.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-server-0.2.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h0dc03b3_103.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/linux-aarch64/tornado-6.5.5-py313he149459_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.24.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-inspection-0.4.2-pyhd8ed1ab_1.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/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ukkonen-1.1.0-py313he6111f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzlocal-5.3.1-pyh8f84b5b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.42.0-pyhc90fa1f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.42.0-h76e4700_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.22.1-py313h6194ac5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.2.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.1.1-py313he77ad87_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-25.10.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/websocket-client-1.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-16.0-py313h62ef0ea_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-2.1.2-py313h6194ac5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2026.2.0-pyhcf101f3_0.conda @@ -800,7 +611,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2026.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-h80f16a2_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zarr-3.1.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-hc0523f8_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zfp-1.0.1-h05c1e92_5.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.0-pyhcf101f3_1.conda @@ -810,7 +620,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda osx-64: - conda: https://conda.anaconda.org/conda-forge/osx-64/_openmp_mutex-4.5-7_kmp_llvm.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/osx-64/adbc-driver-manager-1.10.0-py313hbc4457e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/adbc-driver-postgresql-1.10.0-pyha770c72_0.conda @@ -823,13 +632,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.13.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/aom-3.9.1-hf036a51_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-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/apscheduler-3.11.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-25.1.0-py313hf050af9_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.4.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asgi-correlation-id-4.3.3-pyhd8ed1ab_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/async-lru-2.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-timeout-5.0.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/asyncpg-0.31.0-py313h16366db_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda @@ -853,13 +659,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-blobs-cpp-12.16.0-h9b4319f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-common-cpp-12.12.0-h7373072_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.14.0-he1781d6_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backports.asyncio.runner-1.2.0-pyh5ded981_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/backports.zstd-1.3.0-py313h591e92b_0.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/osx-64/blosc-1.21.6-hd145fbb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.2.0-py313h8d69aa9_1.conda @@ -874,27 +674,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/canonicaljson-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-2.0.0-py313hf57695f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/charls-2.4.3-hcc62823_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.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/osx-64/contourpy-1.3.3-py313h98b818e_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.13.5-py313h035b7d0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.12-py313hd8ed1ab_100.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cryptography-46.0.5-py313h6e3882f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cyrus-sasl-2.1.28-h7cc0300_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cytoolz-1.1.0-py313h36bb7f5_2.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/osx-64/dav1d-1.2.1-h0dc2134_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.20-py313h8b5a893_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/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/dnspython-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/donfig-0.8.1.post1-pyhd8ed1ab_1.conda @@ -904,14 +695,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-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/executing-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fabio-2025.10.0-py313hceb611b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.135.2-hc25896d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.23-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.135.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.25.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-7.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gflags-2.2.2-hac325c4_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/giflib-5.2.2-h10d778d_0.conda @@ -933,40 +720,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-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/osx-64/icu-78.3-h25d91c4_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.18-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/imagecodecs-2026.3.6-py313h7f7f87f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imageio-2.37.0-pyhfb79c49_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_resources-6.5.2-pyhd8ed1ab_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/ipykernel-7.2.0-pyh5552912_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.12.0-pyhecfbec7_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/isoduration-20.11.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isort-8.0.1-pyhd8ed1ab_0.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/jmespath-1.1.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json-merge-patch-0.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpointer-3.1.1-pyhcf101f3_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/jsonschema-with-format-nongpl-4.26.0-hcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.3.0-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/jupyter_events-0.12.0-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.17.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.4-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.6-pyhd8ed1ab_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/jupyterlab_server-2.28.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jxrlib-1.1-h10d778d_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.22.2-h207b36a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.18-h90db99b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.1.0-h35c7297_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20260107.1-cxx17_h7ed6875_0.conda @@ -1018,7 +785,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libpq-18.3-h94170d9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-6.33.5-h29d92e8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2025.11.05-h6e8c311_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.21-hc6ced15_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.52.0-h77d7759_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.1-hed3591d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libthrift-0.22.0-h687e942_1.conda @@ -1041,27 +807,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/mako-1.3.10-pyhcf101f3_1.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/osx-64/markupsafe-3.0.3-py313h035b7d0_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.1-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/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/minio-7.2.20-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.2.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/mpc-1.4.0-h31caf2d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/mpfr-4.2.2-h31caf2d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/msgpack-python-1.1.2-py313h5eff275_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.19.1-py313hf050af9_0.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/narwhals-2.18.1-pyhcf101f3_1.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-core-7.17.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ndindex-1.10.1-py313hc4a83b5_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/osx-64/nlohmann_json-3.12.0-h06076ce_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-7.5.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numba-0.64.0-py313h4fc6aae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numcodecs-0.16.5-py313h2f264a9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numexpr-2.14.1-py313h821d116_1.conda @@ -1074,121 +828,80 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.1-hb6871ef_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/orc-2.3.0-hb9b210e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/orjson-3.11.7-py313h9317e59_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-3.0.1-py313hfd25234_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/parso-0.8.6-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/pathspec-1.0.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-12.1.1-py313h16bb925_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-26.0.1-pyh145f28c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.4-pyhcf101f3_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/pre-commit-4.5.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/prometheus-cpp-1.3.0-h7802330_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.24.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.2.2-py313h16366db_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-h00291cd_1002.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/osx-64/pyarrow-23.0.1-py313habf4b1d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-23.0.1-py313h345cca6_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.3-pyhcf101f3_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/osx-64/pycryptodome-3.23.0-py313h590ad5b_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pydantic-core-2.41.5-py313hcc225dc_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.11.0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyflakes-3.4.0-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/osx-64/pyobjc-core-12.1-py313h07bcf3a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-12.1-py313hf669bc3_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.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-asyncio-1.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-7.1.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.12-h894a449_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-blosc2-4.1.2-py313h99e2700_1.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.2.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-duckdb-1.3.2-py313h253db18_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-gil-3.13.12-h4df99d1_100.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-jose-3.5.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-librt-0.8.1-py313h22ab4a2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.22-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pytokens-0.4.1-py313h16366db_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.3-py313h7c6a591_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.1.0-py312h2ac7433_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rav1e-0.8.1-h618d828_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2025.11.05-h77e0585_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.3-h68b038d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/redis-py-7.4.0-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.33.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.19.7-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.30.0-py313hcc225dc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyh5552912_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.1-pyh332efcf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/snappy-1.2.2-h01f5ddf_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.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/sparse-0.18.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/sqlalchemy-2.0.48-py313h22ab4a2_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/stamina-25.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-1.0.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/svt-av1-4.0.1-h991f03e_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/tenacity-9.1.4-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyhc90fa1f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tifffile-2026.3.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-0.2.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-base-0.2.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-client-0.2.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-formats-0.2.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-server-0.2.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h7142dee_3.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/osx-64/tornado-6.5.5-py313hf59fe81_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.24.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-inspection-0.4.2-pyhd8ed1ab_1.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/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.1.0-py313h252b9d7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzlocal-5.3.1-pyh8f84b5b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.42.0-pyhc90fa1f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.42.0-h76e4700_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/uvloop-0.22.1-py313hf050af9_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.2.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/watchfiles-1.1.1-py313ha265c4a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-25.10.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/websocket-client-1.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/websockets-16.0-py313h16366db_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/wrapt-2.1.2-py313hf59fe81_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2026.2.0-pyhcf101f3_0.conda @@ -1197,7 +910,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2026.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h4132b18_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zarr-3.1.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h27d9b8f_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zfp-1.0.1-h1b13a81_4.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.0-pyhcf101f3_1.conda @@ -1207,7 +919,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h3eecb57_6.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/_openmp_mutex-4.5-7_kmp_llvm.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/adbc-driver-manager-1.10.0-py313h6deaedc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/adbc-driver-postgresql-1.10.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/adbc-driver-sqlite-1.10.0-pyha770c72_0.conda @@ -1219,13 +930,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.13.0-pyhcf101f3_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/noarch/appdirs-1.4.4-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/apscheduler-3.11.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-25.1.0-py313h6535dbc_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.4.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asgi-correlation-id-4.3.3-pyhd8ed1ab_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/async-lru-2.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-timeout-5.0.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/asyncpg-0.31.0-py313h6688731_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda @@ -1249,13 +957,7 @@ environments: - 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/noarch/babel-2.18.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backports.asyncio.runner-1.2.0-pyh5ded981_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/backports.zstd-1.3.0-py313h48bb75e_0.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/osx-arm64/blosc-1.21.6-h7dd00d9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.2.0-py313hde1f3bb_1.conda @@ -1270,18 +972,1535 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/canonicaljson-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-2.0.0-py313h224173a_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/charls-2.4.3-hf6b4638_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.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/osx-arm64/contourpy-1.3.3-py313h2af2deb_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-46.0.5-py313he3f6fad_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-py313h0997733_2.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/osx-arm64/dav1d-1.2.1-hb547adb_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/distributed-2026.3.0-pyhc364b38_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.8.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/donfig-0.8.1.post1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ecdsa-0.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.3.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-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/osx-arm64/fabio-2025.10.0-py313hf5115c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.135.2-hc25896d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.23-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.135.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.3.0-pyhd8ed1ab_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/glog-0.7.1-heb240a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/glymur-0.14.7-pyhd8ed1ab_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-py313h8b87f87_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/google-crc32c-1.8.0-py313h11ab6f4_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/greenlet-3.3.2-py313h1188861_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhcf101f3_1.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/osx-arm64/h5py-3.16.0-nompi_py313h2c4073f_101.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-2.1.0-nompi_hc95e3eb_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5plugin-6.0.0-py313h9c23d4e_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.7.1-py313h6535dbc_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-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/osx-arm64/icu-78.3-hef89b57_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/imagecodecs-2026.3.6-py313h8864aa1_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imageio-2.37.0-pyhfb79c49_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_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.1.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json-merge-patch-0.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpointer-3.1.1-pyhcf101f3_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/osx-arm64/jxrlib-1.1-h93a5062_3.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/lcms2-2.18-hdfa7624_0.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/libadbc-driver-postgresql-1.10.0-h217c5a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libadbc-driver-sqlite-1.10.0-hb70094c_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-23.0.1-h2124f06_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-23.0.1-hee8fe31_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-compute-23.0.1-h3b6a98a_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-23.0.1-hee8fe31_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-23.0.1-h05be00f_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.4.1-hfce71f6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.11.0-6_h51639a9_openblas.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-6_hb0561ab_openblas.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.19.0-hd5a2499_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-22.1.2-h55c6f16_0.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/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.7.5-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_18.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-h07b0088_18.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-hdae7583_18.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/libhwy-1.3.0-h48b13b8_1.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/libjpeg-turbo-3.1.2-hc919400_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjxl-0.11.2-h913acd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.11.0-6_hd9741b5_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.2-h8088a28_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h84a0fba_1.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/libopenblas-0.3.32-openmp_he657e61_0.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/libparquet-23.0.1-h16c0493_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.56-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/libsqlite-3.52.0-h1ae2325_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/libthrift-0.22.0-h14a376c_1.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/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/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.2-h5ef1a60_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.2-h8d039ee_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxslt-1.1.43-hb2570ba_1.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/libzopfli-1.0.3-h9f76cd9_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-22.1.2-hc7d1edf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvmlite-0.46.0-py313he297ed2_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/osx-arm64/lxml-6.0.2-py313he6cafaa_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-4.4.5-py313hd065f0a_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/noarch/mako-1.3.10-pyhcf101f3_1.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/osx-arm64/markupsafe-3.0.3-py313h65a2061_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/minio-7.2.20-pyhd8ed1ab_0.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-py313ha61f8ec_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.18.1-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ndindex-1.8-pyhd8ed1ab_1.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.64.0-py313h3ca053b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numcodecs-0.16.5-py313h7d16b84_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numexpr-2.14.1-py313h73ed539_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.4.3-py313he4a34aa_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/obstore-0.9.2-py313h7d00576_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/openjph-0.26.3-h2a4d681_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openldap-2.6.10-hf7f56bc_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py313he4f8f71_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.1-hd24854e_1.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/orjson-3.11.7-py313hf195ed2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-3.0.1-py313h6974306_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.1.1-py313h45e5a15_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-26.0.1-pyh145f28c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.4-pyhcf101f3_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/noarch/prometheus_client-0.24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.2.2-py313h6688731_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/pyarrow-23.0.1-py313h39782a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-23.0.1-py313h23b330d_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.3-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pycryptodome-3.23.0-py313hf820cfb_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.41.5-py313h2c089d5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.11.0-pyh3cfb1c2_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/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.12-h20e6be0_100_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-blosc2-4.1.2-py313h7d607e3_1.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-dotenv-1.2.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-duckdb-1.3.2-py313hb4b7877_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-jose-3.5.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.22-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.3-py313h65a2061_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rav1e-0.8.1-h8246384_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/noarch/redis-py-7.4.0-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.33.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.19.7-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.30.0-py313h2c089d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.2-hada39a4_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sparse-0.18.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlalchemy-2.0.48-py313h6688731_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stamina-25.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-1.0.0-pyhcf101f3_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/noarch/tblib-3.2.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tifffile-2026.3.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-0.2.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-base-0.2.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-client-0.2.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-formats-0.2.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-server-0.2.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h010d191_3.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/osx-arm64/tornado-6.5.5-py313h0997733_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.24.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-inspection-0.4.2-pyhd8ed1ab_1.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/tzlocal-5.3.1-pyh8f84b5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.42.0-pyhc90fa1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.42.0-h76e4700_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.22.1-py313h6535dbc_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.1.1-py313h0b74987_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-16.0-py313h6688731_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-2.1.2-py313h0997733_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2026.2.0-pyhcf101f3_0.conda + - 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/noarch/xyzservices-2026.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h925e9cb_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zarr-3.1.5-pyhcf101f3_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/noarch/zict-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.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/zstandard-0.25.0-py313h9734d34_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hbf9d68e_6.conda + dev: + channels: + - url: https://conda.anaconda.org/conda-forge/ + options: + pypi-prerelease-mode: if-necessary-or-explicit + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.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/linux-64/adbc-driver-manager-1.11.0-py313h7033f15_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adbc-driver-postgresql-1.11.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adbc-driver-sqlite-1.11.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiofiles-25.1.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.22.1-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alembic-1.18.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-doc-0.0.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.13.0-pyhcf101f3_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/noarch/appdirs-1.4.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/apscheduler-3.11.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-25.1.0-py313h07c4f96_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.4.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgi-correlation-id-4.3.3-pyhd8ed1ab_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/async-lru-2.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-timeout-5.0.1-pyhcf101f3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/asyncpg-0.31.0-py313h54dd161_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/awkward-2.9.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/awkward-cpp-52-py313hd3cbb54_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.10.1-h2d2dd48_2.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.6.0-h9b893ba_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.10.12-h4bacb7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.26.3-hc87160b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.15.2-he9ea9c5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.11.5-h6d69fc9_5.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.37.4-h4c8aef7_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.747-hc3785e1_3.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/noarch/babel-2.18.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backports.asyncio.runner-1.2.0-pyh5ded981_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.3.0-py313h18e8e13_0.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/linux-64/blosc-1.21.6-he440d0b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py313hf159716_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brunsli-0.1-hd1e3526_2.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/c-blosc2-2.23.1-hc31b594_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-7.0.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/canonicaljson-2.0.0-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/linux-64/cffi-2.0.0-py313hf46b229_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/charls-2.4.3-hecca717_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/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/linux-64/contourpy-1.3.3-py313hc8edb43_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.13.5-py313h3dea7bd_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.13-py313hd8ed1ab_100.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-47.0.0-py313heb322e3_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-py313h07c4f96_2.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/linux-64/dav1d-1.2.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.20-py313h5d5ffb9_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/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/dnspython-2.8.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/donfig-0.8.1.post1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ecdsa-0.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.3.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-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/executing-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fabio-2025.10.0-py313h29aa505_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.136.1-h9093a4d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.23-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.136.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fastar-0.11.0-py313hcf592b0_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/flake8-7.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.3.0-pyhd8ed1ab_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/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/glymur-0.14.7-pyhd8ed1ab_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-py313h86d8783_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/google-crc32c-1.8.0-py313h74173ec_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.5.0-py313h5d5ffb9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhcf101f3_1.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/linux-64/h5py-3.16.0-nompi_py313h22c32d4_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-2.1.0-nompi_hd4fcb43_104.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5plugin-6.0.0-py313hdbdd960_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.7.1-py313h07c4f96_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-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/linux-64/icu-78.3-h33c6efd_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/linux-64/imagecodecs-2026.3.6-py313h0924926_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imageio-2.37.0-pyhfb79c49_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_resources-7.1.0-pyhd8ed1ab_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/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/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isort-8.0.1-pyhd8ed1ab_0.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/jmespath-1.1.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json-merge-patch-0.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpointer-3.1.1-pyhcf101f3_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/jsonschema-with-format-nongpl-4.26.0-hcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.3.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/jupyter_events-0.12.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.17.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.6-pyhd8ed1ab_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/jupyterlab_server-2.28.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.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/krb5-1.22.2-ha1258a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.19-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/libabseil-20260107.1-cxx17_h7b12aa8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libadbc-driver-postgresql-1.11.0-hedb09cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libadbc-driver-sqlite-1.11.0-hcea63bf_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-ha7f89c6_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-24.0.0-h635bf11_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-24.0.0-h53684a4_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-24.0.0-h635bf11_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-24.0.0-hb4dd7c2_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.4.1-hcfa2d63_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-6_h4a7cf45_openblas.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/libcblas-3.11.0-6_h0358290_openblas.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/libcurl-8.19.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/libedit-3.1.20250104-pl5321h7949ede_0.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.7.5-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/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_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.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/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_h47877c9_openblas.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/libmpdec-4.0.0-hb03c661_1.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/libntlm-1.8-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.32-pthreads_h94d23a6_0.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/libparquet-24.0.0-h7376487_0_cpu.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/libsodium-1.0.21-h280c20c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.0-hf4e2dac_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_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_18.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/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/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/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/libzlib-1.3.2-h25fd6f3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzopfli-1.0.3-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.47.0-py313hdd307be_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/lxml-6.1.0-py313h4a16004_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py313h28739b2_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/noarch/mako-1.3.12-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/linux-64/markupsafe-3.0.3-py313h3dea7bd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.1-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/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/minio-7.2.20-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.2.0-pyhcf101f3_0.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/msgpack-python-1.1.2-py313h7037e92_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.20.2-py313h07c4f96_0.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/narwhals-2.20.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-core-7.17.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ndindex-1.10.1-py313h7033f15_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/linux-64/nlohmann_json-3.12.0-h54a6638_1.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/notebook-7.5.5-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numba-0.65.1-py313h5dce7c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numcodecs-0.16.5-py313h08cd8bf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numexpr-2.14.1-py313h24ae7f9_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.3-py313hf6604e3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/obstore-0.9.4-py313h5c7d99a_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/openjph-0.27.0-h8d634f6_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/openpyxl-3.1.5-py313ha4be090_3.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/orc-2.3.0-h21090e2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orjson-3.11.8-py313h541fbb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.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/linux-64/pandas-3.0.2-py313hbfd7664_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/parso-0.8.6-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/pathspec-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.2.0-py313h80991f8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-26.0.1-pyh145f28c_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/pluggy-1.6.0-pyhf9edf01_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/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.25.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py313h54dd161_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/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/linux-64/pyarrow-24.0.0-py313h78bf25f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-24.0.0-py313h98bfbea_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.3-pyhcf101f3_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/linux-64/pycryptodome-3.23.0-py313h6123c0d_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.13.3-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.46.3-py313h843e2db_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.11.0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyflakes-3.4.0-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/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-asyncio-1.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-7.1.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.13-h6add32d_100_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-blosc2-4.1.2-py313h9545597_1.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.2.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-duckdb-1.3.2-py313h7033f15_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-gil-3.13.13-h4df99d1_100.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-jose-3.5.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-3.2.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.9.0-py313h54dd161_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.27-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2026.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pytokens-0.4.1-py313h54dd161_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py313h3dea7bd_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/rav1e-0.8.1-h1fbca29_0.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/noarch/redis-py-7.4.0-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.33.1-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.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-toolkit-0.19.7-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.30.0-py313h843e2db_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.7.1-h1cbb8d7_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyha191276_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h03e3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.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/sparse-0.18.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.49-py313h54dd161_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/stamina-26.1.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-1.0.0-pyhcf101f3_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/noarch/tblib-3.2.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyhc90fa1f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tifffile-2026.4.11-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-0.2.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-base-0.2.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-client-0.2.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-formats-0.2.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-server-0.2.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.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/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/linux-64/tornado-6.5.5-py313h07c4f96_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.25.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-inspection-0.4.2-pyhcf101f3_2.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/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzlocal-5.3.1-pyh8f84b5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.1.0-py313h7037e92_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.46.0-pyhc90fa1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.46.0-hf538af8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.22.1-py313h07c4f96_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.1.1-py313h5c7d99a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-25.10.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/websocket-client-1.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-16.0-py313h54dd161_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.1.2-py313h07c4f96_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2026.4.0-pyhc364b38_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-libxdmcp-1.1.5-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2026.3.0-pyhd8ed1ab_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/noarch/zarr-3.1.6-pyhc364b38_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/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/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/zstandard-0.25.0-py313h54dd161_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/adbc-driver-manager-1.11.0-py313he352c24_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adbc-driver-postgresql-1.2.0-pyh694c41f_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adbc-driver-sqlite-1.11.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiofiles-25.1.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.22.1-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alembic-1.18.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-doc-0.0.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.13.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/apscheduler-3.11.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/argon2-cffi-bindings-25.1.0-py313h6194ac5_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.4.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgi-correlation-id-4.3.3-pyhd8ed1ab_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/async-lru-2.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-timeout-5.0.1-pyhcf101f3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/asyncpg-0.31.0-py313h62ef0ea_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/awkward-2.9.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/awkward-cpp-52-py313h75bc965_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.10.1-h5c15aeb_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.9.13-hc50a40c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.12.6-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.2-h6f28e42_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.6.0-h7ae2b9c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.10.12-h8f13f89_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.26.3-h8d25f22_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.15.2-hdc5d86d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.11.5-h1747a43_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.4-h6f28e42_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.10-h6f28e42_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.37.4-h27c02a5_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.747-h4846bbe_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.16.2-h412bcfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.13.3-h54aad0d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.16.0-h3935e50_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.12.0-h2356a00_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.14.0-h23384eb_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backports.asyncio.runner-1.2.0-pyh5ded981_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/backports.zstd-1.3.0-py313h3d57138_0.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/linux-aarch64/blosc-1.21.6-hb4dfabd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.2.0-py313hb260801_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brunsli-0.1-h099923c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.6-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-blosc2-2.23.1-hde6442c_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-7.0.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/canonicaljson-2.0.0-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/linux-aarch64/cffi-2.0.0-py313h897158f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/charls-2.4.3-hfae3067_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/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/linux-aarch64/contourpy-1.3.3-py313h75bc965_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/coverage-7.13.5-py313hfa222a2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.13-py313hd8ed1ab_100.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cryptography-47.0.0-py313h2e85185_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cytoolz-1.1.0-py313he149459_2.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/linux-aarch64/dav1d-1.2.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.20-py313h59403f9_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/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/dnspython-2.8.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/donfig-0.8.1.post1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ecdsa-0.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.3.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-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/executing-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fabio-2025.10.0-py313hcc1970c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.136.1-h9093a4d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.23-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.136.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fastar-0.11.0-py313hfa1462c_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/flake8-7.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/giflib-5.2.2-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/glymur-0.14.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmp-6.3.0-h0a1ffab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmpy2-2.3.0-py313h4ba42fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/google-crc32c-1.8.0-py313hfb67750_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/greenlet-3.5.0-py313h59403f9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhcf101f3_1.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/linux-aarch64/h5py-3.16.0-nompi_py313h14703b5_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/hdf5-2.1.0-nompi_h81b49a2_104.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/hdf5plugin-6.0.0-py313h900b84a_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.7.1-py313h6194ac5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-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/linux-aarch64/imagecodecs-2026.3.6-py313hb7bab5f_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imageio-2.37.0-pyhfb79c49_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_resources-7.1.0-pyhd8ed1ab_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/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/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isort-8.0.1-pyhd8ed1ab_0.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/jmespath-1.1.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json-merge-patch-0.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpointer-3.1.1-pyhcf101f3_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/jsonschema-with-format-nongpl-4.26.0-hcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.3.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/jupyter_events-0.12.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.17.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.6-pyhd8ed1ab_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/jupyterlab_server-2.28.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jxrlib-1.1-h31becfc_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.22.2-hfd895c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.19-h9d5b58d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.1.0-h52b7260_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20260107.1-cxx17_h6983b43_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libadbc-driver-postgresql-1.2.0-ha63ef31_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libadbc-driver-sqlite-1.11.0-h54c4e81_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libaec-1.1.5-hff7e48a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-24.0.0-h155c802_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-24.0.0-hb326ee9_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-compute-24.0.0-hdd99842_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-24.0.0-hb326ee9_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-24.0.0-hf29bd21_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.4.1-ha599f14_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.11.0-6_haddc8a3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.2.0-he30d5cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.2.0-he30d5cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.2.0-he30d5cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.11.0-6_hd72aa62_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.19.0-hc57f145_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.25-h1af38f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.7.5-hfae3067_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype-2.14.3-h8af1aa0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype6-2.14.3-hdae7a39_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-15.2.0-he9431aa_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-15.2.0-h1b7bec0_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-3.3.0-h04dcd46_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-3.3.0-h66d5b86_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.78.1-heab1e18_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libhwy-1.4.0-h0626a34_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-h90929bb_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.1.4.1-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjxl-0.11.2-hbae46ee_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.11.0-6_h88aeb00_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.3-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmpdec-4.0.0-he30d5cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.68.1-hd3077d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.32-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.26.0-hd82aec3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.26.0-h8af1aa0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-24.0.0-h87079af_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.58-h1abf092_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpq-16.13-h2e882d2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-6.33.5-h1f88751_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2025.11.05-hc5e897d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.21-h80f16a2_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.53.0-h022381a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-h18c354c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-15.2.0-hdbbeba8_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.22.0-ha522d1d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.1-hdb009f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.11.3-hec6f9f7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.42-h1022ec0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.51.0-he30d5cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.6.0-ha2e29f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-16-2.15.3-h064b767_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.15.3-h9ba8346_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxslt-1.1.43-h6700d25_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzopfli-1.0.3-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/llvmlite-0.47.0-py313ha7661e1_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lxml-6.1.0-py313h30cdae8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-4.4.5-py313h2c0738f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mako-1.3.12-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/linux-aarch64/markupsafe-3.0.3-py313hfa222a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.1-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/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/minio-7.2.20-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.2.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpc-1.4.0-he6dc3fb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpfr-4.2.2-h3faef18_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/msgpack-python-1.1.2-py313he6111f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mypy-1.20.2-py313hd81a959_0.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/narwhals-2.20.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-core-7.17.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ndindex-1.8-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.12.0-h7ac5ae9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-7.5.5-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numba-0.65.1-py313he752a65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numcodecs-0.16.5-py313h9de0199_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numexpr-2.14.1-py313hc98aa87_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-2.4.3-py313h11e5ff7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/obstore-0.9.4-py313he77ad87_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.4-h5da879a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjph-0.27.0-h55827e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openpyxl-3.1.5-py313h111ca60_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.2-h546c87b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.3.0-hce1ac79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orjson-3.11.8-py313h9a81766_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.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/linux-aarch64/pandas-3.0.2-py313h59403f9_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/parso-0.8.6-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/pathspec-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-12.2.0-py313h20c1486_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-26.0.1-pyh145f28c_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/pluggy-1.6.0-pyhf9edf01_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/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.25.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-7.2.2-py313h62ef0ea_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.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/linux-aarch64/pyarrow-24.0.0-py313h1258fbd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-24.0.0-py313hc35d149_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.3-pyhcf101f3_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/linux-aarch64/pycryptodome-3.23.0-py313h2fc25cf_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.13.3-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.46.3-py313h5e7b836_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.11.0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyflakes-3.4.0-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/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-asyncio-1.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-7.1.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.13.13-h11c0449_100_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-blosc2-4.1.2-py313h75e4f28_1.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.2.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-duckdb-1.3.2-py313he352c24_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-gil-3.13.13-h4df99d1_100.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-jose-3.5.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-3.2.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-librt-0.9.0-py313h62ef0ea_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.27-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2026.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pytokens-0.4.1-py313h62ef0ea_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.3-py313hd3a54cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-27.1.0-py312hdf0a211_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rav1e-0.8.1-h9d4cc37_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2025.11.05-he0da282_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.3-hb682ff5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/redis-py-7.4.0-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.33.1-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.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-toolkit-0.19.7-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.30.0-py313h8f1d341_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.7.1-h6629d95_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyha191276_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.2-he774c54_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.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/sparse-0.18.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sqlalchemy-2.0.49-py313hc37f9cf_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/stamina-26.1.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-1.0.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-4.0.1-hfae3067_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/tenacity-9.1.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyhc90fa1f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tifffile-2026.4.11-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-0.2.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-base-0.2.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-client-0.2.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-formats-0.2.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-server-0.2.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h0dc03b3_103.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/linux-aarch64/tornado-6.5.5-py313he149459_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.25.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-inspection-0.4.2-pyhcf101f3_2.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/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzlocal-5.3.1-pyh8f84b5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ukkonen-1.1.0-py313he6111f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.46.0-pyhc90fa1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.46.0-hf538af8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.22.1-py313h6194ac5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.1.1-py313he77ad87_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-25.10.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/websocket-client-1.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-16.0-py313h62ef0ea_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-2.1.2-py313h6194ac5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2026.4.0-pyhc364b38_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-he30d5cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-he30d5cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2026.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-h80f16a2_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zarr-3.1.6-pyhc364b38_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-hc0523f8_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zfp-1.0.1-h05c1e92_5.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/linux-aarch64/zlib-1.3.2-hdc9db2a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-ng-2.3.3-ha7cb516_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.25.0-py313h62ef0ea_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda + osx-64: + - conda: https://conda.anaconda.org/conda-forge/osx-64/_openmp_mutex-4.5-7_kmp_llvm.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/osx-64/adbc-driver-manager-1.11.0-py313h9c57c0d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adbc-driver-postgresql-1.11.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adbc-driver-sqlite-1.11.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiofiles-25.1.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.22.1-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alembic-1.18.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-doc-0.0.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.13.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aom-3.9.1-hf036a51_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-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/apscheduler-3.11.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-25.1.0-py313hf050af9_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.4.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgi-correlation-id-4.3.3-pyhd8ed1ab_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/async-lru-2.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-timeout-5.0.1-pyhcf101f3_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/asyncpg-0.31.0-py313h16366db_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/awkward-2.9.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/awkward-cpp-52-py313h45a0507_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-auth-0.10.1-hfd47d4b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-cal-0.9.13-hea39f9f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-common-0.12.6-h8616949_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-compression-0.3.2-hb9ea233_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-event-stream-0.6.0-ha9bd753_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-http-0.10.12-h1037d30_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-io-0.26.3-hc95b61d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-mqtt-0.15.2-h6fabf1c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-s3-0.11.5-hb15a67f_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-sdkutils-0.2.4-h901532c_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-checksums-0.2.10-h31279ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-crt-cpp-0.37.4-h1135fef_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-sdk-cpp-1.11.747-h17cee85_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-core-cpp-1.16.2-h87f1c7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-identity-cpp-1.13.3-h1135191_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-blobs-cpp-12.16.0-h9b4319f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-common-cpp-12.12.0-h7373072_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.14.0-he1781d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backports.asyncio.runner-1.2.0-pyh5ded981_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/backports.zstd-1.3.0-py313h591e92b_0.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/osx-64/blosc-1.21.6-hd145fbb_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.2.0-py313h8d69aa9_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brunsli-0.1-ha00ef93_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.6-hb5e19a0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/c-blosc2-2.23.1-h548f922_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-7.0.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/canonicaljson-2.0.0-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/osx-64/cffi-2.0.0-py313hf57695f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/charls-2.4.3-hcc62823_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/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/osx-64/contourpy-1.3.3-py313h98b818e_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.13.5-py313h035b7d0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.13-py313hd8ed1ab_100.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cryptography-47.0.0-py313ha8d32cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cyrus-sasl-2.1.28-h7cc0300_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cytoolz-1.1.0-py313h36bb7f5_2.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/osx-64/dav1d-1.2.1-h0dc2134_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.20-py313h8b5a893_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/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/dnspython-2.8.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/donfig-0.8.1.post1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ecdsa-0.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.3.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-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/executing-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fabio-2025.10.0-py313hceb611b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.136.1-h9093a4d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.23-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.136.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fastar-0.11.0-py313he62640c_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/flake8-7.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gflags-2.2.2-hac325c4_1005.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/giflib-5.2.2-h10d778d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/glog-0.7.1-h2790a97_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/glymur-0.14.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gmp-6.3.0-hf036a51_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gmpy2-2.3.0-py313h75c6c5f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/google-crc32c-1.8.0-py313h49a2f01_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/greenlet-3.5.0-py313h5fe49f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhcf101f3_1.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/osx-64/h5py-3.16.0-nompi_py313h15f83ed_102.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-2.1.0-nompi_h3b1597d_104.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5plugin-6.0.0-py313hfdb907d_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/httptools-0.7.1-py313hf050af9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-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/osx-64/icu-78.3-h25d91c4_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/osx-64/imagecodecs-2026.3.6-py313h925db42_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imageio-2.37.0-pyhfb79c49_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_resources-7.1.0-pyhd8ed1ab_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/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/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isort-8.0.1-pyhd8ed1ab_0.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/jmespath-1.1.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json-merge-patch-0.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpointer-3.1.1-pyhcf101f3_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/jsonschema-with-format-nongpl-4.26.0-hcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.3.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/jupyter_events-0.12.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.17.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.6-pyhd8ed1ab_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/jupyterlab_server-2.28.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/jxrlib-1.1-h10d778d_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.22.2-h207b36a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.19-h5ea7634_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.1.0-h35c7297_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20260107.1-cxx17_h7ed6875_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libadbc-driver-postgresql-1.11.0-hbf5c073_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libadbc-driver-sqlite-1.11.0-hef19893_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libaec-1.1.5-he7c3a48_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-24.0.0-h6b6ab80_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-24.0.0-h66151e4_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-compute-24.0.0-h5d4fa73_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-24.0.0-h66151e4_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-24.0.0-h613493e_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libavif16-1.4.1-h9d3eb37_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.11.0-6_he492b99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.2.0-h8616949_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.2.0-h8616949_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.2.0-h8616949_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.11.0-6_h9b27e0a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcrc32c-1.1.2-he49afe7_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.19.0-h8f0b9e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-22.1.4-h19cb2f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.25-h517ebb2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libevent-2.1.12-ha90c15b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.5-hcc62823_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.5.2-hd1f9c09_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.14.3-h694c41f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.14.3-h58fbd8d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgcc-15.2.0-h08519bb_18.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.2.0-h7e5c614_18.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.2.0-hd16e46c_18.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-3.3.0-h10ed7cb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-storage-3.3.0-hea209c6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.78.1-h147dede_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libhwy-1.4.0-hca42a69_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h57a12c2_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.4.1-ha1e9b39_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libjxl-0.11.2-h473410d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.11.0-6_h859234e_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.3-hbb4bfdb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-hf3981d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.68.1-h70048d4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libntlm-1.8-h6e16a3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.32-openmp_h9e49c7b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopentelemetry-cpp-1.26.0-h7a0a166_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopentelemetry-cpp-headers-1.26.0-h694c41f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libparquet-24.0.0-h527dc83_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.58-he930e7c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpq-18.3-h94170d9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-6.33.5-h29d92e8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2025.11.05-h6e8c311_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.21-hc6ced15_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.53.0-h8f8c405_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.1-hed3591d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libthrift-0.22.0-hebea4ca_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.1-ha0a348c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libutf8proc-2.11.3-hc282952_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.51.0-h58003a5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.17.0-hf1f96e2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-16-2.15.3-h7a90416_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.15.3-h953d39d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxslt-1.1.43-h486b42e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.2-hbb4bfdb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libzopfli-1.0.3-h046ec9c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-22.1.4-h0d3cbff_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvmlite-0.47.0-py313he3abfad_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/lxml-6.1.0-py313hdc5d0a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lz4-4.4.5-py313hab77a93_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lz4-c-1.10.0-h240833e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mako-1.3.12-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/osx-64/markupsafe-3.0.3-py313h035b7d0_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.1-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/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/minio-7.2.20-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.2.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mpc-1.4.0-h31caf2d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mpfr-4.2.2-h31caf2d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/msgpack-python-1.1.2-py313h5eff275_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.20.2-py313hf59fe81_0.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/narwhals-2.20.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-core-7.17.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ndindex-1.10.1-py313hc4a83b5_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/osx-64/nlohmann_json-3.12.0-h06076ce_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-7.5.5-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numba-0.65.1-py313h4fc6aae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numcodecs-0.16.5-py313h2f264a9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numexpr-2.14.1-py313h821d116_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.4.3-py313hb870fc3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/obstore-0.9.4-py313ha3116d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.4-h52bb76a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openjph-0.27.0-h2c0e27e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openldap-2.6.13-h2f5043c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py313hc34da29_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.2-hc881268_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/orc-2.3.0-hb9b210e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/orjson-3.11.8-py313h13dbcd0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.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/osx-64/pandas-3.0.2-py313hfd25234_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/parso-0.8.6-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/pathspec-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-12.2.0-py313h23d381d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-26.0.1-pyh145f28c_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/pluggy-1.6.0-pyhf9edf01_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/osx-64/prometheus-cpp-1.3.0-h7802330_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.25.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.2.2-py313h16366db_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-h00291cd_1002.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/osx-64/pyarrow-24.0.0-py313habf4b1d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-24.0.0-py313h345cca6_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.3-pyhcf101f3_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/osx-64/pycryptodome-3.23.0-py313h590ad5b_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.13.3-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pydantic-core-2.46.3-py313h23ec8f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.11.0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyflakes-3.4.0-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/osx-64/pyobjc-core-12.1-py313h07bcf3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-12.1-py313hf669bc3_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-asyncio-1.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-7.1.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.13-h3d5d122_100_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-blosc2-4.1.2-py313h99e2700_1.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.2.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-duckdb-1.3.2-py313h253db18_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-gil-3.13.13-h4df99d1_100.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-jose-3.5.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-3.2.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-librt-0.9.0-py313h22ab4a2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.27-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2026.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pytokens-0.4.1-py313h16366db_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.3-py313h7c6a591_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.1.0-py312h2ac7433_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rav1e-0.8.1-h618d828_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2025.11.05-h77e0585_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.3-h68b038d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/redis-py-7.4.0-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.33.1-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.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-toolkit-0.19.7-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.30.0-py313hcc225dc_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyh5552912_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/snappy-1.2.2-h01f5ddf_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.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/sparse-0.18.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/sqlalchemy-2.0.49-py313h22ab4a2_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/stamina-26.1.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-1.0.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/svt-av1-4.0.1-h991f03e_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/tenacity-9.1.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyhc90fa1f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tifffile-2026.4.11-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-0.2.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-base-0.2.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-client-0.2.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-formats-0.2.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-server-0.2.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h7142dee_3.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/osx-64/tornado-6.5.5-py313hf59fe81_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.25.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-inspection-0.4.2-pyhcf101f3_2.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/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzlocal-5.3.1-pyh8f84b5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.1.0-py313h252b9d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.46.0-pyhc90fa1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.46.0-hf538af8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/uvloop-0.22.1-py313hf050af9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/watchfiles-1.1.1-py313ha265c4a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-25.10.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/websocket-client-1.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/websockets-16.0-py313h16366db_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/wrapt-2.1.2-py313hf59fe81_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2026.4.0-pyhc364b38_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.12-h8616949_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.5-h8616949_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2026.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h4132b18_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zarr-3.1.6-pyhc364b38_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h27d9b8f_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zfp-1.0.1-h1b13a81_4.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-64/zlib-1.3.2-hbb4bfdb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-ng-2.3.3-h8bce59a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.25.0-py313hcb05632_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h3eecb57_6.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/_openmp_mutex-4.5-7_kmp_llvm.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/adbc-driver-manager-1.11.0-py313h5c1e8ad_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adbc-driver-postgresql-1.2.0-pyh694c41f_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adbc-driver-sqlite-1.11.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiofiles-25.1.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.22.1-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alembic-1.18.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-doc-0.0.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.13.0-pyhcf101f3_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/noarch/appdirs-1.4.4-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/apscheduler-3.11.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-25.1.0-py313h6535dbc_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.4.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgi-correlation-id-4.3.3-pyhd8ed1ab_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/async-lru-2.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-timeout-5.0.1-pyhcf101f3_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/asyncpg-0.31.0-py313h6688731_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/awkward-2.9.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/awkward-cpp-52-py313h2af2deb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.10.1-hcb83491_2.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.6.0-h351c84d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.10.12-h95cdebe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.26.3-h4137820_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.15.2-h69e7467_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.11.5-ha5d16b2_5.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.37.4-h5505c15_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.747-had22720_3.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/noarch/babel-2.18.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backports.asyncio.runner-1.2.0-pyh5ded981_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/backports.zstd-1.3.0-py313h48bb75e_0.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/osx-arm64/blosc-1.21.6-h7dd00d9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.2.0-py313hde1f3bb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brunsli-0.1-he0dfb12_2.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/c-blosc2-2.23.1-hf9886e1_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-7.0.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/canonicaljson-2.0.0-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/osx-arm64/cffi-2.0.0-py313h224173a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/charls-2.4.3-hf6b4638_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/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/osx-arm64/contourpy-1.3.3-py313h2af2deb_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.13.5-py313h65a2061_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.12-py313hd8ed1ab_100.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-46.0.5-py313he3f6fad_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/noarch/cpython-3.13.13-py313hd8ed1ab_100.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-47.0.0-py313he3f6fad_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cytoolz-1.1.0-py313h0997733_2.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 @@ -1302,10 +2521,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-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/osx-arm64/fabio-2025.10.0-py313hf5115c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.135.2-hc25896d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.136.1-h9093a4d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.23-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.135.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.25.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.136.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fastar-0.11.0-py313hb5b1e11_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/flake8-7.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.3.0-pyhd8ed1ab_0.conda @@ -1316,28 +2536,27 @@ environments: - 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-py313h8b87f87_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/google-crc32c-1.8.0-py313h11ab6f4_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/greenlet-3.3.2-py313h1188861_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/greenlet-3.5.0-py313h1188861_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhcf101f3_1.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/osx-arm64/h5py-3.16.0-nompi_py313h2c4073f_101.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-2.1.0-nompi_hc95e3eb_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/h5py-3.16.0-nompi_py313h2c4073f_102.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-2.1.0-nompi_hc95e3eb_104.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5plugin-6.0.0-py313h9c23d4e_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.7.1-py313h6535dbc_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-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/osx-arm64/icu-78.3-hef89b57_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.18-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/imagecodecs-2026.3.6-py313h8864aa1_1.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/osx-arm64/imagecodecs-2026.3.6-py313h528e791_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imageio-2.37.0-pyhfb79c49_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_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-7.1.0-pyhd8ed1ab_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/ipykernel-7.2.0-pyh5552912_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.12.0-pyhecfbec7_0.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/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isort-8.0.1-pyhd8ed1ab_0.conda @@ -1351,10 +2570,10 @@ environments: - 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/jsonschema-with-format-nongpl-4.26.0-hcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.3.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/jupyter_events-0.12.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.17.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.6-pyhd8ed1ab_0.conda @@ -1363,17 +2582,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jxrlib-1.1-h93a5062_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.22.2-h385eeb1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.3.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.18-hdfa7624_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.19-hdfa7624_0.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/libadbc-driver-postgresql-1.10.0-h217c5a4_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libadbc-driver-sqlite-1.10.0-hb70094c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libadbc-driver-postgresql-1.2.0-h8c87c49_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libadbc-driver-sqlite-1.11.0-h05a11e9_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-23.0.1-h2124f06_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-23.0.1-hee8fe31_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-compute-23.0.1-h3b6a98a_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-23.0.1-hee8fe31_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-23.0.1-h05be00f_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-24.0.0-h2124f06_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-24.0.0-hee8fe31_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-compute-24.0.0-h3b6a98a_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-24.0.0-hee8fe31_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-24.0.0-h05be00f_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.4.1-hfce71f6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.11.0-6_h51639a9_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.2.0-hc919400_1.conda @@ -1382,7 +2601,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.11.0-6_hb0561ab_openblas.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.19.0-hd5a2499_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-22.1.2-h55c6f16_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-22.1.4-h55c6f16_0.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/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda @@ -1397,44 +2616,43 @@ environments: - 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/libhwy-1.3.0-h48b13b8_1.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/libjpeg-turbo-3.1.2-hc919400_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjxl-0.11.2-h913acd8_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-6_hd9741b5_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.2-h8088a28_0.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/libmpdec-4.0.0-h84a0fba_1.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/libopenblas-0.3.32-openmp_he657e61_0.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/libparquet-23.0.1-h16c0493_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.56-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/libparquet-24.0.0-h16c0493_0_cpu.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-16.13-h795a7be_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/libsodium-1.0.21-h1a92334_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.52.0-h1ae2325_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.53.0-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/libthrift-0.22.0-h14a376c_1.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/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/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.2-h5ef1a60_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.2-h8d039ee_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.3-h6967ea9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.3-heed7d32_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxslt-1.1.43-hb2570ba_1.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/libzopfli-1.0.3-h9f76cd9_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-22.1.2-hc7d1edf_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvmlite-0.46.0-py313he297ed2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-22.1.4-hc7d1edf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvmlite-0.47.0-py313h691f2cf_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lxml-6.0.2-py313he6cafaa_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lxml-6.1.0-py313h28ec6f0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-4.4.5-py313hd065f0a_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/noarch/mako-1.3.10-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mako-1.3.12-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/osx-arm64/markupsafe-3.0.3-py313h65a2061_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.1-pyhd8ed1ab_0.conda @@ -1445,11 +2663,11 @@ environments: - 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-py313ha61f8ec_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-1.19.1-py313hd3e6d80_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-1.20.2-py313hd3e6d80_0.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/narwhals-2.18.1-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.20.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-core-7.17.0-pyhcf101f3_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/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ndindex-1.8-pyhd8ed1ab_1.conda @@ -1458,69 +2676,68 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-7.5.5-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numba-0.64.0-py313h3ca053b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numba-0.65.1-py313h3ca053b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numcodecs-0.16.5-py313h7d16b84_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numexpr-2.14.1-py313h73ed539_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.4.3-py313he4a34aa_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/obstore-0.9.2-py313h7d00576_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/obstore-0.9.4-py313h7d00576_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/openjph-0.26.3-h2a4d681_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openldap-2.6.10-hf7f56bc_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjph-0.27.0-h2a4d681_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py313he4f8f71_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.1-hd24854e_1.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/orc-2.3.0-hd11884d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orjson-3.11.7-py313hf195ed2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orjson-3.11.8-py313hf195ed2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-3.0.1-py313h6974306_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.2-pyhc364b38_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-3.0.2-py313h1188861_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/parso-0.8.6-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/pathspec-1.0.4-pyhd8ed1ab_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/pexpect-4.9.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.1.1-py313h45e5a15_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.2.0-py313h45e5a15_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-26.0.1-pyh145f28c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.4-pyhcf101f3_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/pluggy-1.6.0-pyhf9edf01_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.5.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.6.0-pyha770c72_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/noarch/prometheus_client-0.24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.25.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.2.2-py313h6688731_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/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/osx-arm64/pyarrow-23.0.1-py313h39782a4_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-23.0.1-py313h23b330d_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-24.0.0-py313h39782a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-24.0.0-py313h23b330d_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.3-pyhcf101f3_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/osx-arm64/pycryptodome-3.23.0-py313hf820cfb_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.41.5-py313h2c089d5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.13.3-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.46.3-py313h212e517_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.11.0-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyflakes-3.4.0-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/osx-arm64/pyobjc-core-12.1-py313h40b429f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-12.1-py313hcc5defa_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.2-pyhcf101f3_0.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-asyncio-1.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-7.1.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.12-h20e6be0_100_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.13-h20e6be0_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-blosc2-4.1.2-py313h7d607e3_1.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.2.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.2.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-duckdb-1.3.2-py313hb4b7877_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-gil-3.13.12-h4df99d1_100.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.13-h4df99d1_100.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-jose-3.5.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-librt-0.8.1-py313h6688731_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.22-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-3.2.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-librt-0.9.0-py313h6688731_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.27-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2026.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytokens-0.4.1-py313h6688731_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.3-py313h65a2061_1.conda @@ -1530,11 +2747,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.3-h46df422_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/redis-py-7.4.0-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.33.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.33.1-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-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-toolkit-0.19.7-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.30.0-py313h2c089d5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda @@ -1547,39 +2764,40 @@ environments: - 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/sparse-0.18.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlalchemy-2.0.48-py313h6688731_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlalchemy-2.0.49-py313h6688731_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/stamina-25.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stamina-26.1.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-1.0.0-pyhcf101f3_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/noarch/tblib-3.2.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyhc90fa1f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tifffile-2026.3.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-0.2.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-base-0.2.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-client-0.2.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-formats-0.2.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-server-0.2.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tifffile-2026.4.11-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-0.2.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-base-0.2.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-client-0.2.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-formats-0.2.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-server-0.2.9-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h010d191_3.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/osx-arm64/tornado-6.5.5-py313h0997733_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.24.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.25.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-inspection-0.4.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhcf101f3_2.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/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzlocal-5.3.1-pyh8f84b5b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.1.0-py313h5c29297_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.42.0-pyhc90fa1f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.42.0-h76e4700_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.46.0-pyhc90fa1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.46.0-hf538af8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.22.1-py313h6535dbc_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.2.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.1.1-py313h0b74987_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-25.10.0-pyhd8ed1ab_0.conda @@ -1587,16 +2805,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-16.0-py313h6688731_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-2.1.2-py313h0997733_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2026.2.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2026.4.0-pyhc364b38_0.conda - 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/noarch/xyzservices-2026.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h925e9cb_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zarr-3.1.5-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zarr-3.1.6-pyhc364b38_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/noarch/zict-3.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_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/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/zstandard-0.25.0-py313h9734d34_1.conda @@ -1682,6 +2900,21 @@ packages: license_family: APACHE size: 348564 timestamp: 1767962243322 +- conda: https://conda.anaconda.org/conda-forge/linux-64/adbc-driver-manager-1.11.0-py313h7033f15_0.conda + sha256: d327efeb1fbcee99869e0075deea6233f59109f3e83459c389cbeae31ebf9d1c + md5: e834547cf799c1647a0986f9f0684276 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - pyarrow >=8.0.0 + license: Apache-2.0 + license_family: APACHE + size: 431781 + timestamp: 1775526592150 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/adbc-driver-manager-1.10.0-py313he352c24_0.conda sha256: b3fe899a3827adcf568a75095add113b8eef7ad353331965916e322c4ddc85f6 md5: d4af78503f79c64312d57bf7a7552123 @@ -1697,6 +2930,21 @@ packages: license_family: APACHE size: 334489 timestamp: 1767962407260 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/adbc-driver-manager-1.11.0-py313he352c24_0.conda + sha256: d853cd4e6ad0088fc8d0304d772ca9095f9170be37602140a13901088d5d48bb + md5: 150ebff36e42ceb960c432f950d6cf1a + depends: + - libgcc >=14 + - libstdcxx >=14 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - pyarrow >=8.0.0 + license: Apache-2.0 + license_family: APACHE + size: 415436 + timestamp: 1775526623835 - conda: https://conda.anaconda.org/conda-forge/osx-64/adbc-driver-manager-1.10.0-py313hbc4457e_0.conda sha256: e9ea997e74d9cb712e0d7192b406e83d8a7041f0a686db0ab8480e98b25746d6 md5: 840a2553146da80df97489b15a1e3f1c @@ -1711,6 +2959,20 @@ packages: license_family: APACHE size: 314620 timestamp: 1767962676839 +- conda: https://conda.anaconda.org/conda-forge/osx-64/adbc-driver-manager-1.11.0-py313h9c57c0d_0.conda + sha256: 47678655f124e6fa80b36abfe0f8baa4447bc518e3934de7ae246e121676294e + md5: 2ae9d5e9fabc6de3dda7b7b13b79ec9c + depends: + - __osx >=12.0 + - libcxx >=19 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - pyarrow >=8.0.0 + license: Apache-2.0 + license_family: APACHE + size: 366555 + timestamp: 1775630410384 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/adbc-driver-manager-1.10.0-py313h6deaedc_0.conda sha256: 126c23d9e8937118fb6a406c80fbb2f00003d5467a049389f2ac83017861253a md5: 0b690c2cc29e607f96ddc85a97cc7bc4 @@ -1726,6 +2988,21 @@ packages: license_family: APACHE size: 301574 timestamp: 1767963223079 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/adbc-driver-manager-1.11.0-py313h5c1e8ad_0.conda + sha256: 7ce1d1a89119c6128e99d2d7ddbc83d9a410fc1a075eabc52dcbd1d8f77db969 + md5: 9d7de5d42495668bce39ab65b841b8cd + depends: + - __osx >=12.0 + - libcxx >=19 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - pyarrow >=8.0.0 + license: Apache-2.0 + license_family: APACHE + size: 348261 + timestamp: 1775630311550 - conda: https://conda.anaconda.org/conda-forge/noarch/adbc-driver-postgresql-1.10.0-pyha770c72_0.conda sha256: 6e7c57b7293dcbf15b25011246aa570c42800d48b5013b00721c75fe8f5131b3 md5: 95d08731f97580da5dbeb5f1a86a3787 @@ -1740,6 +3017,34 @@ packages: license_family: APACHE size: 25401 timestamp: 1767962903399 +- conda: https://conda.anaconda.org/conda-forge/noarch/adbc-driver-postgresql-1.11.0-pyha770c72_0.conda + sha256: 77877d94f58044692bb8878356305b3a9cad2737b2c90f122ea73be8457924d0 + md5: 11cce1ee72c7f35f42e18116aa698e04 + depends: + - adbc-driver-manager >=1.11.0,<2.0a0 + - importlib_resources + - libadbc-driver-postgresql >=1.11.0,<1.11.1.0a0 + - python >=3.10 + constrains: + - pyarrow >=8.0.0 + license: Apache-2.0 + license_family: APACHE + size: 31243 + timestamp: 1775527180443 +- conda: https://conda.anaconda.org/conda-forge/noarch/adbc-driver-postgresql-1.2.0-pyh694c41f_3.conda + sha256: a632a537c1f6149c79a245831ba5b82370f51203d76e6a3cb19baf0847bf9f47 + md5: 2516d78c47f101571ca65981817d7faa + depends: + - adbc-driver-manager >=1.2.0,<2.0a0 + - importlib_resources + - libadbc-driver-postgresql >=1.2.0,<1.2.1.0a0 + - python >=3.9 + constrains: + - pyarrow >=8.0.0 + license: Apache-2.0 + license_family: APACHE + size: 23347 + timestamp: 1728257915083 - conda: https://conda.anaconda.org/conda-forge/noarch/adbc-driver-sqlite-1.10.0-pyha770c72_0.conda sha256: 703e62c115de57f6cf87b8c815ab032e4bebb93f7516dd66ad111d7002facb27 md5: bfeae3d2acc84bf8ef6776b4b506c130 @@ -1754,6 +3059,20 @@ packages: license_family: APACHE size: 25190 timestamp: 1767962948604 +- conda: https://conda.anaconda.org/conda-forge/noarch/adbc-driver-sqlite-1.11.0-pyha770c72_0.conda + sha256: 341adfb3be3576df484e6c6bd46f0f904545dd346a784e60d9604f59ccf40f5e + md5: e3033a19ff2de79254e1d926804b0d63 + depends: + - adbc-driver-manager >=1.11.0,<2.0a0 + - importlib_resources + - libadbc-driver-sqlite >=1.11.0,<1.11.1.0a0 + - python >=3.10 + constrains: + - pyarrow >=8.0.0 + license: Apache-2.0 + license_family: APACHE + size: 30984 + timestamp: 1775527223964 - conda: https://conda.anaconda.org/conda-forge/noarch/aiofiles-25.1.0-pyhcf101f3_1.conda sha256: f37288164cf28b916b184b0a5e89225e17af0e0c9bcd4d0dc39e5a597fcfeed1 md5: a6435dc39a8031d33d6d52859913e939 @@ -1883,6 +3202,17 @@ packages: license_family: BSD size: 10076 timestamp: 1733332433806 +- conda: https://conda.anaconda.org/conda-forge/noarch/apscheduler-3.11.2-pyhcf101f3_0.conda + sha256: 839fbed64fad615c30312571508058ad813ad4179b6db0edcab347b7a3cf9c14 + md5: 1ef187edb5461b3caf5e443521771872 + depends: + - python >=3.10 + - tzlocal >=3.0 + - python + license: MIT + license_family: MIT + size: 51891 + timestamp: 1770948886783 - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda sha256: bea62005badcb98b1ae1796ec5d70ea0fc9539e7d59708ac4e7d41e2f4bb0bad md5: 8ac12aff0860280ee0cff7fa2cf63f3b @@ -3498,6 +4828,14 @@ packages: license: ISC size: 147413 timestamp: 1772006283803 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.4.22-hbd8a1cb_0.conda + sha256: c9dbcc8039a52023660d6d1bbf87594a93dd69c6ac5a2a44323af2c92976728d + md5: e18ad67cf881dcadee8b8d9e2f8e5f73 + depends: + - __unix + license: ISC + 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 @@ -3526,6 +4864,15 @@ packages: license_family: MIT size: 19034 timestamp: 1773120473852 +- conda: https://conda.anaconda.org/conda-forge/noarch/cachetools-7.0.6-pyhd8ed1ab_0.conda + sha256: f31f02b8bfa312bca79abbc24a0dd1930291cbdaca321b6d1c230687b175a9ff + md5: 14e77b3ebe7b8e37f6254a59ee245184 + depends: + - python >=3.10 + license: MIT + license_family: MIT + size: 19184 + timestamp: 1776719139785 - conda: https://conda.anaconda.org/conda-forge/noarch/canonicaljson-2.0.0-pyhd8ed1ab_0.conda sha256: 2b73c926cf83265cf394ba9ba11839b0a7008ad2af1c55f1e8002f81cb682d00 md5: 7d027ed4883d11a8ba7b27e0dd56df47 @@ -3543,6 +4890,14 @@ packages: license: ISC size: 151445 timestamp: 1772001170301 +- 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 + size: 135656 + timestamp: 1776866680878 - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py313hf46b229_1.conda sha256: 2162a91819945c826c6ef5efe379e88b1df0fe9a387eeba23ddcf7ebeacd5bd6 md5: d0616e7935acab407d1543b28c446f6f @@ -3656,17 +5011,37 @@ packages: license_family: MIT size: 58510 timestamp: 1773660086450 +- 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 + size: 58872 + timestamp: 1775127203018 - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda sha256: 38cfe1ee75b21a8361c8824f5544c3866f303af1762693a178266d7f198e8715 md5: ea8a6c3256897cc31263de9f455e25d9 depends: - - python >=3.10 + - python >=3.10 + - __unix + - python + license: BSD-3-Clause + license_family: BSD + size: 97676 + timestamp: 1764518652276 +- 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 - size: 97676 - timestamp: 1764518652276 + size: 100048 + timestamp: 1777219902525 - conda: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-pyhcf101f3_1.conda sha256: 4c287c2721d8a34c94928be8fe0e9a85754e90189dd4384a31b1806856b50a67 md5: 61b8078a0905b12529abc622406cb62c @@ -3801,16 +5176,16 @@ packages: license_family: APACHE size: 394533 timestamp: 1773761662394 -- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.12-py313hd8ed1ab_100.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.13-py313hd8ed1ab_100.conda noarch: generic - sha256: 7636809bda35add7af66cda1fee156136fcba0a1e24bbef1d591ee859df755a8 - md5: 9a4b8a37303b933b847c14a310f0557b + sha256: 836b92c209d4b6b9fb28bd51bd788b22a0c5492ae95eec2724e65a15ed4ab2e1 + md5: 3a8a8b87e72f95b54689fb588e154ec9 depends: - python >=3.13,<3.14.0a0 - python_abi * *_cp313 license: Python-2.0 - size: 48648 - timestamp: 1770270374831 + size: 48530 + timestamp: 1775613723457 - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-46.0.5-py313heb322e3_0.conda sha256: 553f4ee18ad755d690ad63fa8e00d89598ecc4945ec046a8af808ddee5bb1ca0 md5: 964f25e322b16cae073da8f5b7adf123 @@ -3827,6 +5202,22 @@ packages: license_family: BSD size: 1718868 timestamp: 1770772833949 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-47.0.0-py313heb322e3_0.conda + sha256: a017928e4851b0d644c07bb1e7c3129761c3ced700ef5a5d6556434521c2ddd2 + md5: 4c306970ee46832e06298198e1656532 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.14 + - libgcc >=14 + - openssl >=3.5.6,<4.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - __glibc >=2.17 + license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT + license_family: BSD + size: 1894757 + timestamp: 1777106359612 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cryptography-46.0.5-py313h2e85185_0.conda sha256: f799fc4ceb2b20bce5b7bbe4038c4fc273fb49d8ccc5d4bd7d34b434fd790ed0 md5: 9f017a0f98d0efb83e04a5ce9f01598e @@ -3843,6 +5234,22 @@ packages: license_family: BSD size: 1710168 timestamp: 1770772502541 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cryptography-47.0.0-py313h2e85185_0.conda + sha256: 2ab378969eced2e558d4cd50813a8043a0d06aaa862d36a6746106f0e00fb6b1 + md5: 6708487509d3c890c381e931c593ebc6 + depends: + - cffi >=1.14 + - libgcc >=14 + - openssl >=3.5.6,<4.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - __glibc >=2.17 + license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT + license_family: BSD + size: 1936789 + timestamp: 1777106248596 - conda: https://conda.anaconda.org/conda-forge/osx-64/cryptography-46.0.5-py313h6e3882f_0.conda sha256: 92a8512b8e4b00e8afd8e3e5a77b1bf384f30ecbccbd5163c9c596098b06d914 md5: 071bcb7607cc391596db9b193a1f5014 @@ -3858,6 +5265,21 @@ packages: license_family: BSD size: 1652433 timestamp: 1770772806563 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cryptography-47.0.0-py313ha8d32cc_0.conda + sha256: 3daacca245d2ea0badb032b589bc80a789b7dd5d94120ef5525c91f858628419 + md5: ab700f4f13688166b81ef72749c523c7 + depends: + - __osx >=11.0 + - cffi >=1.14 + - openssl >=3.5.6,<4.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - __osx >=10.13 + license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT + license_family: BSD + size: 1831670 + timestamp: 1777106752555 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-46.0.5-py313he3f6fad_0.conda sha256: 5d27780eae308b9602eb80b62b8fada46680c3fc68bfb249c95ddd07f74e74d2 md5: 2cca7fe0caca845c02b37d8b465a18fa @@ -3874,6 +5296,22 @@ packages: license_family: BSD size: 1600031 timestamp: 1770773038178 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-47.0.0-py313he3f6fad_0.conda + sha256: 93bf99aa3ddd2969d1f39def5ce4f2b202c4b8b03f8a1c8b312227c850f7b353 + md5: 240ff4fe81c00d3e914f4438f8762162 + depends: + - __osx >=11.0 + - cffi >=1.14 + - openssl >=3.5.6,<4.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - __osx >=11.0 + license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT + license_family: BSD + size: 1832907 + timestamp: 1777106808899 - conda: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.28-hac629b4_1.conda sha256: 7684da83306bb69686c0506fb09aa7074e1a55ade50c3a879e4e5df6eebb1009 md5: af491aae930edc096b58466c51c4126c @@ -4348,6 +5786,24 @@ packages: license_family: MIT size: 4817 timestamp: 1774290725801 +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.136.1-h9093a4d_0.conda + sha256: a760957075438e1e749f97dbf11593e4071a19d590a9d74425abf79754d72c3e + md5: 4de4a392af60d8d9db2352a7fc8cd5f9 + depends: + - fastapi-core ==0.136.1 pyhcf101f3_0 + - email_validator + - fastapi-cli + - fastar + - httpx + - jinja2 + - pydantic-extra-types + - pydantic-settings + - python-multipart + - uvicorn-standard + license: MIT + license_family: MIT + size: 4839 + timestamp: 1776987546878 - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.23-pyhcf101f3_0.conda sha256: cb60fc8c96dcd2a6335914d4d6d7d5f5549c9e1ff4533be28ba699e648babf37 md5: 442ec6511754418c87a84bc1dc0c5384 @@ -4386,14 +5842,96 @@ packages: license_family: MIT size: 95598 timestamp: 1774290725801 -- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.25.2-pyhd8ed1ab_0.conda - sha256: dddea9ec53d5e179de82c24569d41198f98db93314f0adae6b15195085d5567f - md5: f58064cec97b12a7136ebb8a6f8a129b +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.136.1-pyhcf101f3_0.conda + sha256: 034400313fcb495099db57be03131fb92fb334fa678ed7f59cd4c2f79688fcbf + md5: c5bdeaf4ffe949c341a82befffd9fa75 + depends: + - python >=3.10 + - annotated-doc >=0.0.2 + - starlette >=0.46.0 + - typing_extensions >=4.8.0 + - typing-inspection >=0.4.2 + - pydantic >=2.9.0 + - python + constrains: + - email_validator >=2.0.0 + - fastapi-cli >=0.0.8 + - fastar >=0.9.0 + - httpx >=0.23.0,<1.0.0 + - jinja2 >=3.1.5 + - pydantic-extra-types >=2.0.0 + - pydantic-settings >=2.0.0 + - python-multipart >=0.0.18 + - uvicorn-standard >=0.12.0 + license: MIT + license_family: MIT + size: 95882 + timestamp: 1776987546878 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fastar-0.11.0-py313hcf592b0_0.conda + sha256: 8e9513886e30a542d239c37894a834f6738899586ff751c7dcd2bcea06eb6156 + md5: ed1cf0cfc0ae19eb436a897adb60fdab + depends: + - python + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python_abi 3.13.* *_cp313 + - zstd >=1.5.7,<1.6.0a0 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + size: 422578 + timestamp: 1776177827225 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fastar-0.11.0-py313hfa1462c_0.conda + sha256: 019e781a3397e66109e14f3e2de57f12232549e95b0c5d213f5c4c7fd697e75c + md5: a373d948a0403efe0ca949102d144d41 + depends: + - python + - libgcc >=14 + - zstd >=1.5.7,<1.6.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + size: 422429 + timestamp: 1776177837668 +- conda: https://conda.anaconda.org/conda-forge/osx-64/fastar-0.11.0-py313he62640c_0.conda + sha256: ab0a01536f43adea6533de4e44af7a333d974ac6e459472070679c157966de67 + md5: 3d4760327b9fd642d6631b2b032abaab + depends: + - python + - __osx >=11.0 + - python_abi 3.13.* *_cp313 + - zstd >=1.5.7,<1.6.0a0 + constrains: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 393029 + timestamp: 1776177886641 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fastar-0.11.0-py313hb5b1e11_0.conda + sha256: 289277b2c72e7293f277982fe8704c476344d0f9cd122be52f594c54f1175d3a + md5: 75b93439039a6c8123b0c59fdcf5522a + depends: + - python + - __osx >=11.0 + - python_abi 3.13.* *_cp313 + - zstd >=1.5.7,<1.6.0a0 + constrains: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 380440 + timestamp: 1776177859110 +- 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 - size: 25845 - timestamp: 1773314012590 + size: 34211 + timestamp: 1776621506566 - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-7.3.0-pyhd8ed1ab_0.conda sha256: a32e511ea71a9667666935fd9f497f00bcc6ed0099ef04b9416ac24606854d58 md5: 04a55140685296b25b79ad942264c0ef @@ -4716,6 +6254,18 @@ packages: license_family: MIT size: 254450 timestamp: 1771658392272 +- conda: https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.5.0-py313h5d5ffb9_0.conda + sha256: 3d2927e562ab121da16a8c07c322fa763747381fc74532384df743d0adefa833 + md5: ac65f21f61e9c86e39dd7b91aeccbe62 + depends: + - python + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - python_abi 3.13.* *_cp313 + license: MIT + size: 263299 + timestamp: 1777328965649 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/greenlet-3.3.2-py313h59403f9_0.conda sha256: 0bf60fdc8891d48465d4f4cc40e3a1ba46346848b3a4999700ecb8ca7ae75bac md5: 59bef38681439b106ade8d7e7b8e4e9a @@ -4729,6 +6279,18 @@ packages: license_family: MIT size: 259665 timestamp: 1771658402366 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/greenlet-3.5.0-py313h59403f9_0.conda + sha256: baac8c8f32dd26548a5dcf8878039d06ddcee635384e4fc7049c143668106663 + md5: ffae84a7ef9c04c3ca4b842954367f04 + depends: + - python + - python 3.13.* *_cp313 + - libstdcxx >=14 + - libgcc >=14 + - python_abi 3.13.* *_cp313 + license: MIT + size: 267300 + timestamp: 1777328974331 - conda: https://conda.anaconda.org/conda-forge/osx-64/greenlet-3.3.2-py313h5fe49f0_0.conda sha256: ece3b76a7dbf81c979401729d1330ec55c19b0547f34e30bf33229c1679a8e1f md5: c64b0333b3f8724368b69fe37fd19bd7 @@ -4741,6 +6303,17 @@ packages: license_family: MIT size: 249693 timestamp: 1771658523891 +- conda: https://conda.anaconda.org/conda-forge/osx-64/greenlet-3.5.0-py313h5fe49f0_0.conda + sha256: c9e79d780f9027a292a0bc4b36a16aa3ffbf6fb657849d2ddf6f9f528bd65754 + md5: 61ba3a9e203bddfe9f7ca2fa6b169460 + depends: + - python + - __osx >=11.0 + - libcxx >=19 + - python_abi 3.13.* *_cp313 + license: MIT + size: 257981 + timestamp: 1777329144691 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/greenlet-3.3.2-py313h1188861_0.conda sha256: b34b145089aaa70efb6a9ccbc165349077fdc74f886775eb598dabd6a3771f8a md5: a5478ab23d671342d57f4ad20a09876e @@ -4754,6 +6327,18 @@ packages: license_family: MIT size: 251405 timestamp: 1771658487166 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/greenlet-3.5.0-py313h1188861_0.conda + sha256: 710532ebc4c85cd451fa60cdfa848e13aaf8e3273b885cc43aa523e3835c27d4 + md5: 2931eb11d4016a649343ed1d9aea1c83 + depends: + - python + - __osx >=11.0 + - python 3.13.* *_cp313 + - libcxx >=19 + - python_abi 3.13.* *_cp313 + license: MIT + size: 259835 + timestamp: 1777329110563 - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhcf101f3_1.conda sha256: 96cac6573fd35ae151f4d6979bab6fbc90cb6b1fb99054ba19eb075da9822fcb md5: b8993c19b0c32a2f7b66cbb58ca27069 @@ -4804,6 +6389,21 @@ packages: license_family: BSD size: 1336298 timestamp: 1774712276077 +- conda: https://conda.anaconda.org/conda-forge/linux-64/h5py-3.16.0-nompi_py313h22c32d4_102.conda + sha256: 3def6d562885610497befa9dd81c685c53bb027309407797ad9918d4179dda21 + md5: 37727e0bcda5059c33c83fdf5b13a9a1 + depends: + - __glibc >=2.17,<3.0.a0 + - cached-property + - hdf5 >=2.1.0,<3.0a0 + - libgcc >=14 + - numpy >=1.23,<3 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 1336531 + timestamp: 1775581276561 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/h5py-3.16.0-nompi_py313h14703b5_101.conda sha256: cf34c6fa6ed1f95146b558d531d77cdbf20684a228978a0a52e9ff90cb0beff3 md5: 4f75f050dda1a42a9ace57a7f63126fa @@ -4819,6 +6419,21 @@ packages: license_family: BSD size: 1304489 timestamp: 1774712788336 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/h5py-3.16.0-nompi_py313h14703b5_102.conda + sha256: 68c57e101b3eb93c915c36ce2f6e5e0cc13c2946ad204d676d7512d10e5d6b67 + md5: 1518d1382d79f1de6d5661ec02245610 + depends: + - cached-property + - hdf5 >=2.1.0,<3.0a0 + - libgcc >=14 + - numpy >=1.23,<3 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 1302448 + timestamp: 1775581709275 - conda: https://conda.anaconda.org/conda-forge/osx-64/h5py-3.16.0-nompi_py313h15f83ed_101.conda sha256: 5219eefb8a677bbaad0a095435571c6c2bb4806e3d0d33b3e8735a3d8da0ce1c md5: 824f828c529e49277da34d4d811037a3 @@ -4833,6 +6448,20 @@ packages: license_family: BSD size: 1199001 timestamp: 1774712614643 +- conda: https://conda.anaconda.org/conda-forge/osx-64/h5py-3.16.0-nompi_py313h15f83ed_102.conda + sha256: 329d2b25a62ff3a4485b1b9e91f8248e542a773707f5f356e7993e8c0617b40e + md5: 5f6dba276231688a2f785babdf95ad1c + depends: + - __osx >=11.0 + - cached-property + - hdf5 >=2.1.0,<3.0a0 + - numpy >=1.23,<3 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 1197429 + timestamp: 1775581955479 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/h5py-3.16.0-nompi_py313h2c4073f_101.conda sha256: ea8f76bc27ac4afc0d668d91bc2e8db3d2efc17ccdf53bcb7047b48b3fb43fdb md5: 50b4e615d597256d085769100ac9f172 @@ -4848,6 +6477,21 @@ packages: license_family: BSD size: 1198247 timestamp: 1774713693186 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/h5py-3.16.0-nompi_py313h2c4073f_102.conda + sha256: 9c36ee2e00a2909cc681cce0d18b944d9fe567e2e222b0b9c2c6e5763ae466a8 + md5: 2aa4b5b086d03667f7950a6b01719a01 + depends: + - __osx >=11.0 + - cached-property + - hdf5 >=2.1.0,<3.0a0 + - numpy >=1.23,<3 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 1196073 + timestamp: 1775583215851 - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-2.1.0-nompi_hd4fcb43_103.conda sha256: 79c3592e00ce9974e3d08e4bd28bfbe9f86c03064880efe3cfcff807a633abd1 md5: dcb50cd5fed839129afb25f1061f6b7f @@ -4864,17 +6508,107 @@ packages: - libgcc >=14 - libgfortran - libgfortran5 >=14.3.0 - - libstdcxx >=14 + - libstdcxx >=14 + - libzlib >=1.3.2,<2.0a0 + - openssl >=3.5.5,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 4408274 + timestamp: 1774661981887 +- conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-2.1.0-nompi_hd4fcb43_104.conda + sha256: c6ff674a4a5a237fcf748fed8f64e79df54b42189986e705f35ba64dc6603235 + md5: 1d92558abd05cea0577f83a5eca38733 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.10.1,<0.10.2.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-c-http >=0.10.12,<0.10.13.0a0 + - aws-c-io >=0.26.3,<0.26.4.0a0 + - aws-c-s3 >=0.11.5,<0.11.6.0a0 + - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 + - libaec >=1.1.5,<2.0a0 + - libcurl >=8.19.0,<9.0a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.3.0 + - libstdcxx >=14 + - libzlib >=1.3.2,<2.0a0 + - openssl >=3.5.5,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 4138489 + timestamp: 1775243967708 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/hdf5-2.1.0-nompi_h81b49a2_103.conda + sha256: 81956e2b6a4c71e99c3fefde265f873cd9463de9ed08a462dde4b8df2408e246 + md5: c38c0cf39c1a35cb691e57a865d76cae + depends: + - aws-c-auth >=0.10.1,<0.10.2.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-c-http >=0.10.12,<0.10.13.0a0 + - aws-c-io >=0.26.3,<0.26.4.0a0 + - aws-c-s3 >=0.11.5,<0.11.6.0a0 + - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 + - libaec >=1.1.5,<2.0a0 + - libcurl >=8.19.0,<9.0a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.3.0 + - libstdcxx >=14 + - libzlib >=1.3.2,<2.0a0 + - openssl >=3.5.5,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 4039828 + timestamp: 1774661897411 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/hdf5-2.1.0-nompi_h81b49a2_104.conda + sha256: 1a0198c569b90bf1a1f644efe70569d0fa4db2fe06df43da80a87db067050bac + md5: 6663434543b4834fda59f5d0eaac7a3e + depends: + - aws-c-auth >=0.10.1,<0.10.2.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-c-http >=0.10.12,<0.10.13.0a0 + - aws-c-io >=0.26.3,<0.26.4.0a0 + - aws-c-s3 >=0.11.5,<0.11.6.0a0 + - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 + - libaec >=1.1.5,<2.0a0 + - libcurl >=8.19.0,<9.0a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.3.0 + - libstdcxx >=14 + - libzlib >=1.3.2,<2.0a0 + - openssl >=3.5.5,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 4613109 + timestamp: 1775243874375 +- conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-2.1.0-nompi_h3b1597d_103.conda + sha256: a18a9142345aa07d8711061f2a5b445f18cae137fb9bb027e3939244464f3015 + md5: ffaa24507218ed257bf69420ee8412f5 + depends: + - __osx >=11.0 + - aws-c-auth >=0.10.1,<0.10.2.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-c-http >=0.10.12,<0.10.13.0a0 + - aws-c-io >=0.26.3,<0.26.4.0a0 + - aws-c-s3 >=0.11.5,<0.11.6.0a0 + - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 + - libaec >=1.1.5,<2.0a0 + - libcurl >=8.19.0,<9.0a0 + - libcxx >=19 + - libgfortran + - libgfortran5 >=14.3.0 - libzlib >=1.3.2,<2.0a0 - openssl >=3.5.5,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 4408274 - timestamp: 1774661981887 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/hdf5-2.1.0-nompi_h81b49a2_103.conda - sha256: 81956e2b6a4c71e99c3fefde265f873cd9463de9ed08a462dde4b8df2408e246 - md5: c38c0cf39c1a35cb691e57a865d76cae + size: 3817037 + timestamp: 1774662882398 +- conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-2.1.0-nompi_h3b1597d_104.conda + sha256: b184d5cace3a16644e857da93c4b9048370c0ee28b8fedd55ffaaf25c65d8bc1 + md5: 8b1abc9a6f2a3f439f5f314a6763956a depends: + - __osx >=11.0 - aws-c-auth >=0.10.1,<0.10.2.0a0 - aws-c-common >=0.12.6,<0.12.7.0a0 - aws-c-http >=0.10.12,<0.10.13.0a0 @@ -4883,19 +6617,18 @@ packages: - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 - libaec >=1.1.5,<2.0a0 - libcurl >=8.19.0,<9.0a0 - - libgcc >=14 + - libcxx >=19 - libgfortran - libgfortran5 >=14.3.0 - - libstdcxx >=14 - libzlib >=1.3.2,<2.0a0 - openssl >=3.5.5,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 4039828 - timestamp: 1774661897411 -- conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-2.1.0-nompi_h3b1597d_103.conda - sha256: a18a9142345aa07d8711061f2a5b445f18cae137fb9bb027e3939244464f3015 - md5: ffaa24507218ed257bf69420ee8412f5 + size: 3875210 + timestamp: 1775244947555 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-2.1.0-nompi_hc95e3eb_103.conda + sha256: f236f50377869ba9561e4f50df6240f544d2755b7c7b5867a9b99d41f814e5da + md5: 03316cdd768f449e9293d4284a13adb3 depends: - __osx >=11.0 - aws-c-auth >=0.10.1,<0.10.2.0a0 @@ -4913,11 +6646,11 @@ packages: - openssl >=3.5.5,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 3817037 - timestamp: 1774662882398 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-2.1.0-nompi_hc95e3eb_103.conda - sha256: f236f50377869ba9561e4f50df6240f544d2755b7c7b5867a9b99d41f814e5da - md5: 03316cdd768f449e9293d4284a13adb3 + size: 3418107 + timestamp: 1774662175390 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-2.1.0-nompi_hc95e3eb_104.conda + sha256: 5b96accf983be97718fbfaddd6706591d7ef6511b4ccdac8a09f6b9899d1b284 + md5: e5390fd4a3b964a3ed619480df918294 depends: - __osx >=11.0 - aws-c-auth >=0.10.1,<0.10.2.0a0 @@ -4935,8 +6668,8 @@ packages: - openssl >=3.5.5,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 3418107 - timestamp: 1774662175390 + size: 3418702 + timestamp: 1775244340092 - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5plugin-6.0.0-py313hdbdd960_5.conda sha256: 761419953e0d6f8c1b4350fec925da3d0ae9d8912510532375d02eebc5d35b6d md5: 4da834a5990833e8f2adc4cade759f71 @@ -5152,16 +6885,16 @@ packages: license_family: MIT size: 12361647 timestamp: 1773822915649 -- conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.18-pyhd8ed1ab_0.conda - sha256: 3bae1b612ccc71e49c5795a369a82c4707ae6fd4e63360e8ecc129f9539f779b - md5: 635d1a924e1c55416fce044ed96144a2 +- 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 - size: 79749 - timestamp: 1774239544252 + size: 79757 + timestamp: 1776455344188 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda sha256: ae89d0299ada2a3162c2614a9d26557a92aa6a77120ce142f8e0109bbf0342b0 md5: 53abe63df7e10a6ba605dc5f9f961d36 @@ -5171,6 +6904,60 @@ packages: license_family: BSD size: 50721 timestamp: 1760286526795 +- 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 + size: 59038 + timestamp: 1776947141407 +- conda: https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2026.3.6-py313h0924926_2.conda + sha256: 91ad859456356dbc30a61baece8fea7d040f69841bd807b03d554c223371f932 + md5: 32ca412c126205b3aa22cd789e831fd9 + depends: + - __glibc >=2.17,<3.0.a0 + - blosc >=1.21.6,<2.0a0 + - brunsli >=0.1,<1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - c-blosc2 >=2.23.1,<2.24.0a0 + - charls >=2.4.3,<2.5.0a0 + - giflib >=5.2.2,<5.3.0a0 + - jxrlib >=1.1,<1.2.0a0 + - lcms2 >=2.18,<3.0a0 + - lerc >=4.1.0,<5.0a0 + - libaec >=1.1.5,<2.0a0 + - libavif16 >=1.4.1,<2.0a0 + - libbrotlicommon >=1.2.0,<1.3.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libdeflate >=1.25,<1.26.0a0 + - libgcc >=14 + - libjpeg-turbo >=3.1.4.1,<4.0a0 + - libjxl >=0.11,<1.0a0 + - liblzma >=5.8.3,<6.0a0 + - libpng >=1.6.57,<1.7.0a0 + - libstdcxx >=14 + - libtiff >=4.7.1,<4.8.0a0 + - libwebp-base >=1.6.0,<2.0a0 + - libzlib >=1.3.2,<2.0a0 + - libzopfli >=1.0.3,<1.1.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - numpy >=1.23,<3 + - openjpeg >=2.5.4,<3.0a0 + - openjph >=0.27.0,<0.28.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - snappy >=1.2.2,<1.3.0a0 + - zfp >=1.0.1,<2.0a0 + - zlib-ng >=2.3.3,<2.4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 2068757 + timestamp: 1776185229890 - conda: https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2026.3.6-py313h67fa517_1.conda sha256: d58d2b24d2182d0095c3a38cf5ef234ca53b0124915df0488fbbe474976ece50 md5: d6b7103e094d82bc1ae137787fd5cedf @@ -5215,6 +7002,50 @@ packages: license_family: BSD size: 2069418 timestamp: 1772886195300 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/imagecodecs-2026.3.6-py313hb7bab5f_2.conda + sha256: 43f636d39938c4750c06723dbd8582f2d1a2436761795c8a09003301362e7e0d + md5: b4990ac901569a890970c0101fe66c68 + depends: + - blosc >=1.21.6,<2.0a0 + - brunsli >=0.1,<1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - c-blosc2 >=2.23.1,<2.24.0a0 + - charls >=2.4.3,<2.5.0a0 + - giflib >=5.2.2,<5.3.0a0 + - jxrlib >=1.1,<1.2.0a0 + - lcms2 >=2.18,<3.0a0 + - lerc >=4.1.0,<5.0a0 + - libaec >=1.1.5,<2.0a0 + - libavif16 >=1.4.1,<2.0a0 + - libbrotlicommon >=1.2.0,<1.3.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libdeflate >=1.25,<1.26.0a0 + - libgcc >=14 + - libjpeg-turbo >=3.1.4.1,<4.0a0 + - libjxl >=0.11,<1.0a0 + - liblzma >=5.8.3,<6.0a0 + - libpng >=1.6.57,<1.7.0a0 + - libstdcxx >=14 + - libtiff >=4.7.1,<4.8.0a0 + - libwebp-base >=1.6.0,<2.0a0 + - libzlib >=1.3.2,<2.0a0 + - libzopfli >=1.0.3,<1.1.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - numpy >=1.23,<3 + - openjpeg >=2.5.4,<3.0a0 + - openjph >=0.27.0,<0.28.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + - snappy >=1.2.2,<1.3.0a0 + - zfp >=1.0.1,<2.0a0 + - zlib-ng >=2.3.3,<2.4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 1959356 + timestamp: 1776185277701 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/imagecodecs-2026.3.6-py313hcf3ee17_1.conda sha256: a93f4b2e8e43617cb6a94e452ef7723aef8ed3856fd36cc1e921a61b41ed1ad1 md5: f82c3cfad36ecfc3744cf948c3687811 @@ -5302,6 +7133,93 @@ packages: license_family: BSD size: 1645260 timestamp: 1772886465831 +- conda: https://conda.anaconda.org/conda-forge/osx-64/imagecodecs-2026.3.6-py313h925db42_2.conda + sha256: 79bc21ec6c20d88ecf87a28725c7fc0ba3dc4bb09c1be5a1e69de0835c12eadd + md5: 84e87c5eea79a5405beebc8849653d37 + depends: + - __osx >=11.0 + - blosc >=1.21.6,<2.0a0 + - brunsli >=0.1,<1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - c-blosc2 >=2.23.1,<2.24.0a0 + - charls >=2.4.3,<2.5.0a0 + - giflib >=5.2.2,<5.3.0a0 + - jxrlib >=1.1,<1.2.0a0 + - lcms2 >=2.18,<3.0a0 + - lerc >=4.1.0,<5.0a0 + - libaec >=1.1.5,<2.0a0 + - libavif16 >=1.4.1,<2.0a0 + - libbrotlicommon >=1.2.0,<1.3.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libcxx >=19 + - libdeflate >=1.25,<1.26.0a0 + - libjpeg-turbo >=3.1.4.1,<4.0a0 + - libjxl >=0.11,<1.0a0 + - liblzma >=5.8.3,<6.0a0 + - libpng >=1.6.57,<1.7.0a0 + - libtiff >=4.7.1,<4.8.0a0 + - libwebp-base >=1.6.0,<2.0a0 + - libzlib >=1.3.2,<2.0a0 + - libzopfli >=1.0.3,<1.1.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - numpy >=1.23,<3 + - openjpeg >=2.5.4,<3.0a0 + - openjph >=0.27.0,<0.28.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - snappy >=1.2.2,<1.3.0a0 + - zfp >=1.0.1,<2.0a0 + - zlib-ng >=2.3.3,<2.4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 1645632 + timestamp: 1776185710100 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/imagecodecs-2026.3.6-py313h528e791_2.conda + sha256: d557b08e7e0d8b9f27409a2bac88dc3f873db9e3dab764046c301ec9c9b89dc7 + md5: 24c72335dc331e04b11699992f5ac452 + depends: + - __osx >=11.0 + - blosc >=1.21.6,<2.0a0 + - brunsli >=0.1,<1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - c-blosc2 >=2.23.1,<2.24.0a0 + - charls >=2.4.3,<2.5.0a0 + - giflib >=5.2.2,<5.3.0a0 + - jxrlib >=1.1,<1.2.0a0 + - lcms2 >=2.18,<3.0a0 + - lerc >=4.1.0,<5.0a0 + - libaec >=1.1.5,<2.0a0 + - libavif16 >=1.4.1,<2.0a0 + - libbrotlicommon >=1.2.0,<1.3.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libcxx >=19 + - libdeflate >=1.25,<1.26.0a0 + - libjpeg-turbo >=3.1.4.1,<4.0a0 + - libjxl >=0.11,<1.0a0 + - liblzma >=5.8.3,<6.0a0 + - libpng >=1.6.57,<1.7.0a0 + - libtiff >=4.7.1,<4.8.0a0 + - libwebp-base >=1.6.0,<2.0a0 + - libzlib >=1.3.2,<2.0a0 + - libzopfli >=1.0.3,<1.1.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - numpy >=1.23,<3 + - openjpeg >=2.5.4,<3.0a0 + - openjph >=0.27.0,<0.28.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + - snappy >=1.2.2,<1.3.0a0 + - zfp >=1.0.1,<2.0a0 + - zlib-ng >=2.3.3,<2.4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 1641284 + timestamp: 1776186024399 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/imagecodecs-2026.3.6-py313h8864aa1_1.conda sha256: f09c53e16a48bc862496bbaa0716b339f077085b3a1d5903e482ce25b3732075 md5: 632a02dbb28f0837a5a7ad4d6b536c83 @@ -5380,6 +7298,18 @@ packages: license_family: APACHE size: 33781 timestamp: 1736252433366 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-7.1.0-pyhd8ed1ab_0.conda + sha256: a563a51aa522998172838e867e6dedcf630bc45796e8612f5a1f6d73e9c8125a + md5: 0ba6225c279baf7ea9473a62ea0ec9ae + depends: + - python >=3.10 + - zipp >=3.1.0 + constrains: + - importlib-resources >=7.1.0,<7.1.1.0a0 + license: Apache-2.0 + license_family: APACHE + size: 34809 + timestamp: 1776068839274 - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda sha256: e1a9e3b1c8fe62dc3932a616c284b5d8cbe3124bbfbedcf4ce5c828cb166ee19 md5: 9614359868482abba1bd15ce465e3c42 @@ -5440,9 +7370,9 @@ packages: license_family: BSD size: 133644 timestamp: 1770566133040 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.12.0-pyhecfbec7_0.conda - sha256: 932044bd893f7adce6c9b384b96a72fd3804cc381e76789398c2fae900f21df7 - md5: b293210beb192c3024683bf6a998a0b8 +- 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 @@ -5450,16 +7380,18 @@ packages: - 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.12 + - 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 - size: 649967 - timestamp: 1774609994657 + 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 @@ -5601,9 +7533,9 @@ packages: license_family: MIT size: 4740 timestamp: 1767839954258 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.3.0-pyhcf101f3_0.conda - sha256: 897ad2e2c2335ef3c2826d7805e16002a1fd0d509b4ae0bc66617f0e0ff07bc2 - md5: 62b7c96c6cd77f8173cc5cada6a9acaa +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.3.1-pyhcf101f3_0.conda + sha256: 3766e2ae59641c172cec8a821528bfa6bf9543ffaaeb8b358bfd5259dcf18e4e + md5: 0c3b465ceee138b9c39279cc02e5c4a0 depends: - importlib-metadata >=4.8.3 - jupyter_server >=1.1.2 @@ -5611,8 +7543,8 @@ packages: - python license: BSD-3-Clause license_family: BSD - size: 60377 - timestamp: 1756388269267 + size: 61633 + timestamp: 1775136333147 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.8.0-pyhcf101f3_0.conda sha256: e402bd119720862a33229624ec23645916a7d47f30e1711a4af9e005162b84f3 md5: 8a3d6d0523f66cf004e563a50d9392b3 @@ -5644,13 +7576,13 @@ packages: license_family: BSD size: 65503 timestamp: 1760643864586 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyhe01879c_0.conda - sha256: e9964aaaf6d24a685cd5ce9d75731b643ed7f010fb979574a6580cd2f974c6cd - md5: 31e11c30bbee1682a55627f953c6725a +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.1-pyhcf101f3_0.conda + sha256: c7edb5682c6316a95ad781dccb1b6589cd2ec0bf94f23c21152974eb0363b5d7 + md5: bf42ee94c750c0b2e7e998b79ac299ea depends: - jsonschema-with-format-nongpl >=4.18.0 - packaging - - python >=3.9 + - python >=3.10 - python-json-logger >=2.0.4 - pyyaml >=5.3 - referencing @@ -5660,8 +7592,8 @@ packages: - python license: BSD-3-Clause license_family: BSD - size: 24306 - timestamp: 1770937604863 + size: 24002 + timestamp: 1776861872237 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.17.0-pyhcf101f3_0.conda sha256: 74c4e642be97c538dae1895f7052599dfd740d8bd251f727bce6453ce8d6cd9a md5: d79a87dcfa726bcea8e61275feed6f83 @@ -5878,6 +7810,18 @@ packages: license_family: MIT size: 249959 timestamp: 1768184673131 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.19-h0c24ade_0.conda + sha256: f1e982b63d505338ff7f9baee80a10360a025b7216deb5ab0fe1494d8ef3bebb + md5: f302dbf397ac82eaf9618575d0b5fe33 + 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 + size: 250586 + timestamp: 1777250439270 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.18-h9d5b58d_0.conda sha256: 379ef5e91a587137391a6149755d0e929f1a007d2dcb211318ac670a46c8596f md5: bb960f01525b5e001608afef9d47b79c @@ -5889,6 +7833,17 @@ packages: license_family: MIT size: 293039 timestamp: 1768184778398 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.19-h9d5b58d_0.conda + sha256: 0e76fad8453c4071227363103ae234500be40fed7fc1cca60c6538e71708ab30 + md5: 6bc596d689e559787079968b885e75d8 + depends: + - libgcc >=14 + - libjpeg-turbo >=3.1.4.1,<4.0a0 + - libtiff >=4.7.1,<4.8.0a0 + license: MIT + license_family: MIT + size: 296089 + timestamp: 1777250554544 - conda: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.18-h90db99b_0.conda sha256: 3ec16c491425999a8461e1b7c98558060a4645a20cf4c9ac966103c724008cc2 md5: 753acc10c7277f953f168890e5397c80 @@ -5900,6 +7855,17 @@ packages: license_family: MIT size: 226870 timestamp: 1768184917403 +- conda: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.19-h5ea7634_0.conda + sha256: 278d28a48ae4a679d104a3d557b9354718c7ea4e60391bf52c6e4678bc07c946 + md5: f05fc88b6b2480486c006a9bf04db0b7 + depends: + - __osx >=11.0 + - libjpeg-turbo >=3.1.4.1,<4.0a0 + - libtiff >=4.7.1,<4.8.0a0 + license: MIT + license_family: MIT + size: 228812 + timestamp: 1777250669169 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.18-hdfa7624_0.conda sha256: d768da024ab74a4b30642401877fa914a68bdc238667f16b1ec2e0e98b2451a6 md5: 6631a7bd2335bb9699b1dbc234b19784 @@ -5911,6 +7877,17 @@ packages: license_family: MIT size: 211756 timestamp: 1768184994800 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.19-hdfa7624_0.conda + sha256: fc3c54deb7c9b3738796d0db2a1cf673c0f34a13d5e9964633ca50b7d64a5f52 + md5: 57baad99764cf6057227e50b11e2ec5b + depends: + - __osx >=11.0 + - libjpeg-turbo >=3.1.4.1,<4.0a0 + - libtiff >=4.7.1,<4.8.0a0 + license: MIT + license_family: MIT + size: 213171 + timestamp: 1777250779185 - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda sha256: 3d584956604909ff5df353767f3a2a2f60e07d070b328d109f30ac40cd62df6c md5: 18335a698559cdbcd86150a48bf54ba6 @@ -6040,6 +8017,18 @@ packages: license_family: APACHE size: 277747 timestamp: 1767962680623 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libadbc-driver-postgresql-1.11.0-hedb09cf_0.conda + sha256: 23e863c6928a2737bb3b70a7ab9d55cf2bb5c803ab64e76b8cf2ca86edab2e43 + md5: 88be6c4c3b2b6faf489522c1519f9644 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libpq >=18.3,<19.0a0 + - libstdcxx >=14 + license: Apache-2.0 + license_family: APACHE + size: 285877 + timestamp: 1775526997865 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libadbc-driver-postgresql-1.10.0-hd3e9c16_0.conda sha256: b5b5573f889cef81774d652e8b3058009a20cc8cf4ebc63b6004eb27130f905e md5: 94ef29b33c06e40dd2b8ff1825a0e6e0 @@ -6051,6 +8040,17 @@ packages: license_family: APACHE size: 310535 timestamp: 1767962839757 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libadbc-driver-postgresql-1.2.0-ha63ef31_2.conda + sha256: 1228298039fc0b9797dd1fb3cf8b755325baf4f66754378e0f33076f62a31086 + md5: 3eb9f2813533ea1a3f14747cf65550d4 + depends: + - libgcc >=13 + - libpq >=16.4,<17.0a0 + - libstdcxx >=13 + license: Apache-2.0 + license_family: APACHE + size: 205028 + timestamp: 1725782861480 - conda: https://conda.anaconda.org/conda-forge/osx-64/libadbc-driver-postgresql-1.10.0-hc76a90b_0.conda sha256: acd7cd2830ed807a6b06f39200ec0a6e46f34fe548722d1da5acdf9b311d3dd3 md5: 069e9ea088b9fecf5bdbba4b8fe1f1d4 @@ -6062,6 +8062,17 @@ packages: license_family: APACHE size: 259159 timestamp: 1767963191888 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libadbc-driver-postgresql-1.11.0-hbf5c073_0.conda + sha256: 8f2a3717355d4bf3b1f2f52c09aa636243d18f028fcf6518aeb3c14381c37fa4 + md5: 2fefb0582185c8430ef091b01050a84a + depends: + - __osx >=12.0 + - libcxx >=19 + - libpq >=18.3,<19.0a0 + license: Apache-2.0 + license_family: APACHE + size: 266473 + timestamp: 1775631537320 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libadbc-driver-postgresql-1.10.0-h217c5a4_0.conda sha256: e28fd188ca7e89c877c2dc377c0642f82232898e2ecfe3b5d7bf04c09802d435 md5: f6cc743b07ebaeb7e43dc9db4c65e4b6 @@ -6073,6 +8084,17 @@ packages: license_family: APACHE size: 236420 timestamp: 1767963767651 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libadbc-driver-postgresql-1.2.0-h8c87c49_2.conda + sha256: 07d31067474cff20b2bcf60ee65ae943e29e1eb6a870104fd08f39d55198b5cd + md5: 46e680ac2f036e88267cd4ea0a5d35e6 + depends: + - __osx >=11.0 + - libcxx >=17 + - libpq >=16.4,<17.0a0 + license: Apache-2.0 + license_family: APACHE + size: 153304 + timestamp: 1725782915015 - conda: https://conda.anaconda.org/conda-forge/linux-64/libadbc-driver-sqlite-1.10.0-hcea63bf_0.conda sha256: a1453f576061b373d972a82448837c9247b02c99645c3b594f54e5f5737ce68b md5: bba5965f80c09bf20cb0c0ea7b79375a @@ -6085,6 +8107,18 @@ packages: license_family: APACHE size: 194792 timestamp: 1767962824488 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libadbc-driver-sqlite-1.11.0-hcea63bf_0.conda + sha256: 5760877ea412bd04751d35fb12c837402b0adac76bb107198c872990fc5b4091 + md5: c355d791db5febe0f7b4811c9c8c936d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libsqlite >=3.52.0,<4.0a0 + - libstdcxx >=14 + license: Apache-2.0 + license_family: APACHE + size: 201170 + timestamp: 1775527103879 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libadbc-driver-sqlite-1.10.0-h54c4e81_0.conda sha256: 98fe078a55fc26f648f793c310d057a7940fa63f6ec1014336096d32febce4ca md5: d3dd8f4267a013ec9f7c781635be1b64 @@ -6096,6 +8130,17 @@ packages: license_family: APACHE size: 221402 timestamp: 1767962988133 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libadbc-driver-sqlite-1.11.0-h54c4e81_0.conda + sha256: 190f43f0d3f6505f87e109fc4e37c431a2c6fc5c2bc2858967900095e0af116d + md5: da30d4c475036b3f15cd22bba7c986d8 + depends: + - libgcc >=14 + - libsqlite >=3.52.0,<4.0a0 + - libstdcxx >=14 + license: Apache-2.0 + license_family: APACHE + size: 225650 + timestamp: 1775527272670 - conda: https://conda.anaconda.org/conda-forge/osx-64/libadbc-driver-sqlite-1.10.0-h5c786d0_0.conda sha256: 3efb0b7eb4f458dbf6e56f449b23466799fd707af57f2573cc57f6708a4d727d md5: b0530efeebdd76337a04df3805fe1746 @@ -6107,6 +8152,17 @@ packages: license_family: APACHE size: 204528 timestamp: 1767963380767 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libadbc-driver-sqlite-1.11.0-hef19893_0.conda + sha256: 7d44fd457493fa68555adb41fbf201729cac4d114f8d11b9c156f12c8c8fbe2a + md5: b7c543e750eb0bfd97ef5bda281afcd6 + depends: + - __osx >=12.0 + - libcxx >=19 + - libsqlite >=3.52.0,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 209809 + timestamp: 1775631913845 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libadbc-driver-sqlite-1.10.0-hb70094c_0.conda sha256: 17556331407dc011a8ad9d3727150e3e75990a09909a4a15bdbb2a4ec8d2187c md5: 1962560ece9b6fb15bc992fc8048365a @@ -6118,6 +8174,17 @@ packages: license_family: APACHE size: 189705 timestamp: 1767963942272 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libadbc-driver-sqlite-1.11.0-h05a11e9_0.conda + sha256: 239ac39785543a2002d93bc52ca2c66cbcd7317299e2f436d00339332c4f912e + md5: fb4bae1854976fc970feba05b86df0db + depends: + - __osx >=12.0 + - libcxx >=19 + - libsqlite >=3.52.0,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 194181 + timestamp: 1775632075157 - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.5-h088129d_0.conda sha256: 822e4ae421a7e9c04e841323526321185f6659222325e1a9aedec811c686e688 md5: 86f7414544ae606282352fa1e116b41f @@ -6191,11 +8258,47 @@ packages: constrains: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 - - apache-arrow-proc =*=cpu + - apache-arrow-proc =*=cpu + license: Apache-2.0 + license_family: APACHE + size: 6492912 + timestamp: 1774232411616 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-24.0.0-ha7f89c6_0_cpu.conda + sha256: 0117df14b22d795ee56d5fc08ceabc14e12fa9c93d64979e3616260225ed30ca + md5: 8aeb79715524b48267068fb0fd185956 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.37.4,<0.37.5.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 - size: 6492912 - timestamp: 1774232411616 + size: 6496823 + timestamp: 1776815770895 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-23.0.1-h155c802_9_cpu.conda build_number: 9 sha256: 8c537ca288ffd799118bb3daa0aa8a31991c0a25848246b1aa8f70ee2b330433 @@ -6232,6 +8335,41 @@ packages: license_family: APACHE size: 6061902 timestamp: 1774230780577 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-24.0.0-h155c802_0_cpu.conda + sha256: 0d6a022c15f840238f2cb36385cf3d0e125632ea10b31f9695fd78e66d796e3a + md5: 11d88a6e4405afea88743a42ca80f5c1 + depends: + - aws-crt-cpp >=0.37.4,<0.37.5.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: + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + license: Apache-2.0 + license_family: APACHE + size: 6071044 + timestamp: 1776813993148 - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-23.0.1-h6b6ab80_9_cpu.conda build_number: 9 sha256: 808ad16fd0f14ac82f4d4112280bbb9cd895da1d6189a8e38286bc1249b01c8a @@ -6268,6 +8406,41 @@ packages: license_family: APACHE size: 4366438 timestamp: 1774234243280 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-24.0.0-h6b6ab80_0_cpu.conda + sha256: 8d91eb14157ab1b1fb8a4c5528b3933577b32ce5f8012341c210ca4fbab7ee43 + md5: 51f6327e1eb538c7db147ada1f6d553c + depends: + - __osx >=11.0 + - aws-crt-cpp >=0.37.4,<0.37.5.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: + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + license: Apache-2.0 + license_family: APACHE + size: 4370311 + timestamp: 1776816529249 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-23.0.1-h2124f06_9_cpu.conda build_number: 9 sha256: f83971e3ac14af1bac795ea10cfbec05b61be727706add6afa687c73ce8549b5 @@ -6304,6 +8477,41 @@ packages: license_family: APACHE size: 4249863 timestamp: 1774231755880 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-24.0.0-h2124f06_0_cpu.conda + sha256: 58715feab991b36d659a3432faf41abaea6a3320e184b63b7d0961e86c6598fe + md5: 1b5a248fdad0e0744b512a5590bfb090 + depends: + - __osx >=11.0 + - aws-crt-cpp >=0.37.4,<0.37.5.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: + - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 + license: Apache-2.0 + license_family: APACHE + size: 4267842 + timestamp: 1776815214765 - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-23.0.1-h635bf11_9_cpu.conda build_number: 9 sha256: 42fb618f2402d14e96987d82f36453793ee7bae07c8dfa7fee54491bf1d163d9 @@ -6318,6 +8526,19 @@ packages: license_family: APACHE size: 609325 timestamp: 1774232640179 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-24.0.0-h635bf11_0_cpu.conda + sha256: a46a6264bea99b9980dfd469922a43a6ad8ed579b5d58c5236811b2893082ba7 + md5: 178d7e3f5c392e606ccd0aaff4331019 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 24.0.0 ha7f89c6_0_cpu + - libarrow-compute 24.0.0 h53684a4_0_cpu + - libgcc >=14 + - libstdcxx >=14 + license: Apache-2.0 + license_family: APACHE + size: 592885 + timestamp: 1776816000408 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-23.0.1-hb326ee9_9_cpu.conda build_number: 9 sha256: 555ad71b9d3da2245785e6499315c920c8db7cb8905e2f74f7a895c682e16d6a @@ -6331,6 +8552,18 @@ packages: license_family: APACHE size: 567832 timestamp: 1774230923191 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-24.0.0-hb326ee9_0_cpu.conda + sha256: 35ef2bdeef76f7104291f7f54f7b77175647e3d55486ff254af6fc473cd2bde7 + md5: 900903947ab458509eb60ce7572b9606 + depends: + - libarrow 24.0.0 h155c802_0_cpu + - libarrow-compute 24.0.0 hdd99842_0_cpu + - libgcc >=14 + - libstdcxx >=14 + license: Apache-2.0 + license_family: APACHE + size: 550339 + timestamp: 1776814135828 - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-23.0.1-h66151e4_9_cpu.conda build_number: 9 sha256: e0863f1c9a8659e68bfebc85a319741c74371e2f04fa6908a5b103bce0aaed28 @@ -6348,6 +8581,22 @@ packages: license_family: APACHE size: 560913 timestamp: 1774234961768 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-24.0.0-h66151e4_0_cpu.conda + sha256: 14488a41b41bfaf3ef0f28c069d9034ae4efb655e6fe1de1e62ff28433a47641 + md5: cd9656ea66de7365d2638b8198ef60dd + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libarrow 24.0.0 h6b6ab80_0_cpu + - libarrow-compute 24.0.0 h5d4fa73_0_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 + size: 544222 + timestamp: 1776817112504 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-23.0.1-hee8fe31_9_cpu.conda build_number: 9 sha256: 807b643446069dcdac76cc9a034d5d6dddc26c28dd6d489bb7470e8444abf7be @@ -6365,6 +8614,22 @@ packages: license_family: APACHE size: 537445 timestamp: 1774232143744 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-24.0.0-hee8fe31_0_cpu.conda + sha256: 5a84b718bab4f4a494731a29ccc888f5d6f65b5fe9c6f720c0f1931c4af7c431 + md5: 330879d2d6e847716d7dcaa748a915fb + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libarrow 24.0.0 h2124f06_0_cpu + - libarrow-compute 24.0.0 h3b6a98a_0_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 + size: 520298 + timestamp: 1776815770472 - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-23.0.1-h53684a4_9_cpu.conda build_number: 9 sha256: 6ce44b5992a855e2412d904181729272b4732e8ebd8283a20b5b0b93f91f48f3 @@ -6381,6 +8646,21 @@ packages: license_family: APACHE size: 3003173 timestamp: 1774232490011 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-24.0.0-h53684a4_0_cpu.conda + sha256: 24886c26b36267d706be56c06bd89b1692e3da0e3099bdc6bd5cecd042cca606 + md5: 73e0aeaa603ff40128e75435a3c5ac77 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 24.0.0 ha7f89c6_0_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 + size: 2992194 + timestamp: 1776815851047 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-compute-23.0.1-hdd99842_9_cpu.conda build_number: 9 sha256: 2db007e0f87403c2466307963857b9a349290f08bdbabe3d2a19569ad4c9f26b @@ -6396,6 +8676,20 @@ packages: license_family: APACHE size: 2570646 timestamp: 1774230827833 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-compute-24.0.0-hdd99842_0_cpu.conda + sha256: c82ccb3296b3de77fb6e1bae9ffc05e6e970354733d08aeec5757ff4f5a418c6 + md5: 28f5e762d04905f359f9966992f03192 + depends: + - libarrow 24.0.0 h155c802_0_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 + size: 2557298 + timestamp: 1776814040761 - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-compute-23.0.1-h5d4fa73_9_cpu.conda build_number: 9 sha256: 7bddce085a137c70069bd37313724ef00d060b6c7c1c55d76f51bd2e4172c976 @@ -6415,6 +8709,24 @@ packages: license_family: APACHE size: 2402737 timestamp: 1774234492 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-compute-24.0.0-h5d4fa73_0_cpu.conda + sha256: 6862a04eee9bb826e1b96be2dfec8ee182652e472883decf30ae4bfbd73df1c6 + md5: 462edf24b324cc4812378e1cc77f79b6 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libarrow 24.0.0 h6b6ab80_0_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 + size: 2385981 + timestamp: 1776816715592 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-compute-23.0.1-h3b6a98a_9_cpu.conda build_number: 9 sha256: b37ca8baebed6d2aab5a24b7abe054ae1fb27aacf41ffe0316219d4be42079b9 @@ -6434,6 +8746,24 @@ packages: license_family: APACHE size: 2258629 timestamp: 1774231884175 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-compute-24.0.0-h3b6a98a_0_cpu.conda + sha256: 47062ecfaa022f038623a25e69d3ced60aafbd46c4997ae718cb1e3aa478311f + md5: beced1053d628ad812ddcc975fa8a929 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libarrow 24.0.0 h2124f06_0_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 + size: 2241493 + timestamp: 1776815413056 - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-23.0.1-h635bf11_9_cpu.conda build_number: 9 sha256: cc3fb77d53f7e2db2cd35ffc1371d677d9e13682b7964e196cab533b319a85ea @@ -6450,6 +8780,21 @@ packages: license_family: APACHE size: 607738 timestamp: 1774232745741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-24.0.0-h635bf11_0_cpu.conda + sha256: 37293ee47f819072805e7e23d3ed15e7f1baccfacb2080ed360a96e208d930b2 + md5: dc226b80ae51753ce2bd8193dcc42a88 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 24.0.0 ha7f89c6_0_cpu + - libarrow-acero 24.0.0 h635bf11_0_cpu + - libarrow-compute 24.0.0 h53684a4_0_cpu + - libgcc >=14 + - libparquet 24.0.0 h7376487_0_cpu + - libstdcxx >=14 + license: Apache-2.0 + license_family: APACHE + size: 591654 + timestamp: 1776816104463 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-23.0.1-hb326ee9_9_cpu.conda build_number: 9 sha256: 701698a850ebf8e7bb0c37af8083f1add83af1c4c29cfdeefe231c655700c187 @@ -6465,6 +8810,20 @@ packages: license_family: APACHE size: 569672 timestamp: 1774230979201 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-24.0.0-hb326ee9_0_cpu.conda + sha256: 722bc078838857cfce8b359862a5d429832ef63378a34198adb75017db06f7e5 + md5: aaedfcaf30422514c645433bbc6c9811 + depends: + - libarrow 24.0.0 h155c802_0_cpu + - libarrow-acero 24.0.0 hb326ee9_0_cpu + - libarrow-compute 24.0.0 hdd99842_0_cpu + - libgcc >=14 + - libparquet 24.0.0 h87079af_0_cpu + - libstdcxx >=14 + license: Apache-2.0 + license_family: APACHE + size: 554319 + timestamp: 1776814191916 - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-23.0.1-h66151e4_9_cpu.conda build_number: 9 sha256: 9dbc4f5a19d57e3231e6ce135d1f4951bb13d27263c93acc2a91c79148ec8602 @@ -6484,6 +8843,24 @@ packages: license_family: APACHE size: 551166 timestamp: 1774235299847 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-24.0.0-h66151e4_0_cpu.conda + sha256: da4951e7f0d2590f08ae60eec5a67955c25289a0ce55ded87ffe7dbb39490acb + md5: 1006ab581c187fbbbc653f771aeb5100 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libarrow 24.0.0 h6b6ab80_0_cpu + - libarrow-acero 24.0.0 h66151e4_0_cpu + - libarrow-compute 24.0.0 h5d4fa73_0_cpu + - libcxx >=21 + - libopentelemetry-cpp >=1.26.0,<1.27.0a0 + - libparquet 24.0.0 h527dc83_0_cpu + - libprotobuf >=6.33.5,<6.33.6.0a0 + license: Apache-2.0 + license_family: APACHE + size: 534953 + timestamp: 1776817390073 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-23.0.1-hee8fe31_9_cpu.conda build_number: 9 sha256: 42672a9adaadb8da15566e24cf2de35d1d05cc3db72413affdfdc12985ac92a0 @@ -6503,6 +8880,24 @@ packages: license_family: APACHE size: 536818 timestamp: 1774232323846 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-24.0.0-hee8fe31_0_cpu.conda + sha256: 228d9d7c05e0c9c9d94f192649d8345dbea77680f6674d0db25f22645e7f0d77 + md5: f75c7393899ad279c62c94089aacf760 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libarrow 24.0.0 h2124f06_0_cpu + - libarrow-acero 24.0.0 hee8fe31_0_cpu + - libarrow-compute 24.0.0 h3b6a98a_0_cpu + - libcxx >=21 + - libopentelemetry-cpp >=1.26.0,<1.27.0a0 + - libparquet 24.0.0 h16c0493_0_cpu + - libprotobuf >=6.33.5,<6.33.6.0a0 + license: Apache-2.0 + license_family: APACHE + size: 520380 + timestamp: 1776816021240 - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-23.0.1-hb4dd7c2_9_cpu.conda build_number: 9 sha256: 037f4befc2df64d9c7903eb7508c1495772f17b7a318b5a888aaddb6307b48a0 @@ -6521,6 +8916,23 @@ packages: license_family: APACHE size: 518730 timestamp: 1774232781245 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-24.0.0-hb4dd7c2_0_cpu.conda + sha256: ea628348819cbccf73b0440071c437e33db05e01fd9c7d4f6a0268c0217c12fc + md5: cb5a9557a2ffa1b18b4e05621354c6bd + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libarrow 24.0.0 ha7f89c6_0_cpu + - libarrow-acero 24.0.0 h635bf11_0_cpu + - libarrow-dataset 24.0.0 h635bf11_0_cpu + - libgcc >=14 + - libprotobuf >=6.33.5,<6.33.6.0a0 + - libstdcxx >=14 + license: Apache-2.0 + license_family: APACHE + size: 502184 + timestamp: 1776816139283 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-23.0.1-hf29bd21_9_cpu.conda build_number: 9 sha256: 804a0a946f5ef52f125f16a6621882361c924a80e8770daffe6f4138acca1025 @@ -6538,6 +8950,22 @@ packages: license_family: APACHE size: 489159 timestamp: 1774231008745 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-24.0.0-hf29bd21_0_cpu.conda + sha256: b8d8bece44cb8dc15f3c6465fbec55c9b95a840a16c7ce10e71141bc4c86e8d0 + md5: 9da25b792376c43b542f84a090e7360c + depends: + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libarrow 24.0.0 h155c802_0_cpu + - libarrow-acero 24.0.0 hb326ee9_0_cpu + - libarrow-dataset 24.0.0 hb326ee9_0_cpu + - libgcc >=14 + - libprotobuf >=6.33.5,<6.33.6.0a0 + - libstdcxx >=14 + license: Apache-2.0 + license_family: APACHE + size: 467378 + timestamp: 1776814221525 - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-23.0.1-h613493e_9_cpu.conda build_number: 9 sha256: b93ace7487e34db4bd987e8d428f390ae627317968c48d16fd14314e35fdd419 @@ -6555,6 +8983,22 @@ packages: license_family: APACHE size: 466755 timestamp: 1774235410627 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-24.0.0-h613493e_0_cpu.conda + sha256: c91009ba8f07c9d06cf10c66e3e66c65f867cf06e08c11263b2530d888e37bc3 + md5: 716bc0e24430dafa3f25005120019751 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libarrow 24.0.0 h6b6ab80_0_cpu + - libarrow-acero 24.0.0 h66151e4_0_cpu + - libarrow-dataset 24.0.0 h66151e4_0_cpu + - libcxx >=21 + - libprotobuf >=6.33.5,<6.33.6.0a0 + license: Apache-2.0 + license_family: APACHE + size: 448904 + timestamp: 1776817484247 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-23.0.1-h05be00f_9_cpu.conda build_number: 9 sha256: 37b12a2d645c267e0f289ccf5890d0df1cad5f300fabe116a2cca5608f89181d @@ -6572,6 +9016,22 @@ packages: license_family: APACHE size: 472305 timestamp: 1774232406953 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-24.0.0-h05be00f_0_cpu.conda + sha256: a25d817ddb317ac5c2bb352f48c5f38a5de2a9b4e148047641de3e285280337b + md5: 7e1ca98358e41e10f187a8b125523525 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libarrow 24.0.0 h2124f06_0_cpu + - libarrow-acero 24.0.0 hee8fe31_0_cpu + - libarrow-dataset 24.0.0 hee8fe31_0_cpu + - libcxx >=21 + - libprotobuf >=6.33.5,<6.33.6.0a0 + license: Apache-2.0 + license_family: APACHE + size: 454733 + timestamp: 1776816138758 - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.4.1-hcfa2d63_0.conda sha256: e29d8ed0334305c6bafecb32f9a1967cfc0a081eac916e947a1f2f7c4bb41947 md5: f79415aee8862b3af85ea55dea37e46b @@ -6976,6 +9436,15 @@ packages: license_family: Apache size: 564908 timestamp: 1774439353713 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-22.1.4-h19cb2f5_0.conda + sha256: 596a0bdd5321c5e41a4734f18b35bcbc5d116079d13bc40d765fd93c32b285d1 + md5: 4394b1ba4b9604ac4e1c5bdc74451279 + depends: + - __osx >=11.0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 567125 + timestamp: 1776815441323 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-22.1.2-h55c6f16_0.conda sha256: d1402087c8792461bfc081629e8aa97e6e577a31ae0b84e6b9cc144a18f48067 md5: 4280e0a7fd613b271e022e60dea0138c @@ -6985,6 +9454,15 @@ packages: license_family: Apache size: 568094 timestamp: 1774439202359 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-22.1.4-h55c6f16_0.conda + sha256: 25a0d02148a39b665d9c2957676faf62a4d2a58494d53b201151199a197db4b0 + md5: 448a1af83a9205655ee1cf48d3875ca3 + depends: + - __osx >=11.0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 569927 + timestamp: 1776816293111 - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda sha256: aa8e8c4be9a2e81610ddf574e05b64ee131fab5e0e3693210c9d6d2fba32c680 md5: 6c77a605a7a689d17d4819c0f8ac9a00 @@ -7705,6 +10183,16 @@ packages: license: Apache-2.0 OR BSD-3-Clause size: 1448617 timestamp: 1758894401402 +- 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 + size: 1435782 + timestamp: 1776989559668 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libhwy-1.3.0-h81d0cf9_1.conda sha256: a6a441692b27606f8ef64ee9e6a0c72c615c2e25b01c282ee080ee8f97861943 md5: d5b93534e24e7c15792b3f336c52af07 @@ -7714,6 +10202,15 @@ packages: license: Apache-2.0 OR BSD-3-Clause size: 1180000 timestamp: 1758894754411 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libhwy-1.4.0-h0626a34_0.conda + sha256: cff38f9a1df7bc3e5ac7856bc2e5c879151b54c07b55722ec0da1af49d869721 + md5: 61b4e7ef4624c692a3ebd07100795303 + depends: + - libgcc >=14 + - libstdcxx >=14 + license: Apache-2.0 OR BSD-3-Clause + size: 945401 + timestamp: 1776989517303 - conda: https://conda.anaconda.org/conda-forge/osx-64/libhwy-1.3.0-hab838a1_1.conda sha256: 2f49632a3fd9ec5e38a45738f495f8c665298b0b35e6c89cef8e0fbc39b3f791 md5: bb8ff4fec8150927a54139af07ef8069 @@ -7723,6 +10220,15 @@ packages: license: Apache-2.0 OR BSD-3-Clause size: 1003288 timestamp: 1758894613094 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libhwy-1.4.0-hca42a69_0.conda + sha256: fb82a974f5bc029963665a77a0d669cacecfd067e1f3b32fe427d806ec21d52b + md5: b9e41e8946bb04aca90e181f29c5cf82 + depends: + - __osx >=11.0 + - libcxx >=19 + license: Apache-2.0 OR BSD-3-Clause + size: 1000219 + timestamp: 1776990421693 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libhwy-1.3.0-h48b13b8_1.conda sha256: 837fe775ba8ec9f08655bb924e28dba390d917423350333a75fd5eeac0776174 md5: 6375717f5fcd756de929a06d0e40fab0 @@ -7732,6 +10238,15 @@ packages: license: Apache-2.0 OR BSD-3-Clause size: 581579 timestamp: 1758894814983 +- 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 + size: 609931 + timestamp: 1776990524407 - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda sha256: c467851a7312765447155e071752d7bf9bf44d610a5687e32706f480aad2833f md5: 915f5995e94f60e9a4826e0b0920ee88 @@ -7776,6 +10291,17 @@ packages: license: IJG AND BSD-3-Clause AND Zlib size: 633710 timestamp: 1762094827865 +- 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 + size: 633831 + timestamp: 1775962768273 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.1.2-he30d5cf_0.conda sha256: 84064c7c53a64291a585d7215fe95ec42df74203a5bf7615d33d49a3b0f08bb6 md5: 5109d7f837a3dfdf5c60f60e311b041f @@ -7786,6 +10312,16 @@ packages: license: IJG AND BSD-3-Clause AND Zlib size: 691818 timestamp: 1762094728337 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.1.4.1-he30d5cf_0.conda + sha256: e97ec2af5f09f8f6ea8ecd550055c95ae80fae22015fcfadaa94eafe025c9ccc + md5: a85ba48648f6868016f2741fd9170250 + depends: + - libgcc >=14 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 693143 + timestamp: 1775962625956 - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.2-h8616949_0.conda sha256: ebe2877abc046688d6ea299e80d8322d10c69763f13a102010f90f7168cc5f54 md5: 48dda187f169f5a8f1e5e07701d5cdd9 @@ -7796,6 +10332,16 @@ packages: license: IJG AND BSD-3-Clause AND Zlib size: 586189 timestamp: 1762095332781 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.4.1-ha1e9b39_0.conda + sha256: 6b809d8acb6b97bbb1a858eb4ba7b7163c67257b6c3f199dd9d1e0751f4c5b18 + md5: 57cc1464d457d01ac78f5860b9ca1714 + depends: + - __osx >=11.0 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 587997 + timestamp: 1775963139212 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.2-hc919400_0.conda sha256: 6c061c56058bb10374daaef50e81b39cf43e8aee21f0037022c0c39c4f31872f md5: f0695fbecf1006f27f4395d64bd0c4b8 @@ -7806,6 +10352,30 @@ packages: license: IJG AND BSD-3-Clause AND Zlib size: 551197 timestamp: 1762095054358 +- 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 + size: 555681 + timestamp: 1775962975624 +- 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 + size: 1846962 + timestamp: 1777065125966 - conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.2-ha09017c_0.conda sha256: 0c2399cef02953b719afe6591223fb11d287d5a108ef8bb9a02dd509a0f738d7 md5: 1df8c1b1d6665642107883685db6cf37 @@ -7833,6 +10403,32 @@ packages: license_family: BSD size: 1489440 timestamp: 1770801995062 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjxl-0.11.2-hbae46ee_1.conda + sha256: 237bbfa18c4f245a24000c12924d61a9e54f7e6f689f405c0dc8e188a40de890 + md5: 532faebf82c7d2c10539518347cff460 + depends: + - libgcc >=14 + - libstdcxx >=14 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + - libhwy >=1.4.0,<1.5.0a0 + license: BSD-3-Clause + license_family: BSD + size: 1489188 + timestamp: 1777065125935 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libjxl-0.11.2-h473410d_1.conda + sha256: 5c59a02fcb345c49ef8bdd5e1889de8aa918bedd95917f9805d20659cec65da1 + md5: 596810d804d0b2f2c54bfdd635025e92 + depends: + - __osx >=11.0 + - libcxx >=19 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + - libhwy >=1.4.0,<1.5.0a0 + license: BSD-3-Clause + license_family: BSD + size: 1692611 + timestamp: 1777065242546 - conda: https://conda.anaconda.org/conda-forge/osx-64/libjxl-0.11.2-hde0fb83_0.conda sha256: 4c7fd37ccdb49bfc947307367693701b040e78333896e0db3effd90dee64549b md5: fb86ff643e4f58119644c0c8d0b1d785 @@ -7859,6 +10455,19 @@ packages: license_family: BSD size: 1032335 timestamp: 1770802059749 +- 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 + size: 1032419 + timestamp: 1777065264956 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-6_h47877c9_openblas.conda build_number: 6 sha256: 371f517eb7010b21c6cc882c7606daccebb943307cb9a3bf2c70456a5c024f7d @@ -7926,6 +10535,17 @@ packages: license: 0BSD size: 113207 timestamp: 1768752626120 +- 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 + size: 113478 + timestamp: 1775825492909 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.2-he30d5cf_0.conda sha256: 843c46e20519651a3e357a8928352b16c5b94f4cd3d5481acc48be2e93e8f6a3 md5: 96944e3c92386a12755b94619bae0b35 @@ -7936,6 +10556,16 @@ packages: license: 0BSD size: 125916 timestamp: 1768754941722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.3-he30d5cf_0.conda + sha256: d61962b9cd54c3554361550203c64d5b65b71e3058a285b66e4b04b9769f0a5c + md5: 76298a9e6d71ee6e832a8d0d7373b261 + depends: + - libgcc >=14 + constrains: + - xz 5.8.3.* + license: 0BSD + size: 126102 + timestamp: 1775828008518 - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.2-h11316ed_0.conda sha256: 7ab3c98abd3b5d5ec72faa8d9f5d4b50dcee4970ed05339bc381861199dabb41 md5: 688a0c3d57fa118b9c97bf7e471ab46c @@ -7946,6 +10576,16 @@ packages: license: 0BSD size: 105482 timestamp: 1768753411348 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.3-hbb4bfdb_0.conda + sha256: d9e2006051529aec5578c6efeb13bb6a7200a014b2d5a77a579e83a8049d5f3c + md5: becdfbfe7049fa248e52aa37a9df09e2 + depends: + - __osx >=11.0 + constrains: + - xz 5.8.3.* + license: 0BSD + size: 105724 + timestamp: 1775826029494 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.2-h8088a28_0.conda sha256: 7bfc7ffb2d6a9629357a70d4eadeadb6f88fa26ebc28f606b1c1e5e5ed99dc7e md5: 009f0d956d7bfb00de86901d16e486c7 @@ -7956,6 +10596,16 @@ packages: license: 0BSD size: 92242 timestamp: 1768752982486 +- 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 + size: 92472 + timestamp: 1775825802659 - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda sha256: fe171ed5cf5959993d43ff72de7596e8ac2853e9021dec0344e583734f1e0843 md5: 2c21e66f50753a083cbe6b80f38268fa @@ -8261,6 +10911,20 @@ packages: license_family: APACHE size: 1390169 timestamp: 1774232604005 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-24.0.0-h7376487_0_cpu.conda + sha256: 374a9c6222df047ab6d43c6efe96d380b7750b53ec9b84fc9ad8bf1c22df4522 + md5: c828cca50cd3a7c53d12ce8f0872c6ec + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 24.0.0 ha7f89c6_0_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 + size: 1428303 + timestamp: 1776815964191 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-23.0.1-h87079af_9_cpu.conda build_number: 9 sha256: c28e986f23717e1ab14620d0fba9cc9a10d98a5bdfe7335588eabb291a973b0f @@ -8275,6 +10939,19 @@ packages: license_family: APACHE size: 1272047 timestamp: 1774230901373 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-24.0.0-h87079af_0_cpu.conda + sha256: 051649368d2f52e44373cbfd6389fbeaf2e166058cd26e5f0597b077765e3fb1 + md5: 4bbb4a45a5003d580a7313174a1ff04b + depends: + - libarrow 24.0.0 h155c802_0_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 + size: 1307618 + timestamp: 1776814113714 - conda: https://conda.anaconda.org/conda-forge/osx-64/libparquet-23.0.1-h527dc83_9_cpu.conda build_number: 9 sha256: 7b9cbfada276fc282ec938c28588f6cf88ffa3c54a9f33e3ee08dee7ae285913 @@ -8293,6 +10970,23 @@ packages: license_family: APACHE size: 1093529 timestamp: 1774234839856 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libparquet-24.0.0-h527dc83_0_cpu.conda + sha256: c8348d5a0ce69d168235a26b70a29df067151bef01ac66a7af5663673ba48ea1 + md5: 8dc4ff1ac0de0decb1cddc312110ac2a + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libarrow 24.0.0 h6b6ab80_0_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 + size: 1121421 + timestamp: 1776817024687 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-23.0.1-h16c0493_9_cpu.conda build_number: 9 sha256: 85fc60c1db0d7908dac20a04300f979c39f3997fd9678eed4e211ffd1d4ddc51 @@ -8311,6 +11005,23 @@ packages: license_family: APACHE size: 1072901 timestamp: 1774232081998 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-24.0.0-h16c0493_0_cpu.conda + sha256: 992e7c26f555689ea9df19c534df691df148e96f5e4f0c1e5c71be8ea7b8b58c + md5: 09b65c6b00e5c9d9f4ca07427b492daf + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libarrow 24.0.0 h2124f06_0_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 + size: 1097756 + timestamp: 1776815688915 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.56-h421ea60_0.conda sha256: 4f9fca3bc21e485ec0b3eb88db108b6cf9ab9a481cdf7d2ac6f9d30350b45ead md5: 97169784f0775c85683c3d8badcea2c3 @@ -8321,6 +11032,16 @@ packages: license: zlib-acknowledgement size: 317540 timestamp: 1774513272700 +- 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 + size: 317729 + timestamp: 1776315175087 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.56-h1abf092_0.conda sha256: 478c923cce506ff366cc765ab98feda4ce33a83329a8271b76289da9f0ae19f3 md5: d5aff85583507906d19696d4961f4738 @@ -8330,6 +11051,15 @@ packages: license: zlib-acknowledgement size: 340342 timestamp: 1774513287212 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.58-h1abf092_0.conda + sha256: 483eaa53da40a6a3e558709d9f7b1ca388735364ae21a1ba58cf942514649c92 + md5: f51503ac45a4888bce71af9027a2ecc9 + depends: + - libgcc >=14 + - libzlib >=1.3.2,<2.0a0 + license: zlib-acknowledgement + size: 341202 + timestamp: 1776315188425 - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.56-he930e7c_0.conda sha256: aa1f03701b8d6e22d1caea2c4a368cf0c35b3f9edb01fa78cc87b673d7d76f5a md5: 635ddc7697d405386dcb64d777c545b5 @@ -8339,6 +11069,15 @@ packages: license: zlib-acknowledgement size: 299085 timestamp: 1774513337570 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.58-he930e7c_0.conda + sha256: a669b22978e546484d18d99a210801b1823360a266d7035c713d8d1facd035f7 + md5: 9744d43d5200f284260637304a069ddd + depends: + - __osx >=11.0 + - libzlib >=1.3.2,<2.0a0 + license: zlib-acknowledgement + size: 299206 + timestamp: 1776315286816 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.56-h132b30e_0.conda sha256: 3aac73e6c8b2d6dc38f8918c8de3354ed920db00fd9234c000b20fd66323c463 md5: ce25ae471d213f9dd5edb0fe8e0b102a @@ -8348,6 +11087,15 @@ packages: license: zlib-acknowledgement size: 289288 timestamp: 1774513431937 +- 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 + size: 289546 + timestamp: 1776315246750 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.3-h9abb657_0.conda sha256: c7e61b86c273ec1ce92c0e087d1a0f3ed3b9485507c6cd35e03bc63de1b6b03f md5: 405ec206d230d9d37ad7c2636114cbf4 @@ -8361,6 +11109,16 @@ packages: license: PostgreSQL size: 2865686 timestamp: 1772136328077 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpq-16.13-h2e882d2_0.conda + sha256: 41028869099c3f09ac69aa4290025e42deb0d07d8166843f623a187a841aad18 + md5: 2a2c4afbc610580c5b8fc181d0b59d0a + depends: + - krb5 >=1.22.2,<1.23.0a0 + - libgcc >=14 + - openssl >=3.5.5,<4.0a0 + license: PostgreSQL + size: 2478277 + timestamp: 1772137203266 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpq-18.3-h7d4fc67_0.conda sha256: 878b5d316087a226eb235f0dd46e7de39941afe13c5d3c7f6a289e8853d45333 md5: 7eb18b198b1d35da9352062c69c4ee64 @@ -8385,6 +11143,16 @@ packages: license: PostgreSQL size: 2561593 timestamp: 1772137333497 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpq-16.13-h795a7be_0.conda + sha256: e40a4c88ac9a74b1ffae174de43fb9d131b9c95be5c7c722f4debfe19de1a4eb + md5: e4beeb8bf4b5716905980fbe068c33ed + depends: + - __osx >=11.0 + - krb5 >=1.22.2,<1.23.0a0 + - openssl >=3.5.5,<4.0a0 + license: PostgreSQL + size: 2360405 + timestamp: 1772138299604 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpq-18.3-hd341ff2_0.conda sha256: 625b59f5b3c750a2e4c5a0a4ade5b4f1c3d6b8d6a781797324344c03270a529a md5: fc064efe5042bcaf994307822ccbb1f1 @@ -8551,6 +11319,17 @@ packages: license: blessing size: 951405 timestamp: 1772818874251 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.0-hf4e2dac_0.conda + sha256: ec37c79f737933bbac965f5dc0f08ef2790247129a84bb3114fad4900adce401 + md5: 810d83373448da85c3f673fbcb7ad3a3 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=78.3,<79.0a0 + - libgcc >=14 + - libzlib >=1.3.2,<2.0a0 + license: blessing + size: 958864 + timestamp: 1775753750179 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.52.0-h10b116e_0.conda sha256: 1ddaf91b44fae83856276f4cb7ce544ffe41d4b55c1e346b504c6b45f19098d6 md5: 77891484f18eca74b8ad83694da9815e @@ -8561,6 +11340,15 @@ packages: license: blessing size: 952296 timestamp: 1772818881550 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.53.0-h022381a_0.conda + sha256: 2cc87e1394245188dd7c2c621f14ad0d15910d842e3541e8a571dc94d222ce75 + md5: 86db4036fd08bf34e991bf48a8af405d + depends: + - libgcc >=14 + - libzlib >=1.3.2,<2.0a0 + license: blessing + size: 954351 + timestamp: 1775753767469 - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.52.0-h77d7759_0.conda sha256: f500d1cd50cfcd288d02b8fc3c3b7ecf8de6fec7b86e57ea058def02908e4231 md5: d553eb96758e038b04027b30fe314b2d @@ -8570,6 +11358,16 @@ packages: license: blessing size: 996526 timestamp: 1772819669038 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.53.0-h8f8c405_0.conda + sha256: ae9d83cab8988a7d4ccec411fef23c141b5b3d301db3e926ab7cd4befe3764e6 + md5: f2bb6692dfb33a1bbce746aa812a9a5b + depends: + - __osx >=11.0 + - icu >=78.3,<79.0a0 + - libzlib >=1.3.2,<2.0a0 + license: blessing + size: 1007272 + timestamp: 1775754456682 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.52.0-h1ae2325_0.conda sha256: beb0fd5594d6d7c7cd42c992b6bb4d66cbb39d6c94a8234f15956da99a04306c md5: f6233a3fddc35a2ec9f617f79d6f3d71 @@ -8580,6 +11378,15 @@ packages: license: blessing size: 918420 timestamp: 1772819478684 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.53.0-h1b79a29_0.conda + sha256: 1a9d1e3e18dbb0b87cff3b40c3e42703730d7ac7ee9b9322c2682196a81ba0c3 + md5: 8423c008105df35485e184066cad4566 + depends: + - __osx >=11.0 + - libzlib >=1.3.2,<2.0a0 + license: blessing + size: 920039 + timestamp: 1775754485962 - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda sha256: fa39bfd69228a13e553bd24601332b7cfeb30ca11a3ca50bb028108fe90a7661 md5: eecce068c7e4eddeb169591baac20ac4 @@ -8679,6 +11486,20 @@ packages: license_family: APACHE size: 424208 timestamp: 1753277183984 +- 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 + size: 423861 + timestamp: 1777018957474 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.22.0-h046380b_1.conda sha256: 43fdf51565c239246a169e2d04bd35e3e2e227ccf8fcd4e2bba77431eadee623 md5: 775bd916d4f0db14754da3f4a5575d15 @@ -8692,6 +11513,19 @@ packages: license_family: APACHE size: 415854 timestamp: 1753277171370 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.22.0-ha522d1d_2.conda + sha256: c43ccf2e53750a84962c2440359ec54fed01b36838d0a08e36f4b294c7d837a6 + md5: 6ecb1ee3cbccd5c3b9ba044e24515153 + depends: + - 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 + size: 414117 + timestamp: 1777018976584 - conda: https://conda.anaconda.org/conda-forge/osx-64/libthrift-0.22.0-h687e942_1.conda sha256: a0f9fdc663db089fde4136a0bd6c819d7f8daf869fc3ca8582201412e47f298c md5: 69251ed374b31a5664bf5ba58626f3b7 @@ -8705,6 +11539,19 @@ packages: license_family: APACHE size: 331822 timestamp: 1753277335578 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libthrift-0.22.0-hebea4ca_2.conda + sha256: 89a20cb35e0f32d59a7080c934a56120591cb962d4fab1cba3a795a094bc8256 + md5: 36d5479e1b5967c2eb9824b953317e41 + 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 + size: 332270 + timestamp: 1777019812419 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.22.0-h14a376c_1.conda sha256: 8b703f2c6e47ed5886d7298601b9416b59e823fc8d1a8fa867192c94c5911aac md5: 3161023bb2f8c152e4c9aa59bdd40975 @@ -8718,6 +11565,19 @@ packages: license_family: APACHE size: 323360 timestamp: 1753277264380 +- 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 + size: 323017 + timestamp: 1777019893083 - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda sha256: e5f8c38625aa6d567809733ae04bb71c161a42e44a9fa8227abe61fa5c60ebe0 md5: cd5a90476766d53e901500df9215e927 @@ -8830,6 +11690,16 @@ packages: license_family: BSD size: 40311 timestamp: 1766271528534 +- 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 + size: 40297 + timestamp: 1775052476770 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.41.3-h1022ec0_0.conda sha256: c37a8e89b700646f3252608f8368e7eb8e2a44886b92776e57ad7601fc402a11 md5: cf2861212053d05f27ec49c3784ff8bb @@ -8839,6 +11709,15 @@ packages: license_family: BSD size: 43453 timestamp: 1766271546875 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.42-h1022ec0_0.conda + sha256: 7d427edf58c702c337bf62bc90f355b7fc374a65fd9f70ea7a490f13bb76b1b9 + md5: a0b5de740d01c390bdbb46d7503c9fab + depends: + - libgcc >=14 + license: BSD-3-Clause + license_family: BSD + size: 43567 + timestamp: 1775052485727 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb03c661_1.conda sha256: c180f4124a889ac343fc59d15558e93667d894a966ec6fdb61da1604481be26b md5: 0f03292cc56bf91a077a134ea8747118 @@ -9001,6 +11880,21 @@ packages: license_family: MIT size: 45968 timestamp: 1772704614539 +- 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 + size: 46810 + timestamp: 1776376751152 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.15.2-h825857f_0.conda sha256: 3e51e1952cb60c8107094b6b78473d91ff49d428ad4bef6806124b383e8fe29c md5: 19de96909ee1198e2853acd8aba89f6c @@ -9015,6 +11909,21 @@ packages: license_family: MIT size: 47837 timestamp: 1772704681112 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.15.3-h9ba8346_0.conda + sha256: 74aa3c62e0ec4491343b95ce4ca8812ad2f9bb015369e29cb3b4b9b4302d8cb0 + md5: 15078261d03e3c3c83a42df605f7f34a + depends: + - libgcc >=14 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.3,<6.0a0 + - libxml2-16 2.15.3 h064b767_0 + - libzlib >=1.3.2,<2.0a0 + constrains: + - icu <0.0a0 + license: MIT + license_family: MIT + size: 48311 + timestamp: 1776376798296 - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.15.2-hd552753_0.conda sha256: 5b9e8a5146275ac0539231f646ee51a9e4629e730026ff69dadff35bfb745911 md5: eea3155f3b4a3b75af504c871ec23858 @@ -9029,6 +11938,20 @@ packages: license_family: MIT size: 41106 timestamp: 1772705465931 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.15.3-h953d39d_0.conda + sha256: 24248928e63b5de45012c8ad3fd6b350ae1fe2fc355613bb89ee5f0a35835bea + md5: 33f30d4878d1f047da82a669c33b307d + 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 h7a90416_0 + - libzlib >=1.3.2,<2.0a0 + license: MIT + license_family: MIT + size: 40836 + timestamp: 1776377277986 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.2-h8d039ee_0.conda sha256: 99cb32dd06a2e58c12981b71a84b052293f27b5ab042e3f21d895f5d7ee13eff md5: e476ba84e57f2bd2004a27381812ad4e @@ -9043,6 +11966,21 @@ packages: license_family: MIT size: 41206 timestamp: 1772704982288 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.3-heed7d32_0.conda + sha256: 4d9c117b2dd222cf891710d5f6a570ebb275479979843a1477ac54ed50907b40 + md5: 0c1fdc80534d8f25fd74722aba81f044 + depends: + - __osx >=11.0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.3,<6.0a0 + - libxml2-16 2.15.3 h6967ea9_0 + - libzlib >=1.3.2,<2.0a0 + constrains: + - icu <0.0a0 + license: MIT + license_family: MIT + size: 41663 + timestamp: 1776377341241 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.2-hca6bf5a_0.conda sha256: 08d2b34b49bec9613784f868209bb7c3bb8840d6cf835ff692e036b09745188c md5: f3bc152cb4f86babe30f3a4bf0dbef69 @@ -9059,6 +11997,22 @@ packages: license_family: MIT size: 557492 timestamp: 1772704601644 +- 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 + size: 559775 + timestamp: 1776376739004 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-16-2.15.2-h79dcc73_0.conda sha256: da6b2ebbcecc158200d90be39514e4e902971628029b35b7f6ad57270659c5d9 md5: e3ec9079759d35b875097d6a9a69e744 @@ -9074,6 +12028,21 @@ packages: license_family: MIT size: 598438 timestamp: 1772704671710 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-16-2.15.3-h064b767_0.conda + sha256: 96e9bd642c013ce3407c23b3819204ea8a591567d62b49baa4bafb2f1487326c + md5: 876c5457664559cdc67c4ac71e2945cb + depends: + - libgcc >=14 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.3,<6.0a0 + - libzlib >=1.3.2,<2.0a0 + constrains: + - icu <0.0a0 + - libxml2 2.15.3 + license: MIT + license_family: MIT + size: 601420 + timestamp: 1776376789358 - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-16-2.15.2-h7a90416_0.conda sha256: f67e4b7d7f97e57ecd611a42e42d5f6c047fd3d1eb8270813b888924440c8a59 md5: 0c8bdbfd118f5963ab343846094932a3 @@ -9089,6 +12058,21 @@ packages: license_family: MIT size: 495922 timestamp: 1772705426323 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-16-2.15.3-h7a90416_0.conda + sha256: 437f003e299d77403db42d17e532d686236f357ac5c3d6bf466558c697902597 + md5: c74ae93cd7876e3a9c4b5569d5e29e34 + 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 + size: 496338 + timestamp: 1776377250079 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.2-h5ef1a60_0.conda sha256: 6432259204e78c8a8a815afae987fbf60bd722605fe2c4b022e65196b17d4537 md5: b284e2b02d53ef7981613839fb86beee @@ -9104,6 +12088,21 @@ packages: license_family: MIT size: 466220 timestamp: 1772704950232 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.3-h6967ea9_0.conda + sha256: 43895a7517c055b8893531290f9dc48bd751eb04be04f14bbce3b6c71b052be6 + md5: 6c8292c2ee808aeef2406083beaa6da7 + depends: + - __osx >=11.0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.3,<6.0a0 + - libzlib >=1.3.2,<2.0a0 + constrains: + - libxml2 2.15.3 + - icu <0.0a0 + license: MIT + license_family: MIT + size: 465820 + timestamp: 1776377317454 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.43-h711ed8c_1.conda sha256: 0694760a3e62bdc659d90a14ae9c6e132b525a7900e59785b18a08bb52a5d7e5 md5: 87e6096ec6d542d1c1f8b33245fe8300 @@ -9240,6 +12239,18 @@ packages: license: Apache-2.0 WITH LLVM-exception size: 310956 timestamp: 1774732996355 +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-22.1.4-h0d3cbff_0.conda + sha256: c933580850e35ec0b8c53439aa63041e979fc6fe845fe0630bc6476acae8293c + md5: fac1a640081b85688ead36a88c4d20ff + depends: + - __osx >=11.0 + constrains: + - openmp 22.1.4|22.1.4.* + - intel-openmp <0.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 311251 + timestamp: 1776846279965 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-22.1.2-hc7d1edf_0.conda sha256: d8acb8e790312346a286f7168380ca3ce86d5982fb073df6e0fbec1e51fa47a1 md5: 9c162044093d8d689836dafe3c27fe06 @@ -9251,6 +12262,18 @@ packages: license: Apache-2.0 WITH LLVM-exception size: 285695 timestamp: 1774733561929 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-22.1.4-hc7d1edf_0.conda + sha256: a269273ccf48be6ac582bb958713ba8373262b9157a0fc76b7e5475e8a1d2a78 + md5: 46d04a647df7a4525e487d88068d19ef + depends: + - __osx >=11.0 + constrains: + - openmp 22.1.4|22.1.4.* + - intel-openmp <0.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 286406 + timestamp: 1776846235007 - conda: https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.46.0-py313hdd307be_0.conda sha256: 0e1bc6ee1c7885cc26c37fcd1a2095169a4e4e148860c600d3f685b6a4f32322 md5: d99ac09b331711fd12e16323ca8d96e4 @@ -9266,6 +12289,21 @@ packages: license_family: BSD size: 34130706 timestamp: 1765280056189 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.47.0-py313hdd307be_1.conda + sha256: 3e9bf7bdbae5c3bc8f3831351016e880c931816c27f076fbd5d400914727e539 + md5: 916eb82289f0d2209176fd2d05c5d1f5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - libzlib >=1.3.2,<2.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-2-Clause + license_family: BSD + size: 34105345 + timestamp: 1776076751807 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/llvmlite-0.46.0-py313ha7661e1_0.conda sha256: ed8f559ad979076b0d403b99a0d7db05c8d2cbbda79cfcb36ceb4244ef8eb67d md5: 2dd0316e2b235d715583cc756b0b04e3 @@ -9281,6 +12319,21 @@ packages: license_family: BSD size: 36640815 timestamp: 1765280006315 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/llvmlite-0.47.0-py313ha7661e1_1.conda + sha256: 24a9a6ab94fb18b331e13ddda769e34e2f781db59cf39cfd63892bc0062abca4 + md5: d7822f883059cfbccc1f21ad9c9121df + depends: + - libgcc >=14 + - libstdcxx >=14 + - libzlib >=1.3.2,<2.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-2-Clause + license_family: BSD + size: 36623997 + timestamp: 1776076775094 - conda: https://conda.anaconda.org/conda-forge/osx-64/llvmlite-0.46.0-py313h590e1ab_0.conda sha256: f1549261f0f2f24c2dd2c7a613b465c0c3e4e1158c43a72224c228aa0b5cb76f md5: ab9fe8b3937e90b22a18554c3d961e97 @@ -9295,6 +12348,20 @@ packages: license_family: BSD size: 26010458 timestamp: 1765280511277 +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvmlite-0.47.0-py313he3abfad_1.conda + sha256: 2349c94059290b700dca814046ba4fb2dbecc109e644e6890c3a60b794101b7a + md5: 8f3ee1831de575259c46f0ca2a526e7a + depends: + - __osx >=11.0 + - libcxx >=19 + - libzlib >=1.3.2,<2.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-2-Clause + license_family: BSD + size: 26009261 + timestamp: 1776077581168 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvmlite-0.46.0-py313he297ed2_0.conda sha256: d59fdc5a5682e3f6c17f1c8dc73019afaf6724f4ecd10878515438ca35683269 md5: 81f05ab2abc842253505133ffa652bf5 @@ -9310,6 +12377,21 @@ packages: license_family: BSD size: 24338921 timestamp: 1765280468997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvmlite-0.47.0-py313h691f2cf_1.conda + sha256: a092b6d86ee2ec3af1fdecf4835438eadefe3e4e59e77019848a669f8a60de94 + md5: 83997263c510455908d0987b6e14afd6 + depends: + - __osx >=11.0 + - libcxx >=19 + - libzlib >=1.3.2,<2.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-2-Clause + license_family: BSD + size: 24325284 + timestamp: 1776077197369 - conda: https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2 sha256: 9afe0b5cfa418e8bdb30d8917c5a6cec10372b037924916f1f85b9f4899a67a6 md5: 91e27ef3d05cc772ce627e51cff111c4 @@ -9334,6 +12416,21 @@ packages: license: BSD-3-Clause and MIT-CMU size: 1606959 timestamp: 1762506368003 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lxml-6.1.0-py313h4a16004_0.conda + sha256: 96dc58adadf29655c0a010c5268ef7cf3c7fb676015b7c96bc9dc01c800b659e + md5: e5ba7f288d2389e3801952efa1be111f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libxml2 + - libxml2-16 >=2.14.6 + - libxslt >=1.1.43,<2.0a0 + - libzlib >=1.3.2,<2.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause and MIT-CMU + size: 1572226 + timestamp: 1776512601322 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lxml-6.0.2-py313h30cdae8_2.conda sha256: 7d6c5425e84353bbd1fb2a3658c2d7e3169e656dfef7e59c34f5bf7e8a6aabb4 md5: afa4cdff5e3351fba38e3f11ced5b690 @@ -9349,6 +12446,21 @@ packages: license: BSD-3-Clause and MIT-CMU size: 1527830 timestamp: 1762506450003 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lxml-6.1.0-py313h30cdae8_0.conda + sha256: 2430faa79bb06947c7e61040dd8967bda4c8490f7d81ce24470d99b3572aa90d + md5: d6e851e493975b32f40433fe0a9b04c2 + depends: + - libgcc >=14 + - libxml2 + - libxml2-16 >=2.14.6 + - libxslt >=1.1.43,<2.0a0 + - libzlib >=1.3.2,<2.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause and MIT-CMU + size: 1494118 + timestamp: 1776512648119 - conda: https://conda.anaconda.org/conda-forge/osx-64/lxml-6.0.2-py313h00bd3da_2.conda sha256: ad3ad781171593306f754442c8ccd4853bc90a57b30b49f48de723a8d6065d3e md5: 4158c697b90cba2db2ca8d58bd4461fb @@ -9363,6 +12475,20 @@ packages: license: BSD-3-Clause and MIT-CMU size: 1425902 timestamp: 1762506837309 +- conda: https://conda.anaconda.org/conda-forge/osx-64/lxml-6.1.0-py313hdc5d0a5_0.conda + sha256: 01fe4c1673a0f99e53a28ddef1ee4fac4c5e7ab0c3691287edd2d7013cecfc01 + md5: 25a36c8381c419eb1bd90c38a35ff375 + depends: + - __osx >=11.0 + - libxml2 + - libxml2-16 >=2.14.6 + - libxslt >=1.1.43,<2.0a0 + - libzlib >=1.3.2,<2.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause and MIT-CMU + size: 1412715 + timestamp: 1776512943610 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lxml-6.0.2-py313he6cafaa_2.conda sha256: 1be65e16e4e89d333de95b356a75df9f050a0f505e6b82633ba8157c76239835 md5: fbeb15565dc7202f9dce40783d0b270d @@ -9378,6 +12504,21 @@ packages: license: BSD-3-Clause and MIT-CMU size: 1380383 timestamp: 1762507111934 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lxml-6.1.0-py313h28ec6f0_0.conda + sha256: caabfe28000b4242a33c46e0625e3c72fa94e5246926d41386f896a26cc91ad8 + md5: 15ee46eb46f3a43538ecc9236ac399ee + depends: + - __osx >=11.0 + - libxml2 + - libxml2-16 >=2.14.6 + - libxslt >=1.1.43,<2.0a0 + - libzlib >=1.3.2,<2.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause and MIT-CMU + size: 1367799 + timestamp: 1776513002402 - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py313h28739b2_1.conda sha256: cbc82f4fa7587376c038d2f0471a73efa7ade4439857b04a0cc839262f1de6e5 md5: e69ad33075938ba81e43311da86b809c @@ -9486,6 +12627,17 @@ packages: license_family: MIT size: 71947 timestamp: 1764678340587 +- conda: https://conda.anaconda.org/conda-forge/noarch/mako-1.3.12-pyhcf101f3_0.conda + sha256: d06d02574be3892020262464b49360a749c1d448ed9f0de52fe8a08bc1483261 + md5: a73036dabdd6dfe9679ed893baa8b230 + depends: + - python >=3.10 + - importlib-metadata + - markupsafe >=0.9.2 + - python + license: MIT + size: 72185 + timestamp: 1777410001911 - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda sha256: 7b1da4b5c40385791dbc3cc85ceea9fad5da680a27d5d3cb8bfaa185e304a89e md5: 5b5203189eb668f042ac2b0826244964 @@ -9740,73 +12892,73 @@ packages: license_family: Apache size: 91725 timestamp: 1762504404391 -- conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.19.1-py313h07c4f96_0.conda - sha256: a8ff4c2a0d704e86ba1f740178ba9260954c606c095b45dd021ff9ce52f0b9c4 - md5: c313519b83810f1e0fd4c531d3275119 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.20.2-py313h07c4f96_0.conda + sha256: ae1b57248911cd9adbbf2ca1e8ebf81b0369482d5b4c628f619f15c3273ea18d + md5: 6c43e875d6f70a89909697178d2d08c4 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - mypy_extensions >=1.0.0 - - pathspec >=0.9.0 + - pathspec >=1.0.0 - psutil >=4.0 - python >=3.13,<3.14.0a0 - - python-librt >=0.6.2 + - python-librt >=0.8.0 - python_abi 3.13.* *_cp313 - typing_extensions >=4.6.0 license: MIT license_family: MIT - size: 20141878 - timestamp: 1765796286527 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mypy-1.19.1-py313hd81a959_0.conda - sha256: c39c0309f88dde4d2dde02f16a9f33a4ad1a141135df86494f90a024f3a026c4 - md5: b2f9988b6312bd5f7bd6c7fb5cbe958f + size: 21971694 + timestamp: 1776802010332 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mypy-1.20.2-py313hd81a959_0.conda + sha256: 80f793db838aa042da05b3fda47f0808b568c8d9d191826fb7b920b05642b16d + md5: 5186f7f29b8dab6725e27435ec924299 depends: - libgcc >=14 - mypy_extensions >=1.0.0 - - pathspec >=0.9.0 + - pathspec >=1.0.0 - psutil >=4.0 - python >=3.13,<3.14.0a0 - python >=3.13,<3.14.0a0 *_cp313 - - python-librt >=0.6.2 + - python-librt >=0.8.0 - python_abi 3.13.* *_cp313 - typing_extensions >=4.6.0 license: MIT license_family: MIT - size: 17259824 - timestamp: 1765796444405 -- conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.19.1-py313hf050af9_0.conda - sha256: 174cd4b4d942f8ec9ed0867905155eb2fbf3a4820cad3a34a30c4072e8306c9d - md5: dc058d59bfa10522271318946ff5777b + size: 18670292 + timestamp: 1776802162508 +- conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.20.2-py313hf59fe81_0.conda + sha256: 543bb8999db36dae32d890cf9552fbe6090be5458acb34c977cfc05e853d83d6 + md5: 4605e0caa9402f6b36c1af93ab83197d depends: - - __osx >=10.13 + - __osx >=11.0 - mypy_extensions >=1.0.0 - - pathspec >=0.9.0 + - pathspec >=1.0.0 - psutil >=4.0 - python >=3.13,<3.14.0a0 - - python-librt >=0.6.2 + - python-librt >=0.8.0 - python_abi 3.13.* *_cp313 - typing_extensions >=4.6.0 license: MIT license_family: MIT - size: 13747873 - timestamp: 1765796600005 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-1.19.1-py313hd3e6d80_0.conda - sha256: 7f52c1ede45433ae03b1ea4a45e1e6ed3fdf4f6e9e54d9ac05718205f49856e7 - md5: dd6f5c085908e1945002e50d60c5c4d8 + size: 14962980 + timestamp: 1776802953444 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-1.20.2-py313hd3e6d80_0.conda + sha256: b734fbd229cdfab3c1caa1abb4ce26059151c67ec5d918120d93d163b11a680b + md5: a3117e1e95fb48d0b5252f3fc43ab7b8 depends: - __osx >=11.0 - mypy_extensions >=1.0.0 - - pathspec >=0.9.0 + - pathspec >=1.0.0 - psutil >=4.0 - python >=3.13,<3.14.0a0 - python >=3.13,<3.14.0a0 *_cp313 - - python-librt >=0.6.2 + - python-librt >=0.8.0 - python_abi 3.13.* *_cp313 - typing_extensions >=4.6.0 license: MIT license_family: MIT - size: 11070584 - timestamp: 1765795751296 + size: 12024544 + timestamp: 1776803045716 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda sha256: 6ed158e4e5dd8f6a10ad9e525631e35cee8557718f83de7a4e3966b1f772c4b1 md5: e9c622e0d00fa24a6292279af3ab6d06 @@ -9826,6 +12978,16 @@ packages: license_family: MIT size: 280459 timestamp: 1774380620329 +- conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.20.0-pyhcf101f3_0.conda + sha256: 676cbfbf709ce984a14e3af5aef70f1ec94a29ea3fdec477115ae302b34a1a2d + md5: 6cac1a50359219d786453c6fef819f98 + depends: + - python >=3.10 + - python + license: MIT + license_family: MIT + size: 283664 + timestamp: 1776691974709 - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.4-pyhd8ed1ab_0.conda sha256: 1b66960ee06874ddceeebe375d5f17fb5f393d025a09e15b830ad0c4fffb585b md5: 00f5b8dafa842e0c27c1cd7296aa4875 @@ -9839,9 +13001,9 @@ packages: license_family: BSD size: 28473 timestamp: 1766485646962 -- conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.17.0-pyhcf101f3_0.conda - sha256: 628fea99108df8e33396bb0b88658ec3d58edf245df224f57c0dce09615cbed2 - md5: b14079a39ae60ac7ad2ec3d9eab075ca +- 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 @@ -9862,11 +13024,11 @@ packages: - python constrains: - pandoc >=2.9.2,<4.0.0 - - nbconvert ==7.17.0 *_0 + - nbconvert ==7.17.1 *_0 license: BSD-3-Clause license_family: BSD - size: 202284 - timestamp: 1769709543555 + size: 202229 + timestamp: 1775615493260 - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda sha256: 7a5bd30a2e7ddd7b85031a5e2e14f290898098dc85bea5b3a5bf147c25122838 md5: bbe1963f1e47f594070ffe87cdf612ea @@ -10061,6 +13223,30 @@ packages: license_family: BSD size: 5764718 timestamp: 1772481814929 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numba-0.65.1-py313h5dce7c4_0.conda + sha256: 3e721a1b7555f09dc30d466a867c677a3d86e2e4b4837b811659a91495c892c4 + md5: 9bf6fdae64fce80e917e23d7cfec771a + 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.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - cuda-python >=11.6 + - cudatoolkit >=11.2 + - tbb >=2021.6.0 + - libopenblas !=0.3.6 + - scipy >=1.0 + - cuda-version >=11.2 + license: BSD-2-Clause + license_family: BSD + size: 5728577 + timestamp: 1777027903975 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numba-0.64.0-py313he752a65_0.conda sha256: 05f04c06d248fad67c3ee9b43bfb9915b7a40976770689082184eb509e19996a md5: 83cd36fcbe19cf699e3e86503ba29449 @@ -10084,6 +13270,29 @@ packages: license_family: BSD size: 5751785 timestamp: 1772481873150 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numba-0.65.1-py313he752a65_0.conda + sha256: e6d96cc438fdcecc583f9a8871547a7e8b00dd3bf8ab70e99cc54ea909bb9955 + md5: 8d22c7f9bed8f529161bf9ea6defeb6c + depends: + - _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.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - tbb >=2021.6.0 + - cuda-version >=11.2 + - scipy >=1.0 + - cudatoolkit >=11.2 + - cuda-python >=11.6 + license: BSD-2-Clause + license_family: BSD + size: 5767719 + timestamp: 1777027953648 - conda: https://conda.anaconda.org/conda-forge/osx-64/numba-0.64.0-py313h4fc6aae_0.conda sha256: 05cf14b53d85c7bec07beeb644ff73ad53088c61d5b83fd4d2c9f5d0697d892e md5: cf7b4f0e369bd47903c552a22a390955 @@ -10108,6 +13317,30 @@ packages: license_family: BSD size: 5730801 timestamp: 1772482474350 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numba-0.65.1-py313h4fc6aae_0.conda + sha256: 41c871b6151e32f2dc2d290a7530d0ec29aa5c640951cf63942aef8d8be478d0 + md5: 21e23453549c0c5570442d4155a02b78 + depends: + - __osx >=11.0 + - libcxx >=19 + - llvm-openmp >=19.1.7 + - llvm-openmp >=22.1.4 + - llvmlite >=0.47.0,<0.48.0a0 + - numpy >=1.22.3,<2.5 + - numpy >=1.23,<3 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - scipy >=1.0 + - libopenblas !=0.3.6 + - cuda-python >=11.6 + - tbb >=2021.6.0 + - cudatoolkit >=11.2 + - cuda-version >=11.2 + license: BSD-2-Clause + license_family: BSD + size: 5739468 + timestamp: 1777028249637 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numba-0.64.0-py313h3ca053b_0.conda sha256: a7d1456b321218d532d73a0d47ef97f42f8729b09d579ae1bed3a9645f5deb38 md5: 8c539246e98c032220a3e7c0f48f04b8 @@ -10133,6 +13366,31 @@ packages: license_family: BSD size: 5739127 timestamp: 1772482294462 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numba-0.65.1-py313h3ca053b_0.conda + sha256: 0fe139adbad11027773484e547393640111c800294693175771d524d65db4527 + md5: 8cf811454470245db98b6bbf2a45a7c2 + depends: + - __osx >=11.0 + - libcxx >=19 + - llvm-openmp >=19.1.7 + - llvm-openmp >=22.1.4 + - llvmlite >=0.47.0,<0.48.0a0 + - numpy >=1.22.3,<2.5 + - numpy >=1.23,<3 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - cuda-version >=11.2 + - cudatoolkit >=11.2 + - cuda-python >=11.6 + - scipy >=1.0 + - libopenblas >=0.3.18,!=0.3.20 + - tbb >=2021.6.0 + license: BSD-2-Clause + license_family: BSD + size: 5739788 + timestamp: 1777028590168 - conda: https://conda.anaconda.org/conda-forge/linux-64/numcodecs-0.16.5-py313h08cd8bf_0.conda sha256: 7c35d46639f8638849535a22cb7ae1b7210121be0c7b053d8e2ab7ed485e6bff md5: 0f394ef25fb81d1dec8ff4fa716f00bd @@ -10349,6 +13607,20 @@ packages: license_family: MIT size: 3246748 timestamp: 1773327897136 +- conda: https://conda.anaconda.org/conda-forge/linux-64/obstore-0.9.4-py313h5c7d99a_0.conda + sha256: 0156e4720b39d8a9f0ef1cf3e45181c42bb8429872aae259d903290e09ecf7c1 + md5: e2899ee044931fec490fc766311c5a29 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + size: 3253168 + timestamp: 1776902108348 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/obstore-0.9.2-py313he77ad87_0.conda sha256: ce0fd7ea402dee8b3e2c24144860321a52b6a330f31e6e70edb19e4f888c5e5e md5: 45638c0bc37d31d1aa7f2f74ad989594 @@ -10363,6 +13635,20 @@ packages: license_family: MIT size: 3209711 timestamp: 1773327899974 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/obstore-0.9.4-py313he77ad87_0.conda + sha256: 836905eb2ed586768dccca51fd276c43056e43a47a036e41d471a453da2f3b11 + md5: 38a488a31ffc66cd0b37d6380b80decc + depends: + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + size: 3209078 + timestamp: 1776902212675 - conda: https://conda.anaconda.org/conda-forge/osx-64/obstore-0.9.2-py313ha3116d7_0.conda sha256: 6c5cf861862bc00ee0944c69132bd455b58886238278510a1793ccc99c1c3a8f md5: f9edddf954d35da5b4d9b7933db4752c @@ -10376,6 +13662,19 @@ packages: license_family: MIT size: 3149525 timestamp: 1773328609215 +- conda: https://conda.anaconda.org/conda-forge/osx-64/obstore-0.9.4-py313ha3116d7_0.conda + sha256: b84e86810ab79765373b060d1a245dcdc43353e6f89fe17882bcfdd7ea927a56 + md5: 2dec5904069cc135f622c26a4b1659fb + depends: + - __osx >=11.0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 3151469 + timestamp: 1776902694508 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/obstore-0.9.2-py313h7d00576_0.conda sha256: 90224b4808f17144f8e5bc861815b715e57c038149d1df30c944f0df05f37485 md5: 91d9d0da530b692916b50ae790bed719 @@ -10390,6 +13689,20 @@ packages: license_family: MIT size: 2961473 timestamp: 1773328358554 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/obstore-0.9.4-py313h7d00576_0.conda + sha256: 631f4a33eae6423d4329650ee053cb2342dfa0e73b8565478d79cf9bd4063ac0 + md5: ce570ff92ef80a64a7fd8554905dea78 + depends: + - __osx >=11.0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 2964721 + timestamp: 1776903453238 - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda sha256: 3900f9f2dbbf4129cf3ad6acf4e4b6f7101390b53843591c53b00f034343bc4d md5: 11b3379b191f63139e29c0d19dee24cd @@ -10455,6 +13768,18 @@ packages: license_family: BSD size: 279846 timestamp: 1771349499024 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openjph-0.27.0-h8d634f6_0.conda + sha256: 7feff0a0cf14ee008ae03fc83fa556d5d0acfac870a6ce4371d6a75e5edc8d0a + md5: 8397bb8cf4b370f5df7d7ee3d80ea977 + depends: + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - libtiff >=4.7.1,<4.8.0a0 + license: BSD-2-Clause + license_family: BSD + size: 282674 + timestamp: 1776138260696 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjph-0.26.3-h55827e0_0.conda sha256: b3bb469fed20d795c03ca45272f247b4f216df12de8a726ea1fa8dcd04348ab7 md5: cc1ebab576bd98d2cd82b0fbca20d033 @@ -10466,6 +13791,17 @@ packages: license_family: BSD size: 228534 timestamp: 1771349510383 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjph-0.27.0-h55827e0_0.conda + sha256: 1735bfcd4ce96c13fb59e8438ac333c81b7e7426997a0d89805a372d7de5811c + md5: 33946e3bfbf4c4a85b4c47f1f068dd1c + depends: + - libgcc >=14 + - libstdcxx >=14 + - libtiff >=4.7.1,<4.8.0a0 + license: BSD-2-Clause + license_family: BSD + size: 230667 + timestamp: 1776138264738 - conda: https://conda.anaconda.org/conda-forge/osx-64/openjph-0.26.3-h2c0e27e_0.conda sha256: 31dc4a54fdd07dae11a7e0dc14cf8416d3eedb16492e3504d7f3d061f97ab9e2 md5: 93c8b8f214a659b8e506f084206603da @@ -10477,6 +13813,17 @@ packages: license_family: BSD size: 266107 timestamp: 1771349760954 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openjph-0.27.0-h2c0e27e_0.conda + sha256: 044ec189d61848268f13a83ed9cf54e0b074b605859935166b7c52b2ac1b4f7d + md5: adae8d1381843e6d8da2fdc057346d73 + depends: + - __osx >=11.0 + - libcxx >=19 + - libtiff >=4.7.1,<4.8.0a0 + license: BSD-2-Clause + license_family: BSD + size: 267460 + timestamp: 1776138509059 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjph-0.26.3-h2a4d681_0.conda sha256: 8da463f8e61ce53ab8e577a7a039d8af84aa431058004b6b7d76606470933e78 md5: a41bb9b11d64287b789c267f715efe75 @@ -10488,6 +13835,17 @@ packages: license_family: BSD size: 182293 timestamp: 1771349598209 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjph-0.27.0-h2a4d681_0.conda + sha256: 446ac3241c7643b2f918979f7eeca2333ff291d82df07da7a77fd09ed50d1abc + md5: 3ade21592a8a1ddd526eaba5bc6babcc + depends: + - libcxx >=19 + - __osx >=11.0 + - libtiff >=4.7.1,<4.8.0a0 + license: BSD-2-Clause + license_family: BSD + size: 184116 + timestamp: 1776138569900 - conda: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.10-hbde042b_1.conda sha256: 2e185a3dc2bdc4525dd68559efa3f24fa9159a76c40473e320732b35115163b2 md5: 3c40a106eadf7c14c6236ceddb267893 @@ -10502,6 +13860,20 @@ packages: license_family: BSD size: 785570 timestamp: 1771970256722 +- 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 + size: 786149 + timestamp: 1775741359582 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openldap-2.6.10-h2fb54aa_1.conda sha256: 32c9bd01e108a6983778c13b54ff6a99cb2eca188ce217db907819ec6d1d5db7 md5: b761e5f1358577a16ca187c6116d9fcc @@ -10528,6 +13900,19 @@ packages: license_family: BSD size: 773589 timestamp: 1771970878018 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openldap-2.6.13-h2f5043c_0.conda + sha256: 9b1b7fb7b6d3c98fd9b42313f575b93dba0fd299add27cbb7b1a3f26bbc62c85 + md5: 59df11dee9461bb55a0d7bcf4f3b7b7b + 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 + size: 777355 + timestamp: 1775742025810 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openldap-2.6.10-hf7f56bc_1.conda sha256: e0b08e88f52391c829d347039c6152e3f39b8b0ca0baf85b42fa38e8edb2ff17 md5: a9a018599629925fb1e597e5a730d2af @@ -10600,6 +13985,17 @@ packages: license_family: Apache size: 3164551 timestamp: 1769555830639 +- 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 + size: 3167099 + timestamp: 1775587756857 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.1-h546c87b_1.conda sha256: 7f8048c0e75b2620254218d72b4ae7f14136f1981c5eb555ef61645a9344505f md5: 25f5885f11e8b1f075bccf4a2da91c60 @@ -10610,6 +14006,16 @@ packages: license_family: Apache size: 3692030 timestamp: 1769557678657 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.2-h546c87b_0.conda + sha256: 348cb74c1530ac241215d047ef65d134cf797af935c97a68655319362b7e6a01 + md5: 3b129669089e4d6a5c6871dbb4669b99 + depends: + - ca-certificates + - libgcc >=14 + license: Apache-2.0 + license_family: Apache + size: 3706406 + timestamp: 1775589602258 - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.1-hb6871ef_1.conda sha256: e02e5639b0e4d6d4fcf0f3b082642844fb5a37316f5b0a1126c6271347462e90 md5: 30bb8d08b99b9a7600d39efb3559fff0 @@ -10618,8 +14024,18 @@ packages: - ca-certificates license: Apache-2.0 license_family: Apache - size: 2777136 - timestamp: 1769557662405 + size: 2777136 + timestamp: 1769557662405 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.2-hc881268_0.conda + sha256: 334fd49ea31b99114f5afb1ec44555dc8c90640648302a4f8f838ee345d1ec50 + md5: 5cf0ece4375c73d7a5765e83565a69c7 + depends: + - __osx >=11.0 + - ca-certificates + license: Apache-2.0 + license_family: Apache + size: 2776564 + timestamp: 1775589970694 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.1-hd24854e_1.conda sha256: 361f5c5e60052abc12bdd1b50d7a1a43e6a6653aab99a2263bf2288d709dcf67 md5: f4f6ad63f98f64191c3e77c5f5f29d76 @@ -10630,6 +14046,16 @@ packages: license_family: Apache size: 3104268 timestamp: 1769556384749 +- 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 + size: 3106008 + timestamp: 1775587972483 - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.3.0-h21090e2_0.conda sha256: a60c2578c8422e0c67206d269767feb4d3e627511558b6866e5daf2231d5214d md5: 8027fce94fdfdf2e54f9d18cbae496df @@ -10717,6 +14143,20 @@ packages: license_family: APACHE size: 347329 timestamp: 1771788973176 +- conda: https://conda.anaconda.org/conda-forge/linux-64/orjson-3.11.8-py313h541fbb8_0.conda + sha256: d2b3c537849747953305c8449ce82caa345f0eae7c186e08ac4bccb4dee76b21 + md5: e19d5c712d375e98ee31245de9d7c86c + depends: + - python + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python_abi 3.13.* *_cp313 + constrains: + - __glibc >=2.17 + license: Apache-2.0 + license_family: APACHE + size: 364011 + timestamp: 1774994018298 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orjson-3.11.7-py313h9a81766_0.conda sha256: 06db4bb10ab819e78974d7ef561e700075d7311f94f80732f32b1dbc455b37b6 md5: 4788a3cd99a6145f138c7a7a4395addd @@ -10731,6 +14171,20 @@ packages: license_family: APACHE size: 359833 timestamp: 1771788981420 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orjson-3.11.8-py313h9a81766_0.conda + sha256: 4fe5963291eaaf86ff1082181df80587ba297934946dc4fcff3861cc454b41c3 + md5: 4410b9ed8a7b70e80c8af644b16af923 + depends: + - python + - libgcc >=14 + - python 3.13.* *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - __glibc >=2.17 + license: Apache-2.0 + license_family: APACHE + size: 381070 + timestamp: 1774994042063 - conda: https://conda.anaconda.org/conda-forge/osx-64/orjson-3.11.7-py313h9317e59_0.conda sha256: f98af39f2692098af81ba54e65daefba695cf3da844e1736b0db85617faa688c md5: b443ae9fdac2d09c23f33ea0565e95c5 @@ -10744,6 +14198,19 @@ packages: license_family: APACHE size: 335571 timestamp: 1771788968654 +- conda: https://conda.anaconda.org/conda-forge/osx-64/orjson-3.11.8-py313h13dbcd0_0.conda + sha256: ec0d6111cb3868aa0ec96a6735d64f49fc9574cad740ee472cc55d602605d57b + md5: 917817ae876790a590611bd8b521789d + depends: + - python + - __osx >=11.0 + - python_abi 3.13.* *_cp313 + constrains: + - __osx >=10.13 + license: Apache-2.0 + license_family: APACHE + size: 351856 + timestamp: 1774994125966 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orjson-3.11.7-py313hf195ed2_0.conda sha256: a7355a84c29225838e32e29ababaea8c04a70e086ada540897c607e8cebe0757 md5: d62cc2109f80cf895b9976f00bf82ac0 @@ -10758,6 +14225,20 @@ packages: license_family: APACHE size: 320642 timestamp: 1771788992012 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orjson-3.11.8-py313hf195ed2_0.conda + sha256: f62b2a7e095d781e3f015a0a0e9eb3cbf48e610a979c468404569583e4452b03 + md5: 7ae899025a10a73cc647a193e29f6396 + depends: + - python + - __osx >=11.0 + - python 3.13.* *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - __osx >=11.0 + license: Apache-2.0 + license_family: APACHE + size: 335121 + timestamp: 1774994093311 - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda sha256: 1840bd90d25d4930d60f57b4f38d4e0ae3f5b8db2819638709c36098c6ba770c md5: e51f1e4089cad105b6cac64bd8166587 @@ -10778,6 +14259,16 @@ packages: license_family: APACHE size: 72010 timestamp: 1769093650580 +- 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 + size: 91574 + timestamp: 1777103621679 - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.1-py313hbfd7664_0.conda sha256: 01a14cb74d9773674d07ab250b70a7fbd140edfb19cf3ec2ba70147bdaec13d2 md5: 1c8807728f0333228766dee685394e16 @@ -10833,6 +14324,61 @@ packages: license_family: BSD size: 14972232 timestamp: 1771408987551 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.2-py313hbfd7664_0.conda + sha256: 6aa7b7b234805c673fd63ef60432362e6cc130a3ae09b5ed2b40d74a2bd6c7bb + md5: 6a036e42f4e47720804f35d1897336a1 + depends: + - python + - numpy >=1.26.0 + - python-dateutil >=2.8.2 + - libgcc >=14 + - libstdcxx >=14 + - __glibc >=2.17,<3.0.a0 + - numpy >=1.23,<3 + - python_abi 3.13.* *_cp313 + 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 + size: 14980998 + timestamp: 1774916581833 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-3.0.1-py313h9226a20_0.conda sha256: 455faf9437f06d469b12f7460e94281b63924c6f9a802902ba88af00960e0e21 md5: feac7f5e15a122bd37e29ea9ebd73eaf @@ -10888,6 +14434,61 @@ packages: license_family: BSD size: 14766794 timestamp: 1771408988752 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-3.0.2-py313h59403f9_0.conda + sha256: ff82bbfa0ac2abf3072f66c37689394af446e5f9ab34068890e5edfcd8d2f593 + md5: c29df7b6143c67e03586c2131abc5f10 + depends: + - python + - numpy >=1.26.0 + - python-dateutil >=2.8.2 + - python 3.13.* *_cp313 + - libstdcxx >=14 + - libgcc >=14 + - numpy >=1.23,<3 + - python_abi 3.13.* *_cp313 + 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 + size: 14776471 + timestamp: 1774916688028 - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-3.0.1-py313hfd25234_0.conda sha256: c4a8f0980a036e73d7e60e6852e58c70b585de24081ad78d6899bb1a5b8bf295 md5: 7bfcfb0c9857e5884ff7c2f2bf23ec88 @@ -10942,6 +14543,60 @@ packages: license_family: BSD size: 14259868 timestamp: 1771409287844 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-3.0.2-py313hfd25234_0.conda + sha256: 596f1a17b6c8268b3ea616163f58246ea0aa5c4a403c9a6738a243b4243252f6 + md5: ff03b34fdf68e3769de61638edfa19a2 + depends: + - python + - numpy >=1.26.0 + - python-dateutil >=2.8.2 + - __osx >=11.0 + - libcxx >=19 + - numpy >=1.23,<3 + - python_abi 3.13.* *_cp313 + 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 + size: 14269929 + timestamp: 1774916801009 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-3.0.1-py313h6974306_0.conda sha256: 2407cc540bcfcc74657730f66b0741920f0a4e037027402d0544795514bc6ef6 md5: 346e7db4e1eeed5d50df059013d1849a @@ -10997,6 +14652,61 @@ packages: license_family: BSD size: 14024089 timestamp: 1771409122467 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-3.0.2-py313h1188861_0.conda + sha256: 02d3995ae9a95506d1bb5bfe6f68f5abdc13439eb85be53df5a631abc7b28246 + md5: 13410787da0135eec56a4bb8d674fc42 + depends: + - python + - numpy >=1.26.0 + - python-dateutil >=2.8.2 + - __osx >=11.0 + - python 3.13.* *_cp313 + - libcxx >=19 + - python_abi 3.13.* *_cp313 + - 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 + size: 14035088 + timestamp: 1774916850910 - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 sha256: 2bb9ba9857f4774b85900c2562f7e711d08dd48e2add9bee4e1612fbee27e16f md5: 457c2c8c08e54905d6954e79cb5b5db9 @@ -11027,15 +14737,15 @@ packages: license_family: BSD size: 20884 timestamp: 1715026639309 -- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.4-pyhd8ed1ab_0.conda - sha256: 29ea20d0faf20374fcd61c25f6d32fb8e9a2c786a7f1473a0c3ead359470fbe1 - md5: 2908273ac396d2cd210a8127f5f1c0d6 +- 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 - size: 53739 - timestamp: 1769677743677 + size: 56559 + timestamp: 1777271601895 - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda sha256: 202af1de83b585d36445dc1fda94266697341994d1a3328fabde4989e1b3d07a md5: d0d408b1f18883a944376da5cf8101ea @@ -11064,8 +14774,29 @@ packages: - libxcb >=1.17.0,<2.0a0 - lcms2 >=2.18,<3.0a0 license: HPND - size: 1043560 - timestamp: 1770794002407 + size: 1043560 + timestamp: 1770794002407 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.2.0-py313h80991f8_0.conda + sha256: 55a76548bb003ff6deac9bf209b279d428030f230632fb70f15ae153aed05158 + md5: 7245f1bbf52ed5e3818d742f51b44a7d + depends: + - python + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - libtiff >=4.7.1,<4.8.0a0 + - libjpeg-turbo >=3.1.2,<4.0a0 + - libxcb >=1.17.0,<2.0a0 + - libwebp-base >=1.6.0,<2.0a0 + - tk >=8.6.13,<8.7.0a0 + - libfreetype >=2.14.3 + - libfreetype6 >=2.14.3 + - python_abi 3.13.* *_cp313 + - zlib-ng >=2.3.3,<2.4.0a0 + - openjpeg >=2.5.4,<3.0a0 + - lcms2 >=2.18,<3.0a0 + license: HPND + size: 1052168 + timestamp: 1775060059882 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-12.1.1-py313h20c1486_0.conda sha256: 9897e98e7326307f092591bebbe69a07e616a4ad878b80b4cb7ad3bd2afc2969 md5: 2e1274f9ae78b501d4870ad9e6a22809 @@ -11087,6 +14818,27 @@ packages: license: HPND size: 1022071 timestamp: 1770794010333 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-12.2.0-py313h20c1486_0.conda + sha256: bafd1dc6fe5ac317625e4bb3f50735fe3b45205b079dc3509b621817b02e7785 + md5: a835906605f75b8726930a368455e8d2 + depends: + - python + - libgcc >=14 + - python 3.13.* *_cp313 + - libwebp-base >=1.6.0,<2.0a0 + - openjpeg >=2.5.4,<3.0a0 + - lcms2 >=2.18,<3.0a0 + - python_abi 3.13.* *_cp313 + - libfreetype >=2.14.3 + - libfreetype6 >=2.14.3 + - libjpeg-turbo >=3.1.2,<4.0a0 + - tk >=8.6.13,<8.7.0a0 + - zlib-ng >=2.3.3,<2.4.0a0 + - libxcb >=1.17.0,<2.0a0 + - libtiff >=4.7.1,<4.8.0a0 + license: HPND + size: 1032104 + timestamp: 1775060067775 - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-12.1.1-py313h16bb925_0.conda sha256: ea91061c350114c996ce1dbdabe0916e4ac69cb85fad24c6057cf2d980ce4585 md5: 48512b2603412e99b702dd177f991ffd @@ -11107,6 +14859,26 @@ packages: license: HPND size: 977327 timestamp: 1770794115029 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-12.2.0-py313h23d381d_0.conda + sha256: 60f721fb766c585c370e1a936754163652cd9f4fd33bda5202ebcf38d502abd2 + md5: 69e4cefea9c222ea64b219df6ba5787d + depends: + - python + - __osx >=11.0 + - libjpeg-turbo >=3.1.2,<4.0a0 + - zlib-ng >=2.3.3,<2.4.0a0 + - libtiff >=4.7.1,<4.8.0a0 + - libxcb >=1.17.0,<2.0a0 + - libwebp-base >=1.6.0,<2.0a0 + - tk >=8.6.13,<8.7.0a0 + - python_abi 3.13.* *_cp313 + - libfreetype >=2.14.3 + - libfreetype6 >=2.14.3 + - openjpeg >=2.5.4,<3.0a0 + - lcms2 >=2.18,<3.0a0 + license: HPND + size: 986276 + timestamp: 1775060319565 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.1.1-py313h45e5a15_0.conda sha256: a9cd5dd2c96c9f1714bdbe32341f6e8318a751e7d6dfa446267335418b6a0932 md5: a261959853e116b05a6c59e5944bf689 @@ -11128,6 +14900,27 @@ packages: license: HPND size: 966809 timestamp: 1770794152240 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.2.0-py313h45e5a15_0.conda + sha256: 90333643a7868b10724999633bb393d005bc5f539d05666f80c41fb67e5f0f3f + md5: 6186601fd72a394a6f7c7b7096f6a063 + depends: + - python + - python 3.13.* *_cp313 + - __osx >=11.0 + - openjpeg >=2.5.4,<3.0a0 + - libxcb >=1.17.0,<2.0a0 + - libjpeg-turbo >=3.1.2,<4.0a0 + - libtiff >=4.7.1,<4.8.0a0 + - libfreetype >=2.14.3 + - libfreetype6 >=2.14.3 + - libwebp-base >=1.6.0,<2.0a0 + - lcms2 >=2.18,<3.0a0 + - tk >=8.6.13,<8.7.0a0 + - python_abi 3.13.* *_cp313 + - zlib-ng >=2.3.3,<2.4.0a0 + license: HPND + size: 977319 + timestamp: 1775060469004 - conda: https://conda.anaconda.org/conda-forge/noarch/pip-26.0.1-pyh145f28c_0.conda sha256: 5f66ea31d62188c266c5a8752119b0cc90a5bf05963f665cf48a33e0ec58d39c md5: 09a970fbf75e8ed1aa633827ded6aa4f @@ -11147,6 +14940,16 @@ packages: license_family: MIT size: 25646 timestamp: 1773199142345 +- 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 + size: 25862 + timestamp: 1775741140609 - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda sha256: e14aafa63efa0528ca99ba568eaf506eb55a0371d12e6250aaaa61718d2eb62e md5: d7585b6550ad04c8c5e21097ada2888e @@ -11157,9 +14960,9 @@ packages: license_family: MIT size: 25877 timestamp: 1764896838868 -- conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.5.1-pyha770c72_0.conda - sha256: 5b81b7516d4baf43d0c185896b245fa7384b25dc5615e7baa504b7fa4e07b706 - md5: 7f3ac694319c7eaf81a0325d6405e974 +- 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 @@ -11169,8 +14972,8 @@ packages: - virtualenv >=20.10.0 license: MIT license_family: MIT - size: 200827 - timestamp: 1765937577534 + size: 201606 + timestamp: 1776858157327 - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc md5: a83f6a2fdc079e643237887a37460668 @@ -11233,6 +15036,15 @@ packages: license_family: Apache size: 56634 timestamp: 1768476602855 +- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.25.0-pyhd8ed1ab_0.conda + sha256: 4d7ec90d4f9c1f3b4a50623fefe4ebba69f651b102b373f7c0e9dbbfa43d495c + md5: a11ab1f31af799dd93c3a39881528884 + depends: + - python >=3.10 + license: Apache-2.0 + license_family: Apache + size: 57113 + timestamp: 1775771465170 - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda sha256: 4817651a276016f3838957bfdf963386438c70761e9faec7749d411635979bae md5: edb16f14d920fb3faf17f5ce582942d6 @@ -11361,6 +15173,21 @@ packages: license_family: APACHE size: 28664 timestamp: 1771307351295 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-24.0.0-py313h78bf25f_0.conda + sha256: 096c8948fc4a0436dd1e32294f57be135819909a112978833bc749d43b14dd33 + md5: c93f1ad82cb397a98d6cadb4a07572af + 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.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: APACHE + size: 26789 + timestamp: 1776927995964 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-23.0.1-py313h1258fbd_0.conda sha256: 79f985c04c4e3a562bf0adb9b10aa18cf5cc9bbc1ef3ca198769cfa1f1068375 md5: eb313ab42e3d43b1b65080a2998db2d4 @@ -11376,6 +15203,21 @@ packages: license_family: APACHE size: 28769 timestamp: 1771307381804 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-24.0.0-py313h1258fbd_0.conda + sha256: 651c7652a34740d53dff89269a36ce86aa056ea3f88659383b0f5aa568b4396d + md5: afc908ddc88973102d90b5433927d28b + 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.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: APACHE + size: 26956 + timestamp: 1776928028682 - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-23.0.1-py313habf4b1d_0.conda sha256: a53e24ff7d730dbdbd9ce4a798a9caf7c0a6485579434d7106600772d028b724 md5: da8b83fbeae3568e0459ee484d3e44c7 @@ -11391,6 +15233,21 @@ packages: license_family: APACHE size: 28614 timestamp: 1771307943088 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-24.0.0-py313habf4b1d_0.conda + sha256: fd37980663d743a15d1442f045480e6e67d703c57621acd18359da46c9dbabe0 + md5: 5819bbd5712568c8b0721bf4bde54b16 + 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.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: APACHE + size: 26760 + timestamp: 1776928572308 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-23.0.1-py313h39782a4_0.conda sha256: c4ba7bc7f5ef2387dac89ce3c3a569a80e166f8fdd2e4e5a4e8fdb0667f17e3b md5: 71741a4edcffdd272f6dc46672131545 @@ -11406,6 +15263,21 @@ packages: license_family: APACHE size: 28712 timestamp: 1771307867424 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-24.0.0-py313h39782a4_0.conda + sha256: 6ab666e0a675898c03c0510e2dc7ec5918469a8ad3e6ce16206060699fe58846 + md5: a341ffb196fb28e4ec4d35163715f359 + 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.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: APACHE + size: 26800 + timestamp: 1776928878939 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-23.0.1-py313h98bfbea_0_cpu.conda sha256: cdf599116ebc254821e65f5883e9950b42f516a5868ee1c3bbbadc482a4da72c md5: d2b771a9050c52941a61a72f2d161c64 @@ -11425,6 +15297,25 @@ packages: license_family: APACHE size: 4764506 timestamp: 1771307241382 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-24.0.0-py313h98bfbea_0_cpu.conda + sha256: feeb4ae83dffa8af4ee131279925e22e6969958f14342015f94d75cc196ef689 + md5: 4c7cc18a6d6d18557c18069af469a96c + 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.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - numpy >=1.23,<3 + - apache-arrow-proc * cpu + license: Apache-2.0 + license_family: APACHE + size: 5967733 + timestamp: 1776927971776 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-23.0.1-py313hc35d149_0_cpu.conda sha256: 00e8b2c147859fb31843e540189c2cab437780892c659c0928eb0acf814ed48a md5: 95620fee5c33dc3e8dbd46284c117534 @@ -11444,6 +15335,25 @@ packages: license_family: APACHE size: 4522202 timestamp: 1771307351603 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-24.0.0-py313hc35d149_0_cpu.conda + sha256: 7b2df126c137f6f4ef8108cd45da83f6e90eda940a2cff3246ffe54c4434de73 + md5: d06e14bb31399c45dbe03bff874f39f2 + depends: + - libarrow 24.0.0.* *cpu + - libarrow-compute 24.0.0.* *cpu + - libgcc >=14 + - libstdcxx >=14 + - libzlib >=1.3.2,<2.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - numpy >=1.23,<3 + - apache-arrow-proc * cpu + license: Apache-2.0 + license_family: APACHE + size: 4599448 + timestamp: 1776928072342 - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-23.0.1-py313h345cca6_0_cpu.conda sha256: b9f78e0002a9ff369a852ef79b52e31903ac5eae3df46cd0fc54a30dbd067d22 md5: 716f127a3cf7da213e06ee0c90a564d4 @@ -11462,6 +15372,24 @@ packages: license_family: APACHE size: 4432950 timestamp: 1771307856637 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-24.0.0-py313h345cca6_0_cpu.conda + sha256: 1ecf72f1dcf55e819155d4227597e25805aad4798ba06bfb526d4292e398cb71 + md5: cb204c3fc6b57d78fcf40da49ab74fd1 + 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.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - apache-arrow-proc * cpu + - numpy >=1.23,<3 + license: Apache-2.0 + license_family: APACHE + size: 4093738 + timestamp: 1776928541324 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-23.0.1-py313h23b330d_0_cpu.conda sha256: 878cfede0bf8df7e6c301e2608911ab881c157ce3b3b7db26d297b831852c9ff md5: 756a77ba6692d72c2fb1d12dea1ddb86 @@ -11481,6 +15409,25 @@ packages: license_family: APACHE size: 4243591 timestamp: 1771307809164 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-24.0.0-py313h23b330d_0_cpu.conda + sha256: 99645c5c6e8af3ad94292516376a84f0b001cfeb2167564d6988f9e2176e506f + md5: ded47b8ff6e483c35d4aa92ed94c159c + 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.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - numpy >=1.23,<3 + - apache-arrow-proc * cpu + license: Apache-2.0 + license_family: APACHE + size: 3950862 + timestamp: 1776928825784 - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.3-pyhcf101f3_0.conda sha256: 6fd53b7a2793404aef62313ff2fcfef0c661d6b71de90ef3d38c0908249eea76 md5: f5a488544d2eb37f46b3bebf1f378337 @@ -11576,6 +15523,20 @@ packages: license_family: MIT size: 340482 timestamp: 1764434463101 +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.13.3-pyhcf101f3_0.conda + sha256: 12909d5c2bfb31492667dd4132ac900dd47f8162bd8b1dd9e5973ce8ea28ca1a + md5: f690e6f204efd2e5c06b57518a383d98 + depends: + - typing-inspection >=0.4.2 + - typing_extensions >=4.14.1 + - python >=3.10 + - annotated-types >=0.6.0 + - pydantic-core ==2.46.3 + - python + license: MIT + license_family: MIT + size: 346352 + timestamp: 1776728341165 - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.41.5-py313h843e2db_1.conda sha256: b15568ddc03bd33ea41610e5df951be4e245cd61957cbf8c2cfd12557f3d53b5 md5: f27c39a1906771bbe56cd26a76bf0b8b @@ -11591,6 +15552,21 @@ packages: license_family: MIT size: 1940186 timestamp: 1762989000579 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.46.3-py313h843e2db_0.conda + sha256: 885d7809b6f9e011f8cd7294ab030535a65637a229fb5e49453f7be4f05c3083 + md5: 81752daa2838eec5df529e5c60044dc5 + depends: + - python + - typing-extensions >=4.6.0,!=4.7.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python_abi 3.13.* *_cp313 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + size: 1909995 + timestamp: 1776704319736 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.41.5-py313h5e7b836_1.conda sha256: df87d763c450ca0dc7a916987674fe1db153e6713cc488cedb0997ad5e807e96 md5: dd7a9ffb9145ce5651b10b846d41b8ef @@ -11606,6 +15582,21 @@ packages: license_family: MIT size: 1824747 timestamp: 1762989007285 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.46.3-py313h5e7b836_0.conda + sha256: bfe2dc4bd2b345964930d97f3346a626b62216a6cab7e4df7379dd4e2a48ac3b + md5: eedf5c3b0ada20434cb98f6a430cbc10 + depends: + - python + - typing-extensions >=4.6.0,!=4.7.0 + - python 3.13.* *_cp313 + - libgcc >=14 + - python_abi 3.13.* *_cp313 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + size: 1786834 + timestamp: 1776704334405 - conda: https://conda.anaconda.org/conda-forge/osx-64/pydantic-core-2.41.5-py313hcc225dc_1.conda sha256: 73de35081774d9b445dd807ac4d4e043846159b2de348b8e6a81f1b810210fe4 md5: e12491c39d2ea259771ce4d80a91817f @@ -11620,6 +15611,20 @@ packages: license_family: MIT size: 1947011 timestamp: 1762989008917 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pydantic-core-2.46.3-py313h23ec8f2_0.conda + sha256: 7357f1f4c9b722dbf3331f9d4793505ff5aa03e5e425f48d18074daffdc7c2b8 + md5: a5aefd2880a59680270677265aaa7cc6 + depends: + - python + - typing-extensions >=4.6.0,!=4.7.0 + - __osx >=11.0 + - python_abi 3.13.* *_cp313 + constrains: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 1894226 + timestamp: 1776704380520 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.41.5-py313h2c089d5_1.conda sha256: 08398c0599084837ba89d69db00b3d0973dc86d6519957dc6c1b480e2571451a md5: eaeed566f6d88c0a08d73700b34be4a2 @@ -11635,6 +15640,21 @@ packages: license_family: MIT size: 1778337 timestamp: 1762989007829 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.46.3-py313h212e517_0.conda + sha256: c09c7ce40f6e3496a4bb61ef5057b40c1ae834653e6ea7cdf4ddd6534b929922 + md5: 2f753ff1d3b847e16cf2692fe7df0655 + depends: + - python + - typing-extensions >=4.6.0,!=4.7.0 + - python 3.13.* *_cp313 + - __osx >=11.0 + - python_abi 3.13.* *_cp313 + constrains: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 1727305 + timestamp: 1776704499510 - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.1-pyhcf101f3_0.conda sha256: 385a900cf5d1d39dafab6088537c58a32d572fd237d7c4598def92c4c1120cb8 md5: 96513760035d70917819a2840155d23a @@ -11654,6 +15674,25 @@ packages: license_family: MIT size: 72040 timestamp: 1773664659868 +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.2-pyhcf101f3_0.conda + sha256: 0e86d31f300abe09d958d8a02c164e742b4cfe7403955a24ca02b498d50251c7 + md5: f9acfec2bcfcf6f43594674389da835e + depends: + - python >=3.10 + - pydantic >=2.5.2 + - python + constrains: + - phonenumbers >=8,<9 + - pycountry >=23 + - semver >=3.0.2,<4 + - python-ulid >=1,<4 + - pendulum >=3.0.0,<4.0.0 + - pytz >=2024.1 + - tzdata >=2024a + license: MIT + license_family: MIT + size: 73947 + timestamp: 1775429718410 - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.11.0-pyh3cfb1c2_0.conda sha256: 0580a33a0b405e222f9c0294fa5052629e3d69dfdfa93db4438c4a215a5874dc md5: c4286d133d776242af0793343f867f11 @@ -11747,25 +15786,25 @@ packages: license_family: BSD size: 21085 timestamp: 1733217331982 -- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda - sha256: 9e749fb465a8bedf0184d8b8996992a38de351f7c64e967031944978de03a520 - md5: 2b694bad8a50dc2f712f5368de866480 +- 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 - - colorama >=0.4 - exceptiongroup >=1 - python constrains: - pytest-faulthandler >=2 license: MIT license_family: MIT - size: 299581 - timestamp: 1765062031645 + size: 299984 + timestamp: 1775644472530 - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-asyncio-1.3.0-pyhcf101f3_0.conda sha256: e782cf0555e4d54102423ad3421c8122f97a7a7c2d55c677a91e32d7c3e2b059 md5: 80eccce75e6728e9e728370984bdc6fd @@ -11818,6 +15857,32 @@ packages: size: 37364553 timestamp: 1770272309861 python_site_packages_path: lib/python3.13/site-packages +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.13-h6add32d_100_cp313.conda + build_number: 100 + sha256: 7f77eb57648f545c1f58e10035d0d9d66b0a0efb7c4b58d3ed89ec7269afdde1 + md5: 05051be49267378d2fcd12931e319ac3 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.7.5,<3.0a0 + - libffi >=3.5.2,<3.6.0a0 + - libgcc >=14 + - liblzma >=5.8.2,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.52.0,<4.0a0 + - libuuid >=2.42,<3.0a0 + - libzlib >=1.3.2,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.5.6,<4.0a0 + - python_abi 3.13.* *_cp313 + - readline >=8.3,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + license: Python-2.0 + size: 37358322 + timestamp: 1775614712638 + python_site_packages_path: lib/python3.13/site-packages - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.13.12-h4c0d347_100_cp313.conda build_number: 100 sha256: a6bdf48a245d70526b4e6a277a4b344ec3f7c787b358e5377d544ac9a303c111 @@ -11843,6 +15908,31 @@ packages: size: 33986700 timestamp: 1770270924894 python_site_packages_path: lib/python3.13/site-packages +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.13.13-h11c0449_100_cp313.conda + build_number: 100 + sha256: d14e731e871d6379f8b82f3af5eb3382caa444880a9fc9d1d12033748277eb14 + md5: 81809cabd4647dee1127f2623a6a3005 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.7.5,<3.0a0 + - libffi >=3.5.2,<3.6.0a0 + - libgcc >=14 + - liblzma >=5.8.2,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.52.0,<4.0a0 + - libuuid >=2.42,<3.0a0 + - libzlib >=1.3.2,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.5.6,<4.0a0 + - python_abi 3.13.* *_cp313 + - readline >=8.3,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + license: Python-2.0 + size: 34042952 + timestamp: 1775613691 + python_site_packages_path: lib/python3.13/site-packages - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.12-h894a449_100_cp313.conda build_number: 100 sha256: 9548dcf58cf6045aa4aa1f2f3fa6110115ca616a8d5fa142a24081d2b9d91291 @@ -11866,6 +15956,29 @@ packages: size: 17570178 timestamp: 1770272361922 python_site_packages_path: lib/python3.13/site-packages +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.13-h3d5d122_100_cp313.conda + build_number: 100 + sha256: 6f71b48fe93ebc0dd42c80358b75020f6ad12ed4772fb3555da36000139c0dc7 + md5: 8948c8c7c653ad668d55bbbd6836178b + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.7.5,<3.0a0 + - libffi >=3.5.2,<3.6.0a0 + - liblzma >=5.8.2,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.52.0,<4.0a0 + - libzlib >=1.3.2,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.5.6,<4.0a0 + - python_abi 3.13.* *_cp313 + - readline >=8.3,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + license: Python-2.0 + size: 17650454 + timestamp: 1775616128232 + python_site_packages_path: lib/python3.13/site-packages - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.12-h20e6be0_100_cp313.conda build_number: 100 sha256: 9a4f16a64def0853f0a7b6a7beb40d498fd6b09bee10b90c3d6069b664156817 @@ -11873,21 +15986,44 @@ packages: depends: - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.7.3,<3.0a0 + - libexpat >=2.7.3,<3.0a0 + - libffi >=3.5.2,<3.6.0a0 + - liblzma >=5.8.2,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.51.2,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.5.5,<4.0a0 + - python_abi 3.13.* *_cp313 + - readline >=8.3,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + license: Python-2.0 + size: 12770674 + timestamp: 1770272314517 + python_site_packages_path: lib/python3.13/site-packages +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.13-h20e6be0_100_cp313.conda + build_number: 100 + sha256: d0fffc5fde21d1ae350da545dfb9e115a8c53bed8a9c5761f9efd4a5581853c1 + md5: 9991a930e81d3873eba7a299ba783ec4 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.7.5,<3.0a0 - libffi >=3.5.2,<3.6.0a0 - liblzma >=5.8.2,<6.0a0 - libmpdec >=4.0.0,<5.0a0 - - libsqlite >=3.51.2,<4.0a0 - - libzlib >=1.3.1,<2.0a0 + - libsqlite >=3.52.0,<4.0a0 + - libzlib >=1.3.2,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.5.5,<4.0a0 + - openssl >=3.5.6,<4.0a0 - python_abi 3.13.* *_cp313 - readline >=8.3,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata license: Python-2.0 - size: 12770674 - timestamp: 1770272314517 + size: 12966447 + timestamp: 1775615694085 python_site_packages_path: lib/python3.13/site-packages - conda: https://conda.anaconda.org/conda-forge/linux-64/python-blosc2-4.1.2-py313h9545597_1.conda sha256: 98943eb5ba9419deb1d6e733879ac7d0145d0687859c032c5ef83d19403b8615 @@ -11983,9 +16119,9 @@ packages: license_family: APACHE size: 233310 timestamp: 1751104122689 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.2.1-pyhcf101f3_0.conda - sha256: 5a70a9cbcf48be522c2b82df8c7a57988eed776f159142b0d30099b61f31a35e - md5: f2e88fc463b249bc1f40d9ca969d9b5e +- conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.2.2-pyhcf101f3_0.conda + sha256: 498ad019d75ba31c7891dc6d9efc8a7ed48cd5d5973f3a9377eb1b174577d3db + md5: feb2e11368da12d6ce473b6573efab41 depends: - python >=3.10 - filelock >=3.15.4 @@ -11993,8 +16129,8 @@ packages: - python license: MIT license_family: MIT - size: 34137 - timestamp: 1774605818480 + size: 34341 + timestamp: 1775586706825 - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.2-pyhcf101f3_0.conda sha256: 74e417a768f59f02a242c25e7db0aa796627b5bc8c818863b57786072aeb85e5 md5: 130584ad9f3a513cdd71b1fdc1244e9c @@ -12065,15 +16201,15 @@ packages: license_family: BSD size: 244628 timestamp: 1755304154927 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.12-h4df99d1_100.conda - sha256: f306304235197434494355351ac56020a65b7c5c56ff10ca1ed53356d575557a - md5: 3d92938d5b83c49162ade038aab58a59 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.13-h4df99d1_100.conda + sha256: b2e51d83e5ebeb7e9fde1cde822a60e8564cc9dabd786ad853056afbf708a466 + md5: fd00e4b24ea88093c93f5c9bad27b52f depends: - - cpython 3.13.12.* + - cpython 3.13.13.* - python_abi * *_cp313 license: Python-2.0 - size: 48618 - timestamp: 1770270436560 + size: 48536 + timestamp: 1775613791711 - conda: https://conda.anaconda.org/conda-forge/noarch/python-jose-3.5.0-pyhff2d567_0.conda sha256: 785a3be2b9ce6d2f2f480bf1805c737f17e84c7e6382162eb83aea7d19089b87 md5: 1b8523e5a0a5809e42c0f53a648efb28 @@ -12087,53 +16223,54 @@ packages: license_family: MIT size: 76008 timestamp: 1748530600158 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca - md5: a61bf9ec79426938ff785eb69dbb1960 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-3.2.1-pyh332efcf_0.conda + sha256: 1c55116c22512cef7b01d55ae49697707f2c1fd829407183c19817e2d300fd8d + md5: 1cd2f3e885162ee1366312bd1b1677fd depends: - - python >=3.6 + - python >=3.10 + - typing_extensions license: BSD-2-Clause license_family: BSD - size: 13383 - timestamp: 1677079727691 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.8.1-py313h54dd161_0.conda - sha256: cd17129a3d2b5d36e3b463c38acde70e586a2d22349eceb51491a66c5b087ea2 - md5: fc0f3bf6754230961feb255201bae178 + size: 18969 + timestamp: 1777318679482 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.9.0-py313h54dd161_0.conda + sha256: 3099881e50d743835cdc1267d9316ac22166bec160984ecaf50fd9827c56adf1 + md5: 8934520d44c6e239bf23e1b97051573c depends: - python - - __glibc >=2.17,<3.0.a0 - libgcc >=14 + - __glibc >=2.17,<3.0.a0 - python_abi 3.13.* *_cp313 license: MIT license_family: MIT - size: 77123 - timestamp: 1771423011743 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-librt-0.8.1-py313h62ef0ea_0.conda - sha256: d11c21ffbc94831bef5510ad19ac9408ff48701aa2d3c63e45fccfc2d925e9d5 - md5: 10745f1b7158b86366f3db1b43aea87e + size: 79973 + timestamp: 1775764028901 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-librt-0.9.0-py313h62ef0ea_0.conda + sha256: 7cd43da3d0b84483776be7d2edb723c16ae7b1ee3fb2e6747971ca2d3babd8de + md5: a587ce7ddf668d52ee2284f3a8fe4271 depends: - python - - libgcc >=14 - python 3.13.* *_cp313 + - libgcc >=14 - python_abi 3.13.* *_cp313 license: MIT license_family: MIT - size: 76652 - timestamp: 1771423032890 -- conda: https://conda.anaconda.org/conda-forge/osx-64/python-librt-0.8.1-py313h22ab4a2_0.conda - sha256: 60d6b473e31ca75655e410ce87543f40c04a97ab4337eb107e6aeb1d48da1adc - md5: 9bfe42bc3791f68de8b74e92dcdb0b53 + size: 79640 + timestamp: 1775764044501 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-librt-0.9.0-py313h22ab4a2_0.conda + sha256: 30a34d6597a0972ae33a260b424fa425017d3dd5f0a50e21d64ca080c87436f8 + md5: 7fe76a7ca9125cc96403c87f967e3223 depends: - python - __osx >=11.0 - python_abi 3.13.* *_cp313 license: MIT license_family: MIT - size: 69125 - timestamp: 1771423064777 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-librt-0.8.1-py313h6688731_0.conda - sha256: a3e6d45f6b180e907d343e2282f93599a3919ccba8dc28dc254a36a17c56fbfa - md5: d81abf0724884470b65ec20b4e610f72 + size: 70319 + timestamp: 1775764105428 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-librt-0.9.0-py313h6688731_0.conda + sha256: d8461d6405c97dbde22ee412d6e58fae33e867521614d4ea8487a2f1c662b714 + md5: 8df57ab3318ecdf85b3d61d2782e5787 depends: - python - python 3.13.* *_cp313 @@ -12141,8 +16278,8 @@ packages: - python_abi 3.13.* *_cp313 license: MIT license_family: MIT - size: 72953 - timestamp: 1771423111284 + size: 74689 + timestamp: 1775764138895 - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.22-pyhcf101f3_0.conda sha256: 8275c88b0f138dbd602c53bae9a11789126c6a2c97f7e89f679d3e7ccbb121ba md5: 5a2610edf297cbd1cbc0e2c17bc47efc @@ -12153,15 +16290,24 @@ packages: license_family: APACHE size: 30342 timestamp: 1769356329419 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.3-pyhd8ed1ab_0.conda - sha256: 467134ef39f0af2dbb57d78cb3e4821f01003488d331a8dd7119334f4f47bfbd - md5: 7ead57407430ba33f681738905278d03 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.27-pyhcf101f3_0.conda + sha256: 27a8fe0284b8d9b2d3748b13d6d7b111c663ab8b2397a0c144d4859c0bdd8557 + md5: 8093fa1c299e4bc6b015d4d01f0925dc + depends: + - python >=3.10 + - python + license: Apache-2.0 + size: 37713 + timestamp: 1777313516861 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2026.2-pyhd8ed1ab_0.conda + sha256: e943f9c15a6bdba2e1b9f423ab913b3f6b02197b0ef9f8e6b7464d78b59965b9 + md5: f6ad7450fc21e00ecc23812baed6d2e4 depends: - python >=3.10 license: Apache-2.0 license_family: APACHE - size: 143542 - timestamp: 1765719982349 + size: 146639 + timestamp: 1777068997932 - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda build_number: 8 sha256: 210bffe7b121e651419cb196a2a63687b087497595c9be9d20ebe97dd06060a7 @@ -12491,6 +16637,22 @@ packages: license: Apache-2.0 size: 63712 timestamp: 1774894783063 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.33.1-pyhcf101f3_1.conda + sha256: 7f2c24dd3bd3c104a1d2c9a10ead5ed6758b0976b74f972cfe9c19884ccc4241 + md5: 9659f587a8ceacc21864260acd02fc67 + 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 + size: 63728 + timestamp: 1777030058920 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda sha256: 2e4372f600490a6e0b3bac60717278448e323cab1c0fecd5f43f7c56535a99c5 md5: 36de09a8d3e5d5e6f4ee63af49e59706 @@ -12534,6 +16696,19 @@ packages: license_family: MIT size: 208472 timestamp: 1771572730357 +- 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 + size: 208577 + timestamp: 1775991661559 - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.19.7-pyhcf101f3_0.conda sha256: 9cf3b9a083ebdee70ef5a48fbe409d91d2a8c4eed3c581a7b33b4d5ca7c813be md5: 8b1a4d854f9a4ea1e4abc93ccab0ded9 @@ -12779,6 +16954,20 @@ packages: license_family: MIT size: 3846664 timestamp: 1772644902869 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.49-py313h54dd161_0.conda + sha256: 6617540cd304d583e0f275398d670efae44a43d1c2e6899745d82f12aa8a5ac4 + md5: f4a105e76bbb8c03c9de71987353faa3 + depends: + - python + - greenlet !=0.4.17 + - typing-extensions >=4.6.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 3847834 + timestamp: 1775241332871 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sqlalchemy-2.0.48-py313hc37f9cf_0.conda sha256: cefd626f9d9cfadef4ed9f48d63519df16899617e76ec9c08dbfde3e0b1d679b md5: eb5d1444f3deb8787413c70a5872c411 @@ -12792,6 +16981,19 @@ packages: license_family: MIT size: 3849664 timestamp: 1772645119064 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sqlalchemy-2.0.49-py313hc37f9cf_0.conda + sha256: 60a69c7cf1136db33703ce53f810c93c3eca85d117dbe121fa09478355c02007 + md5: 74369ed16f351dbb59d0545917cd94fa + depends: + - python + - greenlet !=0.4.17 + - typing-extensions >=4.6.0 + - libgcc >=14 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 3852605 + timestamp: 1775241597035 - conda: https://conda.anaconda.org/conda-forge/osx-64/sqlalchemy-2.0.48-py313h22ab4a2_0.conda sha256: 451ff654daddf5743c78e30270c5c2e8ea668503c17138827dd5fbb2fff372a7 md5: 13494380f3ac4725041c182dc9821ae3 @@ -12805,6 +17007,19 @@ packages: license_family: MIT size: 3837102 timestamp: 1772644920192 +- conda: https://conda.anaconda.org/conda-forge/osx-64/sqlalchemy-2.0.49-py313h22ab4a2_0.conda + sha256: 67ba46d8cd36ef777fb9937cbabecb020c57a062eb96ff24d014422ed7af495b + md5: 221276c9b5de50a922e8f09d0c9d6b28 + depends: + - python + - greenlet !=0.4.17 + - typing-extensions >=4.6.0 + - __osx >=11.0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 3841647 + timestamp: 1775241415718 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlalchemy-2.0.48-py313h6688731_0.conda sha256: 9f5f536db291974430b2a498ab522ba1a77ffdab220d0c3532a0d3355db2d578 md5: d96ecd4ad18488b26b4c599df74772d9 @@ -12819,6 +17034,20 @@ packages: license_family: MIT size: 3841074 timestamp: 1772644992763 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlalchemy-2.0.49-py313h6688731_0.conda + sha256: c74db80d5e24f14c9621edf0d7528631ef117748423f053245c170a60e2b38c2 + md5: 56fc7ce3494a1077459d51359f5148e7 + depends: + - python + - greenlet !=0.4.17 + - typing-extensions >=4.6.0 + - python 3.13.* *_cp313 + - __osx >=11.0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 3842925 + timestamp: 1775241461140 - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda sha256: 570da295d421661af487f1595045760526964f41471021056e993e73089e9c41 md5: b1b505328da7a6b246787df4b5a49fbc @@ -12842,6 +17071,17 @@ packages: license_family: MIT size: 21853 timestamp: 1765576612116 +- conda: https://conda.anaconda.org/conda-forge/noarch/stamina-26.1.0-pyhcf101f3_1.conda + sha256: e85ebb8bc145d925f00d92fda9b9578b7a3fec17a80fdddf416c3ac75f8ac55d + md5: c06c071acce8103b854d9434a249bd80 + depends: + - python >=3.10 + - tenacity + - python + license: MIT + license_family: MIT + size: 24175 + timestamp: 1776172479398 - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-1.0.0-pyhcf101f3_0.conda sha256: 1a1dc376e95491f4b2003f4428e6f7caf4a3de0ef9869248b29dcc9704c34b39 md5: 8fbd5b6879350f1b5303c1a652d4b781 @@ -12941,6 +17181,19 @@ packages: license_family: BSD size: 193137 timestamp: 1772701074188 +- conda: https://conda.anaconda.org/conda-forge/noarch/tifffile-2026.4.11-pyhd8ed1ab_0.conda + sha256: c40fc550bea852303f0f5a8ef71273163361bfe599ab9906a5c6d4406aa20d16 + md5: e0ed123314d08b63cd1ee95331c67ae3 + depends: + - imagecodecs >=2026.3.6 + - numpy >=2.0 + - python >=3.12 + constrains: + - matplotlib-base >=3.3 + license: BSD-3-Clause + license_family: BSD + size: 195446 + timestamp: 1775989449649 - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-0.2.8-pyhd8ed1ab_0.conda sha256: 2c7e6996302b5dd9b5cea13e770727760da33527f4d6318a312cf0671f410189 md5: 0a109935ab2a49df2284fbda63f95068 @@ -12953,6 +17206,18 @@ packages: license_family: BSD size: 9162 timestamp: 1772227286947 +- conda: https://conda.anaconda.org/conda-forge/noarch/tiled-0.2.9-pyhd8ed1ab_0.conda + sha256: a5cb51c00eff1a18a69a5e56cb32518d71e839df304a15ec9a5b0109bc4f3408 + md5: 331959c78eba929208085612b5e7b2d5 + depends: + - python >=3.10 + - tiled-client 0.2.9 pyhd8ed1ab_0 + - tiled-formats 0.2.9 pyhd8ed1ab_0 + - tiled-server 0.2.9 pyhd8ed1ab_0 + license: BSD-3-Clause + license_family: BSD + size: 9192 + timestamp: 1775170018362 - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-base-0.2.8-pyhd8ed1ab_0.conda sha256: 07420a32273ae0adba7f17a6f75e670185ff94e1db6b75f3604e7b9e7027a8f4 md5: fdcdeb367ac469972ab11a59ea079a6c @@ -12984,6 +17249,37 @@ packages: license_family: BSD size: 1420340 timestamp: 1772227233161 +- conda: https://conda.anaconda.org/conda-forge/noarch/tiled-base-0.2.9-pyhd8ed1ab_0.conda + sha256: 12a7fd501020a05b671371cfb98f4760f3a224c0065d63a8f7dca0144245b282 + md5: 9dfd7f88ffe521ae0096600d2a3dea1c + depends: + - appdirs + - awkward + - click !=8.1.0 + - dask + - httpx >=0.20.0 + - json-merge-patch + - jsonpatch + - jsonschema + - lz4 + - msgpack-python >=1.0.0 + - ndindex + - numpy + - orjson + - pandas + - pyarrow + - pydantic-settings >=2,<2.12.0 + - python >=3.10 + - python-blosc2 + - pyyaml + - sparse >=0.13.0 + - typer + - xarray + - zstandard + license: BSD-3-Clause + license_family: BSD + size: 1427771 + timestamp: 1775169967347 - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-client-0.2.8-pyhd8ed1ab_0.conda sha256: 788c8c41201796c32eadda15533c5128bc11e1c80cad430d85d7cf3a62095bf0 md5: 844349e9ed4dd15ef5e99899b96ff27d @@ -13000,6 +17296,22 @@ packages: license_family: BSD size: 8658 timestamp: 1772227247543 +- conda: https://conda.anaconda.org/conda-forge/noarch/tiled-client-0.2.9-pyhd8ed1ab_0.conda + sha256: 790c714efd9245062ab2586ac13717e3838222192eb4797c093496421ebf931d + md5: 85a7e7493a5a195987365c574ef0829f + depends: + - entrypoints + - platformdirs + - pydantic + - python >=3.10 + - rich + - stamina + - tiled-base 0.2.9 pyhd8ed1ab_0 + - websockets + license: BSD-3-Clause + license_family: BSD + size: 8733 + timestamp: 1775169981099 - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-formats-0.2.8-pyhd8ed1ab_0.conda sha256: ff569d1fd67e967327f6d4bb1fa20cdfdcac97767abe728ab719f06a4e87b1d8 md5: 7d73265af3c74d0332d7040992833b26 @@ -13016,6 +17328,22 @@ packages: license_family: BSD size: 8516 timestamp: 1772227260510 +- conda: https://conda.anaconda.org/conda-forge/noarch/tiled-formats-0.2.9-pyhd8ed1ab_0.conda + sha256: 70a1a5d995e05d5c7f1047aaf3b999f3957af046beb01fbbbdab2d8c8e1b13fc + md5: 9800029a0667076be353c523ec0d01e9 + depends: + - h5netcdf + - h5py + - hdf5plugin + - openpyxl + - pillow + - python >=3.10 + - tifffile + - tiled-base 0.2.9 pyhd8ed1ab_0 + license: BSD-3-Clause + license_family: BSD + size: 8603 + timestamp: 1775169993501 - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-server-0.2.8-pyhd8ed1ab_0.conda sha256: d8788265124e7dffeb6dad4d36994d80dcd4938b281d6758479965872e03bfcb md5: c25fd3e4cc54e28cbcbd3f042f3960e0 @@ -13058,6 +17386,48 @@ packages: license_family: BSD size: 9007 timestamp: 1772227273685 +- conda: https://conda.anaconda.org/conda-forge/noarch/tiled-server-0.2.9-pyhd8ed1ab_0.conda + sha256: e7b4a17c4712823a0516a41be167924798a67e2dac8feb0b4bd6ee8bc923d3a3 + md5: cbd22ea4e68b94353521810bb256fca6 + depends: + - adbc-driver-manager + - adbc-driver-postgresql + - adbc-driver-sqlite + - aiofiles + - aiosqlite + - alembic + - anyio + - asgi-correlation-id + - asyncpg + - cachetools + - canonicaljson + - fastapi >=0.122.0 + - jinja2 + - jmespath + - minio + - obstore + - openpyxl + - packaging + - prometheus_client + - pydantic >=2,<3 + - python >=3.10 + - python-dateutil + - python-duckdb <1.4.0 + - python-jose + - python-multipart + - redis-py + - sqlalchemy + - stamina + - starlette >=0.48.0 + - tiled-base 0.2.9 pyhd8ed1ab_0 + - toolz + - uvicorn + - watchfiles + - zarr + license: BSD-3-Clause + license_family: BSD + size: 9071 + timestamp: 1775170005906 - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda sha256: cad582d6f978276522f84bd209a5ddac824742fe2d452af6acf900f8650a73a2 md5: f1acf5fdefa8300de697982bcb1761c9 @@ -13201,6 +17571,20 @@ packages: license_family: MIT size: 117860 timestamp: 1771292312899 +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.25.0-pyhcf101f3_0.conda + sha256: 0b887c1a6c6b840563fbaf2c78331e3b1019be68e1939abb517b19b051576d62 + md5: 696c3e5b10d43030058b6e8b65a6a4a8 + depends: + - annotated-doc >=0.0.2 + - click >=8.2.1 + - python >=3.10 + - rich >=13.8.0 + - shellingham >=1.3.0 + - python + license: MIT + license_family: MIT + size: 116471 + timestamp: 1777217768744 - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda sha256: 7c2df5721c742c2a47b2c8f960e718c930031663ac1174da67c1ed5999f7938c md5: edd329d7d3a4ab45dcf905899a7a6115 @@ -13210,6 +17594,17 @@ packages: license_family: PSF size: 91383 timestamp: 1756220668932 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhcf101f3_2.conda + sha256: 8b90d2f19f9458b8c58a55e1fcdc1d90c1603a847a47654d8a454549413ba60a + md5: 53f5409c5cfd6c5a66417d68e3f0a864 + depends: + - python >=3.10 + - typing_extensions >=4.12.0 + - python + license: MIT + license_family: MIT + size: 20935 + timestamp: 1777105465795 - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda sha256: 70db27de58a97aeb7ba7448366c9853f91b21137492e0b4430251a1870aa8ff4 md5: a0a4a3035667fc34f29bfbd5c190baa6 @@ -13245,6 +17640,17 @@ packages: license: LicenseRef-Public-Domain size: 119135 timestamp: 1767016325805 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzlocal-5.3.1-pyh8f84b5b_0.conda + sha256: 6447388bd870ab0a2b38af5aa64185cd71028a2a702f0935e636a01d81fba7fc + md5: 369f3170d6f727d3102d83274e403b66 + depends: + - python >=3.10 + - __unix + - python + license: MIT + license_family: MIT + size: 23880 + timestamp: 1756227235167 - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.1.0-py313h7037e92_0.conda sha256: 7f2e4f38e57c17858c644259a1be868d6e98780239fd93bfa057cb5cfc24a928 md5: cb423e0853b3dde2b3738db4dedf5ba2 @@ -13336,6 +17742,20 @@ packages: license_family: BSD size: 54908 timestamp: 1773659868807 +- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.46.0-pyhc90fa1f_0.conda + sha256: ba0060f57192ccef46ad722537a50a2b23d4e9c6793e714177ae1b3f73673dcb + md5: 12fa73aae56b7ce068db549fd542fb32 + depends: + - __unix + - click >=7.0 + - h11 >=0.8 + - python >=3.10 + - typing_extensions >=4.0 + - python + license: BSD-3-Clause + license_family: BSD + size: 56216 + timestamp: 1776948607940 - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.42.0-h76e4700_0.conda sha256: 98f2619d66c477745272b8ec10dd4737055848372a007af3228bb9fb1547e894 md5: 6eb0881849490cee741779c698f68d45 @@ -13352,6 +17772,22 @@ packages: license_family: BSD size: 4141 timestamp: 1773659868807 +- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.46.0-hf538af8_0.conda + sha256: 25149fefa962763e66523365b4de7794499b8caec59268844ed614f8cea82609 + md5: 5a5d65823d2337e10355b298c4ed9fa7 + depends: + - __unix + - uvicorn ==0.46.0 pyhc90fa1f_0 + - websockets >=10.4 + - httptools >=0.6.3 + - watchfiles >=0.20 + - python-dotenv >=0.13 + - pyyaml >=5.1 + - uvloop >=0.15.1 + license: BSD-3-Clause + license_family: BSD + size: 4143 + timestamp: 1776948607940 - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.22.1-py313h07c4f96_1.conda sha256: 77a220ecf6c1467f94d6adda5fb1296f558f3f3044842dc0a52881eab5908dc0 md5: 266caaa8701a13482ea924a77897b1e4 @@ -13399,9 +17835,9 @@ packages: license: MIT OR Apache-2.0 size: 487912 timestamp: 1762473054199 -- conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.2.0-pyhcf101f3_0.conda - sha256: b83246d145ba0e6814d2ed0b616293e56924e6c7d6649101f5a4f97f9e757ed1 - md5: 704c22301912f7e37d0a92b2e7d5942d +- conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.3.0-pyhcf101f3_0.conda + sha256: defaf2bc2a3cf6f1455149531e8be4d03e18eb1d022ffe4f4d964d49bbf0fe34 + md5: da6e70a64226740cef159121dbe40b95 depends: - python >=3.10 - distlib >=0.3.7,<1 @@ -13412,9 +17848,8 @@ packages: - typing_extensions >=4.13.2 - python license: MIT - license_family: MIT - size: 4647775 - timestamp: 1773133660203 + size: 5161814 + timestamp: 1777321763628 - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.1.1-py313h5c7d99a_0.conda sha256: 11a07764137af9bcf29e9e26671c1be1ea1302f7dd7075a4d41481489883eaff md5: 9373034735566df29779429f0c0de511 @@ -13640,6 +18075,42 @@ packages: license_family: APACHE size: 1011911 timestamp: 1771083999178 +- 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 + size: 1017999 + timestamp: 1776122774298 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda sha256: 6bc6ab7a90a5d8ac94c7e300cc10beb0500eeba4b99822768ca2f2ef356f731b md5: b2895afaf55bf96a8c8282a2e47a5de0 @@ -13779,6 +18250,25 @@ packages: license_family: MIT size: 305998 timestamp: 1763742695201 +- conda: https://conda.anaconda.org/conda-forge/noarch/zarr-3.1.6-pyhc364b38_0.conda + sha256: 5b75534de2d56706bb9905cf7230e60fe4d89dcaf19095822b084c84a64a8de1 + md5: bf5ed37ec39d366c0bc7633e1590fbdf + depends: + - python >=3.11 + - packaging >=22.0 + - numpy >=2.0 + - numcodecs >=0.14 + - typing_extensions >=4.12 + - donfig >=0.8 + - google-crc32c >=1.5 + - python + constrains: + - fsspec >=2023.10.0 + - obstore >=0.5.1 + license: MIT + license_family: MIT + size: 320675 + timestamp: 1775744500266 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h41580af_10.conda sha256: 325d370b28e2b9cc1f765c5b4cdb394c91a5d958fbd15da1a14607a28fee09f6 md5: 755b096086851e1193f3b10347415d7c @@ -13892,6 +18382,16 @@ packages: license_family: MIT size: 24194 timestamp: 1764460141901 +- 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 + size: 24461 + timestamp: 1776131454755 - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.2-h25fd6f3_2.conda sha256: 245c9ee8d688e23661b95e3c6dd7272ca936fabc03d423cdb3cdee1bbcf9f2f2 md5: c2a01a08fc991620a74b32420e97868a diff --git a/pixi.toml b/pixi.toml index f9c594c..11165ee 100644 --- a/pixi.toml +++ b/pixi.toml @@ -4,36 +4,40 @@ name = "als_tiled" channels = ["conda-forge"] platforms = ["linux-64", "osx-64", "osx-arm64", "linux-aarch64"] -[environments.default] -features = ["bl733"] +[environments] +default = { features = ["bl733"] } +dev = { features = ["bl733", "dev"] } [dependencies] python = "3.13.*" pip = "*" -pytest = "*" -pytest-cov = "*" -pytest-asyncio = "*" -mypy = "*" -ipython = "*" -notebook = "*" tiled = "*" httpx = "*" typer = "*" pyyaml = "*" -fabio = "*" +apscheduler = "*" zarr = "*" numpy = "*" pandas = "*" + +[feature.dev.dependencies] +mypy = "*" +ipython = "*" +notebook = "*" black = "*" isort = "*" flake8 = "*" pre-commit = "*" +pytest = ">=9.0.3,<10" +pytest-cov = "*" +pytest-asyncio = "*" [feature.bl733.dependencies] fabio = "*" [tasks] test = "pytest --cov=splash_tiled --cov-report=term-missing" +test_user_office = "pytest -m user_office" lint = "flake8 src tests && black --check src tests && isort --check-only src tests && mypy src" format = "black src tests && isort src tests" als-hub = "als-hub --db-path ./esafs.sqlite3" diff --git a/pyproject.toml b/pyproject.toml index ef7bbd4..c2030b7 100755 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,6 +25,7 @@ dependencies = [ "httpx>=0.27", "PyYAML>=6", "typer>=0.12", + "APScheduler>=3.10", "tiled[client]>=0.2.8", ] diff --git a/pytest.ini b/pytest.ini index fcccae1..ddbd9b0 100644 --- a/pytest.ini +++ b/pytest.ini @@ -1,2 +1,4 @@ [pytest] pythonpath = src +markers = + user_office: marks tests that require live access to the User Office API (deselect with '-m "not user_office"') diff --git a/scripts/seed_dev_catalog.py b/scripts/seed_dev_catalog.py new file mode 100644 index 0000000..af54da6 --- /dev/null +++ b/scripts/seed_dev_catalog.py @@ -0,0 +1,284 @@ +from __future__ import annotations + +import argparse +import os +import sqlite3 +import time +from dataclasses import dataclass + +import httpx +import numpy as np +from tiled.client import from_context +from tiled.client.context import Context, password_grant + + +@dataclass(frozen=True) +class EsafSeed: + beamline: str + esaf_id: str + + +SEED_PLAN = [ + EsafSeed(beamline="12.3.2", esaf_id="SB-01482-001"), + EsafSeed(beamline="9.3.2", esaf_id="SB-00001-001"), + EsafSeed(beamline="7.0.2", esaf_id="SB-00002-001"), +] + + +def wait_for_server(uri: str, timeout_seconds: int) -> None: + deadline = time.time() + timeout_seconds + while time.time() < deadline: + try: + response = httpx.get(uri, timeout=5.0) + if response.status_code < 500: + return + except Exception: + time.sleep(2) + raise TimeoutError(f"Timed out waiting for tiled server at {uri}") + + +def ensure_container(parent, key: str, metadata: dict) -> object: + if key in parent: + return parent[key] + + if hasattr(parent, "create_container"): + parent.create_container(key=key, metadata=metadata) + return parent[key] + + if hasattr(parent, "new"): + parent.new( + key=key, + structure_family="container", + metadata=metadata, + ) + return parent[key] + + raise RuntimeError( + f"Cannot create container '{key}'; no supported API on {type(parent)!r}" + ) + + +def write_array( + parent, key: str, data: np.ndarray, access_blob: dict, metadata: dict +) -> None: + if key in parent: + return + + access_tags = access_blob.get("tags") if isinstance(access_blob, dict) else None + + if hasattr(parent, "write_array"): + try: + parent.write_array( + data, + key=key, + metadata=metadata, + access_tags=access_tags, + ) + return + except TypeError: + # Older clients may use access_blob instead of access_tags. + try: + parent.write_array( + data, + key=key, + metadata=metadata, + access_blob=access_blob, + ) + return + except TypeError: + pass + + if hasattr(parent, "new"): + try: + parent.new( + key=key, + structure_family="array", + data=data, + metadata=metadata, + access_blob=access_blob, + ) + return + except TypeError: + pass + + raise RuntimeError( + f"Cannot write array '{key}'; no supported API on {type(parent)!r}" + ) + + +def load_defined_tags(compiled_tags_db: str) -> set[str]: + try: + with sqlite3.connect(compiled_tags_db) as conn: + rows = conn.execute("SELECT name FROM tags").fetchall() + return {row[0] for row in rows} + except Exception as exc: + print(f"Warning: could not load tags from {compiled_tags_db}: {exc}") + return set() + + +def maybe_write_array( + parent, + *, + key: str, + data: np.ndarray, + metadata: dict, + tags: list[str], + defined_tags: set[str], +) -> None: + missing = [tag for tag in tags if defined_tags and tag not in defined_tags] + if missing: + print(f"Skipping {key}: undefined access tags {missing}") + return + write_array( + parent, + key=key, + data=data, + metadata=metadata, + access_blob={"tags": tags}, + ) + + +def authenticated_client(uri: str, username: str, password: str): + # Avoid accidental API-key auth from ambient environment. + os.environ.pop("TILED_API_KEY", None) + os.environ.setdefault("TILED_CACHE_DIR", "/tmp/tiled-cache") + context, node_path_parts = Context.from_any_uri(uri) + providers = context.server_info.authentication.providers + internal_provider = next( + ( + p + for p in providers + if p.provider == "example" and p.mode in {"internal", "password"} + ), + None, + ) + if internal_provider is None: + internal_provider = next( + (p for p in providers if p.mode in {"internal", "password"}), + None, + ) + if internal_provider is None: + raise RuntimeError( + "No internal/password auth provider available for seeded login" + ) + + tokens = password_grant( + context.http_client, + internal_provider.links["auth_endpoint"], + internal_provider.provider, + username, + password, + ) + context.configure_auth(tokens, remember_me=False) + # Skip interactive auth path in from_context; we already configured tokens. + context.has_external_auth = True + return from_context(context, node_path_parts=node_path_parts, remember_me=False) + + +def seed(uri: str, username: str, password: str, compiled_tags_db: str) -> None: + client = authenticated_client(uri, username=username, password=password) + defined_tags = load_defined_tags(compiled_tags_db) + beamlines = ensure_container( + client, + "beamlines", + metadata={"description": "Top-level beamline container for dev testing"}, + ) + + for plan in SEED_PLAN: + beamline_container = ensure_container( + beamlines, + plan.beamline, + metadata={"beamline": plan.beamline}, + ) + esaf_container = ensure_container( + beamline_container, + plan.esaf_id, + metadata={"beamline": plan.beamline, "esaf_id": plan.esaf_id}, + ) + + data = np.arange(64, dtype="float32").reshape(8, 8) + + maybe_write_array( + esaf_container, + key="public_overview", + data=data, + metadata={"access_case": "public"}, + tags=["public"], + defined_tags=defined_tags, + ) + maybe_write_array( + esaf_container, + key="beamline_staff_only", + data=data + 100.0, + metadata={"access_case": "beamline_staff"}, + tags=[f"{plan.beamline}-staff"], + defined_tags=defined_tags, + ) + maybe_write_array( + esaf_container, + key="esaf_only", + data=data + 200.0, + metadata={"access_case": "esaf_group"}, + tags=[plan.esaf_id], + defined_tags=defined_tags, + ) + maybe_write_array( + esaf_container, + key="esaf_and_beamline_staff", + data=data + 300.0, + metadata={"access_case": "combined"}, + tags=[plan.esaf_id, f"{plan.beamline}-staff"], + defined_tags=defined_tags, + ) + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser( + description="Seed a tiled server with beamline/esaf containers and test arrays." + ) + parser.add_argument( + "--uri", + default="http://tiled:8000", + help="Tiled server URI.", + ) + parser.add_argument( + "--wait-seconds", + type=int, + default=90, + help="How long to wait for tiled server before failing.", + ) + parser.add_argument( + "--username", + default="alice", + help="Username to authenticate as when seeding data.", + ) + parser.add_argument( + "--password-env", + default="ALICE_PASSWORD", + help="Name of env var that stores the password.", + ) + parser.add_argument( + "--compiled-tags-db", + default=os.getenv("COMPILED_TAGS_DB", "/app/tags/compiled_tags.sqlite"), + help="Path to compiled tags sqlite DB used to validate access tags.", + ) + return parser.parse_args() + + +def main() -> None: + args = parse_args() + password = os.getenv(args.password_env) + if not password: + raise RuntimeError(f"Missing required password env var: {args.password_env}") + wait_for_server(args.uri, args.wait_seconds) + seed( + args.uri, + username=args.username, + password=password, + compiled_tags_db=args.compiled_tags_db, + ) + print("Seeded dev catalog with beamline/esaf access-tagged arrays.") + + +if __name__ == "__main__": + main() diff --git a/scripts/sync_loop.sh b/scripts/sync_loop.sh new file mode 100644 index 0000000..116ca6a --- /dev/null +++ b/scripts/sync_loop.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -euo pipefail + +exec python /app/scripts/sync_scheduler.py diff --git a/scripts/sync_scheduler.py b/scripts/sync_scheduler.py new file mode 100644 index 0000000..7f1a1f7 --- /dev/null +++ b/scripts/sync_scheduler.py @@ -0,0 +1,217 @@ +from __future__ import annotations + +import os +import subprocess +from datetime import UTC, datetime +from pathlib import Path + +import typer +from apscheduler.schedulers.blocking import BlockingScheduler +from apscheduler.triggers.cron import CronTrigger + +app = typer.Typer(add_completion=False) + + +def utc_now() -> str: + return datetime.now(tz=UTC).isoformat() + + +def get_env(name: str, default: str) -> str: + return os.environ.get(name, default).strip() + + +def resolve_path_option( + option_value: Path | None, + env_name: str, + default: str, +) -> Path: + if option_value is not None: + return option_value + return Path(get_env(env_name, default)) + + +def resolve_cron_expression(cron: str | None) -> str: + if cron is None: + raise typer.BadParameter("A cron expression is required.") + return cron + + +def parse_beamline_args(beamlines: str) -> list[str]: + if beamlines == "all": + return ["--all"] + + selected = [value.strip() for value in beamlines.split(",")] + selected = [value for value in selected if value] + if not selected: + raise ValueError("No valid BEAMLINES configured. Use a CSV list or 'all'.") + + args: list[str] = [] + for beamline in selected: + args.extend(["--beamline", beamline]) + return args + + +def sync_once( + esaf_db_path: Path, + tags_template: Path, + generated_tags_yaml: Path, + compiled_tags_db: Path, + api_url: str, + beamlines: str, +) -> None: + + esaf_db_path.parent.mkdir(parents=True, exist_ok=True) + generated_tags_yaml.parent.mkdir(parents=True, exist_ok=True) + compiled_tags_db.parent.mkdir(parents=True, exist_ok=True) + + beamline_args = parse_beamline_args(beamlines) + + typer.echo(f"[{utc_now()}] Running scheduled ESAF sync") + subprocess.run( + [ + "python", + "-m", + "splash_tiled.access_control.user_office", + *beamline_args, + "--db-path", + str(esaf_db_path), + "--api-url", + api_url, + ], + check=True, + ) + + subprocess.run( + [ + "python", + "-m", + "splash_tiled.access_control.tiled_tags", + "compile", + "--esaf-sqlite-path", + str(esaf_db_path), + "--output-sqlite-path", + str(compiled_tags_db), + "--tag-definitions-path", + str(tags_template), + "--generated-yaml-path", + str(generated_tags_yaml), + ], + check=True, + ) + + +@app.command() +def main( + cron: str = typer.Argument( + ..., + metavar="CRON", + envvar="SYNC_CRON", + help=( + "Cron expression in crontab format: 'minute hour day month " + "day_of_week'. Required as CRON or via SYNC_CRON." + ), + ), + esaf_db_path: Path | None = typer.Option( + None, + "--esaf-db-path", + help=( + "Path to ESAF SQLite DB. If omitted, uses ESAF_DB_PATH " + "(default: /app/tags/esafs.sqlite3)." + ), + ), + tags_template: Path | None = typer.Option( + None, + "--tags-template", + help=( + "Path to tag template YAML. If omitted, uses TAGS_TEMPLATE " + "(default: /app/src/splash_tiled/access_control/" + "tag_definitions.yml)." + ), + ), + generated_tags_yaml: Path | None = typer.Option( + None, + "--generated-tags-yaml", + help=( + "Path to generated tags YAML. If omitted, uses " + "GENERATED_TAGS_YAML (default: /app/tags/" + "tag_definitions.generated.yml)." + ), + ), + compiled_tags_db: Path | None = typer.Option( + None, + "--compiled-tags-db", + help=( + "Path to compiled tags SQLite DB. If omitted, uses " + "COMPILED_TAGS_DB (default: /app/tags/compiled_tags.sqlite)." + ), + ), +) -> None: + cron_expr = resolve_cron_expression(cron) + resolved_esaf_db_path = resolve_path_option( + esaf_db_path, + env_name="ESAF_DB_PATH", + default="/app/tags/esafs.sqlite3", + ) + resolved_tags_template = resolve_path_option( + tags_template, + env_name="TAGS_TEMPLATE", + default="/app/src/splash_tiled/access_control/tag_definitions_stub.yaml", + ) + resolved_generated_tags_yaml = resolve_path_option( + generated_tags_yaml, + env_name="GENERATED_TAGS_YAML", + default="/app/tags/tag_definitions.generated.yml", + ) + resolved_compiled_tags_db = resolve_path_option( + compiled_tags_db, + env_name="COMPILED_TAGS_DB", + default="/app/tags/compiled_tags.sqlite", + ) + api_url = get_env( + "API_URL", + "https://als-esaf.als.lbl.gov/EsafInformation/GetEsaf", + ) + beamlines = get_env("BEAMLINES", "12.3.2,9.3.2,7.0.2") + + scheduler = BlockingScheduler(timezone="UTC") + + # Prime the tags DB on service startup. + sync_once( + esaf_db_path=resolved_esaf_db_path, + tags_template=resolved_tags_template, + generated_tags_yaml=resolved_generated_tags_yaml, + compiled_tags_db=resolved_compiled_tags_db, + api_url=api_url, + beamlines=beamlines, + ) + + try: + trigger = CronTrigger.from_crontab(cron_expr, timezone="UTC") + except ValueError as exc: + raise typer.BadParameter( + f"Invalid --cron/SYNC_CRON expression: {cron_expr!r}" + ) from exc + + scheduler.add_job( + sync_once, + trigger=trigger, + id="esaf-sync", + max_instances=1, + coalesce=True, + misfire_grace_time=300, + kwargs={ + "esaf_db_path": resolved_esaf_db_path, + "tags_template": resolved_tags_template, + "generated_tags_yaml": resolved_generated_tags_yaml, + "compiled_tags_db": resolved_compiled_tags_db, + "api_url": api_url, + "beamlines": beamlines, + }, + ) + typer.echo(f"[{utc_now()}] APScheduler started with cron: {cron_expr} (UTC)") + + scheduler.start() + + +if __name__ == "__main__": + app() diff --git a/scripts/tiled_start.sh b/scripts/tiled_start.sh new file mode 100644 index 0000000..5b4f51f --- /dev/null +++ b/scripts/tiled_start.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -euo pipefail + +exec tiled serve config "$@" diff --git a/src/splash_tiled/access_control/tag_definitions.yml b/src/splash_tiled/access_control/tag_definitions_stub.yaml similarity index 61% rename from src/splash_tiled/access_control/tag_definitions.yml rename to src/splash_tiled/access_control/tag_definitions_stub.yaml index 64d62cf..7c6b67e 100644 --- a/src/splash_tiled/access_control/tag_definitions.yml +++ b/src/splash_tiled/access_control/tag_definitions_stub.yaml @@ -6,19 +6,9 @@ roles: "write:data", "write:metadata", "delete:node", "delete:revision", "create:node", "register"] -tags: - SB-01482-001: - groups: - - name: SB-01482-001 - role: facility_user - auto_tags: - - name: data_admin +tags: data_admin: users: - - name: cara + - name: 0000-0002-1539-0297 #dylan role: facility_admin -tag_owners: - data_admin: - users: - - name: cara diff --git a/src/splash_tiled/access_control/tiled_tags.py b/src/splash_tiled/access_control/tiled_tags.py index 408383c..a69f7a8 100644 --- a/src/splash_tiled/access_control/tiled_tags.py +++ b/src/splash_tiled/access_control/tiled_tags.py @@ -26,7 +26,7 @@ def get_default_output_sqlite_path() -> Path: def get_default_tag_definitions_path() -> Path: - return Path(__file__).resolve().parent / "tag_definitions.yml" + return Path(__file__).resolve().parent / "tag_definitions_stub.yaml" def get_default_generated_tag_definitions_path() -> Path: @@ -64,6 +64,7 @@ def build_generated_tag_definitions( template = load_tag_definitions_template(tag_definitions_path) with sqlite3.connect(esaf_db_path) as connection: esaf_ids_by_beamline = get_esaf_friendly_ids_by_beamline(connection) + beamline_staff_groups = get_beamline_staff_group_map(connection) esaf_friendly_id_set = { esaf_friendly_id @@ -86,6 +87,24 @@ def build_generated_tag_definitions( for beamline_name, esaf_friendly_ids in esaf_ids_by_beamline.items(): beamline_staff_group_name = f"{beamline_name}-staff" + + # Emit an explicit staff tag for each beamline so access checks can + # validate the tag even when no ESAF-specific tags are involved. + generated_tags.setdefault( + beamline_staff_group_name, + { + "groups": [ + { + "name": beamline_staff_group_name, + "role": "facility_user", + } + ] + }, + ) + + if beamline_name not in beamline_staff_groups: + beamline_staff_groups[beamline_name] = [] + for esaf_friendly_id in esaf_friendly_ids: generated_tags[esaf_friendly_id] = { "groups": [ @@ -98,7 +117,10 @@ def build_generated_tag_definitions( "role": "facility_user", }, ], - "auto_tags": [{"name": "data_admin"}], + "auto_tags": [ + {"name": "data_admin"}, + {"name": beamline_staff_group_name}, + ], } return { diff --git a/src/splash_tiled/access_control/user_office.py b/src/splash_tiled/access_control/user_office.py index 603a8d1..22d9922 100644 --- a/src/splash_tiled/access_control/user_office.py +++ b/src/splash_tiled/access_control/user_office.py @@ -294,6 +294,9 @@ def fetch_beamline_staff( response = client.get(api_url, params={"bl": "all"}) response.raise_for_status() payload = response.json() + # API returns {"Beamlines": [...]} wrapper + if isinstance(payload, dict) and "Beamlines" in payload: + payload = payload["Beamlines"] if not isinstance(payload, list): raise ValueError( f"Expected list response from staff API, got {type(payload)!r}" diff --git a/tests/test_tiled_tags.py b/tests/test_tiled_tags.py index 681dc8e..7839d9d 100644 --- a/tests/test_tiled_tags.py +++ b/tests/test_tiled_tags.py @@ -9,6 +9,7 @@ build_generated_tag_definitions, build_group_parser, build_sqlite_uri, + compile_tags, ensure_output_sqlite_path, generate_tag_definitions_yaml, write_tag_definitions_yaml, @@ -56,7 +57,7 @@ def test_build_generated_tag_definitions_includes_template_sections_and_esaf_tag tmp_path: Path, ) -> None: esaf_db_path = tmp_path / "esafs.sqlite3" - template_path = tmp_path / "tag_definitions.yml" + template_path = tmp_path / "tag_definitions_stub.yaml" template_path.write_text( """ @@ -136,7 +137,7 @@ def test_build_generated_tag_definitions_includes_template_sections_and_esaf_tag {"name": "SB-01482-001", "role": "facility_user"}, {"name": "12.3.2-staff", "role": "facility_user"}, ], - "auto_tags": [{"name": "data_admin"}], + "auto_tags": [{"name": "data_admin"}, {"name": "12.3.2-staff"}], } assert generated["tags"]["data_admin"]["users"] == [ {"name": "cara", "role": "facility_admin"} @@ -166,7 +167,7 @@ def test_generate_tag_definitions_yaml_writes_generated_esaf_tags( tmp_path: Path, ) -> None: esaf_db_path = tmp_path / "esafs.sqlite3" - template_path = tmp_path / "tag_definitions.yml" + template_path = tmp_path / "tag_definitions_stub.yaml" output_yaml_path = tmp_path / "tag_definitions.generated.yml" template_path.write_text( @@ -240,6 +241,76 @@ def test_generate_tag_definitions_yaml_writes_generated_esaf_tags( {"name": "SB-01482-001", "role": "facility_user"}, {"name": "12.3.2-staff", "role": "facility_user"}, ] + assert generated["tags"]["SB-01482-001"]["auto_tags"] == [ + {"name": "data_admin"}, + {"name": "12.3.2-staff"}, + ] + + +def test_build_generated_tag_definitions_staff_group_in_auto_tags( + tmp_path: Path, +) -> None: + esaf_db_path = tmp_path / "esafs.sqlite3" + template_path = tmp_path / "tag_definitions_stub.yaml" + + template_path.write_text( + """ +roles: + facility_user: + scopes: + - read:data + - read:metadata +tags: {} +tag_owners: {} +""".lstrip(), + encoding="utf-8", + ) + + esaf = { + "Beamline": "12.3.2", + "Description": "Microdiffraction of ARPES samples", + "EsafFriendlyId": "SB-01482-001", + "EsafId": 36017, + "ExpLead": { + "Alsid": 83512, + "Email": "chu2@lbl.gov", + "LbnlId": "070285", + "Name": "Cheng Hu", + "Orcid": "0000-0003-2335-7806", + }, + "IsExportControlled": "No", + "Materials": [], + "PI": { + "Alsid": 11525, + "Email": "erotenberg@lbl.gov", + "LbnlId": "275451", + "Name": "Eli Rotenberg", + "Orcid": "0000-0002-3979-8844", + }, + "Participants": [], + "ProposalFriendlyId": "ALS-13362", + "ProposalId": 19907, + "ScheduledEvents": [], + "Status": "Draft", + "Title": "Microdiffraction of ARPES samples", + "Version": 1, + } + + with sqlite3.connect(esaf_db_path) as connection: + ensure_schema(connection) + sync_beamline( + connection, + beamline="12.3.2", + esafs=[esaf], + synced_at="2026-04-04T00:00:00+00:00", + ) + + generated = build_generated_tag_definitions(esaf_db_path, template_path) + + assert generated["tags"]["SB-01482-001"]["auto_tags"] == [ + {"name": "data_admin"}, + {"name": "12.3.2-staff"}, + ] def test_build_group_parser_includes_empty_beamline_staff_groups( @@ -293,3 +364,124 @@ def test_build_group_parser_includes_empty_beamline_staff_groups( "0000-0003-2335-7806", ] assert group_parser("12.3.2-staff") == [] + + +def test_compile_tags_reflects_roles_and_data_admin_in_sqlite( + tmp_path: Path, +) -> None: + esaf_db_path = tmp_path / "esafs.sqlite3" + template_path = tmp_path / "tag_definitions_stub.yaml" + generated_yaml_path = tmp_path / "tag_definitions.generated.yml" + compiled_db_path = tmp_path / "compiled_tags.sqlite" + + template_path.write_text( + """ +roles: + facility_user: + scopes: + - read:data + - read:metadata + facility_admin: + scopes: + - read:data + - read:metadata + - write:data + - write:metadata + - delete:node + - delete:revision + - create:node + - register +tags: + data_admin: + users: + - name: "0000-0001-0000-0001" + role: facility_admin +tag_owners: {} +""".lstrip(), + encoding="utf-8", + ) + + esaf = { + "Beamline": "12.3.2", + "Description": "Test ESAF", + "EsafFriendlyId": "SB-01482-001", + "EsafId": 36017, + "ExpLead": { + "Alsid": 83512, + "Email": "chu2@lbl.gov", + "LbnlId": "070285", + "Name": "Cheng Hu", + "Orcid": "0000-0003-2335-7806", + }, + "IsExportControlled": "No", + "Materials": [], + "PI": { + "Alsid": 11525, + "Email": "erotenberg@lbl.gov", + "LbnlId": "275451", + "Name": "Eli Rotenberg", + "Orcid": "0000-0002-3979-8844", + }, + "Participants": [], + "ProposalFriendlyId": "ALS-13362", + "ProposalId": 19907, + "ScheduledEvents": [], + "Status": "Draft", + "Title": "Test ESAF", + "Version": 1, + } + + with sqlite3.connect(esaf_db_path) as connection: + ensure_schema(connection) + sync_beamline( + connection, + beamline="12.3.2", + esafs=[esaf], + synced_at="2026-04-04T00:00:00+00:00", + ) + + compile_tags( + output_sqlite_path=compiled_db_path, + esaf_db_path=esaf_db_path, + tag_definitions_path=template_path, + generated_tag_definitions_path=generated_yaml_path, + ) + + with sqlite3.connect(compiled_db_path) as con: + cur = con.cursor() + + # data_admin tag exists in the compiled database + cur.execute("SELECT id FROM tags WHERE name = 'data_admin'") + data_admin_row = cur.fetchone() + assert data_admin_row is not None, "data_admin tag not found in compiled DB" + data_admin_id = data_admin_row[0] + + # the data_admin user is associated with data_admin and has facility_admin scopes + cur.execute( + """ + SELECT s.name FROM tags_users_scopes tus + JOIN users u ON u.id = tus.user_id + JOIN scopes s ON s.id = tus.scope_id + WHERE tus.tag_id = ? AND u.name = '0000-0001-0000-0001' + ORDER BY s.name + """, + (data_admin_id,), + ) + admin_scopes = {row[0] for row in cur.fetchall()} + assert "read:data" in admin_scopes + assert "write:data" in admin_scopes + assert "create:node" in admin_scopes + assert "delete:node" in admin_scopes + + # facility_user scopes are present in the DB (used by ESAF and staff tags) + cur.execute("SELECT name FROM scopes ORDER BY name") + all_scopes = {row[0] for row in cur.fetchall()} + assert "read:data" in all_scopes + assert "read:metadata" in all_scopes + + # the data_admin user does NOT have facility_user-only read:data access + # on the ESAF tag (it gets access via auto_tag, not direct membership) + cur.execute("SELECT id FROM tags WHERE name = 'SB-01482-001'") + assert ( + cur.fetchone() is not None + ), "SB-01482-001 ESAF tag not found in compiled DB" diff --git a/tests/test_user_office.py b/tests/test_user_office.py index 7e499ec..0abdb18 100644 --- a/tests/test_user_office.py +++ b/tests/test_user_office.py @@ -95,7 +95,7 @@ def test_sync_beamline_persists_normalized_records() -> None: assert user_count == 2 role_rows = connection.execute( - "SELECT user_key, role FROM esaf_user WHERE esaf_id = 36017" + "SELECT user_key, role FROM esaf_user WHERE esaf_id = 36017 " "ORDER BY role, user_key" ).fetchall() assert role_rows == [ diff --git a/tests/test_user_office_integration.py b/tests/test_user_office_integration.py new file mode 100644 index 0000000..30d9513 --- /dev/null +++ b/tests/test_user_office_integration.py @@ -0,0 +1,99 @@ +import sqlite3 +from pathlib import Path + +import httpx +import pytest +import yaml # type: ignore[import-untyped] + +from splash_tiled.access_control.tiled_tags import compile_tags +from splash_tiled.access_control.user_office import ( + DEFAULT_API_URL, + ensure_schema, + fetch_beamline_staff, + fetch_esafs, + get_beamline_staff_groups, + sync_beamline, + sync_beamline_staff_groups, +) + + +@pytest.mark.user_office +def test_live_user_office_sync_compiles_stub_entries(tmp_path: Path) -> None: + repo_root = Path(__file__).resolve().parents[1] + stub_path = ( + repo_root + / "src" + / "splash_tiled" + / "access_control" + / "tag_definitions_stub.yaml" + ) + + esaf_db_path = tmp_path / "esafs.sqlite3" + generated_yaml_path = tmp_path / "tag_definitions.generated.yml" + compiled_db_path = tmp_path / "compiled_tags.sqlite" + + beamline = "12.3.2" + with httpx.Client(timeout=30.0, follow_redirects=True) as client: + try: + staff_payload = fetch_beamline_staff(client) + esafs = fetch_esafs(client, beamline=beamline, api_url=DEFAULT_API_URL) + except httpx.HTTPError as exc: + pytest.skip(f"User Office API unavailable: {exc}") + + with sqlite3.connect(esaf_db_path) as connection: + ensure_schema(connection) + sync_beamline_staff_groups( + connection, + get_beamline_staff_groups(staff_payload), + ) + sync_beamline( + connection, + beamline=beamline, + esafs=esafs, + synced_at="2026-04-28T00:00:00+00:00", + ) + + compile_tags( + output_sqlite_path=compiled_db_path, + esaf_db_path=esaf_db_path, + tag_definitions_path=stub_path, + generated_tag_definitions_path=generated_yaml_path, + ) + + stub = yaml.safe_load(stub_path.read_text(encoding="utf-8")) + data_admin_users = [ + item["name"] + for item in ((stub.get("tags") or {}).get("data_admin") or {}).get("users", []) + ] + facility_admin_scopes = set( + ((stub.get("roles") or {}).get("facility_admin") or {}).get("scopes", []) + ) + facility_user_scopes = set( + ((stub.get("roles") or {}).get("facility_user") or {}).get("scopes", []) + ) + + with sqlite3.connect(compiled_db_path) as connection: + cursor = connection.cursor() + + cursor.execute("SELECT id FROM tags WHERE name = 'data_admin'") + data_admin_row = cursor.fetchone() + assert data_admin_row is not None + data_admin_tag_id = data_admin_row[0] + + cursor.execute("SELECT name FROM scopes") + all_scopes = {row[0] for row in cursor.fetchall()} + assert facility_admin_scopes.issubset(all_scopes) + assert facility_user_scopes.issubset(all_scopes) + + for user_name in data_admin_users: + cursor.execute( + """ + SELECT s.name FROM tags_users_scopes tus + JOIN users u ON u.id = tus.user_id + JOIN scopes s ON s.id = tus.scope_id + WHERE tus.tag_id = ? AND u.name = ? + """, + (data_admin_tag_id, user_name), + ) + user_scopes = {row[0] for row in cursor.fetchall()} + assert facility_admin_scopes.issubset(user_scopes) diff --git a/tiled_config/config.yaml b/tiled_config/config.yaml new file mode 100644 index 0000000..001d710 --- /dev/null +++ b/tiled_config/config.yaml @@ -0,0 +1,45 @@ +authentication: + providers: + - provider: example + authenticator: tiled.authenticators:DictionaryAuthenticator + args: + users_to_passwords: + alice: ${ALICE_PASSWORD} + bob: ${BOB_PASSWORD} + confirmation_message: "You have logged in as {id}." + tiled_admins: + - provider: example + id: alice + +file_extensions: + edf: application/x-edf + gb: application/x-gb + +access_control: + access_policy: "tiled.access_control.access_policies:TagBasedAccessPolicy" + args: + provider: "example" + scopes: + - "read:metadata" + - "read:data" + - "write:metadata" + - "write:data" + - "delete:revision" + - "delete:node" + - "create:node" + - "register" + tags_db: + uri: "/app/data/compiled_tags.sqlite" + access_tags_parser: "tiled.access_control.access_tags:AccessTagsParser" + +trees: + - path: / + tree: catalog + args: + uri: /app/data/catalog.db + readable_storage: [/app/data] + writable_storage: /app/data + init_if_not_exists: true + adapters_by_mimetype: + application/x-edf: splash_tiled.bl733.adapters.edf:EDFAdapter + application/x-gb: splash_tiled.bl733.adapters.gb:GeneralBinaryPilatus2MAdapter diff --git a/tiled_config/config_compose.yaml b/tiled_config/config_compose.yaml new file mode 100644 index 0000000..2e0c39f --- /dev/null +++ b/tiled_config/config_compose.yaml @@ -0,0 +1,31 @@ +file_extensions: + edf: application/x-edf + gb: application/x-gb + +access_control: + access_policy: "tiled.access_control.access_policies:TagBasedAccessPolicy" + args: + provider: "toy" + scopes: + - "read:metadata" + - "read:data" + - "write:metadata" + - "write:data" + - "delete:revision" + - "delete:node" + - "create:node" + - "register" + tags_db: + uri: "/app/data/compiled_tags.sqlite" + access_tags_parser: "tiled.access_control.access_tags:AccessTagsParser" + +trees: + - path: / + tree: tiled.catalog:from_uri + args: + uri: /app/data/catalog.db + readable_storage: [/app/data] + init_if_not_exists: true + adapters_by_mimetype: + application/x-edf: splash_tiled.bl733.adapters.edf:EDFAdapter + application/x-gb: splash_tiled.bl733.adapters.gb:GeneralBinaryPilatus2MAdapter From 92d580735cb84ab37484bb136efac9bc2f900a88 Mon Sep 17 00:00:00 2001 From: Dylan McReynolds Date: Wed, 29 Apr 2026 08:54:44 -0700 Subject: [PATCH 10/31] change all sqlite to .db --- README.md | 2 +- TAGS.md | 30 +++++++++---------- docker-compose.yaml | 6 ++-- pixi.toml | 6 ++-- scripts/seed_dev_catalog.py | 2 +- scripts/sync_scheduler.py | 8 ++--- src/splash_tiled/access_control/tiled_tags.py | 4 +-- .../access_control/user_office.py | 4 +-- tests/test_tiled_tags.py | 16 +++++----- tests/test_user_office_integration.py | 4 +-- tiled_config/config.yaml | 2 +- tiled_config/config_compose.yaml | 2 +- 12 files changed, 43 insertions(+), 43 deletions(-) diff --git a/README.md b/README.md index f7f26d8..92c38db 100755 --- a/README.md +++ b/README.md @@ -197,7 +197,7 @@ The repository includes a small CLI for loading ESAFs into SQLite. als-esaf-sync \ --beamline 7.0.2 \ --beamline 12.3.2 \ - --db-path ./esafs.sqlite3 + --db-path ./esafs.db ``` The script stores data in four tables: diff --git a/TAGS.md b/TAGS.md index 8aeb3b8..499f7c7 100644 --- a/TAGS.md +++ b/TAGS.md @@ -53,7 +53,7 @@ A set of principals that are allowed to *apply* a tag to a node. Defined in ### Compiled tags database -`compiled_tags.sqlite` — the output of the `tiled_tags compile` command. It +`compiled_tags.db` — the output of the `tiled_tags compile` command. It resolves every group name to a concrete list of user identities (ORCIDs) and stores the results in a form that Tiled can query at request time. Tiled reloads this file automatically; no server restart is required after a recompile. @@ -143,56 +143,56 @@ update from the host or inside a container. ```bash python -m splash_tiled.access_control.user_office \ --beamline 12.3.2 --beamline 9.3.2 --beamline 7.0.2 \ - --db-path data/esafs.sqlite3 \ + --db-path data/esafs.db \ --api-url https://als-esaf.als.lbl.gov/EsafInformation/GetEsaf ``` Use `--all` instead of individual `--beamline` flags to sync every beamline. This -writes ESAF and staff records to `esafs.sqlite3`. +writes ESAF and staff records to `esafs.db`. ### Step 2 — Compile tags ```bash python -m splash_tiled.access_control.tiled_tags compile \ - --esaf-sqlite-path data/esafs.sqlite3 \ + --esaf-sqlite-path data/esafs.db \ --tag-definitions-path src/splash_tiled/access_control/tag_definitions_stub.yaml \ --generated-yaml-path data/tag_definitions.generated.yml \ - --output-sqlite-path data/compiled_tags.sqlite + --output-sqlite-path data/compiled_tags.db ``` This command: -1. Reads `esafs.sqlite3` to build per-ESAF and per-beamline-staff tags. +1. Reads `esafs.db` to build per-ESAF and per-beamline-staff tags. 2. Merges them with the static definitions in `tag_definitions_stub.yaml`. 3. Writes the merged YAML to `tag_definitions.generated.yml` (useful for inspection and debugging). -4. Compiles the YAML into `compiled_tags.sqlite`, resolving all group names to +4. Compiles the YAML into `compiled_tags.db`, resolving all group names to ORCID lists. -Tiled picks up the new `compiled_tags.sqlite` automatically — no restart needed. +Tiled picks up the new `compiled_tags.db` automatically — no restart needed. ### Using podman-compose (inside the sync-worker container) ```bash podman-compose run --rm --no-deps sync-worker \ python -m splash_tiled.access_control.tiled_tags compile \ - --esaf-sqlite-path /app/data/esafs.sqlite3 \ + --esaf-sqlite-path /app/data/esafs.db \ --tag-definitions-path /app/src/splash_tiled/access_control/tag_definitions_stub.yaml \ --generated-yaml-path /app/data/tag_definitions.generated.yml \ - --output-sqlite-path /app/data/compiled_tags.sqlite + --output-sqlite-path /app/data/compiled_tags.db ``` ### Verifying the result ```bash # Check compiled staff tags -sqlite3 data/compiled_tags.sqlite \ +sqlite3 data/compiled_tags.db \ "SELECT name FROM tags WHERE name LIKE '%-staff' ORDER BY name" # Count all compiled tags -sqlite3 data/compiled_tags.sqlite "SELECT COUNT(*) FROM tags" +sqlite3 data/compiled_tags.db "SELECT COUNT(*) FROM tags" # Inspect a specific proposal's owners -sqlite3 data/compiled_tags.sqlite \ +sqlite3 data/compiled_tags.db \ "SELECT u.name FROM tags t JOIN tags_users_scopes tus ON tus.tag_id = t.id JOIN users u ON u.id = tus.user_id @@ -205,10 +205,10 @@ sqlite3 data/compiled_tags.sqlite \ |---|---|---| | `SYNC_CRON` | — | Cron expression for automatic sync (required) | | `BEAMLINES` | `12.3.2,9.3.2,7.0.2` | Comma-separated beamline list, or `all` | -| `ESAF_DB_PATH` | `/app/tags/esafs.sqlite3` | Path to the ESAF SQLite database | +| `ESAF_DB_PATH` | `/app/tags/esafs.db` | Path to the ESAF SQLite database | | `TAGS_TEMPLATE` | `/app/src/.../tag_definitions_stub.yaml` | Static tag definitions template | | `GENERATED_TAGS_YAML` | `/app/tags/tag_definitions.generated.yml` | Generated YAML output path | -| `COMPILED_TAGS_DB` | `/app/tags/compiled_tags.sqlite` | Compiled tags output path | +| `COMPILED_TAGS_DB` | `/app/tags/compiled_tags.db` | Compiled tags output path | --- diff --git a/docker-compose.yaml b/docker-compose.yaml index fa5d6c3..4a7f122 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -43,8 +43,8 @@ services: environment: SYNC_CRON: "*/5 * * * *" BEAMLINES: "12.3.2,9.3.2,7.0.2" - ESAF_DB_PATH: /app/data/esafs.sqlite3 - COMPILED_TAGS_DB: /app/data/compiled_tags.sqlite + ESAF_DB_PATH: /app/data/esafs.db + COMPILED_TAGS_DB: /app/data/compiled_tags.db GENERATED_TAGS_YAML: /app/data/tag_definitions.generated.yml TAGS_TEMPLATE: /app/src/splash_tiled/access_control/tag_definitions_stub.yaml volumes: @@ -77,5 +77,5 @@ services: - tiled environment: ALICE_PASSWORD: ${ALICE_PASSWORD} - COMPILED_TAGS_DB: /app/data/compiled_tags.sqlite + COMPILED_TAGS_DB: /app/data/compiled_tags.db restart: "no" diff --git a/pixi.toml b/pixi.toml index 11165ee..cb0fd26 100644 --- a/pixi.toml +++ b/pixi.toml @@ -40,7 +40,7 @@ test = "pytest --cov=splash_tiled --cov-report=term-missing" test_user_office = "pytest -m user_office" lint = "flake8 src tests && black --check src tests && isort --check-only src tests && mypy src" format = "black src tests && isort src tests" -als-hub = "als-hub --db-path ./esafs.sqlite3" +als-hub = "als-hub --db-path ./esafs.db" compile-tags = "compile-tags" -compile-tags-db = "compile-tags compile --esaf-sqlite-path ./tags/esafs.sqlite3 --output-sqlite-path ./tags/compiled_tags.sqlite3" -generate-tags-yaml = "compile-tags generate-yaml --esaf-sqlite-path ./tags/esafs.sqlite3 --output-yaml-path ./tags/tag_definitions.generated.yml" +compile-tags-db = "compile-tags compile --esaf-sqlite-path ./tags/esafs.db --output-sqlite-path ./tags/compiled_tags.db" +generate-tags-yaml = "compile-tags generate-yaml --esaf-sqlite-path ./tags/esafs.db --output-yaml-path ./tags/tag_definitions.generated.yml" diff --git a/scripts/seed_dev_catalog.py b/scripts/seed_dev_catalog.py index af54da6..c526b55 100644 --- a/scripts/seed_dev_catalog.py +++ b/scripts/seed_dev_catalog.py @@ -259,7 +259,7 @@ def parse_args() -> argparse.Namespace: ) parser.add_argument( "--compiled-tags-db", - default=os.getenv("COMPILED_TAGS_DB", "/app/tags/compiled_tags.sqlite"), + default=os.getenv("COMPILED_TAGS_DB", "/app/tags/compiled_tags.db"), help="Path to compiled tags sqlite DB used to validate access tags.", ) return parser.parse_args() diff --git a/scripts/sync_scheduler.py b/scripts/sync_scheduler.py index 7f1a1f7..cf04e7c 100644 --- a/scripts/sync_scheduler.py +++ b/scripts/sync_scheduler.py @@ -116,7 +116,7 @@ def main( "--esaf-db-path", help=( "Path to ESAF SQLite DB. If omitted, uses ESAF_DB_PATH " - "(default: /app/tags/esafs.sqlite3)." + "(default: /app/tags/esafs.db)." ), ), tags_template: Path | None = typer.Option( @@ -142,7 +142,7 @@ def main( "--compiled-tags-db", help=( "Path to compiled tags SQLite DB. If omitted, uses " - "COMPILED_TAGS_DB (default: /app/tags/compiled_tags.sqlite)." + "COMPILED_TAGS_DB (default: /app/tags/compiled_tags.db)." ), ), ) -> None: @@ -150,7 +150,7 @@ def main( resolved_esaf_db_path = resolve_path_option( esaf_db_path, env_name="ESAF_DB_PATH", - default="/app/tags/esafs.sqlite3", + default="/app/tags/esafs.db", ) resolved_tags_template = resolve_path_option( tags_template, @@ -165,7 +165,7 @@ def main( resolved_compiled_tags_db = resolve_path_option( compiled_tags_db, env_name="COMPILED_TAGS_DB", - default="/app/tags/compiled_tags.sqlite", + default="/app/tags/compiled_tags.db", ) api_url = get_env( "API_URL", diff --git a/src/splash_tiled/access_control/tiled_tags.py b/src/splash_tiled/access_control/tiled_tags.py index a69f7a8..c7b5e1e 100644 --- a/src/splash_tiled/access_control/tiled_tags.py +++ b/src/splash_tiled/access_control/tiled_tags.py @@ -18,11 +18,11 @@ def get_default_esaf_db_path() -> Path: - return Path(__file__).resolve().parents[3] / "esafs.sqlite3" + return Path(__file__).resolve().parents[3] / "esafs.db" def get_default_output_sqlite_path() -> Path: - return Path(__file__).resolve().parent / "compiled_tags.sqlite" + return Path(__file__).resolve().parent / "compiled_tags.db" def get_default_tag_definitions_path() -> Path: diff --git a/src/splash_tiled/access_control/user_office.py b/src/splash_tiled/access_control/user_office.py index 22d9922..a225683 100644 --- a/src/splash_tiled/access_control/user_office.py +++ b/src/splash_tiled/access_control/user_office.py @@ -708,9 +708,9 @@ def cli( help="Sync every beamline defined in the Beamline enum.", ), db_path: Path = typer.Option( - Path("esafs.sqlite3"), + Path("esafs.db"), "--db-path", - help="SQLite database path. Defaults to ./esafs.sqlite3.", + help="SQLite database path. Defaults to ./esafs.db.", ), api_url: str = typer.Option( DEFAULT_API_URL, diff --git a/tests/test_tiled_tags.py b/tests/test_tiled_tags.py index 7839d9d..265f245 100644 --- a/tests/test_tiled_tags.py +++ b/tests/test_tiled_tags.py @@ -22,7 +22,7 @@ def test_ensure_output_sqlite_path_creates_parent_and_file(tmp_path: Path) -> None: - output_path = tmp_path / "nested" / "compiled_tags.sqlite" + output_path = tmp_path / "nested" / "compiled_tags.db" resolved_path = ensure_output_sqlite_path(output_path) @@ -42,7 +42,7 @@ def test_build_sqlite_uri_uses_absolute_sqlite_file_uri(tmp_path: Path) -> None: def test_ensure_output_sqlite_path_raises_for_unwritable_directory( monkeypatch: pytest.MonkeyPatch, tmp_path: Path ) -> None: - output_path = tmp_path / "compiled_tags.sqlite" + output_path = tmp_path / "compiled_tags.db" def raise_permission_error(*args, **kwargs) -> None: raise PermissionError("permission denied") @@ -56,7 +56,7 @@ def raise_permission_error(*args, **kwargs) -> None: def test_build_generated_tag_definitions_includes_template_sections_and_esaf_tags( tmp_path: Path, ) -> None: - esaf_db_path = tmp_path / "esafs.sqlite3" + esaf_db_path = tmp_path / "esafs.db" template_path = tmp_path / "tag_definitions_stub.yaml" template_path.write_text( @@ -166,7 +166,7 @@ def test_write_tag_definitions_yaml_writes_yaml_file(tmp_path: Path) -> None: def test_generate_tag_definitions_yaml_writes_generated_esaf_tags( tmp_path: Path, ) -> None: - esaf_db_path = tmp_path / "esafs.sqlite3" + esaf_db_path = tmp_path / "esafs.db" template_path = tmp_path / "tag_definitions_stub.yaml" output_yaml_path = tmp_path / "tag_definitions.generated.yml" @@ -250,7 +250,7 @@ def test_generate_tag_definitions_yaml_writes_generated_esaf_tags( def test_build_generated_tag_definitions_staff_group_in_auto_tags( tmp_path: Path, ) -> None: - esaf_db_path = tmp_path / "esafs.sqlite3" + esaf_db_path = tmp_path / "esafs.db" template_path = tmp_path / "tag_definitions_stub.yaml" template_path.write_text( @@ -316,7 +316,7 @@ def test_build_generated_tag_definitions_staff_group_in_auto_tags( def test_build_group_parser_includes_empty_beamline_staff_groups( tmp_path: Path, ) -> None: - esaf_db_path = tmp_path / "esafs.sqlite3" + esaf_db_path = tmp_path / "esafs.db" esaf = { "Beamline": "12.3.2", @@ -369,10 +369,10 @@ def test_build_group_parser_includes_empty_beamline_staff_groups( def test_compile_tags_reflects_roles_and_data_admin_in_sqlite( tmp_path: Path, ) -> None: - esaf_db_path = tmp_path / "esafs.sqlite3" + esaf_db_path = tmp_path / "esafs.db" template_path = tmp_path / "tag_definitions_stub.yaml" generated_yaml_path = tmp_path / "tag_definitions.generated.yml" - compiled_db_path = tmp_path / "compiled_tags.sqlite" + compiled_db_path = tmp_path / "compiled_tags.db" template_path.write_text( """ diff --git a/tests/test_user_office_integration.py b/tests/test_user_office_integration.py index 30d9513..0fd28fc 100644 --- a/tests/test_user_office_integration.py +++ b/tests/test_user_office_integration.py @@ -28,9 +28,9 @@ def test_live_user_office_sync_compiles_stub_entries(tmp_path: Path) -> None: / "tag_definitions_stub.yaml" ) - esaf_db_path = tmp_path / "esafs.sqlite3" + esaf_db_path = tmp_path / "esafs.db" generated_yaml_path = tmp_path / "tag_definitions.generated.yml" - compiled_db_path = tmp_path / "compiled_tags.sqlite" + compiled_db_path = tmp_path / "compiled_tags.db" beamline = "12.3.2" with httpx.Client(timeout=30.0, follow_redirects=True) as client: diff --git a/tiled_config/config.yaml b/tiled_config/config.yaml index 001d710..1e0c4c4 100644 --- a/tiled_config/config.yaml +++ b/tiled_config/config.yaml @@ -29,7 +29,7 @@ access_control: - "create:node" - "register" tags_db: - uri: "/app/data/compiled_tags.sqlite" + uri: "/app/data/compiled_tags.db" access_tags_parser: "tiled.access_control.access_tags:AccessTagsParser" trees: diff --git a/tiled_config/config_compose.yaml b/tiled_config/config_compose.yaml index 2e0c39f..49a9149 100644 --- a/tiled_config/config_compose.yaml +++ b/tiled_config/config_compose.yaml @@ -16,7 +16,7 @@ access_control: - "create:node" - "register" tags_db: - uri: "/app/data/compiled_tags.sqlite" + uri: "/app/data/compiled_tags.db" access_tags_parser: "tiled.access_control.access_tags:AccessTagsParser" trees: From bdad296b0c6657232d64de430b083838f0c58e62 Mon Sep 17 00:00:00 2001 From: Dylan McReynolds Date: Wed, 29 Apr 2026 09:00:14 -0700 Subject: [PATCH 11/31] more test cleanup --- pixi.toml | 1 + tests/test_user_office_integration.py | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/pixi.toml b/pixi.toml index cb0fd26..9f5a6fe 100644 --- a/pixi.toml +++ b/pixi.toml @@ -38,6 +38,7 @@ fabio = "*" [tasks] test = "pytest --cov=splash_tiled --cov-report=term-missing" test_user_office = "pytest -m user_office" +test_integration = "pytest tests/test_user_office_integration.py -v" lint = "flake8 src tests && black --check src tests && isort --check-only src tests && mypy src" format = "black src tests && isort src tests" als-hub = "als-hub --db-path ./esafs.db" diff --git a/tests/test_user_office_integration.py b/tests/test_user_office_integration.py index 0fd28fc..4f46c66 100644 --- a/tests/test_user_office_integration.py +++ b/tests/test_user_office_integration.py @@ -19,6 +19,21 @@ @pytest.mark.user_office def test_live_user_office_sync_compiles_stub_entries(tmp_path: Path) -> None: + """Hit the live User Office API, sync ESAFs and beamline staff, compile tags, and verify the compiled DB. + + Fetches real ESAF records for beamline 12.3.2 and the full beamline-staff + payload, writes them into a fresh SQLite DB, then runs compile_tags against + the repo's tag_definitions_stub.yaml. Asserts that: + + - The compiled DB contains a 'data_admin' tag matching the stub definition. + - All scopes declared for the 'facility_admin' and 'facility_user' roles in + the stub are present in the compiled scopes table. + - Every user listed under 'data_admin' in the stub has been granted at least + the full set of 'facility_admin' scopes in the compiled tags_users_scopes + table. + + Skipped automatically if the User Office API is unreachable. + """ repo_root = Path(__file__).resolve().parents[1] stub_path = ( repo_root From ba36e713bd69bfcdbef7eeb24a25a841c83f21b4 Mon Sep 17 00:00:00 2001 From: Dylan McReynolds Date: Wed, 29 Apr 2026 10:09:16 -0700 Subject: [PATCH 12/31] add access cli --- .gitignore | 1 + TAGS.md | 88 +++--- docker-compose.yaml | 17 ++ pixi.toml | 5 +- pyproject.toml | 2 + src/splash_tiled/access_control/cli.py | 109 ++++++++ src/splash_tiled/access_control/inspect.py | 256 ++++++++++++++++++ .../access_control/user_office.py | 79 +++--- tests/test_user_office.py | 50 ++-- 9 files changed, 488 insertions(+), 119 deletions(-) create mode 100644 src/splash_tiled/access_control/cli.py create mode 100644 src/splash_tiled/access_control/inspect.py diff --git a/.gitignore b/.gitignore index 2765f5e..bd57646 100755 --- a/.gitignore +++ b/.gitignore @@ -188,3 +188,4 @@ ehthumbs.db *.sqlite3-* tag_definitions.generated.yml data/ +tags/ diff --git a/TAGS.md b/TAGS.md index 499f7c7..be8a762 100644 --- a/TAGS.md +++ b/TAGS.md @@ -132,73 +132,59 @@ node tagged with SB-01482-001 --- -## How to run an update - -Updates are normally performed automatically by the `sync-worker` container on the -schedule configured by `SYNC_CRON`. The steps below show how to trigger a manual -update from the host or inside a container. +## The `access` CLI -### Step 1 — Sync ESAFs and staff from the User Office API +All compile and query operations are available through the `access` command. -```bash -python -m splash_tiled.access_control.user_office \ - --beamline 12.3.2 --beamline 9.3.2 --beamline 7.0.2 \ - --db-path data/esafs.db \ - --api-url https://als-esaf.als.lbl.gov/EsafInformation/GetEsaf ``` +access compile all # sync User Office APIs then compile tags +access compile useroffice # sync User Office APIs only (writes esafs.db) +access compile compiled-tags # compile tags from existing esafs.db + +access query beamlines +access query proposals [--beamline 12.3.2] [--proposal SB] +access query esaf [--beamline 12.3.2] [--proposal SB] +access query proposal-members +access query beamline-members +access query user-proposals +access query user-beamlines +access query tags +``` + +All compile subcommands default to `tags/esafs.db` and `tags/compiled_tags.db`. +All query subcommands default to `--db-path tags/esafs.db` and +`--compiled-db tags/compiled_tags.db`. -Use `--all` instead of individual `--beamline` flags to sync every beamline. This -writes ESAF and staff records to `esafs.db`. +### Running from a container -### Step 2 — Compile tags +The `access-ctl` service is defined in `docker-compose.yaml` with +`profiles: [access]` so it never starts automatically. Use +`docker compose run` to invoke it on demand: ```bash -python -m splash_tiled.access_control.tiled_tags compile \ - --esaf-sqlite-path data/esafs.db \ - --tag-definitions-path src/splash_tiled/access_control/tag_definitions_stub.yaml \ - --generated-yaml-path data/tag_definitions.generated.yml \ - --output-sqlite-path data/compiled_tags.db +docker compose run --rm access-ctl compile all +docker compose run --rm access-ctl query beamline-members 12.3.2 +docker compose run --rm access-ctl query tags 0000-0002-3979-8844 ``` -This command: -1. Reads `esafs.db` to build per-ESAF and per-beamline-staff tags. -2. Merges them with the static definitions in `tag_definitions_stub.yaml`. -3. Writes the merged YAML to `tag_definitions.generated.yml` (useful for - inspection and debugging). -4. Compiles the YAML into `compiled_tags.db`, resolving all group names to - ORCID lists. +--- -Tiled picks up the new `compiled_tags.db` automatically — no restart needed. +## How to run an update -### Using podman-compose (inside the sync-worker container) +Updates are normally performed automatically by the `sync-worker` container on the +schedule configured by `SYNC_CRON`. To trigger a manual update from the host: ```bash -podman-compose run --rm --no-deps sync-worker \ - python -m splash_tiled.access_control.tiled_tags compile \ - --esaf-sqlite-path /app/data/esafs.db \ - --tag-definitions-path /app/src/splash_tiled/access_control/tag_definitions_stub.yaml \ - --generated-yaml-path /app/data/tag_definitions.generated.yml \ - --output-sqlite-path /app/data/compiled_tags.db -``` - -### Verifying the result +# Full update: sync User Office APIs then compile tags +access compile all -```bash -# Check compiled staff tags -sqlite3 data/compiled_tags.db \ - "SELECT name FROM tags WHERE name LIKE '%-staff' ORDER BY name" - -# Count all compiled tags -sqlite3 data/compiled_tags.db "SELECT COUNT(*) FROM tags" - -# Inspect a specific proposal's owners -sqlite3 data/compiled_tags.db \ - "SELECT u.name FROM tags t - JOIN tags_users_scopes tus ON tus.tag_id = t.id - JOIN users u ON u.id = tus.user_id - WHERE t.name = 'SB-01482-001' LIMIT 20" +# Or as two separate steps: +access compile useroffice +access compile compiled-tags ``` +Tiled picks up the new `compiled_tags.db` automatically — no restart needed. + ### Environment variables (sync-worker) | Variable | Default | Description | diff --git a/docker-compose.yaml b/docker-compose.yaml index 4a7f122..a67d3d0 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -53,6 +53,23 @@ services: - tiled restart: unless-stopped + access-ctl: + build: + context: . + dockerfile: Containerfile + security_opt: + - label=disable + userns_mode: keep-id + user: "${UID:-1000}:${GID:-1000}" + security_opt: + - label=disable + entrypoint: ["access"] + volumes: + - ./tags:/app/tags:rw,Z + profiles: + - access + restart: "no" + seed-data: build: context: . diff --git a/pixi.toml b/pixi.toml index 9f5a6fe..058e247 100644 --- a/pixi.toml +++ b/pixi.toml @@ -41,7 +41,4 @@ test_user_office = "pytest -m user_office" test_integration = "pytest tests/test_user_office_integration.py -v" lint = "flake8 src tests && black --check src tests && isort --check-only src tests && mypy src" format = "black src tests && isort src tests" -als-hub = "als-hub --db-path ./esafs.db" -compile-tags = "compile-tags" -compile-tags-db = "compile-tags compile --esaf-sqlite-path ./tags/esafs.db --output-sqlite-path ./tags/compiled_tags.db" -generate-tags-yaml = "compile-tags generate-yaml --esaf-sqlite-path ./tags/esafs.db --output-yaml-path ./tags/tag_definitions.generated.yml" +access = "access" diff --git a/pyproject.toml b/pyproject.toml index c2030b7..835747d 100755 --- a/pyproject.toml +++ b/pyproject.toml @@ -46,6 +46,8 @@ Documentation = "https://github.com/als-lbl/splash_tiled#readme" als-tiled = "splash_tiled.main:main" als-hub = "splash_tiled.access_control.user_office:main" compile-tags = "splash_tiled.access_control.tiled_tags:main" +access-query = "splash_tiled.access_control.inspect:main" +access = "splash_tiled.access_control.cli:main" [tool.setuptools.packages.find] where = ["src"] diff --git a/src/splash_tiled/access_control/cli.py b/src/splash_tiled/access_control/cli.py new file mode 100644 index 0000000..64fbb3f --- /dev/null +++ b/src/splash_tiled/access_control/cli.py @@ -0,0 +1,109 @@ +from __future__ import annotations + +from pathlib import Path +from typing import Optional + +import typer + +from splash_tiled.access_control.inspect import app as query_app +from splash_tiled.access_control.tiled_tags import ( + compile_tags, + get_default_tag_definitions_path, +) +from splash_tiled.access_control.user_office import ( + ALL_BEAMLINES, + DEFAULT_API_URL, + run, +) + +app = typer.Typer(help="ALS access control management.", add_completion=False) +compile_app = typer.Typer( + help="Build ESAF and compiled-tags databases.", add_completion=False +) + +app.add_typer(query_app, name="query") +app.add_typer(compile_app, name="compile") + +_ESAF_DB = typer.Option( + Path("tags/esafs.db"), "--esaf-db", help="ESAF SQLite database." +) +_COMPILED_DB = typer.Option( + Path("tags/compiled_tags.db"), + "--compiled-db", + help="Compiled tags SQLite database.", +) +_GENERATED_YAML = typer.Option( + Path("tags/tag_definitions.generated.yml"), + "--generated-yaml", + help="Generated tag definitions YAML.", +) +_TAG_DEFS = typer.Option( + None, + "--tag-definitions", + help="Tag definitions stub YAML. Defaults to the package stub.", +) +_API_URL = typer.Option(DEFAULT_API_URL, "--api-url", help="ESAF API base URL.") +_TIMEOUT = typer.Option(30.0, "--timeout", help="HTTP timeout in seconds.") + + +def _resolve_tag_defs(tag_definitions: Optional[Path]) -> Path: + return tag_definitions or get_default_tag_definitions_path() + + +@compile_app.command("useroffice") +def compile_useroffice( + esaf_db: Path = _ESAF_DB, + api_url: str = _API_URL, + timeout: float = _TIMEOUT, +) -> None: + """Fetch all beamlines and staff from the User Office APIs into the ESAF database.""" + raise typer.Exit( + run(beamlines=ALL_BEAMLINES, db_path=esaf_db, api_url=api_url, timeout=timeout) + ) + + +@compile_app.command("compiled-tags") +def compile_compiled_tags( + esaf_db: Path = _ESAF_DB, + compiled_db: Path = _COMPILED_DB, + generated_yaml: Path = _GENERATED_YAML, + tag_definitions: Optional[Path] = _TAG_DEFS, +) -> None: + """Generate the compiled-tags database from the ESAF database.""" + compile_tags( + output_sqlite_path=compiled_db, + esaf_db_path=esaf_db, + tag_definitions_path=_resolve_tag_defs(tag_definitions), + generated_tag_definitions_path=generated_yaml, + ) + + +@compile_app.command("all") +def compile_all( + esaf_db: Path = _ESAF_DB, + compiled_db: Path = _COMPILED_DB, + generated_yaml: Path = _GENERATED_YAML, + tag_definitions: Optional[Path] = _TAG_DEFS, + api_url: str = _API_URL, + timeout: float = _TIMEOUT, +) -> None: + """Fetch from User Office APIs then compile tags.""" + exit_code = run( + beamlines=ALL_BEAMLINES, db_path=esaf_db, api_url=api_url, timeout=timeout + ) + if exit_code != 0: + raise typer.Exit(exit_code) + compile_tags( + output_sqlite_path=compiled_db, + esaf_db_path=esaf_db, + tag_definitions_path=_resolve_tag_defs(tag_definitions), + generated_tag_definitions_path=generated_yaml, + ) + + +def main() -> None: + app() + + +if __name__ == "__main__": + main() diff --git a/src/splash_tiled/access_control/inspect.py b/src/splash_tiled/access_control/inspect.py new file mode 100644 index 0000000..9b689db --- /dev/null +++ b/src/splash_tiled/access_control/inspect.py @@ -0,0 +1,256 @@ +from __future__ import annotations + +import sqlite3 +from pathlib import Path +from typing import Annotated, Optional + +import typer + +app = typer.Typer( + help="Query the ESAF database.", + add_completion=False, +) + +_DB_OPTION = typer.Option( + Path("tags/esafs.db"), + "--db-path", + help="Path to the ESAF SQLite database.", +) + +_COMPILED_DB_OPTION = typer.Option( + Path("tags/compiled_tags.db"), + "--compiled-db", + help="Path to the compiled tags SQLite database.", +) + + +def _connect(db_path: Path) -> sqlite3.Connection: + if not db_path.exists(): + typer.echo(f"Database not found: {db_path}", err=True) + raise typer.Exit(1) + return sqlite3.connect(db_path) + + +@app.command("user-proposals") +def user_proposals( + orcid: Annotated[str, typer.Argument(help="User ORCID.")], + db_path: Path = _DB_OPTION, +) -> None: + """List proposal groups a user belongs to.""" + with _connect(db_path) as conn: + rows = conn.execute( + """ + SELECT e.esaf_friendly_id, e.beamline_name, eu.role + FROM esaf_user eu + JOIN user u ON u.user_key = eu.user_key + JOIN esaf e ON e.esaf_id = eu.esaf_id + WHERE u.orcid = ? + ORDER BY e.beamline_name, e.esaf_friendly_id, eu.role + """, + (orcid,), + ).fetchall() + if not rows: + typer.echo(f"No proposals found for {orcid}") + return + typer.echo(f"{'ESAF':<20} {'BEAMLINE':<12} ROLE") + typer.echo("-" * 45) + for esaf_id, beamline, role in rows: + typer.echo(f"{esaf_id:<20} {beamline:<12} {role}") + + +@app.command("user-beamlines") +def user_beamlines( + orcid: Annotated[str, typer.Argument(help="User ORCID.")], + db_path: Path = _DB_OPTION, +) -> None: + """List beamline staff groups a user belongs to.""" + with _connect(db_path) as conn: + name_row = conn.execute( + "SELECT name FROM user WHERE orcid = ?", (orcid,) + ).fetchone() + rows = conn.execute( + "SELECT beamline_name FROM beamline_staff_user WHERE user_name = ? ORDER BY beamline_name", + (orcid,), + ).fetchall() + if not rows: + typer.echo(f"No beamline staff groups found for {orcid}") + return + label = name_row[0] if name_row and name_row[0] else orcid + typer.echo(f"{label} ({orcid})") + typer.echo("-" * 40) + for (beamline,) in rows: + typer.echo(beamline) + + +def _esaf_where( + beamline: Optional[str], proposal: Optional[str] +) -> tuple[str, list[str], str]: + clauses = ["esaf_friendly_id IS NOT NULL"] + params: list[str] = [] + if beamline: + clauses.append("beamline_name = ?") + params.append(beamline) + if proposal: + clauses.append("esaf_friendly_id LIKE ?") + params.append(f"%{proposal}%") + order = "esaf_friendly_id" if beamline else "beamline_name, esaf_friendly_id" + return " AND ".join(clauses), params, order + + +@app.command("proposals") +def proposals( + beamline: Optional[str] = typer.Option( + None, "--beamline", help="Filter by exact beamline name." + ), + proposal: Optional[str] = typer.Option( + None, "--proposal", help="Filter by proposal ID substring (case-insensitive)." + ), + db_path: Path = _DB_OPTION, +) -> None: + """List distinct proposals, with optional filters.""" + where, params, order = _esaf_where(beamline, proposal) + with _connect(db_path) as conn: + rows = conn.execute( + f"SELECT DISTINCT esaf_friendly_id, beamline_name, status FROM esaf WHERE {where} ORDER BY {order}", + params, + ).fetchall() + if not rows: + typer.echo("No proposals found.") + return + typer.echo(f"{'ESAF':<20} {'BEAMLINE':<12} STATUS") + typer.echo("-" * 45) + for esaf_id, bl, status in rows: + typer.echo(f"{esaf_id:<20} {bl:<12} {status or ''}") + + +@app.command("esaf") +def esaf( + beamline: Optional[str] = typer.Option( + None, "--beamline", help="Filter by exact beamline name." + ), + proposal: Optional[str] = typer.Option( + None, "--proposal", help="Filter by proposal ID substring (case-insensitive)." + ), + db_path: Path = _DB_OPTION, +) -> None: + """List ESAFs with title, with optional filters.""" + where, params, order = _esaf_where(beamline, proposal) + with _connect(db_path) as conn: + rows = conn.execute( + f"SELECT DISTINCT esaf_friendly_id, beamline_name, status, title FROM esaf WHERE {where} ORDER BY {order}", + params, + ).fetchall() + if not rows: + typer.echo("No ESAFs found.") + return + typer.echo(f"{'ESAF':<20} {'BEAMLINE':<12} {'STATUS':<12} TITLE") + typer.echo("-" * 80) + for esaf_id, bl, status, title in rows: + title_col = (title or "")[:36] + typer.echo(f"{esaf_id:<20} {bl:<12} {(status or ''):<12} {title_col}") + + +@app.command("beamlines") +def beamlines( + db_path: Path = _DB_OPTION, +) -> None: + """List distinct beamline groups.""" + with _connect(db_path) as conn: + rows = conn.execute( + "SELECT name, esaf_count FROM beamline ORDER BY name" + ).fetchall() + if not rows: + typer.echo("No beamlines found.") + return + typer.echo(f"{'BEAMLINE':<16} ESAFS") + typer.echo("-" * 24) + for name, count in rows: + typer.echo(f"{name:<16} {count}") + + +@app.command("proposal-members") +def proposal_members( + esaf_friendly_id: Annotated[ + str, typer.Argument(help="ESAF friendly ID (e.g. ALS-13362-001).") + ], + db_path: Path = _DB_OPTION, +) -> None: + """List members of a proposal group.""" + with _connect(db_path) as conn: + rows = conn.execute( + """ + SELECT u.orcid, u.name, eu.role + FROM esaf_user eu + JOIN user u ON u.user_key = eu.user_key + JOIN esaf e ON e.esaf_id = eu.esaf_id + WHERE e.esaf_friendly_id = ? + ORDER BY eu.role, u.orcid + """, + (esaf_friendly_id,), + ).fetchall() + if not rows: + typer.echo(f"No members found for {esaf_friendly_id}") + return + typer.echo(f"{'ORCID':<22} {'NAME':<28} ROLE") + typer.echo("-" * 60) + for orcid, name, role in rows: + typer.echo(f"{orcid or '':<22} {(name or ''):<28} {role}") + + +@app.command("beamline-members") +def beamline_members( + beamline: Annotated[str, typer.Argument(help="Beamline name (e.g. 12.3.2).")], + db_path: Path = _DB_OPTION, +) -> None: + """List staff members of a beamline group.""" + with _connect(db_path) as conn: + rows = conn.execute( + """ + SELECT bsu.user_name, u.name + FROM beamline_staff_user bsu + LEFT JOIN user u ON u.orcid = bsu.user_name + WHERE bsu.beamline_name = ? + ORDER BY u.name, bsu.user_name + """, + (beamline,), + ).fetchall() + if not rows: + typer.echo(f"No staff found for beamline {beamline}") + return + typer.echo(f"{'ORCID':<22} NAME") + typer.echo("-" * 50) + for orcid, name in rows: + typer.echo(f"{orcid:<22} {name or ''}") + + +@app.command("tags") +def tags( + orcid: Annotated[str, typer.Argument(help="User ORCID.")], + compiled_db: Path = _COMPILED_DB_OPTION, +) -> None: + """List all tags a user has access to.""" + with _connect(compiled_db) as conn: + rows = conn.execute( + """ + SELECT DISTINCT t.name + FROM tags t + JOIN tags_users_scopes tus ON tus.tag_id = t.id + JOIN users u ON u.id = tus.user_id + WHERE u.name = ? + ORDER BY t.name + """, + (orcid,), + ).fetchall() + if not rows: + typer.echo(f"No tags found for {orcid}") + return + for (tag,) in rows: + typer.echo(tag) + + +def main() -> None: + app() + + +if __name__ == "__main__": + main() diff --git a/src/splash_tiled/access_control/user_office.py b/src/splash_tiled/access_control/user_office.py index a225683..653d5c6 100644 --- a/src/splash_tiled/access_control/user_office.py +++ b/src/splash_tiled/access_control/user_office.py @@ -88,18 +88,6 @@ def normalize_text(value: Any) -> str | None: return text or None -def normalize_email(value: Any) -> str | None: - text = normalize_text(value) - return text.lower() if text else None - - -def normalize_lbnl_id(value: Any) -> str | None: - text = normalize_text(value) - if text and text.lower() != "unknown": - return text - return None - - def normalize_int(value: Any) -> int | None: if value in (None, ""): return None @@ -107,17 +95,9 @@ def normalize_int(value: Any) -> int | None: def user_key(person: dict[str, Any]) -> str: - alsid = normalize_int(person.get("Alsid")) - if alsid is not None: - return f"alsid:{alsid}" - - email = normalize_email(person.get("Email")) - if email: - return f"email:{email}" - - lbnl_id = normalize_lbnl_id(person.get("LbnlId")) - if lbnl_id: - return f"lbnl:{lbnl_id}" + orcid = normalize_text(person.get("Orcid")) + if orcid is not None: + return f"orcid:{orcid}" name = normalize_text(person.get("Name")) if name: @@ -138,9 +118,6 @@ def ensure_schema(connection: sqlite3.Connection) -> None: CREATE TABLE IF NOT EXISTS user ( user_key TEXT PRIMARY KEY, - alsid INTEGER, - email TEXT, - lbnl_id TEXT, name TEXT, orcid TEXT ); @@ -160,7 +137,6 @@ def ensure_schema(connection: sqlite3.Connection) -> None: is_export_controlled TEXT, materials_json TEXT NOT NULL, scheduled_events_json TEXT NOT NULL, - raw_json TEXT NOT NULL, updated_at TEXT NOT NULL, FOREIGN KEY (beamline_name) REFERENCES beamline(name), FOREIGN KEY (pi_user_key) REFERENCES user(user_key), @@ -307,11 +283,11 @@ def fetch_beamline_staff( def get_beamline_staff_groups( staff_data: list[dict[str, Any]], ) -> dict[str, list[str]]: - """Build a mapping of beamline name -> list of member emails. + """Build a mapping of beamline name -> list of member ORCIDs. Every person who appears in a beamline's Staff list is included as a - member of that beamline's group, identified by their (normalised) email - address. Entries without a usable email are skipped. + member of that beamline's group, identified by their ORCID. + Entries without a usable ORCID are skipped. """ groups: dict[str, list[str]] = {} for entry in staff_data: @@ -320,13 +296,34 @@ def get_beamline_staff_groups( continue members: set[str] = set() for person in entry.get("Staff") or []: - email = normalize_email(person.get("Email")) - if email: - members.add(email) + orcid = normalize_text(person.get("ORCID")) + if orcid: + members.add(orcid) groups[beamline_name] = sorted(members) return groups +def upsert_staff_users( + connection: sqlite3.Connection, + staff_data: list[dict[str, Any]], +) -> None: + for entry in staff_data: + for person in entry.get("Staff") or []: + orcid = normalize_text(person.get("ORCID")) + if not orcid: + continue + connection.execute( + """ + INSERT INTO user (user_key, name, orcid) + VALUES (?, ?, ?) + ON CONFLICT(user_key) DO UPDATE SET + name = excluded.name, + orcid = excluded.orcid + """, + (f"orcid:{orcid}", normalize_text(person.get("Name")), orcid), + ) + + def sync_beamline_staff_groups( connection: sqlite3.Connection, groups: dict[str, list[str]], @@ -427,20 +424,14 @@ def upsert_user( is_new = not user_exists(connection, key) connection.execute( """ - INSERT INTO user (user_key, alsid, email, lbnl_id, name, orcid) - VALUES (?, ?, ?, ?, ?, ?) + INSERT INTO user (user_key, name, orcid) + VALUES (?, ?, ?) ON CONFLICT(user_key) DO UPDATE SET - alsid = excluded.alsid, - email = excluded.email, - lbnl_id = excluded.lbnl_id, name = excluded.name, orcid = excluded.orcid """, ( key, - normalize_int(person.get("Alsid")), - normalize_email(person.get("Email")), - normalize_lbnl_id(person.get("LbnlId")), normalize_text(person.get("Name")), normalize_text(person.get("Orcid")), ), @@ -499,10 +490,9 @@ def sync_esaf( is_export_controlled, materials_json, scheduled_events_json, - raw_json, updated_at ) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ON CONFLICT(esaf_id) DO UPDATE SET beamline_name = excluded.beamline_name, esaf_friendly_id = excluded.esaf_friendly_id, @@ -517,7 +507,6 @@ def sync_esaf( is_export_controlled = excluded.is_export_controlled, materials_json = excluded.materials_json, scheduled_events_json = excluded.scheduled_events_json, - raw_json = excluded.raw_json, updated_at = excluded.updated_at """, ( @@ -535,7 +524,6 @@ def sync_esaf( normalize_text(esaf.get("IsExportControlled")), json.dumps(esaf.get("Materials") or []), json.dumps(esaf.get("ScheduledEvents") or []), - json.dumps(esaf, sort_keys=True), synced_at, ), ) @@ -609,6 +597,7 @@ def run( staff_data = fetch_beamline_staff(client) staff_groups = get_beamline_staff_groups(staff_data) sync_beamline_staff_groups(connection, staff_groups) + upsert_staff_users(connection, staff_data) typer.echo( "Stored beamline staff groups " f"for {len(staff_groups)} beamlines" ) diff --git a/tests/test_user_office.py b/tests/test_user_office.py index 0abdb18..0ad5e6e 100644 --- a/tests/test_user_office.py +++ b/tests/test_user_office.py @@ -1,4 +1,5 @@ import sqlite3 +from typing import Any from splash_tiled.access_control.user_office import ( ensure_schema, @@ -11,15 +12,22 @@ ) -def test_user_key_falls_back_to_email() -> None: +def test_user_key_uses_orcid() -> None: person = { - "Alsid": None, - "Email": "Scientist@LBL.GOV ", - "LbnlId": "Unknown", "Name": "Scientist Name", + "Orcid": "0000-0001-2345-6789", } - assert user_key(person) == "email:scientist@lbl.gov" + assert user_key(person) == "orcid:0000-0001-2345-6789" + + +def test_user_key_falls_back_to_name() -> None: + person = { + "Name": "Scientist Name", + "Orcid": None, + } + + assert user_key(person) == "name:scientist name" def test_sync_beamline_persists_normalized_records() -> None: @@ -89,7 +97,11 @@ def test_sync_beamline_persists_normalized_records() -> None: "SELECT beamline_name, pi_user_key, exp_lead_user_key " "FROM esaf WHERE esaf_id = 36017" ).fetchone() - assert esaf_row == ("12.3.2", "alsid:11525", "alsid:83512") + assert esaf_row == ( + "12.3.2", + "orcid:0000-0002-3979-8844", + "orcid:0000-0003-2335-7806", + ) user_count = connection.execute("SELECT COUNT(*) FROM user").fetchone()[0] assert user_count == 2 @@ -99,10 +111,10 @@ def test_sync_beamline_persists_normalized_records() -> None: "ORDER BY role, user_key" ).fetchall() assert role_rows == [ - ("alsid:83512", "exp_lead"), - ("alsid:11525", "participant"), - ("alsid:83512", "participant"), - ("alsid:11525", "pi"), + ("orcid:0000-0003-2335-7806", "exp_lead"), + ("orcid:0000-0002-3979-8844", "participant"), + ("orcid:0000-0003-2335-7806", "participant"), + ("orcid:0000-0002-3979-8844", "pi"), ] @@ -169,21 +181,21 @@ def test_get_esaf_orcid_map_returns_distinct_orcids_per_esaf() -> None: } -def test_sync_beamline_staff_groups_persists_email_members() -> None: - staff_payload = [ +def test_sync_beamline_staff_groups_persists_orcid_members() -> None: + staff_payload: list[dict[str, Any]] = [ { "Beamline": "9.3.2", "Staff": [ - {"Email": "ejcrumlin@lbl.gov"}, - {"Email": "snemsak@lbl.gov"}, - {"Email": "EJCRUMLIN@LBL.GOV"}, - {"Email": " "}, + {"ORCID": "0000-0001-2345-6789"}, + {"ORCID": "0000-0002-3456-7890"}, + {"ORCID": "0000-0001-2345-6789"}, # duplicate + {"ORCID": None}, # no orcid — skipped ], }, { "Beamline": "12.3.2", "Staff": [ - {"Email": "mblum@lbl.gov"}, + {"ORCID": "0000-0003-4567-8901"}, ], }, ] @@ -195,6 +207,6 @@ def test_sync_beamline_staff_groups_persists_email_members() -> None: sync_beamline_staff_groups(connection, groups) assert get_beamline_staff_group_map(connection) == { - "12.3.2": ["mblum@lbl.gov"], - "9.3.2": ["ejcrumlin@lbl.gov", "snemsak@lbl.gov"], + "12.3.2": ["0000-0003-4567-8901"], + "9.3.2": ["0000-0001-2345-6789", "0000-0002-3456-7890"], } From 9385562dd9c66f32e4a043ff91c8b3d825c362cd Mon Sep 17 00:00:00 2001 From: Dylan McReynolds Date: Wed, 29 Apr 2026 13:32:24 -0700 Subject: [PATCH 13/31] added cli for inspecting tags --- docker-compose.yaml | 53 +++++++++++----------- src/splash_tiled/access_control/inspect.py | 20 ++++++-- tiled_config/config.yaml | 25 +++++++--- tiled_config/config_compose.yaml | 31 ------------- 4 files changed, 62 insertions(+), 67 deletions(-) delete mode 100644 tiled_config/config_compose.yaml diff --git a/docker-compose.yaml b/docker-compose.yaml index a67d3d0..c2b5825 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -66,33 +66,34 @@ services: entrypoint: ["access"] volumes: - ./tags:/app/tags:rw,Z + - ./data:/app/data:rw,Z profiles: - access restart: "no" - seed-data: - build: - context: . - dockerfile: Containerfile - security_opt: - - label=disable - userns_mode: keep-id - user: "${UID:-1000}:${GID:-1000}" - security_opt: - - label=disable - command: - - python - - /app/scripts/seed_dev_catalog.py - - --uri - - http://tiled:8000 - - --wait-seconds - - "90" - volumes: - - ./data:/app/data:rw,Z - - ./tags:/app/tags:ro,Z - depends_on: - - tiled - environment: - ALICE_PASSWORD: ${ALICE_PASSWORD} - COMPILED_TAGS_DB: /app/data/compiled_tags.db - restart: "no" + # seed-data: + # build: + # context: . + # dockerfile: Containerfile + # security_opt: + # - label=disable + # userns_mode: keep-id + # user: "${UID:-1000}:${GID:-1000}" + # security_opt: + # - label=disable + # command: + # - python + # - /app/scripts/seed_dev_catalog.py + # - --uri + # - http://tiled:8000 + # - --wait-seconds + # - "90" + # volumes: + # - ./data:/app/data:rw,Z + # - ./tags:/app/tags:ro,Z + # depends_on: + # - tiled + # environment: + # ALICE_PASSWORD: ${ALICE_PASSWORD} + # COMPILED_TAGS_DB: /app/data/compiled_tags.db + # restart: "no" diff --git a/src/splash_tiled/access_control/inspect.py b/src/splash_tiled/access_control/inspect.py index 9b689db..6e3dfba 100644 --- a/src/splash_tiled/access_control/inspect.py +++ b/src/splash_tiled/access_control/inspect.py @@ -228,15 +228,23 @@ def tags( orcid: Annotated[str, typer.Argument(help="User ORCID.")], compiled_db: Path = _COMPILED_DB_OPTION, ) -> None: - """List all tags a user has access to.""" + """List all tags a user has access to, with their scopes.""" with _connect(compiled_db) as conn: rows = conn.execute( """ - SELECT DISTINCT t.name + SELECT t.name, + t.is_public, + GROUP_CONCAT(s.name, ', ') AS scopes, + EXISTS ( + SELECT 1 FROM tag_owners towner + WHERE towner.tag_id = t.id AND towner.user_id = u.id + ) AS is_owner FROM tags t JOIN tags_users_scopes tus ON tus.tag_id = t.id JOIN users u ON u.id = tus.user_id + JOIN scopes s ON s.id = tus.scope_id WHERE u.name = ? + GROUP BY t.name ORDER BY t.name """, (orcid,), @@ -244,8 +252,12 @@ def tags( if not rows: typer.echo(f"No tags found for {orcid}") return - for (tag,) in rows: - typer.echo(tag) + typer.echo(f"{'TAG':<40} {'PUBLIC':<8} {'OWNER':<8} SCOPES") + typer.echo("-" * 90) + for tag, is_public, scopes, is_owner in rows: + typer.echo( + f"{tag:<40} {'yes' if is_public else 'no':<8} {'yes' if is_owner else 'no':<8} {scopes or ''}" + ) def main() -> None: diff --git a/tiled_config/config.yaml b/tiled_config/config.yaml index 1e0c4c4..1b1efb7 100644 --- a/tiled_config/config.yaml +++ b/tiled_config/config.yaml @@ -1,24 +1,31 @@ authentication: providers: - - provider: example + - provider: local authenticator: tiled.authenticators:DictionaryAuthenticator args: users_to_passwords: alice: ${ALICE_PASSWORD} bob: ${BOB_PASSWORD} confirmation_message: "You have logged in as {id}." + + - provider: keycloak_oidc + authenticator: tiled.authenticators:OIDCAuthenticator + args: + audience: account + client_id: ${OAUTH2_CLIENT_ID} + client_secret: ${OAUTH2_CLIENT_SECRET} + well_known_uri: "https://${KEYCLOAK_FQDN}/realms/${KEYCLOAK_REALM}/.well-known/openid-configuration" + confirmation_message: "You have logged in with OIDC as {id}." + tiled_admins: - - provider: example + - provider: local id: alice -file_extensions: - edf: application/x-edf - gb: application/x-gb access_control: access_policy: "tiled.access_control.access_policies:TagBasedAccessPolicy" args: - provider: "example" + provider: "keycloak_oidc" scopes: - "read:metadata" - "read:data" @@ -32,6 +39,12 @@ access_control: uri: "/app/data/compiled_tags.db" access_tags_parser: "tiled.access_control.access_tags:AccessTagsParser" + +file_extensions: + edf: application/x-edf + gb: application/x-gb + + trees: - path: / tree: catalog diff --git a/tiled_config/config_compose.yaml b/tiled_config/config_compose.yaml deleted file mode 100644 index 49a9149..0000000 --- a/tiled_config/config_compose.yaml +++ /dev/null @@ -1,31 +0,0 @@ -file_extensions: - edf: application/x-edf - gb: application/x-gb - -access_control: - access_policy: "tiled.access_control.access_policies:TagBasedAccessPolicy" - args: - provider: "toy" - scopes: - - "read:metadata" - - "read:data" - - "write:metadata" - - "write:data" - - "delete:revision" - - "delete:node" - - "create:node" - - "register" - tags_db: - uri: "/app/data/compiled_tags.db" - access_tags_parser: "tiled.access_control.access_tags:AccessTagsParser" - -trees: - - path: / - tree: tiled.catalog:from_uri - args: - uri: /app/data/catalog.db - readable_storage: [/app/data] - init_if_not_exists: true - adapters_by_mimetype: - application/x-edf: splash_tiled.bl733.adapters.edf:EDFAdapter - application/x-gb: splash_tiled.bl733.adapters.gb:GeneralBinaryPilatus2MAdapter From 02aca36cf8264247e30ba7d9d036f2694643a87b Mon Sep 17 00:00:00 2001 From: Dylan McReynolds Date: Wed, 29 Apr 2026 13:47:45 -0700 Subject: [PATCH 14/31] add query for user-esafs --- Containerfile | 4 +-- src/splash_tiled/access_control/inspect.py | 30 ++++++++++++++++++++++ tiled_config/config.yaml | 26 +++++++++---------- 3 files changed, 45 insertions(+), 15 deletions(-) diff --git a/Containerfile b/Containerfile index 426acf9..89dff29 100755 --- a/Containerfile +++ b/Containerfile @@ -12,5 +12,5 @@ COPY --chown=app:app pyproject.toml README.md ./ COPY --chown=app:app src/ ./src/ RUN uv pip install --python /app/bin/python --no-cache ".[bl733]" COPY --chown=app:app scripts/ ./scripts/ -COPY --chown=app:app src/splash_tiled/bl733/adapters/edf.py /tiled_deploy/config/custom/edf.py -COPY --chown=app:app src/splash_tiled/bl733/adapters/gb.py /tiled_deploy/config/custom/gb.py +# COPY --chown=app:app src/splash_tiled/bl733/adapters/edf.py /tiled_deploy/config/custom/edf.py +# COPY --chown=app:app src/splash_tiled/bl733/adapters/gb.py /tiled_deploy/config/custom/gb.py diff --git a/src/splash_tiled/access_control/inspect.py b/src/splash_tiled/access_control/inspect.py index 6e3dfba..25f8618 100644 --- a/src/splash_tiled/access_control/inspect.py +++ b/src/splash_tiled/access_control/inspect.py @@ -31,6 +31,36 @@ def _connect(db_path: Path) -> sqlite3.Connection: return sqlite3.connect(db_path) +@app.command("user-esafs") +def user_esafs( + orcid: Annotated[str, typer.Argument(help="User ORCID.")], + db_path: Path = _DB_OPTION, +) -> None: + """List ESAFs a user belongs to, with beamline, role, status, and title.""" + with _connect(db_path) as conn: + rows = conn.execute( + """ + SELECT e.esaf_friendly_id, e.beamline_name, eu.role, e.status, e.title + FROM esaf_user eu + JOIN user u ON u.user_key = eu.user_key + JOIN esaf e ON e.esaf_id = eu.esaf_id + WHERE u.orcid = ? + ORDER BY e.beamline_name, e.esaf_friendly_id, eu.role + """, + (orcid,), + ).fetchall() + if not rows: + typer.echo(f"No ESAFs found for {orcid}") + return + typer.echo(f"{'ESAF':<20} {'BEAMLINE':<12} {'ROLE':<16} {'STATUS':<12} TITLE") + typer.echo("-" * 90) + for esaf_id, beamline, role, status, title in rows: + title_col = (title or "")[:28] + typer.echo( + f"{esaf_id or '':<20} {beamline:<12} {role:<16} {(status or ''):<12} {title_col}" + ) + + @app.command("user-proposals") def user_proposals( orcid: Annotated[str, typer.Argument(help="User ORCID.")], diff --git a/tiled_config/config.yaml b/tiled_config/config.yaml index 1b1efb7..01776e1 100644 --- a/tiled_config/config.yaml +++ b/tiled_config/config.yaml @@ -1,12 +1,12 @@ authentication: providers: - - provider: local - authenticator: tiled.authenticators:DictionaryAuthenticator - args: - users_to_passwords: - alice: ${ALICE_PASSWORD} - bob: ${BOB_PASSWORD} - confirmation_message: "You have logged in as {id}." + # - provider: local + # authenticator: tiled.authenticators:DictionaryAuthenticator + # args: + # users_to_passwords: + # alice: ${ALICE_PASSWORD} + # bob: ${BOB_PASSWORD} + # confirmation_message: "You have logged in as {id}." - provider: keycloak_oidc authenticator: tiled.authenticators:OIDCAuthenticator @@ -40,9 +40,9 @@ access_control: access_tags_parser: "tiled.access_control.access_tags:AccessTagsParser" -file_extensions: - edf: application/x-edf - gb: application/x-gb +# file_extensions: +# edf: application/x-edf +# gb: application/x-gb trees: @@ -53,6 +53,6 @@ trees: readable_storage: [/app/data] writable_storage: /app/data init_if_not_exists: true - adapters_by_mimetype: - application/x-edf: splash_tiled.bl733.adapters.edf:EDFAdapter - application/x-gb: splash_tiled.bl733.adapters.gb:GeneralBinaryPilatus2MAdapter + # adapters_by_mimetype: + # application/x-edf: splash_tiled.bl733.adapters.edf:EDFAdapter + # application/x-gb: splash_tiled.bl733.adapters.gb:GeneralBinaryPilatus2MAdapter From ca66881f4ba8190d18d869546d53b52e9cfac6c7 Mon Sep 17 00:00:00 2001 From: Dylan McReynolds Date: Wed, 29 Apr 2026 15:08:27 -0700 Subject: [PATCH 15/31] more refinement --- Containerfile | 4 +- src/splash_tiled/access_control/cli.py | 22 +- src/splash_tiled/access_control/tiled_tags.py | 23 +- .../access_control/user_office.py | 226 +++++++++++++++++- 4 files changed, 266 insertions(+), 9 deletions(-) diff --git a/Containerfile b/Containerfile index 89dff29..426acf9 100755 --- a/Containerfile +++ b/Containerfile @@ -12,5 +12,5 @@ COPY --chown=app:app pyproject.toml README.md ./ COPY --chown=app:app src/ ./src/ RUN uv pip install --python /app/bin/python --no-cache ".[bl733]" COPY --chown=app:app scripts/ ./scripts/ -# COPY --chown=app:app src/splash_tiled/bl733/adapters/edf.py /tiled_deploy/config/custom/edf.py -# COPY --chown=app:app src/splash_tiled/bl733/adapters/gb.py /tiled_deploy/config/custom/gb.py +COPY --chown=app:app src/splash_tiled/bl733/adapters/edf.py /tiled_deploy/config/custom/edf.py +COPY --chown=app:app src/splash_tiled/bl733/adapters/gb.py /tiled_deploy/config/custom/gb.py diff --git a/src/splash_tiled/access_control/cli.py b/src/splash_tiled/access_control/cli.py index 64fbb3f..413c701 100644 --- a/src/splash_tiled/access_control/cli.py +++ b/src/splash_tiled/access_control/cli.py @@ -13,6 +13,7 @@ from splash_tiled.access_control.user_office import ( ALL_BEAMLINES, DEFAULT_API_URL, + DEFAULT_PROPOSALS_BY_BL_URL, run, ) @@ -43,6 +44,11 @@ help="Tag definitions stub YAML. Defaults to the package stub.", ) _API_URL = typer.Option(DEFAULT_API_URL, "--api-url", help="ESAF API base URL.") +_PROPOSALS_BY_BL_URL = typer.Option( + DEFAULT_PROPOSALS_BY_BL_URL, + "--proposals-by-bl-url", + help="Proposals-by-beamline API base URL.", +) _TIMEOUT = typer.Option(30.0, "--timeout", help="HTTP timeout in seconds.") @@ -54,11 +60,18 @@ def _resolve_tag_defs(tag_definitions: Optional[Path]) -> Path: def compile_useroffice( esaf_db: Path = _ESAF_DB, api_url: str = _API_URL, + proposals_by_bl_url: str = _PROPOSALS_BY_BL_URL, timeout: float = _TIMEOUT, ) -> None: """Fetch all beamlines and staff from the User Office APIs into the ESAF database.""" raise typer.Exit( - run(beamlines=ALL_BEAMLINES, db_path=esaf_db, api_url=api_url, timeout=timeout) + run( + beamlines=ALL_BEAMLINES, + db_path=esaf_db, + api_url=api_url, + proposals_by_bl_url=proposals_by_bl_url, + timeout=timeout, + ) ) @@ -85,11 +98,16 @@ def compile_all( generated_yaml: Path = _GENERATED_YAML, tag_definitions: Optional[Path] = _TAG_DEFS, api_url: str = _API_URL, + proposals_by_bl_url: str = _PROPOSALS_BY_BL_URL, timeout: float = _TIMEOUT, ) -> None: """Fetch from User Office APIs then compile tags.""" exit_code = run( - beamlines=ALL_BEAMLINES, db_path=esaf_db, api_url=api_url, timeout=timeout + beamlines=ALL_BEAMLINES, + db_path=esaf_db, + api_url=api_url, + proposals_by_bl_url=proposals_by_bl_url, + timeout=timeout, ) if exit_code != 0: raise typer.Exit(exit_code) diff --git a/src/splash_tiled/access_control/tiled_tags.py b/src/splash_tiled/access_control/tiled_tags.py index c7b5e1e..3057ae0 100644 --- a/src/splash_tiled/access_control/tiled_tags.py +++ b/src/splash_tiled/access_control/tiled_tags.py @@ -10,8 +10,10 @@ from splash_tiled.access_control.user_office import ( get_beamline_staff_group_map, + get_beamlines_by_proposal, get_esaf_friendly_ids_by_beamline, get_esaf_orcid_map, + get_proposal_orcid_map, ) app = typer.Typer(add_completion=False) @@ -36,6 +38,7 @@ def get_default_generated_tag_definitions_path() -> Path: def load_esaf_groups(esaf_db_path: Path) -> dict[str, list[str]]: with sqlite3.connect(esaf_db_path) as connection: groups = get_esaf_orcid_map(connection) + groups.update(get_proposal_orcid_map(connection)) beamline_staff_groups = get_beamline_staff_group_map(connection) for beamline_name in get_esaf_friendly_ids_by_beamline(connection): groups[f"{beamline_name}-staff"] = beamline_staff_groups.get( @@ -65,12 +68,14 @@ def build_generated_tag_definitions( with sqlite3.connect(esaf_db_path) as connection: esaf_ids_by_beamline = get_esaf_friendly_ids_by_beamline(connection) beamline_staff_groups = get_beamline_staff_group_map(connection) + beamlines_by_proposal = get_beamlines_by_proposal(connection) esaf_friendly_id_set = { esaf_friendly_id for esaf_friendly_ids in esaf_ids_by_beamline.values() for esaf_friendly_id in esaf_friendly_ids } + proposal_friendly_id_set = set(beamlines_by_proposal.keys()) template_tags = template.get("tags") or {} if not isinstance(template_tags, dict): @@ -82,7 +87,7 @@ def build_generated_tag_definitions( generated_tags = { name: value for name, value in template_tags.items() - if name not in esaf_friendly_id_set + if name not in esaf_friendly_id_set and name not in proposal_friendly_id_set } for beamline_name, esaf_friendly_ids in esaf_ids_by_beamline.items(): @@ -123,6 +128,20 @@ def build_generated_tag_definitions( ], } + for proposal_friendly_id, beamline_names in beamlines_by_proposal.items(): + proposal_groups = [{"name": proposal_friendly_id, "role": "facility_user"}] + proposal_auto_tags = [{"name": "data_admin"}] + for beamline_name in beamline_names: + beamline_staff_group_name = f"{beamline_name}-staff" + proposal_groups.append( + {"name": beamline_staff_group_name, "role": "facility_user"} + ) + proposal_auto_tags.append({"name": beamline_staff_group_name}) + generated_tags[proposal_friendly_id] = { + "groups": proposal_groups, + "auto_tags": proposal_auto_tags, + } + return { "roles": template.get("roles") or {}, "tags": generated_tags, @@ -186,7 +205,7 @@ def build_group_parser(esaf_db_path: Path): groups = load_esaf_groups(esaf_db_path) def group_parser(groupname): - return groups[groupname] + return groups.get(groupname, []) return group_parser diff --git a/src/splash_tiled/access_control/user_office.py b/src/splash_tiled/access_control/user_office.py index 653d5c6..ca15db2 100644 --- a/src/splash_tiled/access_control/user_office.py +++ b/src/splash_tiled/access_control/user_office.py @@ -1,8 +1,10 @@ from __future__ import annotations import json +import re import sqlite3 from collections.abc import Iterable +from concurrent.futures import ThreadPoolExecutor, as_completed from datetime import UTC, datetime from enum import StrEnum from pathlib import Path @@ -15,6 +17,7 @@ DEFAULT_API_URL = "https://als-esaf.als.lbl.gov/EsafInformation/GetEsaf" DEFAULT_STAFF_API_URL = "https://alsusweb.lbl.gov/GetStaffByBeamline/" +DEFAULT_PROPOSALS_BY_BL_URL = "https://alsusweb.lbl.gov/ALSUserProposalsByBL/" class Beamline(StrEnum): @@ -159,6 +162,23 @@ def ensure_schema(connection: sqlite3.Connection) -> None: PRIMARY KEY (beamline_name, user_name) ); + CREATE TABLE IF NOT EXISTS proposal ( + proposal_friendly_id TEXT PRIMARY KEY, + title TEXT, + abstract TEXT, + updated_at TEXT NOT NULL + ); + + CREATE TABLE IF NOT EXISTS proposal_user ( + proposal_friendly_id TEXT NOT NULL, + user_key TEXT NOT NULL, + role TEXT NOT NULL, + PRIMARY KEY (proposal_friendly_id, user_key, role), + FOREIGN KEY (proposal_friendly_id) REFERENCES proposal(proposal_friendly_id) ON DELETE CASCADE, + FOREIGN KEY (user_key) REFERENCES user(user_key), + CHECK (role IN ('pi', 'exp_lead')) + ); + CREATE INDEX IF NOT EXISTS idx_esaf_beamline_name ON esaf (beamline_name); @@ -222,9 +242,11 @@ def collect_esaf_user_keys(esaf: dict[str, Any]) -> set[str]: return user_keys -def format_report_table(rows: list[dict[str, str]]) -> str: - headers = ["Beamline", "ESAFs", "New ESAFs", "Users", "New Users", "Error"] - keys = ["beamline", "esafs", "new_esafs", "users", "new_users", "error"] +def format_table( + rows: list[dict[str, str]], + headers: list[str], + keys: list[str], +) -> str: widths = { header: max( len(header), @@ -250,6 +272,22 @@ def format_row(values: list[str]) -> str: return "\n".join(lines) +def format_report_table(rows: list[dict[str, str]]) -> str: + return format_table( + rows, + headers=["Beamline", "ESAFs", "New ESAFs", "Users", "New Users", "Error"], + keys=["beamline", "esafs", "new_esafs", "users", "new_users", "error"], + ) + + +def format_proposals_report_table(rows: list[dict[str, str]]) -> str: + return format_table( + rows, + headers=["Beamline", "Proposals", "New Proposals", "New Users", "Error"], + keys=["beamline", "proposals", "new_proposals", "new_users", "error"], + ) + + def print_report(rows: list[dict[str, str]], elapsed_seconds: float) -> None: if not rows: return @@ -259,6 +297,13 @@ def print_report(rows: list[dict[str, str]], elapsed_seconds: float) -> None: typer.echo(f"Total time: {elapsed_seconds:.2f} seconds") +def print_proposals_report(rows: list[dict[str, str]]) -> None: + if not rows: + return + typer.echo("\nProposal sync report:") + typer.echo(format_proposals_report_table(rows)) + + def fetch_beamline_staff( client: httpx.Client, api_url: str = DEFAULT_STAFF_API_URL, @@ -340,6 +385,129 @@ def sync_beamline_staff_groups( ) +_INVALID_ESCAPE_RE = re.compile(r'\\([^"\\/bfnrtu\n])') + + +def _fix_json_escapes(text: str) -> str: + """Replace invalid JSON escape sequences with escaped backslashes.""" + return _INVALID_ESCAPE_RE.sub(r"\\\\\1", text) + + +def fetch_proposals_by_beamline( + client: httpx.Client, + beamline: str, + api_url: str, +) -> list[dict[str, Any]]: + """Return all proposal records for a beamline.""" + response = client.get(api_url, params={"bl": beamline}, timeout=120.0) + response.raise_for_status() + try: + data = response.json() + except json.JSONDecodeError: + data = json.loads(_fix_json_escapes(response.text)) + return [p for p in (data.get("Proposals") or []) if p.get("ExpID")] + + +def sync_proposal( + connection: sqlite3.Connection, + proposal_data: dict[str, Any], + synced_at: str, +) -> bool: + proposal_friendly_id = normalize_text(proposal_data.get("ExpID")) + if not proposal_friendly_id: + raise ValueError("Proposal payload is missing ExpID") + + is_new = not connection.execute( + "SELECT 1 FROM proposal WHERE proposal_friendly_id = ?", (proposal_friendly_id,) + ).fetchone() + + connection.execute( + """ + INSERT INTO proposal (proposal_friendly_id, title, abstract, updated_at) + VALUES (?, ?, ?, ?) + ON CONFLICT(proposal_friendly_id) DO UPDATE SET + abstract = excluded.abstract, + updated_at = excluded.updated_at + """, + ( + proposal_friendly_id, + None, + normalize_text(proposal_data.get("Abstract")), + synced_at, + ), + ) + return is_new + + +def sync_proposals( + connection: sqlite3.Connection, + client: httpx.Client, + beamlines: list[str], + proposals_by_bl_url: str, + synced_at: str, +) -> tuple[int, int]: + beamline_proposals: dict[str, list[dict[str, Any]]] = {} + beamline_errors: dict[str, str] = {} + + with ThreadPoolExecutor(max_workers=10) as executor: + futures = { + executor.submit( + fetch_proposals_by_beamline, client, bl, proposals_by_bl_url + ): bl + for bl in beamlines + } + for future in as_completed(futures): + bl = futures[future] + try: + proposals = future.result() + beamline_proposals[bl] = proposals + typer.echo(f"Stored {len(proposals)} proposals for {bl}") + except httpx.HTTPStatusError as error: + if error.response.status_code != 404: + msg = format_http_error(error) + beamline_errors[bl] = msg + typer.echo(f"Error fetching proposals for {bl}: {msg}", err=True) + except (httpx.HTTPError, ValueError) as error: + beamline_errors[bl] = str(error) + typer.echo(f"Error fetching proposals for {bl}: {error}", err=True) + + # Deduplicate across beamlines, write to DB + seen: set[str] = set() + new_count = 0 + for proposals in beamline_proposals.values(): + for proposal_data in proposals: + pid = proposal_data.get("ExpID", "") + if pid in seen: + continue + seen.add(pid) + try: + if sync_proposal(connection, proposal_data, synced_at): + new_count += 1 + except ValueError as error: + typer.echo(f"Error syncing proposal {pid}: {error}", err=True) + + total = len(seen) + typer.echo( + f"Synced {total} proposals ({new_count} new) across {len(beamline_proposals)} beamlines" + ) + + report_rows = [] + for bl in sorted(beamlines): + proposals = beamline_proposals.get(bl, []) + report_rows.append( + { + "beamline": bl, + "proposals": str(len(proposals)), + "new_proposals": "", + "new_users": "", + "error": beamline_errors.get(bl, ""), + } + ) + print_proposals_report(report_rows) + + return total, new_count + + def get_beamline_staff_group_map( connection: sqlite3.Connection, ) -> dict[str, list[str]]: @@ -373,6 +541,47 @@ def get_esaf_orcid_map(connection: sqlite3.Connection) -> dict[str, list[str]]: return orcid_map +def get_proposal_orcid_map(connection: sqlite3.Connection) -> dict[str, list[str]]: + rows = connection.execute(""" + SELECT DISTINCT proposal_friendly_id, orcid FROM ( + SELECT pu.proposal_friendly_id, u.orcid + FROM proposal_user pu + JOIN user u ON u.user_key = pu.user_key + WHERE u.orcid IS NOT NULL + + UNION + + SELECT e.proposal_friendly_id, u.orcid + FROM esaf e + JOIN esaf_user eu ON eu.esaf_id = e.esaf_id + JOIN user u ON u.user_key = eu.user_key + WHERE e.proposal_friendly_id IS NOT NULL + AND u.orcid IS NOT NULL + ) + ORDER BY proposal_friendly_id, orcid + """).fetchall() + + orcid_map: dict[str, list[str]] = {} + for proposal_friendly_id, orcid in rows: + orcid_map.setdefault(proposal_friendly_id, []).append(orcid) + return orcid_map + + +def get_beamlines_by_proposal(connection: sqlite3.Connection) -> dict[str, list[str]]: + rows = connection.execute(""" + SELECT DISTINCT proposal_friendly_id, beamline_name + FROM esaf + WHERE proposal_friendly_id IS NOT NULL + AND beamline_name IS NOT NULL + ORDER BY proposal_friendly_id, beamline_name + """).fetchall() + + beamlines_by_proposal: dict[str, list[str]] = {} + for proposal_friendly_id, beamline_name in rows: + beamlines_by_proposal.setdefault(proposal_friendly_id, []).append(beamline_name) + return beamlines_by_proposal + + def get_esaf_friendly_ids(connection: sqlite3.Connection) -> list[str]: rows = connection.execute(""" SELECT DISTINCT esaf_friendly_id @@ -582,6 +791,7 @@ def run( beamlines: list[str], db_path: Path, api_url: str = DEFAULT_API_URL, + proposals_by_bl_url: str = DEFAULT_PROPOSALS_BY_BL_URL, timeout: float = 30.0, ) -> int: start_time = perf_counter() @@ -651,6 +861,10 @@ def run( "error": "", } ) + synced_at = utc_now() + sync_proposals( + connection, client, beamlines, proposals_by_bl_url, synced_at + ) except KeyboardInterrupt: interrupted = True finally: @@ -706,6 +920,11 @@ def cli( "--api-url", help="ESAF API base URL.", ), + proposals_by_bl_url: str = typer.Option( + DEFAULT_PROPOSALS_BY_BL_URL, + "--proposals-by-bl-url", + help="Proposals-by-beamline API base URL.", + ), timeout: float = typer.Option( 30.0, "--timeout", @@ -718,6 +937,7 @@ def cli( beamlines=resolved_beamlines, db_path=db_path, api_url=api_url, + proposals_by_bl_url=proposals_by_bl_url, timeout=timeout, ) ) From 47b8f377bf4a5951cfcfeb0f8d12a3d4f75588ce Mon Sep 17 00:00:00 2001 From: Dylan McReynolds Date: Wed, 29 Apr 2026 15:16:48 -0700 Subject: [PATCH 16/31] fix build --- pyproject.toml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 835747d..87bf0a3 100755 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,6 +36,12 @@ tiled-all = [ bl733 = [ "fabio", ] +dev = [ + "flake8", + "black", + "isort", + "mypy", +] [project.urls] Homepage = "https://github.com/als-lbl/splash_tiled" From 107c635a4892bbcf174ed3a39a2bd17a89e2b402 Mon Sep 17 00:00:00 2001 From: Dylan McReynolds Date: Wed, 29 Apr 2026 15:21:06 -0700 Subject: [PATCH 17/31] fix build test --- .github/workflows/ci-cd.yml | 2 +- pyproject.toml | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index bfb4915..d3389ae 100755 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -66,7 +66,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install -e .[test] + pip install -e .[dev] - name: Run tests with pytest run: | diff --git a/pyproject.toml b/pyproject.toml index 87bf0a3..0aee5e9 100755 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,6 +41,8 @@ dev = [ "black", "isort", "mypy", + "pytest", + "pytest-cov", ] [project.urls] From a6acdf344102cdd5b0dd6844dbea03ca6071cb9d Mon Sep 17 00:00:00 2001 From: Dylan McReynolds Date: Wed, 29 Apr 2026 15:26:42 -0700 Subject: [PATCH 18/31] add vabio to dev --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 0aee5e9..0cf9f9f 100755 --- a/pyproject.toml +++ b/pyproject.toml @@ -43,6 +43,7 @@ dev = [ "mypy", "pytest", "pytest-cov", + "fabio", ] [project.urls] From 034e47f80aa70746be9b5c862a22ca9c839d0e45 Mon Sep 17 00:00:00 2001 From: Dylan McReynolds Date: Wed, 29 Apr 2026 15:28:58 -0700 Subject: [PATCH 19/31] add tiled server to dev reqs --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 0cf9f9f..5bb8547 100755 --- a/pyproject.toml +++ b/pyproject.toml @@ -44,6 +44,7 @@ dev = [ "pytest", "pytest-cov", "fabio", + "tiled[server]>=0.2.8" ] [project.urls] From c047ed9cc90756fb8551e5057ebe90b88c5cfee4 Mon Sep 17 00:00:00 2001 From: Dylan McReynolds Date: Wed, 29 Apr 2026 15:31:12 -0700 Subject: [PATCH 20/31] lint once --- .github/workflows/ci-cd.yml | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index d3389ae..7cc9177 100755 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -15,17 +15,14 @@ env: jobs: lint: runs-on: ubuntu-latest - strategy: - matrix: - python-version: ["3.11", "3.12"] steps: - uses: actions/checkout@v4 - - name: Set up Python ${{ matrix.python-version }} + - name: Set up Python uses: actions/setup-python@v4 with: - python-version: ${{ matrix.python-version }} + python-version: "3.12" - name: Install dependencies run: | @@ -51,17 +48,14 @@ jobs: test: runs-on: ubuntu-latest - strategy: - matrix: - python-version: ["3.11", "3.12", "3.13"] steps: - uses: actions/checkout@v4 - - name: Set up Python ${{ matrix.python-version }} + - name: Set up Python uses: actions/setup-python@v4 with: - python-version: ${{ matrix.python-version }} + python-version: "3.12" - name: Install dependencies run: | From 640c0735d01df394074913abf7d606c26ce54058 Mon Sep 17 00:00:00 2001 From: Dylan McReynolds Date: Wed, 29 Apr 2026 15:31:26 -0700 Subject: [PATCH 21/31] add pytest async to dev --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 5bb8547..d52610e 100755 --- a/pyproject.toml +++ b/pyproject.toml @@ -43,6 +43,7 @@ dev = [ "mypy", "pytest", "pytest-cov", + "pytest-asyncio", "fabio", "tiled[server]>=0.2.8" ] From dc63dc737af18656fd446a8484b4e6c54d7382bc Mon Sep 17 00:00:00 2001 From: Dylan McReynolds Date: Wed, 29 Apr 2026 15:34:04 -0700 Subject: [PATCH 22/31] test multiple versions of python --- .github/workflows/ci-cd.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index 7cc9177..25d00cf 100755 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -48,14 +48,17 @@ jobs: test: runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.11", "3.12", "3.13"] steps: - uses: actions/checkout@v4 - - name: Set up Python + - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: - python-version: "3.12" + python-version: ${{ matrix.python-version }} - name: Install dependencies run: | From 676b0a52623f45dc3130d5476400104d77b3a629 Mon Sep 17 00:00:00 2001 From: Dylan McReynolds Date: Wed, 29 Apr 2026 16:07:37 -0700 Subject: [PATCH 23/31] fix release --- .github/workflows/ci-cd.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index 25d00cf..a7b5516 100755 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -102,6 +102,7 @@ jobs: tags: | type=ref,event=branch type=ref,event=pr + type=ref,event=tag type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} type=raw,value=latest,enable={{is_default_branch}} From 1e4a432414452e28ea880cd59d9ed9418148fd6e Mon Sep 17 00:00:00 2001 From: Dylan McReynolds Date: Wed, 29 Apr 2026 17:27:02 -0700 Subject: [PATCH 24/31] add more tags query, fix bugs --- src/splash_tiled/access_control/cli.py | 44 ++++++++- src/splash_tiled/access_control/inspect.py | 98 +++++++++++++------ src/splash_tiled/access_control/tiled_tags.py | 15 ++- 3 files changed, 118 insertions(+), 39 deletions(-) diff --git a/src/splash_tiled/access_control/cli.py b/src/splash_tiled/access_control/cli.py index 413c701..80e9f37 100644 --- a/src/splash_tiled/access_control/cli.py +++ b/src/splash_tiled/access_control/cli.py @@ -1,9 +1,10 @@ from __future__ import annotations from pathlib import Path -from typing import Optional +from typing import Annotated, Optional import typer +from tiled.client import from_uri from splash_tiled.access_control.inspect import app as query_app from splash_tiled.access_control.tiled_tags import ( @@ -119,6 +120,47 @@ def compile_all( ) +def _tag_recursive(node, tags: list[str]) -> int: + node.access_blob(access_tag=tags) + count = 1 + try: + for key in node: + count += _tag_recursive(node[key], tags) + except TypeError: + pass + return count + + +@app.command("set-access-tags") +def tag_path_command( + path: Annotated[ + str, typer.Argument(help="Path within tiled (e.g. beamlines/12.3.2).") + ], + tags: Annotated[ + list[str], + typer.Argument( + help="Access tags to apply (space-separated, e.g. SB-01234-001 12.3.2-staff)." + ), + ], + uri: str = typer.Option( + "http://localhost:8000", "--uri", help="Tiled server base URI." + ), + api_key: Optional[str] = typer.Option( + None, "--api-key", envvar="TILED_API_KEY", help="Tiled API key." + ), +) -> None: + """Recursively apply access tags to a tiled node and all its descendants. + + Example: access set-access-tags beamlines/12.3.2 SB-01234-001 12.3.2-staff --uri http://tiled:8000 + """ + client = from_uri(uri, api_key=api_key) + node = client + for part in (p for p in path.split("/") if p): + node = node[part] + count = _tag_recursive(node, tags) + typer.echo(f"Tagged {count} nodes.") + + def main() -> None: app() diff --git a/src/splash_tiled/access_control/inspect.py b/src/splash_tiled/access_control/inspect.py index 25f8618..539df34 100644 --- a/src/splash_tiled/access_control/inspect.py +++ b/src/splash_tiled/access_control/inspect.py @@ -255,39 +255,77 @@ def beamline_members( @app.command("tags") def tags( - orcid: Annotated[str, typer.Argument(help="User ORCID.")], + orcid: Annotated[ + Optional[str], typer.Argument(help="User ORCID. If omitted, lists all tags.") + ] = None, + like: Optional[str] = typer.Option( + None, + "--like", + help="Filter tag names with SQL LIKE pattern. Use % for any" + "sequence (e.g. '%SB-01510-001%') and _ for a single character. Not regex.", + ), compiled_db: Path = _COMPILED_DB_OPTION, ) -> None: - """List all tags a user has access to, with their scopes.""" + """List tags. With an ORCID, shows that user's tags with scopes and ownership. + Without an ORCID, lists all tags with an optional --like filter.""" with _connect(compiled_db) as conn: - rows = conn.execute( - """ - SELECT t.name, - t.is_public, - GROUP_CONCAT(s.name, ', ') AS scopes, - EXISTS ( - SELECT 1 FROM tag_owners towner - WHERE towner.tag_id = t.id AND towner.user_id = u.id - ) AS is_owner - FROM tags t - JOIN tags_users_scopes tus ON tus.tag_id = t.id - JOIN users u ON u.id = tus.user_id - JOIN scopes s ON s.id = tus.scope_id - WHERE u.name = ? - GROUP BY t.name - ORDER BY t.name - """, - (orcid,), - ).fetchall() - if not rows: - typer.echo(f"No tags found for {orcid}") - return - typer.echo(f"{'TAG':<40} {'PUBLIC':<8} {'OWNER':<8} SCOPES") - typer.echo("-" * 90) - for tag, is_public, scopes, is_owner in rows: - typer.echo( - f"{tag:<40} {'yes' if is_public else 'no':<8} {'yes' if is_owner else 'no':<8} {scopes or ''}" - ) + if orcid is not None: + rows = conn.execute( + """ + SELECT t.name, + t.is_public, + GROUP_CONCAT(s.name, ', ') AS scopes, + EXISTS ( + SELECT 1 FROM tag_owners towner + WHERE towner.tag_id = t.id AND towner.user_id = u.id + ) AS is_owner + FROM tags t + JOIN tags_users_scopes tus ON tus.tag_id = t.id + JOIN users u ON u.id = tus.user_id + JOIN scopes s ON s.id = tus.scope_id + WHERE u.name = ? + GROUP BY t.name + ORDER BY t.name + """, + (orcid,), + ).fetchall() + if not rows: + typer.echo(f"No tags found for {orcid}") + return + typer.echo(f"{'TAG':<40} {'PUBLIC':<8} {'OWNER':<8} SCOPES") + typer.echo("-" * 90) + for tag, is_public, scopes, is_owner in rows: + typer.echo( + f"{tag:<40} {'yes' if is_public else 'no':<8} {'yes' if is_owner else 'no':<8} {scopes or ''}" + ) + else: + where = "WHERE t.name LIKE ?" if like else "" + params: list[str] = [like] if like else [] + rows = conn.execute( + f""" + SELECT t.name, + t.is_public, + GROUP_CONCAT(DISTINCT s.name) AS scopes, + COUNT(DISTINCT towner.user_id) AS owner_count + FROM tags t + LEFT JOIN tags_users_scopes tus ON tus.tag_id = t.id + LEFT JOIN scopes s ON s.id = tus.scope_id + LEFT JOIN tag_owners towner ON towner.tag_id = t.id + {where} + GROUP BY t.name + ORDER BY t.name + """, + params, + ).fetchall() + if not rows: + typer.echo("No tags found.") + return + typer.echo(f"{'TAG':<40} {'PUBLIC':<8} {'OWNERS':<8} SCOPES") + typer.echo("-" * 90) + for tag, is_public, scopes, owner_count in rows: + typer.echo( + f"{tag:<40} {'yes' if is_public else 'no':<8} {owner_count:<8} {scopes or ''}" + ) def main() -> None: diff --git a/src/splash_tiled/access_control/tiled_tags.py b/src/splash_tiled/access_control/tiled_tags.py index 3057ae0..4d3b917 100644 --- a/src/splash_tiled/access_control/tiled_tags.py +++ b/src/splash_tiled/access_control/tiled_tags.py @@ -40,10 +40,8 @@ def load_esaf_groups(esaf_db_path: Path) -> dict[str, list[str]]: groups = get_esaf_orcid_map(connection) groups.update(get_proposal_orcid_map(connection)) beamline_staff_groups = get_beamline_staff_group_map(connection) - for beamline_name in get_esaf_friendly_ids_by_beamline(connection): - groups[f"{beamline_name}-staff"] = beamline_staff_groups.get( - beamline_name, [] - ) + for beamline_name, staff_orcids in beamline_staff_groups.items(): + groups[f"{beamline_name}-staff"] = staff_orcids return groups @@ -90,11 +88,9 @@ def build_generated_tag_definitions( if name not in esaf_friendly_id_set and name not in proposal_friendly_id_set } - for beamline_name, esaf_friendly_ids in esaf_ids_by_beamline.items(): + all_beamlines_with_staff = set(esaf_ids_by_beamline) | set(beamline_staff_groups) + for beamline_name in all_beamlines_with_staff: beamline_staff_group_name = f"{beamline_name}-staff" - - # Emit an explicit staff tag for each beamline so access checks can - # validate the tag even when no ESAF-specific tags are involved. generated_tags.setdefault( beamline_staff_group_name, { @@ -107,6 +103,9 @@ def build_generated_tag_definitions( }, ) + for beamline_name, esaf_friendly_ids in esaf_ids_by_beamline.items(): + beamline_staff_group_name = f"{beamline_name}-staff" + if beamline_name not in beamline_staff_groups: beamline_staff_groups[beamline_name] = [] From 5b41016a734fceb7ea44799706bc19dbaf6160be Mon Sep 17 00:00:00 2001 From: Dylan McReynolds Date: Wed, 29 Apr 2026 18:30:10 -0700 Subject: [PATCH 25/31] fix access_blob setting --- src/splash_tiled/access_control/cli.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/splash_tiled/access_control/cli.py b/src/splash_tiled/access_control/cli.py index 80e9f37..6f8797b 100644 --- a/src/splash_tiled/access_control/cli.py +++ b/src/splash_tiled/access_control/cli.py @@ -121,7 +121,7 @@ def compile_all( def _tag_recursive(node, tags: list[str]) -> int: - node.access_blob(access_tag=tags) + node.replace_metadata(access_tags=tags) count = 1 try: for key in node: From 24142d2a39a03c36d980241c51dc1b7ebc389d4b Mon Sep 17 00:00:00 2001 From: Dylan McReynolds Date: Wed, 29 Apr 2026 18:54:34 -0700 Subject: [PATCH 26/31] fix syn worker and cli Co-authored-by: Copilot --- docker-compose.yaml | 2 +- scripts/sync_scheduler.py | 31 +++++++++++------------ src/splash_tiled/access_control/cli.py | 34 ++++++++++++++++++++------ 3 files changed, 43 insertions(+), 24 deletions(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index c2b5825..6a2c77d 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -27,7 +27,7 @@ services: - ./tiled_config/config.yaml:/tiled_deploy/config/config.yaml:ro restart: unless-stopped - sync-worker: + access-worker: build: context: . dockerfile: Containerfile diff --git a/scripts/sync_scheduler.py b/scripts/sync_scheduler.py index cf04e7c..e5b5a29 100644 --- a/scripts/sync_scheduler.py +++ b/scripts/sync_scheduler.py @@ -2,6 +2,7 @@ import os import subprocess +import time from datetime import UTC, datetime from pathlib import Path @@ -30,9 +31,9 @@ def resolve_path_option( return Path(get_env(env_name, default)) -def resolve_cron_expression(cron: str | None) -> str: - if cron is None: - raise typer.BadParameter("A cron expression is required.") +def resolve_cron_expression(cron: str) -> str: + if not cron: + raise typer.BadParameter("SYNC_CRON environment variable is required.") return cron @@ -66,7 +67,10 @@ def sync_once( beamline_args = parse_beamline_args(beamlines) - typer.echo(f"[{utc_now()}] Running scheduled ESAF sync") + start = time.monotonic() + typer.echo(f"[{utc_now()}] Sync started") + + t0 = time.monotonic() subprocess.run( [ "python", @@ -80,7 +84,11 @@ def sync_once( ], check=True, ) + typer.echo( + f"[{utc_now()}] User Office fetch complete ({time.monotonic() - t0:.1f}s)" + ) + t0 = time.monotonic() subprocess.run( [ "python", @@ -98,19 +106,12 @@ def sync_once( ], check=True, ) + typer.echo(f"[{utc_now()}] Tag compile complete ({time.monotonic() - t0:.1f}s)") + typer.echo(f"[{utc_now()}] Sync finished — total {time.monotonic() - start:.1f}s") @app.command() def main( - cron: str = typer.Argument( - ..., - metavar="CRON", - envvar="SYNC_CRON", - help=( - "Cron expression in crontab format: 'minute hour day month " - "day_of_week'. Required as CRON or via SYNC_CRON." - ), - ), esaf_db_path: Path | None = typer.Option( None, "--esaf-db-path", @@ -146,7 +147,7 @@ def main( ), ), ) -> None: - cron_expr = resolve_cron_expression(cron) + cron_expr = resolve_cron_expression(get_env("SYNC_CRON", "")) resolved_esaf_db_path = resolve_path_option( esaf_db_path, env_name="ESAF_DB_PATH", @@ -171,7 +172,7 @@ def main( "API_URL", "https://als-esaf.als.lbl.gov/EsafInformation/GetEsaf", ) - beamlines = get_env("BEAMLINES", "12.3.2,9.3.2,7.0.2") + beamlines = get_env("BEAMLINES", "all") scheduler = BlockingScheduler(timezone="UTC") diff --git a/src/splash_tiled/access_control/cli.py b/src/splash_tiled/access_control/cli.py index 6f8797b..e18085e 100644 --- a/src/splash_tiled/access_control/cli.py +++ b/src/splash_tiled/access_control/cli.py @@ -5,6 +5,7 @@ import typer from tiled.client import from_uri +from tiled.structures.core import StructureFamily from splash_tiled.access_control.inspect import app as query_app from splash_tiled.access_control.tiled_tags import ( @@ -120,14 +121,26 @@ def compile_all( ) -def _tag_recursive(node, tags: list[str]) -> int: - node.replace_metadata(access_tags=tags) - count = 1 - try: +def _tag_recursive(node, tags: list[str], errors: list[str]) -> int: + current_tags = (node.access_blob or {}).get("tags", []) + if set(current_tags) == set(tags): + typer.echo(f" {node.uri} (already set, skipping)") + count = 0 + else: + typer.echo(f" {node.uri} → {tags}") + try: + node.patch_metadata( + access_blob_patch={"tags": tags}, + content_type="application/merge-patch+json", + ) + count = 1 + except Exception as exc: + errors.append(f" {node.uri}: {exc}") + typer.echo(f" ERROR: {exc}", err=True) + count = 0 + if node.structure_family == StructureFamily.container: for key in node: - count += _tag_recursive(node[key], tags) - except TypeError: - pass + count += _tag_recursive(node[key], tags, errors) return count @@ -157,8 +170,13 @@ def tag_path_command( node = client for part in (p for p in path.split("/") if p): node = node[part] - count = _tag_recursive(node, tags) + errors: list[str] = [] + count = _tag_recursive(node, tags, errors) typer.echo(f"Tagged {count} nodes.") + if errors: + typer.echo(f"Skipped {len(errors)} nodes with errors:", err=True) + for msg in errors: + typer.echo(msg, err=True) def main() -> None: From 88c403618f82c1e9dad821fbc7de4ba21b73683a Mon Sep 17 00:00:00 2001 From: Dylan McReynolds Date: Wed, 29 Apr 2026 19:06:44 -0700 Subject: [PATCH 27/31] add APScheduler logging --- scripts/sync_scheduler.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scripts/sync_scheduler.py b/scripts/sync_scheduler.py index e5b5a29..a70a305 100644 --- a/scripts/sync_scheduler.py +++ b/scripts/sync_scheduler.py @@ -1,5 +1,6 @@ from __future__ import annotations +import logging import os import subprocess import time @@ -209,6 +210,9 @@ def main( "beamlines": beamlines, }, ) + logging.basicConfig() + logging.getLogger("apscheduler").setLevel(logging.INFO) + typer.echo(f"[{utc_now()}] APScheduler started with cron: {cron_expr} (UTC)") scheduler.start() From 88625c39aad0c5463b7a1bf06d8f192f5883cc6f Mon Sep 17 00:00:00 2001 From: Dylan McReynolds Date: Wed, 6 May 2026 08:16:56 -0700 Subject: [PATCH 28/31] undo copy in Containerfile --- Containerfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Containerfile b/Containerfile index 426acf9..ffb78de 100755 --- a/Containerfile +++ b/Containerfile @@ -12,5 +12,3 @@ COPY --chown=app:app pyproject.toml README.md ./ COPY --chown=app:app src/ ./src/ RUN uv pip install --python /app/bin/python --no-cache ".[bl733]" COPY --chown=app:app scripts/ ./scripts/ -COPY --chown=app:app src/splash_tiled/bl733/adapters/edf.py /tiled_deploy/config/custom/edf.py -COPY --chown=app:app src/splash_tiled/bl733/adapters/gb.py /tiled_deploy/config/custom/gb.py From 2450288e6f09a7eba9a22716c23d78146677532e Mon Sep 17 00:00:00 2001 From: Dylan McReynolds Date: Wed, 6 May 2026 08:23:17 -0700 Subject: [PATCH 29/31] processed tags and revert tiled config --- docker-compose-wu.yml | 77 +++++++++++++++++++ pyproject.toml | 1 - .../access_control/tag_definitions_stub.yaml | 2 + src/splash_tiled/access_control/tiled_tags.py | 59 +++++++++----- tiled_config/config.yaml | 12 +-- 5 files changed, 124 insertions(+), 27 deletions(-) create mode 100644 docker-compose-wu.yml diff --git a/docker-compose-wu.yml b/docker-compose-wu.yml new file mode 100644 index 0000000..1a4d6e9 --- /dev/null +++ b/docker-compose-wu.yml @@ -0,0 +1,77 @@ +name: tiled-staging + +services: + postgres: + image: "postgres:15" + environment: + POSTGRES_USER: "tiled_staging" + POSTGRES_PASSWORD_FILE: /run/secrets/postgres_password + POSTGRES_DB: "tiled_staging_auth" + secrets: + - postgres_password + volumes: + - /opt/staging/tiled/postgres_data:/var/lib/postgresql/data + - /opt/staging/tiled/init-db.sql:/docker-entrypoint-initdb.d/init-db.sql:ro + networks: + - tiled_staging + healthcheck: + test: ["CMD-SHELL", "pg_isready -U tiled_staging -d tiled_staging_auth"] + interval: 10s + timeout: 5s + retries: 5 + + + tiled: + image: "ghcr.io/als-computing/splash_tiled:pr-6" + user: "47781:1011" + depends_on: + postgres: + condition: service_healthy + env_file: + - /opt/staging/tiled/tiled.env + volumes: + - /opt/staging/tiled/config:/deploy/config:ro + - /global/beegfs/beamlines:/global/beegfs/beamlines:rw + - ./tags:/tags:rw + secrets: + - postgres_password + networks: + - tiled_staging + - redis_staging + - web + restart: unless-stopped + labels: + - "traefik.enable=true" + - "traefik.http.routers.tiled-staging.rule=Host(`tiled-staging.computing.als.lbl.gov`)" + - "traefik.http.routers.tiled-staging.entrypoints=websecure" + - "traefik.http.routers.tiled-staging.tls=true" + - "traefik.http.services.tiled-staging.loadbalancer.server.port=8000" + + access-worker: + image: "ghcr.io/als-computing/splash_tiled:pr-6" + user: "47781:1011" + security_opt: + - label=disable + command: + - bash + - /app/scripts/sync_loop.sh + environment: + SYNC_CRON: "0 */5 * * *" + BEAMLINES: "all" + volumes: + - ./tags:/app/tags:rw + - ./data:/app/data:rw + restart: unless-stopped + + +secrets: + postgres_password: + file: /opt/staging/tiled/secrets/postgres_password + +networks: + tiled_staging: + external: true + web: + external: true + redis_staging: + external: true diff --git a/pyproject.toml b/pyproject.toml index d52610e..e56272e 100755 --- a/pyproject.toml +++ b/pyproject.toml @@ -54,7 +54,6 @@ Repository = "https://github.com/als-lbl/splash_tiled" Documentation = "https://github.com/als-lbl/splash_tiled#readme" [project.scripts] -als-tiled = "splash_tiled.main:main" als-hub = "splash_tiled.access_control.user_office:main" compile-tags = "splash_tiled.access_control.tiled_tags:main" access-query = "splash_tiled.access_control.inspect:main" diff --git a/src/splash_tiled/access_control/tag_definitions_stub.yaml b/src/splash_tiled/access_control/tag_definitions_stub.yaml index 7c6b67e..296af5d 100644 --- a/src/splash_tiled/access_control/tag_definitions_stub.yaml +++ b/src/splash_tiled/access_control/tag_definitions_stub.yaml @@ -1,6 +1,8 @@ roles: facility_user: scopes: ["read:data", "read:metadata"] + data_contributor: + scopes: ["read:data", "read:metadata", "write:data", "write:metadata", "create:node"] facility_admin: scopes: ["read:data", "read:metadata", "write:data", "write:metadata", diff --git a/src/splash_tiled/access_control/tiled_tags.py b/src/splash_tiled/access_control/tiled_tags.py index 4d3b917..fd2899c 100644 --- a/src/splash_tiled/access_control/tiled_tags.py +++ b/src/splash_tiled/access_control/tiled_tags.py @@ -85,7 +85,12 @@ def build_generated_tag_definitions( generated_tags = { name: value for name, value in template_tags.items() - if name not in esaf_friendly_id_set and name not in proposal_friendly_id_set + if name not in esaf_friendly_id_set + and name not in proposal_friendly_id_set + and not any( + name in (f"{id_}-raw", f"{id_}-processed") + for id_ in esaf_friendly_id_set | proposal_friendly_id_set + ) } all_beamlines_with_staff = set(esaf_ids_by_beamline) | set(beamline_staff_groups) @@ -110,34 +115,48 @@ def build_generated_tag_definitions( beamline_staff_groups[beamline_name] = [] for esaf_friendly_id in esaf_friendly_ids: - generated_tags[esaf_friendly_id] = { - "groups": [ - { - "name": esaf_friendly_id, - "role": "facility_user", - }, - { - "name": beamline_staff_group_name, - "role": "facility_user", - }, - ], - "auto_tags": [ - {"name": "data_admin"}, - {"name": beamline_staff_group_name}, - ], + esaf_groups_read = [ + {"name": esaf_friendly_id, "role": "facility_user"}, + {"name": beamline_staff_group_name, "role": "facility_user"}, + ] + esaf_groups_write = [ + {"name": esaf_friendly_id, "role": "data_contributor"}, + {"name": beamline_staff_group_name, "role": "data_contributor"}, + ] + esaf_auto_tags = [ + {"name": "data_admin"}, + {"name": beamline_staff_group_name}, + ] + generated_tags[f"{esaf_friendly_id}-raw"] = { + "groups": esaf_groups_read, + "auto_tags": esaf_auto_tags, + } + generated_tags[f"{esaf_friendly_id}-processed"] = { + "groups": esaf_groups_write, + "auto_tags": esaf_auto_tags, } for proposal_friendly_id, beamline_names in beamlines_by_proposal.items(): - proposal_groups = [{"name": proposal_friendly_id, "role": "facility_user"}] + proposal_groups_read = [{"name": proposal_friendly_id, "role": "facility_user"}] + proposal_groups_write = [ + {"name": proposal_friendly_id, "role": "data_contributor"} + ] proposal_auto_tags = [{"name": "data_admin"}] for beamline_name in beamline_names: beamline_staff_group_name = f"{beamline_name}-staff" - proposal_groups.append( + proposal_groups_read.append( {"name": beamline_staff_group_name, "role": "facility_user"} ) + proposal_groups_write.append( + {"name": beamline_staff_group_name, "role": "data_contributor"} + ) proposal_auto_tags.append({"name": beamline_staff_group_name}) - generated_tags[proposal_friendly_id] = { - "groups": proposal_groups, + generated_tags[f"{proposal_friendly_id}-raw"] = { + "groups": proposal_groups_read, + "auto_tags": proposal_auto_tags, + } + generated_tags[f"{proposal_friendly_id}-processed"] = { + "groups": proposal_groups_write, "auto_tags": proposal_auto_tags, } diff --git a/tiled_config/config.yaml b/tiled_config/config.yaml index 01776e1..b87108a 100644 --- a/tiled_config/config.yaml +++ b/tiled_config/config.yaml @@ -40,9 +40,9 @@ access_control: access_tags_parser: "tiled.access_control.access_tags:AccessTagsParser" -# file_extensions: -# edf: application/x-edf -# gb: application/x-gb +file_extensions: + edf: application/x-edf + gb: application/x-gb trees: @@ -53,6 +53,6 @@ trees: readable_storage: [/app/data] writable_storage: /app/data init_if_not_exists: true - # adapters_by_mimetype: - # application/x-edf: splash_tiled.bl733.adapters.edf:EDFAdapter - # application/x-gb: splash_tiled.bl733.adapters.gb:GeneralBinaryPilatus2MAdapter + adapters_by_mimetype: + application/x-edf: splash_tiled.bl733.adapters.edf:EDFAdapter + application/x-gb: splash_tiled.bl733.adapters.gb:GeneralBinaryPilatus2MAdapter From bff603bd2c474642326c7e451ff3ad6b76a75b4e Mon Sep 17 00:00:00 2001 From: Dylan McReynolds Date: Wed, 6 May 2026 09:11:59 -0700 Subject: [PATCH 30/31] add logger and fix tests --- src/splash_tiled/access_control/tiled_tags.py | 28 ++++++++----- tests/test_tiled_tags.py | 39 +++++++++++++++---- 2 files changed, 50 insertions(+), 17 deletions(-) diff --git a/src/splash_tiled/access_control/tiled_tags.py b/src/splash_tiled/access_control/tiled_tags.py index fd2899c..022e9b8 100644 --- a/src/splash_tiled/access_control/tiled_tags.py +++ b/src/splash_tiled/access_control/tiled_tags.py @@ -1,3 +1,4 @@ +import logging import sqlite3 from pathlib import Path from typing import Any @@ -16,6 +17,7 @@ get_proposal_orcid_map, ) +logger = logging.getLogger(__name__) app = typer.Typer(add_completion=False) @@ -123,17 +125,16 @@ def build_generated_tag_definitions( {"name": esaf_friendly_id, "role": "data_contributor"}, {"name": beamline_staff_group_name, "role": "data_contributor"}, ] - esaf_auto_tags = [ - {"name": "data_admin"}, - {"name": beamline_staff_group_name}, - ] generated_tags[f"{esaf_friendly_id}-raw"] = { "groups": esaf_groups_read, - "auto_tags": esaf_auto_tags, + "auto_tags": [{"name": beamline_staff_group_name}], } generated_tags[f"{esaf_friendly_id}-processed"] = { "groups": esaf_groups_write, - "auto_tags": esaf_auto_tags, + "auto_tags": [ + {"name": "data_admin"}, + {"name": beamline_staff_group_name}, + ], } for proposal_friendly_id, beamline_names in beamlines_by_proposal.items(): @@ -141,7 +142,8 @@ def build_generated_tag_definitions( proposal_groups_write = [ {"name": proposal_friendly_id, "role": "data_contributor"} ] - proposal_auto_tags = [{"name": "data_admin"}] + proposal_auto_tags_raw = [] + proposal_auto_tags_processed = [{"name": "data_admin"}] for beamline_name in beamline_names: beamline_staff_group_name = f"{beamline_name}-staff" proposal_groups_read.append( @@ -150,14 +152,15 @@ def build_generated_tag_definitions( proposal_groups_write.append( {"name": beamline_staff_group_name, "role": "data_contributor"} ) - proposal_auto_tags.append({"name": beamline_staff_group_name}) + proposal_auto_tags_raw.append({"name": beamline_staff_group_name}) + proposal_auto_tags_processed.append({"name": beamline_staff_group_name}) generated_tags[f"{proposal_friendly_id}-raw"] = { "groups": proposal_groups_read, - "auto_tags": proposal_auto_tags, + "auto_tags": proposal_auto_tags_raw, } generated_tags[f"{proposal_friendly_id}-processed"] = { "groups": proposal_groups_write, - "auto_tags": proposal_auto_tags, + "auto_tags": proposal_auto_tags_processed, } return { @@ -241,6 +244,11 @@ def compile_tags( output_yaml_path=generated_tag_definitions_path, ) + logger.info( + "Compiling tags from %s → %s", + resolved_generated_tag_definitions_path, + resolved_output_sqlite_path, + ) access_tags_compiler = AccessTagsCompiler( ALL_SCOPES, resolved_generated_tag_definitions_path, diff --git a/tests/test_tiled_tags.py b/tests/test_tiled_tags.py index 265f245..491bec5 100644 --- a/tests/test_tiled_tags.py +++ b/tests/test_tiled_tags.py @@ -132,11 +132,18 @@ def test_build_generated_tag_definitions_includes_template_sections_and_esaf_tag "read:data", "read:metadata", ] - assert generated["tags"]["SB-01482-001"] == { + assert generated["tags"]["SB-01482-001-raw"] == { "groups": [ {"name": "SB-01482-001", "role": "facility_user"}, {"name": "12.3.2-staff", "role": "facility_user"}, ], + "auto_tags": [{"name": "12.3.2-staff"}], + } + assert generated["tags"]["SB-01482-001-processed"] == { + "groups": [ + {"name": "SB-01482-001", "role": "data_contributor"}, + {"name": "12.3.2-staff", "role": "data_contributor"}, + ], "auto_tags": [{"name": "data_admin"}, {"name": "12.3.2-staff"}], } assert generated["tags"]["data_admin"]["users"] == [ @@ -237,11 +244,18 @@ def test_generate_tag_definitions_yaml_writes_generated_esaf_tags( generated = yaml.safe_load(resolved_output_yaml_path.read_text(encoding="utf-8")) assert resolved_output_yaml_path == output_yaml_path.resolve() - assert generated["tags"]["SB-01482-001"]["groups"] == [ + assert generated["tags"]["SB-01482-001-raw"]["groups"] == [ {"name": "SB-01482-001", "role": "facility_user"}, {"name": "12.3.2-staff", "role": "facility_user"}, ] - assert generated["tags"]["SB-01482-001"]["auto_tags"] == [ + assert generated["tags"]["SB-01482-001-raw"]["auto_tags"] == [ + {"name": "12.3.2-staff"}, + ] + assert generated["tags"]["SB-01482-001-processed"]["groups"] == [ + {"name": "SB-01482-001", "role": "data_contributor"}, + {"name": "12.3.2-staff", "role": "data_contributor"}, + ] + assert generated["tags"]["SB-01482-001-processed"]["auto_tags"] == [ {"name": "data_admin"}, {"name": "12.3.2-staff"}, ] @@ -307,8 +321,7 @@ def test_build_generated_tag_definitions_staff_group_in_auto_tags( generated = build_generated_tag_definitions(esaf_db_path, template_path) - assert generated["tags"]["SB-01482-001"]["auto_tags"] == [ - {"name": "data_admin"}, + assert generated["tags"]["SB-01482-001-raw"]["auto_tags"] == [ {"name": "12.3.2-staff"}, ] @@ -381,6 +394,13 @@ def test_compile_tags_reflects_roles_and_data_admin_in_sqlite( scopes: - read:data - read:metadata + data_contributor: + scopes: + - read:data + - read:metadata + - write:data + - write:metadata + - create:node facility_admin: scopes: - read:data @@ -481,7 +501,12 @@ def test_compile_tags_reflects_roles_and_data_admin_in_sqlite( # the data_admin user does NOT have facility_user-only read:data access # on the ESAF tag (it gets access via auto_tag, not direct membership) - cur.execute("SELECT id FROM tags WHERE name = 'SB-01482-001'") + cur.execute("SELECT id FROM tags WHERE name = 'SB-01482-001-raw'") + assert ( + cur.fetchone() is not None + ), "SB-01482-001-raw ESAF tag not found in compiled DB" + + cur.execute("SELECT id FROM tags WHERE name = 'SB-01482-001-processed'") assert ( cur.fetchone() is not None - ), "SB-01482-001 ESAF tag not found in compiled DB" + ), "SB-01482-001-processed ESAF tag not found in compiled DB" From 8a5615a18df6ba853895fdf7f5ef7f0cf432540a Mon Sep 17 00:00:00 2001 From: Dylan McReynolds <40469975+dylanmcreynolds@users.noreply.github.com> Date: Wed, 6 May 2026 11:30:07 -0700 Subject: [PATCH 31/31] use tiled code to find config.yml (#8) --- src/splash_tiled/access_control/tiled_tags.py | 99 ++++++++++++++++--- 1 file changed, 85 insertions(+), 14 deletions(-) diff --git a/src/splash_tiled/access_control/tiled_tags.py b/src/splash_tiled/access_control/tiled_tags.py index 022e9b8..b8efa4c 100644 --- a/src/splash_tiled/access_control/tiled_tags.py +++ b/src/splash_tiled/access_control/tiled_tags.py @@ -1,8 +1,9 @@ import logging +import os import sqlite3 from pathlib import Path -from typing import Any -from urllib.parse import quote +from typing import Any, Optional +from urllib.parse import quote, unquote, urlparse import typer import yaml # type: ignore[import-untyped] @@ -37,6 +38,39 @@ def get_default_generated_tag_definitions_path() -> Path: return Path(__file__).resolve().parents[3] / "tag_definitions.generated.yml" +def _uri_to_path(uri: str) -> Path: + if uri.startswith("file:"): + return Path(unquote(urlparse(uri).path)) + return Path(uri) + + +def read_tiled_config_paths(config_path: Path) -> dict[str, Path]: + """Extract compiled-tags and sibling paths from a tiled config file.""" + from tiled.config import parse_configs + + config = parse_configs(config_path) + ac = config.access_policy + if ac is None or not isinstance(getattr(ac, "args", None), dict): + raise typer.BadParameter( + f"No access_control.args found in {config_path}.", + param_hint="--tiled-config", + ) + tags_db = ac.args.get("tags_db", {}) + uri = tags_db.get("uri") if isinstance(tags_db, dict) else None + if not uri: + raise typer.BadParameter( + f"No access_control.args.tags_db.uri found in {config_path}.", + param_hint="--tiled-config", + ) + compiled_tags_path = _uri_to_path(uri) + parent = compiled_tags_path.parent + return { + "output_sqlite_path": compiled_tags_path, + "esaf_db_path": parent / "esafs.db", + "generated_tag_definitions_path": parent / "tag_definitions.generated.yml", + } + + def load_esaf_groups(esaf_db_path: Path) -> dict[str, list[str]]: with sqlite3.connect(esaf_db_path) as connection: groups = get_esaf_orcid_map(connection) @@ -289,35 +323,72 @@ def generate_yaml_command( @app.command("compile") def compile_command( - output_sqlite_path: Path = typer.Option( - get_default_output_sqlite_path(), + tiled_config: Optional[Path] = typer.Option( + None, + "--tiled-config", + envvar="TILED_CONFIG", + help=( + "Path to the tiled config file (or directory). " + "Defaults to the TILED_CONFIG environment variable, then config.yml. " + "Used to derive output-sqlite-path, esaf-sqlite-path, and generated-yaml-path " + "when those options are not explicitly set." + ), + ), + output_sqlite_path: Optional[Path] = typer.Option( + None, "--output-sqlite-path", - help="Path for the compiled tags SQLite database.", + help="Path for the compiled tags SQLite database. Overrides the tiled config.", ), - esaf_db_path: Path = typer.Option( - get_default_esaf_db_path(), + esaf_db_path: Optional[Path] = typer.Option( + None, "--esaf-sqlite-path", - help="Path to the ESAF SQLite database used to resolve groups.", + help="Path to the ESAF SQLite database used to resolve groups. Overrides the tiled config.", ), tag_definitions_path: Path = typer.Option( get_default_tag_definitions_path(), "--tag-definitions-path", help="Path to the template tag definitions YAML file.", ), - generated_tag_definitions_path: Path = typer.Option( - get_default_generated_tag_definitions_path(), + generated_tag_definitions_path: Optional[Path] = typer.Option( + None, "--generated-yaml-path", help=( "Path for the generated tag definitions YAML file passed to " - "AccessTagsCompiler." + "AccessTagsCompiler. Overrides the tiled config." ), ), ) -> None: + # Resolve tiled config: explicit option → TILED_CONFIG env var → config.yml + config_file = tiled_config or Path(os.getenv("TILED_CONFIG", "config.yml")) + tiled_paths: dict[str, Path] = {} + if config_file.exists(): + tiled_paths = read_tiled_config_paths(config_file) + logger.info("Reading paths from tiled config: %s", config_file) + elif tiled_config is not None: + raise typer.BadParameter( + f"Tiled config not found: {config_file}", + param_hint="--tiled-config", + ) + + resolved_output_sqlite_path = ( + output_sqlite_path + or tiled_paths.get("output_sqlite_path") + or get_default_output_sqlite_path() + ) + resolved_esaf_db_path = ( + esaf_db_path or tiled_paths.get("esaf_db_path") or get_default_esaf_db_path() + ) + resolved_generated_path = ( + generated_tag_definitions_path + or tiled_paths.get("generated_tag_definitions_path") + or get_default_generated_tag_definitions_path() + ) + compile_tags( - output_sqlite_path=output_sqlite_path, - esaf_db_path=esaf_db_path, + output_sqlite_path=resolved_output_sqlite_path, + esaf_db_path=resolved_esaf_db_path, tag_definitions_path=tag_definitions_path, - generated_tag_definitions_path=generated_tag_definitions_path, + generated_tag_definitions_path=resolved_generated_path, )