From b26bafb8c0d15bff77503ce1df7e11e1846961dd Mon Sep 17 00:00:00 2001 From: Carsten Ehbrecht Date: Thu, 18 Jun 2026 22:50:03 +0200 Subject: [PATCH 1/3] release v1.2.0 --- .cruft.json | 2 +- CHANGELOG.rst | 18 ++++++++++++++++++ Dockerfile | 2 +- README.rst | 4 ++-- docs/source/dev_guide.rst | 6 +++--- pyproject.toml | 2 +- src/rook/__version__.py | 2 +- 7 files changed, 27 insertions(+), 9 deletions(-) diff --git a/.cruft.json b/.cruft.json index 27dba99..bf47381 100644 --- a/.cruft.json +++ b/.cruft.json @@ -11,7 +11,7 @@ "project_repo_name": "rook", "project_readthedocs_name": "rook", "project_short_description": "A WPS service for roocs.", - "version": "1.1.1", + "version": "1.2.0", "open_source_license": "Apache Software License 2.0", "http_port": "5000", "use_pytest": "y", diff --git a/CHANGELOG.rst b/CHANGELOG.rst index e3dfc2c..8aa1e8c 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -4,11 +4,29 @@ Changes Unreleased ========== +1.2.0 (2026-06-18) +================== + +* Added preliminary support for Kerchunk reference inputs, including URL-aware + detection for JSON, Zstandard, and Parquet references. * Added preliminary S3 support by declaring ``s3fs``, allowing direct ``s3://`` NetCDF inputs, and preparing optional S3 base-path mapping for catalog-backed processing paths. * Added preliminary support for opening local and S3-backed Zarr stores as operation inputs. +* Added a common dataset-opening API with immutable ``DatasetSource`` inputs, + explicit NetCDF, Zarr, and Kerchunk dispatch, and independent transport + detection and configuration. +* Centralized Rook configuration loading, project lookup, storage roots, and + shared S3 options, with strict validation that avoids exposing configured + values in errors. +* Simplified catalog consolidation, including independent handling of mixed + direct and catalog inputs and per-project catalog caching. +* Replaced captured configuration globals and aligned the development setup + with ``prek``. +* Live S3 integration coverage remains deferred; current object-storage + behavior is covered by unit and characterization tests. + 1.1.1 (2026-06-17) ================== diff --git a/Dockerfile b/Dockerfile index 6edaf84..e868c23 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,7 +3,7 @@ FROM continuumio/miniconda3 ARG DEBIAN_FRONTEND=noninteractive ENV PIP_ROOT_USER_ACTION=ignore LABEL org.opencontainers.image.authors=https://github.com/roocs/rook -LABEL Description="rook WPS" Vendor="Birdhouse" Version="1.1.1" +LABEL Description="rook WPS" Vendor="Birdhouse" Version="1.2.0" # Set the working directory to /code WORKDIR /code diff --git a/README.rst b/README.rst index 00f59c5..ea21a8c 100644 --- a/README.rst +++ b/README.rst @@ -71,13 +71,13 @@ Use bump-my-version_ to release a new version. Patch Release Quickstart ^^^^^^^^^^^^^^^^^^^^^^^^ -Minimal patch release flow (example: ``1.1.1``): +Minimal patch release flow (example: ``1.2.1``): .. code-block:: console $ edit CHANGELOG.rst $ make conda-spec - $ bump-my-version bump --new-version 1.1.1 patch + $ bump-my-version bump --new-version 1.2.1 patch $ git push $ git push --tags diff --git a/docs/source/dev_guide.rst b/docs/source/dev_guide.rst index bc9bb2c..b7e3827 100644 --- a/docs/source/dev_guide.rst +++ b/docs/source/dev_guide.rst @@ -102,9 +102,9 @@ Make a new version of rook in the following steps: * Make sure everything is committed to GitHub. * Update ``CHANGELOG.rst`` with the next version. -* Dry Run: ``bump-my-version bump --dry-run --verbose --new-version 1.1.1 patch`` -* Do it: ``bump-my-version bump --new-version 1.1.1 patch`` -* ... or: ``bump-my-version bump --new-version 1.2.0 minor`` +* Dry Run: ``bump-my-version bump --dry-run --verbose --new-version 1.2.1 patch`` +* Do it: ``bump-my-version bump --new-version 1.2.1 patch`` +* ... or: ``bump-my-version bump --new-version 1.3.0 minor`` * Push it: ``git push`` * Push tag: ``git push --tags`` diff --git a/pyproject.toml b/pyproject.toml index 2c429a5..8c38225 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -105,7 +105,7 @@ target-version = [ ] [tool.bumpversion] -current_version = "1.1.1" +current_version = "1.2.0" commit = true commit_args = "--no-verify" tag = false diff --git a/src/rook/__version__.py b/src/rook/__version__.py index 8e67fad..c31babd 100644 --- a/src/rook/__version__.py +++ b/src/rook/__version__.py @@ -6,4 +6,4 @@ __author__ = """Carsten Ehbrecht""" __email__ = "ehbrecht@dkrz.de" -__version__ = "1.1.1" +__version__ = "1.2.0" From 9fd66e13e8a868546c61277a462edaa7a377035f Mon Sep 17 00:00:00 2001 From: Carsten Ehbrecht Date: Thu, 18 Jun 2026 23:02:36 +0200 Subject: [PATCH 2/3] update TODO --- TODO.md | 294 ++++++++++++++++++++++++++++++-------------------------- 1 file changed, 160 insertions(+), 134 deletions(-) diff --git a/TODO.md b/TODO.md index dfe041d..7171510 100644 --- a/TODO.md +++ b/TODO.md @@ -1,182 +1,208 @@ -# Rook Architecture Cleanup TODO +# Rook Cleanup TODO -This document is an unreferenced engineering reminder for future work. It -describes cleanup that should follow the initial Kerchunk, S3, and Zarr support. -Do not treat every item as part of one pull request. +This document describes the cleanup phase following the initial Kerchunk, S3, +and Zarr support released in Rook 1.2.0. The aim is to make the existing code +smaller, clearer, and easier to change without adding new storage features. -## Current Situation +Keep the work in small, reviewable pull requests. Preserve WPS behavior unless +a change is explicitly documented and tested. -Rook can partially handle: +## Goals -- local and catalog-resolved NetCDF files; -- Kerchunk reference files; -- direct S3 paths and S3-backed catalog paths; -- local and S3-backed Zarr stores. +- remove dead code, obsolete branches, and misleading options; +- give operators a clear namespace and a small, useful shared abstraction; +- remove duplicated execution paths and unnecessary wrappers; +- separate request planning from operation execution; +- simplify or replace the director; +- document the final dataset-processing flow once it has settled. -The initial implementations intentionally kept their scope small. As a result, -configuration parsing, storage transport handling, format detection, catalog -resolution, and dataset opening are still spread across modules such as -`rook.__init__`, `rook.catalog`, and `rook.utils.ops.helpers`. +## 1. Characterize the Current Execution Paths -Two structural improvements are desired: +Before changing structure, add or improve tests around the decisions that are +currently spread across the WPS processes, `rook.operator`, `rook.director`, and +`rook.utils.ops`. -1. Centralize Rook configuration access and parsing. -2. Delegate dataset opening to a common, extensible API. +Cover at least: -The cleanup should preserve existing production filesystem and NetCDF behavior. +- a catalog collection resolved to files and processed by an operator; +- a direct filesystem collection processed without catalog lookup; +- returning original catalog file URLs when a subset aligns with whole files; +- generating a subset when the request does not align with whole files; +- operators that must always process data rather than return original files; +- a later workflow step receiving files produced by an earlier step; +- errors for unknown collections and unavailable pre-checked data. -## Configuration Module +Tests should describe observable behavior, not preserve incidental class or +module structure. They will provide room to simplify the implementation. -Introduce a central module, probably `rook/config.py`, around the existing -clisops configuration loader. `roocs.ini` should remain the source of truth. +## 2. Deprecate the `apply_fixes` WPS Parameter -The module should eventually own: +Rook already decides internally whether a dataset fix is required. Callers +should not control that decision. -- loading and reloading configuration; -- project configuration lookup; -- parsing booleans and structured JSON options; -- global and project-specific storage roots; -- S3 credentials, endpoint options, and anonymous access; -- validation and useful errors for malformed values; -- protection against accidentally logging secrets. +- keep `apply_fixes` in the WPS process inputs for compatibility; +- mark it as deprecated in each WPS parameter description and user-facing + documentation; +- continue accepting both true and false values, but do not use the supplied + value to select internal behavior; +- make fix application an internal dataset-opening or preparation decision; +- remove `apply_fixes` plumbing from workflows, operators, utility functions, + provenance filtering, and internal APIs where it no longer has meaning; +- remove disabled fix-selection branches in the director after their behavior + has been replaced; +- add tests proving that the deprecated input is accepted and does not alter + results. -A small public API is preferable to modules importing a mutable global mapping: +Use one internal policy for fixes. Catalog-backed datasets may carry the +dataset ID needed to select a fix; direct paths should not accidentally receive +project-specific fixes. -```python -get_config() -reload_config() -get_project_config(project) -get_s3_storage_options() -get_storage_base(project) -``` - -Keep `rook.CONFIG` temporarily as a compatibility alias during migration. Avoid -an immediate rewrite of every consumer. The current test setup has to replace -captured `CONFIG` references in several modules after reload; central access -should remove that problem. +## 3. Clean Up the Operator Layer -Do not create a separate credential stack for Zarr. NetCDF, Zarr, and Kerchunk -are data formats, while local filesystems, HTTP, and S3 are transports. S3 -transport options should be shared by every compatible format. +There are currently overlapping operator concepts in `rook.operator` and +`rook.utils.ops`, with operation-specific runners elsewhere in `rook.utils`. +Give this code one obvious home and one vocabulary. -## Dataset Opening API +A likely target namespace is `rook.operations`, containing: -Introduce a focused module such as `rook/io/datasets.py`. It should expose one -common entry point: - -```python -open_dataset(source, *, apply_fixes=True) -> xarray.Dataset +```text +rook/operations/ + base.py + subset.py + average.py + concat.py + regrid.py + execution.py ``` -Internally, separate format detection from transport configuration: +The exact layout should follow the responsibilities discovered during the +cleanup; do not preserve a package structure merely for symmetry. -```python -detect_format(source) -open_netcdf(source, storage_options) -open_zarr(source, storage_options) -open_kerchunk(source, storage_options) -``` +- inventory the public and internal imports before moving modules; +- decide whether `Operator` and `Operation` represent genuinely different + concepts; merge or rename them if they do not; +- define a small base class only for behavior shared by every operation; +- prefer explicit functions and composition for optional behavior; +- replace `_get_runner()` subclasses that only return a function with a simpler + registration or direct callable when appropriate; +- centralize output-directory creation and result handling; +- remove pass-through wrappers and duplicated parameter normalization; +- keep clisops calls visible and easy to trace; +- use names that distinguish WPS process adapters from data operations. -The implementations should continue using proven upstream behavior where -possible: +Avoid designing a large framework. The base classes should remove repetition, +not hide control flow. -- use `clisops.utils.dataset_utils.open_xr_dataset` for existing NetCDF paths; -- use `xarray.open_zarr` for Zarr stores; -- reuse the established clisops/fsspec Kerchunk path; -- pass transport-specific options without duplicating format logic. +## 4. Reconsider the Director -Avoid a class hierarchy unless it removes real complexity. A dispatcher plus -small functions or a registry may be sufficient. +The director currently performs several jobs at once: -## Normalize Dataset Inputs +- catalog lookup and validation; +- deciding whether original files can be returned; +- checking subset-to-file alignment; +- rewriting collections for processing; +- invoking an operation runner; +- translating exceptions and packaging results. -The current consolidation output mixes scalar references and lists of files. -Consider an internal immutable value object: +First make these decisions explicit, then decide whether the `Director` class +still earns its place. A useful intermediate design may be a small request plan +with an explicit outcome, for example: ```python -@dataclass(frozen=True) -class DatasetSource: - dataset_id: str | None - paths: tuple[str, ...] +plan = plan_request(collection, parameters) + +if plan.returns_original_files: + return plan.original_file_urls + +return run_operation(plan.dataset_sources, parameters) ``` -The object should make these rules explicit: +Possible focused components are: -- NetCDF may contain one or many paths; -- Zarr requires one store; -- Kerchunk requires one reference; -- a catalog dataset ID may be eligible for Rook fixes; -- a direct path or URL generally should not trigger project-specific fixes; -- storage options are selected from the paths' transport protocol. +- catalog collection resolution; +- original-file eligibility and subset alignment; +- operation execution; +- WPS exception and response adaptation. -`consolidate()` should eventually resolve collections and paths only. It should -not decide how a format is opened. +The result should avoid mutable input dictionaries as hidden communication. +Decision results should be explicit values with clear types. If the director +becomes only a thin wrapper after extraction, remove it. -## Target Flow +## 5. Remove Dead and Misleading Code -The intended processing flow is: +Do this continuously, but keep behavior changes separate from mechanical moves. -```text -WPS parameters - -> catalog and path resolution - -> DatasetSource - -> format detection - -> transport configuration - -> dataset opener - -> optional Rook fixes - -> operation -``` +- remove unreachable code after unconditional returns; +- remove commented-out implementations and stale TODO comments; +- find parameters, attributes, helpers, compatibility modules, and imports with + no callers; +- remove old module names once all internal imports have moved; +- replace broad exception handling where a narrower boundary is known; +- remove mutation and defensive copying that no longer serve a purpose; +- simplify boolean branches and duplicated conditionals; +- update tests that only exercise deleted implementation details. + +For each candidate, use repository-wide searches and test coverage before +removal. Code that supports a real WPS input or response remains public even if +Rook's Python modules have no external users. -Keep returning original HTTP download URLs separate from paths used internally -for processing. Configuring an S3 processing root must not silently change the -public original-file response behavior. +## 6. Document the Dataset-Processing Flow -## Migration Plan +Add the architecture documentation only after the operator and director cleanup +has stabilized, so the diagram describes the code rather than an aspiration. -Use small, reviewable pull requests: +The documentation should include a Mermaid flowchart showing: -1. Add characterization tests for current filesystem NetCDF, Kerchunk, direct - S3 NetCDF, catalog-backed S3 paths, local Zarr, and S3 Zarr behavior. -2. Introduce `rook/config.py` while preserving `rook.CONFIG` compatibility. -3. Extract existing opening behavior into `rook/io/datasets.py` without changing - results or configuration semantics. -4. Introduce `DatasetSource` and normalize scalar/list handling internally. -5. Separate format detection from transport option selection. -6. Migrate callers and remove compatibility globals only after coverage exists. +- entry through a WPS process; +- catalog dataset IDs versus direct filesystem, URL, S3, Zarr, and Kerchunk + inputs; +- catalog lookup and file resolution; +- the decision to return original files or perform processing; +- construction of `DatasetSource` values; +- format detection and transport configuration; +- internal dataset fixes where applicable; +- subset or other operator execution; +- output file and original-file responses. -Do not combine unrelated config cleanup, new storage features, and broad catalog -refactoring in a single change. +Keep the diagram at the architectural level. Link important nodes to short +sections explaining ownership and decision rules rather than embedding every +special case in the chart. -## Compatibility Requirements +## Suggested Pull Request Order + +1. Characterization tests and an inventory of operator/director responsibilities. +2. Deprecate the WPS `apply_fixes` input and remove its internal control flow. +3. Introduce the operator namespace and consolidate common execution behavior. +4. Migrate individual operators in small groups, removing old wrappers as they + become unused. +5. Extract catalog resolution and original-file planning from the director. +6. Remove or reduce the director and clean up the resulting dead code. +7. Add the Mermaid architecture documentation and a final terminology pass. + +## Guardrails Every cleanup pull request should demonstrate that: -- ordinary local and catalog-resolved NetCDF files still use the established - clisops opener; -- multi-file NetCDF behavior is unchanged; -- existing project fixes still receive a meaningful catalog dataset ID; -- original-file download URLs remain HTTP/data-node URLs where configured; -- S3 options are only applied to S3-backed inputs; -- missing S3 or Zarr configuration does not alter local filesystem behavior; -- Kerchunk, Zarr, and NetCDF detection is URL-aware and handles query strings; -- malformed optional configuration fails clearly or falls back deliberately, - rather than being silently misinterpreted. - -Always run tests and pre-commit hooks using the existing `rook` conda -environment, for example: - -```shell -conda run -n rook pytest ... -conda run -n rook pre-commit run --all-files -``` +- the WPS process interface remains compatible, including deprecated inputs; +- ordinary local and catalog-resolved NetCDF processing is unchanged; +- Kerchunk, Zarr, and S3 inputs continue through the common dataset-opening API; +- direct paths do not require catalog configuration; +- original-file responses still contain public download URLs, not internal + processing paths; +- multi-step workflows can consume files created by earlier steps; +- output naming, splitting, provenance, and error responses remain stable unless + a deliberate change is documented. + +Run the focused tests while iterating, followed by the full test suite and all +repository hooks before each pull request. -## Explicitly Deferred Features +## Deferred Features -These may be useful later but are not prerequisites for the structural cleanup: +These remain outside this cleanup phase: +- live S3 integration tests requiring external test data or credentials; - writing operation output directly to S3 or Zarr; -- opening and combining multiple Zarr stores; -- selecting Zarr groups through WPS parameters; +- combining multiple Zarr stores or selecting Zarr groups through WPS inputs; - supporting additional object-store protocols; -- replacing clisops dataset-opening behavior; -- redesigning all of `roocs.ini` at once. +- replacing established clisops dataset-opening behavior; +- redesigning all Rook configuration at once. From 0c365736e75ccc131ba4320180d80d7baf839b7a Mon Sep 17 00:00:00 2001 From: Carsten Ehbrecht Date: Thu, 18 Jun 2026 23:09:30 +0200 Subject: [PATCH 3/3] update conda spec --- conda-lock.yml | 533 +++++++++++++++++++++++++------------------------ linux-64.spec | 112 ++++++----- 2 files changed, 327 insertions(+), 318 deletions(-) diff --git a/conda-lock.yml b/conda-lock.yml index ca6ba4a..5fdc6bb 100644 --- a/conda-lock.yml +++ b/conda-lock.yml @@ -13,7 +13,7 @@ version: 1 metadata: content_hash: - linux-64: 86a0f567fe3977b323c60ba59bcc48bcc627c674d930acbbd7cf172ef0821f0e + linux-64: e36571cfb004c2f48ac045f4e7bdf350a64a2d1915d19d901b298ee9b742f99d channels: - url: conda-forge used_env_vars: [] @@ -99,22 +99,20 @@ package: manager: conda platform: linux-64 dependencies: - __glibc: '>=2.17,<3.0.a0' aiohappyeyeballs: '>=2.5.0' aiosignal: '>=1.4.0' + async-timeout: '>=4.0,<6.0' attrs: '>=17.3.0' frozenlist: '>=1.1.1' - libgcc: '>=14' multidict: '>=4.5,<7.0' propcache: '>=0.2.0' - python: '>=3.13,<3.14.0a0' - python_abi: 3.13.* + python: '>=3.10' typing_extensions: '>=4.4' yarl: '>=1.17.0,<2.0' - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.14.1-py313hd6074c6_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/aiohttp-3.14.1-pyhf64b827_0.conda hash: - md5: cfc88e2202ea33635e6d69960fddc588 - sha256: f374f40167f46eabe4cd5142201a35eca9c7a82a14499b95b7c1348b09509d2a + md5: fc49257102291bf3724c550e7ce4b188 + sha256: 1ddfd04d7304becd30251933f6a21316a2b1d980e4d4b7398aa6650ce41e5ca4 category: main optional: false - name: aioitertools @@ -194,6 +192,18 @@ package: sha256: b3e9369529fe7d721b66f18680ff4b561e20dbf6507e209e1f60eac277c97560 category: main optional: false +- name: async-timeout + version: 5.0.1 + manager: conda + platform: linux-64 + dependencies: + python: '' + url: https://conda.anaconda.org/conda-forge/noarch/async-timeout-5.0.1-pyhcf101f3_2.conda + hash: + md5: 0d0ef7e4a0996b2c4ac2175a12b3bf69 + sha256: 6638b68ab2675d0bed1f73562a4e75a61863b903be1538282cddb56c8e8f75bd + category: main + optional: false - name: at-spi2-atk version: 2.38.0 manager: conda @@ -569,15 +579,11 @@ package: manager: conda platform: linux-64 dependencies: - __glibc: '>=2.17,<3.0.a0' - libgcc: '>=14' - python: '' - python_abi: 3.13.* - zstd: '>=1.5.7,<1.6.0a0' - url: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.6.0-py313h18e8e13_0.conda + python: '>=3.14' + url: https://conda.anaconda.org/conda-forge/noarch/backports.zstd-1.6.0-py314h680f03e_0.conda hash: - md5: fbc7d3707f09cae6648e6eb1b6203a5c - sha256: d7aca2b34335035ef80eaaebff4e5a0ae524b6f3792a82a144d38c4a81f42916 + md5: 40d89d8546ad6e139e73ec8f6d56068b + sha256: 709cac7434d1c5a8828105036212a2a36022a07d807e89e2e99cac939c2d2526 category: main optional: false - name: beautifulsoup4 @@ -657,11 +663,11 @@ package: libgcc: '>=14' numpy: '>=1.23,<3' python: '' - python_abi: 3.13.* - url: https://conda.anaconda.org/conda-forge/linux-64/bottleneck-1.6.0-np2py313hc18bace_3.conda + python_abi: 3.14.* + url: https://conda.anaconda.org/conda-forge/linux-64/bottleneck-1.6.0-np2py314h56abb78_3.conda hash: - md5: 5ce830ed3ab4a6f9deaf40bc02690e88 - sha256: 68eb068ffabc1f8d0eec8cf56b97df7fd9cfd456206bcb057f3ee4ca7efda3f2 + md5: 48b137fb9317635b90c335348518d0a6 + sha256: 58cc4ecb796ec8093863d13264aca2746fa833461b30fd24b620d1acee0efd08 category: main optional: false - name: branca @@ -716,12 +722,12 @@ package: __glibc: '>=2.17,<3.0.a0' libgcc: '>=14' libstdcxx: '>=14' - python: '>=3.13,<3.14.0a0' - python_abi: 3.13.* - url: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py313hf159716_1.conda + python: '>=3.14,<3.15.0a0' + python_abi: 3.14.* + url: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py314h3de4e8d_1.conda hash: - md5: 6c4d3597cf43f3439a51b2b13e29a4ba - sha256: dadec2879492adede0a9af0191203f9b023f788c18efd45ecac676d424c458ae + md5: 8910d2c46f7e7b519129f486e0fe927a + sha256: 3ad3500bff54a781c29f16ce1b288b36606e2189d0b0ef2f67036554f47f12b0 category: main optional: false - name: brunsli @@ -768,7 +774,7 @@ package: category: main optional: false - name: c-blosc2 - version: 3.1.3 + version: 3.1.4 manager: conda platform: linux-64 dependencies: @@ -778,22 +784,22 @@ package: lz4-c: '>=1.10.0,<1.11.0a0' zlib-ng: '>=2.3.3,<2.4.0a0' zstd: '>=1.5.7,<1.6.0a0' - url: https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-3.1.3-hc31b594_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-3.1.4-hc31b594_0.conda hash: - md5: 2f0eb57a686a4e27719ce0b0076784a1 - sha256: 4029fb93e133c0de986464c2f1b02630f141f976cb25b5b929994b34a2a51bf5 + md5: 9145eebfb1845c6364c7e6b99effc20e + sha256: 612cbf460e7a0541484713aee5ec74621197edc4eba3da20fe03a7bb9d1c4903 category: main optional: false - name: ca-certificates - version: 2026.5.20 + version: 2026.6.17 manager: conda platform: linux-64 dependencies: __unix: '' - url: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.5.20-hbd8a1cb_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda hash: - md5: 489b8e97e666c93f68fdb35c3c9b957f - sha256: 9812a303a1395e1dafbd92e5bc8a1ff6013bcbba0a09c7f03a8d23e43560aa9b + md5: a9965dd99f683c5f444428f896635716 + sha256: f8e3c730fa14ee3f170493779f06522c4acf89169f43db4f039727709b6419cf category: main optional: false - name: cached-property @@ -863,25 +869,25 @@ package: packaging: '>=21' pyproj: '>=3.3.1' pyshp: '>=2.3' - python: '>=3.13,<3.14.0a0' - python_abi: 3.13.* + python: '>=3.14.0rc2,<3.15.0a0' + python_abi: 3.14.* shapely: '>=2.0' - url: https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.25.0-py313h08cd8bf_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.25.0-py314ha0b5721_1.conda hash: - md5: a0d8dc5c90850d9f1a79f69c98aef0ff - sha256: 0ee1bf217caa0841b08d9182575cbf951bf40686afbfae5286cdd0e10ad20071 + md5: fe89c5fa422f215b0d75046ecd4667de + sha256: 700d462314bc9d76ab5df7307829f700e1ee72230c660ab9147fb7721822e983 category: main optional: false - name: certifi - version: 2026.5.20 + version: 2026.6.17 manager: conda platform: linux-64 dependencies: python: '>=3.10' - url: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.5.20-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.6.17-pyhd8ed1ab_0.conda hash: - md5: 9fefff2f745ea1cc2ef15211a20c054a - sha256: 645655a3510e38e625da136595f3f16f2130c3263630cc3bc8f60f619ddbe490 + md5: c13824fedced67005d3832c152fe9c2f + sha256: 6c13620e458ba43278379d0cdacc30c497336bddfda81681fd50d114a65c702f category: main optional: false - name: cf-xarray @@ -918,12 +924,12 @@ package: __glibc: '>=2.17,<3.0.a0' libgcc: '>=14' numpy: '>=1.23,<3' - python: '>=3.13,<3.14.0a0' - python_abi: 3.13.* - url: https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.5-py313h29aa505_1.conda + python: '>=3.14,<3.15.0a0' + python_abi: 3.14.* + url: https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.5-py314hc02f841_1.conda hash: - md5: c63d5f9d63fe2f48b0ad75005fcae7ba - sha256: 61400ff89fe435868a68a0e49ab24ec68fe0e8f7e10c52b947e7753994aa797f + md5: 552b5d9d8a2a4be882e1c638953e7281 + sha256: 5889371679ebd4cc4d7a1b9a4a6f5ca7146527b9c6da14ba83f2edadbc45ac82 category: main optional: false - name: charls @@ -1063,24 +1069,24 @@ package: libstdcxx: '>=14' numpy: '>=1.25' python: '' - python_abi: 3.13.* - url: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py313hc8edb43_4.conda + python_abi: 3.14.* + url: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py314h97ea11e_4.conda hash: - md5: 33639459bc29437315d4bff9ed5bc7a7 - sha256: 7f86eb205d2d7fcf2c82654a08c6a240623ac34cb406206b4b1f1afa5cda8e49 + md5: 95bede9cdb7a30a4b611223d52a01aa4 + sha256: b0314a7f1fb4a294b1a8bcf5481d4a8d9412a9fee23b7e3f93fb10e4d504f2cc category: main optional: false - name: cpython - version: 3.13.14 + version: 3.14.6 manager: conda platform: linux-64 dependencies: - python: '>=3.13,<3.14.0a0' + python: '>=3.14,<3.15.0a0' python_abi: '*' - url: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.14-py313hd8ed1ab_100.conda + url: https://conda.anaconda.org/conda-forge/noarch/cpython-3.14.6-py314hd8ed1ab_100.conda hash: - md5: 22ff6a23190a29024b0df04b4caa0c66 - sha256: 42995d97d7e83d2bedbe8173bc9aa022ea412bf33dd2ff0e3db2c01a5242cd0a + md5: b28fe35fd43d5f425c0dccbe5b5039fd + sha256: 7a548856ef5307890a8cadfc196655117658f8c24589ce175caa4c1c2ded9d13 category: main optional: false - name: cramjam @@ -1092,11 +1098,11 @@ package: libgcc: '>=14' libstdcxx: '>=14' python: '' - python_abi: 3.13.* - url: https://conda.anaconda.org/conda-forge/linux-64/cramjam-2.11.0-py313h7ef63f5_2.conda + python_abi: 3.14.* + url: https://conda.anaconda.org/conda-forge/linux-64/cramjam-2.11.0-py314haf003cf_2.conda hash: - md5: 258369ffa865db10983e02b11bda29c3 - sha256: de1acf0547cc7be6142df92b0da1c88a5bf780963cd243967e54af22652200ee + md5: 24b0934613e9e0404436ee469629cb74 + sha256: c0fa696e7120421450d7b35baeb94b905bf0e48b90a0f6287265ee4eeb5ba18e category: main optional: false - name: cycler @@ -1118,13 +1124,13 @@ package: dependencies: __glibc: '>=2.17,<3.0.a0' libgcc: '>=14' - python: '>=3.13,<3.14.0a0' - python_abi: 3.13.* + python: '>=3.14,<3.15.0a0' + python_abi: 3.14.* toolz: '>=0.10.0' - url: https://conda.anaconda.org/conda-forge/linux-64/cytoolz-1.1.0-py313h07c4f96_2.conda + url: https://conda.anaconda.org/conda-forge/linux-64/cytoolz-1.1.0-py314h5bd0f2a_2.conda hash: - md5: 7e7e3c5a8a28c6b8eb430183e0554adf - sha256: fd33f531288fb08afef72a65414d29caefbba31cb398533534794475af35b1b3 + md5: a6a32cab83d59c7812ddbb03220057e3 + sha256: 5edb3c0fbf5c39b66f71fef0264d4fbab561f6adbdd7ef88188b725a82fcd6da category: main optional: false - name: dask @@ -1343,12 +1349,12 @@ package: numpy: '>=1.23,<3' packaging: '' pandas: '>=1.5.0' - python: '>=3.13,<3.14.0a0' - python_abi: 3.13.* - url: https://conda.anaconda.org/conda-forge/linux-64/fastparquet-2026.5.0-py313h29aa505_0.conda + python: '>=3.14,<3.15.0a0' + python_abi: 3.14.* + url: https://conda.anaconda.org/conda-forge/linux-64/fastparquet-2026.5.0-py314hc02f841_0.conda hash: - md5: e8c0bf5e78acabc4a9af0f41f1eb68dc - sha256: 4806bae3d0f1436ad22725baa671570fd4701b9e2ee45dbe1b7b25bc054282b8 + md5: 7eacd1ab0881bd50ebf2824ae227098d + sha256: 344f92cb3e2e5e9d4d98219556b2987cbd6cead93e8c80be4fc824ba63e1911d category: main optional: false - name: filelock @@ -1377,13 +1383,13 @@ package: libgdal-core: '>=3.12.1,<3.13.0a0' libstdcxx: '>=14' pyparsing: '' - python: '>=3.13,<3.14.0a0' - python_abi: 3.13.* + python: '>=3.14,<3.15.0a0' + python_abi: 3.14.* shapely: '' - url: https://conda.anaconda.org/conda-forge/linux-64/fiona-1.10.1-py313hae45665_6.conda + url: https://conda.anaconda.org/conda-forge/linux-64/fiona-1.10.1-py314hbcf5174_6.conda hash: - md5: 5817b2e9b067dca0dc2dced6e941bbee - sha256: 81ae094da3b17f90643628fc20dce7a9a3007ff812ffc12adbe7d28c34587ddc + md5: 9973d51b9bb91ae8cca8cfff05d9106b + sha256: 6a25e057b4fc912ea56accdfd8b083653861c2b61fb875584385c9c27223334b category: main optional: false - name: folium @@ -1497,16 +1503,14 @@ package: manager: conda platform: linux-64 dependencies: - __glibc: '>=2.17,<3.0.a0' brotli: '' - libgcc: '>=14' munkres: '' - python: '>=3.13,<3.14.0a0' - python_abi: 3.13.* - url: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.63.0-py313h3dea7bd_0.conda + python: '>=3.10' + unicodedata2: '>=15.1.0' + url: https://conda.anaconda.org/conda-forge/noarch/fonttools-4.63.0-pyh7db6752_0.conda hash: - md5: ae83c999b4cfc4c171ce88b99c8b43cc - sha256: e0029a390d7aef29bd6e7c12a3759f5e0b989930b5781e544ca9bac0abcd8442 + md5: 0509ee74d95e5b98eb6fe2a47760e399 + sha256: c9752235f1ff7061d834e5e4a3d0adf71ebeeff2b3fad82dab607edce7f70c91 category: main optional: false - name: freetype @@ -1556,15 +1560,11 @@ package: manager: conda platform: linux-64 dependencies: - __glibc: '>=2.17,<3.0.a0' - libgcc: '>=14' - libstdcxx: '>=14' - python: '>=3.13,<3.14.0a0' - python_abi: 3.13.* - url: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.8.0-py313h6b9daa2_0.conda + python: '>=3.10' + url: https://conda.anaconda.org/conda-forge/noarch/frozenlist-1.8.0-pyhf298e5d_0.conda hash: - md5: a51a4bc5d02deee4354781783c132b7f - sha256: 8b228f80d05f6ea9d1ed5051fb343b1623777949d2e2d377e30eb348f412c6f2 + md5: 7a2d9f4d9f57da47251b2050b149bdf8 + sha256: 5f5a4e502981700b40ffbce6e3601ff5f95305839b5d5c49d1ef1c4ed33aadde category: main optional: false - name: fsspec @@ -1743,7 +1743,7 @@ package: category: main optional: false - name: greenlet - version: 3.5.1 + version: 3.5.2 manager: conda platform: linux-64 dependencies: @@ -1751,11 +1751,11 @@ package: libgcc: '>=14' libstdcxx: '>=14' python: '' - python_abi: 3.13.* - url: https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.5.1-py313h5d5ffb9_0.conda + python_abi: 3.14.* + url: https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.5.2-py314h42812f9_0.conda hash: - md5: 9867806877cf07748b06ed37462473e3 - sha256: 877e63a855f344c389160720055621c4aeb872d9c7b5ad3beb2af18952efe4f5 + md5: 5fef7ee7545d98388c129de1a47537bb + sha256: 4aa1f8147701b5ab71a71aa208ec1a4d0c8cfcaa68f1fff9ad5d2015abb8ddde category: main optional: false - name: gtk3 @@ -1855,12 +1855,12 @@ package: hdf5: '>=2.1.0,<3.0a0' libgcc: '>=14' numpy: '>=1.23,<3' - python: '>=3.13,<3.14.0a0' - python_abi: 3.13.* - url: https://conda.anaconda.org/conda-forge/linux-64/h5py-3.16.0-nompi_py313h22c32d4_102.conda + python: '>=3.14,<3.15.0a0' + python_abi: 3.14.* + url: https://conda.anaconda.org/conda-forge/linux-64/h5py-3.16.0-nompi_py314hddf7a69_102.conda hash: - md5: 37727e0bcda5059c33c83fdf5b13a9a1 - sha256: 3def6d562885610497befa9dd81c685c53bb027309407797ad9918d4179dda21 + md5: d93afa30018997705dd04513eeb5ac0f + sha256: 48e18f20bc1ff15433299dd77c20a4160eb29572eea799ae5a73632c6c3d7dfd category: main optional: false - name: harfbuzz @@ -2008,7 +2008,7 @@ package: blosc: '>=1.21.6,<2.0a0' brunsli: '>=0.1,<1.0a0' bzip2: '>=1.0.8,<2.0a0' - c-blosc2: '>=3.1.3,<3.2.0a0' + c-blosc2: '>=3.1.4,<3.2.0a0' charls: '>=2.4.4,<2.5.0a0' giflib: '>=5.2.2,<5.3.0a0' jxrlib: '>=1.1,<1.2.0a0' @@ -2033,17 +2033,17 @@ package: lz4-c: '>=1.10.0,<1.11.0a0' numpy: '>=1.23,<3' openjpeg: '>=2.5.4,<3.0a0' - openjph: '>=0.28.0,<0.29.0a0' - python: '>=3.13,<3.14.0a0' - python_abi: 3.13.* + openjph: '>=0.29.0,<0.30.0a0' + python: '>=3.14,<3.15.0a0' + python_abi: 3.14.* 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' - url: https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2026.6.6-py313h0702ed5_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2026.6.6-py314h834e057_2.conda hash: - md5: 7d0d7d04ab80890c10b3647e0c7a42ea - sha256: afa1675ec133f896c42012f3852c98f3496342a00deb656ac4f3c47eeea3ee0d + md5: 739e400b5579069eb064fac856de1a5e + sha256: 2cf9151299554c4b677077e8bd3dbd7d82b644fa38017d2a9bf747a22b2f2ba4 category: main optional: false - name: imagesize @@ -2221,11 +2221,11 @@ package: libgcc: '>=14' libstdcxx: '>=14' python: '' - python_abi: 3.13.* - url: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.0-py313hc8edb43_0.conda + python_abi: 3.14.* + url: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.0-py314h97ea11e_0.conda hash: - md5: b81883b9dbf5069821c2fb09a8ba1407 - sha256: 0447d2901639f295989c5ccba7b1c367ed78b216e0d2705327a8c8a87a31177e + md5: 7397e418cab519b8d789936cf2dde6f6 + sha256: e3488ea4a336f29e57de8f282bf40c0505cfc482e03004615e694b48e7d9c79f category: main optional: false - name: krb5 @@ -3646,13 +3646,13 @@ package: libgcc: '>=14' libstdcxx: '>=14' libzlib: '>=1.3.2,<2.0a0' - python: '>=3.13,<3.14.0a0' - python_abi: 3.13.* + python: '>=3.14,<3.15.0a0' + python_abi: 3.14.* zstd: '>=1.5.7,<1.6.0a0' - url: https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.47.0-py313hdd307be_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.47.0-py314h946fb2a_1.conda hash: - md5: 916eb82289f0d2209176fd2d05c5d1f5 - sha256: 3e9bf7bdbae5c3bc8f3831351016e880c931816c27f076fbd5d400914727e539 + md5: 22feb934c64b2d62b3b2b278eb40629e + sha256: e77292afb920e8b46f75c98a370d79aa4a922ff1ebed38c54381ad5d613c834e category: main optional: false - name: locket @@ -3691,12 +3691,12 @@ package: 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.* - url: https://conda.anaconda.org/conda-forge/linux-64/lxml-6.1.1-py313h4a16004_0.conda + python: '>=3.14,<3.15.0a0' + python_abi: 3.14.* + url: https://conda.anaconda.org/conda-forge/linux-64/lxml-6.1.1-py314hae3bed6_0.conda hash: - md5: f80bcdfdc772695738b1a17215868317 - sha256: 762e5c38726c808404df46751ec21e4b00b633b613d11f265f0e3a0454fe07ed + md5: d541b0e73ecc183f9062a1aa95acbd1b + sha256: 7238bd901bc6efe5d568c74a32d67f4135abbbdebfd6954a2e48b3aa399835cd category: main optional: false - name: lz4 @@ -3708,11 +3708,11 @@ package: libgcc: '>=14' lz4-c: '>=1.10.0,<1.11.0a0' python: '' - python_abi: 3.13.* - url: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py313h28739b2_1.conda + python_abi: 3.14.* + url: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py314hd4c109c_1.conda hash: - md5: e69ad33075938ba81e43311da86b809c - sha256: cbc82f4fa7587376c038d2f0471a73efa7ade4439857b04a0cc839262f1de6e5 + md5: 2f6295571ea5e9278046efc3ef377a98 + sha256: 7f3083018be486b73c82e5e2421ab882d5231fcd424843c96058b01ce5f3cbaf category: main optional: false - name: lz4-c @@ -3766,12 +3766,12 @@ package: dependencies: __glibc: '>=2.17,<3.0.a0' libgcc: '>=14' - python: '>=3.13,<3.14.0a0' - python_abi: 3.13.* - url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py313h3dea7bd_1.conda + python: '>=3.14,<3.15.0a0' + python_abi: 3.14.* + url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py314h67df5f8_1.conda hash: - md5: aeb9b9da79fd0258b3db091d1fefcd71 - sha256: 72ed7c0216541d65a17b171bf2eec4a3b81e9158d8ed48e59e1ecd3ae302d263 + md5: 9a17c4307d23318476d7fbf0fedc0cde + sha256: c279be85b59a62d5c52f5dd9a4cd43ebd08933809a8416c22c3131595607d4cf category: main optional: false - name: matplotlib-base @@ -3794,15 +3794,15 @@ package: packaging: '>=20.0' pillow: '>=8' pyparsing: '>=2.3.1' - python: '>=3.13,<3.14.0a0' + python: '>=3.14,<3.15.0a0' python-dateutil: '>=2.7' - python_abi: 3.13.* + python_abi: 3.14.* qhull: '>=2020.2,<2020.3.0a0' tk: '>=8.6.13,<8.7.0a0' - url: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.11.0-py313hd23ff06_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.11.0-py314h261f116_0.conda hash: - md5: 041d42f74664dbe8b7725210c6f4ddc4 - sha256: 66239ff24c1409c9875c37ff6684ae424cbf5ea523d7f4f9533e840618883221 + md5: 6b2f4b994b97722933dacd51776d5c49 + sha256: d89de93d3cd4d4b2c3ce2f081df1b7ea83b8b3d8c4ba05aea1968ee43a4d9954 category: main optional: false - name: minizip @@ -3826,19 +3826,19 @@ package: category: main optional: false - name: msgpack-python - version: 1.1.2 + version: 1.2.0 manager: conda platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' libgcc: '>=14' libstdcxx: '>=14' - python: '>=3.13,<3.14.0a0' - python_abi: 3.13.* - url: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.1.2-py313h7037e92_1.conda + python: '>=3.14,<3.15.0a0' + python_abi: 3.14.* + url: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.2.0-py314h9891dd4_0.conda hash: - md5: cd1cfde0ea3bca6c805c73ffa988b12a - sha256: fac37e267dd1d07527f0b078ffe000916e80e8c89cfe69d466f5775b88e93df2 + md5: cb1c896c307a55e1c3adc06ad8f616d7 + sha256: 9d712735adfc1f73ceee231b8c6ea47ecbf2e63a93d816891cca9ef19caa8b8a category: main optional: false - name: multidict @@ -3846,14 +3846,12 @@ package: manager: conda platform: linux-64 dependencies: - __glibc: '>=2.17,<3.0.a0' - libgcc: '>=14' - python: '>=3.13,<3.14.0a0' - python_abi: 3.13.* - url: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.7.1-py313h3dea7bd_0.conda + python: '>=3.10' + typing-extensions: '>=4.1.0' + url: https://conda.anaconda.org/conda-forge/noarch/multidict-6.7.1-pyh62beb40_0.conda hash: - md5: 4f3e7bf5a9fc60a7d39047ba9e84c84c - sha256: 3d277c0a9e237dc4c64f0b6414f3cf3e95806b2f5d03dec9c50f0ad0db5b7df1 + md5: ad92dba7ca0af0e3dca083a0fa6a3423 + sha256: e9933d2526345a4a1c08b76f2322dd482122b683369b0536605353b5b153d755 category: main optional: false - name: munkres @@ -3982,12 +3980,12 @@ package: libstdcxx: '>=14' llvmlite: '>=0.47.0,<0.48.0a0' numpy: '>=1.23,<3' - python: '>=3.13,<3.14.0a0' - python_abi: 3.13.* - url: https://conda.anaconda.org/conda-forge/linux-64/numba-0.65.1-py313h5dce7c4_1.conda + python: '>=3.14,<3.15.0a0' + python_abi: 3.14.* + url: https://conda.anaconda.org/conda-forge/linux-64/numba-0.65.1-py314h8169c2f_1.conda hash: - md5: b19dde1f8eee0382e51edcd0b62bfa8c - sha256: 0b3a763972fea13df4025f9021b2452e86e6a8cd55f7594ea35b8cbafa834658 + md5: d74691e038386bb543a574122c72d834 + sha256: 750f8893a16721394969c030e7778212b99c54aab137a9744cafdb70a6fd513d category: main optional: false - name: numcodecs @@ -4001,13 +3999,13 @@ package: libstdcxx: '>=14' msgpack-python: '' numpy: '>=1.24' - python: '>=3.13,<3.14.0a0' - python_abi: 3.13.* + python: '>=3.14,<3.15.0a0' + python_abi: 3.14.* typing_extensions: '' - url: https://conda.anaconda.org/conda-forge/linux-64/numcodecs-0.15.1-py313h08cd8bf_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/numcodecs-0.15.1-py314ha0b5721_1.conda hash: - md5: a7a7ffe26b48c1b20ff0e304f5ea51d3 - sha256: 208df0f2b426937cd94179d8d6ba7b0ca9d532f09bb478180aa45681c9acdd44 + md5: 23a5b153b5011ce92797637a66dd4a89 + sha256: 6241b2693454961398c7dd1f48c0ae4e326578e5d811148afa1b890780c22f76 category: main optional: false - name: numpy @@ -4022,11 +4020,11 @@ package: liblapack: '>=3.9.0,<4.0a0' libstdcxx: '>=14' python: '' - python_abi: 3.13.* - url: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.6-py313hf6604e3_0.conda + python_abi: 3.14.* + url: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.6-py314h2b28147_0.conda hash: - md5: a5fdb80595ec7912e6b1634b2abd4b50 - sha256: 3740c9bc562db9c6f252f8697c5c7948bb48784346856f6d6308aba72ea4f00b + md5: f49b5f950379e0b97c35ca97682f7c6a + sha256: bc61ae892973751a6b0e6ecea57ed6d7053224bddcb007165d6ceb1d7344ad47 category: main optional: false - name: openjpeg @@ -4047,7 +4045,7 @@ package: category: main optional: false - name: openjph - version: 0.28.1 + version: 0.29.0 manager: conda platform: linux-64 dependencies: @@ -4055,10 +4053,10 @@ package: libgcc: '>=14' libstdcxx: '>=14' libtiff: '>=4.7.1,<4.8.0a0' - url: https://conda.anaconda.org/conda-forge/linux-64/openjph-0.28.1-h8d634f6_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/openjph-0.29.0-h8d634f6_0.conda hash: - md5: 124bc40f781a446d9d4ffe5c37ef9ea2 - sha256: 8d5ece40cd6870bcb0f6a26ed8784480d787357b24d42d52a3f64d5f11a5d707 + md5: b27832bf274bd4a399d899341826f682 + sha256: baa037746498eb420a434ee92caa767fd39de9435713a25a64ba2b6558020a4e category: main optional: false - name: openssl @@ -4135,11 +4133,11 @@ package: numpy: '>=1.23,<3' python: '' python-dateutil: '>=2.8.2' - python_abi: 3.13.* - url: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.3-py313hbfd7664_0.conda + python_abi: 3.14.* + url: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.3-py314hb4ffadd_0.conda hash: - md5: 70d4dd67877354f6912af31177cb1117 - sha256: a02d58327a57eb2f149c040b31c758fc6acea7c6aa5cb09b40b146eb6ed637d9 + md5: bc2e1390314b1269e66fb1966fbcae5d + sha256: 8e4b161f3f7fbdf17f842b518ff3794b6af9378a90d095719d7153360d126dc1 category: main optional: false - name: pango @@ -4211,13 +4209,13 @@ package: libxcb: '>=1.17.0,<2.0a0' openjpeg: '>=2.5.4,<3.0a0' python: '' - python_abi: 3.13.* + python_abi: 3.14.* tk: '>=8.6.13,<8.7.0a0' zlib-ng: '>=2.3.3,<2.4.0a0' - url: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.2.0-py313h80991f8_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.2.0-py314h8ec4b1a_0.conda hash: - md5: 7245f1bbf52ed5e3818d742f51b44a7d - sha256: 55a76548bb003ff6deac9bf209b279d428030f230632fb70f15ae153aed05158 + md5: 76c4757c0ec9d11f969e8eb44899307b + sha256: 123d8a7c16c88658b4f29e9f115a047598c941708dade74fbaff373a32dbec5e category: main optional: false - name: pip @@ -4313,14 +4311,11 @@ package: manager: conda platform: linux-64 dependencies: - __glibc: '>=2.17,<3.0.a0' - libgcc: '>=14' - python: '>=3.13,<3.14.0a0' - python_abi: 3.13.* - url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.5.2-py313h3dea7bd_0.conda + python: '>=3.10' + url: https://conda.anaconda.org/conda-forge/noarch/propcache-0.5.2-pyh7db6752_0.conda hash: - md5: 9f8899a9482c1737bf402d8218780df1 - sha256: 1fc8367d7ab0ffe70c3d9b96cf1cc953da1d8100899042337f554138a3d2fa69 + md5: e3cbba0c0ab42143adeefd1d09866695 + sha256: c9be65d8dd0b34a795be877359468f2a5cb521c63f264de8c4e5a6141e19df30 category: main optional: false - name: prov @@ -4349,11 +4344,11 @@ package: __glibc: '>=2.17,<3.0.a0' libgcc: '>=14' python: '' - python_abi: 3.13.* - url: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py313h54dd161_0.conda + python_abi: 3.14.* + url: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py314h0f05182_0.conda hash: - md5: 25fe6e02c2083497b3239e21b49d8093 - sha256: f19fd682d874689dfde20bf46d7ec1a28084af34583e0405685981363af47c91 + md5: 4f225a966cfee267a79c5cb6382bd121 + sha256: f15574ed6c8c8ed8c15a0c5a00102b1efe8b867c0bd286b498cd98d95bd69ae5 category: main optional: false - name: pthread-stubs @@ -4379,12 +4374,12 @@ package: libarrow-substrait: 24.0.0.* libparquet: 24.0.0.* pyarrow-core: 24.0.0 - python: '>=3.13,<3.14.0a0' - python_abi: 3.13.* - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-24.0.0-py313h78bf25f_0.conda + python: '>=3.14,<3.15.0a0' + python_abi: 3.14.* + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-24.0.0-py314hdafbbf9_0.conda hash: - md5: c93f1ad82cb397a98d6cadb4a07572af - sha256: 096c8948fc4a0436dd1e32294f57be135819909a112978833bc749d43b14dd33 + md5: 6629041b133a9d65d68c4f2269432378 + sha256: 03c421256cc31c4487b225f6a560d25fbf6102fc304b4d31fe955168ef14f630 category: main optional: false - name: pyarrow-core @@ -4398,12 +4393,12 @@ package: libgcc: '>=14' libstdcxx: '>=14' libzlib: '>=1.3.2,<2.0a0' - python: '>=3.13,<3.14.0a0' - python_abi: 3.13.* - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-24.0.0-py313h98bfbea_0_cpu.conda + python: '>=3.14,<3.15.0a0' + python_abi: 3.14.* + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-24.0.0-py314h969be7f_0_cpu.conda hash: - md5: 4c7cc18a6d6d18557c18069af469a96c - sha256: feeb4ae83dffa8af4ee131279925e22e6969958f14342015f94d75cc196ef689 + md5: b066370d80ec7fca3c1d4028dc09164f + sha256: 772d3c847811d1dbfd7d4431092be95f36996281eb8348e36b2cfba88106aed1 category: main optional: false - name: pydot @@ -4443,12 +4438,12 @@ package: libstdcxx: '>=14' numpy: '' packaging: '' - python: '>=3.13,<3.14.0a0' - python_abi: 3.13.* - url: https://conda.anaconda.org/conda-forge/linux-64/pyogrio-0.12.1-py313hae45665_0.conda + python: '>=3.14,<3.15.0a0' + python_abi: 3.14.* + url: https://conda.anaconda.org/conda-forge/linux-64/pyogrio-0.12.1-py314hbcf5174_0.conda hash: - md5: fa543477ad16de26ce5f2fd5bcd249fa - sha256: 36d91e089f7c6fa3466a07e9c2167a64b97837433c09b6f3ba632c978cce22a3 + md5: b6696a3d5c567d3b2015bf77f454f247 + sha256: 53b72845bc9051b1b94c83ed06047788cdb07af529b9368393ac1a9eb720ac21 category: main optional: false - name: pyparsing @@ -4473,11 +4468,11 @@ package: libgcc: '>=14' proj: '>=9.8.0,<9.9.0a0' python: '' - python_abi: 3.13.* - url: https://conda.anaconda.org/conda-forge/linux-64/pyproj-3.7.2-py313he648cc1_4.conda + python_abi: 3.14.* + url: https://conda.anaconda.org/conda-forge/linux-64/pyproj-3.7.2-py314h7ce3bca_4.conda hash: - md5: fe69af9ea9bb222c067bca5888e5aabe - sha256: 777147d5cc024e5d50c6a10699d967f6989d3efbb8fe10b1b34e7dc2afe192fd + md5: d5d862492bbd0f4be1f6d57289459066 + sha256: b36c58a1a53a7dd94005f61e8b4a290d3bc809b7972e1265308f6f14e87ee915 category: main optional: false - name: pyshp @@ -4506,7 +4501,7 @@ package: category: main optional: false - name: python - version: 3.13.14 + version: 3.14.6 manager: conda platform: linux-64 dependencies: @@ -4523,15 +4518,15 @@ package: libzlib: '>=1.3.2,<2.0a0' ncurses: '>=6.6,<7.0a0' openssl: '>=3.5.7,<4.0a0' - pip: '' - python_abi: 3.13.* + python_abi: 3.14.* readline: '>=8.3,<9.0a0' tk: '>=8.6.13,<8.7.0a0' tzdata: '' - url: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.14-h6add32d_100_cp313.conda + zstd: '>=1.5.7,<1.6.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.6-habeac84_100_cp314.conda hash: - md5: 93762cd272814a142cf21d794f8fb0c1 - sha256: f2146aff59ce4b571a8f1d1acf94f9bed6cc18ab5632d7dcc940fb48ecdeef99 + md5: 0b9b2f83b5b600e1ac38becde8d0dd44 + sha256: 6d28ac2b061179deb434d3d57afa98ffd20ec3c5d44ab8048a1ca33424b22d38 category: main optional: false - name: python-dateutil @@ -4564,27 +4559,27 @@ package: category: main optional: false - name: python-gil - version: 3.13.14 + version: 3.14.6 manager: conda platform: linux-64 dependencies: - cpython: 3.13.14.* + cpython: 3.14.6.* python_abi: '*' - url: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.14-h4df99d1_100.conda + url: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.14.6-h4df99d1_100.conda hash: - md5: 200323d73f85b9c5c411db8c8c4942db - sha256: c7a8f98ea1cda5a84377c236ccd4bf1b6e2212c5a258d60bba295fb9f0260235 + md5: 224f69f177eb5aae6c9a6052846bf609 + sha256: 84c129bdd6abcecac42a948f2670d17fe735d02d3a5a483a9b1f1bc33ba38c28 category: main optional: false - name: python_abi - version: '3.13' + version: '3.14' manager: conda platform: linux-64 dependencies: {} - url: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda + url: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda hash: - md5: 94305520c52a4aa3f6c2b1ff6008d9f8 - sha256: 210bffe7b121e651419cb196a2a63687b087497595c9be9d20ebe97dd06060a7 + md5: 0539938c55b6b1a59b560e843ad864a4 + sha256: ad6d2e9ac39751cc0529dd1566a26751a0bf2542adb0c232533d32e176e21db5 category: main optional: false - name: pywps @@ -4624,13 +4619,13 @@ package: dependencies: __glibc: '>=2.17,<3.0.a0' libgcc: '>=14' - python: '>=3.13,<3.14.0a0' - python_abi: 3.13.* + python: '>=3.14,<3.15.0a0' + python_abi: 3.14.* yaml: '>=0.2.5,<0.3.0a0' - url: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py313h3dea7bd_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py314h67df5f8_1.conda hash: - md5: f256753e840c3cd3766488c9437a8f8b - sha256: ef7df29b38ef04ec67a8888a4aa039973eaa377e8c4b59a7be0a1c50cd7e4ac6 + md5: 2035f68f96be30dc60a5dfd7452c7941 + sha256: b318fb070c7a1f89980ef124b80a0b5ccf3928143708a85e0053cde0169c699d category: main optional: false - name: qhull @@ -4763,11 +4758,11 @@ package: __glibc: '>=2.17,<3.0.a0' libgcc: '>=14' python: '' - python_abi: 3.13.* - url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-2026.5.1-py313hafbe609_0.conda + python_abi: 3.14.* + url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-2026.5.1-py314h1bee95f_0.conda hash: - md5: 335b86e1a00e5edd05c5172ddc524919 - sha256: fc1d2e35b98f8a593d9abbefbbc5d71de1ef9bfa1dfdc9039ae7ef8922ced763 + md5: fb5b4fc759b225d4f32730cc8380ec8e + sha256: 79d753848377c415578f42285f5f87be711503b887c99e8890fd51d3fae1d6a5 category: main optional: false - name: s2n @@ -4812,13 +4807,13 @@ package: narwhals: '>=2.0.1' numpy: '>=1.23,<3' python: '' - python_abi: 3.13.* + python_abi: 3.14.* scipy: '>=1.10.0' threadpoolctl: '>=3.5.0' - url: https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.9.0-np2py313h16d504d_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.9.0-np2py314hf09ca88_0.conda hash: - md5: 79dc96526e178928df7363e80169e8c4 - sha256: f73359758333651f01f531ec2ab960ea0445bf89810066f52c3ab4218d755abe + md5: 30883954413aad9e3ac42134bef91ffe + sha256: 6a01f4403db746acd676e34e80e3a14d041f2261d658402ca13dae6407c35d44 category: main optional: false - name: scipy @@ -4835,12 +4830,12 @@ package: liblapack: '>=3.9.0,<4.0a0' libstdcxx: '>=14' numpy: '>=1.25.2' - python: '>=3.13,<3.14.0a0' - python_abi: 3.13.* - url: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.17.1-py313h4b8bb8b_1.conda + python: '>=3.14,<3.15.0a0' + python_abi: 3.14.* + url: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.17.1-py314hf07bd8e_1.conda hash: - md5: 4b098461b0b5edff1a9359c25e675cfd - sha256: 2ecb1a3d6aacd20e279a72196954bc8de2e83302823f9dd9f8b9b3310d1bf515 + md5: 718437171257e579e7d1f3b51c62536f + sha256: 505e3466e97c16d125a9adb61a80bdfc2fefe62bc9f0bfe798eda88706e4b0ed category: main optional: false - name: setuptools @@ -4864,12 +4859,12 @@ package: geos: '>=3.14.1,<3.14.2.0a0' libgcc: '>=14' numpy: '>=1.23,<3' - python: '>=3.13,<3.14.0a0' - python_abi: 3.13.* - url: https://conda.anaconda.org/conda-forge/linux-64/shapely-2.1.2-py313had47c43_2.conda + python: '>=3.14,<3.15.0a0' + python_abi: 3.14.* + url: https://conda.anaconda.org/conda-forge/linux-64/shapely-2.1.2-py314hbe3edd8_2.conda hash: - md5: 6e550dd748e9ac9b2925411684e076a1 - sha256: 0bf96349dd2cccba4faf6b98f2f3e02767cdc8b78a6bc1a0ee4f88bddee84917 + md5: 5963e6ee81772d450a35e6bc95522761 + sha256: 17cb5cec9283f993072e8b6f5e1417d8d892cc5efa27029eae954ab06b33c7e2 category: main optional: false - name: six @@ -5063,12 +5058,12 @@ package: greenlet: '!=0.4.17' libgcc: '>=14' python: '' - python_abi: 3.13.* + python_abi: 3.14.* typing-extensions: '>=4.6.0' - url: https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.51-py313h54dd161_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.51-py314h0f05182_0.conda hash: - md5: 28d8cadca137a5cf4407b4a220bae38d - sha256: 15f16c47557a040bcd083776672c1dfb7a2cd79a57b6cfc368ce0da6ded707fa + md5: aeb7447f3ea37b2bb32167267dcf0bfe + sha256: 3c46e9af535a376c7269b61563f84c601235b00d50fc97f87ffbf3b68a51fe17 category: main optional: false - name: sqlite @@ -5173,12 +5168,12 @@ package: dependencies: __glibc: '>=2.17,<3.0.a0' libgcc: '>=14' - python: '>=3.13,<3.14.0a0' - python_abi: 3.13.* - url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.7-py313h07c4f96_0.conda + python: '>=3.14,<3.15.0a0' + python_abi: 3.14.* + url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.7-py314h5bd0f2a_0.conda hash: - md5: 9665531f18d2bcbc946e3ba0cf53ea91 - sha256: ed2f17b2bc92389187b47e7444aa7d6ab6c70c3f3ba6bf2ced508027e60e82cb + md5: 4a8e5889712641aabdf6695e292857fe + sha256: bbb7056f7c5fd606df16ed73ee68687050de2c02fd69a3f69a1cb533a7ed2ae8 category: main optional: false - name: typing-extensions @@ -5216,6 +5211,21 @@ package: sha256: 1d30098909076af33a35017eed6f2953af1c769e273a0626a04722ac4acaba3c category: main optional: false +- name: unicodedata2 + version: 17.0.1 + manager: conda + platform: linux-64 + dependencies: + __glibc: '>=2.17,<3.0.a0' + libgcc: '>=14' + python: '>=3.14,<3.15.0a0' + python_abi: 3.14.* + url: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-17.0.1-py314h5bd0f2a_0.conda + hash: + md5: 494fdf358c152f9fdd0673c128c2f3dd + sha256: ff1c1d7c23b91c9b0eb93a3e1380f4e2ac6c37ea2bba4f932a5484e9a55bba30 + category: main + optional: false - name: uriparser version: 0.9.8 manager: conda @@ -5281,12 +5291,12 @@ package: dependencies: __glibc: '>=2.17,<3.0.a0' libgcc: '>=14' - python: '>=3.13,<3.14.0a0' - python_abi: 3.13.* - url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.2.1-py313h07c4f96_0.conda + python: '>=3.14,<3.15.0a0' + python_abi: 3.14.* + url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.2.1-py314h5bd0f2a_0.conda hash: - md5: 5ba52a9fe1509b87de4d18f26d2fe619 - sha256: 852d62cce1d7d6ad60fbfbc4ae40981eebbde5f8b68695157d1c96c3ed8f59c3 + md5: 7e4cdd7cc4909e0c9e0a75b3d74e1cad + sha256: bc53c274d2f7ddbd0ce9212eb72a99d17abe42069e1c78139c5581011ea85bd6 category: main optional: false - name: xarray @@ -5632,17 +5642,14 @@ package: manager: conda platform: linux-64 dependencies: - __glibc: '>=2.17,<3.0.a0' idna: '>=2.0' - libgcc: '>=14' multidict: '>=4.0' propcache: '>=0.2.1' - python: '>=3.13,<3.14.0a0' - python_abi: 3.13.* - url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.24.2-py313h3dea7bd_0.conda + python: '>=3.10' + url: https://conda.anaconda.org/conda-forge/noarch/yarl-1.24.2-pyh7db6752_0.conda hash: - md5: 48b599c76bdb7e0c367a86b11c24dd70 - sha256: 5241c3132540458b69bc633fcb209887cc656190f176138c3391bea17e366910 + md5: 517da2b90b0910492f03ae3b297efff9 + sha256: 360b1a9367e076fdb7889d6fc902a57041e6c190ecfd4d3660f84bd3c91a36b5 category: main optional: false - name: zarr diff --git a/linux-64.spec b/linux-64.spec index d88aebf..88fde15 100644 --- a/linux-64.spec +++ b/linux-64.spec @@ -1,6 +1,6 @@ # Generated by conda-lock. # platform: linux-64 -# input_hash: 86a0f567fe3977b323c60ba59bcc48bcc627c674d930acbbd7cf172ef0821f0e +# input_hash: e36571cfb004c2f48ac045f4e7bdf350a64a2d1915d19d901b298ee9b742f99d @EXPLICIT https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2#34893075a5c9e55cdafac56607368fc6 @@ -9,9 +9,9 @@ https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.co https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_3.conda#129e404c5b001f3ef5581316971e3ea0 https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.27.0-ha770c72_0.conda#f8dcb0cff8f84f428bf76f1169bf50a7 https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_1.conda#16c2a0e9c4a166e53632cfca4f68d020 -https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda#94305520c52a4aa3f6c2b1ff6008d9f8 +https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda#0539938c55b6b1a59b560e843ad864a4 https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda#ad659d0a2b3e47e38d829aa8cad2d610 -https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.5.20-hbd8a1cb_0.conda#489b8e97e666c93f68fdb35c3c9b957f +https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda#a9965dd99f683c5f444428f896635716 https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda#a7970cd949a077b7cb9696379d338681 https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_3.conda#eb83f3f8cecc3e9bff9e250817fc69b6 https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_19.conda#faac990cb7aedc7f3a2224f2c9b0c26c @@ -104,7 +104,7 @@ https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.26.3-h3bf836e_5.conda https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda#2c2fae981fd2afd00812c92ac47d023d https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.2.0-hb03c661_1.conda#af39b9a8711d4a8d437b52c1d78eb6a1 https://conda.anaconda.org/conda-forge/linux-64/brunsli-0.1-hd1e3526_2.conda#5948f4fead433c6e5c46444dbfb01162 -https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-3.1.3-hc31b594_0.conda#2f0eb57a686a4e27719ce0b0076784a1 +https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-3.1.4-hc31b594_0.conda#9145eebfb1845c6364c7e6b99effc20e https://conda.anaconda.org/conda-forge/linux-64/freexl-2.0.0-h9dce30a_2.conda#ecb5d11305b8ba1801543002e69d2f2f https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda#ff862eebdfeb2fd048ae9dc92510baca https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda#bd77f8da987968ec3927990495dc22e4 @@ -123,7 +123,7 @@ https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.22.0-h7d032f7_2.cond https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda#cd5a90476766d53e901500df9215e927 https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.3-hca6bf5a_0.conda#e79d2c2f24b027aa8d5ab1b1ba3061e7 https://conda.anaconda.org/conda-forge/linux-64/libzopfli-1.0.3-h9c3ff4c_0.tar.bz2#c66fe2d123249af7651ebde8984c51c2 -https://conda.anaconda.org/conda-forge/linux-64/python-3.13.14-h6add32d_100_cp313.conda#93762cd272814a142cf21d794f8fb0c1 +https://conda.anaconda.org/conda-forge/linux-64/python-3.14.6-habeac84_100_cp314.conda#0b9b2f83b5b600e1ac38becde8d0dd44 https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda#353823361b1d27eb3960efb076dfcaf6 https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.53.2-hbc0de68_0.conda#38d9bf35a4cc83094a327811e548b660 https://conda.anaconda.org/conda-forge/linux-64/uriparser-0.9.8-hac33072_0.conda#d71d3a66528853c0a1ac2c02d79a0284 @@ -133,22 +133,23 @@ https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.6.2-pyhd8ed1ab_ https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda#1fd9696649f65fd6611fcdb4ffec738a https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyhd8ed1ab_1.conda#f4e90937bbfc3a4a92539545a37bb448 https://conda.anaconda.org/conda-forge/noarch/asciitree-0.3.3-py_2.tar.bz2#c0481c9de49f040272556e2cedf42816 +https://conda.anaconda.org/conda-forge/noarch/async-timeout-5.0.1-pyhcf101f3_2.conda#0d0ef7e4a0996b2c4ac2175a12b3bf69 https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda#f730d54ba9cd543666d7220c9f7ed563 https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda#c6b0543676ecb1fb2d7643941fe375f2 https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.7.1-h9cf6be0_2.conda#2c304605f9074f072c92c0d8de175a1a https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.11.0-h6488f85_2.conda#da0be1e8cb4a43c876f26d9d812dea06 https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_1.conda#f1976ce927373500cc19d3c0b2c85177 -https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.6.0-py313h18e8e13_0.conda#fbc7d3707f09cae6648e6eb1b6203a5c +https://conda.anaconda.org/conda-forge/noarch/backports.zstd-1.6.0-py314h680f03e_0.conda#40d89d8546ad6e139e73ec8f6d56068b https://conda.anaconda.org/conda-forge/linux-64/brotli-1.2.0-hed03a55_1.conda#8ccf913aaba749a5496c17629d859ed1 -https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py313hf159716_1.conda#6c4d3597cf43f3439a51b2b13e29a4ba +https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py314h3de4e8d_1.conda#8910d2c46f7e7b519129f486e0fe927a https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2#576d629e47797577ab0f1b351297ef4a -https://conda.anaconda.org/conda-forge/noarch/certifi-2026.5.20-pyhd8ed1ab_0.conda#9fefff2f745ea1cc2ef15211a20c054a +https://conda.anaconda.org/conda-forge/noarch/certifi-2026.6.17-pyhd8ed1ab_0.conda#c13824fedced67005d3832c152fe9c2f https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda#a9167b9571f3baa9d448faa2139d1089 https://conda.anaconda.org/conda-forge/noarch/click-8.4.1-pyhc90fa1f_0.conda#554304a07e581a85891b15e39ea9f268 https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-pyhcf101f3_1.conda#61b8078a0905b12529abc622406cb62c https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda#962b9857ee8e7018c22f2776ffa0b2d7 -https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.14-py313hd8ed1ab_100.conda#22ff6a23190a29024b0df04b4caa0c66 -https://conda.anaconda.org/conda-forge/linux-64/cramjam-2.11.0-py313h7ef63f5_2.conda#258369ffa865db10983e02b11bda29c3 +https://conda.anaconda.org/conda-forge/noarch/cpython-3.14.6-py314hd8ed1ab_100.conda#b28fe35fd43d5f425c0dccbe5b5039fd +https://conda.anaconda.org/conda-forge/linux-64/cramjam-2.11.0-py314haf003cf_2.conda#24b0934613e9e0404436ee469629cb74 https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda#4c2a8fef270f6c69591889b93f9f55c1 https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h24cb091_1.conda#ce96f2f470d39bd96ce03945af92e280 https://conda.anaconda.org/conda-forge/noarch/docutils-0.22.4-pyhd8ed1ab_0.conda#d6bd3cd217e62bbd7efe67ff224cd667 @@ -157,11 +158,11 @@ https://conda.anaconda.org/conda-forge/noarch/fasteners-0.19-pyhd8ed1ab_1.conda# https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.4-pyhd8ed1ab_0.conda#66f138d7a6dffb5c959cc4bf6dc2b797 https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.18.1-h27c8c51_0.conda#e0e050cfa9fa85fe39632ab11cb7f3e0 https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.3-ha770c72_0.conda#8462b5322567212beeb025f3519fb3e2 -https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.8.0-py313h6b9daa2_0.conda#a51a4bc5d02deee4354781783c132b7f +https://conda.anaconda.org/conda-forge/noarch/frozenlist-1.8.0-pyhf298e5d_0.conda#7a2d9f4d9f57da47251b2050b149bdf8 https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.6.0-pyhd8ed1ab_0.conda#7d7e6c826ba0743fc491ebee0e7b899c https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.6-h2b0a6b4_0.conda#7892f39a39ed39591a89a28eba03e987 https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.88.1-hee1de02_2.conda#e5a459d2bb98edb88de5a44bfad66b9d -https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.5.1-py313h5d5ffb9_0.conda#9867806877cf07748b06ed37462473e3 +https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.5.2-py314h42812f9_0.conda#5fef7ee7545d98388c129de1a47537bb https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda#4d8df0b0db060d33c9a702ada998a8fe https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda#0a802cb9888dd14eeefc611f05c40b6e https://conda.anaconda.org/conda-forge/noarch/humanize-4.15.0-pyhd8ed1ab_0.conda#daddf757c3ecd6067b9af1df1f25d89e @@ -170,7 +171,7 @@ https://conda.anaconda.org/conda-forge/noarch/idna-3.18-pyhcf101f3_0.conda#577b0 https://conda.anaconda.org/conda-forge/noarch/imagesize-2.0.0-pyhd8ed1ab_0.conda#92617c2ba2847cca7a6ed813b6f4ab79 https://conda.anaconda.org/conda-forge/noarch/isodate-0.7.2-pyhd8ed1ab_1.conda#14c42a6334f38c412449f5a5e4043a5a https://conda.anaconda.org/conda-forge/noarch/jmespath-1.1.0-pyhcf101f3_1.conda#cc73a9bd315659dc5307a5270f44786f -https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.0-py313hc8edb43_0.conda#b81883b9dbf5069821c2fb09a8ba1407 +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.0-py314h97ea11e_0.conda#7397e418cab519b8d789936cf2dde6f6 https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.19.1-h0c24ade_1.conda#8b3ce45e929cd8e8e5f4d18586b56d8b https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-8_h4a7cf45_openblas.conda#00fc660ab1b2f5ca07e92b4900d10c79 https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda#49c553b47ff679a6a1e9fc80b9c5a2d4 @@ -178,33 +179,32 @@ https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.20.0-hcf29cc6_0.conda# https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_3.conda#ec3c4350aa0261bf7f87b8ca15c8e80e https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-haa4a5bd_1023.conda#953b7cca897e21215302dbfe2af5cd0c https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.3-h49c6c72_0.conda#995d8c8bad2a3cc8db14675a153dec2b -https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.47.0-py313hdd307be_1.conda#916eb82289f0d2209176fd2d05c5d1f5 +https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.47.0-py314h946fb2a_1.conda#22feb934c64b2d62b3b2b278eb40629e https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2#91e27ef3d05cc772ce627e51cff111c4 https://conda.anaconda.org/conda-forge/noarch/loguru-0.7.3-pyh707e725_0.conda#49647ac1de4d1e4b49124aedf3934e02 -https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py313h28739b2_1.conda#e69ad33075938ba81e43311da86b809c -https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py313h3dea7bd_1.conda#aeb9b9da79fd0258b3db091d1fefcd71 -https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.1.2-py313h7037e92_1.conda#cd1cfde0ea3bca6c805c73ffa988b12a -https://conda.anaconda.org/conda-forge/linux-64/multidict-6.7.1-py313h3dea7bd_0.conda#4f3e7bf5a9fc60a7d39047ba9e84c84c +https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py314hd4c109c_1.conda#2f6295571ea5e9278046efc3ef377a98 +https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py314h67df5f8_1.conda#9a17c4307d23318476d7fbf0fedc0cde +https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.2.0-py314h9891dd4_0.conda#cb1c896c307a55e1c3adc06ad8f616d7 https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda#37293a85a0f4f77bbd9cf7aaefc62609 https://conda.anaconda.org/conda-forge/noarch/narwhals-2.22.1-pyhcf101f3_0.conda#9450fb40fb1e147d0bcbdf07cd02ca96 https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda#a2c1eeadae7a309daed9d62c96012a2b https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda#11b3379b191f63139e29c0d19dee24cd -https://conda.anaconda.org/conda-forge/linux-64/openjph-0.28.1-h8d634f6_0.conda#124bc40f781a446d9d4ffe5c37ef9ea2 +https://conda.anaconda.org/conda-forge/linux-64/openjph-0.29.0-h8d634f6_0.conda#b27832bf274bd4a399d899341826f682 https://conda.anaconda.org/conda-forge/linux-64/orc-2.3.0-h21090e2_0.conda#8027fce94fdfdf2e54f9d18cbae496df https://conda.anaconda.org/conda-forge/noarch/packaging-26.2-pyhc364b38_0.conda#4c06a92e74452cfa53623a81592e8934 https://conda.anaconda.org/conda-forge/noarch/pip-26.1.2-pyh145f28c_0.conda#733cc07ed34162ac50b936464b163366 https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.10.0-pyhcf101f3_0.conda#2c5ef45db85d34799771629bd5860fd7 -https://conda.anaconda.org/conda-forge/linux-64/propcache-0.5.2-py313h3dea7bd_0.conda#9f8899a9482c1737bf402d8218780df1 -https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py313h54dd161_0.conda#25fe6e02c2083497b3239e21b49d8093 +https://conda.anaconda.org/conda-forge/noarch/propcache-0.5.2-pyh7db6752_0.conda#e3cbba0c0ab42143adeefd1d09866695 +https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py314h0f05182_0.conda#4f225a966cfee267a79c5cb6382bd121 https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda#16c18772b340887160c79a6acc022db0 https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda#3687cc0b82a8b4c17e1f0eb7e47163d5 https://conda.anaconda.org/conda-forge/noarch/pyshp-3.0.12-pyhcf101f3_0.conda#8e6ba36f4f355b2be42009a13b6e8f29 https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda#461219d1a5bd61342293efa2c0c90eac -https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py313h3dea7bd_1.conda#f256753e840c3cd3766488c9437a8f8b +https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py314h67df5f8_1.conda#2035f68f96be30dc60a5dfd7452c7941 https://conda.anaconda.org/conda-forge/linux-64/re2-2025.11.05-h5301d42_1.conda#66a715bc01c77d43aca1f9fcb13dde3c https://conda.anaconda.org/conda-forge/noarch/roman-numerals-4.1.0-pyhd8ed1ab_0.conda#0dc48b4b570931adc8641e55c6c17fe4 https://conda.anaconda.org/conda-forge/noarch/roocs-grids-0.1.2-pyhd8ed1ab_1.conda#1fa1c83d0db5391af4b794a2ccf2f01b -https://conda.anaconda.org/conda-forge/linux-64/rpds-py-2026.5.1-py313hafbe609_0.conda#335b86e1a00e5edd05c5172ddc524919 +https://conda.anaconda.org/conda-forge/linux-64/rpds-py-2026.5.1-py314h1bee95f_0.conda#fb5b4fc759b225d4f32730cc8380ec8e https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.1-pyh332efcf_0.conda#8e194e7b992f99a5015edbd4ebd38efd https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda#3339e3b65d58accf4ca4fb8748ab16b3 https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.1.1-pyhd8ed1ab_0.conda#46b6abe31482f6bca064b965696ae807 @@ -214,9 +214,10 @@ https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed https://conda.anaconda.org/conda-forge/noarch/tblib-3.2.2-pyhcf101f3_0.conda#f88bb644823094f436792f80fba3207e https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda#9d64911b31d57ca443e9f1e36b04385f https://conda.anaconda.org/conda-forge/noarch/toolz-1.1.0-pyhd8ed1ab_1.conda#c07a6153f8306e45794774cf9b13bd32 -https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.7-py313h07c4f96_0.conda#9665531f18d2bcbc946e3ba0cf53ea91 +https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.7-py314h5bd0f2a_0.conda#4a8e5889712641aabdf6695e292857fe https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda#0caa1af407ecff61170c9437a808404d -https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.2.1-py313h07c4f96_0.conda#5ba52a9fe1509b87de4d18f26d2fe619 +https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-17.0.1-py314h5bd0f2a_0.conda#494fdf358c152f9fdd0673c128c2f3dd +https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.2.1-py314h5bd0f2a_0.conda#7e4cdd7cc4909e0c9e0a75b3d74e1cad https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.47-h280c20c_1.conda#bb1e548a92b0efa12c3e2385ae2d4529 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-hb03c661_0.conda#34e54f03dfea3e7a2dcf1453a85f1085 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-hb03c661_0.conda#ba231da7fccf9ea1e768caf5c7099b84 @@ -233,9 +234,9 @@ https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.t https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda#bb6c4808bfa69d6f7f6b07e5846ced37 https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1.2-pyhd8ed1ab_0.conda#e9b05deb91c013e5224672a4ba9cf8d1 https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_2.conda#55c7804f428719241a90b152016085a1 -https://conda.anaconda.org/conda-forge/linux-64/cytoolz-1.1.0-py313h07c4f96_2.conda#7e7e3c5a8a28c6b8eb430183e0554adf +https://conda.anaconda.org/conda-forge/linux-64/cytoolz-1.1.0-py314h5bd0f2a_2.conda#a6a32cab83d59c7812ddbb03220057e3 https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_1.conda#5498feb783ab29db6ca8845f68fa0f03 -https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.63.0-py313h3dea7bd_0.conda#ae83c999b4cfc4c171ce88b99c8b43cc +https://conda.anaconda.org/conda-forge/noarch/fonttools-4.63.0-pyh7db6752_0.conda#0509ee74d95e5b98eb6fe2a47760e399 https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda#164fc43f0b53b6e3a7bc7dce5e4f1dc9 https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-9.0.0-pyhcf101f3_0.conda#ffc17e785d64e12fc311af9184221839 https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda#04558c96691bed63104678757beb4f8d @@ -251,11 +252,11 @@ https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.13.2-hca5e8e5_0.c https://conda.anaconda.org/conda-forge/linux-64/libxml2-devel-2.15.3-h49c6c72_0.conda#be70cb50dd0ecc1531c58034d38f72e0 https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.43-h711ed8c_1.conda#87e6096ec6d542d1c1f8b33245fe8300 https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda#0badf9c54e24cecfb0ad2f99d680c163 -https://conda.anaconda.org/conda-forge/linux-64/pillow-12.2.0-py313h80991f8_0.conda#7245f1bbf52ed5e3818d742f51b44a7d +https://conda.anaconda.org/conda-forge/linux-64/pillow-12.2.0-py314h8ec4b1a_0.conda#76c4757c0ec9d11f969e8eb44899307b https://conda.anaconda.org/conda-forge/linux-64/proj-9.8.1-he0df7b0_0.conda#b23619e5e9009eaa070ead0342034027 https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda#a83f6a2fdc079e643237887a37460668 https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda#5b8d21249ff20967101ffa321cab24e8 -https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.14-h4df99d1_100.conda#200323d73f85b9c5c411db8c8c4942db +https://conda.anaconda.org/conda-forge/noarch/python-gil-3.14.6-h4df99d1_100.conda#224f69f177eb5aae6c9a6052846bf609 https://conda.anaconda.org/conda-forge/noarch/rdflib-7.6.0-pyhcf101f3_0.conda#1ba0ceffa17c51959fa5c0996449266d https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda#870293df500ca7e18bedefa5838a22ab https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda#edd329d7d3a4ab45dcf905899a7a6115 @@ -267,9 +268,7 @@ https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.3-hb03c661_0.cond https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.6-hecca717_0.conda#93f5d4b5c17c8540479ad65f206fea51 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.5-hb03c661_0.conda#e192019153591938acf7322b6459d36e https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.7-hb03c661_0.conda#665d152b9c6e78da404086088077c844 -https://conda.anaconda.org/conda-forge/linux-64/yarl-1.24.2-py313h3dea7bd_0.conda#48b599c76bdb7e0c367a86b11c24dd70 https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda#aaa2a381ccc56eac91d63b6c1240312f -https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.14.1-py313hd6074c6_0.conda#cfc88e2202ea33635e6d69960fddc588 https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.12.5-hb916526_1.conda#70bc8e5e8cefd19407423733e7ebf540 https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.13.3-h71f81a8_2.conda#f4fc754ec17176046988c46a54962a8c https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.14.0-hf596fc9_1.conda#7896f4a6ee78538e2d0261e3b36dfa69 @@ -281,59 +280,62 @@ https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1 https://conda.anaconda.org/conda-forge/linux-64/libgl-devel-1.7.0-ha4b6fd6_3.conda#63e43d278ee5084813fe3c2edf4834ce https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.27.0-h9692893_0.conda#2a44700a9857b49a3fe72aca643d0921 https://conda.anaconda.org/conda-forge/linux-64/libspatialite-5.1.0-gpl_hab3fe16_120.conda#5947bdda89ced07ab0d8a5d6503082c3 -https://conda.anaconda.org/conda-forge/linux-64/lxml-6.1.1-py313h4a16004_0.conda#f80bcdfdc772695738b1a17215868317 -https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.6-py313hf6604e3_0.conda#a5fdb80595ec7912e6b1634b2abd4b50 -https://conda.anaconda.org/conda-forge/linux-64/pyproj-3.7.2-py313he648cc1_4.conda#fe69af9ea9bb222c067bca5888e5aabe -https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.51-py313h54dd161_0.conda#28d8cadca137a5cf4407b4a220bae38d +https://conda.anaconda.org/conda-forge/linux-64/lxml-6.1.1-py314hae3bed6_0.conda#d541b0e73ecc183f9062a1aa95acbd1b +https://conda.anaconda.org/conda-forge/noarch/multidict-6.7.1-pyh62beb40_0.conda#ad92dba7ca0af0e3dca083a0fa6a3423 +https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.6-py314h2b28147_0.conda#f49b5f950379e0b97c35ca97682f7c6a +https://conda.anaconda.org/conda-forge/linux-64/pyproj-3.7.2-py314h7ce3bca_4.conda#d5d862492bbd0f4be1f6d57289459066 +https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.51-py314h0f05182_0.conda#aeb7447f3ea37b2bb32167267dcf0bfe https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda#cbb88288f74dbe6ada1c6c7d0a97223e https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda#7bbe9a0cc0df0ac5f5a8ad6d6a11af2f https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2#8cb2fc4cd6cc63f1369cfa318f581cc3 https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.40.0-h41299d8_1.conda#b4fbfcaea33878c12f0e035f5814280b https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.18.0-h74b55db_1.conda#43151a3b0a8e037747d79a82dff9f967 https://conda.anaconda.org/conda-forge/noarch/botocore-1.43.0-pyhd8ed1ab_0.conda#f47ed05030a1bed50f5fc9cea874ad1a -https://conda.anaconda.org/conda-forge/linux-64/bottleneck-1.6.0-np2py313hc18bace_3.conda#5ce830ed3ab4a6f9deaf40bc02690e88 -https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.5-py313h29aa505_1.conda#c63d5f9d63fe2f48b0ad75005fcae7ba -https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py313hc8edb43_4.conda#33639459bc29437315d4bff9ed5bc7a7 +https://conda.anaconda.org/conda-forge/linux-64/bottleneck-1.6.0-np2py314h56abb78_3.conda#48b137fb9317635b90c335348518d0a6 +https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.5-py314hc02f841_1.conda#552b5d9d8a2a4be882e1c638953e7281 +https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py314h97ea11e_4.conda#95bede9cdb7a30a4b611223d52a01aa4 https://conda.anaconda.org/conda-forge/noarch/distributed-2026.6.0-pyhc364b38_1.conda#2a6851a6c69ce7c0b03a89d5d4209257 https://conda.anaconda.org/conda-forge/linux-64/hdf5-2.1.0-nompi_h735b18d_107.conda#b1b444bca8da3ff6cc4afad1fa7f7d61 -https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2026.6.6-py313h0702ed5_1.conda#7d0d7d04ab80890c10b3647e0c7a42ea +https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2026.6.6-py314h834e057_2.conda#739e400b5579069eb064fac856de1a5e https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda#ada41c863af263cc4c5fcbaff7c3e4dc https://conda.anaconda.org/conda-forge/linux-64/libegl-devel-1.7.0-ha4b6fd6_3.conda#5bc6d55503483aabe8a90c5e7f49a2a4 https://conda.anaconda.org/conda-forge/linux-64/libgdal-core-3.12.4-h2c8e1a9_4.conda#58a8af3dc1f82dd2f38bd295d80b70da https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-3.5.0-h8d2ee43_1.conda#8ae0593085ca8148fdbf0bc8f62e79c1 https://conda.anaconda.org/conda-forge/linux-64/libraqm-0.10.5-h75b3fb1_0.conda#6855be9eb1d891cd5afb5eb90501c74c -https://conda.anaconda.org/conda-forge/linux-64/numba-0.65.1-py313h5dce7c4_1.conda#b19dde1f8eee0382e51edcd0b62bfa8c -https://conda.anaconda.org/conda-forge/linux-64/numcodecs-0.15.1-py313h08cd8bf_1.conda#a7a7ffe26b48c1b20ff0e304f5ea51d3 -https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.3-py313hbfd7664_0.conda#70d4dd67877354f6912af31177cb1117 +https://conda.anaconda.org/conda-forge/linux-64/numba-0.65.1-py314h8169c2f_1.conda#d74691e038386bb543a574122c72d834 +https://conda.anaconda.org/conda-forge/linux-64/numcodecs-0.15.1-py314ha0b5721_1.conda#23a5b153b5011ce92797637a66dd4a89 +https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.3-py314hb4ffadd_0.conda#bc2e1390314b1269e66fb1966fbcae5d https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hda50119_1.conda#d53ffc0edc8eabf4253508008493c5bc https://conda.anaconda.org/conda-forge/noarch/requests-2.34.2-pyhcf101f3_0.conda#4a85203c1d80c1059086ae860836ffb9 -https://conda.anaconda.org/conda-forge/linux-64/scipy-1.17.1-py313h4b8bb8b_1.conda#4b098461b0b5edff1a9359c25e675cfd -https://conda.anaconda.org/conda-forge/linux-64/shapely-2.1.2-py313had47c43_2.conda#6e550dd748e9ac9b2925411684e076a1 -https://conda.anaconda.org/conda-forge/noarch/aiobotocore-3.7.0-pyhcf101f3_0.conda#39f70aca52f1497a72eb9d81baf4d237 +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.17.1-py314hf07bd8e_1.conda#718437171257e579e7d1f3b51c62536f +https://conda.anaconda.org/conda-forge/linux-64/shapely-2.1.2-py314hbe3edd8_2.conda#5963e6ee81772d450a35e6bc95522761 +https://conda.anaconda.org/conda-forge/noarch/yarl-1.24.2-pyh7db6752_0.conda#517da2b90b0910492f03ae3b297efff9 +https://conda.anaconda.org/conda-forge/noarch/aiohttp-3.14.1-pyhf64b827_0.conda#fc49257102291bf3724c550e7ce4b188 https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2#6b889f174df1e0f816276ae69281af4d https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.747-h6154047_6.conda#9096d36ad4522d330bd6a5bdbd458275 https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.16.0-h1f05bef_1.conda#70972c9cb0893d6499dd4118415a966b https://conda.anaconda.org/conda-forge/noarch/bokeh-3.9.1-pyhd8ed1ab_0.conda#123fcfe0df4b6fc21804538e59cdaafe https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-hb03c661_2.conda#057083b06ccf1c2778344b6dabace38b -https://conda.anaconda.org/conda-forge/linux-64/fastparquet-2026.5.0-py313h29aa505_0.conda#e8c0bf5e78acabc4a9af0f41f1eb68dc -https://conda.anaconda.org/conda-forge/linux-64/fiona-1.10.1-py313hae45665_6.conda#5817b2e9b067dca0dc2dced6e941bbee +https://conda.anaconda.org/conda-forge/linux-64/fastparquet-2026.5.0-py314hc02f841_0.conda#7eacd1ab0881bd50ebf2824ae227098d +https://conda.anaconda.org/conda-forge/linux-64/fiona-1.10.1-py314hbcf5174_6.conda#9973d51b9bb91ae8cca8cfff05d9106b https://conda.anaconda.org/conda-forge/noarch/folium-0.20.0-pyhd8ed1ab_0.conda#a6997a7dcd6673c0692c61dfeaea14ab https://conda.anaconda.org/conda-forge/noarch/geopandas-base-1.1.3-pyha770c72_0.conda#18789a85c307970ae1786dfc6dfd234f -https://conda.anaconda.org/conda-forge/linux-64/h5py-3.16.0-nompi_py313h22c32d4_102.conda#37727e0bcda5059c33c83fdf5b13a9a1 +https://conda.anaconda.org/conda-forge/linux-64/h5py-3.16.0-nompi_py314hddf7a69_102.conda#d93afa30018997705dd04513eeb5ac0f https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-3.5.0-hdbdcf42_1.conda#6f79d5f72cfcdd3509112233a8aedc2e https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.10.0-nompi_h3c9b436_104.conda#6d38346d49e4638ec98649121d295d54 https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.62.3-h4c96295_0.conda#492c8d9b1c564c2e948b6cb4ba0f8261 -https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.11.0-py313hd23ff06_0.conda#041d42f74664dbe8b7725210c6f4ddc4 +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.11.0-py314h261f116_0.conda#6b2f4b994b97722933dacd51776d5c49 https://conda.anaconda.org/conda-forge/noarch/owslib-0.36.0-pyhc364b38_0.conda#a315fcc6ca1a05be066fed821c897ae5 https://conda.anaconda.org/conda-forge/noarch/pooch-1.9.0-pyhd8ed1ab_0.conda#dd4b6337bf8886855db6905b336db3c8 -https://conda.anaconda.org/conda-forge/linux-64/pyogrio-0.12.1-py313hae45665_0.conda#fa543477ad16de26ce5f2fd5bcd249fa -https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.9.0-np2py313h16d504d_0.conda#79dc96526e178928df7363e80169e8c4 +https://conda.anaconda.org/conda-forge/linux-64/pyogrio-0.12.1-py314hbcf5174_0.conda#b6696a3d5c567d3b2015bf77f454f247 +https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.9.0-np2py314hf09ca88_0.conda#30883954413aad9e3ac42134bef91ffe https://conda.anaconda.org/conda-forge/noarch/sparse-0.18.0-pyhcf101f3_0.conda#c67d2c8ce612c88ece7221fe0b5357f2 https://conda.anaconda.org/conda-forge/noarch/tifffile-2022.4.26-pyhd8ed1ab_0.tar.bz2#1f11b20c9bf2909cc6500b7c34748ee6 https://conda.anaconda.org/conda-forge/noarch/xarray-2025.10.1-pyhcf101f3_1.conda#515d0ed77a942ad39fa94cf636dcde44 https://conda.anaconda.org/conda-forge/noarch/zarr-2.18.7-pyhd8ed1ab_0.conda#209c3560e2eddfcb0bc769c659674dfa https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-49.0-unix_0.conda#b3f0179590f3c0637b7eb5309898f79e -https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.25.0-py313h08cd8bf_1.conda#a0d8dc5c90850d9f1a79f69c98aef0ff +https://conda.anaconda.org/conda-forge/noarch/aiobotocore-3.7.0-pyhcf101f3_0.conda#39f70aca52f1497a72eb9d81baf4d237 +https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.25.0-py314ha0b5721_1.conda#fe89c5fa422f215b0d75046ecd4667de https://conda.anaconda.org/conda-forge/noarch/cf_xarray-0.11.3-pyhd8ed1ab_0.conda#036952903adb4c07a58ff46a88740d71 https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.52-ha5ea40c_0.conda#bcaea22d85999a4f17918acfab877e61 https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.8.1-pyhd8ed1ab_0.conda#ca7f9ba8762d3e360e47917a10e23760 @@ -342,22 +344,22 @@ https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.10.0-pyhd8ed1ab_1.co https://conda.anaconda.org/conda-forge/linux-64/netcdf-fortran-4.6.3-nompi_h4a60669_100.conda#e412779df56a17f9811a9efe495208a7 https://conda.anaconda.org/conda-forge/linux-64/netcdf4-1.7.4-nompi_py311h498b1eb_107.conda#7f5488cf61943e6221325b454c2c2e9c https://conda.anaconda.org/conda-forge/noarch/python-geotiff-0.2.9-pyh6eeeb26_0.conda#19076a97e761f253bef2e483578310e4 -https://conda.anaconda.org/conda-forge/noarch/s3fs-2026.6.0-pyhd8ed1ab_0.conda#a472598199c08f010f2e90b8e7886ef0 https://conda.anaconda.org/conda-forge/noarch/cf-xarray-0.11.3-pyhd8ed1ab_0.conda#42308dbee54760ecd8c6975b6100f7ba https://conda.anaconda.org/conda-forge/linux-64/esmf-8.9.1-nompi_h0c1e4bb_3.conda#acd2eee9535335dede2a9eed181251c5 https://conda.anaconda.org/conda-forge/noarch/geopandas-1.1.3-pyhd8ed1ab_0.conda#4eb8b870142ca06d2a1d2c74662eac7d https://conda.anaconda.org/conda-forge/linux-64/graphviz-14.1.2-h8b86629_0.conda#341fc61cfe8efa5c72d24db56c776f44 https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-24.0.0-h53684a4_6_cpu.conda#a89b6d55d02b00e3b82b5b518046d8c5 https://conda.anaconda.org/conda-forge/linux-64/libparquet-24.0.0-h7376487_6_cpu.conda#53070bfc11eeaa2267d6bc79b9d66e0f +https://conda.anaconda.org/conda-forge/noarch/s3fs-2026.6.0-pyhd8ed1ab_0.conda#a472598199c08f010f2e90b8e7886ef0 https://conda.anaconda.org/conda-forge/noarch/esmpy-8.9.1-pyhdfbf58e_0.conda#0155d4a55415cda7f7f09bc0b7760f51 https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-24.0.0-h635bf11_6_cpu.conda#9923cf08ce75f24467841062330fdc5a -https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-24.0.0-py313h98bfbea_0_cpu.conda#4c7cc18a6d6d18557c18069af469a96c +https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-24.0.0-py314h969be7f_0_cpu.conda#b066370d80ec7fca3c1d4028dc09164f https://conda.anaconda.org/conda-forge/noarch/pydot-4.0.1-pyhcf101f3_2.conda#15f6d0866b0997c5302fc230a566bc72 https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-24.0.0-h635bf11_6_cpu.conda#d9d1ca90b1fd6edabfe0267b83c272c3 https://conda.anaconda.org/conda-forge/noarch/prov-2.0.0-pyhd3deb0d_0.tar.bz2#aa9b3ad140f6c0668c646f32e20ccf82 https://conda.anaconda.org/conda-forge/noarch/xesmf-0.9.2-pyhd8ed1ab_0.conda#bfc1d7ff3f2b3cef25ba314b9778aeb4 https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-24.0.0-hb4dd7c2_6_cpu.conda#9e8d802e4ab7c5ce0f407ef51f348bc2 -https://conda.anaconda.org/conda-forge/linux-64/pyarrow-24.0.0-py313h78bf25f_0.conda#c93f1ad82cb397a98d6cadb4a07572af +https://conda.anaconda.org/conda-forge/linux-64/pyarrow-24.0.0-py314hdafbbf9_0.conda#6629041b133a9d65d68c4f2269432378 https://conda.anaconda.org/conda-forge/noarch/dask-2026.6.0-pyhc364b38_0.conda#a2d2a05abf6076c3d041ec91b2235823 https://conda.anaconda.org/conda-forge/noarch/clisops-0.18.0-pyhd8ed1ab_0.conda#3d9c4377c00140a9779e30fdf298f675 https://conda.anaconda.org/conda-forge/noarch/intake-0.7.0-pyhd8ed1ab_0.conda#310f0fdaec6eecd9cc7833a788bafb1f