diff --git a/Processing Documentation.md b/Processing Documentation.md index f34cd5c..539b654 100644 --- a/Processing Documentation.md +++ b/Processing Documentation.md @@ -75,62 +75,14 @@ Since the resolution of the ERA5 dataset is spatially smaller than the resolutio For geometries crossing the antimeridian, geometries are corrected. -| grid | method | -| ----- | ----------- | -| Hex3 | Common | -| Hex4 | Mean | -| Hex5 | Interpolate | -| Hex6 | Interpolate | -| Hpx6 | Common | -| Hpx7 | Mean | -| Hpx8 | Mean | -| Hpx9 | Interpolate | -| Hpx10 | Interpolate | - -- hex level 3 - min: 30.0 - max: 850.0 - mean: 251.25216674804688 - median: 235.5 -- hex level 4 - min: 8.0 - max: 166.0 - mean: 47.2462158203125 - median: 44.0 -- hex level 5 - min: 3.0 - max: 41.0 - mean: 11.164162635803223 - median: 10.0 -- hex level 6 - min: 2.0 - max: 14.0 - mean: 4.509947776794434 - median: 4.0 -- healpix level 6 - min: 25.0 - max: 769.0 - mean: 214.97296142578125 - median: 204.0 -healpix level 7 - min: 9.0 - max: 231.0 - mean: 65.91140747070312 - median: 62.0 -healpix level 8 - min: 4.0 - max: 75.0 - mean: 22.516725540161133 - median: 21.0 -healpix level 9 - min: 2.0 - max: 29.0 - mean: 8.952080726623535 - median: 9.0 -healpix level 10 - min: 2.0 - max: 15.0 - mean: 4.361577987670898 - median: 4.0 - -??? +| grid | method | ~#pixel | +| ----- | ----------- | ------------ | +| Hex3 | Common | 235 [30,850] | +| Hex4 | Common | 44 [8,166] | +| Hex5 | Mean-only | 11 [3,41] | +| Hex6 | Interpolate | 4 [2,14] | +| Hpx6 | Common | 204 [25,769] | +| Hpx7 | Common | 62 [9,231] | +| Hpx8 | Mean-only | 21 [4,75] | +| Hpx9 | Mean-only | 9 [2,29] | +| Hpx10 | Interpolate | 2 [2,15] | diff --git a/pixi.lock b/pixi.lock index 728d021..7635c77 100644 --- a/pixi.lock +++ b/pixi.lock @@ -9,6 +9,7 @@ environments: - https://pypi.org/simple options: channel-priority: disabled + pypi-prerelease-mode: if-necessary-or-explicit packages: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-7_kmp_llvm.conda @@ -22,26 +23,27 @@ environments: - 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/linux-64/attr-2.5.2-h39aace5_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.4.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.9.1-h7ca4310_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.9.10-h346e085_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.12.5-hb03c661_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.1-h7e655bb_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.6-h3cb25bf_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.10.7-hc5c8343_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.23.3-ha76f1cc_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.13.3-h3a25ec9_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.10.1-hcb69869_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.4-h7e655bb_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.7-h7e655bb_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.35.2-h2ceb62e_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.606-hd6e39bc_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.4.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.9.3-hef928c7_0.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.1-h8b1a151_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.7-h28f887f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.10.7-ha8fc4e3_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.23.3-hdaf4b65_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.13.3-hc63082f_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.11.3-h06ab39a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.4-h8b1a151_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.7-h8b1a151_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.35.4-h8824e59_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.606-h20b40b1_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.16.1-h3a458e0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.13.2-h3a5f585_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.15.0-h2a74896_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.11.0-h3d7a050_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.13.0-hf38f1be_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.14.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.2.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/bleach-6.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.3.0-h5f6438b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda @@ -52,23 +54,23 @@ environments: - 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_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.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.22.0-hc31b594_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.11.12-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/cachetools-6.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cachetools-6.2.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.11.12-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/linux-64/charls-2.4.2-h59595ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-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/colorcet-3.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py313h7037e92_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.9-py313hd8ed1ab_101.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/cucim-25.10.00-cuda12_py313_251008_ghgf278340_gn0%7D_phc494990.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.11-py313hd8ed1ab_100.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/cucim-25.12.00-cuda12_py313_251210_ghg0ea8217_gn0_phc494990.conda - conda: https://conda.anaconda.org/nvidia/linux-64/cuda-bindings-12.9.4-py313h3c5d65e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cccl_linux-64-12.9.27-ha770c72_0.conda - conda: https://conda.anaconda.org/nvidia/linux-64/cuda-core-0.3.2-py313hb1ccf29_0.conda @@ -91,46 +93,46 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-nvvm-dev_linux-64-12.9.86-ha770c72_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvvm-impl-12.9.86-h4bc722e_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvvm-tools-12.9.86-h4bc722e_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-pathfinder-1.3.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-pathfinder-1.3.3-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-profiler-api-12.9.79-h7938cbb_1.conda - conda: https://conda.anaconda.org/nvidia/noarch/cuda-python-12.9.4-pyh15a92d1_1.conda - conda: https://conda.anaconda.org/nvidia/noarch/cuda-version-12.9-3.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/cudf-25.10.00-cuda12_py313_251008_f4e35ca0.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/cudf-polars-25.10.00-cuda12_py313_251008_f4e35ca0.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/cudf_kafka-25.10.00-cuda12_py313_251008_f4e35ca0.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/cudf-25.12.00-cuda12_py313_251210_580975be.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/cudf-polars-25.12.00-cuda12_py313_251210_580975be.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/cudf_kafka-25.12.00-cuda12_py313_251210_580975be.conda - conda: https://conda.anaconda.org/nvidia/linux-64/cudnn-9.14.0.64-h321a1a8_0.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/cugraph-25.10.01-cuda12_py313_251013_741f9105.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/cuml-25.10.00-cuda12_py313_251008_f9fcdbb0.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/cugraph-25.12.02-cuda12_py313_251211_9765e20f.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/cuml-25.12.00-cuda12_py313_251211_5c22c200.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cupy-13.6.0-py313h586c94b_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cupy-core-13.6.0-py313h28b6081_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cusparselt-0.8.1.1-h58dd1b1_0.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/custreamz-25.10.00-cuda12_py313_251008_f4e35ca0.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/cuvs-25.10.00-cuda12_py313_251008_f245c152.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/cuxfilter-25.10.00-cuda12_py313_251008_aa53656f.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/custreamz-25.12.00-cuda12_py313_251210_580975be.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/cuvs-25.12.00-cuda12_py313_251211_fc27938b.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/cuxfilter-25.12.00-cuda12_py313_251211_0e91a395.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.28-hd9c7081_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cytoolz-1.1.0-py313h07c4f96_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2025.9.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.9.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/rapidsai/noarch/dask-cuda-25.10.00-py313_251008_472ca1ce.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/dask-cudf-25.10.00-cuda12_py313_251008_f4e35ca0.conda + - conda: https://conda.anaconda.org/rapidsai/noarch/dask-cuda-25.12.00-py313_251210_7edf2c69.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/dask-cudf-25.12.00-cuda12_py313_251210_580975be.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datashader-0.18.2-pyhd8ed1ab_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/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2025.9.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/rapidsai/noarch/distributed-ucxx-0.46.00-py_251008_64355220_h9c9281c.conda + - conda: https://conda.anaconda.org/rapidsai/noarch/distributed-ucxx-0.47.00-py_251210_5d6f0af3_hf4a1fa9.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dlpack-0.8-h59595ed_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fastrlock-0.8.3-py313h5d5ffb9_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.20.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-12.0.0-h2b0788b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/folium-0.20.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.61.0-py313h3dea7bd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.61.1-py313h3dea7bd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.1-ha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freexl-2.0.0-h9dce30a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.7.0-py313h6b9daa2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.10.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geopandas-1.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geopandas-base-1.1.1-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/geos-3.14.1-h480dda7_0.conda @@ -141,7 +143,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.2.1-py313h86d8783_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/healpix-geo-0.0.8-py313h843e2db_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/holoviews-1.22.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/holoviews-1.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda @@ -150,15 +152,15 @@ environments: - 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.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.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/joblib-1.5.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/json-c-0.18-h6688a6e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py313h78bf25f_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpointer-3.0.0-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.1-pyhe01879c_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.25.1-he01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-server-proxy-4.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.7.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-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.17.0-pyhcf101f3_0.conda @@ -177,42 +179,43 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250512.1-cxx17_hba17884_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.4-h3f801dc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.2-gpl_h7be2006_100.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-21.0.0-h2937f24_12_cuda.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-21.0.0-hb826db4_12_cuda.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-21.0.0-h58682fd_12_cuda.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-21.0.0-hb826db4_12_cuda.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-21.0.0-h9d9f3f8_12_cuda.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-21.0.0-h12806ad_14_cuda.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-21.0.0-hb826db4_14_cuda.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-21.0.0-h58682fd_14_cuda.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-21.0.0-hb826db4_14_cuda.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-21.0.0-h9d9f3f8_14_cuda.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.3.0-h6395336_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-2_h5875eb1_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-5_h5875eb1_mkl.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.77-h3ff7636_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-2_hfef963f_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-5_hfef963f_mkl.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/libcublas-12.9.1.4-h676940d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-dev-12.9.1.4-h676940d_1.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/libcucim-25.10.00-cuda12_251008_ghgf278340_gn0%7D_phc1c8ae4.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/libcudf-25.10.00-cuda12_251008_f4e35ca0.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/libcudf_kafka-25.10.00-cuda12_251008_f4e35ca0.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/libcucim-25.12.00-cuda12_251210_ghg0ea8217_gn0_phe835b31.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/libcudf-25.12.00-cuda12_251210_580975be.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/libcudf_kafka-25.12.00-cuda12_251210_580975be.conda - conda: https://conda.anaconda.org/nvidia/linux-64/libcudnn-9.14.0.64-hf94a4fa_0.conda - conda: https://conda.anaconda.org/nvidia/linux-64/libcudnn-dev-9.14.0.64-h321a1a8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcudss-0.7.1.4-h58dd1b1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.4.1.4-hecca717_1.conda - conda: https://conda.anaconda.org/nvidia/linux-64/libcufile-1.14.1.1-4.conda - conda: https://conda.anaconda.org/nvidia/linux-64/libcufile-dev-1.14.1.1-4.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/libcugraph-25.10.01-cuda12_251013_741f9105.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/libcugraph_etl-25.10.01-cuda12_251013_741f9105.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/libcuml-25.10.00-cuda12_251008_f9fcdbb0.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/libcumlprims-25.10.00-cuda12_py310_251008_7b289cfd.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/libcugraph-25.12.02-cuda12_251211_9765e20f.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/libcugraph_etl-25.12.02-cuda12_251211_9765e20f.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/libcuml-25.12.00-cuda12_251211_5c22c200.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/libcumlprims-25.12.00-cuda12_py310_251211_7e1ef293.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.10.19-h676940d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-dev-10.3.10.19-h676940d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.17.0-h4e3cde8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.17.0-h4e3cde8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.7.5.82-h676940d_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-dev-11.7.5.82-h676940d_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.5.10.65-hecca717_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-dev-12.5.10.65-hecca717_2.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/libcuvs-25.10.00-cuda12_251008_f245c152.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/libcuvs-25.12.00-cuda12_251211_fc27938b.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/libcuvs-headers-25.12.00-cuda12_251211_fc27938b.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 @@ -221,24 +224,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h9ec8514_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.1-ha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.1-h73754d4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_14.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_14.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-core-3.12.0-h6049c3a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_14.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_14.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-core-3.12.0-hf05ffb4_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.39.0-hdb79228_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.39.0-hdbdcf42_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.73.1-h3288cfb_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.12.1-default_h7f8ec31_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.12.1-default_hafda6a7_1003.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.1-hf08fa70_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-haa4a5bd_1022.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/libkvikio-25.10.00-cuda12_9_251008_fb6220c4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-2_h5e43f62_mkl.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/libkvikio-25.12.00-cuda12_251210_61297197.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-5_h5e43f62_mkl.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libmagma-2.9.0-ha7672b3_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmagma-2.9.0-ha7672b3_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.67.0-had1ee68_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnl-3.11.0-hb9d3cd8_0.conda @@ -247,51 +250,56 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnuma-2.0.18-hb9d3cd8_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvcomp-5.0.0.6-hb7e823c_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvcomp-dev-5.0.0.6-hb7e823c_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libnvimgcodec-0.6.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvimgcodec0-0.6.0-hb7e823c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.9.86-hecca717_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.4.0.76-hecca717_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg2k0-0.9.0.43-hf2c0dc5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvptxcompiler-dev-12.9.86-ha770c72_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libnvptxcompiler-dev_linux-64-12.9.86-ha770c72_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvtiff-0.5.1.75-ha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvtiff0-0.5.1.75-h3ac0392_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.21.0-hb9b0907_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.21.0-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-21.0.0-h31208bf_12_cuda.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.51-h421ea60_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-21.0.0-h31208bf_14_cuda.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.53-h421ea60_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.31.1-h49aed37_2.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/libraft-25.10.00-cuda12_251008_521611f8.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/libraft-headers-25.10.00-cuda12_251008_521611f8.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/libraft-headers-only-25.10.00-cuda12_251008_521611f8.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/libraft-25.12.00-cuda12_251211_d226bc96.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/libraft-headers-25.12.00-cuda12_251211_d226bc96.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/libraft-headers-only-25.12.00-cuda12_251211_d226bc96.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librdkafka-2.8.0-h2e2c4f7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.11.05-h7b12aa8_0.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/librmm-25.10.00-cuda12_251008_7aaad1de.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/librmm-25.12.00-cuda12_251210_86731e05.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librttopo-1.1.0-h46dd2a8_20.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libspatialite-5.1.0-gpl_h2abfd87_119.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.51.1-h0c1763c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_14.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_14.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.10-hd0affe5_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.10-hd0affe5_3.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/libtorch-2.9.1-cuda129_mkl_hce6efb5_300.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/libucxx-0.46.00-cuda12_251008_64355220.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.10-hd0affe5_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtorch-2.9.1-cuda129_mkl_hce6efb5_301.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/libucxx-0.47.00-cuda12_251210_5d6f0af3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.10-hd0affe5_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.11.2-hfe17d71_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.2-he9a06e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.2-h5347b49_1.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/rapidsai/linux-64/libxgboost-3.0.5-rapidsai_h98a37b8_3.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/libxgboost-3.1.2-rapidsai_hc3bde56_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.1-ha9997c6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.1-h26afc86_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-devel-2.15.1-h26afc86_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_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/noarch/linkify-it-py-2.0.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-21.1.6-h4922eb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-21.1.8-h4922eb0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.44.0-py313hfdae721_2.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/lz4-4.4.5-py313h28739b2_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/linux-64/lzo-2.10-h280c20c_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.10.0-pyhd8ed1ab_1.conda @@ -308,49 +316,49 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.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/multidict-6.6.3-py313h8060acc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.7.0-py313h3dea7bd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/multipledispatch-0.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/muparser-2.3.5-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.12.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.14.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyhcf101f3_1.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/nccl-2.28.9.1-h4d09622_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nccl-2.28.9.1-h4d09622_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/nodejs-24.9.0-heeeca48_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nodejs-25.2.1-he2c55a7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numba-0.61.2-py313hd8e3f9f_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numba-cuda-0.19.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py313h17eae1a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nvidia-ml-py-13.580.82-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/nvtx-0.2.13-py313h07c4f96_1.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/nx-cugraph-25.10.00-py313_251008_3289e672.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nvidia-ml-py-13.590.44-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nvtx-0.2.14-py313h07c4f96_0.conda + - conda: https://conda.anaconda.org/rapidsai/noarch/nx-cugraph-25.12.00-py_251211_d629d07a.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/openssl-3.6.0-h26f9b46_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/optree-0.18.0-py313h7037e92_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.2.1-hd747db4_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-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.3-py313h08cd8bf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.3-py313h08cd8bf_2.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/panel-1.8.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/panel-1.8.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/param-2.3.1-pyhc455866_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.0.0-py313h80991f8_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/polars-1.32.3-default_h3512890_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/polars-default-1.32.3-py39hf521cc8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.7.0-hb72c0af_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.34.0-pyh6a1acc5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-32-1.34.0-py310hffdcd12_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.7.1-h99ae125_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.23.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.3.1-py313h8060acc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.1.3-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/rapidsai/noarch/py-xgboost-3.0.5-rapidsai_pyh4bd9c9a_3.conda + - conda: https://conda.anaconda.org/rapidsai/noarch/py-xgboost-3.1.2-rapidsai_pyh395bae7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-21.0.0-py313h78bf25f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-21.0.0-py313hc6b0d6e_1_cuda.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-3.0.1-pyh7a1b43c_0.conda @@ -359,49 +367,49 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyct-0.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/pylibcudf-25.10.00-cuda12_py313_251008_f4e35ca0.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/pylibcugraph-25.10.01-cuda12_py313_251013_741f9105.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/pylibraft-25.10.00-cuda12_py313_251008_521611f8.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/pylibcudf-25.12.00-cuda12_py313_251210_580975be.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/pylibcugraph-25.12.02-cuda12_py313_251211_9765e20f.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/pylibraft-25.12.00-cuda12_py313_251211_d226bc96.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyogrio-0.12.1-py313hae45665_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.5-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyproj-3.7.2-py313h77f6078_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.9-hc97d973_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.11-hc97d973_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-confluent-kafka-2.8.0-py313h536fd9c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.2-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.9-h4df99d1_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.11-h4df99d1_100.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/noarch/python-tzdata-2025.2-pyhd8ed1ab_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/pytorch-2.9.1-cuda129_mkl_py313_ha91d441_300.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pytorch-gpu-2.9.1-cuda129_mkl_h0d04637_300.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pytorch-2.9.1-cuda129_mkl_py313_ha91d441_301.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pytorch-gpu-2.9.1-cuda129_mkl_h0d04637_301.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyviz_comms-3.0.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.9.0-py313h29aa505_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py313h3dea7bd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.1.0-py312hfb55c3c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/raft-dask-25.10.00-cuda12_py313_251008_521611f8.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/rapids-25.10.00-cuda12_py310_251008_18a317e3.conda - - conda: https://conda.anaconda.org/rapidsai/noarch/rapids-dask-dependency-25.10.00-251008_bcfdc48e.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/rapids-logger-0.1.1-h98325ef_0.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/rapids-xgboost-25.10.00-cuda12_py310_251008_18a317e3.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/raft-dask-25.12.00-cuda12_py313_251211_d226bc96.conda + - conda: https://conda.anaconda.org/rapidsai/noarch/rapids-25.12.00-cuda12_251211_be953127.conda + - conda: https://conda.anaconda.org/rapidsai/noarch/rapids-dask-dependency-25.12.00-251210_fc4bbcd3.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/rapids-logger-0.2.3-h98325ef_0.conda + - conda: https://conda.anaconda.org/rapidsai/noarch/rapids-xgboost-25.12.00-cuda12_251211_be953127.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.7.1-h8fae777_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rdma-core-60.0-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.11.05-h5301d42_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_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.32.5-pyhd8ed1ab_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.2.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/rmm-25.10.00-cuda12_py313_251008_7aaad1de.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.29.0-py313h843e2db_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.6.0-h8399546_1.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/rmm-25.12.00-cuda12_py313_251210_86731e05.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/linux-64/s2n-1.6.2-he8a4886_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scikit-image-0.24.0-py313ha87cce1_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.7.2-py313h06d4379_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.8.0-np2py313h16d504d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.16.3-py313h11c21cd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda @@ -420,31 +428,31 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tblib-3.2.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tifffile-2025.10.16-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.5.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tifffile-2025.12.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.5.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_ha0e22de_103.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.2-py313h07c4f96_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.3-py313h07c4f96_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/treelite-4.4.1-py313ha8a5e75_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/treelite-4.6.1-py313h93401c0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/triton-3.5.1-cuda129py313h246eb7c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-h8577fbf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uc-micro-py-1.0.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ucx-1.19.0-h63b5c0b_5.conda - - conda: https://conda.anaconda.org/rapidsai/linux-64/ucxx-0.46.00-cuda12_py313_251008_64355220.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ucx-1.19.1-h63b5c0b_0.conda + - conda: https://conda.anaconda.org/rapidsai/linux-64/ucxx-0.47.00-cuda12_py313_251210_5d6f0af3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uriparser-0.9.8-hac33072_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.2-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/noarch/xarray-2025.11.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2025.12.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.3.0-h988505b_0.conda - - conda: https://conda.anaconda.org/rapidsai/noarch/xgboost-3.0.5-rapidsai_pyh13f938f_3.conda + - conda: https://conda.anaconda.org/rapidsai/noarch/xgboost-3.1.2-rapidsai_pyh3432f66_1.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-2025.11.0-pyhd8ed1ab_0.conda @@ -455,9 +463,8 @@ environments: - 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.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.1-hde8ca8f_0.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-h3691f8a_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.2-h54a6638_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda - pypi: https://files.pythonhosted.org/packages/0b/f7/85273299ab57117850cc0a936c64151171fac4da49bc6fba0dad984a7c5f/affine-2.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b7/58/3bf0b7d474607dc7fd67dd1365c4e0f392c8177eaf4054e5ddee3ebd53b5/aiobotocore-2.26.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/10/a1/510b0a7fadc6f43a6ce50152e69dbd86415240835868bb0bd9b5b88b1e06/aioitertools-0.13.0-py3-none-any.whl @@ -472,9 +479,9 @@ environments: - pypi: https://files.pythonhosted.org/packages/31/4a/72dc383d1a0d14f1d453e334e3461e229762edb1bf3f75b3ab977e9386ed/arro3_core-0.6.5-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/1b/df/2a5a1306dc1699b51b02c1c38c55f3564a8c4f84087c23c61e7e7ae37dfa/arro3_io-0.6.5-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/c3/1c/f06ad85180e7dd9855aa5ede901bfc2be858d7bee17d4e978a14c0ecec14/astropy-7.2.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/6a/cf/b80563290409eb01febdf0715b7f8be03172c153a7a3859807936e2f7bbd/astropy_iers_data-0.2025.11.24.0.39.11-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e1/2b/a3d75e4a8966460a9f79635797bb3e85e29c3bff86640087c7814429d917/astropy_iers_data-0.2025.12.15.0.40.51-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d2/39/e7eaf1799466a4aef85b6a4fe7bd175ad2b1c6345066aa33f1f58d4b18d0/asttokens-3.0.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b1/3c/b90d5afc2e47c4a45f4bba00f9c3193b0417fad5ad3bb07869f9d12832aa/azure_core-1.36.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ee/34/a9914e676971a13d6cc671b1ed172f9804b50a3a80a143ff196e52f4c7ee/azure_core-1.37.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3d/9e/1c90a122ea6180e8c72eb7294adc92531b0e08eb3d2324c2ba70d37f4802/azure_storage_blob-12.27.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/10/cb/f2ad4230dc2eb1a74edf38f1a38b9b52277f75bef262d8908e60d957e13c/blinker-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/96/9a/663251dfb35aaddcbdbef78802ea5a9d3fad9d5fadde8774eacd9e1bfbb7/boost_histogram-1.6.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl @@ -485,28 +492,28 @@ environments: - pypi: https://files.pythonhosted.org/packages/19/0d/669d4bbeb36b87ba504409d85c68ec297e6f434ea6525424f8aa5f14abac/cartopy-0.25.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4f/f4/4a65460d5cb6784128019fd707a87993f378db25e796eba01400a0903f62/cdsapi-0.7.7-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/27/6414b1b7e5e151300c54e28ad1cf3e3b34fe66dc3256a989b031166b1ba3/cdshealpix-0.7.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/41/01/2e486a570e095869a153c12381cb2c143eb0ed187067c3199306b33e5c36/cf_xarray-0.10.9-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a3/8f/c42a98f933022c7de00142526c9b6b7429fdcd0fc66c952b4ebbf0ff3b7f/cf_xarray-0.10.10-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ba/08/52f06ff2f04d376f9cd2c211aefcf2b37f1978e43289341f362fc99f6a0e/cftime-1.6.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/3d/9a/2abecb28ae875e39c8cad711eb1186d8d14eab564705325e77e4e6ab9ae5/click_plugins-1.1.1.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/73/86/43fa9f15c5b9fb6e82620428827cd3c284aa933431405d1bcf5231ae3d3e/cligj-0.7.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/60/97/891a0971e1e4a8c5d2b20bbe0e524dc04548d2307fee33cdeba148fd4fc7/comm-0.2.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/56/e7e69b427c3878352c2fb9b450bd0e19ed552753491d39d7d0a2f5226d41/cryptography-46.0.3-cp311-abi3-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/fa/25/0be9314cd72fe2ee2ef89ceb1f438bc156428a12177d684040456eee4a56/cupy_xarray-0.1.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/7a/e8/77a231ae531cf38765b75ddf27dae28bb5f70b41d8bb4f15ce1650e93f57/cyclopts-4.3.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b0/d0/89247ec250369fc76db477720a26b2fce7ba079ff1380e4ab4529d2fe233/debugpy-1.8.17-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/07/18/5ca04dfda3e53b5d07b072033cc9f7bf10f93f78019366bff411433690d1/cyclopts-4.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/3e/e27078370414ef35fafad2c06d182110073daaeb5d3bf734b0b1eeefe452/debugpy-1.8.19-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/55/e2/2537ebcff11c1ee1ff17d8d0b6f4db75873e3b0fb32c2d4a2ee31ecb310a/docstring_parser-0.17.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/11/a8/c6a4b901d17399c77cd81fb001ce8961e9f5e04d3daf27e8925cb012e163/docutils-0.22.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/02/10/5da547df7a391dcde17f59520a231527b8571e6f46fc8efb02ccb370ab12/docutils-0.22.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0c/d5/c5db1ea3394c6e1732fb3286b3bd878b59507a8f77d32a2cebda7d7b7cd4/donfig-0.8.1.post1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/82/29/153d1b4fc14c68e6766d7712d35a7ab6272a801c52160126ac7df681f758/duckdb-1.4.2-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/91/bd/d501c3c3602e70d1d729f042ae0b85446a1213a630a7a4290f361b37d9a8/earthengine_api-1.7.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1a/7b/adf3f611f11997fc429d4b00a730604b65d952417f36a10c4be6e38e064d/duckdb-1.4.3-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/ee/25/a484c2ab78e9da027c88b7bad10c47b02655ba0ff31bab9ebb34c9866292/earthengine_api-1.7.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a3/cf/7feb3222d770566ca9eaf0bf6922745fadd1ed7ab11832520063a515c240/ecmwf_datastores_client-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/54/5e3b0e41799e17e5eff1547fda4aab53878c0adb4243de6b95f8ddef899e/ee_extra-2025.7.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/06/98/3e22f4386f6c1957f5994c9aa9cedd8a442bb75766bd0b2e2c1c92854af9/eemont-2025.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/fa/09/f92f3d87c967d80fb73fa45a7b8ce6048fcf6bc9ba04ef0fb04443e209d3/eerepr-0.1.2-py3-none-any.whl - pypi: git+ssh://git@forgejo.tobiashoelzer.de:22222/tobias/entropy.git#9ca1bdf4afc4ac9b0ea29ebbc060ffecb5cffcf7 - pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ed/ee/cd1f7e29979d0d71c8fabf5090a759b8d338bddf96aab286e39c7a7b2c0a/flox-0.10.7-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ad/ec/2eff1f7617979121a38841b9c5b4fe0eaa64dc1d976cf4c85328a288ba8c/flox-0.10.8-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/da/71/ae30dadffc90b9006d77af76b393cb9dfbfc9629f339fc1574a1c52e6806/future-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0f/4f/16e34c39f1840203216a79084d92aed6722ba00d34815807bc3e04d58c9f/geemap-0.36.6-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a9/fb/c1e92716ee5aa00d48b650f0cb43220a1bf4088c8d572dfc21d400b16723/geoarrow_rust_core-0.6.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl @@ -518,25 +525,25 @@ environments: - pypi: https://files.pythonhosted.org/packages/01/61/d4b89fec821f72385526e1b9d9a3a0385dda4a72b206d28049e2c7cd39b8/gitpython-3.1.45-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/d4/90197b416cb61cefd316964fd9e7bd8324bcbafabf40eef14a9f20b81974/google_api_core-2.28.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/96/58/c1e716be1b055b504d80db2c8413f6c6a890a6ae218a65f178b63bc30356/google_api_python_client-2.187.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/d1/385110a9ae86d91cc14c5282c61fe9f4dc41c0b9f7d423c6ad77038c4448/google_auth-2.43.0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/44/a7/ca23dd006255f70e2bc469d3f9f0c82ea455335bfd682ad4d677adc435de/google_auth_httplib2-0.2.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c6/97/451d55e05487a5cd6279a01a7e34921858b16f7dc8aa38a2c684743cd2b3/google_auth-2.45.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/99/d5/3c97526c8796d3caf5f4b3bed2b05e8a7102326f00a334e7a438237f3b22/google_auth_httplib2-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/89/20/bfa472e327c8edee00f04beecc80baeddd2ab33ee0e86fd7654da49d45e9/google_cloud_core-2.5.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ae/ef/3b57bf617ee0c79450c1ff211d1eb888db8fc1050ac74b3e52cc6ed86e63/google_cloud_storage-3.6.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c3/ca/1ea2fd13ff9f8955b85e7956872fdb7050c4ace8a2306a6d177edb9cf7fe/google_crc32c-1.7.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/2d/80/6e5c7c83cea15ed4dfc4843b9df9db0716bc551ac938f7b5dd18a72bd5e4/google_cloud_storage-3.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ce/42/b468aec74a0354b34c8cbf748db20d6e350a68a2b0912e128cabee49806c/google_crc32c-1.8.0-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl - pypi: https://files.pythonhosted.org/packages/1f/0b/93afde9cfe012260e9fe1522f35c9b72d6ee222f316586b1f23ecf44d518/google_resumable_media-2.8.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c4/ab/09169d5a4612a5f92490806649ac8d41e3ec9129c636754575b3553f4ea4/googleapis_common_protos-1.72.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/1d/99/5efd413072428bf1973c34d76a2f476a621848da86cecd8392ef59ba7640/h3-4.3.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/0f/d6/0da119f5fc37311b34f301e1ef60f717bf9aa289f4fed9075bf4cced0406/h3-4.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b6/08/b349ae3b7051b37155f40e09852193fc56f9aafe2edf6ef3e190eb329a2f/h3ronpy-0.22.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/d6/49/1f35189c1ca136b2f041b72402f2eb718bdcb435d9e88729fe6f6909c45d/h5netcdf-1.7.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d9/69/4402ea66272dacc10b298cca18ed73e1c0791ff2ae9ed218d3859f9698ac/h5py-3.15.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/8c/a2/0d269db0f6163be503775dc8b6a6fa15820cc9fdc866f6ba608d86b721f2/httplib2-0.31.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/2b/74/c335456c500cda9e67ab88064b89b1e92a5a11b6203dbb309e00ddc58d50/icechunk-1.1.13-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/94/56/c5e8db63ba0e27b310a0b4c384da555b361741e7d186044d31f400c0419e/icechunk-1.1.14-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4c/0f/b66d63d4a5426c09005d3713b056e634e00e69788fdc88d1ffe40e5b7654/ipycytoscape-1.3.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ca/d3/642a6dc3db8ea558a9b5fbc83815b197861868dc98f98a789b85c7660670/ipyevents-2.0.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/00/60/249e3444fcd9c833704741769981cd02fe2c7ce94126b1394e7a3b26e543/ipyfilechooser-0.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a3/17/20c2552266728ceba271967b87919664ecc0e33efca29c3efc6baf88c5f9/ipykernel-7.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/49/69/e9858f2c0b99bf9f036348d1c84b8026f438bb6875effe6a9bcd9883dada/ipyleaflet-0.20.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/05/aa/62893d6a591d337aa59dcc4c6f6c842f1fe20cd72c8c5c1f980255243252/ipython-9.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f1/df/8ee1c5dd1e3308b5d5b2f2dfea323bb2f3827da8d654abb6642051199049/ipython-9.8.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/56/6d/0d9848617b9f753b87f214f1c682592f7ca42de085f564352f10f0843026/ipywidgets-8.1.8-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl @@ -552,40 +559,43 @@ environments: - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/97/1a/78b19893197ed7525edfa7f124a461626541e82aec694a468ba97755c24e/netcdf4-1.7.3-cp311-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/93/f7/616963e354a30290b281af99ad9ead977bd60281ccb82daf32b75cc1b7d9/numbagg-0.9.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ae/d3/ff8f1b9968aa4dcd1da1880322ed492314cc920998182e549b586c895a17/numbagg-0.9.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c4/e6/d359fdd37498e74d26a167f7a51e54542e642ea47181eb4e643a69a066c3/numcodecs-0.16.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b0/e0/760e73c111193db5ca37712a148e4807d1b0c60302ab31e4ada6528ca34d/numpy_groupies-0.11.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4a/4e/44dbb46b3d1b0ec61afda8e84837870f2f9ace33c564317d59b70bc19d3e/nvidia_nccl_cu12-2.28.9-py3-none-manylinux_2_18_x86_64.whl - pypi: https://files.pythonhosted.org/packages/53/20/08c6dc0f20c1394e2324b9344838e4e7af770cdcb52c30757a475f50daeb/obstore-0.8.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/99/e2/311fb383d9534eef7bfbe858fad931b6e3dbe85843c50592f50063c3bc83/odc_geo-0.4.10-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/04/48/d45d414b8228325051b0a09f68322ef26717eb9b6517579ae395adf2fbfc/odc_loader-0.5.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/fd/0e/3f555b37a4e9da2aa37655b71e83792401958dc4078e77ffd4fa2616934f/odc_stac-0.4.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/84/99/6636f7097a5e461d560317024522279f52931b5a52c8caa0755a14d5f1fd/odc_loader-0.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e2/c7/b8f2b3e53f26f8f463002f3e8023189653b627b22ba6c00ef86eaba50b73/odc_stac-0.5.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e2/68/78a3c253f146254b8e2c19f4a4768f272e12ef11001d9b45ec7b165db054/pandas_stubs-2.3.3.251201-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/16/32/f8e3c85d1d5250232a5d3477a2a28cc291968ff175caeadaf3cc19ce0e4a/parso-0.8.5-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/c3/3031c931098de393393e1f93a38dc9ed6805d86bb801acc3cf2d5bd1e6b7/plotly-6.5.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a8/87/77cc11c7a9ea9fd05503def69e3d18605852cd0d4b0d3b8f15bbeb3ef1d1/pooch-1.8.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4e/6d/280c4c2ce28b1593a19ad5239c8b826871fc6ec275c21afc8e1820108039/proto_plus-1.26.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/1d/2a/3c5f05a4af06649547027d288747f68525755de692a26a7720dced3652c0/protobuf-6.33.1-cp39-abi3-manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/cd/24/3b7a0818484df9c28172857af32c2397b6d8fcd99d9468bd4684f98ebf0a/proto_plus-1.27.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/56/13/333b8f421738f149d4fe5e49553bc2a2ab75235486259f689b4b91f96cec/protobuf-6.33.2-cp39-abi3-manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/ff/7b/e9a6fa461ef266c5a23485004934b8f08a2a8ddc447802161ea56d9837dd/psygnal-0.15.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c8/f1/d6a797abb14f6283c0ddff96bbdd46937f64122b8c925cab503dd37f8214/pyasn1-0.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/47/8d/d529b5d697919ba8c11ad626e835d4039be708a35b0d22de83a269a6682c/pyasn1_modules-0.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ab/4c/b888e6cf58bd9db9c93f40d1c6be8283ff49d88919231afe93a6bcf61626/pydeck-0.9.1-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e5/e0/050018d855d26d3c0b4a7d1b2ed692be758ce276d8289e2a2b44ba1014a5/pyerfa-2.0.1.5-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/91/fb/3380832944eb4552b5873dd8c75095250356edfadf1156bd562da04fc793/pypalettes-0.2.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/df/80/fc9d01d5ed37ba4c42ca2b55b4339ae6e200b456be3a1aaddf4a9fa99b8c/pyperclip-1.11.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/82/06/cad54e8ce758bd836ee5411691cbd49efeb9cc611b374670fce299519334/pyshp-3.0.3-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c0/01/eb465e19137b36ba683417e982907aa9c7df1fb0b968e1424e5d678ba0dc/pystac-1.14.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9f/86/3ec01436c6235a23a80e978b261a87481c1acaf626a5c618e9edac30e5e1/pystac-1.14.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5d/d2/5f6367b14c9f250d1a6725d18bd1e9584f5ab1587e292f3a847e59189598/pystac_client-0.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/88/ae/baf3a8057d8129896a7e02619df43ea0d918fc5b2bb66eb6e2470595fbac/python_box-7.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/05/19/94d6c66184c7d0f9374330c714f62c147dbb53eda9efdcc8fc6e2ac454c5/rasterio-1.4.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/7b/84/66c0d9cca2a09074ec2ce6fffa87709ca51b0d197ae742d835e841bac660/rasterio-1.4.4-cp313-cp313-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/f2/98/7e6d147fd16a10a5f821db6e25f192265d6ecca3d82957a4fdd592cad49c/ratelim-0.1.6-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/34/83/a485250bc09db55e4b4389d99e583fac871ceeaaa4620b67a31d8db95ef5/rechunker-0.5.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/13/2f/b4530fbf948867702d0a3f27de4a6aab1d156f406d72852ab902c4d04de9/rich_rst-1.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d6/e5/4f4fc949e7eb8415a57091767969e1d314dcf06b74b85bbbf29991395af4/rioxarray-0.20.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/64/8d/0133e4eb4beed9e425d9a98ed6e081a55d195481b7632472be1af08d2f6b/rsa-4.9.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/2d/fc/56cba14af8ad8fd020c85b6e44328520ac55939bb1f9d01444ad470504cb/s3fs-2025.10.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b3/19/9e050c0dca8aba824d67cc0db69fb459c28d8cd3f6855b1405b3f29cc91d/ruff-0.14.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/44/8c/04797ebb53748b4d594d4c334b2d9a99f2d2e06e19ad505f1313ca5d56eb/s3fs-2025.12.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5f/e1/5ef25f52973aa12a19cf4e1375d00932d7fb354ffd310487ba7d44225c1a/s3transfer-0.15.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a3/bb/bbae36d06c0fd670e8373da67096cd57058b57c9bad7d92969b5e3b730af/scooby-0.11.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/83/11/00d3c3dfc25ad54e731d91449895a79e4bf2384dc3ac01809010ba88f6d5/seaborn-0.13.2-py3-none-any.whl @@ -595,12 +605,14 @@ environments: - pypi: https://files.pythonhosted.org/packages/30/09/cd7134f1ed5074a7d456640e7ba9a8c8e68a831837b4e7bfd9f29e5700a4/st_theme-1.2.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7a/31/7d601cc639b0362a213552a838af601105591598a4b08ec80666458083d2/stopuhr-0.0.10-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/39/60/868371b6482ccd9ef423c6f62650066cf8271fdb2ee84f192695ad6b7a96/streamlit-1.51.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/95/6b7873f0267973ebd55ba9cd33a690b35a116f2779901ef6185a0e21864d/streamlit-1.52.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/72/35/d3cdab8cff94971714f866181abb1aa84ad976f6e7b6218a0499197465e4/streamlit_folium-0.25.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8c/67/f2dc967db68b984dd71fc0092dc906ddf5d09eea8c22830e02267ce18e19/textual-6.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b5/fc/5e2988590ff2e0128eea6446806c904445a44e17256c67141573ea16b5a5/textual-6.11.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/c0/fdf9d3ee103ce66a55f0532835ad5e154226c5222423c6636ba049dc42fc/traittypes-0.2.3-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/94/fc/1d34ec891900d9337169ff9f8252fcaa633ae5c4d36b67effd849ed4f9ac/ty-0.0.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/e7/c1/56ef16bf5dcd255155cc736d276efa6ae0a5c26fd685e28f0412a4013c01/types_pytz-2025.2.0.20251108-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/95/20/92e3083b0e854943015bc8a7866e284ead9efadf9bf6809e6fce3b7ded61/ultraplot-1.66.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a9/99/3ae339466c9183ea5b8ae87b34c0b897eda475d2aec2307cae60e5cd4f29/uritemplate-4.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e6/9f/ca52771fe972e0dcc5167fedb609940e01516066938ff2ee28b273ae4f29/vega_datasets-0.9.0-py3-none-any.whl @@ -1014,10 +1026,10 @@ packages: - astropy[dev] ; extra == 'dev-all' - astropy[test-all] ; extra == 'dev-all' requires_python: '>=3.11' -- pypi: https://files.pythonhosted.org/packages/6a/cf/b80563290409eb01febdf0715b7f8be03172c153a7a3859807936e2f7bbd/astropy_iers_data-0.2025.11.24.0.39.11-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/e1/2b/a3d75e4a8966460a9f79635797bb3e85e29c3bff86640087c7814429d917/astropy_iers_data-0.2025.12.15.0.40.51-py3-none-any.whl name: astropy-iers-data - version: 0.2025.11.24.0.39.11 - sha256: 219a9fa61ba454e7413b5e3165ecfa9affed8433549df2ca1bb11cb3f590cc2f + version: 0.2025.12.15.0.40.51 + sha256: 5f89c4b9d711638005407b4b57f76d82484f0182e459df91fcdfc354c3a34d8e requires_dist: - pytest ; extra == 'docs' - hypothesis ; extra == 'test' @@ -1046,213 +1058,212 @@ packages: purls: [] size: 68072 timestamp: 1756738968573 -- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.4.0-pyh71513ae_0.conda - sha256: f6c3c19fa599a1a856a88db166c318b148cac3ee4851a9905ed8a04eeec79f45 - md5: c7944d55af26b6d2d7629e27e9a972c1 +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.4.0-pyhcf101f3_1.conda + sha256: c13d5e42d187b1d0255f591b7ce91201d4ed8a5370f0d986707a802c20c9d32f + md5: 537296d57ea995666c68c821b00e360b depends: - python >=3.10 + - python license: MIT license_family: MIT purls: - - pkg:pypi/attrs?source=hash-mapping - size: 60101 - timestamp: 1759762331492 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.9.1-h7ca4310_7.conda - sha256: 03c997e14a637fc67e237ba9ef5c8d4cbac0ea57003fe726249fcba227c971ce - md5: 6e91a9182506f6715c25c3ab80990653 + - pkg:pypi/attrs?source=compressed-mapping + size: 64759 + timestamp: 1764875182184 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.9.3-hef928c7_0.conda + sha256: d9c5babed03371448bb0dc91a1573c80d278d1222a3b0accef079ed112e584f9 + md5: bdd464b33f6540ed70845b946c11a7b8 depends: - libgcc >=14 - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.9.10,<0.9.11.0a0 - - aws-c-io >=0.23.3,<0.23.4.0a0 - - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 - aws-c-http >=0.10.7,<0.10.8.0a0 - - aws-c-common >=0.12.5,<0.12.6.0a0 + - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + - aws-c-io >=0.23.3,<0.23.4.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 license: Apache-2.0 license_family: APACHE purls: [] - size: 122989 - timestamp: 1763068404203 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.9.10-h346e085_1.conda - sha256: 4aee0ccb53fb3ee5d9c902c7feb7464562a6cfd4ae55ac280670d26493dbe98a - md5: 7e6b378cfb6ad918a5fa52bd7741ab20 + size: 133443 + timestamp: 1764765235190 +- 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.5,<0.12.6.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 - libgcc >=14 - openssl >=3.5.4,<4.0a0 license: Apache-2.0 license_family: Apache purls: [] - size: 55692 - timestamp: 1762858412739 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.12.5-hb03c661_1.conda - sha256: f5876cc9792346ecdb0326f16f38b2f2fd7b5501228c56419330338fcf37e676 - md5: f1d45413e1c41a7eff162bf702c02cea + size: 56230 + timestamp: 1764593147526 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.12.6-hb03c661_0.conda + sha256: 926a5b9de0a586e88669d81de717c8dd3218c51ce55658e8a16af7e7fe87c833 + md5: e36ad70a7e0b48f091ed6902f04c23b8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 license: Apache-2.0 license_family: Apache purls: [] - size: 238560 - timestamp: 1762858460824 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.1-h7e655bb_8.conda - sha256: e91d2fc0fddf069b8d39c0ce03eca834673702f7e17eda8e7ffc4558b948053d - md5: 1baf55dfcc138d98d437309e9aba2635 + size: 239605 + timestamp: 1763585595898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.1-h8b1a151_9.conda + sha256: 96edccb326b8c653c8eb95a356e01d4aba159da1a97999577b7dd74461b040b4 + md5: f7ec84186dfe7a9e3a9f9e5a4d023e75 depends: - libgcc >=14 - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.12.5,<0.12.6.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 license: Apache-2.0 license_family: APACHE purls: [] - size: 22138 - timestamp: 1762957433991 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.6-h3cb25bf_6.conda - sha256: bdf4cd6f3e5aca07cd3cb935d5913eb95b76ede7e8c24aa6a919b2b8ff2e3a6f - md5: 874d910adf3debe908b1e8e5847e0014 + size: 22272 + timestamp: 1764593718823 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.7-h28f887f_1.conda + sha256: a5b151db1c8373b6ca2dacea65bc8bda02791a43685eebfa4ea987bb1a758ca9 + md5: 7b8e3f846353b75db163ad93248e5f9d depends: - - __glibc >=2.17,<3.0.a0 + - libgcc >=14 - libstdcxx >=14 - - libgcc >=14 - - aws-checksums >=0.2.7,<0.2.8.0a0 + - __glibc >=2.17,<3.0.a0 - aws-c-io >=0.23.3,<0.23.4.0a0 - - aws-c-common >=0.12.5,<0.12.6.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-checksums >=0.2.7,<0.2.8.0a0 license: Apache-2.0 license_family: APACHE purls: [] - size: 58969 - timestamp: 1762957401979 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.10.7-hc5c8343_4.conda - sha256: 8d13ad2250a28e3dcebcc894615702483bf2b90cbdc7f20f329e6ecb7f9e177a - md5: b6fdadda34f2a60870980607ef469e39 + size: 58806 + timestamp: 1764675439822 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.10.7-ha8fc4e3_5.conda + sha256: 5527224d6e0813e37426557d38cb04fed3753d6b1e544026cfbe2654f5e556be + md5: 3028f20dacafc00b22b88b324c8956cc depends: - libgcc >=14 - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + - aws-c-io >=0.23.3,<0.23.4.0a0 - aws-c-compression >=0.3.1,<0.3.2.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 224580 + timestamp: 1764675497060 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.23.3-hdaf4b65_5.conda + sha256: 07d7f2a4493ada676084c3f4313da1fab586cf0a7302572c5d8dde6606113bf4 + md5: 132e8f8f40f0ffc0bbde12bb4e8dd1a1 + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - s2n >=1.6.2,<1.6.3.0a0 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 181361 + timestamp: 1765168239856 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.13.3-hc63082f_11.conda + sha256: fb102b0346a1f5c4f3bb680ec863c529b0333fa4119d78768c3e8a5d1cc2c812 + md5: 6a653aefdc5d83a4f959869d1759e6e3 + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 - aws-c-io >=0.23.3,<0.23.4.0a0 - - aws-c-common >=0.12.5,<0.12.6.0a0 - - aws-c-cal >=0.9.10,<0.9.11.0a0 - license: Apache-2.0 - license_family: APACHE - purls: [] - size: 224435 - timestamp: 1763054477317 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.23.3-ha76f1cc_3.conda - sha256: f49cb3faa8e1dc2b4b66e9b11672c6220a387c2d431de088675388878d3f0575 - md5: 14d9fc6b1c7a823fca6cf65f595ff70d - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - aws-c-common >=0.12.5,<0.12.6.0a0 - - s2n >=1.6.0,<1.6.1.0a0 - - aws-c-cal >=0.9.10,<0.9.11.0a0 - license: Apache-2.0 - license_family: APACHE - purls: [] - size: 181244 - timestamp: 1763043567105 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.13.3-h3a25ec9_10.conda - sha256: df84140413559b860499b9540ed133d15b7eae5f17f01a98c80869be74e18071 - md5: f329cc15f3b4559cab20646245c3fc9b - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - aws-c-http >=0.10.7,<0.10.8.0a0 - - aws-c-io >=0.23.3,<0.23.4.0a0 - - aws-c-common >=0.12.5,<0.12.6.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 license: Apache-2.0 license_family: APACHE purls: [] - size: 216089 - timestamp: 1762957365125 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.10.1-hcb69869_2.conda - sha256: 06c47c47b6c0578da68cc3a92f059e59add1a685ea121d123e3fd267436ebdb5 - md5: 3bcec65152e70e02e8d17d296c056a82 + size: 216454 + timestamp: 1764681745427 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.11.3-h06ab39a_1.conda + sha256: 8de2292329dce2fd512413d83988584d616582442a07990f67670f9bc793a98b + md5: 3689a4290319587e3b54a4f9e68f70c8 depends: - libgcc >=14 - __glibc >=2.17,<3.0.a0 - - aws-c-io >=0.23.3,<0.23.4.0a0 - - aws-c-common >=0.12.5,<0.12.6.0a0 - - aws-c-http >=0.10.7,<0.10.8.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 - openssl >=3.5.4,<4.0a0 - - aws-c-auth >=0.9.1,<0.9.2.0a0 - - aws-c-cal >=0.9.10,<0.9.11.0a0 - - aws-checksums >=0.2.7,<0.2.8.0a0 - license: Apache-2.0 - license_family: APACHE - purls: [] - size: 149677 - timestamp: 1763077781379 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.4-h7e655bb_3.conda - sha256: 8d84039ea1d33021623916edfc23f063a5bcef90e8f63ae7389e1435deb83e53 - md5: 70e83d2429b7edb595355316927dfbea - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - aws-c-common >=0.12.5,<0.12.6.0a0 - license: Apache-2.0 - license_family: APACHE - purls: [] - size: 59204 - timestamp: 1762957305800 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.7-h7e655bb_4.conda - sha256: a95b3cc8e3c0ddb664bbd26333b35986fd406f02c2c60d380833751d2d9393bd - md5: 83a6e0fc73a7f18a8024fc89455da81c - depends: - - libgcc >=14 - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.12.5,<0.12.6.0a0 - license: Apache-2.0 - license_family: APACHE - purls: [] - size: 76774 - timestamp: 1762957236884 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.35.2-h2ceb62e_4.conda - sha256: 2ad7224d5db18fd94238107a0660fcbd5cd179f3b55c9633e612e1465d20f1e3 - md5: 363b3e12e49cecf931338d10114945e9 - depends: - - libgcc >=14 - - __glibc >=2.17,<3.0.a0 - - libstdcxx >=14 - - libgcc >=14 - - aws-c-event-stream >=0.5.6,<0.5.7.0a0 - - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 - - aws-c-common >=0.12.5,<0.12.6.0a0 - - aws-c-auth >=0.9.1,<0.9.2.0a0 - - aws-c-mqtt >=0.13.3,<0.13.4.0a0 - - aws-c-cal >=0.9.10,<0.9.11.0a0 - - aws-c-http >=0.10.7,<0.10.8.0a0 - aws-c-io >=0.23.3,<0.23.4.0a0 - - aws-c-s3 >=0.10.1,<0.10.2.0a0 + - aws-c-http >=0.10.7,<0.10.8.0a0 + - aws-c-auth >=0.9.3,<0.9.4.0a0 + - aws-checksums >=0.2.7,<0.2.8.0a0 + - aws-c-cal >=0.9.13,<0.9.14.0a0 license: Apache-2.0 license_family: APACHE purls: [] - size: 407871 - timestamp: 1763082700190 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.606-hd6e39bc_7.conda - sha256: 1d3c3d62ff200124be6bfad694c2d38af404f765eb9ee0ac14f249920e4138d4 - md5: 0f7a1d2e2c6cdfc3864c4c0b16ade511 + size: 151382 + timestamp: 1765174166541 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.4-h8b1a151_4.conda + sha256: 9d62c5029f6f8219368a8665f0a549da572dc777f52413b7d75609cacdbc02cc + md5: c7e3e08b7b1b285524ab9d74162ce40b depends: - - libgcc >=14 - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - aws-c-common >=0.12.6,<0.12.7.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 59383 + timestamp: 1764610113765 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.7-h8b1a151_5.conda + sha256: a8693d2e06903a09e98fe724ed5ec32e7cd1b25c405d754f0ab7efb299046f19 + md5: 68da5b56dde41e172b7b24f071c4b392 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - aws-c-common >=0.12.6,<0.12.7.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 76915 + timestamp: 1764593731486 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.35.4-h8824e59_0.conda + sha256: 524fc8aa2645e5701308b865bf5c523257feabc6dfa7000cb8207ccfbb1452a1 + md5: 113b9d9913280474c0868b0e290c0326 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - aws-c-event-stream >=0.5.7,<0.5.8.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 + - aws-c-io >=0.23.3,<0.23.4.0a0 + - aws-c-auth >=0.9.3,<0.9.4.0a0 + - aws-c-http >=0.10.7,<0.10.8.0a0 + - aws-c-mqtt >=0.13.3,<0.13.4.0a0 + - aws-c-s3 >=0.11.3,<0.11.4.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 408804 + timestamp: 1765200263609 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.606-h20b40b1_10.conda + sha256: e0d81b7dd6d054d457a1c54d17733d430d96dc5ca9b2ca69a72eb41c3fc8c9bf + md5: 937d1d4c233adc6eeb2ac3d6e9a73e53 + depends: - libstdcxx >=14 - libgcc >=14 + - __glibc >=2.17,<3.0.a0 - libcurl >=8.17.0,<9.0a0 - - aws-c-common >=0.12.5,<0.12.6.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-crt-cpp >=0.35.4,<0.35.5.0a0 - libzlib >=1.3.1,<2.0a0 - - aws-c-event-stream >=0.5.6,<0.5.7.0a0 - - aws-crt-cpp >=0.35.2,<0.35.3.0a0 + - aws-c-event-stream >=0.5.7,<0.5.8.0a0 license: Apache-2.0 license_family: APACHE purls: [] - size: 3473236 - timestamp: 1763210963111 -- pypi: https://files.pythonhosted.org/packages/b1/3c/b90d5afc2e47c4a45f4bba00f9c3193b0417fad5ad3bb07869f9d12832aa/azure_core-1.36.0-py3-none-any.whl + size: 3472674 + timestamp: 1765257107074 +- pypi: https://files.pythonhosted.org/packages/ee/34/a9914e676971a13d6cc671b1ed172f9804b50a3a80a143ff196e52f4c7ee/azure_core-1.37.0-py3-none-any.whl name: azure-core - version: 1.36.0 - sha256: fee9923a3a753e94a259563429f3644aaf05c486d45b1215d098115102d91d3b + version: 1.37.0 + sha256: b3abe2c59e7d6bb18b38c275a5029ff80f98990e7c90a5e646249a56630fcc19 requires_dist: - requests>=2.21.0 - typing-extensions>=4.6.0 @@ -1343,9 +1354,23 @@ packages: purls: [] size: 299198 timestamp: 1761094654852 -- conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.14.2-pyha770c72_0.conda - sha256: b949bd0121bb1eabc282c4de0551cc162b621582ee12b415e6f8297398e3b3b4 - md5: 749ebebabc2cae99b2e5b3edd04c6ca2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.2.0-py313h18e8e13_0.conda + sha256: dac72e2f4f64d8d7eccd424dd02d90c2c7229d6d3e0fa4a819ab41e6c7d30351 + md5: ab79cf30dea6ef4d1ab2623c5ac5601b + depends: + - python + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - zstd >=1.5.7,<1.6.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause AND MIT AND EPL-2.0 + purls: + - pkg:pypi/backports-zstd?source=hash-mapping + size: 240935 + timestamp: 1765057668668 +- 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 @@ -1354,8 +1379,8 @@ packages: license_family: MIT purls: - pkg:pypi/beautifulsoup4?source=hash-mapping - size: 89146 - timestamp: 1759146127397 + size: 90399 + timestamp: 1764520638652 - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.3.0-pyhcf101f3_0.conda sha256: e03ba1a2b93fe0383c57920a9dc6b4e0c2c7972a3f214d531ed3c21dc8f8c717 md5: b1a27250d70881943cca0dd6b4ba0956 @@ -1553,17 +1578,17 @@ packages: purls: [] size: 260341 timestamp: 1757437258798 -- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda - sha256: f8003bef369f57396593ccd03d08a8e21966157269426f71e943f96e4b579aeb - md5: f7f0d6cc2dc986d42ac2689ec88192be +- 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 >=13 + - libgcc >=14 license: MIT license_family: MIT purls: [] - size: 206884 - timestamp: 1744127994291 + size: 207882 + timestamp: 1765214722852 - conda: https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.22.0-hc31b594_1.conda sha256: efe06a982fe7f4e483a2043c4b43fc3598a538a66ed11364ee5b25d3400ef415 md5: 52019609422a72ec80c32bbc16a889d8 @@ -1610,17 +1635,17 @@ packages: - pkg:pypi/cached-property?source=hash-mapping size: 11065 timestamp: 1615209567874 -- conda: https://conda.anaconda.org/conda-forge/noarch/cachetools-6.2.2-pyhd8ed1ab_0.conda - sha256: 69e3870170ca767b2f82ca29854d252669dfc9aba873f7e9b629f642bad4342b - md5: 9c265afcec13eb6e844ae51b4a4b52ad +- conda: https://conda.anaconda.org/conda-forge/noarch/cachetools-6.2.4-pyhd8ed1ab_0.conda + sha256: e00325243791f4337d147224e4e1508de450aeeab1abc0470f2227748deddbfc + md5: 629c8fd0c11eb853732608e2454abf8e depends: - python >=3.10 license: MIT license_family: MIT purls: - pkg:pypi/cachetools?source=hash-mapping - size: 16751 - timestamp: 1763073377061 + size: 16867 + timestamp: 1765829705483 - pypi: https://files.pythonhosted.org/packages/19/0d/669d4bbeb36b87ba504409d85c68ec297e6f434ea6525424f8aa5f14abac/cartopy-0.25.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl name: cartopy version: 0.25.0 @@ -1676,10 +1701,10 @@ packages: - pkg:pypi/certifi?source=compressed-mapping size: 157131 timestamp: 1762976260320 -- pypi: https://files.pythonhosted.org/packages/41/01/2e486a570e095869a153c12381cb2c143eb0ed187067c3199306b33e5c36/cf_xarray-0.10.9-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/a3/8f/c42a98f933022c7de00142526c9b6b7429fdcd0fc66c952b4ebbf0ff3b7f/cf_xarray-0.10.10-py3-none-any.whl name: cf-xarray - version: 0.10.9 - sha256: a41fa218e8f31b6c82c4687d92951f536186e288e5da6d56efd92a57b628eb18 + version: 0.10.10 + sha256: 04cbe8b2b5773849bda989059239ee7edddf5b00bf1783a8202e3b50e5f369d1 requires_dist: - xarray>=2024.7.0 - matplotlib ; extra == 'all' @@ -1734,18 +1759,19 @@ packages: - pkg:pypi/charset-normalizer?source=hash-mapping size: 50965 timestamp: 1760437331772 -- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh707e725_0.conda - sha256: 970b12fb186c3451eee9dd0f10235aeb75fb570b0e9dc83250673c2f0b196265 - md5: 9ba00b39e03a0afb2b1cc0767d4c6175 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda + sha256: 38cfe1ee75b21a8361c8824f5544c3866f303af1762693a178266d7f198e8715 + md5: ea8a6c3256897cc31263de9f455e25d9 depends: - - __unix - python >=3.10 + - __unix + - python license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/click?source=hash-mapping - size: 92604 - timestamp: 1763248639281 + size: 97676 + timestamp: 1764518652276 - pypi: https://files.pythonhosted.org/packages/3d/9a/2abecb28ae875e39c8cad711eb1186d8d14eab564705325e77e4e6ab9ae5/click_plugins-1.1.1.2-py2.py3-none-any.whl name: click-plugins version: 1.1.1.2 @@ -1764,17 +1790,18 @@ packages: - click>=4.0 - pytest-cov ; extra == 'test' requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,<4' -- conda: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-pyhd8ed1ab_0.conda - sha256: 57050bd1bbac9e4be3728da4d33dee2168884d61d0ec51cd2ac72a1b34e11fc3 - md5: fcac5929097ba1f2a0e5b6ecaa13b253 +- conda: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-pyhcf101f3_1.conda + sha256: 4c287c2721d8a34c94928be8fe0e9a85754e90189dd4384a31b1806856b50a67 + md5: 61b8078a0905b12529abc622406cb62c depends: - python >=3.10 + - python license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/cloudpickle?source=compressed-mapping - size: 26621 - timestamp: 1762167702602 + size: 27353 + timestamp: 1765303462831 - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 md5: 962b9857ee8e7018c22f2776ffa0b2d7 @@ -1819,17 +1846,17 @@ packages: - pkg:pypi/contourpy?source=compressed-mapping size: 297459 timestamp: 1762525479137 -- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.9-py313hd8ed1ab_101.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.11-py313hd8ed1ab_100.conda noarch: generic - sha256: 31da683e8a15e2062adfb29c9fb23d4253550a0b3c9be1cd45530f88796b4644 - md5: 367133808e89325690562099851529c8 + sha256: 63f677762304e6f8dc55e11dff6aafe71129cbbd0a77d176b99ba1f6a5053b77 + md5: 5bf347916a543bcb290c780fa449bf73 depends: - python >=3.13,<3.14.0a0 - python_abi * *_cp313 license: Python-2.0 purls: [] - size: 48397 - timestamp: 1761175097707 + size: 48369 + timestamp: 1765019689213 - pypi: https://files.pythonhosted.org/packages/c9/56/e7e69b427c3878352c2fb9b450bd0e19ed552753491d39d7d0a2f5226d41/cryptography-46.0.3-cp311-abi3-manylinux_2_28_x86_64.whl name: cryptography version: 46.0.3 @@ -1860,11 +1887,10 @@ packages: - check-sdist ; extra == 'pep8test' - click>=8.0.1 ; extra == 'pep8test' requires_python: '>=3.8,!=3.9.0,!=3.9.1' -- conda: https://conda.anaconda.org/rapidsai/linux-64/cucim-25.10.00-cuda12_py313_251008_ghgf278340_gn0%7D_phc494990.conda - build: cuda12_py313_251008_ghgf278340_gn0}_phc494990 +- conda: https://conda.anaconda.org/rapidsai/linux-64/cucim-25.12.00-cuda12_py313_251210_ghg0ea8217_gn0_phc494990.conda build_number: 0 - sha256: 9f99d3549f75aee5ffdc4567721b6411f409543c8a86c047f552bb5232c87de8 - md5: 88ea905effe154cc9979bf93842cad03 + sha256: 0b228012eafd66d76866126ad31c77f529be5bd71a58729d9ad52cad06faa85c + md5: ffb3eb826dd0371826da19420647ac80 depends: - __glibc >=2.28,<3.0.a0 - click @@ -1872,7 +1898,7 @@ packages: - cuda-version >=12,<13.0a0 - cupy >=13.6.0 - lazy_loader >=0.1 - - libcucim 25.10.00.* + - libcucim 25.12.00.* - libgcc >=14 - libstdcxx >=14 - numpy >=1.23,<3.0a0 @@ -1882,11 +1908,10 @@ packages: - scipy >=1.6 constrains: - openslide-python >=1.3.0 - file_name: cucim-25.10.00-cuda12_py313_251008_ghgf278340_gn0}_phc494990.conda license: Apache-2.0 license_family: Apache - size: 1564102 - timestamp: 1759941969543 + size: 1563466 + timestamp: 1765403154962 - conda: https://conda.anaconda.org/nvidia/linux-64/cuda-bindings-12.9.4-py313h3c5d65e_1.conda sha256: ff9632ef28626501a9917c7bc753af59d5124b8f93e66a2cdac7f4c691203a6b md5: 24e1c71403f08f297cf5d77395e7babf @@ -2166,19 +2191,19 @@ packages: purls: [] size: 24246736 timestamp: 1753975332907 -- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-pathfinder-1.3.2-pyhcf101f3_0.conda - sha256: a4d67a66a6c84fb94c55a81ebae4a32910097df5deb93b139662437ce0676c2e - md5: 102b786a153127b98b483d9d52f4ad97 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-pathfinder-1.3.3-pyhcf101f3_0.conda + sha256: 6f78993b194403725d4602355a8f1fc57f333eff9c3245a66f33e70c75d67163 + md5: b08fa4a3478526e33a4c08224398d2e5 depends: - - python >=3.9 - - cuda-version >=11.0,<14 + - python >=3.10 + - cuda-version >=12.0,<14 - python license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/cuda-pathfinder?source=hash-mapping - size: 31187 - timestamp: 1761775904756 + size: 30869 + timestamp: 1764891530469 - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-profiler-api-12.9.79-h7938cbb_1.conda sha256: 4f679dfbf2bf2d17abb507f31b0176c0e3572337b5005b9e36179948a53988ac md5: 90d09865fb37d11d510444e34ebe6a09 @@ -2210,9 +2235,9 @@ packages: license: LicenseRef-NVIDIA-End-User-License-Agreement size: 17161 timestamp: 1748727273518 -- conda: https://conda.anaconda.org/rapidsai/linux-64/cudf-25.10.00-cuda12_py313_251008_f4e35ca0.conda - sha256: 2681da63e1bd47913e5b0f2f15cdb4e753ab97799fdb87abab1c208762419d1d - md5: 8af6452d91a8136a6e1e68375531ea71 +- conda: https://conda.anaconda.org/rapidsai/linux-64/cudf-25.12.00-cuda12_py313_251210_580975be.conda + sha256: 41cb20eb9fb720870ddb34e79c91de9ac10be503d04672249effd1e75404bb9f + md5: 5b28e7c78dad185747e2f256d6ffbbf1 depends: - python - typing_extensions >=4.0.0 @@ -2222,9 +2247,9 @@ packages: - numba >=0.60.0,<0.62.0a0 - numpy >=1.23,<3.0a0 - pyarrow >=15.0.0,<22.0.0a0 - - libcudf 25.10.0.* - - pylibcudf 25.10.0.* - - rmm >=25.10.0,<25.11.0a0 + - libcudf 25.12.0.* + - pylibcudf 25.12.0.* + - rmm >=25.12.0,<25.13.0a0 - fsspec >=0.6.0 - cuda-cudart - cuda-python >=12.9.2,<13.0a0 @@ -2234,44 +2259,45 @@ packages: - packaging - cachetools - rich - - __glibc >=2.28,<3.0.a0 - libstdcxx >=14 - libgcc >=14 - - libcudf >=25.10.0,<25.11.0a0 + - __glibc >=2.28,<3.0.a0 + - libgcc >=14 + - libcudf >=25.12.0,<25.13.0a0 - python_abi 3.13.* *_cp313 license: Apache-2.0 - size: 2551452 - timestamp: 1759943783017 -- conda: https://conda.anaconda.org/rapidsai/linux-64/cudf-polars-25.10.00-cuda12_py313_251008_f4e35ca0.conda - sha256: 853eda485e32689a81151128bad302cab1c0dd90d7890058933a7638af973e83 - md5: 4e088b21088a395d3be0f3549f1e35e3 + size: 2597656 + timestamp: 1765408940672 +- conda: https://conda.anaconda.org/rapidsai/linux-64/cudf-polars-25.12.00-cuda12_py313_251210_580975be.conda + sha256: 00fc7fc2a344680a3d03dcf07b376c3299de37fb3fe2a45667d74c82e839c0ff + md5: 665423c66db4d416aaf27c44c925038f depends: - nvidia-ml-py >=12 - python - - pylibcudf 25.10.0.* - - polars >=1.28,<1.33 + - pylibcudf 25.12.0.* + - polars >=1.29,<1.35 - cuda-version >=12,<13.0a0 - python_abi 3.13.* *_cp313 license: Apache-2.0 - size: 447785 - timestamp: 1759943965502 -- conda: https://conda.anaconda.org/rapidsai/linux-64/cudf_kafka-25.10.00-cuda12_py313_251008_f4e35ca0.conda - sha256: 5da1e74f541d91dc2baa4c984643087b54d51f17d519435135e315b546ef67c0 - md5: 4ff74afc189e6efa237988e9386e0838 + size: 549408 + timestamp: 1765409154903 +- conda: https://conda.anaconda.org/rapidsai/linux-64/cudf_kafka-25.12.00-cuda12_py313_251210_580975be.conda + sha256: 390a7b1ad6fbc1bae5847f4b1049a539268765b1189ef1fd8e80e8f8c4c58a98 + md5: dd87eca012cb571a6fb187e11a970690 depends: - python - cuda-version >=12,<13.0a0 - - libcudf_kafka 25.10.0.* - - pylibcudf 25.10.0.* + - libcudf_kafka 25.12.0.* + - pylibcudf 25.12.0.* - cuda-cudart - - libstdcxx >=14 - - libgcc >=14 - __glibc >=2.28,<3.0.a0 - libgcc >=14 + - libstdcxx >=14 + - libgcc >=14 - python_abi 3.13.* *_cp313 license: Apache-2.0 - size: 83039 - timestamp: 1759943913730 + size: 85196 + timestamp: 1765409103257 - conda: https://conda.anaconda.org/nvidia/linux-64/cudnn-9.14.0.64-h321a1a8_0.conda sha256: 99640a03b0ad0dbcb56a861b61b3e7562faf4cde3cd3b1c84931d3731900bf0b md5: 6877162da8149a60652696fdd42c5c42 @@ -2286,70 +2312,67 @@ packages: license: LicenseRef-cuDNN-Software-License-Agreement size: 13345 timestamp: 1759955612217 -- conda: https://conda.anaconda.org/rapidsai/linux-64/cugraph-25.10.01-cuda12_py313_251013_741f9105.conda - build_number: 0 - sha256: e73a18047a7b63625a7e6890f6b316f2c244ae19697663bbaab2d81faeb3fc7b - md5: fc3a83483884ed84764ba11dd2c583a0 +- conda: https://conda.anaconda.org/rapidsai/linux-64/cugraph-25.12.02-cuda12_py313_251211_9765e20f.conda + sha256: 4b9cecf7b67fd59fea433929b756e749581b5396c4aba2ab624877931f558ede + md5: d5aec8bdf4e53a6bbe4a5dcaba7b9f8e depends: - cuda-version >=12,<13.0a0 - aiohttp - - cudf 25.10.* + - cudf 25.12.* - cupy >=13.6.0 - - dask-cuda 25.10.* - - dask-cudf 25.10.* + - dask-cuda 25.12.* + - dask-cudf 25.12.* - fsspec >=0.6.0 - - libcugraph 25.10.1.* - - pylibcudf 25.10.* - - pylibcugraph 25.10.1.* - - pylibraft 25.10.* + - libcugraph 25.12.2.* + - pylibcudf 25.12.* + - pylibcugraph 25.12.2.* + - pylibraft 25.12.* - python - - raft-dask 25.10.* - - rapids-dask-dependency 25.10.* + - raft-dask 25.12.* + - rapids-dask-dependency 25.12.* - requests - - ucxx 0.46.* + - ucxx 0.47.* - cuda-cudart - cuda-python >=12.9.2,<13.0a0 - __glibc >=2.28,<3.0.a0 - - libgcc >=14 - libstdcxx >=14 - libgcc >=14 - python_abi 3.13.* *_cp313 license: Apache-2.0 - size: 1111072 - timestamp: 1760374074824 -- conda: https://conda.anaconda.org/rapidsai/linux-64/cuml-25.10.00-cuda12_py313_251008_f9fcdbb0.conda - sha256: 616e96a12c8597c16fbb9b09cc75ecfe5e2ae702f6d806480462904867930887 - md5: 8f4f21c4485dc4540672f809d88ec309 + size: 1112574 + timestamp: 1765430187879 +- conda: https://conda.anaconda.org/rapidsai/linux-64/cuml-25.12.00-cuda12_py313_251211_5c22c200.conda + build_number: 0 + sha256: b8f987ae1482902591e4d6d887e2906ea308631062053bd1c62c01d08491e51c + md5: e4dcb719d043dc4734b9981ad0c01d1d depends: - cuda-version >=12,<13.0a0 - - cudf 25.10.* + - cudf 25.12.* - cupy >=13.6.0 - - dask-cudf 25.10.* - joblib >=0.11 - - libcuml 25.10.0.* - - libcumlprims 25.10.* + - libcuml 25.12.0.* + - libcumlprims 25.12.* - numba >=0.60.0,<0.62.0a0 - numba-cuda >=0.19.1,<0.20.0a0 - numpy >=1.23,<3.0a0 - scikit-learn >=1.4 + - scipy >=1.11.0 - packaging - - pylibraft 25.10.* + - pylibraft 25.12.* - python - - raft-dask 25.10.* - - rapids-dask-dependency 25.10.* - - rapids-logger 0.1.* + - rapids-logger 0.2.* - rich - - treelite 4.4.1.* + - treelite >=4.6.1,<5.0.0a0 - cuda-cudart - cuda-python >=12.9.2,<13.0a0 + - libstdcxx >=14 - libgcc >=14 - __glibc >=2.28,<3.0.a0 - - libstdcxx >=14 - libgcc >=14 - python_abi 3.13.* *_cp313 license: Apache-2.0 - size: 3812985 - timestamp: 1759966202447 + size: 3831653 + timestamp: 1765432122694 - conda: https://conda.anaconda.org/conda-forge/linux-64/cupy-13.6.0-py313h586c94b_2.conda sha256: 8e1b0bf555b5ac78d620ccfd20d70c45b717eb6f074631b1a9e962c5d8f0e484 md5: 0685ae3980f823b2ca78552f7d8d4033 @@ -2423,49 +2446,49 @@ packages: purls: [] size: 150881343 timestamp: 1757535886889 -- conda: https://conda.anaconda.org/rapidsai/linux-64/custreamz-25.10.00-cuda12_py313_251008_f4e35ca0.conda - sha256: f54384c45174c07dc954a5182bcfe2ddb97e94bc296b88b402396397b01f010d - md5: 4bff85b436ab446c21b6f5d1ad38cc29 +- conda: https://conda.anaconda.org/rapidsai/linux-64/custreamz-25.12.00-cuda12_py313_251210_580975be.conda + sha256: e15b3bb17eab0b6156cbe2d5fa40b5762b56ed22dae174de1103d8ac029e7325 + md5: 3ec89b9bd382f6b0e8ea3a5880d55980 depends: - python - streamz - - cudf 25.10.0.* - - cudf_kafka 25.10.0.* - - rapids-dask-dependency 25.10.* + - cudf 25.12.0.* + - cudf_kafka 25.12.0.* + - rapids-dask-dependency 25.12.* - python-confluent-kafka >=2.8.0,<2.9.0a0 - cuda-version >=12,<13.0a0 - python_abi 3.13.* *_cp313 license: Apache-2.0 - size: 30926 - timestamp: 1759943942684 -- conda: https://conda.anaconda.org/rapidsai/linux-64/cuvs-25.10.00-cuda12_py313_251008_f245c152.conda - build_number: 0 - sha256: 27a5e5108f07d58c3e05469075c3b17a7230702dd5c8b99458154a79622232df - md5: 0a5e07b13db2f129cb5b1d4cc08339b4 + size: 30680 + timestamp: 1765409134451 +- conda: https://conda.anaconda.org/rapidsai/linux-64/cuvs-25.12.00-cuda12_py313_251211_fc27938b.conda + sha256: 4af377771f4d975ac692e2590109d9b93414aa47ceec5140e5ef5e11d81d88c8 + md5: dcdc3fa21fdf545807fe23ddd98b07c2 depends: - cuda-version >=12,<13.0a0 - - libcuvs 25.10.0.* - - pylibraft 25.10.* + - libcuvs 25.12.0.* + - pylibraft 25.12.* - python - numpy >=1.23,<3.0a0 - cuda-python >=12.9.2,<13.0a0 - cuda-cudart - - libgcc >=14 - __glibc >=2.28,<3.0.a0 + - libgcc >=14 - libstdcxx >=14 - libgcc >=14 - python_abi 3.13.* *_cp313 license: Apache-2.0 - size: 791569 - timestamp: 1759961950863 -- conda: https://conda.anaconda.org/rapidsai/linux-64/cuxfilter-25.10.00-cuda12_py313_251008_aa53656f.conda - sha256: 5bbbe963846fde67c5001073815d91d6f79c92fc3180247652522cd70b4f741b - md5: e678b043df01d688757a200c3ad1c3c0 + size: 807141 + timestamp: 1765417873151 +- conda: https://conda.anaconda.org/rapidsai/linux-64/cuxfilter-25.12.00-cuda12_py313_251211_0e91a395.conda + build_number: 0 + sha256: 0c556cb4da598385321f7844a85219beb5534fe6f56d63357bf6fa96e55576f3 + md5: 5ea2890bf2cb3ff119173ffc99d95a28 depends: - cuda-version >=12,<13.0a0 - - cudf 25.10.* + - cudf 25.12.* - cupy >=13.6.0 - - dask-cudf 25.10.* + - dask-cudf 25.12.* - datashader >=0.15 - geopandas >=0.11.0 - holoviews >=1.16 @@ -2480,8 +2503,8 @@ packages: - python - python_abi 3.13.* *_cp313 license: Apache-2.0 - size: 167944 - timestamp: 1759963324846 + size: 168312 + timestamp: 1765431539182 - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda sha256: bb47aec5338695ff8efbddbc669064a3b10fe34ad881fb8ad5d64fbfa6910ed1 md5: 4c2a8fef270f6c69591889b93f9f55c1 @@ -2491,13 +2514,13 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/cycler?source=compressed-mapping + - pkg:pypi/cycler?source=hash-mapping size: 14778 timestamp: 1764466758386 -- pypi: https://files.pythonhosted.org/packages/7a/e8/77a231ae531cf38765b75ddf27dae28bb5f70b41d8bb4f15ce1650e93f57/cyclopts-4.3.0-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/07/18/5ca04dfda3e53b5d07b072033cc9f7bf10f93f78019366bff411433690d1/cyclopts-4.4.0-py3-none-any.whl name: cyclopts - version: 4.3.0 - sha256: 91a30b69faf128ada7cfeaefd7d9649dc222e8b2a8697f1fc99e4ee7b7ca44f3 + version: 4.4.0 + sha256: 78ff95a5e52e738a1d0f01e5a3af48049c47748fa2c255f2629a4cef54dcf2b3 requires_dist: - attrs>=23.1.0 - docstring-parser>=0.15,<4.0 @@ -2508,12 +2531,14 @@ packages: - ipdb>=0.13.9 ; extra == 'debug' - line-profiler>=3.5.1 ; extra == 'debug' - coverage[toml]>=5.1 ; extra == 'dev' + - mkdocs>=1.4.0 ; extra == 'dev' - pre-commit>=2.16.0 ; extra == 'dev' - pydantic>=2.11.2,<3.0.0 ; extra == 'dev' - pytest-cov>=3.0.0 ; extra == 'dev' - pytest-mock>=3.7.0 ; extra == 'dev' - pytest>=8.2.0 ; extra == 'dev' - pyyaml>=6.0.1 ; extra == 'dev' + - syrupy>=4.0.0 ; extra == 'dev' - toml>=0.10.2,<1.0.0 ; extra == 'dev' - trio>=0.10.0 ; extra == 'dev' - gitpython>=3.1.31 ; extra == 'docs' @@ -2523,6 +2548,9 @@ packages: - sphinx-rtd-dark-mode>=1.3.0,<2.0.0 ; extra == 'docs' - sphinx-rtd-theme>=3.0.0,<4.0.0 ; extra == 'docs' - sphinx>=7.4.7,<8.2.0 ; extra == 'docs' + - markdown>=3.3 ; extra == 'mkdocs' + - mkdocs>=1.4.0 ; extra == 'mkdocs' + - pymdown-extensions>=10.0 ; extra == 'mkdocs' - tomli>=2.0.0 ; python_full_version < '3.11' and extra == 'toml' - trio>=0.10.0 ; extra == 'trio' - pyyaml>=6.0.1 ; extra == 'yaml' @@ -2600,9 +2628,10 @@ packages: - pkg:pypi/dask?source=hash-mapping size: 1061387 timestamp: 1758095518645 -- conda: https://conda.anaconda.org/rapidsai/noarch/dask-cuda-25.10.00-py313_251008_472ca1ce.conda - sha256: 87eeedde18d3bde2e54b1e15e50945bba9f001ed4fcff71a6baac579623c2e6f - md5: bd88d0cfc0e22fb3eec36c0667643126 +- conda: https://conda.anaconda.org/rapidsai/noarch/dask-cuda-25.12.00-py313_251210_7edf2c69.conda + build_number: 0 + sha256: 70481f8387fed803a71ff627a78fc07634d968316b718876b140c64ef95acab4 + md5: 953aac0cd86918610d84bd0538574c3a depends: - python - click >=8.1 @@ -2612,25 +2641,27 @@ packages: - numpy >=1.23,<3.0a0 - nvidia-ml-py >=12 - pandas >=1.3 - - rapids-dask-dependency 25.10.* + - rapids-dask-dependency 25.12.* - zict >=2.0.0 + - __linux + - __glibc >=2.28 - python license: Apache-2.0 - size: 120825 - timestamp: 1759940813086 -- conda: https://conda.anaconda.org/rapidsai/linux-64/dask-cudf-25.10.00-cuda12_py313_251008_f4e35ca0.conda - sha256: 80a32b0d5b544e2b1054dc24f34ecac6f1640d74bc5f14c5d0baf97d83dac2cb - md5: 4e180f867ca64999fecc182844318578 + size: 121488 + timestamp: 1765400666821 +- conda: https://conda.anaconda.org/rapidsai/linux-64/dask-cudf-25.12.00-cuda12_py313_251210_580975be.conda + sha256: 806866e0ee578fc6e420da604c03452542741212626250cf128fa982aa8ab722 + md5: eeeb4598fdc8b5df05b186a5b2bebf07 depends: - python - - cudf 25.10.0.* + - cudf 25.12.0.* - nvidia-ml-py >=12 - - rapids-dask-dependency 25.10.* + - rapids-dask-dependency 25.12.* - cuda-version >=12,<13.0a0 - python_abi 3.13.* *_cp313 license: Apache-2.0 - size: 109311 - timestamp: 1759943891342 + size: 109199 + timestamp: 1765409083483 - conda: https://conda.anaconda.org/conda-forge/noarch/datashader-0.18.2-pyhd8ed1ab_0.conda sha256: afa4c88adcd3242acb4a6e271c8af60df1e21262ff656bb8e8cbbf97b473c4c1 md5: 7202ca262fc28025443238271066d88b @@ -2664,10 +2695,10 @@ packages: purls: [] size: 760229 timestamp: 1685695754230 -- pypi: https://files.pythonhosted.org/packages/b0/d0/89247ec250369fc76db477720a26b2fce7ba079ff1380e4ab4529d2fe233/debugpy-1.8.17-py2.py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/25/3e/e27078370414ef35fafad2c06d182110073daaeb5d3bf734b0b1eeefe452/debugpy-1.8.19-py2.py3-none-any.whl name: debugpy - version: 1.8.17 - sha256: 60c7dca6571efe660ccb7a9508d73ca14b8796c4ed484c2002abba714226cfef + version: 1.8.19 + sha256: 360ffd231a780abbc414ba0f005dad409e71c78637efe8f2bd75837132a41d38 requires_python: '>=3.8' - pypi: https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl name: decorator @@ -2715,20 +2746,21 @@ packages: - pkg:pypi/distributed?source=hash-mapping size: 844477 timestamp: 1758104297500 -- conda: https://conda.anaconda.org/rapidsai/noarch/distributed-ucxx-0.46.00-py_251008_64355220_h9c9281c.conda - sha256: 35a38c0f221f4c90bf7f6097be0e95d0e0b722b3a3aa74da9f66780fc55250b3 - md5: f91823eef083b9171ed5ba491d685f18 +- conda: https://conda.anaconda.org/rapidsai/noarch/distributed-ucxx-0.47.00-py_251210_5d6f0af3_hf4a1fa9.conda + build_number: 0 + sha256: 76318ab35f3ec245831c2fd9eefe43256b1e80393209529fcc4e1f7b010a5fd3 + md5: 6a4a3445a1d88acbfec333ead686d396 depends: - numba >=0.60.0,<0.62.0a0 - numba-cuda >=0.19.0,<0.20.0a0 - python - pyyaml >=6 - - rapids-dask-dependency 25.10.* - - ucxx >=0.46.0,<0.47.0a0 + - rapids-dask-dependency 25.12.* + - ucxx >=0.47.0,<0.48.0a0 - python license: BSD-3-Clause - size: 42121 - timestamp: 1759944464455 + size: 42259 + timestamp: 1765407091474 - conda: https://conda.anaconda.org/conda-forge/linux-64/dlpack-0.8-h59595ed_3.conda sha256: 5884a5e18a779586a2179c0187ef75caa148568dd576c4dbc278deead77cf4b1 md5: ee290dba0b7497f2d357c057aaea123f @@ -2751,10 +2783,10 @@ packages: - pydoctor>=25.4.0 ; extra == 'docs' - pytest ; extra == 'test' requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/11/a8/c6a4b901d17399c77cd81fb001ce8961e9f5e04d3daf27e8925cb012e163/docutils-0.22.3-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/02/10/5da547df7a391dcde17f59520a231527b8571e6f46fc8efb02ccb370ab12/docutils-0.22.4-py3-none-any.whl name: docutils - version: 0.22.3 - sha256: bd772e4aca73aff037958d44f2be5229ded4c09927fcf8690c577b66234d6ceb + version: 0.22.4 + sha256: d0013f540772d1420576855455d050a2180186c91c15779301ac2ccb3eeb68de requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/0c/d5/c5db1ea3394c6e1732fb3286b3bd878b59507a8f77d32a2cebda7d7b7cd4/donfig-0.8.1.post1-py3-none-any.whl name: donfig @@ -2769,10 +2801,10 @@ packages: - pytest ; extra == 'test' - cloudpickle ; extra == 'test' requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/82/29/153d1b4fc14c68e6766d7712d35a7ab6272a801c52160126ac7df681f758/duckdb-1.4.2-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/1a/7b/adf3f611f11997fc429d4b00a730604b65d952417f36a10c4be6e38e064d/duckdb-1.4.3-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl name: duckdb - version: 1.4.2 - sha256: a456adbc3459c9dcd99052fad20bd5f8ef642be5b04d09590376b2eb3eb84f5c + version: 1.4.3 + sha256: a2813f4635f4d6681cc3304020374c46aca82758c6740d7edbc237fe3aae2744 requires_dist: - ipython ; extra == 'all' - fsspec ; extra == 'all' @@ -2781,10 +2813,10 @@ packages: - pyarrow ; extra == 'all' - adbc-driver-manager ; extra == 'all' requires_python: '>=3.9.0' -- pypi: https://files.pythonhosted.org/packages/91/bd/d501c3c3602e70d1d729f042ae0b85446a1213a630a7a4290f361b37d9a8/earthengine_api-1.7.1-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/ee/25/a484c2ab78e9da027c88b7bad10c47b02655ba0ff31bab9ebb34c9866292/earthengine_api-1.7.4-py3-none-any.whl name: earthengine-api - version: 1.7.1 - sha256: 2a9e34133391b55ecbb587baa4bd1bcf9bf3e9a50d9d696ccc26052d4954845b + version: 1.7.4 + sha256: ed785d59a88c24abcc219853afa9c4295989e28f34685063504389c3fff1e983 requires_dist: - google-cloud-storage - google-api-python-client>=1.12.1 @@ -2837,7 +2869,7 @@ packages: - pypi: ./ name: entropice version: 0.1.0 - sha256: 72e09b4a23d5df42ba5da66301f1d2fd0cf8d83c413b35b7b92c1f622fe24e24 + sha256: 6488240242ab4091686c27ee2e721c81143e0a158bdff086518da6ccdc2971c8 requires_dist: - aiohttp>=3.12.11 - bokeh>=3.7.3 @@ -2895,8 +2927,12 @@ packages: - xarray-histogram>=0.2.2,<0.3 - antimeridian>=0.4.5,<0.5 - duckdb>=1.4.2,<2 + - pydeck>=0.9.1,<0.10 + - pypalettes>=0.2.1,<0.3 + - ty>=0.0.2,<0.0.3 + - ruff>=0.14.9,<0.15 + - pandas-stubs>=2.3.3.251201,<3 requires_python: '>=3.13,<3.14' - editable: true - pypi: git+ssh://git@forgejo.tobiashoelzer.de:22222/tobias/entropy.git#9ca1bdf4afc4ac9b0ea29ebbc060ffecb5cffcf7 name: entropy version: 0.1.0 @@ -2945,20 +2981,20 @@ packages: - pkg:pypi/fastrlock?source=hash-mapping size: 41201 timestamp: 1756729160955 -- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.20.0-pyhd8ed1ab_0.conda - sha256: 19025a4078ff3940d97eb0da29983d5e0deac9c3e09b0eabf897daeaf9d1114e - md5: 66b8b26023b8efdf8fcb23bac4b6325d +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.20.1-pyhd8ed1ab_0.conda + sha256: 8028582d956ab76424f6845fa1bdf5cb3e629477dd44157ca30d45e06d8a9c7c + md5: 81a651287d3000eb12f0860ade0a1b41 depends: - python >=3.10 license: Unlicense purls: - pkg:pypi/filelock?source=hash-mapping - size: 17976 - timestamp: 1759948208140 -- pypi: https://files.pythonhosted.org/packages/ed/ee/cd1f7e29979d0d71c8fabf5090a759b8d338bddf96aab286e39c7a7b2c0a/flox-0.10.7-py3-none-any.whl + size: 18609 + timestamp: 1765846639623 +- pypi: https://files.pythonhosted.org/packages/ad/ec/2eff1f7617979121a38841b9c5b4fe0eaa64dc1d976cf4c85328a288ba8c/flox-0.10.8-py3-none-any.whl name: flox - version: 0.10.7 - sha256: 645b58ffa64c6a0c4f855d6c2f9b1f377471e347aa67486086ad4e16e475d6da + version: 0.10.8 + sha256: 9c5e6dc45717aab74d8a79b64e7c4224ea7fa40fbdefe37290bd6be1171dc581 requires_dist: - pandas>=2.1 - packaging>=21.3 @@ -3018,9 +3054,9 @@ packages: - pkg:pypi/folium?source=hash-mapping size: 82665 timestamp: 1750113928159 -- conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.61.0-py313h3dea7bd_0.conda - sha256: edea7e66bb068551cab49335776e26e4003af3acec78d643d7142cd39a8db670 - md5: 92f09729a821c52943d4b0b3749a2380 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.61.1-py313h3dea7bd_0.conda + sha256: 97f225199e6e5dfb93f551087c0951fee92db2d29a9dcb6a0346d66bff06fea4 + md5: c0f36dfbb130da4f6ce2df31f6b25ea8 depends: - __glibc >=2.17,<3.0.a0 - brotli @@ -3032,8 +3068,8 @@ packages: license_family: MIT purls: - pkg:pypi/fonttools?source=hash-mapping - size: 2956476 - timestamp: 1764353003818 + size: 2988776 + timestamp: 1765633043435 - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda sha256: 2509992ec2fd38ab27c7cdb42cf6cadc566a1cc0d1021a2673475d9fa87c6276 md5: d3549fd50d450b6d9e7dddff25dd2110 @@ -3085,17 +3121,17 @@ packages: - pkg:pypi/frozenlist?source=hash-mapping size: 54659 timestamp: 1752167252322 -- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.10.0-pyhd8ed1ab_0.conda - sha256: df5cb57bb668cd5b2072d8bd66380ff7acb12e8c337f47dd4b9a75a6a6496a6d - md5: d18004c37182f83b9818b714825a7627 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.12.0-pyhd8ed1ab_0.conda + sha256: 64a4ed910e39d96cd590d297982b229c57a08e70450d489faa34fd2bec36dbcc + md5: a3b9510e2491c20c7fc0f5e730227fbb depends: - python >=3.10 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/fsspec?source=hash-mapping - size: 146592 - timestamp: 1761840236679 + - pkg:pypi/fsspec?source=compressed-mapping + size: 147391 + timestamp: 1764784920938 - pypi: https://files.pythonhosted.org/packages/da/71/ae30dadffc90b9006d77af76b393cb9dfbfc9629f339fc1574a1c52e6806/future-1.0.0-py3-none-any.whl name: future version: 1.0.0 @@ -3480,14 +3516,16 @@ packages: - google-api-core>=1.31.5,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0,<3.0.0 - uritemplate>=3.0.1,<5 requires_python: '>=3.7' -- pypi: https://files.pythonhosted.org/packages/6f/d1/385110a9ae86d91cc14c5282c61fe9f4dc41c0b9f7d423c6ad77038c4448/google_auth-2.43.0-py2.py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/c6/97/451d55e05487a5cd6279a01a7e34921858b16f7dc8aa38a2c684743cd2b3/google_auth-2.45.0-py2.py3-none-any.whl name: google-auth - version: 2.43.0 - sha256: af628ba6fa493f75c7e9dbe9373d148ca9f4399b5ea29976519e0a3848eddd16 + version: 2.45.0 + sha256: 82344e86dc00410ef5382d99be677c6043d72e502b625aa4f4afa0bdacca0f36 requires_dist: - cachetools>=2.0.0,<7.0 - pyasn1-modules>=0.2.1 - rsa>=3.1.4,<5 + - cryptography>=38.0.3 ; extra == 'cryptography' + - cryptography<39.0.0 ; python_full_version < '3.8' and extra == 'cryptography' - aiohttp>=3.6.2,<4.0.0 ; extra == 'aiohttp' - requests>=2.20.0,<3.0.0 ; extra == 'aiohttp' - cryptography ; extra == 'enterprise-cert' @@ -3527,10 +3565,10 @@ packages: - urllib3 ; extra == 'urllib3' - packaging ; extra == 'urllib3' requires_python: '>=3.7' -- pypi: https://files.pythonhosted.org/packages/44/a7/ca23dd006255f70e2bc469d3f9f0c82ea455335bfd682ad4d677adc435de/google_auth_httplib2-0.2.1-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/99/d5/3c97526c8796d3caf5f4b3bed2b05e8a7102326f00a334e7a438237f3b22/google_auth_httplib2-0.3.0-py3-none-any.whl name: google-auth-httplib2 - version: 0.2.1 - sha256: 1be94c611db91c01f9703e7f62b0a59bbd5587a95571c7b6fade510d648bc08b + version: 0.3.0 + sha256: 426167e5df066e3f5a0fc7ea18768c08e7296046594ce4c8c409c2457dd1f776 requires_dist: - google-auth>=1.32.0,<3.0.0 - httplib2>=0.19.0,<1.0.0 @@ -3547,10 +3585,10 @@ packages: - grpcio>=1.75.1,<2.0.0 ; python_full_version >= '3.14' and extra == 'grpc' - grpcio-status>=1.38.0,<2.0.0 ; extra == 'grpc' requires_python: '>=3.7' -- pypi: https://files.pythonhosted.org/packages/ae/ef/3b57bf617ee0c79450c1ff211d1eb888db8fc1050ac74b3e52cc6ed86e63/google_cloud_storage-3.6.0-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/2d/80/6e5c7c83cea15ed4dfc4843b9df9db0716bc551ac938f7b5dd18a72bd5e4/google_cloud_storage-3.7.0-py3-none-any.whl name: google-cloud-storage - version: 3.6.0 - sha256: 5decbdddd63b7d1fc3e266a393ad6453d2e27d172bd982b1e2f15481668db097 + version: 3.7.0 + sha256: 469bc9540936e02f8a4bfd1619e9dca1e42dec48f95e4204d783b36476a15093 requires_dist: - google-auth>=2.26.1,<3.0.0 - google-api-core>=2.27.0,<3.0.0 @@ -3558,16 +3596,21 @@ packages: - google-resumable-media>=2.7.2,<3.0.0 - requests>=2.22.0,<3.0.0 - google-crc32c>=1.1.3,<2.0.0 + - google-api-core[grpc]>=2.27.0,<3.0.0 ; extra == 'grpc' + - grpcio>=1.33.2,<2.0.0 ; python_full_version < '3.14' and extra == 'grpc' + - grpcio>=1.75.1,<2.0.0 ; python_full_version >= '3.14' and extra == 'grpc' + - grpcio-status>=1.76.0,<2.0.0 ; extra == 'grpc' + - proto-plus>=1.22.3,<2.0.0 ; python_full_version < '3.13' and extra == 'grpc' + - proto-plus>=1.25.0,<2.0.0 ; python_full_version >= '3.13' and extra == 'grpc' + - protobuf>=3.20.2,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<7.0.0 ; extra == 'grpc' + - grpc-google-iam-v1>=0.14.0,<1.0.0 ; extra == 'grpc' - protobuf>=3.20.2,<7.0.0 ; extra == 'protobuf' - opentelemetry-api>=1.1.0,<2.0.0 ; extra == 'tracing' requires_python: '>=3.7' -- pypi: https://files.pythonhosted.org/packages/c3/ca/1ea2fd13ff9f8955b85e7956872fdb7050c4ace8a2306a6d177edb9cf7fe/google_crc32c-1.7.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/ce/42/b468aec74a0354b34c8cbf748db20d6e350a68a2b0912e128cabee49806c/google_crc32c-1.8.0-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl name: google-crc32c - version: 1.7.1 - sha256: 6b211ddaf20f7ebeec5c333448582c224a7c90a9d98826fbab82c0ddc11348e6 - requires_dist: - - importlib-resources>=1.3 ; python_full_version < '3.9' and os_name == 'nt' - - pytest ; extra == 'testing' + version: 1.8.0 + sha256: 3b9776774b24ba76831609ffbabce8cdf6fa2bd5e9df37b594221c7e333a81fa requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/1f/0b/93afde9cfe012260e9fe1522f35c9b72d6ee222f316586b1f23ecf44d518/google_resumable_media-2.8.0-py3-none-any.whl name: google-resumable-media @@ -3601,10 +3644,10 @@ packages: - pkg:pypi/h2?source=compressed-mapping size: 95967 timestamp: 1756364871835 -- pypi: https://files.pythonhosted.org/packages/1d/99/5efd413072428bf1973c34d76a2f476a621848da86cecd8392ef59ba7640/h3-4.3.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/0f/d6/0da119f5fc37311b34f301e1ef60f717bf9aa289f4fed9075bf4cced0406/h3-4.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl name: h3 - version: 4.3.1 - sha256: 4b4885dd55ae5bc1848334981f1593eea098133c13bedc66bca1dac624cefe2c + version: 4.4.1 + sha256: adcc92cca54058746d08da20ec44b1ffb6a5c9e396fe1da0efe9e825e326ce21 requires_dist: - numpy ; extra == 'numpy' - pytest ; extra == 'test' @@ -3612,7 +3655,7 @@ packages: - ruff ; extra == 'test' - numpy ; extra == 'test' - h3[test] ; extra == 'all' - - jupyter-book ; extra == 'all' + - jupyter-book<2 ; extra == 'all' - sphinx>=7.3.3 ; extra == 'all' - jupyterlab ; extra == 'all' - jupyterlab-geojson ; extra == 'all' @@ -3673,9 +3716,9 @@ packages: - pkg:pypi/healpix-geo?source=hash-mapping size: 787636 timestamp: 1764259419680 -- conda: https://conda.anaconda.org/conda-forge/noarch/holoviews-1.22.0-pyhd8ed1ab_1.conda - sha256: 67716e71734339a9347d47b13a3688944a939cb8ebfeafc3ff76075d7cafbad1 - md5: f3bffed58d51d53e38f308a035f14509 +- conda: https://conda.anaconda.org/conda-forge/noarch/holoviews-1.22.1-pyhd8ed1ab_0.conda + sha256: 598c989ceb11bba5c0c142b8394016ddb26153a02e8275eb045985913c72beaf + md5: 32bc3daa3fa9619d84e634b4515f564a depends: - bokeh >=3.1 - colorcet @@ -3693,8 +3736,8 @@ packages: license_family: BSD purls: - pkg:pypi/holoviews?source=hash-mapping - size: 4883896 - timestamp: 1763106962885 + size: 4889477 + timestamp: 1764957187208 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba md5: 0a802cb9888dd14eeefc611f05c40b6e @@ -3724,10 +3767,10 @@ packages: - pkg:pypi/hyperframe?source=hash-mapping size: 17397 timestamp: 1737618427549 -- pypi: https://files.pythonhosted.org/packages/2b/74/c335456c500cda9e67ab88064b89b1e92a5a11b6203dbb309e00ddc58d50/icechunk-1.1.13-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/94/56/c5e8db63ba0e27b310a0b4c384da555b361741e7d186044d31f400c0419e/icechunk-1.1.14-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl name: icechunk - version: 1.1.13 - sha256: 763b1d1ec69d3f365dd82832fad70673e812dfd231c067073ad5729792340fa7 + version: 1.1.14 + sha256: adb01a0275144c58f741b5402e658930326e86f7b389e879065e01625c021f7c requires_dist: - zarr>=3,!=3.0.3 - boto3 ; extra == 'test' @@ -3981,10 +4024,10 @@ packages: - traittypes>=0.2.1,<3 - xyzservices>=2021.8.1 requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/05/aa/62893d6a591d337aa59dcc4c6f6c842f1fe20cd72c8c5c1f980255243252/ipython-9.7.0-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/f1/df/8ee1c5dd1e3308b5d5b2f2dfea323bb2f3827da8d654abb6642051199049/ipython-9.8.0-py3-none-any.whl name: ipython - version: 9.7.0 - sha256: bce8ac85eb9521adc94e1845b4c03d88365fd6ac2f4908ec4ed1eb1b0a065f9f + version: 9.8.0 + sha256: ebe6d1d58d7d988fbf23ff8ff6d8e1622cfdb194daf4b7b73b792c4ec3b85385 requires_dist: - colorama>=0.4.4 ; sys_platform == 'win32' - decorator>=4.3.2 @@ -4106,26 +4149,27 @@ packages: - docopt ; extra == 'testing' - pytest<9.0.0 ; extra == 'testing' requires_python: '>=3.6' -- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - sha256: f1ac18b11637ddadc05642e8185a851c7fab5998c6f5470d716812fae943b2af - md5: 446bd6c8cb26050d528881df495ce646 +- 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.9 + - python >=3.10 + - python license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/jinja2?source=hash-mapping - size: 112714 - timestamp: 1741263433881 + - pkg:pypi/jinja2?source=compressed-mapping + size: 120685 + timestamp: 1764517220861 - pypi: https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl name: jmespath version: 1.0.1 sha256: 02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980 requires_python: '>=3.7' -- conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.2-pyhd8ed1ab_0.conda - sha256: 6fc414c5ae7289739c2ba75ff569b79f72e38991d61eb67426a8a4b92f90462c - md5: 4e717929cfa0d49cef92d911e31d0e90 +- conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.3-pyhd8ed1ab_0.conda + sha256: 301539229d7be6420c084490b8145583291123f0ce6b92f56be5948a2c83a379 + md5: 615de2a4d97af50c350e5cf160149e77 depends: - python >=3.10 - setuptools @@ -4133,8 +4177,8 @@ packages: license_family: BSD purls: - pkg:pypi/joblib?source=hash-mapping - size: 224671 - timestamp: 1756321850584 + size: 226448 + timestamp: 1765794135253 - conda: https://conda.anaconda.org/conda-forge/linux-64/json-c-0.18-h6688a6e_0.conda sha256: 09e706cb388d3ea977fabcee8e28384bdaad8ce1fc49340df5f868a2bd95a7da md5: 38f5dbc9ac808e31c00650f7be1db93f @@ -4146,18 +4190,18 @@ packages: purls: [] size: 82709 timestamp: 1726487116178 -- conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py313h78bf25f_2.conda - sha256: 9174f5209f835cc8918acddc279be919674d874179197e025181fe2a71cb0bce - md5: c1375f38e5f3ee38a9ee0e405a601c35 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonpointer-3.0.0-pyhcf101f3_3.conda + sha256: 1a1328476d14dfa8b84dbacb7f7cd7051c175498406dc513ca6c679dc44f3981 + md5: cd2214824e36b0180141d422aba01938 depends: - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.10 + - python license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/jsonpointer?source=hash-mapping - size: 18143 - timestamp: 1756754243113 + size: 13967 + timestamp: 1765026384757 - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.1-pyhe01879c_0.conda sha256: ac377ef7762e49cb9c4f985f1281eeff471e9adc3402526eea78e6ac6589cf1d md5: 341fd940c242cf33e832c0402face56f @@ -4228,23 +4272,23 @@ packages: - pkg:pypi/jupyter-server-proxy?source=hash-mapping size: 37140 timestamp: 1734379307021 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a - md5: 4ebae00eae9705b0c3d6d1018a81d047 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.7.0-pyhcf101f3_0.conda + sha256: 6aa61417547b925de64905b7a4da7c98e0b355f48a7b21bdbef438f8950ee74e + md5: 1b0397a7b1fbffa031feb690b5fd0277 depends: - - importlib-metadata >=4.8.3 - - jupyter_core >=4.12,!=5.0.* - - python >=3.9 + - jupyter_core >=5.1 + - python >=3.10 - python-dateutil >=2.8.2 - - pyzmq >=23.0 - - tornado >=6.2 + - pyzmq >=25.0 + - tornado >=6.4.1 - traitlets >=5.3 + - python license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/jupyter-client?source=hash-mapping - size: 106342 - timestamp: 1733441040958 + - pkg:pypi/jupyter-client?source=compressed-mapping + size: 111367 + timestamp: 1765375773813 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.9.1-pyhc90fa1f_0.conda sha256: 1d34b80e5bfcd5323f104dbf99a2aafc0e5d823019d626d0dce5d3d356a2a52a md5: b38fe4e78ee75def7e599843ef4c1ab0 @@ -4514,13 +4558,13 @@ packages: purls: [] size: 884698 timestamp: 1760610562105 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-21.0.0-h2937f24_12_cuda.conda - build_number: 12 - sha256: e721964589699adfdb9eaef47511f6868573b8bf28006557b0f831643f6c0da4 - md5: 6be1a4cd7f9c508b2e857eb0e81d1d14 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-21.0.0-h12806ad_14_cuda.conda + build_number: 14 + sha256: 162b070e49501f111c399aea7f27276709444b6b6f71690dfd8063b9b4460dec + md5: 102b35dd16ac6742ae868745b19d1d4a depends: - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.35.2,<0.35.3.0a0 + - aws-crt-cpp >=0.35.4,<0.35.5.0a0 - aws-sdk-cpp >=1.11.606,<1.11.607.0a0 - azure-core-cpp >=1.16.1,<1.16.2.0a0 - azure-identity-cpp >=1.13.2,<1.13.3.0a0 @@ -4546,22 +4590,22 @@ packages: - snappy >=1.2.2,<1.3.0a0 - zstd >=1.5.7,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - - apache-arrow-proc =*=cuda - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cuda + - parquet-cpp <0.0a0 license: Apache-2.0 license_family: APACHE purls: [] - size: 5989075 - timestamp: 1763230687007 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-21.0.0-hb826db4_12_cuda.conda - build_number: 12 - sha256: 488197c40ca6637acba719259252e608a693e41962016fbacfa9770739317d0c - md5: fd9e9e7e066061cdbf638e8c80dd8a76 + size: 6012309 + timestamp: 1765389292977 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-21.0.0-hb826db4_14_cuda.conda + build_number: 14 + sha256: 7a25d634090ed31b23dbf72759c41dff8f43f42a9e49f14eafd5dfb6629dc68f + md5: d01f298b3df0bbe492969196b9959262 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 21.0.0 h2937f24_12_cuda - - libarrow-compute 21.0.0 h58682fd_12_cuda + - libarrow 21.0.0 h12806ad_14_cuda + - libarrow-compute 21.0.0 h58682fd_14_cuda - libgcc - libgcc-ng >=12 - libstdcxx @@ -4569,57 +4613,57 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - size: 555820 - timestamp: 1763230900468 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-21.0.0-h58682fd_12_cuda.conda - build_number: 12 - sha256: 107cad2eeae77e0fdffcc56f10defaa67c2f45506bf1d3f6f70092fe48f53930 - md5: 38457ca9706abe9417b8b6d78275fef1 + size: 559009 + timestamp: 1765389546903 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-21.0.0-h58682fd_14_cuda.conda + build_number: 14 + sha256: 7552c163883a90832eb6cf729ea445237406e267fb034a228df2d5a60e6748aa + md5: 7935d773c9a1ff95c7041a3dbac02399 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 21.0.0 h2937f24_12_cuda + - libarrow 21.0.0 h12806ad_14_cuda - libgcc - libgcc-ng >=12 - libre2-11 >=2025.8.12 - libstdcxx - libstdcxx-ng >=12 - - libutf8proc >=2.11.0,<2.12.0a0 + - libutf8proc >=2.11.2,<2.12.0a0 - re2 license: Apache-2.0 license_family: APACHE purls: [] - size: 2803705 - timestamp: 1763230763900 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-21.0.0-hb826db4_12_cuda.conda - build_number: 12 - sha256: 6d674b78ca0edd7cdf482d8d56302569f310cc0f8df8a2451a98f7094c6a561d - md5: 389cfab641442f8bbd674cd0459a967a + size: 2810020 + timestamp: 1765389386348 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-21.0.0-hb826db4_14_cuda.conda + build_number: 14 + sha256: d6adda46f5b87667e0a0c109610daf7a6e8610d210116784293e26cb70b6a3e5 + md5: b39de07e6e8838fc8eabbd76259c36ea depends: - __glibc >=2.17,<3.0.a0 - - libarrow 21.0.0 h2937f24_12_cuda - - libarrow-acero 21.0.0 hb826db4_12_cuda - - libarrow-compute 21.0.0 h58682fd_12_cuda + - libarrow 21.0.0 h12806ad_14_cuda + - libarrow-acero 21.0.0 hb826db4_14_cuda + - libarrow-compute 21.0.0 h58682fd_14_cuda - libgcc - libgcc-ng >=12 - - libparquet 21.0.0 h31208bf_12_cuda + - libparquet 21.0.0 h31208bf_14_cuda - libstdcxx - libstdcxx-ng >=12 license: Apache-2.0 license_family: APACHE purls: [] - size: 555047 - timestamp: 1763230977445 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-21.0.0-h9d9f3f8_12_cuda.conda - build_number: 12 - sha256: 2defd3e5bdee9335cace455cb560d14aaf28c9d48999bae9f38d6ccab0902c69 - md5: 750051d172196d74c5a813b49bde30c9 + size: 560996 + timestamp: 1765389639628 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-21.0.0-h9d9f3f8_14_cuda.conda + build_number: 14 + sha256: 8f42ac3501d93d81576be1c2ae49617c99be6a9417d951268549ba00ffeba506 + md5: 3d7f9d3417cb1d79f726d944105d9265 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20250512.1,<20250513.0a0 - - libarrow 21.0.0 h2937f24_12_cuda - - libarrow-acero 21.0.0 hb826db4_12_cuda - - libarrow-dataset 21.0.0 hb826db4_12_cuda + - libarrow 21.0.0 h12806ad_14_cuda + - libarrow-acero 21.0.0 hb826db4_14_cuda + - libarrow-dataset 21.0.0 hb826db4_14_cuda - libgcc - libgcc-ng >=12 - libprotobuf >=6.31.1,<6.31.2.0a0 @@ -4628,8 +4672,8 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - size: 462641 - timestamp: 1763231002445 + size: 468120 + timestamp: 1765389670517 - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.3.0-h6395336_2.conda sha256: e3a44c0eda23aa15c9a8dfa8c82ecf5c8b073e68a16c29edd0e409e687056d30 md5: c09c4ac973f7992ba0c6bb1aafd77bd4 @@ -4645,25 +4689,25 @@ packages: purls: [] size: 139399 timestamp: 1756124751131 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-2_h5875eb1_mkl.conda - build_number: 2 - sha256: f539ae2aa405175a6dc5781e7d40ed5ecea44340904c834bf4a789785b0e9eac - md5: 6a1a4ec47263069b2dae3cfba106320c +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-5_h5875eb1_mkl.conda + build_number: 5 + sha256: 328d64d4eb51047c39a8039a30eb47695855829d0a11b72d932171cb1dcdfad3 + md5: 9d2f2e3a943d38f972ceef9cde8ba4bf depends: - mkl >=2025.3.0,<2026.0a0 constrains: - - liblapack 3.11.0 2*_mkl - - liblapacke 3.11.0 2*_mkl - - blas 2.302 mkl - - libcblas 3.11.0 2*_mkl + - liblapack 3.11.0 5*_mkl + - liblapacke 3.11.0 5*_mkl + - libcblas 3.11.0 5*_mkl + - blas 2.305 mkl track_features: - blas_mkl - blas_mkl_2 license: BSD-3-Clause license_family: BSD purls: [] - size: 18948 - timestamp: 1763828429422 + size: 18744 + timestamp: 1765818556597 - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-hb03c661_1.conda sha256: 318f36bd49ca8ad85e6478bd8506c88d82454cc008c1ac1c6bf00a3c42fa610e md5: 72c8fd1af66bd67bf580645b426513ed @@ -4711,23 +4755,23 @@ packages: purls: [] size: 121429 timestamp: 1762349484074 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-2_hfef963f_mkl.conda - build_number: 2 - sha256: 9c232b9527e8861fb708e30a0c51750ee3f33be393ab3f67b621287a53e456d6 - md5: 62ffd188ee5c953c2d6ac54662c158a7 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-5_hfef963f_mkl.conda + build_number: 5 + sha256: 8352f472c49c42a83a20387b5f6addab1f910c5a62f4f5b8998d7dc89131ba2e + md5: 9b6cb3aa4b7912121c64b97a76ca43d5 depends: - - libblas 3.11.0 2_h5875eb1_mkl + - libblas 3.11.0 5_h5875eb1_mkl constrains: - - liblapack 3.11.0 2*_mkl - - liblapacke 3.11.0 2*_mkl - - blas 2.302 mkl + - liblapack 3.11.0 5*_mkl + - liblapacke 3.11.0 5*_mkl + - blas 2.305 mkl track_features: - blas_mkl license: BSD-3-Clause license_family: BSD purls: [] - size: 18557 - timestamp: 1763828437220 + size: 18385 + timestamp: 1765818571086 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 md5: c965a5aa0d5c1c37ffc62dff36e28400 @@ -4769,63 +4813,63 @@ packages: purls: [] size: 92793 timestamp: 1761086831258 -- conda: https://conda.anaconda.org/rapidsai/linux-64/libcucim-25.10.00-cuda12_251008_ghgf278340_gn0%7D_phc1c8ae4.conda - build: cuda12_251008_ghgf278340_gn0}_phc1c8ae4 +- conda: https://conda.anaconda.org/rapidsai/linux-64/libcucim-25.12.00-cuda12_251210_ghg0ea8217_gn0_phe835b31.conda build_number: 0 - sha256: a249dea736d74ddf8c6d275f4a5c7679997e3a4737c0110a0dddfb2bdfb4f792 - md5: 90759f1311a9a94979551fe7a1b75fd1 + sha256: cf602333619253fc31f9a9b6538e132707945654ba054adcd4a4f9a7ec85f9db + md5: 1fc53b9bf7e5604c6df0b2ea98f5974d depends: - __glibc >=2.28,<3.0.a0 - cuda-cudart - - cuda-version >=12,<13.0a0 + - cuda-version >=12.2,<13.0a0 - libcufile - libgcc >=14 + - libnvimgcodec 0.6.0.* - libnvjpeg - libstdcxx >=14 constrains: + - libnvimgcodec-dev 0.6.0 - openslide >=4.0.0,<5.0a0 - file_name: libcucim-25.10.00-cuda12_251008_ghgf278340_gn0}_phc1c8ae4.conda license: Apache-2.0 license_family: Apache - size: 2321942 - timestamp: 1759941581209 -- conda: https://conda.anaconda.org/rapidsai/linux-64/libcudf-25.10.00-cuda12_251008_f4e35ca0.conda - sha256: 6d47ec99df220ac53c184e30c24e03c6c1f7610eeb22ab8ffcd7fcce900a4ace - md5: 317192f50f3bda357e7640bc03310c3c + size: 2321019 + timestamp: 1765402854226 +- conda: https://conda.anaconda.org/rapidsai/linux-64/libcudf-25.12.00-cuda12_251210_580975be.conda + sha256: a0159bc6d8e67cf859102940a15bd5b29e70428dd8bef215b6eb9d80a23ce109 + md5: 4c029d721587c92116ac0b320945a6b4 depends: - cuda-version >=12,<13.0a0 - cuda-nvrtc - libcufile - - librmm 25.10.* - - libkvikio 25.10.* + - librmm 25.12.* + - libkvikio 25.12.* - libnvcomp-dev 5.0.0.6.* - dlpack >=0.8,<1.0 - - rapids-logger 0.1.* - - libgcc >=14 - - libstdcxx >=14 + - rapids-logger 0.2.* - libgcc >=14 - __glibc >=2.28,<3.0.a0 + - libstdcxx >=14 - libgcc >=14 - libnvcomp >=5.0.0.6,<6.0a0 - libnvjitlink >=12.9.86,<13.0a0 - libnvcomp >=5.0.0.6,<6.0a0 license: Apache-2.0 - size: 354935391 - timestamp: 1759942641289 -- conda: https://conda.anaconda.org/rapidsai/linux-64/libcudf_kafka-25.10.00-cuda12_251008_f4e35ca0.conda - sha256: eb2264058ee99c90ee3ecce3af013398176caaa6a11b62efee316bbfbc86e503 - md5: fbbc9e10eca6a1df848d2378f102755d + size: 366889786 + timestamp: 1765406159960 +- conda: https://conda.anaconda.org/rapidsai/linux-64/libcudf_kafka-25.12.00-cuda12_251210_580975be.conda + sha256: 3dece0c92175111170186625a053a8625b00045266cb32ad7135cbe767c3bcea + md5: 29975206a51fdfe16f98d015e054eb4b depends: - librdkafka >=2.8.0,<2.9.0a0 - - libcudf ==25.10.0 cuda12_251008_f4e35ca0 + - libcudf ==25.12.0 cuda12_251210_580975be - __glibc >=2.28,<3.0.a0 - libgcc >=14 - libstdcxx >=14 - libgcc >=14 + - __glibc >=2.28,<3.0.a0 - libnvjitlink >=12.9.86,<13.0a0 license: Apache-2.0 - size: 43083 - timestamp: 1759942641289 + size: 43251 + timestamp: 1765406159962 - conda: https://conda.anaconda.org/nvidia/linux-64/libcudnn-9.14.0.64-hf94a4fa_0.conda sha256: a622291c1ce79128297d866c14f079fe749e6dcc4c2f87a2e46315023ad4c541 md5: 1dd8712f6a1d843fc70592f828e454b2 @@ -4911,14 +4955,13 @@ packages: license: LicenseRef-NVIDIA-End-User-License-Agreement size: 30930 timestamp: 1747331959737 -- conda: https://conda.anaconda.org/rapidsai/linux-64/libcugraph-25.10.01-cuda12_251013_741f9105.conda - build_number: 0 - sha256: 24a3d3dc98fcfd2c52bf9dca4d34a53cc17985809cd92897495b09105e9baec7 - md5: 49c2b0c6164d58cdef6a241a931860a5 +- conda: https://conda.anaconda.org/rapidsai/linux-64/libcugraph-25.12.02-cuda12_251211_9765e20f.conda + sha256: 283b2fef8f88787ad3f3b1f98fb1953352d4afe7814b327bd190be63114db2f2 + md5: 27d8311b9565b5febea6b8626ba832d8 depends: - cuda-version >=12,<13.0a0 - - libraft 25.10.* - - librmm 25.10.* + - libraft 25.12.* + - librmm 25.12.* - nccl >=2.19 - cuda-profiler-api - cuda-cudart @@ -4927,34 +4970,34 @@ packages: - libcusolver - libcusparse - __glibc >=2.28,<3.0.a0 - - libgcc >=14 - libstdcxx >=14 - libgcc >=14 - __glibc >=2.28,<3.0.a0 + - libgcc >=14 license: Apache-2.0 - size: 1052074259 - timestamp: 1760373008520 -- conda: https://conda.anaconda.org/rapidsai/linux-64/libcugraph_etl-25.10.01-cuda12_251013_741f9105.conda - build_number: 0 - sha256: 9b58acf324f3bceee2a51b9fdfea5de7004a89590dcb405a6dcc85f5c48dc06d - md5: 2636a265bf41e422854bef7694fef7b4 + size: 1114407461 + timestamp: 1765428684672 +- conda: https://conda.anaconda.org/rapidsai/linux-64/libcugraph_etl-25.12.02-cuda12_251211_9765e20f.conda + sha256: 8c8edfc32272f862cff0814bae6b3ac58c62f9fc110a2b7f27f0e3056392b53a + md5: 70360b0b94ee149371288d0b06f7046e depends: - cuda-version >=12,<13.0a0 - - libcugraph ==25.10.1 cuda12_251013_741f9105 - - libcudf 25.10.* - - librmm 25.10.* + - libcugraph ==25.12.2 cuda12_251211_9765e20f + - libcudf 25.12.* + - librmm 25.12.* - cuda-cudart - __glibc >=2.28,<3.0.a0 - - libgcc >=14 - - __glibc >=2.28,<3.0.a0 - libstdcxx >=14 - libgcc >=14 + - __glibc >=2.28,<3.0.a0 + - libgcc >=14 license: Apache-2.0 - size: 614711 - timestamp: 1760373008520 -- conda: https://conda.anaconda.org/rapidsai/linux-64/libcuml-25.10.00-cuda12_251008_f9fcdbb0.conda - sha256: 58a82f0d09259cfb65ec4707aae3535b2ca5eea08eb14ffbf147169569560328 - md5: cd32d1def64094f7fdcdd7bf54014f97 + size: 629742 + timestamp: 1765428684675 +- conda: https://conda.anaconda.org/rapidsai/linux-64/libcuml-25.12.00-cuda12_251211_5c22c200.conda + build_number: 0 + sha256: 6441d1e5e9c43c5781d03e08501090c730f082c1afc7b266cd99341afb69aed7 + md5: ef2dae6cf0a5d5a9bd6890ac04c6072d depends: - cuda-version >=12,<13.0a0 - cuda-cudart @@ -4963,34 +5006,37 @@ packages: - libcurand - libcusolver - libcusparse - - libcumlprims 25.10.* - - libcuvs 25.10.* - - librmm 25.10.* - - rapids-logger 0.1.* - - treelite 4.4.1.* + - libcumlprims 25.12.* + - libcuvs 25.12.* + - librmm 25.12.* + - rapids-logger 0.2.* + - treelite >=4.6.1,<5.0.0a0 - __glibc >=2.28,<3.0.a0 + - libgcc >=14 - libstdcxx >=14 - libgcc >=14 + - __glibc >=2.28,<3.0.a0 license: Apache-2.0 - size: 89024888 - timestamp: 1759964727128 -- conda: https://conda.anaconda.org/rapidsai/linux-64/libcumlprims-25.10.00-cuda12_py310_251008_7b289cfd.conda - sha256: c6d16600b58413e4ee600e45957296541518482b1556c67a3ad87256490c5edf - md5: 0d5930ce9e2fc1ab77dded58cc992593 + size: 93562323 + timestamp: 1765431308900 +- conda: https://conda.anaconda.org/rapidsai/linux-64/libcumlprims-25.12.00-cuda12_py310_251211_7e1ef293.conda + build_number: 0 + sha256: d77f9c94557f3c80c84fa442fe1376ce25d02fe03c6422007ae211ff082595f7 + md5: 651e2e3a67d0167a17096b4efbcbdd20 depends: - cuda-version >=12,<13.0a0 - - librmm 25.10.* + - librmm 25.12.* - cuda-cudart - libcublas - libcurand - libcusolver - libcusparse - - __glibc >=2.28,<3.0.a0 - libstdcxx >=14 - libgcc >=14 + - __glibc >=2.28,<3.0.a0 license: Apache-2.0 - size: 1774207 - timestamp: 1759954417132 + size: 1794802 + timestamp: 1765414341708 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.10.19-h676940d_1.conda sha256: 3d40daf956b220cc367a6306ede1e259446fb844051bcfed87c46539cc1aaf03 md5: 2a91559a9345bedf09af8b7903deb6e6 @@ -5018,9 +5064,9 @@ packages: purls: [] size: 249874 timestamp: 1761098955940 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.17.0-h4e3cde8_0.conda - sha256: 100e29ca864c32af15a5cc354f502d07b2600218740fdf2439fa7d66b50b3529 - md5: 01e149d4a53185622dc2e788281961f2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.17.0-h4e3cde8_1.conda + sha256: 2d7be2fe0f58a0945692abee7bb909f8b19284b518d958747e5ff51d0655c303 + md5: 117499f93e892ea1e57fdca16c2e8351 depends: - __glibc >=2.17,<3.0.a0 - krb5 >=1.21.3,<1.22.0a0 @@ -5033,8 +5079,8 @@ packages: license: curl license_family: MIT purls: [] - size: 460366 - timestamp: 1762333743748 + size: 459417 + timestamp: 1765379027010 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.7.5.82-h676940d_2.conda sha256: 8691cf6b1585cf6251663029e00485da5a912f6ca0ff7e5c31a6d8d604b29253 md5: bb6e31a0daa64ede76fe8d3fff01c06f @@ -5094,13 +5140,33 @@ packages: purls: [] size: 52779 timestamp: 1761070300821 -- conda: https://conda.anaconda.org/rapidsai/linux-64/libcuvs-25.10.00-cuda12_251008_f245c152.conda - build_number: 0 - sha256: 24160bf398d73f2c57c007c102b6c7b073b74aa24f0d626e9357cad9118344b4 - md5: 318ba498fee89e00e2daac68c93ef8db +- conda: https://conda.anaconda.org/rapidsai/linux-64/libcuvs-25.12.00-cuda12_251211_fc27938b.conda + sha256: 4ba97eba5963094549aa902879dab0aa64ab7dc78384583ba4fdd4c2a68d9998 + md5: feb413f9ced33ddd383a0604c87fc175 depends: - cuda-version >=12,<13.0a0 - - libraft-headers 25.10.* + - libcuvs-headers ==25.12.0 cuda12_251211_fc27938b + - libraft-headers 25.12.* + - librmm 25.12.* + - nccl + - cuda-cudart + - libcublas + - libcurand + - libcusolver + - libcusparse + - __glibc >=2.28,<3.0.a0 + - libstdcxx >=14 + - libgcc >=14 + license: Apache-2.0 + size: 482383475 + timestamp: 1765414373656 +- conda: https://conda.anaconda.org/rapidsai/linux-64/libcuvs-headers-25.12.00-cuda12_251211_fc27938b.conda + sha256: 0a2e01988240b89788f07d68909312a7d86f32f160d3a31fbcdd54bef7867d7f + md5: 517ecc81fbb557dd0988b59d97fcc79d + depends: + - cuda-version >=12,<13.0a0 + - libraft-headers 25.12.* + - librmm 25.12.* - nccl - cuda-cudart - libcublas @@ -5112,8 +5178,8 @@ packages: - libstdcxx >=14 - libgcc >=14 license: Apache-2.0 - size: 877785952 - timestamp: 1759959175445 + size: 96834 + timestamp: 1765414373653 - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda sha256: aa8e8c4be9a2e81610ddf574e05b64ee131fab5e0e3693210c9d6d2fba32c680 md5: 6c77a605a7a689d17d4819c0f8ac9a00 @@ -5206,33 +5272,33 @@ packages: purls: [] size: 386739 timestamp: 1757945416744 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_14.conda - sha256: 947bfbe5e47cd5d0cbdb0926d4baadb3e9be25caca7c6c6ef516f7ef85052cec - md5: 550dceb769d23bcf0e2f97fd4062d720 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_16.conda + sha256: 6eed58051c2e12b804d53ceff5994a350c61baf117ec83f5f10c953a3f311451 + md5: 6d0363467e6ed84f11435eb309f2ff06 depends: - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 constrains: - - libgomp 15.2.0 he0feb66_14 - - libgcc-ng ==15.2.0=*_14 + - libgcc-ng ==15.2.0=*_16 + - libgomp 15.2.0 he0feb66_16 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 1041047 - timestamp: 1764277103389 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_14.conda - sha256: 48a77fde940b4b877c0ed24efd562c135170a46d100c07cd2d7b67e842e30642 - md5: 6c13aaae36d7514f28bd5544da1a7bb8 + size: 1042798 + timestamp: 1765256792743 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_16.conda + sha256: 5f07f9317f596a201cc6e095e5fc92621afca64829785e483738d935f8cab361 + md5: 5a68259fac2da8f2ee6f7bfe49c9eb8b depends: - - libgcc 15.2.0 he0feb66_14 + - libgcc 15.2.0 he0feb66_16 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 27157 - timestamp: 1764277114484 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-core-3.12.0-h6049c3a_1.conda - sha256: 6e943311d588bb9c099a58906289bdba8b80fe1bcfd67c3a058e45774b0a17ac - md5: 791c1603173b9d650ef5efc9e1c27624 + size: 27256 + timestamp: 1765256804124 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-core-3.12.0-hf05ffb4_4.conda + sha256: 3758e17e3c6ce064054591618c885ea27dae77fa7215be91f9d2b785b67f13f5 + md5: 5415377d418154c0963e1c3e1ce6d7f5 depends: - __glibc >=2.17,<3.0.a0 - blosc >=1.21.6,<2.0a0 @@ -5250,9 +5316,9 @@ packages: - libjxl >=0.11,<0.12.0a0 - libkml >=1.3.0,<1.4.0a0 - liblzma >=5.8.1,<6.0a0 - - libpng >=1.6.50,<1.7.0a0 + - libpng >=1.6.53,<1.7.0a0 - libspatialite >=5.1.0,<5.2.0a0 - - libsqlite >=3.51.0,<4.0a0 + - libsqlite >=3.51.1,<4.0a0 - libstdcxx >=14 - libwebp-base >=1.6.0,<2.0a0 - libxml2 @@ -5262,7 +5328,7 @@ packages: - muparser >=2.3.5,<2.4.0a0 - openssl >=3.5.4,<4.0a0 - pcre2 >=10.47,<10.48.0a0 - - proj >=9.7.0,<9.8.0a0 + - proj >=9.7.1,<9.8.0a0 - xerces-c >=3.3.0,<3.4.0a0 - zstd >=1.5.7,<1.6.0a0 constrains: @@ -5270,23 +5336,23 @@ packages: license: MIT license_family: MIT purls: [] - size: 12907462 - timestamp: 1763757161364 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_14.conda - sha256: 8112c883156c256e26f15cba033b1b7c3de747bc3823497498d34b9fcd2187b6 - md5: fa9d91abc5a9db36fa8dcd1b9a602e61 + size: 12888996 + timestamp: 1765913875126 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_16.conda + sha256: 8a7b01e1ee1c462ad243524d76099e7174ebdd94ff045fe3e9b1e58db196463b + md5: 40d9b534410403c821ff64f00d0adc22 depends: - - libgfortran5 15.2.0 h68bc16d_14 + - libgfortran5 15.2.0 h68bc16d_16 constrains: - - libgfortran-ng ==15.2.0=*_14 + - libgfortran-ng ==15.2.0=*_16 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 27090 - timestamp: 1764277154740 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_14.conda - sha256: a32c45c9652dfd832fb860898f818fb34e6ad47933fcce24cf323bf0b6914f24 - md5: 3078a2a9a58566a54e579b41b9e88c84 + size: 27215 + timestamp: 1765256845586 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_16.conda + sha256: d0e974ebc937c67ae37f07a28edace978e01dc0f44ee02f29ab8a16004b8148b + md5: 39183d4e0c05609fd65f130633194e37 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=15.2.0 @@ -5295,8 +5361,8 @@ packages: license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 2480588 - timestamp: 1764277129524 + size: 2480559 + timestamp: 1765256819588 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.39.0-hdb79228_0.conda sha256: d3341cf69cb02c07bbd1837968f993da01b7bd467e816b1559a3ca26c1ff14c5 md5: a2e30ccd49f753fd30de0d30b1569789 @@ -5357,9 +5423,9 @@ packages: purls: [] size: 8349777 timestamp: 1761058442526 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.12.1-default_h7f8ec31_1002.conda - sha256: f7fbc792dbcd04bf27219c765c10c239937b34c6c1a1f77a5827724753e02da1 - md5: c01021ae525a76fe62720c7346212d74 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.12.1-default_hafda6a7_1003.conda + sha256: b9e6340da35245d5f3b7b044b4070b4980809d340bddf16c942a97a83f146aa4 + md5: 4fe840c6d6b3719b4231ed89d389bb17 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -5369,8 +5435,8 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - size: 2450642 - timestamp: 1757624375958 + size: 2449346 + timestamp: 1765089858592 - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.3.0-h4c17acf_1.conda sha256: 2bdd1cdd677b119abc5e83069bec2e28fe6bfb21ebaea3cd07acee67f38ea274 md5: c2a0c1d0120520e979685034e0b79859 @@ -5434,40 +5500,40 @@ packages: purls: [] size: 411495 timestamp: 1761132836798 -- conda: https://conda.anaconda.org/rapidsai/linux-64/libkvikio-25.10.00-cuda12_9_251008_fb6220c4.conda +- conda: https://conda.anaconda.org/rapidsai/linux-64/libkvikio-25.12.00-cuda12_251210_61297197.conda build_number: 0 - sha256: 17efe7f70c36cb63fee29bc4f67cf48a446eca4ef4c7dfa627de30d033863e59 - md5: fab7891d43305f2dc089ac6adaad15fd + sha256: 3857ae3fb45883e2dc2a53f801aa0ce7db04ed9a837eb0635d365606891fb4e5 + md5: 1287df1fe344808d3bdcb4dc63ead9dc depends: - - cuda-version >=12,<13.0a0 + - cuda-version >=12.2.0a0,<13.0a0 - libcufile-dev - - libgcc >=14 + - libgcc >=15 + - __glibc >=2.28,<3.0.a0 - libstdcxx >=14 - libgcc >=14 - - __glibc >=2.28,<3.0.a0 - libcurl >=8.5.0,<9.0a0 - libnuma >=2.0.18,<3.0a0 - libcurl >=8.5.0,<9.0a0 license: Apache-2.0 - size: 389724 - timestamp: 1759941253520 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-2_h5e43f62_mkl.conda - build_number: 2 - sha256: 18166b664d39650d3482420a7349082d4a8d79cee5ca69562160795ab6b0a808 - md5: 4f33d79eda3c82c95a54e8c2981adddb + size: 411905 + timestamp: 1765404798234 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-5_h5e43f62_mkl.conda + build_number: 5 + sha256: b411a9dccb21cd6231f8f66b63916a6520a7b23363e6f9d1d111e8660f2798b0 + md5: 88155c848e1278b0990692e716c9eab4 depends: - - libblas 3.11.0 2_h5875eb1_mkl + - libblas 3.11.0 5_h5875eb1_mkl constrains: - - liblapacke 3.11.0 2*_mkl - - blas 2.302 mkl - - libcblas 3.11.0 2*_mkl + - liblapacke 3.11.0 5*_mkl + - libcblas 3.11.0 5*_mkl + - blas 2.305 mkl track_features: - blas_mkl license: BSD-3-Clause license_family: BSD purls: [] - size: 18542 - timestamp: 1763828444709 + size: 18398 + timestamp: 1765818583873 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda sha256: f2591c0069447bbe28d4d696b7fcb0c5bd0b4ac582769b89addbcf26fb3430d8 md5: 1a580f7796c7bf6393fddb8bbbde58dc @@ -5480,25 +5546,25 @@ packages: purls: [] size: 112894 timestamp: 1749230047870 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libmagma-2.9.0-ha7672b3_4.conda - sha256: 34da7d270ee89143679afcc1f6b8f32289b954bfadfb621482d6d8e23113b108 - md5: 7bbb8b3e5530cc049b2e2b2e2797e09d +- conda: https://conda.anaconda.org/conda-forge/linux-64/libmagma-2.9.0-ha7672b3_5.conda + sha256: cbc30a122d01d70eda4aff51a22911cff3620fca50fdfa30a44a85d747b57421 + md5: 12a60e31d649f4408c4fcd0aa7183e8c depends: - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 - - cuda-cudart >=12.9.79,<13.0a0 - - cuda-version >=12.9,<13 + - cuda-cudart + - cuda-version >=12,<13.0a0 - libblas >=3.9.0,<4.0a0 - - libcublas >=12.9.1.4,<13.0a0 - - libcusparse >=12.5.10.65,<13.0a0 + - libcublas + - libcusparse - libgcc >=14 - liblapack >=3.9.0,<4.0a0 - libstdcxx >=14 license: BSD-3-Clause license_family: BSD purls: [] - size: 554495629 - timestamp: 1764086162638 + size: 554496362 + timestamp: 1764893608487 - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda sha256: 3aa92d4074d4063f2a162cd8ecb45dccac93e543e565c01a787e16a43501f7ee md5: c7e925f37e3b40d893459e625f6a53f1 @@ -5594,6 +5660,38 @@ packages: purls: [] size: 51946 timestamp: 1757690057310 +- conda: https://conda.anaconda.org/conda-forge/noarch/libnvimgcodec-0.6.0-hd8ed1ab_0.conda + sha256: b536c253181c4e77725f3cb61832340dcdda6f5b5ad143b6b871a98d49a96e2a + md5: 3a30794c6749225c38ae31183f34195b + depends: + - libnvimgcodec0 >=0.6.0,<0.6.1.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 21237 + timestamp: 1758323506203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvimgcodec0-0.6.0-hb7e823c_0.conda + sha256: 3c30c4b54d6e8dfbcce551ecb96b98a70b546fba50e23bde438b7fb1e78b607a + md5: de4e5794a78470d69a78c00b5991e8ed + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart + - cuda-version >=12,<13.0a0 + - libgcc >=14 + - libnvjpeg + - libnvjpeg2k0 >=0.9.0.43,<0.9.1.0a0 + - libnvtiff >=0.5.1.75,<0.5.2.0a0 + - libnvtiff0 >=0.5.1.75,<0.5.2.0a0 + - libstdcxx >=14 + constrains: + - libnvimgcodec-libopencv-ext 0.6.0 h512924b_0 + - libnvimgcodec-libtiff-ext 0.6.0 h42cb731_0 + - libnvimgcodec-libjpeg-turbo-ext 0.6.0 hbda554b_0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 3055862 + timestamp: 1758323610143 - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.9.86-hecca717_2.conda sha256: 3b1c851f4fc42d347ce1c1606bdd195343a47f121e0fceb7a1f1e5aa1d497da9 md5: 3461b0f2d5cbb7973d361f9e85241d98 @@ -5618,6 +5716,17 @@ packages: purls: [] size: 3582778 timestamp: 1761098854056 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg2k0-0.9.0.43-hf2c0dc5_1.conda + sha256: e1bb047a5ab15a983a8fc73c664add989319e677a11bc0a2d6799e6f321ac395 + md5: 13578943edf4b5894d548ce3d2dcef68 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12,<13.0a0 + - libgcc >=14 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 4388887 + timestamp: 1757690397597 - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvptxcompiler-dev-12.9.86-ha770c72_2.conda sha256: 1e7a7b34f8639a5feb75ba864127059e4d83edfe1a516547f0dbb9941e7b8f8b md5: 3fd926c321c6dbf386aa14bd8b125bfb @@ -5637,6 +5746,26 @@ packages: purls: [] size: 14422867 timestamp: 1753975387297 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvtiff-0.5.1.75-ha770c72_0.conda + sha256: 54a79b2818f39e4e469d7b1a7a638e67609d8bd6a8fa8411858887ec839601d7 + md5: 28ee24f323fc749afa4d7160bf35329d + depends: + - libnvtiff0 >=0.5.1.75,<0.5.2.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 14333 + timestamp: 1756520100154 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvtiff0-0.5.1.75-h3ac0392_0.conda + sha256: 8f198c2d43cb2cc365e98af6dd4743f14acc0a73daf842d21343ccb43764c493 + md5: 87e9a84639b5fe967750b58176f1e2c5 + depends: + - __glibc >=2.28,<3.0.a0 + - cuda-version >=12,<13.0a0 + - libgcc >=14 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 1890485 + timestamp: 1756520098888 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.21.0-hb9b0907_1.conda sha256: ba9b09066f9abae9b4c98ffedef444bbbf4c068a094f6c77d70ef6f006574563 md5: 1c0320794855f457dea27d35c4c71e23 @@ -5665,13 +5794,13 @@ packages: purls: [] size: 363444 timestamp: 1751782679053 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-21.0.0-h31208bf_12_cuda.conda - build_number: 12 - sha256: 5e99ddb9024d93ee55fefeb9ab70603cfba77d493a3fd2b2b58252b958e0879a - md5: f8b448f382cfcd4a47e0a1573ab224ac +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-21.0.0-h31208bf_14_cuda.conda + build_number: 14 + sha256: 7df2b16e423d813eab318dc03009a5d9ff18fbd6dfbea5afe667dad7f9a3550c + md5: 4d41a520c6ea8787761143c918f6de4a depends: - __glibc >=2.17,<3.0.a0 - - libarrow 21.0.0 h2937f24_12_cuda + - libarrow 21.0.0 h12806ad_14_cuda - libgcc - libgcc-ng >=12 - libstdcxx @@ -5681,19 +5810,19 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - size: 1277346 - timestamp: 1763230873506 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.51-h421ea60_0.conda - sha256: 1eb769c0f2778d07428947f64272592cc2d3b9bce63b41600abe5dc2b683d829 - md5: d8b81203d08435eb999baa249427884e + size: 1285081 + timestamp: 1765389514094 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.53-h421ea60_0.conda + sha256: 8acdeb9a7e3d2630176ba8e947caf6bf4985a5148dec69b801e5eb797856688b + md5: 00d4e66b1f746cb14944cad23fffb405 depends: - - libgcc >=14 - __glibc >=2.17,<3.0.a0 + - libgcc >=14 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement purls: [] - size: 317576 - timestamp: 1763764145606 + size: 317748 + timestamp: 1764981060755 - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.31.1-h49aed37_2.conda sha256: 1679f16c593d769f3dab219adb1117cbaaddb019080c5a59f79393dc9f45b84f md5: 94cb88daa0892171457d9fdc69f43eca @@ -5709,12 +5838,12 @@ packages: purls: [] size: 4645876 timestamp: 1760550892361 -- conda: https://conda.anaconda.org/rapidsai/linux-64/libraft-25.10.00-cuda12_251008_521611f8.conda +- conda: https://conda.anaconda.org/rapidsai/linux-64/libraft-25.12.00-cuda12_251211_d226bc96.conda build_number: 0 - sha256: bbd641a92da98a6c9df6bf4595774c2768797283dfd502c7df4bfd4ce02290b0 - md5: 3ebbc7083d98765c80a474c1ce57b12c + sha256: a7310e219158b3d2a1d59f3f8a3c322e66c286f963e02cecc5be5b667c1ae509 + md5: 46d2cd630a117b272fdea3b0af5475cb depends: - - libraft-headers ==25.10.0 cuda12_251008_521611f8 + - libraft-headers ==25.12.0 cuda12_251211_d226bc96 - cuda-version >=12,<13.0a0 - cuda-cudart - cuda-profiler-api @@ -5723,18 +5852,18 @@ packages: - libcusolver - libcusparse license: Apache-2.0 - size: 4169230 - timestamp: 1759945989538 -- conda: https://conda.anaconda.org/rapidsai/linux-64/libraft-headers-25.10.00-cuda12_251008_521611f8.conda + size: 4176614 + timestamp: 1765411318679 +- conda: https://conda.anaconda.org/rapidsai/linux-64/libraft-headers-25.12.00-cuda12_251211_d226bc96.conda build_number: 0 - sha256: 2948b9dfbb7a1b805b93f1860b6cfecb64b73242c9d3ada0060ef01d1fbc4a65 - md5: 06b52f4f67958a75cdae7d9fa4e80bff + sha256: 5da9bc17660b5ff598c6e82bd01ae663d9c564236dcf414ff5ad61e8e418eb63 + md5: ee15e069355b94491a3a84ccc1a117aa depends: - - libraft-headers-only ==25.10.0 cuda12_251008_521611f8 + - libraft-headers-only ==25.12.0 cuda12_251211_d226bc96 - cuda-version >=12,<13.0a0 - - librmm 25.10.* + - librmm 25.12.* - nccl >=2.19 - - ucxx 0.46.* + - ucxx 0.47.* - cuda-cudart-dev - cuda-profiler-api - libcublas-dev @@ -5742,20 +5871,20 @@ packages: - libcusolver-dev - libcusparse-dev license: Apache-2.0 - size: 18156 - timestamp: 1759945989538 -- conda: https://conda.anaconda.org/rapidsai/linux-64/libraft-headers-only-25.10.00-cuda12_251008_521611f8.conda + size: 18326 + timestamp: 1765411318679 +- conda: https://conda.anaconda.org/rapidsai/linux-64/libraft-headers-only-25.12.00-cuda12_251211_d226bc96.conda build_number: 0 - sha256: fdcbb6d050a15313ae4d7e08258033496f2b6ef9dd6a296c8e48f16c9dce8947 - md5: ed9f6b12468c111023a0851f3c2e0c5f + sha256: 0cbf0d0b9b9e89b0100112608ce0b308d8b3b56a75b670565870362b8644cbaf + md5: b5df19f373770c930eff358aa622d581 depends: - cuda-version >=12,<13.0a0 - cuda-cudart - - librmm 25.10.* - - rapids-logger 0.1.* + - librmm 25.12.* + - rapids-logger 0.2.* license: Apache-2.0 - size: 2867774 - timestamp: 1759945989538 + size: 2867364 + timestamp: 1765411318677 - conda: https://conda.anaconda.org/conda-forge/linux-64/librdkafka-2.8.0-h2e2c4f7_0.conda sha256: e9c4712d7ac0bafa6dda81835ea27ce335ac34fdbcd9393e36b44ec78b0124eb md5: fed62fda2c5fed40bf6455c195a4ad4a @@ -5790,21 +5919,22 @@ packages: purls: [] size: 211099 timestamp: 1762397758105 -- conda: https://conda.anaconda.org/rapidsai/linux-64/librmm-25.10.00-cuda12_251008_7aaad1de.conda - sha256: f5a5be859f16fafe0cc216ece2f4453b6ed1d4d0c2bf8835546fcff98dd71f7d - md5: 2b3c6bc812d6610f73466525d227a79b +- conda: https://conda.anaconda.org/rapidsai/linux-64/librmm-25.12.00-cuda12_251210_86731e05.conda + build_number: 0 + sha256: e11c3c47cb876dbf9437d741d88de229ec6ffbb10bad2497e0f7f5087b2080c0 + md5: f9f6da83924d858296f81033bae7364b depends: - cuda-version >=12,<13.0a0 - cuda-cudart - - rapids-logger 0.1.* + - rapids-logger 0.2.* - __glibc >=2.28,<3.0.a0 - libgcc >=14 - libstdcxx >=14 - libgcc >=14 - __glibc >=2.28,<3.0.a0 license: Apache-2.0 - size: 1303599 - timestamp: 1759940625766 + size: 1450116 + timestamp: 1765400131789 - conda: https://conda.anaconda.org/conda-forge/linux-64/librttopo-1.1.0-h46dd2a8_20.conda sha256: eb4082a5135102f5ba9c302da13164d4ed1181d5f0db9d49e5e11a815a7b526f md5: df81fd57eacf341588d728c97920e86d @@ -5875,40 +6005,40 @@ packages: purls: [] size: 304790 timestamp: 1745608545575 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_14.conda - sha256: bbeb7cf8b7eff000b2cb5ffb9a40d98fbb8f39c94768afaec38408c3097cde0d - md5: 8e96fe9b17d5871b5cf9d312cab832f6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_16.conda + sha256: 813427918316a00c904723f1dfc3da1bbc1974c5cfe1ed1e704c6f4e0798cbc6 + md5: 68f68355000ec3f1d6f26ea13e8f525f depends: - __glibc >=2.17,<3.0.a0 - - libgcc 15.2.0 he0feb66_14 + - libgcc 15.2.0 he0feb66_16 constrains: - - libstdcxx-ng ==15.2.0=*_14 + - libstdcxx-ng ==15.2.0=*_16 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 5856715 - timestamp: 1764277148231 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_14.conda - sha256: 63336f51b88029a9557a430aecbb08a11365aa03ec47ec8d14e542fec5dc80fb - md5: 9531f671a13eec0597941fa19e489b96 + size: 5856456 + timestamp: 1765256838573 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_16.conda + sha256: 81f2f246c7533b41c5e0c274172d607829019621c4a0823b5c0b4a8c7028ee84 + md5: 1b3152694d236cf233b76b8c56bf0eae depends: - - libstdcxx 15.2.0 h934c35e_14 + - libstdcxx 15.2.0 h934c35e_16 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 27200 - timestamp: 1764277193585 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.10-hd0affe5_2.conda - sha256: b30c06f60f03c2cf101afeb3452f48f12a2553b4cb631c9460c8a8ccf0813ae5 - md5: b04e0a2163a72588a40cde1afd6f2d18 + size: 27300 + timestamp: 1765256885128 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.10-hd0affe5_3.conda + sha256: b3a7f89462dc95c1bba9f663210d20ff3ac5f7db458684e0f3a7ae5784f8c132 + md5: 70d1de6301b58ed99fea01490a9802a3 depends: - __glibc >=2.17,<3.0.a0 - libcap >=2.77,<2.78.0a0 - libgcc >=14 license: LGPL-2.1-or-later purls: [] - size: 491211 - timestamp: 1763011323224 + size: 491268 + timestamp: 1765552759709 - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.22.0-h454ac66_1.conda sha256: 4888b9ea2593c36ca587a5ebe38d0a56a0e6d6a9e4bb7da7d9a326aaaca7c336 md5: 8ed82d90e6b1686f5e98f8b7825a15ef @@ -5942,9 +6072,9 @@ packages: purls: [] size: 435273 timestamp: 1762022005702 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libtorch-2.9.1-cuda129_mkl_hce6efb5_300.conda - sha256: 333ff0887b4013b6045a11395aa22e73f65606d3d86c77c7dffdf2417aa077f9 - md5: 161b53b1fb26d530dd1431676fe38f1a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtorch-2.9.1-cuda129_mkl_hce6efb5_301.conda + sha256: e5ea50c79aa688eb6e4ca944e7d823450e294496553cfa55f4de0994a07472e3 + md5: 8c3137465513fd3116877f69824a2778 depends: - __glibc >=2.17,<3.0.a0 - _openmp_mutex * *_llvm @@ -5973,45 +6103,47 @@ packages: - libstdcxx >=14 - libuv >=1.51.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - llvm-openmp >=21.1.6 + - llvm-openmp >=21.1.7 - mkl >=2025.3.0,<2026.0a0 - nccl >=2.28.9.1,<3.0a0 - pybind11-abi 11 - sleef >=3.9.0,<4.0a0 constrains: - - pytorch 2.9.1 cuda129_mkl_*_300 - - pytorch-gpu 2.9.1 + - pytorch 2.9.1 cuda129_mkl_*_301 - pytorch-cpu <0.0a0 + - pytorch-gpu 2.9.1 license: BSD-3-Clause license_family: BSD purls: [] - size: 884635431 - timestamp: 1764069527305 -- conda: https://conda.anaconda.org/rapidsai/linux-64/libucxx-0.46.00-cuda12_251008_64355220.conda + size: 884785373 + timestamp: 1764976498055 +- conda: https://conda.anaconda.org/rapidsai/linux-64/libucxx-0.47.00-cuda12_251210_5d6f0af3.conda build_number: 0 - sha256: eb613f385a1cf7fdf873958709e401879f65f3e0d5730d8901f90a3df5419459 - md5: ea15c288d7eed36b769e1d9f2099ff2b + sha256: 3a7cc21c8533a8e138326e71b2111298fbf6921aac4b5873028728a0a5f9589c + md5: f9851087b542e77ab859d726ece4d74b depends: - cuda-version >=12,<13.0a0 - - librmm >=25.10.0,<25.11.0a0 + - librmm >=25.12.0,<25.13.0a0 - ucx >=1.17.0,<1.20.0 - __glibc >=2.28,<3.0.a0 + - libgcc >=14 + - __glibc >=2.28,<3.0.a0 - libstdcxx >=14 - libgcc >=14 license: BSD-3-Clause - size: 332158 - timestamp: 1759944577625 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.10-hd0affe5_2.conda - sha256: 751cf346f0f56cc9bfa43f7b5c9c30df2fcec8d84d164ac0cd74a27a3af79f30 - md5: 2f6b30acaa0d6e231d01166549108e2c + size: 347098 + timestamp: 1765407086131 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.10-hd0affe5_3.conda + sha256: 977e7e4955ea1581e441e429c2c1b498bc915767f1cac77a97b283c469d5298c + md5: 3934f4cf65a06100d526b33395fb9cd2 depends: - __glibc >=2.17,<3.0.a0 - libcap >=2.77,<2.78.0a0 - libgcc >=14 license: LGPL-2.1-or-later purls: [] - size: 144395 - timestamp: 1763011330153 + size: 145023 + timestamp: 1765552781358 - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.11.2-hfe17d71_0.conda sha256: 98812901f52df746f89e1fda2a65494dd30de9e826f89b49ebad5d53e5fc424d md5: 5641725dfad698909ec71dac80d16736 @@ -6023,17 +6155,17 @@ packages: purls: [] size: 85985 timestamp: 1764062044259 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.2-he9a06e4_0.conda - sha256: e5ec6d2ad7eef538ddcb9ea62ad4346fde70a4736342c4ad87bd713641eb9808 - md5: 80c07c68d2f6870250959dcc95b209d1 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.2-h5347b49_1.conda + sha256: 030447cf827c471abd37092ab9714fde82b8222106f22fde94bc7a64e2704c40 + md5: 41f5c09a211985c3ce642d60721e7c3e depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 license: BSD-3-Clause license_family: BSD purls: [] - size: 37135 - timestamp: 1758626800002 + size: 40235 + timestamp: 1764790744114 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb03c661_1.conda sha256: c180f4124a889ac343fc59d15558e93667d894a966ec6fdb61da1604481be26b md5: 0f03292cc56bf91a077a134ea8747118 @@ -6081,20 +6213,20 @@ packages: purls: [] size: 100393 timestamp: 1702724383534 -- conda: https://conda.anaconda.org/rapidsai/linux-64/libxgboost-3.0.5-rapidsai_h98a37b8_3.conda - sha256: b6ccfd52572eab32bab9811768d7c145ac446f2e8aa5fdb8913b706071c812e8 - md5: 32eb590b5d6191711459957837645b47 +- conda: https://conda.anaconda.org/rapidsai/linux-64/libxgboost-3.1.2-rapidsai_hc3bde56_1.conda + sha256: 102c0ba6d4fd424d721754da71325bea9b47c8b050c80f43873495140190cf28 + md5: 3805a41bd45d03f3048f7e857fcbe272 depends: - __glibc >=2.28,<3.0.a0 - _openmp_mutex >=4.5 - cuda-version >=12,<13.0a0 - libgcc >=14 - - librmm >=25.10.0a38,<25.11.0a0 + - librmm >=25.12.0a62,<25.13.0a0 - libstdcxx >=14 - - nccl >=2.27.7.1,<3.0a0 + - nccl >=2.28.9.1,<3.0a0 license: Apache-2.0 - size: 99024475 - timestamp: 1758757315565 + size: 125008559 + timestamp: 1764175863988 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.1-h26afc86_0.conda sha256: ec0735ae56c3549149eebd7dc22c0bed91fd50c02eaa77ff418613ddda190aa8 md5: e512be7dc1f84966d50959e900ca121f @@ -6181,19 +6313,18 @@ packages: - pkg:pypi/linkify-it-py?source=hash-mapping size: 24154 timestamp: 1733781296133 -- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-21.1.6-h4922eb0_0.conda - sha256: d7b534285d4abe0042ca985149df4888e808a5c1731f4a87c5552dc725d8a1d8 - md5: 7a0b9ce502e0ed62195e02891dfcd704 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-21.1.8-h4922eb0_0.conda + sha256: a5a7ad16eecbe35cac63e529ea9c261bef4ccdd68cb1db247409f04529423989 + md5: f8640b709b37dc7758ddce45ea18d000 depends: - __glibc >=2.17,<3.0.a0 constrains: - - openmp 21.1.6|21.1.6.* - intel-openmp <0.0a0 + - openmp 21.1.8|21.1.8.* license: Apache-2.0 WITH LLVM-exception - license_family: APACHE purls: [] - size: 3209134 - timestamp: 1763529474187 + size: 6127279 + timestamp: 1765964409311 - conda: https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.44.0-py313hfdae721_2.conda sha256: 04d493d696a4d5dfef213b28b8f88c37e5ba90e24c8a913d9fbc5c02ea0637d1 md5: dd0d7947635c0c524608eab7db55dcc9 @@ -6245,9 +6376,9 @@ packages: - shapely>=2 ; extra == 'geopandas' - movingpandas>=0.17 ; extra == 'movingpandas' requires_python: '>=3.10' -- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py313h28739b2_0.conda - sha256: 60df6034941808d80b6a3639225659743d91e567e12e796eedb7cb27de725197 - md5: 991ea3cc00eab4e898759c06d51d4ed8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py313h28739b2_1.conda + sha256: cbc82f4fa7587376c038d2f0471a73efa7ade4439857b04a0cc839262f1de6e5 + md5: e69ad33075938ba81e43311da86b809c depends: - python - lz4-c @@ -6259,8 +6390,8 @@ packages: license_family: BSD purls: - pkg:pypi/lz4?source=hash-mapping - size: 44915 - timestamp: 1762351349252 + size: 44861 + timestamp: 1765026393230 - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 md5: 9de5350a85c4a20c685259b889aa6393 @@ -6565,20 +6696,20 @@ packages: - pkg:pypi/msgpack?source=hash-mapping size: 103129 timestamp: 1762504205590 -- conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.6.3-py313h8060acc_0.conda - sha256: 4eb75a352c57d7b260d57db52dc27965ca3f62b47ba39090f7927942da7a2f48 - md5: 0cabb3f2ba71300370fcebe973d9ae38 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.7.0-py313h3dea7bd_0.conda + sha256: b967371e773b36c772976e2e22b526eb5322ba478be94727cff279d146c78181 + md5: d182804a222acc8f2c7e215f344d229f depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - libgcc >=14 - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/multidict?source=hash-mapping - size: 97053 - timestamp: 1751310779863 + - pkg:pypi/multidict?source=compressed-mapping + size: 99152 + timestamp: 1765460518836 - conda: https://conda.anaconda.org/conda-forge/noarch/multipledispatch-0.6.0-pyhd8ed1ab_1.conda sha256: c6216a21154373b340c64f321f22fec51db4ee6156c2e642fa58368103ac5d09 md5: 121a57fce7fff0857ec70fa03200962f @@ -6628,9 +6759,9 @@ packages: version: 1.1.0 sha256: 1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505 requires_python: '>=3.8' -- conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.12.0-pyhcf101f3_0.conda - sha256: 1bdb3210db397315c7334c0432a07199b5db28f3c79adcafb6a7436f93423a92 - md5: 02cab382663872083b7e8675f09d9c21 +- conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.14.0-pyhcf101f3_0.conda + sha256: 793f9f99d9c4f31fd56632dfd085ba4d5e7eca5bf6373613a21af66a034cc8f1 + md5: 2708dffa2a43a303f5f9cb020fedb6ab depends: - python >=3.10 - python @@ -6638,8 +6769,8 @@ packages: license_family: MIT purls: - pkg:pypi/narwhals?source=compressed-mapping - size: 267826 - timestamp: 1763381298763 + size: 271314 + timestamp: 1765893898943 - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda sha256: a20cff739d66c2f89f413e4ba4c6f6b59c50d5c30b5f0d840c13e8c9c2df9135 md5: 6bb0d77277061742744176ab555b723c @@ -6700,19 +6831,19 @@ packages: - pkg:pypi/nbformat?source=hash-mapping size: 100945 timestamp: 1733402844974 -- conda: https://conda.anaconda.org/conda-forge/linux-64/nccl-2.28.9.1-h4d09622_0.conda - sha256: 12de75cf9b11c1e975f26f84ee1ac6a77f7b65f26eb819d1d45c3007dad1ef85 - md5: d41326b02eb74cf875803c265dde8210 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nccl-2.28.9.1-h4d09622_1.conda + sha256: a132df4a0b4c36932cfd5e931b4c88e83991ad77de9adf13c206caefdaf3b8b0 + md5: af3e8d72000a10bd8159d7e28daf4bfc depends: - __glibc >=2.28,<3.0.a0 - - cuda-version >=12.2a.0,<13.0a0 + - cuda-version >=12,<13.0a0 - libgcc >=14 - libstdcxx >=14 license: BSD-3-Clause license_family: BSD purls: [] - size: 193073223 - timestamp: 1762821007597 + size: 193067371 + timestamp: 1764718168355 - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 md5: 47e340acb35de30501a76c7c799c41d7 @@ -6742,9 +6873,9 @@ packages: - typing-extensions>=4.15.0 ; extra == 'tests' - mpi4py ; extra == 'parallel' requires_python: '>=3.10' -- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6-pyhcf101f3_0.conda - sha256: 57b0bbb72ed5647438a81e7caf4890075390f80030c1333434467f9366762db7 - md5: 6725bfdf8ea7a8bf6415f096f3f1ffa5 +- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda + sha256: f6a82172afc50e54741f6f84527ef10424326611503c64e359e25a19a8e4c1c6 + md5: a2c1eeadae7a309daed9d62c96012a2b depends: - python >=3.11 - python @@ -6757,8 +6888,8 @@ packages: license_family: BSD purls: - pkg:pypi/networkx?source=compressed-mapping - size: 1584885 - timestamp: 1763962034867 + size: 1587439 + timestamp: 1765215107045 - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_1.conda sha256: fd2cbd8dfc006c72f45843672664a8e4b99b2f8137654eaae8c3d46dca776f63 md5: 16c2a0e9c4a166e53632cfca4f68d020 @@ -6769,22 +6900,31 @@ packages: purls: [] size: 136216 timestamp: 1758194284857 -- conda: https://conda.anaconda.org/conda-forge/linux-64/nodejs-24.9.0-heeeca48_0.conda - sha256: 6abb823fd4d28e6474f40dfcf38e772e5869ee755be855cf5d2c0d49f888c75e - md5: 8a2a73951c1ea275e76fb1b92d97ff3e +- conda: https://conda.anaconda.org/conda-forge/linux-64/nodejs-25.2.1-he2c55a7_1.conda + sha256: 6516f99fe400181ebe27cba29180ca0c7425c15d7392f74220a028ad0e0064a2 + md5: d8005b3a90515c952b51026f6b7d005d depends: - __glibc >=2.28,<3.0.a0 - libstdcxx >=14 - libgcc >=14 + - zstd >=1.5.7,<1.6.0a0 + - c-ares >=1.34.6,<2.0a0 - libuv >=1.51.0,<2.0a0 - - openssl >=3.5.3,<4.0a0 - - icu >=75.1,<76.0a0 + - libsqlite >=3.51.1,<4.0a0 + - libnghttp2 >=1.67.0,<2.0a0 + - openssl >=3.5.4,<4.0a0 + - libabseil >=20250512.1,<20250513.0a0 + - libabseil * cxx17* - libzlib >=1.3.1,<2.0a0 + - libbrotlicommon >=1.2.0,<1.3.0a0 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + - icu >=75.1,<76.0a0 license: MIT license_family: MIT purls: [] - size: 25557455 - timestamp: 1759064044872 + size: 17246248 + timestamp: 1765444698486 - conda: https://conda.anaconda.org/conda-forge/linux-64/numba-0.61.2-py313hd8e3f9f_2.conda sha256: b281e1f16a010c2e312a4e630182afc4718911911e79f09a11c7712ff5462625 md5: 84cef0ce56c6db53edb3f8b83bdbb364 @@ -6829,10 +6969,10 @@ packages: - pkg:pypi/numba-cuda?source=hash-mapping size: 526795 timestamp: 1756388857696 -- pypi: https://files.pythonhosted.org/packages/93/f7/616963e354a30290b281af99ad9ead977bd60281ccb82daf32b75cc1b7d9/numbagg-0.9.3-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/ae/d3/ff8f1b9968aa4dcd1da1880322ed492314cc920998182e549b586c895a17/numbagg-0.9.4-py3-none-any.whl name: numbagg - version: 0.9.3 - sha256: 19f3fbcc9ff0644110a861ae755155aace4705fcf31b5c2c4648f4441f33d980 + version: 0.9.4 + sha256: 4f48276333fae856810873122d77aa75fb2d33f9ffe7888c1cfc86209117408f requires_dist: - numpy - numba @@ -6891,28 +7031,28 @@ packages: - numba ; extra == 'dev' - pandas ; extra == 'dev' requires_python: '>=3.9' -- conda: https://conda.anaconda.org/conda-forge/noarch/nvidia-ml-py-13.580.82-pyhd8ed1ab_0.conda - sha256: c51088a5f854a4c7d466f959d7b0b21c18761eef4e07cf299ff9a5a8173208b7 - md5: 3767062cd4dbecdce5ac1b1b151f5685 +- conda: https://conda.anaconda.org/conda-forge/noarch/nvidia-ml-py-13.590.44-pyhd8ed1ab_0.conda + sha256: fbd4dc01015167fbdf777e8f4e2cbf07cba0dcee8ff0009c13f0356358a6042b + md5: 6c20cb2e6a86303cb957d9d32dbb87df depends: - python >=3.10 constrains: - - pynvml ~=13.0 - nvidia-ml ==9999999999 + - pynvml ~=13.0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/nvidia-ml-py?source=hash-mapping - size: 47760 - timestamp: 1757635351592 + size: 48971 + timestamp: 1765209768013 - pypi: https://files.pythonhosted.org/packages/4a/4e/44dbb46b3d1b0ec61afda8e84837870f2f9ace33c564317d59b70bc19d3e/nvidia_nccl_cu12-2.28.9-py3-none-manylinux_2_18_x86_64.whl name: nvidia-nccl-cu12 version: 2.28.9 sha256: 485776daa8447da5da39681af455aa3b2c2586ddcf4af8772495e7c532c7e5ab requires_python: '>=3' -- conda: https://conda.anaconda.org/conda-forge/linux-64/nvtx-0.2.13-py313h07c4f96_1.conda - sha256: a297ed51fb725e5225610857429f9c236d4115e6dabb2a7d14f33f92bcbf2935 - md5: 693f5ca8ca33253d7ea8045ab4d55db1 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nvtx-0.2.14-py313h07c4f96_0.conda + sha256: 9341cb332428242ab938c5fc202008c12430ec43b8b83511d327f14bf8fd6d96 + md5: 7df9720aab27a077f1b6baf254956f47 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -6922,21 +7062,19 @@ packages: license_family: APACHE purls: - pkg:pypi/nvtx?source=hash-mapping - size: 99476 - timestamp: 1758400070068 -- conda: https://conda.anaconda.org/rapidsai/linux-64/nx-cugraph-25.10.00-py313_251008_3289e672.conda - build_number: 0 - sha256: a8bb4dbe55f913541c68e05b9c428e9c76259fa7ded90c8078769a08e0c6a1f2 - md5: 4d51219628e7c5a3997ca6c13bd0eaa2 + size: 126342 + timestamp: 1764618591796 +- conda: https://conda.anaconda.org/rapidsai/noarch/nx-cugraph-25.12.00-py_251211_d629d07a.conda + sha256: eb4dbed3df75e068ccff137515d937507b115b333ec669d628d291763e4634b9 + md5: ca7032d726330d932b017062732e6882 depends: - cupy >=13.6.0 - networkx >=3.2 - - pylibcugraph 25.10.* + - pylibcugraph 25.12.* - python - - python_abi 3.13.* *_cp313 license: Apache-2.0 - size: 280120 - timestamp: 1759963400780 + size: 104810 + timestamp: 1765431739981 - pypi: https://files.pythonhosted.org/packages/53/20/08c6dc0f20c1394e2324b9344838e4e7af770cdcb52c30757a475f50daeb/obstore-0.8.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl name: obstore version: 0.8.2 @@ -6992,27 +7130,28 @@ packages: - ipyleaflet ; extra == 'test-all' - matplotlib ; extra == 'test-all' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/04/48/d45d414b8228325051b0a09f68322ef26717eb9b6517579ae395adf2fbfc/odc_loader-0.5.1-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/84/99/6636f7097a5e461d560317024522279f52931b5a52c8caa0755a14d5f1fd/odc_loader-0.6.0-py3-none-any.whl name: odc-loader - version: 0.5.1 - sha256: fbe505e2f0e8ac4db2542935bdf5f706e6147817d818073a8a98d3226bd6470f + version: 0.6.0 + sha256: e1a24f6b6516ea5a594e455b04e3e10d0342d2b0cd8695656bdf55ab71a26ec0 requires_dist: - odc-geo>=0.4.7 - rasterio>=1.0.0,!=1.3.0,!=1.3.1 - dask[array] - numpy>=1.20.0 - xarray>=0.19 + - typing-extensions>=4.2.0 - botocore ; extra == 'botocore' - - zarr>=2.18.3,<3 ; extra == 'zarr' + - zarr>=2.18.3,<4 ; extra == 'zarr' requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/fd/0e/3f555b37a4e9da2aa37655b71e83792401958dc4078e77ffd4fa2616934f/odc_stac-0.4.1-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/e2/c7/b8f2b3e53f26f8f463002f3e8023189653b627b22ba6c00ef86eaba50b73/odc_stac-0.5.0-py3-none-any.whl name: odc-stac - version: 0.4.1 - sha256: e3910f6c8e06a609d981d38843861076617ec49d41034c22a081690182cea39c + version: 0.5.0 + sha256: 02c3161242a8032d8d769c477d1668d563ef5c6e44617f3fdb273dfca1c20136 requires_dist: - affine - odc-geo>=0.4.7 - - odc-loader>=0.5.1,<0.6.0 + - odc-loader>=0.6.0 - rasterio>=1.0.0,!=1.3.0,!=1.3.1 - dask[array] - numpy>=1.20.0 @@ -7135,9 +7274,9 @@ packages: - pkg:pypi/packaging?source=hash-mapping size: 62477 timestamp: 1745345660407 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.3-py313h08cd8bf_1.conda - sha256: c4ce5f75d175cb264dc98af6db14378222b63955c63bf1b5e30e042e81624fae - md5: 9e87d4bda0c2711161d765332fa38781 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.3-py313h08cd8bf_2.conda + sha256: b998c30e7ff13fc966220891dc0a8318b0a6730933280d76ffa5be46ff928af5 + md5: 8a69ea71fdd37bfe42a28f0967dbb75a depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -7150,43 +7289,51 @@ packages: - python_abi 3.13.* *_cp313 - pytz >=2020.1 constrains: - - xlrd >=2.0.1 - - scipy >=1.10.0 - - fsspec >=2022.11.0 - - odfpy >=1.4.1 - - beautifulsoup4 >=4.11.2 - - python-calamine >=0.1.7 - - numexpr >=2.8.4 - pytables >=3.8.0 - - pandas-gbq >=0.19.0 - - tzdata >=2022.7 - - pyxlsb >=1.0.10 - xarray >=2022.12.0 - - pyqt5 >=5.15.9 - - lxml >=4.9.2 - - matplotlib >=3.6.3 - - openpyxl >=3.1.0 - - qtpy >=2.3.0 - - psycopg2 >=2.9.6 - - pyarrow >=10.0.1 - - tabulate >=0.9.0 - zstandard >=0.19.0 - - html5lib >=1.1 - - bottleneck >=1.3.6 - - numba >=0.56.4 - - sqlalchemy >=2.0.0 - - pyreadstat >=1.2.0 - - gcsfs >=2022.11.0 - fastparquet >=2022.12.0 - - s3fs >=2022.11.0 + - bottleneck >=1.3.6 + - psycopg2 >=2.9.6 + - lxml >=4.9.2 + - numba >=0.56.4 + - pyreadstat >=1.2.0 + - openpyxl >=3.1.0 + - matplotlib >=3.6.3 + - xlrd >=2.0.1 + - pandas-gbq >=0.19.0 + - python-calamine >=0.1.7 + - beautifulsoup4 >=4.11.2 + - tzdata >=2022.7 + - scipy >=1.10.0 - blosc >=1.21.3 + - qtpy >=2.3.0 + - gcsfs >=2022.11.0 + - sqlalchemy >=2.0.0 + - pyarrow >=10.0.1 + - odfpy >=1.4.1 + - fsspec >=2022.11.0 + - html5lib >=1.1 + - s3fs >=2022.11.0 + - pyqt5 >=5.15.9 - xlsxwriter >=3.0.5 + - numexpr >=2.8.4 + - pyxlsb >=1.0.10 + - tabulate >=0.9.0 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/pandas?source=hash-mapping - size: 15131510 - timestamp: 1759266202915 + - pkg:pypi/pandas?source=compressed-mapping + size: 14912799 + timestamp: 1764615091147 +- pypi: https://files.pythonhosted.org/packages/e2/68/78a3c253f146254b8e2c19f4a4768f272e12ef11001d9b45ec7b165db054/pandas_stubs-2.3.3.251201-py3-none-any.whl + name: pandas-stubs + version: 2.3.3.251201 + sha256: eb5c9b6138bd8492fd74a47b09c9497341a278fcfbc8633ea4b35b230ebf4be5 + requires_dist: + - numpy>=1.23.5 + - types-pytz>=2022.1.1 + requires_python: '>=3.10' - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 sha256: 2bb9ba9857f4774b85900c2562f7e711d08dd48e2add9bee4e1612fbee27e16f md5: 457c2c8c08e54905d6954e79cb5b5db9 @@ -7198,9 +7345,9 @@ packages: - pkg:pypi/pandocfilters?source=hash-mapping size: 11627 timestamp: 1631603397334 -- conda: https://conda.anaconda.org/conda-forge/noarch/panel-1.8.3-pyhd8ed1ab_0.conda - sha256: 39d64deee495c8bd00f260791d5ee5f871af92d184423144e1eb5cb24c8da9c8 - md5: b67a3487322940b0fcd80860ec78f717 +- conda: https://conda.anaconda.org/conda-forge/noarch/panel-1.8.4-pyhd8ed1ab_0.conda + sha256: 482b6075b65d3bf5c7ac12265c6e5c4d26ffd3124d6d6ad4ab40e4d973b2c7d7 + md5: 21ea0d8c12557ab92d19f484c2ea76a4 depends: - bleach - bokeh >=3.7.0,<3.9.0 @@ -7223,8 +7370,8 @@ packages: license_family: BSD purls: - pkg:pypi/panel?source=hash-mapping - size: 22903699 - timestamp: 1762779744606 + size: 23019250 + timestamp: 1764745281954 - conda: https://conda.anaconda.org/conda-forge/noarch/param-2.3.1-pyhc455866_0.conda sha256: 9ad91e71f9c987ff0c304d8a3895bb1b8ded42a20993fc62446070c9f3c5e841 md5: 2e540782a41d649a290659ca8e50fec0 @@ -7233,7 +7380,7 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/param?source=compressed-mapping + - pkg:pypi/param?source=hash-mapping size: 180024 timestamp: 1764091166101 - pypi: https://files.pythonhosted.org/packages/16/32/f8e3c85d1d5250232a5d3477a2a28cc291968ff175caeadaf3cc19ce0e4a/parso-0.8.5-py2.py3-none-any.whl @@ -7302,9 +7449,9 @@ packages: - pkg:pypi/pillow?source=hash-mapping size: 1040806 timestamp: 1764330106863 -- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.0-pyhcf101f3_0.conda - sha256: 7efd51b48d908de2d75cbb3c4a2e80dd9454e1c5bb8191b261af3136f7fa5888 - md5: 5c7a868f8241e64e1cf5fdf4962f23e2 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda + sha256: 04c64fb78c520e5c396b6e07bc9082735a5cc28175dbe23138201d0a9441800b + md5: 1bd2e65c8c7ef24f4639ae6e850dacc2 depends: - python >=3.10 - python @@ -7312,8 +7459,8 @@ packages: license_family: MIT purls: - pkg:pypi/platformdirs?source=hash-mapping - size: 23625 - timestamp: 1759953252315 + size: 23922 + timestamp: 1764950726246 - pypi: https://files.pythonhosted.org/packages/e7/c3/3031c931098de393393e1f93a38dc9ed6805d86bb801acc3cf2d5bd1e6b7/plotly-6.5.0-py3-none-any.whl name: plotly version: 6.5.0 @@ -7354,28 +7501,13 @@ packages: - xarray ; extra == 'dev-optional' - plotly[dev-optional] ; extra == 'dev' requires_python: '>=3.8' -- conda: https://conda.anaconda.org/conda-forge/linux-64/polars-1.32.3-default_h3512890_0.conda - sha256: ced51411db31a8b403ef33c35dda78dd64bc169ba725c3ccf54ec3c6124bb381 - md5: 43ff217be270dde3228f423f2d95c995 - depends: - - polars-default ==1.32.3 py39hf521cc8_0 - license: MIT - license_family: MIT - purls: [] - size: 5732 - timestamp: 1755249658288 -- conda: https://conda.anaconda.org/conda-forge/linux-64/polars-default-1.32.3-py39hf521cc8_0.conda - noarch: python - sha256: c3de83d052bf06e8df0d46928fe79b7d7e90885a9f1366b05b852db20e80dafa - md5: 396b65e7b176bb0345f164d30451f718 +- conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.34.0-pyh6a1acc5_0.conda + sha256: 7e8bb10f4373202a0be760d9ac74f92c5e7e6095251180642678a8f57f10c58a + md5: d398dbcb3312bbebc2b2f3dbb98b4262 depends: + - polars-runtime-32 ==1.34.0 + - python >=3.10 - python - - libstdcxx >=14 - - libgcc >=14 - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - _python_abi3_support 1.* - - cpython >=3.9 constrains: - numpy >=1.16.0 - pyarrow >=7.0.0 @@ -7387,15 +7519,35 @@ packages: - pyiceberg >=0.7.1 - altair >=5.4.0 - great_tables >=0.8.0 - - polars-lts-cpu <0.0.0a0 - - polars-u64-idx <0.0.0a0 - - __glibc >=2.17 + - polars-runtime-32 ==1.34.0 + - polars-runtime-64 ==1.34.0 + - polars-runtime-compat ==1.34.0 license: MIT license_family: MIT purls: - pkg:pypi/polars?source=hash-mapping - size: 31518406 - timestamp: 1755249658288 + size: 506495 + timestamp: 1759772410521 +- conda: https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-32-1.34.0-py310hffdcd12_0.conda + noarch: python + sha256: 07ef527a41836b9c85e3b2baaaa77df7ced66f69d286a1488eed2fa63c2acc7a + md5: 496b18392ef5af544d22d18d91a2a371 + depends: + - python + - libgcc >=14 + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - _python_abi3_support 1.* + - cpython >=3.10 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + purls: + - pkg:pypi/polars-runtime-32?source=hash-mapping + size: 32600305 + timestamp: 1759772410521 - pypi: https://files.pythonhosted.org/packages/a8/87/77cc11c7a9ea9fd05503def69e3d18605852cd0d4b0d3b8f15bbeb3ef1d1/pooch-1.8.2-py3-none-any.whl name: pooch version: 1.8.2 @@ -7408,24 +7560,24 @@ packages: - paramiko>=2.7.0 ; extra == 'sftp' - xxhash>=1.4.3 ; extra == 'xxhash' requires_python: '>=3.7' -- conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.7.0-hb72c0af_0.conda - sha256: f1c5e1cc0de088fd3458009be68095f561fa74b5ca6293dcca266f1854d859df - md5: 438e75abf4d8c9c1d9e483b6c3f36282 +- conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.7.1-h99ae125_0.conda + sha256: 551cd2b779902ff88cb945cd69af9978561347a17023403b64f476a5a82b70c5 + md5: 8bbc19a6e87fbe8b97796e9a42a47a30 depends: - __glibc >=2.17,<3.0.a0 - - libcurl >=8.14.1,<9.0a0 + - libcurl >=8.17.0,<9.0a0 - libgcc >=14 - - libsqlite >=3.50.4,<4.0a0 + - libsqlite >=3.51.1,<4.0a0 - libstdcxx >=14 - - libtiff >=4.7.0,<4.8.0a0 + - libtiff >=4.7.1,<4.8.0a0 - sqlite constrains: - proj4 ==999999999999 license: MIT license_family: MIT purls: [] - size: 3259440 - timestamp: 1757929968903 + size: 3247369 + timestamp: 1764624592955 - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc md5: a83f6a2fdc079e643237887a37460668 @@ -7473,18 +7625,18 @@ packages: - pkg:pypi/propcache?source=hash-mapping size: 53174 timestamp: 1744525061828 -- pypi: https://files.pythonhosted.org/packages/4e/6d/280c4c2ce28b1593a19ad5239c8b826871fc6ec275c21afc8e1820108039/proto_plus-1.26.1-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/cd/24/3b7a0818484df9c28172857af32c2397b6d8fcd99d9468bd4684f98ebf0a/proto_plus-1.27.0-py3-none-any.whl name: proto-plus - version: 1.26.1 - sha256: 13285478c2dcf2abb829db158e1047e2f1e8d63a077d94263c2b88b043c75a66 + version: 1.27.0 + sha256: 1baa7f81cf0f8acb8bc1f6d085008ba4171eaf669629d1b6d1673b21ed1c0a82 requires_dist: - protobuf>=3.19.0,<7.0.0 - google-api-core>=1.31.5 ; extra == 'testing' requires_python: '>=3.7' -- pypi: https://files.pythonhosted.org/packages/1d/2a/3c5f05a4af06649547027d288747f68525755de692a26a7720dced3652c0/protobuf-6.33.1-cp39-abi3-manylinux2014_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/56/13/333b8f421738f149d4fe5e49553bc2a2ab75235486259f689b4b91f96cec/protobuf-6.33.2-cp39-abi3-manylinux2014_x86_64.whl name: protobuf - version: 6.33.1 - sha256: 8fd7d5e0eb08cd5b87fd3df49bc193f5cfd778701f47e11d127d0afc6c39f1d1 + version: 6.33.2 + sha256: 1f8017c48c07ec5859106533b682260ba3d7c5567b1ca1f24297ce03384d1b4f requires_python: '>=3.9' - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.1.3-py313h54dd161_0.conda sha256: 26cf5a69d04ef66f03516b8a8211a43bb23d5225faacd7d36e5c987b0d66af0a @@ -7535,19 +7687,19 @@ packages: sha256: 1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0 requires_dist: - pytest ; extra == 'tests' -- conda: https://conda.anaconda.org/rapidsai/noarch/py-xgboost-3.0.5-rapidsai_pyh4bd9c9a_3.conda - sha256: 5200d342a70713f2cb6570ff697728b35d34af14c2ad949fa85efd2b528eb52d - md5: 9ffa6e2995a6cd32fd91726ca15ffc3d +- conda: https://conda.anaconda.org/rapidsai/noarch/py-xgboost-3.1.2-rapidsai_pyh395bae7_1.conda + sha256: 01cf4966dc9e71ae18728f8e1405ce2ef6821906e2efe79d53b5e90a4cf515d9 + md5: ba961a3a93250dba314ee5605503daaf depends: - - libxgboost * rapidsai_h*_3 - - libxgboost >=3.0.5,<3.0.6.0a0 + - libxgboost * rapidsai_h*_1 + - libxgboost >=3.1.2,<3.1.3.0a0 - numpy - python >=3.10 - scikit-learn - scipy license: Apache-2.0 - size: 148860 - timestamp: 1758755537300 + size: 167888 + timestamp: 1764174774072 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-21.0.0-py313h78bf25f_1.conda sha256: 35f950afe2953ce9de4e0bbcf7c05d118a5f5113286866b2be3ef00e4dc9cebf md5: 58ab79f6cc05e9daeb74560d80256270 @@ -7701,43 +7853,42 @@ packages: - pkg:pypi/pygments?source=hash-mapping size: 889287 timestamp: 1750615908735 -- conda: https://conda.anaconda.org/rapidsai/linux-64/pylibcudf-25.10.00-cuda12_py313_251008_f4e35ca0.conda - sha256: d7ccb93b45cef5f954e8cd45bb5ca0bee1f1bc799fa760546235de9ffaa813ea - md5: 2f2530476f2a491f4b5b8010603ea78a +- conda: https://conda.anaconda.org/rapidsai/linux-64/pylibcudf-25.12.00-cuda12_py313_251210_580975be.conda + sha256: 5ba2175b0742c719e083165368070fa10ef8ea2fb5e91c09003c9a7dfe4a106f + md5: f387a30d70002d68065703f2f033552e depends: - python - typing_extensions >=4.0.0 - pandas >=2.0,<2.4.0dev0 - - libcudf 25.10.0.* - - rmm >=25.10.0,<25.11.0a0 + - libcudf 25.12.0.* + - rmm >=25.12.0,<25.13.0a0 - fsspec >=0.6.0 - cuda-python >=12.9.2,<13.0a0 - nvtx >=0.2.1 - packaging - - libgcc >=14 - libstdcxx >=14 - libgcc >=14 - __glibc >=2.28,<3.0.a0 - - libcudf >=25.10.0,<25.11.0a0 + - libgcc >=14 - python_abi 3.13.* *_cp313 + - libcudf >=25.12.0,<25.13.0a0 constrains: - numpy >=1.23,<3.0a0 - pyarrow >=15.0.0,<22.0.0a0 license: Apache-2.0 - size: 3218317 - timestamp: 1759943574044 -- conda: https://conda.anaconda.org/rapidsai/linux-64/pylibcugraph-25.10.01-cuda12_py313_251013_741f9105.conda - build_number: 0 - sha256: aa25b4e7e2a34da751457b87d6096bf14b97b856d32742c0323c58164de60ef3 - md5: 255d3b1c557dfcbb0fb518da273f13af + size: 3771754 + timestamp: 1765408719787 +- conda: https://conda.anaconda.org/rapidsai/linux-64/pylibcugraph-25.12.02-cuda12_py313_251211_9765e20f.conda + sha256: 06c5236d48a22a702e434b576ea2d1777fea88c11a10b870c28978a4f316a160 + md5: 0564c17b3efeae8d1c13c8760acf3fec depends: - cuda-version >=12,<13.0a0 - cupy >=13.6.0 - - libcugraph 25.10.1.* + - libcugraph 25.12.2.* - numpy >=1.23,<3.0a0 - - pylibraft 25.10.* + - pylibraft 25.12.* - python - - rmm 25.10.* + - rmm 25.12.* - cuda-cudart - libgcc >=14 - __glibc >=2.28,<3.0.a0 @@ -7745,25 +7896,25 @@ packages: - libgcc >=14 - python_abi 3.13.* *_cp313 license: Apache-2.0 - size: 785358 - timestamp: 1760373919843 -- conda: https://conda.anaconda.org/rapidsai/linux-64/pylibraft-25.10.00-cuda12_py313_251008_521611f8.conda + size: 781787 + timestamp: 1765430001613 +- conda: https://conda.anaconda.org/rapidsai/linux-64/pylibraft-25.12.00-cuda12_py313_251211_d226bc96.conda build_number: 0 - sha256: 7a7bd2974aaae8222cd8f1aca948791b0092365aa90fc9bc708947ee62a207ed - md5: fd3e01587c68873c0a6b4be39181cd71 + sha256: 3282980685df9e9a0b85113ee6a116a6556068f53935f6a01b69c5ce4876f879 + md5: 03c002df3375ff0ae7f5e026e042c700 depends: - cuda-version >=12,<13.0a0 - - libraft 25.10.0.* - - libraft-headers 25.10.0.* + - libraft 25.12.0.* + - libraft-headers 25.12.0.* - python - numpy >=1.23,<3.0a0 - - rmm 25.10.* + - rmm 25.12.* - cuda-cudart - cuda-python >=12.9.2,<13.0a0 - python_abi 3.13.* *_cp313 license: Apache-2.0 - size: 250975 - timestamp: 1759951774204 + size: 274871 + timestamp: 1765413795196 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyogrio-0.12.1-py313hae45665_0.conda sha256: 36d91e089f7c6fa3466a07e9c2167a64b97837433c09b6f3ba632c978cce22a3 md5: fa543477ad16de26ce5f2fd5bcd249fa @@ -7782,6 +7933,11 @@ packages: - pkg:pypi/pyogrio?source=hash-mapping size: 665424 timestamp: 1764402539337 +- pypi: https://files.pythonhosted.org/packages/91/fb/3380832944eb4552b5873dd8c75095250356edfadf1156bd562da04fc793/pypalettes-0.2.1-py3-none-any.whl + name: pypalettes + version: 0.2.1 + sha256: 5b26fc6e056212e402cf3e6338165ac16e1b19c000f882894d21f2de5bf79af0 + requires_python: '>=3.10' - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.5-pyhcf101f3_0.conda sha256: 6814b61b94e95ffc45ec539a6424d8447895fef75b0fec7e1be31f5beee883fb md5: 6c8979be6d7a17692793114fa26916e8 @@ -7837,10 +7993,10 @@ packages: - pkg:pypi/pysocks?source=hash-mapping size: 21085 timestamp: 1733217331982 -- pypi: https://files.pythonhosted.org/packages/c0/01/eb465e19137b36ba683417e982907aa9c7df1fb0b968e1424e5d678ba0dc/pystac-1.14.1-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/9f/86/3ec01436c6235a23a80e978b261a87481c1acaf626a5c618e9edac30e5e1/pystac-1.14.2-py3-none-any.whl name: pystac - version: 1.14.1 - sha256: 19d73306d8fb94fbd66b7945ee5510e3574c8d48462f86e1e91e3f257b79722b + version: 1.14.2 + sha256: 5d3fbdd0f9f06c45ca67082f91a68c092a925faad02225172686c5a5dc7cce91 requires_dist: - python-dateutil>=2.7.0 - jinja2<4.0 ; extra == 'jinja2' @@ -7857,20 +8013,20 @@ packages: - pystac[validation]>=1.10.0 - python-dateutil>=2.8.2 requires_python: '>=3.10' -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.9-hc97d973_101_cp313.conda - build_number: 101 - sha256: e89da062abd0d3e76c8d3b35d3cafc5f0d05914339dcb238f9e3675f2a58d883 - md5: 4780fe896e961722d0623fa91d0d3378 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.11-hc97d973_100_cp313.conda + build_number: 100 + sha256: 9cf014cf28e93ee242bacfbf664e8b45ae06e50b04291e640abeaeb0cba0364c + md5: 0cbb0010f1d8ecb64a428a8d4214609e depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.7.1,<3.0a0 + - libexpat >=2.7.3,<3.0a0 - libffi >=3.5.2,<3.6.0a0 - libgcc >=14 - liblzma >=5.8.1,<6.0a0 - libmpdec >=4.0.0,<5.0a0 - - libsqlite >=3.50.4,<4.0a0 + - libsqlite >=3.51.1,<4.0a0 - libuuid >=2.41.2,<3.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 @@ -7881,8 +8037,8 @@ packages: - tzdata license: Python-2.0 purls: [] - size: 37174029 - timestamp: 1761178179147 + size: 37226336 + timestamp: 1765021889577 python_site_packages_path: lib/python3.13/site-packages - pypi: https://files.pythonhosted.org/packages/88/ae/baf3a8057d8129896a7e02619df43ea0d918fc5b2bb66eb6e2470595fbac/python_box-7.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl name: python-box @@ -7941,16 +8097,16 @@ packages: - pkg:pypi/fastjsonschema?source=hash-mapping size: 244628 timestamp: 1755304154927 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.9-h4df99d1_101.conda - sha256: 7535b9cb2414e34c73ed4a97a90bcadcc76b9d47d0bb8ef5002c592d85fe022d - md5: f41e3c1125e292e6bfcea8392a3de3d8 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.11-h4df99d1_100.conda + sha256: 4b08d4c2c4b956d306b4868d3faf724eebb5d6e6b170fad2eb0f2d4eb227f1af + md5: d1461b2e63b1909f4f5b41c823bd90ae depends: - - cpython 3.13.9.* + - cpython 3.13.11.* - python_abi * *_cp313 license: Python-2.0 purls: [] - size: 48385 - timestamp: 1761175154112 + size: 48352 + timestamp: 1765019767640 - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca md5: a61bf9ec79426938ff785eb69dbb1960 @@ -7962,17 +8118,17 @@ packages: - pkg:pypi/python-json-logger?source=hash-mapping size: 13383 timestamp: 1677079727691 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - sha256: e8392a8044d56ad017c08fec2b0eb10ae3d1235ac967d0aab8bd7b41c4a5eaf0 - md5: 88476ae6ebd24f39261e0854ac244f33 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.3-pyhd8ed1ab_0.conda + sha256: 467134ef39f0af2dbb57d78cb3e4821f01003488d331a8dd7119334f4f47bfbd + md5: 7ead57407430ba33f681738905278d03 depends: - - python >=3.9 + - python >=3.10 license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/tzdata?source=hash-mapping - size: 144160 - timestamp: 1742745254292 + - pkg:pypi/tzdata?source=compressed-mapping + size: 143542 + timestamp: 1765719982349 - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda build_number: 8 sha256: 210bffe7b121e651419cb196a2a63687b087497595c9be9d20ebe97dd06060a7 @@ -7984,9 +8140,9 @@ packages: purls: [] size: 7002 timestamp: 1752805902938 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pytorch-2.9.1-cuda129_mkl_py313_ha91d441_300.conda - sha256: 3268a34dc6867739dfda86dbfa4dbae0d69c50f21530505812292c55f475b0e2 - md5: 04bc7be2119962e799c5c718980fafbe +- conda: https://conda.anaconda.org/conda-forge/linux-64/pytorch-2.9.1-cuda129_mkl_py313_ha91d441_301.conda + sha256: a810b6a8df88e233d3aec5302ce554cdc929afd567e278ee0f3b4aeab71fdac8 + md5: fabaf9935a0b39b42ed4be155ef1de2f depends: - __cuda - __glibc >=2.17,<3.0.a0 @@ -8017,10 +8173,10 @@ packages: - libmagma >=2.9.0,<2.9.1.0a0 - libprotobuf >=6.31.1,<6.31.2.0a0 - libstdcxx >=14 - - libtorch 2.9.1 cuda129_mkl_hce6efb5_300 + - libtorch 2.9.1 cuda129_mkl_hce6efb5_301 - libuv >=1.51.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - llvm-openmp >=21.1.6 + - llvm-openmp >=21.1.7 - mkl >=2025.3.0,<2026.0a0 - nccl >=2.28.9.1,<3.0a0 - networkx @@ -8036,24 +8192,24 @@ packages: - triton 3.5.1 - typing_extensions >=4.10.0 constrains: - - pytorch-gpu 2.9.1 - pytorch-cpu <0.0a0 + - pytorch-gpu 2.9.1 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/torch?source=hash-mapping - size: 25815390 - timestamp: 1764071643421 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pytorch-gpu-2.9.1-cuda129_mkl_h0d04637_300.conda - sha256: 240bd935df8947cb162da99e747f09a22d972fee1365485eb358913b1458a2fd - md5: 5f21c7b2922f8fd7d1bb0717efa38804 + size: 25769592 + timestamp: 1764981262416 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pytorch-gpu-2.9.1-cuda129_mkl_h0d04637_301.conda + sha256: 3355383d4b7cc3b210a8387839348d86434185454a2f440be2ee344b805908f4 + md5: 9cc563c8a35e1629264bc537df8ecfdd depends: - - pytorch 2.9.1 cuda*_mkl*300 + - pytorch 2.9.1 cuda*_mkl*301 license: BSD-3-Clause license_family: BSD purls: [] - size: 50630 - timestamp: 1764075406397 + size: 50240 + timestamp: 1764982604740 - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda sha256: 8d2a8bf110cc1fc3df6904091dead158ba3e614d8402a83e51ed3a8aa93cdeb0 md5: bc8e3267d44011051f2eb14d22fb0960 @@ -8139,29 +8295,30 @@ packages: purls: [] size: 552937 timestamp: 1720813982144 -- conda: https://conda.anaconda.org/rapidsai/linux-64/raft-dask-25.10.00-cuda12_py313_251008_521611f8.conda +- conda: https://conda.anaconda.org/rapidsai/linux-64/raft-dask-25.12.00-cuda12_py313_251211_d226bc96.conda build_number: 0 - sha256: efaddec5dbea775cf1219e1f672dae76754514b65182059a49537ddd0cf3c09f - md5: a604be4ded506be84b1de4334ff1ec97 + sha256: f20d46c3b4676234b417f8733160640d87fd636c0b2007188b5da31019a5e3a7 + md5: 62adf138c7b57d626b00e9cf18fd9bed depends: - cuda-version >=12,<13.0a0 - - dask-cuda 25.10.* - - distributed-ucxx 0.46.* + - dask-cuda 25.12.* + - distributed-ucxx 0.47.* - nccl >=2.19 - - pylibraft 25.10.0.* + - pylibraft 25.12.0.* - python - - rapids-dask-dependency 25.10.* - - rmm 25.10.* + - rapids-dask-dependency 25.12.* + - rmm 25.12.* - cuda-cudart - cuda-python >=12.9.2,<13.0a0 - python_abi 3.13.* *_cp313 license: Apache-2.0 - size: 214961 - timestamp: 1759951862856 -- conda: https://conda.anaconda.org/rapidsai/linux-64/rapids-25.10.00-cuda12_py310_251008_18a317e3.conda + size: 224700 + timestamp: 1765413885613 +- conda: https://conda.anaconda.org/rapidsai/noarch/rapids-25.12.00-cuda12_251211_be953127.conda build_number: 0 - sha256: 57fe69068a546d4c15914cd2de4ccba4ab7a37ea23acc519e17a121c544fc773 - md5: 645ef04dc3dbf57d95c0096e099e06a8 + noarch: python + sha256: e6cba71845f24899bd02096e09c1e9e028ee1c42b90422274a68c0f7dc0babc0 + md5: c9f74b833180d09e10b06cb947382dd0 depends: - cuda-version >=12,<13.0a0 - cupy >=13.6.0 @@ -8169,69 +8326,73 @@ packages: - numpy >=1.23,<3.0a0 - nvtx >=0.2.1,<0.3 - python - - cudf 25.10.* - - cudf-polars 25.10.* - - cuvs 25.10.* - - cugraph 25.10.* - - nx-cugraph 25.10.* - - cuml 25.10.* - - cucim 25.10.* - - custreamz 25.10.* - - cuxfilter 25.10.* - - dask-cuda 25.10.* - - rapids-xgboost 25.10.* - - rmm 25.10.* - - pylibcugraph 25.10.* - - libcugraph_etl 25.10.* + - cudf 25.12.* + - cudf-polars 25.12.* + - cuvs 25.12.* + - cugraph 25.12.* + - nx-cugraph 25.12.* + - cuml 25.12.* + - cucim 25.12.* + - custreamz 25.12.* + - cuxfilter 25.12.* + - dask-cuda 25.12.* + - rapids-xgboost 25.12.* + - rmm 25.12.* + - pylibcugraph 25.12.* + - libcugraph_etl 25.12.* - conda-forge::ucx >=1.15.0,<1.20.0 + - python license: Apache-2.0 - size: 6691 - timestamp: 1759967014395 -- conda: https://conda.anaconda.org/rapidsai/noarch/rapids-dask-dependency-25.10.00-251008_bcfdc48e.conda + size: 6458 + timestamp: 1765438806901 +- conda: https://conda.anaconda.org/rapidsai/noarch/rapids-dask-dependency-25.12.00-251210_fc4bbcd3.conda + build_number: 0 noarch: python - sha256: f8ec2c642bac6fc7acc7618cf2986b7551eea6abe2f36b6a4a6178a36b23db89 - md5: 1b49473748e41666089120de2078434b + sha256: 31c5596ca4edaf8054447648cdd0555c386f272f1122ed6edb121eda315cd2fc + md5: 00033d6a5671cb84a3fd2128ae626827 depends: - dask ==2025.9.1 - dask-core ==2025.9.1 - distributed ==2025.9.1 license: Apache-2.0 - size: 15283 - timestamp: 1759937828827 -- conda: https://conda.anaconda.org/rapidsai/linux-64/rapids-logger-0.1.1-h98325ef_0.conda - sha256: b590b8e8a89dd4d4c4db49b248f54847a56500f4270861abee9dd5927cef4117 - md5: e22516a87ac1fb1ea6bf0aa6a18e9d30 + size: 15174 + timestamp: 1765399042914 +- conda: https://conda.anaconda.org/rapidsai/linux-64/rapids-logger-0.2.3-h98325ef_0.conda + sha256: 6d0416d415128ce1219fe9d094447b12a612e02e7317006b3dcb3050a0f7f8d9 + md5: 81257f29bfcc1e58f0405d7bc9feb309 depends: - - libstdcxx >=13 - libgcc >=13 - __glibc >=2.17,<3.0.a0 + - libstdcxx >=13 + - libgcc >=13 license: Apache-2.0 - size: 161086 - timestamp: 1744213318966 -- conda: https://conda.anaconda.org/rapidsai/linux-64/rapids-xgboost-25.10.00-cuda12_py310_251008_18a317e3.conda + size: 161775 + timestamp: 1759854063007 +- conda: https://conda.anaconda.org/rapidsai/noarch/rapids-xgboost-25.12.00-cuda12_251211_be953127.conda build_number: 0 - sha256: 71efb69e624755e1da207d5c62e5557ef21f5e1aada5d4852103a0fdaa0a6e54 - md5: 6111b8b6b5db68be107db3212fc4460c + noarch: python + sha256: d43ffde6e5e2cdb9210112bcd555bfa328ed1d9f2161a5ceb472dada76b3ab6d + md5: 475105830ecb105907f6aed23c15bb5b depends: - cuda-version >=12,<13.0a0 - nccl >=2.19,<3.0a0 - python - - libxgboost 3.0.5.* rapidsai_h* - - xgboost 3.0.5.* rapidsai_py* + - libxgboost 3.1.2.* rapidsai_h* + - xgboost 3.1.2.* rapidsai_py* + - python license: LicenseRef-Custom - size: 6352 - timestamp: 1759967011701 -- pypi: https://files.pythonhosted.org/packages/05/19/94d6c66184c7d0f9374330c714f62c147dbb53eda9efdcc8fc6e2ac454c5/rasterio-1.4.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + size: 6143 + timestamp: 1765438804958 +- pypi: https://files.pythonhosted.org/packages/7b/84/66c0d9cca2a09074ec2ce6fffa87709ca51b0d197ae742d835e841bac660/rasterio-1.4.4-cp313-cp313-manylinux_2_28_x86_64.whl name: rasterio - version: 1.4.3 - sha256: d9bab1a0bb22b8bed1db34b5258db93d790ed4e61ef21ac055a7c6933c8d5e84 + version: 1.4.4 + sha256: c072450caa96428b1218b030500bb908fd6f09bc013a88969ff81a124b6a112a requires_dist: - affine - attrs - certifi - - click>=4.0 + - click>=4.0,!=8.2.* - cligj>=0.5 - - importlib-metadata ; python_full_version < '3.10' - numpy>=1.24 - click-plugins - pyparsing @@ -8250,21 +8411,21 @@ packages: - pytest-cov>=2.2.0 ; extra == 'test' - pytest>=2.8.2 ; extra == 'test' - shapely ; extra == 'test' - - ghp-import ; extra == 'all' - - sphinx-click ; extra == 'all' - - matplotlib ; extra == 'all' - - packaging ; extra == 'all' - - sphinx ; extra == 'all' - - numpydoc ; extra == 'all' - - shapely ; extra == 'all' - - ipython>=2.0 ; extra == 'all' - - hypothesis ; extra == 'all' - - pytest>=2.8.2 ; extra == 'all' - - sphinx-rtd-theme ; extra == 'all' - fsspec ; extra == 'all' - - pytest-cov>=2.2.0 ; extra == 'all' + - sphinx-rtd-theme ; extra == 'all' + - ipython>=2.0 ; extra == 'all' + - packaging ; extra == 'all' + - ghp-import ; extra == 'all' - boto3>=1.2.4 ; extra == 'all' - requires_python: '>=3.9' + - matplotlib ; extra == 'all' + - sphinx-click ; extra == 'all' + - sphinx ; extra == 'all' + - pytest>=2.8.2 ; extra == 'all' + - hypothesis ; extra == 'all' + - shapely ; extra == 'all' + - numpydoc ; extra == 'all' + - pytest-cov>=2.2.0 ; extra == 'all' + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/f2/98/7e6d147fd16a10a5f821db6e25f192265d6ecca3d82957a4fdd592cad49c/ratelim-0.1.6-py2.py3-none-any.whl name: ratelim version: 0.1.6 @@ -8309,17 +8470,18 @@ packages: purls: [] size: 27316 timestamp: 1762397780316 -- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c - md5: 283b96675859b20a825f8fa30f311446 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda + sha256: 12ffde5a6f958e285aa22c191ca01bbd3d6e710aa852e00618fa6ddc59149002 + md5: d7d95fc8287ea7bf33e0e7116d2b95ec depends: - - libgcc >=13 + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 - ncurses >=6.5,<7.0a0 license: GPL-3.0-only license_family: GPL purls: [] - size: 282480 - timestamp: 1740379431762 + size: 345073 + timestamp: 1765813471974 - pypi: https://files.pythonhosted.org/packages/34/83/a485250bc09db55e4b4389d99e583fac871ceeaaa4620b67a31d8db95ef5/rechunker-0.5.2-py3-none-any.whl name: rechunker version: 0.5.2 @@ -8459,40 +8621,40 @@ packages: - scipy ; extra == 'interp' - scipy ; extra == 'all' requires_python: '>=3.12' -- conda: https://conda.anaconda.org/rapidsai/linux-64/rmm-25.10.00-cuda12_py313_251008_7aaad1de.conda - sha256: d9f8c94aa6414b53fd087350cab8d424a11e20d2c1378d0762bf8156be731269 - md5: 0deea665c34e0f7e7486313e1276c6ea +- conda: https://conda.anaconda.org/rapidsai/linux-64/rmm-25.12.00-cuda12_py313_251210_86731e05.conda + build_number: 0 + sha256: 2d3255b29749910fe2b1d20771adc7c454b1fbdfa11b6934a3892f0768b0ec66 + md5: 51ed4891929ac46f65b0e18696ab7857 depends: - cuda-cudart - cuda-python >=12.9.2,<13.0a0 - cuda-version >=12,<13.0a0 - numpy >=1.23,<3.0a0 - python - - libgcc >=14 - - __glibc >=2.28,<3.0.a0 - libstdcxx >=14 - libgcc >=14 + - __glibc >=2.28,<3.0.a0 + - librmm >=25.12.0,<25.13.0a0 - python_abi 3.13.* *_cp313 - - librmm >=25.10.0,<25.11.0a0 license: Apache-2.0 - size: 424639 - timestamp: 1759940915055 -- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.29.0-py313h843e2db_0.conda - sha256: 62497cad6c88b43285a03876f3638ba4fbe9b4e34ff40b7dee6bed227bc1476b - md5: 53275b00b1838e2b0c40d5a7c14dcd41 + size: 483967 + timestamp: 1765400412657 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.30.0-py313h843e2db_0.conda + sha256: 076d26e51c62c8ecfca6eb19e3c1febdd7632df1990a7aa53da5df5e54482b1c + md5: 779e3307a0299518713765b83a36f4b1 depends: - python - - __glibc >=2.17,<3.0.a0 - libgcc >=14 + - __glibc >=2.17,<3.0.a0 - python_abi 3.13.* *_cp313 constrains: - __glibc >=2.17 license: MIT license_family: MIT purls: - - pkg:pypi/rpds-py?source=hash-mapping - size: 384617 - timestamp: 1763326800853 + - pkg:pypi/rpds-py?source=compressed-mapping + size: 383230 + timestamp: 1764543223529 - pypi: https://files.pythonhosted.org/packages/64/8d/0133e4eb4beed9e425d9a98ed6e081a55d195481b7632472be1af08d2f6b/rsa-4.9.1-py3-none-any.whl name: rsa version: 4.9.1 @@ -8500,9 +8662,14 @@ packages: requires_dist: - pyasn1>=0.1.3 requires_python: '>=3.6,<4' -- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.6.0-h8399546_1.conda - sha256: f5b294ce9b40d15a4bc31b315364459c0d702dd3e8751fe8735c88ac6a9ddc67 - md5: 8dbc626b1b11e7feb40a14498567b954 +- pypi: https://files.pythonhosted.org/packages/b3/19/9e050c0dca8aba824d67cc0db69fb459c28d8cd3f6855b1405b3f29cc91d/ruff-0.14.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: ruff + version: 0.14.10 + sha256: 59aabd2e2c4fd614d2862e7939c34a532c04f1084476d6833dddef4afab87e9f + requires_python: '>=3.7' +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.6.2-he8a4886_1.conda + sha256: dec76e9faa3173579d34d226dbc91892417a80784911daf8e3f0eb9bad19d7a6 + md5: bade189a194e66b93c03021bd36c337b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -8510,19 +8677,17 @@ packages: license: Apache-2.0 license_family: Apache purls: [] - size: 393615 - timestamp: 1762176592236 -- pypi: https://files.pythonhosted.org/packages/2d/fc/56cba14af8ad8fd020c85b6e44328520ac55939bb1f9d01444ad470504cb/s3fs-2025.10.0-py3-none-any.whl + size: 394197 + timestamp: 1765160261434 +- pypi: https://files.pythonhosted.org/packages/44/8c/04797ebb53748b4d594d4c334b2d9a99f2d2e06e19ad505f1313ca5d56eb/s3fs-2025.12.0-py3-none-any.whl name: s3fs - version: 2025.10.0 - sha256: da7ef25efc1541f5fca8e1116361e49ea1081f83f4e8001fbd77347c625da28a + version: 2025.12.0 + sha256: 89d51e0744256baad7ae5410304a368ca195affd93a07795bc8ba9c00c9effbb requires_dist: - aiobotocore>=2.5.4,<3.0.0 - - fsspec==2025.10.0 + - fsspec==2025.12.0 - aiohttp!=4.0.0a0,!=4.0.0a1 - - aiobotocore[awscli]>=2.5.4,<3.0.0 ; extra == 'awscli' - - aiobotocore[boto3]>=2.5.4,<3.0.0 ; extra == 'boto3' - requires_python: '>=3.9' + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/5f/e1/5ef25f52973aa12a19cf4e1375d00932d7fb354ffd310487ba7d44225c1a/s3transfer-0.15.0-py3-none-any.whl name: s3transfer version: 0.15.0 @@ -8565,27 +8730,27 @@ packages: - pkg:pypi/scikit-image?source=hash-mapping size: 11193722 timestamp: 1731179133185 -- conda: https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.7.2-py313h06d4379_0.conda - sha256: 1867155e8c7d772ece3116a5ff6f970d129ef119a08a221fdd825a89b8be4a93 - md5: f9b838aa75bd584fb85f46686f4f1453 +- conda: https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.8.0-np2py313h16d504d_1.conda + sha256: 5195fa9172a31d9f0b643c608aa90fbef4e98a50dd0d896e7d25f2939123c72c + md5: d43a148434f123b3e060780d84a05ddc depends: + - python + - numpy >=1.24.1 + - scipy >=1.10.0 + - joblib >=1.3.0 + - threadpoolctl >=3.2.0 + - libgcc >=14 - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 - - joblib >=1.2.0 - - libgcc >=14 - libstdcxx >=14 - - numpy >=1.22.0 - - numpy >=1.23,<3 - - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 - - scipy >=1.8.0 - - threadpoolctl >=3.1.0 + - numpy >=1.23,<3 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/scikit-learn?source=hash-mapping - size: 9700599 - timestamp: 1757406447702 + - pkg:pypi/scikit-learn?source=compressed-mapping + size: 9897583 + timestamp: 1765801239271 - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.16.3-py313h11c21cd_1.conda sha256: 901d040d684202b73ea55b10a6994ba7fdc9b332764d50e3c29c3e1f542c9330 md5: 26b089b9e5fcdcdca714b01f8008d808 @@ -8834,21 +8999,21 @@ packages: requires_dist: - pandas>=2.2.3 ; extra == 'export' requires_python: '>=3.11' -- pypi: https://files.pythonhosted.org/packages/39/60/868371b6482ccd9ef423c6f62650066cf8271fdb2ee84f192695ad6b7a96/streamlit-1.51.0-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/c0/95/6b7873f0267973ebd55ba9cd33a690b35a116f2779901ef6185a0e21864d/streamlit-1.52.2-py3-none-any.whl name: streamlit - version: 1.51.0 - sha256: 4008b029f71401ce54946bb09a6a3e36f4f7652cbb48db701224557738cfda38 + version: 1.52.2 + sha256: a16bb4fbc9781e173ce9dfbd8ffb189c174f148f9ca4fb8fa56423e84e193fc8 requires_dist: - - altair>=4.0,!=5.4.0,!=5.4.1,<6 + - altair>=4.0,!=5.4.0,!=5.4.1,<7 - blinker>=1.5.0,<2 - cachetools>=4.0,<7 - click>=7.0,<9 - numpy>=1.23,<3 - - packaging>=20,<26 + - packaging>=20 - pandas>=1.4.0,<3 - pillow>=7.1.0,<13 - protobuf>=3.20,<7 - - pyarrow>=7.0,<22 + - pyarrow>=7.0 - requests>=2.27,<3 - tenacity>=8.1.0,<10 - toml>=0.10.1,<2 @@ -8866,7 +9031,9 @@ packages: - plotly>=4.0.0 ; extra == 'charts' - orjson>=3.5.0 ; extra == 'charts' - sqlalchemy>=2.0.0 ; extra == 'sql' - - streamlit[auth,charts,pdf,snowflake,sql] ; extra == 'all' + - orjson>=3.5.0 ; extra == 'performance' + - uvloop>=0.15.2 ; platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'win32' and extra == 'performance' + - streamlit[auth,charts,pdf,performance,snowflake,sql] ; extra == 'all' - rich>=11.0.0 ; extra == 'all' requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/72/35/d3cdab8cff94971714f866181abb1aa84ad976f6e7b6218a0499197465e4/streamlit_folium-0.25.3-py3-none-any.whl @@ -8972,10 +9139,10 @@ packages: - pkg:pypi/terminado?source=hash-mapping size: 22452 timestamp: 1710262728753 -- pypi: https://files.pythonhosted.org/packages/8c/67/f2dc967db68b984dd71fc0092dc906ddf5d09eea8c22830e02267ce18e19/textual-6.7.0-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/b5/fc/5e2988590ff2e0128eea6446806c904445a44e17256c67141573ea16b5a5/textual-6.11.0-py3-none-any.whl name: textual - version: 6.7.0 - sha256: c5ed36840187c0bdfeb9bd46217d18fe26dca3befcdc695edc848cf24b3133a4 + version: 6.11.0 + sha256: 9e663b73ed37123a9b13c16a0c85e09ef917a4cfded97814361ed5cccfa40f89 requires_dist: - markdown-it-py[linkify]>=2.1.0 - mdit-py-plugins @@ -9011,9 +9178,9 @@ packages: - pkg:pypi/threadpoolctl?source=hash-mapping size: 23869 timestamp: 1741878358548 -- conda: https://conda.anaconda.org/conda-forge/noarch/tifffile-2025.10.16-pyhd8ed1ab_0.conda - sha256: 84d4c49b648971147f93a6c873ce24703fd4047bc57f91f20ff1060ca7feda8f - md5: f5b9f02d19761f79c564900a2a399984 +- conda: https://conda.anaconda.org/conda-forge/noarch/tifffile-2025.12.12-pyhd8ed1ab_0.conda + sha256: d9025640ea69271b5f3f843f60ca9551664c61fb045a86a1fed60f6b39f51ca2 + md5: bedf77b84f797df6f1331b19244a9ca3 depends: - imagecodecs >=2024.12.30 - numpy >=1.19.2 @@ -9024,11 +9191,11 @@ packages: license_family: BSD purls: - pkg:pypi/tifffile?source=hash-mapping - size: 182347 - timestamp: 1760696502467 -- conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.5.0-pyhcf101f3_0.conda - sha256: 9e8b4edf44ff0301c6d969a6ff5cceb340f1411ec65d5a99d0eafab36ecfdc23 - md5: 2caf483992d5d92b232451f843bdc8af + size: 182232 + timestamp: 1765719846531 +- conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.5.1-pyhcf101f3_0.conda + sha256: 7c803480dbfb8b536b9bf6287fa2aa0a4f970f8c09075694174eb4550a4524cd + md5: c0d0b883e97906f7524e2aac94be0e0d depends: - python >=3.10 - webencodings >=0.4 @@ -9037,8 +9204,8 @@ packages: license_family: BSD purls: - pkg:pypi/tinycss2?source=compressed-mapping - size: 30906 - timestamp: 1763577784986 + size: 30571 + timestamp: 1764621508086 - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_ha0e22de_103.conda sha256: 1544760538a40bcd8ace2b1d8ebe3eb5807ac268641f8acdc18c69c5ebfeaf64 md5: 86bc20552bf46075e3d92b67f089172d @@ -9069,9 +9236,9 @@ packages: - pkg:pypi/toolz?source=hash-mapping size: 53978 timestamp: 1760707830681 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.2-py313h07c4f96_2.conda - sha256: 8ef12814ebf787553b351c919d40a599e2331aefec639aef5ce6117cbcfc6a28 - md5: 7824f18e343d1f846dcde7b23c9bf31a +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.3-py313h07c4f96_0.conda + sha256: 6006d4e5a6ff99be052c939e43adee844a38f2dc148f44a7c11aa0011fd3d811 + md5: 82da2dcf1ea3e298f2557b50459809e0 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -9080,9 +9247,9 @@ packages: license: Apache-2.0 license_family: Apache purls: - - pkg:pypi/tornado?source=hash-mapping - size: 871569 - timestamp: 1762506888003 + - pkg:pypi/tornado?source=compressed-mapping + size: 878109 + timestamp: 1765458900582 - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 md5: 9efbfdc37242619130ea42b1cc4ed861 @@ -9115,14 +9282,14 @@ packages: - pandas ; extra == 'test' - xarray ; extra == 'test' - pytest ; extra == 'test' -- conda: https://conda.anaconda.org/conda-forge/linux-64/treelite-4.4.1-py313ha8a5e75_1.conda - sha256: cdb1d7706c210770c34974bee329537f1d987cc0d1272fe89162e569c81e07f3 - md5: a9dbeb0f6595216804be35d30f31f2d9 +- conda: https://conda.anaconda.org/conda-forge/linux-64/treelite-4.6.1-py313h93401c0_0.conda + sha256: 9e2c953a8b58f4d93d8e4388497db0dba45bb3838b2b238669f1a5b2591e692a + md5: ba985132e5cb8c3aec43e279432d11db depends: - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 - - libgcc >=13 - - libstdcxx >=13 + - libgcc >=14 + - libstdcxx >=14 - numpy - packaging - python >=3.13,<3.14.0a0 @@ -9132,8 +9299,8 @@ packages: license_family: Apache purls: - pkg:pypi/treelite?source=hash-mapping - size: 608632 - timestamp: 1732330357758 + size: 637014 + timestamp: 1762990766094 - conda: https://conda.anaconda.org/conda-forge/linux-64/triton-3.5.1-cuda129py313h246eb7c_0.conda sha256: 65c2df246c4aa3609e4cb88317318806578e8249438f54098e12695fbc3fc6d9 md5: 82cbc41815de5c665ddadd85438129c2 @@ -9158,6 +9325,16 @@ packages: - pkg:pypi/triton?source=hash-mapping size: 223243524 timestamp: 1763015352210 +- pypi: https://files.pythonhosted.org/packages/94/fc/1d34ec891900d9337169ff9f8252fcaa633ae5c4d36b67effd849ed4f9ac/ty-0.0.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: ty + version: 0.0.2 + sha256: eb514711eed3f56d7a130d4885f4b5d8e490fdcd2adac098e5cf175573a0dda3 + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/e7/c1/56ef16bf5dcd255155cc736d276efa6ae0a5c26fd685e28f0412a4013c01/types_pytz-2025.2.0.20251108-py3-none-any.whl + name: types-pytz + version: 2025.2.0.20251108 + sha256: 0f1c9792cab4eb0e46c52f8845c8f77cf1e313cb3d68bf826aa867fe4717d91c + requires_python: '>=3.9' - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda sha256: 7c2df5721c742c2a47b2c8f960e718c930031663ac1174da67c1ed5999f7938c md5: edd329d7d3a4ab45dcf905899a7a6115 @@ -9191,13 +9368,13 @@ packages: - pkg:pypi/typing-utils?source=hash-mapping size: 15183 timestamp: 1733331395943 -- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - sha256: 5aaa366385d716557e365f0a4e9c3fca43ba196872abbbe3d56bb610d131e192 - md5: 4222072737ccff51314b5ece9c7d6f5a +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-h8577fbf_0.conda + sha256: 50fad5db6734d1bb73df1cf5db73215e326413d4b2137933f70708aa1840e25b + md5: 338201218b54cadff2e774ac27733990 license: LicenseRef-Public-Domain purls: [] - size: 122968 - timestamp: 1742727099393 + size: 119204 + timestamp: 1765745742795 - conda: https://conda.anaconda.org/conda-forge/noarch/uc-micro-py-1.0.3-pyhd8ed1ab_1.conda sha256: a2f837780af450d633efc052219c31378bcad31356766663fb88a99e8e4c817b md5: 9c96c9876ba45368a03056ddd0f20431 @@ -9209,9 +9386,9 @@ packages: - pkg:pypi/uc-micro-py?source=hash-mapping size: 11199 timestamp: 1733784280160 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ucx-1.19.0-h63b5c0b_5.conda - sha256: ae79787ebd783d955b69454a6283968ffcac129bc4bcb5b1e536c4ac51165bf5 - md5: 0215384753366686883fb3449646e65e +- conda: https://conda.anaconda.org/conda-forge/linux-64/ucx-1.19.1-h63b5c0b_0.conda + sha256: 417b4cca60f83fa6b4a3b39d3e2aeaa55a09ca29b99fea3f39b7e3b22ba2786c + md5: 5f1c35b2ac4f74b8f4c0f60947ac8e52 depends: - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 @@ -9219,17 +9396,17 @@ packages: - libstdcxx >=14 - rdma-core >=60.0 constrains: - - cuda-cudart - cuda-version >=12,<13.0a0 + - cuda-cudart license: BSD-3-Clause license_family: BSD purls: [] - size: 7713805 - timestamp: 1761787212563 -- conda: https://conda.anaconda.org/rapidsai/linux-64/ucxx-0.46.00-cuda12_py313_251008_64355220.conda + size: 7712267 + timestamp: 1765148656024 +- conda: https://conda.anaconda.org/rapidsai/linux-64/ucxx-0.47.00-cuda12_py313_251210_5d6f0af3.conda build_number: 0 - sha256: 64566a083532df0e61a3084698dae1ddd5e6315751f42e611d8902ff1a2fcf23 - md5: 7dbd0d885678e1824ead69c578fd0deb + sha256: 2ccbca022af1e06f254f5593be38fe06c89382fabe902b3750fed537ca08e06c + md5: 007e29611a1cd421b434bdcb761ff328 depends: - numba >=0.60.0,<0.62.0a0 - numba-cuda >=0.19.1,<0.20.0a0 @@ -9238,9 +9415,10 @@ packages: - python 3.13.* - ucx >=1.17.0,<1.20.0 - cuda-version >=12,<13.0a0 - - rmm >=25.10.0,<25.11.0a0 - - libucxx ==0.46.0 cuda12_251008_64355220 + - rmm >=25.12.0,<25.13.0a0 + - libucxx ==0.47.0 cuda12_251210_5d6f0af3 - __glibc >=2.28,<3.0.a0 + - libgcc >=14 - libstdcxx >=14 - libgcc >=14 - __glibc >=2.28,<3.0.a0 @@ -9249,8 +9427,8 @@ packages: constrains: - cupy >=13.6.0 license: BSD-3-Clause - size: 486438 - timestamp: 1759944577626 + size: 508347 + timestamp: 1765407086135 - pypi: https://files.pythonhosted.org/packages/95/20/92e3083b0e854943015bc8a7866e284ead9efadf9bf6809e6fce3b7ded61/ultraplot-1.66.0-py3-none-any.whl name: ultraplot version: 1.66.0 @@ -9287,21 +9465,21 @@ packages: version: 4.2.0 sha256: 962201ba1c4edcab02e60f9a0d3821e82dfc5d2d6662a21abd533879bdb8a686 requires_python: '>=3.9' -- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - sha256: 4fb9789154bd666ca74e428d973df81087a697dbb987775bc3198d2215f240f8 - md5: 436c165519e140cb08d246a4472a9d6a +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.2-pyhd8ed1ab_0.conda + sha256: f4302a80ee9b76279ad061df05003abc2a29cc89751ffab2fd2919b43455dac0 + md5: 4949ca7b83065cfe94ebe320aece8c72 depends: - - brotli-python >=1.0.9 + - backports.zstd >=1.0.0 + - brotli-python >=1.2.0 - h2 >=4,<5 - pysocks >=1.5.6,<2.0,!=1.5.7 - - python >=3.9 - - zstandard >=0.18.0 + - python >=3.10 license: MIT license_family: MIT purls: - - pkg:pypi/urllib3?source=hash-mapping - size: 101735 - timestamp: 1750271478254 + - pkg:pypi/urllib3?source=compressed-mapping + size: 102842 + timestamp: 1765719817255 - pypi: https://files.pythonhosted.org/packages/e6/9f/ca52771fe972e0dcc5167fedb609940e01516066938ff2ee28b273ae4f29/vega_datasets-0.9.0-py3-none-any.whl name: vega-datasets version: 0.9.0 @@ -9387,9 +9565,9 @@ packages: - xarray - imageio requires_python: '>=3.7' -- conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2025.11.0-pyhcf101f3_0.conda - sha256: 9e003931f4a3b6a1ee5740273a736127f2a7146036bf3d4ce6b8c7d332c12fde - md5: e5770e751eb8b23cd86571400e8722be +- conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2025.12.0-pyhcf101f3_0.conda + sha256: b35f6848f229d65dc6e6d58a232099a5e293405a5e3e369b15110ed255cf9872 + md5: efdb3ef0ff549959650ef070ba2c52d2 depends: - python >=3.11 - numpy >=1.26 @@ -9423,8 +9601,8 @@ packages: license_family: APACHE purls: - pkg:pypi/xarray?source=hash-mapping - size: 989507 - timestamp: 1763464377176 + size: 994025 + timestamp: 1764974555156 - pypi: https://files.pythonhosted.org/packages/14/38/d1a8b0c8b7749fde76daa12ec3e63aa052cf37cacc2e9715377ce0197a99/xarray_histogram-0.2.2-py3-none-any.whl name: xarray-histogram version: 0.2.2 @@ -9529,16 +9707,16 @@ packages: - scikit-learn ; extra == 'pyspark' - scikit-learn ; extra == 'scikit-learn' requires_python: '>=3.10' -- conda: https://conda.anaconda.org/rapidsai/noarch/xgboost-3.0.5-rapidsai_pyh13f938f_3.conda - sha256: ac622a8d396ef7f2ebaab953a7d87b089ee13759b6ec6d5491390c2549a1a4ed - md5: 086ee415c0b7dd8156883372b6b0cb93 +- conda: https://conda.anaconda.org/rapidsai/noarch/xgboost-3.1.2-rapidsai_pyh3432f66_1.conda + sha256: 782604a9fd165c04091171fdedf707a258e834122882e6ec9a1f8ecdfbcfe1ce + md5: 25946d6ec61511abe0d14e28ac828c93 depends: - - py-xgboost * rapidsai_pyh*_3 - - py-xgboost >=3.0.5,<3.0.6.0a0 + - py-xgboost * rapidsai_pyh*_1 + - py-xgboost >=3.1.2,<3.1.3.0a0 - python >=3.10 license: Apache-2.0 - size: 16569 - timestamp: 1758756329478 + size: 17266 + timestamp: 1764173814253 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda sha256: 6bc6ab7a90a5d8ac94c7e300cc10beb0500eeba4b99822768ca2f2ef356f731b md5: b2895afaf55bf96a8c8282a2e47a5de0 @@ -9746,43 +9924,25 @@ packages: purls: [] size: 92286 timestamp: 1727963153079 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.1-hde8ca8f_0.conda - sha256: 51194892b30adc20d8bfac8518e82cff811c62cb996527e1caf8c7814786e792 - md5: 49c832bff803d95a56190e7992b4b230 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.2-h54a6638_0.conda + sha256: 0afb07f3511031c35202036e2cd819c90edaa0c6a39a7a865146d3cb066bec96 + md5: 0faadd01896315ceea58bcc3479b1d21 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=14 + - __glibc >=2.17,<3.0.a0 - libstdcxx >=14 license: Zlib - license_family: Other purls: [] - size: 120872 - timestamp: 1764268364314 -- 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 - purls: - - pkg:pypi/zstandard?source=hash-mapping - size: 471496 - timestamp: 1762512679097 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-h3691f8a_4.conda - sha256: 58e0344d81520c8734533fff64a28a5be7edf84618341fc70d3e20bd0a1fdc3e - md5: af7715829219de9043fcc5575e66d22e + size: 135032 + timestamp: 1764715875371 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda + sha256: 68f0206ca6e98fea941e5717cec780ed2873ffabc0e1ed34428c061e2c6268c7 + md5: 4a13eeac0b5c8e5b8ab496e6c4ddd829 depends: - __glibc >=2.17,<3.0.a0 - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 559888 - timestamp: 1764431250718 + size: 601375 + timestamp: 1764777111296 diff --git a/pyproject.toml b/pyproject.toml index c15b7cf..5ec1bff 100755 --- a/pyproject.toml +++ b/pyproject.toml @@ -62,6 +62,10 @@ dependencies = [ "xarray-histogram>=0.2.2,<0.3", "antimeridian>=0.4.5,<0.5", "duckdb>=1.4.2,<2", + "pydeck>=0.9.1,<0.10", + "pypalettes>=0.2.1,<0.3", + "ty>=0.0.2,<0.0.3", + "ruff>=0.14.9,<0.15", "pandas-stubs>=2.3.3.251201,<3", ] [project.scripts] @@ -70,8 +74,7 @@ darts = "entropice.darts:cli" alpha-earth = "entropice.alphaearth:main" era5 = "entropice.era5:cli" arcticdem = "entropice.arcticdem:cli" -train = "entropice.training:main" -dataset = "entropice.dataset:main" +train = "entropice.training:cli" [build-system] requires = ["hatchling"] @@ -126,7 +129,7 @@ entropice = { path = ".", editable = true } dashboard = { cmd = [ "streamlit", "run", - "src/entropice/training_analysis_dashboard.py", + "src/entropice/dashboard/app.py", "--server.port", "8501", "--server.address", diff --git a/src/entropice/aggregators.py b/src/entropice/aggregators.py index e082461..5dccdca 100644 --- a/src/entropice/aggregators.py +++ b/src/entropice/aggregators.py @@ -17,6 +17,7 @@ import geopandas as gpd import matplotlib.pyplot as plt import numpy as np import odc.geo.geobox +import odc.geo.types import pandas as pd import psutil import shapely @@ -186,7 +187,7 @@ def _check_geom(geobox: odc.geo.geobox.GeoBox, geom: odc.geo.Geometry) -> bool: x, y = enclosing.shape if x <= 1 or y <= 1: return False - roi: tuple[slice, slice] = geobox.overlap_roi(enclosing) + roi: odc.geo.types.NormalizedROI = geobox.overlap_roi(enclosing) roix, roiy = roi return (roix.stop - roix.start) > 1 and (roiy.stop - roiy.start) > 1 @@ -216,7 +217,7 @@ def _extract_cell_data(cropped: xr.Dataset | xr.DataArray, aggregations: _Aggreg @stopwatch("Extracting split cell data", log=False) -def _extract_split_cell_data(cropped_list: list[xr.Dataset | xr.DataArray], aggregations: _Aggregations): +def _extract_split_cell_data(cropped_list: list[xr.Dataset] | list[xr.DataArray], aggregations: _Aggregations): spatdims = ( ["latitude", "longitude"] if "latitude" in cropped_list[0].dims and "longitude" in cropped_list[0].dims @@ -370,6 +371,7 @@ def _align_partition( # => There is a shift towards step 2 being the bottleneck for higher resolution grids, thus a simple loop becomes # faster than a processpoolexecutor + assert memprof is not None, "Memory profiler is not initialized in worker" memprof.log_memory("Before reading partial raster", log=False) need_to_close_raster = False @@ -513,6 +515,7 @@ def _align_data( n_partitions = len(grid_gdf) grid_partitions = grid_gdf else: + assert n_partitions is not None, "n_partitions must be provided when grid_gdf is not a list" grid_partitions = partition_grid(grid_gdf, n_partitions) if n_partitions < concurrent_partitions: @@ -539,7 +542,8 @@ def _align_data( # For spawn or forkserver, we need to copy the raster into each worker workerargs = (None if not is_raster_in_memory or not is_mpfork else raster,) # For mp start method fork, we can share the raster dataset between workers - if mp.get_start_method(allow_none=True) == "fork" and is_raster_in_memory: + if is_mpfork and is_raster_in_memory: + assert isinstance(raster, xr.Dataset) # satisfy type checker, but this is already checked above _init_worker(raster) with ProcessPoolExecutor( diff --git a/src/entropice/alphaearth.py b/src/entropice/alphaearth.py index 9a149f6..f45ccf8 100644 --- a/src/entropice/alphaearth.py +++ b/src/entropice/alphaearth.py @@ -72,7 +72,7 @@ def download(grid: Literal["hex", "healpix"], level: int): scale_factor = scale_factors[grid][level] print(f"Using scale factor of {scale_factor} for grid {grid} at level {level}.") - for year in track(range(2018, 2025), total=7, description="Processing years..."): + for year in track(range(2021, 2025), total=4, description="Processing years..."): embedding_collection = ee.ImageCollection("GOOGLE/SATELLITE_EMBEDDING/V1/ANNUAL") embedding_collection = embedding_collection.filterDate(f"{year}-01-01", f"{year}-12-31") aggs = ["mean", "stdDev", "min", "max", "count", "median", "p1", "p5", "p25", "p75", "p95", "p99"] diff --git a/src/entropice/arcticdem.py b/src/entropice/arcticdem.py index 5db1ae4..790ef5f 100644 --- a/src/entropice/arcticdem.py +++ b/src/entropice/arcticdem.py @@ -18,6 +18,7 @@ import smart_geocubes import xarray as xr import xdggs import xrspatial +import xrspatial.convolution import zarr from cupyx.scipy.ndimage import binary_dilation, binary_erosion, distance_transform_edt from rich import pretty, print, traceback @@ -116,7 +117,8 @@ def ruggedness_cupy(chunk, slope, aspect, kernels: _KernelFactory): return vrm -def _get_xy_chunk(chunk: np.array, x: np.array, y: np.array, block_info=None) -> tuple[cp.array, cp.array]: +def _get_xy_chunk(chunk: np.ndarray, x: np.ndarray, y: np.ndarray, block_info=None) -> tuple[cp.ndarray, cp.ndarray]: + assert isinstance(block_info, list) and len(block_info) >= 1 chunk_loc = block_info[0]["chunk-location"] d = 15 cs = 3600 @@ -149,7 +151,7 @@ def _get_xy_chunk(chunk: np.array, x: np.array, y: np.array, block_info=None) -> return xx, yy -def _enrich_chunk(chunk: np.array, x: np.array, y: np.array, block_info=None) -> np.array: +def _enrich_chunk(chunk: np.ndarray, x: np.ndarray, y: np.ndarray, block_info=None) -> np.ndarray: res = 32 # 32m resolution small_kernels = _KernelFactory(res=res, size_px=3) # ~3x3 kernels (96m) medium_kernels = _KernelFactory(res=res, size_px=7) # ~7x7 kernels (224m) diff --git a/src/entropice/darts.py b/src/entropice/darts.py index 74638e7..ebcf304 100644 --- a/src/entropice/darts.py +++ b/src/entropice/darts.py @@ -63,10 +63,15 @@ def extract_darts_rts(grid: Literal["hex", "healpix"], level: int): ) # Apply corrections to NaNs - covered = ~grid_gdf[f"darts_{year}_coverage"].isnull() + covered = ~grid_gdf[f"darts_{year}_coverage"].isna() grid_gdf.loc[covered, f"darts_{year}_rts_count"] = grid_gdf.loc[covered, f"darts_{year}_rts_count"].fillna( 0.0 ) + grid_gdf.loc[covered, f"darts_{year}_rts_density"] = grid_gdf.loc[ + covered, f"darts_{year}_rts_density" + ].fillna(0.0) + grid_gdf[f"darts_{year}_has_coverage"] = covered + grid_gdf[f"darts_{year}_has_rts"] = grid_gdf[f"darts_{year}_rts_count"] > 0 grid_gdf["darts_has_coverage"] = grid_gdf[[f"darts_{year}_coverage" for year in years]].any(axis=1) grid_gdf["darts_has_rts"] = grid_gdf[[f"darts_{year}_rts_count" for year in years]].any(axis=1) @@ -128,9 +133,10 @@ def extract_darts_mllabels(grid: Literal["hex", "healpix"], level: int): # Apply corrections to NaNs covered = ~grid_gdf["dartsml_coverage"].isna() grid_gdf.loc[covered, "dartsml_rts_count"] = grid_gdf.loc[covered, "dartsml_rts_count"].fillna(0.0) + grid_gdf.loc[covered, "dartsml_rts_density"] = grid_gdf.loc[covered, "dartsml_rts_density"].fillna(0.0) - grid_gdf["dartsml_has_coverage"] = ~grid_gdf["dartsml_coverage"].isna() - grid_gdf["dartsml_has_rts"] = ~grid_gdf["dartsml_rts_count"].isna() + grid_gdf["dartsml_has_coverage"] = covered + grid_gdf["dartsml_has_rts"] = grid_gdf["dartsml_rts_count"] > 0 output_path = get_darts_rts_file(grid, level, labels=True) grid_gdf.to_parquet(output_path) diff --git a/src/entropice/dashboard/__init__.py b/src/entropice/dashboard/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/entropice/dashboard/app.py b/src/entropice/dashboard/app.py new file mode 100644 index 0000000..3edb288 --- /dev/null +++ b/src/entropice/dashboard/app.py @@ -0,0 +1,44 @@ +"""Streamlit app for Entropice dashboard. + +Pages: + +- Overview: List of available result directories with some summary statistics. +- Training Data: Visualization of training data distributions. +- Training Results Analysis: Analysis of training results and model performance. +- Model State: Visualization of model state and features. +- Inference: Visualization of inference results. +""" + +import streamlit as st + +from entropice.dashboard.inference_page import render_inference_page +from entropice.dashboard.model_state_page import render_model_state_page +from entropice.dashboard.overview_page import render_overview_page +from entropice.dashboard.training_analysis_page import render_training_analysis_page +from entropice.dashboard.training_data_page import render_training_data_page + + +def main(): + """Run the dashboard.""" + st.set_page_config(page_title="Entropice Dashboard", layout="wide") + + # Setup Navigation + overview_page = st.Page(render_overview_page, title="Overview", icon="🏡", default=True) + training_data_page = st.Page(render_training_data_page, title="Training Data", icon="🎞️") + training_analysis_page = st.Page(render_training_analysis_page, title="Training Results Analysis", icon="🦾") + model_state_page = st.Page(render_model_state_page, title="Model State", icon="🧮") + inference_page = st.Page(render_inference_page, title="Inference", icon="🗺️") + + pg = st.navigation( + { + "Overview": [overview_page], + "Training": [training_data_page, training_analysis_page], + "Model State": [model_state_page], + "Inference": [inference_page], + } + ) + pg.run() + + +if __name__ == "__main__": + main() diff --git a/src/entropice/dashboard/inference_page.py b/src/entropice/dashboard/inference_page.py new file mode 100644 index 0000000..c3123bc --- /dev/null +++ b/src/entropice/dashboard/inference_page.py @@ -0,0 +1,8 @@ +import streamlit as st + + +def render_inference_page(): + """Render the Inference page of the dashboard.""" + st.title("Inference Results") + st.write("This page will display inference results and visualizations.") + # Add more components and visualizations as needed for inference results. diff --git a/src/entropice/dashboard/model_state_page.py b/src/entropice/dashboard/model_state_page.py new file mode 100644 index 0000000..e379d83 --- /dev/null +++ b/src/entropice/dashboard/model_state_page.py @@ -0,0 +1,8 @@ +import streamlit as st + + +def render_model_state_page(): + """Render the Model State page of the dashboard.""" + st.title("Model State") + st.write("This page will display model state and feature visualizations.") + # Add more components and visualizations as needed for model state. diff --git a/src/entropice/dashboard/overview_page.py b/src/entropice/dashboard/overview_page.py new file mode 100644 index 0000000..5ea8754 --- /dev/null +++ b/src/entropice/dashboard/overview_page.py @@ -0,0 +1,155 @@ +"""Overview page: List of available result directories with some summary statistics.""" + +from datetime import datetime + +import pandas as pd +import streamlit as st + +from entropice.dashboard.utils.data import load_all_training_results + + +def render_overview_page(): + """Render the Overview page of the dashboard.""" + st.title("🏡 Training Results Overview") + + training_results = load_all_training_results() + + if not training_results: + st.warning("No training results found. Please run some training experiments first.") + return + + st.write(f"Found **{len(training_results)}** training result(s)") + + # Summary statistics at the top + st.subheader("Summary Statistics") + col1, col2, col3, col4 = st.columns(4) + + with col1: + tasks = {tr.settings.get("task", "Unknown") for tr in training_results} + st.metric("Tasks", len(tasks)) + + with col2: + grids = {tr.settings.get("grid", "Unknown") for tr in training_results} + st.metric("Grid Types", len(grids)) + + with col3: + models = {tr.settings.get("model", "Unknown") for tr in training_results} + st.metric("Model Types", len(models)) + + with col4: + latest = training_results[0] # Already sorted by creation time + latest_date = datetime.fromtimestamp(latest.created_at).strftime("%Y-%m-%d") + st.metric("Latest Run", latest_date) + + st.divider() + + # Detailed results table + st.subheader("Training Results") + + # Build a summary dataframe + summary_data = [] + for tr in training_results: + # Extract best scores from the results dataframe + score_cols = [col for col in tr.results.columns if col.startswith("mean_test_")] + + best_scores = {} + for col in score_cols: + metric_name = col.replace("mean_test_", "") + best_score = tr.results[col].max() + best_scores[metric_name] = best_score + + # Get primary metric (usually the first one or accuracy) + primary_metric = ( + "accuracy" + if "mean_test_accuracy" in tr.results.columns + else score_cols[0].replace("mean_test_", "") + if score_cols + else "N/A" + ) + primary_score = best_scores.get(primary_metric, 0.0) + + summary_data.append( + { + "Date": datetime.fromtimestamp(tr.created_at).strftime("%Y-%m-%d %H:%M"), + "Task": tr.settings.get("task", "Unknown"), + "Grid": tr.settings.get("grid", "Unknown"), + "Level": tr.settings.get("level", "Unknown"), + "Model": tr.settings.get("model", "Unknown"), + f"Best {primary_metric.title()}": f"{primary_score:.4f}", + "Trials": len(tr.results), + "Path": str(tr.path.name), + } + ) + + summary_df = pd.DataFrame(summary_data) + + # Display with color coding for best scores + st.dataframe( + summary_df, + width="stretch", + hide_index=True, + ) + + st.divider() + + # Expandable details for each result + st.subheader("Detailed Results") + + for tr in training_results: + with st.expander(tr.name): + col1, col2 = st.columns([1, 2]) + + with col1: + st.write("**Configuration:**") + st.write(f"- **Task:** {tr.settings.get('task', 'Unknown')}") + st.write(f"- **Grid:** {tr.settings.get('grid', 'Unknown')}") + st.write(f"- **Level:** {tr.settings.get('level', 'Unknown')}") + st.write(f"- **Model:** {tr.settings.get('model', 'Unknown')}") + st.write(f"- **CV Splits:** {tr.settings.get('cv_splits', 'Unknown')}") + st.write(f"- **Classes:** {tr.settings.get('classes', 'Unknown')}") + + st.write("\n**Files:**") + st.write("- 📊 search_results.parquet") + st.write("- 🧮 best_estimator_state.nc") + st.write("- 🎯 predicted_probabilities.parquet") + st.write("- ⚙️ search_settings.toml") + + with col2: + st.write("**Best Scores:**") + + # Extract all test scores + score_cols = [col for col in tr.results.columns if col.startswith("mean_test_")] + + if score_cols: + metric_data = [] + for col in score_cols: + metric_name = col.replace("mean_test_", "").title() + best_score = tr.results[col].max() + mean_score = tr.results[col].mean() + std_score = tr.results[col].std() + + metric_data.append( + { + "Metric": metric_name, + "Best": f"{best_score:.4f}", + "Mean": f"{mean_score:.4f}", + "Std": f"{std_score:.4f}", + } + ) + + metric_df = pd.DataFrame(metric_data) + st.dataframe(metric_df, width="stretch", hide_index=True) + else: + st.write("No test scores found in results.") + + # Show parameter space explored + if "initial_K" in tr.results.columns: # Common parameter + st.write("\n**Parameter Ranges Explored:**") + for param in ["initial_K", "eps_cl", "eps_e"]: + if param in tr.results.columns: + min_val = tr.results[param].min() + max_val = tr.results[param].max() + unique_vals = tr.results[param].nunique() + st.write(f"- **{param}:** {unique_vals} values ({min_val:.2e} to {max_val:.2e})") + + st.write(f"\n**Path:** `{tr.path}`") diff --git a/src/entropice/dashboard/plots/colors.py b/src/entropice/dashboard/plots/colors.py new file mode 100644 index 0000000..006aca5 --- /dev/null +++ b/src/entropice/dashboard/plots/colors.py @@ -0,0 +1,92 @@ +"""Color related utilities for dashboard plots. + +Color palettes from https://python-graph-gallery.com/color-palette-finder/ + +Material palettes: +- amber_material +- blue_grey_material +- blue_material +- brown_material +- cyan_material +- deep_orange_material +- deep_purple_material +- green_material +- grey_material +- indigo_material +- light_blue_material +- light_green_material +- lime_material +- orange_material +- pink_material +- purple_material +- red_material +- teal_material +- yellow_material +""" + +import matplotlib.colors as mcolors +from pypalettes import load_cmap + + +def get_cmap(variable: str) -> mcolors.Colormap: + """Get a color palette by a "data" variable. + + Each variable (meaning of the data) should be associated with another color palette when plotting. + This function should help to standardize the color palettes used for each variable type. + + The variable can be any string, descriptive names are recommended. + + Args: + variable: The variable to load a palette for. + + Returns: + A list of hex color strings. + + """ + material_palettes = [ + "amber_material", + "blue_grey_material", + "blue_material", + "brown_material", + "cyan_material", + "deep_orange_material", + "deep_purple_material", + "green_material", + "grey_material", + "indigo_material", + "light_blue_material", + "light_green_material", + "lime_material", + "orange_material", + "pink_material", + "purple_material", + "red_material", + "teal_material", + "yellow_material", + ] + # Fuzzy map from variable type to palette name + material_idx = sum(ord(c) for c in variable) % len(material_palettes) + palette_name = material_palettes[material_idx] + cmap = load_cmap(name=palette_name) + return cmap + + +def get_palette(variable: str, n_colors: int) -> list[str]: + """Get a color palette by a "data" variable. + + Each variable (meaning of the data) should be associated with another color palette when plotting. + This function should help to standardize the color palettes used for each variable type. + + The variable can be any string, descriptive names are recommended. + + Args: + variable: The variable to load a palette for. + n_colors: The number of colors to return. + + Returns: + A list of hex color strings. + + """ + cmap = get_cmap(variable).resampled(n_colors) + colors = [mcolors.to_hex(cmap(i)) for i in range(cmap.N)] + return colors diff --git a/src/entropice/dashboard/plots/training_data.py b/src/entropice/dashboard/plots/training_data.py new file mode 100644 index 0000000..eb0639e --- /dev/null +++ b/src/entropice/dashboard/plots/training_data.py @@ -0,0 +1,356 @@ +"""Plotting functions for training data visualizations.""" + +import geopandas as gpd +import pandas as pd +import plotly.graph_objects as go +import pydeck as pdk +import streamlit as st +from shapely.geometry import shape + +from entropice.dashboard.plots.colors import get_palette +from entropice.dataset import CategoricalTrainingDataset + + +def render_all_distribution_histograms(train_data_dict: dict[str, CategoricalTrainingDataset]): + """Render histograms for all three tasks side by side. + + Args: + train_data_dict: Dictionary with keys 'binary', 'count', 'density' and CategoricalTrainingDataset values. + + """ + st.subheader("📊 Target Distribution by Task") + + # Create a 3-column layout for the three tasks + cols = st.columns(3) + + tasks = ["binary", "count", "density"] + task_titles = { + "binary": "Binary Classification", + "count": "Count Classification", + "density": "Density Classification", + } + + for idx, task in enumerate(tasks): + dataset = train_data_dict[task] + categories = dataset.y.binned.cat.categories.tolist() + colors = get_palette(task, len(categories)) + + with cols[idx]: + st.markdown(f"**{task_titles[task]}**") + + # Create histogram data + counts_df = pd.DataFrame( + { + "Category": categories, + "Train": [((dataset.y.binned == cat) & (dataset.split == "train")).sum() for cat in categories], + "Test": [((dataset.y.binned == cat) & (dataset.split == "test")).sum() for cat in categories], + } + ) + + # Create stacked bar chart + fig = go.Figure() + + fig.add_trace( + go.Bar( + name="Train", + x=counts_df["Category"], + y=counts_df["Train"], + marker_color=colors, + opacity=0.9, + text=counts_df["Train"], + textposition="inside", + textfont={"size": 10, "color": "white"}, + ) + ) + + fig.add_trace( + go.Bar( + name="Test", + x=counts_df["Category"], + y=counts_df["Test"], + marker_color=colors, + opacity=0.6, + text=counts_df["Test"], + textposition="inside", + textfont={"size": 10, "color": "white"}, + ) + ) + + fig.update_layout( + barmode="group", + height=400, + margin={"l": 20, "r": 20, "t": 20, "b": 20}, + showlegend=True, + legend={"orientation": "h", "yanchor": "bottom", "y": 1.02, "xanchor": "right", "x": 1}, + xaxis_title=None, + yaxis_title="Count", + xaxis={"tickangle": -45}, + ) + + st.plotly_chart(fig, width="stretch") + + # Show summary statistics + total = len(dataset) + train_pct = (dataset.split == "train").sum() / total * 100 + test_pct = (dataset.split == "test").sum() / total * 100 + + st.caption(f"Total: {total:,} | Train: {train_pct:.1f}% | Test: {test_pct:.1f}%") + + +def _fix_hex_geometry(geom): + """Fix hexagon geometry crossing the antimeridian.""" + import antimeridian + + try: + return shape(antimeridian.fix_shape(geom)) + except ValueError as e: + st.error(f"Error fixing geometry: {e}") + return geom + + +def _assign_colors_by_mode(gdf, color_mode, dataset, selected_task): + """Assign colors to geodataframe based on the selected color mode. + + Args: + gdf: GeoDataFrame to add colors to + color_mode: One of 'target_class' or 'split' + dataset: CategoricalTrainingDataset + selected_task: Task name for color palette selection + + Returns: + GeoDataFrame with 'fill_color' column added + + """ + if color_mode == "target_class": + categories = dataset.y.binned.cat.categories.tolist() + colors_palette = get_palette(selected_task, len(categories)) + + # Create color mapping + color_map = {cat: colors_palette[i] for i, cat in enumerate(categories)} + gdf["color"] = gdf["target_class"].map(color_map) + + # Convert hex colors to RGB + def hex_to_rgb(hex_color): + hex_color = hex_color.lstrip("#") + return [int(hex_color[i : i + 2], 16) for i in (0, 2, 4)] + + gdf["fill_color"] = gdf["color"].apply(hex_to_rgb) + + elif color_mode == "split": + split_colors = {"train": [66, 135, 245], "test": [245, 135, 66]} # Blue # Orange + gdf["fill_color"] = gdf["split"].map(split_colors) + + return gdf + + +@st.fragment +def render_spatial_map(train_data_dict: dict[str, CategoricalTrainingDataset]): + """Render a pydeck spatial map showing training data distribution with interactive controls. + + This is a Streamlit fragment that reruns independently when users interact with the + visualization controls (color mode and opacity), without re-running the entire page. + + Args: + train_data_dict: Dictionary with keys 'binary', 'count', 'density' and CategoricalTrainingDataset values. + + """ + st.subheader("🗺️ Spatial Distribution Map") + + # Create controls in columns + col1, col2 = st.columns([3, 1]) + + with col1: + vis_mode = st.selectbox( + "Visualization mode", + options=["binary", "count", "density", "split"], + format_func=lambda x: x.capitalize() if x != "split" else "Train/Test Split", + key="spatial_map_mode", + ) + + with col2: + opacity = st.slider("Opacity", min_value=0.1, max_value=1.0, value=0.7, step=0.1, key="spatial_map_opacity") + + # Determine which task dataset to use and color mode + if vis_mode == "split": + # Use binary dataset for split visualization + dataset = train_data_dict["binary"] + color_mode = "split" + selected_task = "binary" + else: + # Use the selected task + dataset = train_data_dict[vis_mode] + color_mode = "target_class" + selected_task = vis_mode + + # Prepare data for visualization - dataset.dataset should already be a GeoDataFrame + gdf: gpd.GeoDataFrame = dataset.dataset.copy() # type: ignore[assignment] + + # Fix antimeridian issues + gdf["geometry"] = gdf["geometry"].apply(_fix_hex_geometry) + + # Add binned labels and split information from current dataset + gdf["target_class"] = dataset.y.binned.to_numpy() + gdf["split"] = dataset.split.to_numpy() + gdf["raw_value"] = dataset.z.to_numpy() + + # Add information from all three tasks for tooltip + gdf["binary_label"] = train_data_dict["binary"].y.binned.to_numpy() + gdf["count_category"] = train_data_dict["count"].y.binned.to_numpy() + gdf["count_raw"] = train_data_dict["count"].z.to_numpy() + gdf["density_category"] = train_data_dict["density"].y.binned.to_numpy() + gdf["density_raw"] = train_data_dict["density"].z.to_numpy() + + # Convert to WGS84 for pydeck + gdf_wgs84: gpd.GeoDataFrame = gdf.to_crs("EPSG:4326") # type: ignore[assignment] + + # Assign colors based on the selected mode + gdf_wgs84 = _assign_colors_by_mode(gdf_wgs84, color_mode, dataset, selected_task) + + # Convert to GeoJSON format and add elevation for 3D visualization + geojson_data = [] + # Normalize raw values for elevation (only for count and density) + use_elevation = vis_mode in ["count", "density"] + if use_elevation: + raw_values = gdf_wgs84["raw_value"] + min_val, max_val = raw_values.min(), raw_values.max() + # Normalize to 0-1 range for better 3D visualization + if max_val > min_val: + gdf_wgs84["elevation"] = ((raw_values - min_val) / (max_val - min_val)).fillna(0) + else: + gdf_wgs84["elevation"] = 0 + + for _, row in gdf_wgs84.iterrows(): + feature = { + "type": "Feature", + "geometry": row["geometry"].__geo_interface__, + "properties": { + "target_class": str(row["target_class"]), + "split": str(row["split"]), + "raw_value": float(row["raw_value"]), + "fill_color": row["fill_color"], + "elevation": float(row["elevation"]) if use_elevation else 0, + "binary_label": str(row["binary_label"]), + "count_category": str(row["count_category"]), + "count_raw": int(row["count_raw"]), + "density_category": str(row["density_category"]), + "density_raw": f"{float(row['density_raw']):.4f}", + }, + } + geojson_data.append(feature) + + # Create pydeck layer + layer = pdk.Layer( + "GeoJsonLayer", + geojson_data, + opacity=opacity, + stroked=True, + filled=True, + extruded=use_elevation, + wireframe=False, + get_fill_color="properties.fill_color", + get_line_color=[80, 80, 80], + line_width_min_pixels=0.5, + get_elevation="properties.elevation" if use_elevation else 0, + elevation_scale=500000, # Scale normalized values (0-1) to 500km height + pickable=True, + ) + + # Set initial view state (centered on the Arctic) + # Adjust pitch and zoom based on whether we're using elevation + view_state = pdk.ViewState( + latitude=70, longitude=0, zoom=2 if not use_elevation else 1.5, pitch=0 if not use_elevation else 45 + ) + + # Create deck + deck = pdk.Deck( + layers=[layer], + initial_view_state=view_state, + tooltip={ + "html": "Binary: {binary_label}
" + "Count Category: {count_category}
" + "Count Raw: {count_raw}
" + "Density Category: {density_category}
" + "Density Raw: {density_raw}
" + "Split: {split}", + "style": {"backgroundColor": "steelblue", "color": "white"}, + }, + map_style="https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json", + ) + + # Render the map + st.pydeck_chart(deck) + + # Show info about 3D visualization + if use_elevation: + st.info("💡 3D elevation represents raw values. Rotate the map by holding Ctrl/Cmd and dragging.") + + # Add legend + with st.expander("Legend", expanded=True): + if color_mode == "target_class": + st.markdown("**Target Classes:**") + categories = dataset.y.binned.cat.categories.tolist() + colors_palette = get_palette(selected_task, len(categories)) + intervals = dataset.y.intervals + + # For count and density tasks, show intervals + if selected_task in ["count", "density"]: + for i, cat in enumerate(categories): + color = colors_palette[i] + interval_min, interval_max = intervals[i] + + # Format interval display + if interval_min is None or interval_max is None: + interval_str = "" + elif selected_task == "count": + # Integer values for count + if interval_min == interval_max: + interval_str = f" ({int(interval_min)})" + else: + interval_str = f" ({int(interval_min)}-{int(interval_max)})" + else: # density + # Percentage values for density + if interval_min == interval_max: + interval_str = f" ({interval_min * 100:.4f}%)" + else: + interval_str = f" ({interval_min * 100:.4f}%-{interval_max * 100:.4f}%)" + + st.markdown( + f'
' + f'
' + f"{cat}{interval_str}
", + unsafe_allow_html=True, + ) + else: + # Binary task: use original column layout + legend_cols = st.columns(len(categories)) + for i, cat in enumerate(categories): + with legend_cols[i]: + color = colors_palette[i] + st.markdown( + f'
' + f'
' + f"{cat}
", + unsafe_allow_html=True, + ) + if use_elevation: + st.markdown("---") + st.markdown("**Elevation (3D):**") + min_val = gdf_wgs84["raw_value"].min() + max_val = gdf_wgs84["raw_value"].max() + st.markdown(f"Height represents raw value: {min_val:.2f} (low) → {max_val:.2f} (high)") + elif color_mode == "split": + st.markdown("**Data Split:**") + legend_html = ( + '
' + '
' + '
' + "Train
" + '
' + '
' + "Test
" + ) + st.markdown(legend_html, unsafe_allow_html=True) diff --git a/src/entropice/dashboard/training_analysis_page.py b/src/entropice/dashboard/training_analysis_page.py new file mode 100644 index 0000000..a5e0957 --- /dev/null +++ b/src/entropice/dashboard/training_analysis_page.py @@ -0,0 +1,10 @@ +"""Training Results Analysis page: Analysis of training results and model performance.""" + +import streamlit as st + + +def render_training_analysis_page(): + """Render the Training Results Analysis page of the dashboard.""" + st.title("Training Results Analysis") + st.write("This page will display analysis of training results and model performance.") + # Add more components and visualizations as needed for training results analysis. diff --git a/src/entropice/dashboard/training_data_page.py b/src/entropice/dashboard/training_data_page.py new file mode 100644 index 0000000..d4b13e8 --- /dev/null +++ b/src/entropice/dashboard/training_data_page.py @@ -0,0 +1,136 @@ +"""Training Data page: Visualization of training data distributions.""" + +import streamlit as st + +from entropice.dashboard.plots.training_data import render_all_distribution_histograms, render_spatial_map +from entropice.dashboard.utils.data import load_all_training_data +from entropice.dataset import DatasetEnsemble + + +def render_training_data_page(): + """Render the Training Data page of the dashboard.""" + st.title("Training Data") + + # Sidebar widgets for dataset configuration in a form + with st.sidebar.form("dataset_config_form"): + st.header("Dataset Configuration") + + # Combined grid and level selection + grid_options = [ + "hex-3", + "hex-4", + "hex-5", + "hex-6", + "healpix-6", + "healpix-7", + "healpix-8", + "healpix-9", + "healpix-10", + ] + + grid_level_combined = st.selectbox( + "Grid Configuration", options=grid_options, index=0, help="Select the grid system and resolution level" + ) + + # Parse grid type and level + grid, level_str = grid_level_combined.split("-") + level = int(level_str) + + # Target feature selection + target = st.selectbox( + "Target Feature", + options=["darts_rts", "darts_mllabels"], + index=0, + help="Select the target variable for training", + ) + + # Members selection + st.subheader("Dataset Members") + + # Check if AlphaEarth should be disabled + disable_alphaearth = (grid == "healpix" and level == 10) or (grid == "hex" and level == 6) + + all_members = ["AlphaEarth", "ArcticDEM", "ERA5-yearly", "ERA5-seasonal", "ERA5-shoulder"] + selected_members = [] + + for member in all_members: + if member == "AlphaEarth" and disable_alphaearth: + # Show disabled checkbox with explanation + st.checkbox( + member, value=False, disabled=True, help=f"AlphaEarth is not available for {grid} level {level}" + ) + else: + if st.checkbox(member, value=True, help=f"Include {member} in the dataset"): + selected_members.append(member) + + # Form submit button + load_button = st.form_submit_button( + "Load Dataset", type="primary", use_container_width=True, disabled=len(selected_members) == 0 + ) + + # Create DatasetEnsemble only when form is submitted + if load_button: + ensemble = DatasetEnsemble(grid=grid, level=level, target=target, members=selected_members) + # Store ensemble in session state + st.session_state["dataset_ensemble"] = ensemble + st.session_state["dataset_loaded"] = True + + # Display dataset information if loaded + if st.session_state.get("dataset_loaded", False) and "dataset_ensemble" in st.session_state: + ensemble = st.session_state["dataset_ensemble"] + + # Display current configuration + st.subheader("📊 Current Configuration") + + # Create a visually appealing layout with columns + col1, col2, col3, col4 = st.columns(4) + + with col1: + st.metric(label="Grid Type", value=ensemble.grid.upper()) + + with col2: + st.metric(label="Grid Level", value=ensemble.level) + + with col3: + st.metric(label="Target Feature", value=ensemble.target.replace("darts_", "")) + + with col4: + st.metric(label="Members", value=len(ensemble.members)) + + # Display members in an expandable section + with st.expander("🗂️ Dataset Members", expanded=False): + members_cols = st.columns(len(ensemble.members)) + for idx, member in enumerate(ensemble.members): + with members_cols[idx]: + st.markdown(f"✓ **{member}**") + + # Display dataset ID in a styled container + st.info(f"**Dataset ID:** `{ensemble.id()}`") + + # Load training data for all three tasks + train_data_dict = load_all_training_data(ensemble) + + # Calculate total samples (use binary as reference) + total_samples = len(train_data_dict["binary"]) + train_samples = (train_data_dict["binary"].split == "train").sum().item() + test_samples = (train_data_dict["binary"].split == "test").sum().item() + + st.success(f"Loaded {total_samples} samples ({train_samples} train, {test_samples} test) for all three tasks") + + # Render distribution histograms + st.markdown("---") + render_all_distribution_histograms(train_data_dict) + + st.markdown("---") + + # Render spatial map (as a fragment for efficient re-rendering) + # Extract geometries from the X.data dataframe (which has geometry as a column) + # The index should be cell_id + binary_dataset = train_data_dict["binary"] + assert "geometry" in binary_dataset.dataset.columns, "Geometry column missing in dataset" + + render_spatial_map(train_data_dict) + + # Add more components and visualizations as needed for training data. + else: + st.info("Configure the dataset settings in the sidebar and click 'Load Dataset' to begin.") diff --git a/src/entropice/dashboard/utils/data.py b/src/entropice/dashboard/utils/data.py new file mode 100644 index 0000000..ac0824e --- /dev/null +++ b/src/entropice/dashboard/utils/data.py @@ -0,0 +1,101 @@ +"""Data utilities for Entropice dashboard.""" + +from dataclasses import dataclass +from datetime import datetime +from pathlib import Path + +import antimeridian +import pandas as pd +import streamlit as st +import toml +from shapely.geometry import shape + +import entropice.paths +from entropice.dataset import CategoricalTrainingDataset, DatasetEnsemble + + +@dataclass +class TrainingResult: + """Simple wrapper of training result data.""" + + name: str + path: Path + settings: dict + results: pd.DataFrame + created_at: float + + @classmethod + def from_path(cls, result_path: Path) -> "TrainingResult": + """Load a TrainingResult from a given result directory path.""" + result_file = result_path / "search_results.parquet" + state_file = result_path / "best_estimator_state.nc" + preds_file = result_path / "predicted_probabilities.parquet" + settings_file = result_path / "search_settings.toml" + if not all([result_file.exists(), state_file.exists(), preds_file.exists(), settings_file.exists()]): + raise FileNotFoundError(f"Missing required files in {result_path}") + + created_at = result_path.stat().st_ctime + settings = toml.load(settings_file)["settings"] + results = pd.read_parquet(result_file) + + # Name should be "task grid-level (created_at)" + name = ( + f"**{settings.get('task', 'Unknown').capitalize()}** -" + f" {settings.get('grid', 'Unknown').capitalize()}-{settings.get('level', 'Unknown')}" + f" ({datetime.fromtimestamp(created_at).strftime('%Y-%m-%d %H:%M')})" + ) + + return cls( + name=name, + path=result_path, + settings=settings, + results=results, + created_at=created_at, + ) + + +def _fix_hex_geometry(geom): + """Fix hexagon geometry crossing the antimeridian.""" + try: + return shape(antimeridian.fix_shape(geom)) + except ValueError as e: + st.error(f"Error fixing geometry: {e}") + return geom + + +@st.cache_data +def load_all_training_results() -> list[TrainingResult]: + """Load all training results from the results directory.""" + results_dir = entropice.paths.RESULTS_DIR + training_results: list[TrainingResult] = [] + for result_path in results_dir.iterdir(): + if not result_path.is_dir(): + continue + + try: + training_result = TrainingResult.from_path(result_path) + training_results.append(training_result) + except FileNotFoundError: + continue + + # Sort by creation time (most recent first) + training_results.sort(key=lambda tr: tr.created_at, reverse=True) + return training_results + + +@st.cache_data +def load_all_training_data(e: DatasetEnsemble) -> dict[str, CategoricalTrainingDataset]: + """Load training data for all three tasks. + + Args: + e: DatasetEnsemble object. + + Returns: + Dictionary with keys 'binary', 'count', 'density' and CategoricalTrainingDataset values. + + """ + return { + "binary": e.create_cat_training_dataset("binary"), + "count": e.create_cat_training_dataset("count"), + "density": e.create_cat_training_dataset("density"), + } diff --git a/src/entropice/dataset.py b/src/entropice/dataset.py index ef54dc7..e9d33db 100644 --- a/src/entropice/dataset.py +++ b/src/entropice/dataset.py @@ -1,3 +1,4 @@ +# ruff: noqa: N806 """Training dataset preparation and model training. Naming conventions: @@ -14,15 +15,18 @@ Naming conventions: import hashlib import json from dataclasses import asdict, dataclass, field +from functools import cached_property, lru_cache from typing import Literal import cyclopts import geopandas as gpd import pandas as pd import seaborn as sns +import torch import xarray as xr from rich import pretty, traceback from sklearn import set_config +from sklearn.model_selection import train_test_split import entropice.paths @@ -35,29 +39,111 @@ sns.set_theme("talk", "whitegrid") def _get_era5_tempus(df: pd.DataFrame, temporal: Literal["yearly", "seasonal", "shoulder"]): + time_index = pd.DatetimeIndex(df.index.get_level_values("time")) if temporal == "yearly": - return df.index.get_level_values("time").year + return time_index.year elif temporal == "seasonal": seasons = {10: "winter", 4: "summer"} - return ( - df.index.get_level_values("time") - .month.map(lambda x: seasons.get(x)) - .str.cat(df.index.get_level_values("time").year.astype(str), sep="_") - ) + return time_index.month.map(lambda x: seasons.get(x)).str.cat(time_index.year.astype(str), sep="_") elif temporal == "shoulder": shoulder_seasons = {10: "OND", 1: "JFM", 4: "AMJ", 7: "JAS"} - return ( - df.index.get_level_values("time") - .month.map(lambda x: shoulder_seasons.get(x)) - .str.cat(df.index.get_level_values("time").year.astype(str), sep="_") - ) + return time_index.month.map(lambda x: shoulder_seasons.get(x)).str.cat(time_index.year.astype(str), sep="_") type L2Dataset = Literal["AlphaEarth", "ArcticDEM", "ERA5-yearly", "ERA5-seasonal", "ERA5-shoulder"] +type Task = Literal["binary", "count", "density"] + + +def bin_values( + values: pd.Series, + task: Literal["count", "density"], + none_val: float = 0, +) -> pd.Series: + """Bin values into predefined intervals for different tasks. + + First, a 'none' bin is created for values equal to `none_val` usually 0. + Then, the remaining values are binned automatically into 5 bins, all containing roughly the same number of samples. + + Args: + values (pd.Series): Pandas Series of numerical values to bin. + task (Literal["count", "density"]): Task type - 'count' or 'density'. + none_val (float, optional): Value representing 'none' or 'empty' (e.g., 0 for count). Defaults to 0. + + Returns: + pd.Series: Pandas Series of ordered categorical binned values. + + Raises: + ValueError: If an value is NaN. + + """ + labels_dict = { + "count": ["None", "Very Few", "Few", "Several", "Many", "Very Many"], + "density": ["Empty", "Very Sparse", "Sparse", "Moderate", "Dense", "Very Dense"], + } + labels = labels_dict[task] + + if values.isna().any(): + raise ValueError("Values contain NaN") + + # Separate none values from others + none_mask = values == none_val + non_none_values = values[~none_mask] + + assert len(non_none_values) > 5, "Not enough non-none values to create bins." + binned_non_none = pd.qcut(non_none_values, q=5, labels=labels[1:]).cat.set_categories(labels, ordered=True) + binned = pd.Series(index=values.index, dtype="category") + binned = binned.cat.set_categories(labels, ordered=True) + binned.update(binned_non_none) + binned.loc[none_mask] = labels[0] + return binned + + +@dataclass(frozen=True, eq=False) +class DatasetLabels: + binned: pd.Series + train: torch.Tensor + test: torch.Tensor + raw_values: pd.Series + + @cached_property + def intervals(self) -> list[tuple[float, float] | tuple[int, int]]: + # For each category get the min and max values from raw_values + intervals = [] + for category in self.binned.cat.categories: + category_mask = self.binned == category + if category_mask.sum() == 0: + intervals.append((None, None)) + else: + category_raw_values = self.raw_values[category_mask] + intervals.append((category_raw_values.min(), category_raw_values.max())) + return intervals + + @cached_property + def labels(self) -> list[str]: + return list(self.binned.cat.categories) + + +@dataclass(frozen=True, eq=False) +class DatasetInputs: + data: pd.DataFrame + train: torch.Tensor + test: torch.Tensor + + +@dataclass(frozen=True) +class CategoricalTrainingDataset: + dataset: pd.DataFrame + X: DatasetInputs + y: DatasetLabels + z: pd.Series + split: pd.Series + + def __len__(self): + return len(self.z) @cyclopts.Parameter("*") -@dataclass +@dataclass(frozen=True) class DatasetEnsemble: grid: Literal["hex", "healpix"] level: int @@ -70,17 +156,35 @@ class DatasetEnsemble: filter_target: str | Literal[False] = False add_lonlat: bool = True + def __hash__(self): + return int(self.id(), 16) + def id(self): return hashlib.blake2b( json.dumps(asdict(self), sort_keys=True).encode("utf-8"), digest_size=16, ).hexdigest() + @property + def covcol(self) -> str: + return "dartsml_has_coverage" if self.target == "darts_mllabels" else "darts_has_coverage" + + def taskcol(self, task: Task) -> str: + if task == "binary": + return "dartsml_has_rts" if self.target == "darts_mllabels" else "darts_has_rts" + elif task == "count": + return "dartsml_rts_count" if self.target == "darts_mllabels" else "darts_rts_count" + elif task == "density": + return "dartsml_rts_density" if self.target == "darts_mllabels" else "darts_rts_density" + else: + raise ValueError(f"Invalid task: {task}") + def _read_member(self, member: L2Dataset, targets: gpd.GeoDataFrame, lazy: bool = False) -> xr.Dataset: if member == "AlphaEarth": store = entropice.paths.get_embeddings_store(grid=self.grid, level=self.level) elif member in ["ERA5-yearly", "ERA5-seasonal", "ERA5-shoulder"]: - store = entropice.paths.get_era5_stores(member.split("-")[1], grid=self.grid, level=self.level) + era5_agg: Literal["yearly", "seasonal", "shoulder"] = member.split("-")[1] # ty:ignore[invalid-assignment] + store = entropice.paths.get_era5_stores(era5_agg, grid=self.grid, level=self.level) elif member == "ArcticDEM": store = entropice.paths.get_arcticdem_stores(grid=self.grid, level=self.level) else: @@ -145,7 +249,7 @@ class DatasetEnsemble: def _prep_era5( self, targets: gpd.GeoDataFrame, temporal: Literal["yearly", "seasonal", "shoulder"] ) -> pd.DataFrame: - era5 = self._read_member(f"ERA5-{temporal}", targets) + era5 = self._read_member("ERA5-" + temporal, targets) era5_df = era5.to_dataframe() era5_df["t"] = _get_era5_tempus(era5_df, temporal) if "aggregations" not in era5.dims: @@ -190,9 +294,10 @@ class DatasetEnsemble: n_cols += n_cols_member print(f"=== Total number of features in dataset: {n_cols}") - def create(self, cache_mode: Literal["n", "o", "r"] = "r") -> pd.DataFrame: + @lru_cache(maxsize=1) + def create(self, filter_target_col: str | None = None, cache_mode: Literal["n", "o", "r"] = "r") -> pd.DataFrame: # n: no cache, o: overwrite cache, r: read cache if exists - cache_file = entropice.paths.get_dataset_cache(self.id()) + cache_file = entropice.paths.get_dataset_cache(self.id(), subset=filter_target_col) if cache_mode == "r" and cache_file.exists(): dataset = gpd.read_parquet(cache_file) print( @@ -201,11 +306,14 @@ class DatasetEnsemble: ) return dataset targets = self._read_target() + if filter_target_col is not None: + targets = targets.loc[targets[filter_target_col]] member_dfs = [] for member in self.members: if member.startswith("ERA5"): - member_dfs.append(self._prep_era5(targets, member.split("-")[1])) + era5_agg: Literal["yearly", "seasonal", "shoulder"] = member.split("-")[1] # ty:ignore[invalid-assignment] + member_dfs.append(self._prep_era5(targets, era5_agg)) elif member == "AlphaEarth": member_dfs.append(self._prep_embeddings(targets)) elif member == "ArcticDEM": @@ -220,3 +328,65 @@ class DatasetEnsemble: dataset.to_parquet(cache_file) print(f"Saved dataset to cache at {cache_file}.") return dataset + + def create_cat_training_dataset(self, task: Task) -> CategoricalTrainingDataset: + """Create a categorical dataset for training. + + Args: + task (Task): Task type. + + Returns: + CategoricalTrainingDataset: The prepared categorical training dataset. + + """ + covcol = "dartsml_has_coverage" if self.target == "darts_mllabels" else "darts_has_coverage" + dataset = self.create(filter_target_col=covcol) + taskcol = self.taskcol(task) + + valid_labels = dataset[taskcol].notna() + + cols_to_drop = {"geometry", taskcol, covcol} + cols_to_drop |= { + col + for col in dataset.columns + if col.startswith("dartsml_" if self.target == "darts_mllabels" else "darts_") + } + + model_inputs = dataset.drop(columns=cols_to_drop) + # Assert that no column in all-nan + assert not model_inputs.isna().all("index").any(), "Some input columns are all NaN" + # Get valid inputs (rows) + valid_inputs = model_inputs.notna().all("columns") + + dataset = dataset.loc[valid_labels & valid_inputs] + model_inputs = model_inputs.loc[valid_labels & valid_inputs] + model_labels = dataset[taskcol] + + if task == "binary": + binned = model_labels.map({False: "No RTS", True: "RTS"}).astype("category") + elif task == "count": + binned = bin_values(model_labels.astype(int), task=task) + elif task == "density": + binned = bin_values(model_labels, task=task) + else: + raise ValueError("Invalid task.") + + # Create train / test split + train_idx, test_idx = train_test_split(dataset.index.to_numpy(), test_size=0.2, random_state=42, shuffle=True) + split = pd.Series(index=dataset.index, dtype=object) + split.loc[train_idx] = "train" + split.loc[test_idx] = "test" + split = split.astype("category") + + X_train = torch.asarray(model_inputs.loc[train_idx].to_numpy(dtype="float64"), device=0) + X_test = torch.asarray(model_inputs.loc[test_idx].to_numpy(dtype="float64"), device=0) + y_train = torch.asarray(binned.loc[train_idx].cat.codes.to_numpy(dtype="int64"), device=0) + y_test = torch.asarray(binned.loc[test_idx].cat.codes.to_numpy(dtype="int64"), device=0) + + return CategoricalTrainingDataset( + dataset=dataset.to_crs("EPSG:4326"), + X=DatasetInputs(data=model_inputs, train=X_train, test=X_test), + y=DatasetLabels(binned=binned, train=y_train, test=y_test, raw_values=model_labels), + z=model_labels, + split=split, + ) diff --git a/src/entropice/era5.py b/src/entropice/era5.py index 76d12c5..8263a57 100644 --- a/src/entropice/era5.py +++ b/src/entropice/era5.py @@ -177,11 +177,11 @@ def download_daily_aggregated(): tchunksize = era5.chunksizes["time"][0] era5_chunk_starts = pd.date_range(era5.time.min().item(), era5.time.max().item(), freq=f"{tchunksize}h") closest_chunk_start = era5_chunk_starts[ - era5_chunk_starts.get_indexer([pd.to_datetime(min_time)], method="ffill")[0] + era5_chunk_starts.get_indexer([pd.to_datetime(min_time)], method="ffill")[0] # ty:ignore[invalid-argument-type] ] subset["time"] = slice(str(closest_chunk_start), max_time) - era5 = era5.sel(**subset) + era5 = era5.sel(subset) daily_raw = xr.merge( [ @@ -680,7 +680,7 @@ def spatial_agg( invalid_cell_id = [3059646, 3063547] grid_gdf = grid_gdf[~grid_gdf.cell_id.isin(invalid_cell_id)] - aggregations = { + aggregations_by_gridlevel: dict[str, dict[int, _Aggregations | Literal["interpolate"]]] = { "hex": { 3: _Aggregations.common(), 4: _Aggregations.common(), @@ -695,9 +695,9 @@ def spatial_agg( 10: "interpolate", }, } - aggregations = aggregations[grid][level] + aggregations = aggregations_by_gridlevel[grid][level] - for agg in ["yearly", "seasonal", "shoulder"]: + for agg in ("yearly", "seasonal", "shoulder"): unaligned_store = get_era5_stores(agg) with stopwatch(f"Loading {agg} ERA5 data"): unaligned = xr.open_zarr(unaligned_store, consolidated=False).set_coords("spatial_ref").load() diff --git a/src/entropice/inference.py b/src/entropice/inference.py index 1e4ce8b..816dd66 100644 --- a/src/entropice/inference.py +++ b/src/entropice/inference.py @@ -4,9 +4,11 @@ import geopandas as gpd import pandas as pd import torch +from cuml.ensemble import RandomForestClassifier +from entropy import ESPAClassifier from rich import pretty, traceback from sklearn import set_config -from sklearn.base import BaseEstimator +from xgboost.sklearn import XGBClassifier from entropice.dataset import DatasetEnsemble @@ -16,7 +18,9 @@ pretty.install() set_config(array_api_dispatch=True) -def predict_proba(e: DatasetEnsemble, clf: BaseEstimator, classes: list) -> gpd.GeoDataFrame: +def predict_proba( + e: DatasetEnsemble, clf: RandomForestClassifier | ESPAClassifier | XGBClassifier, classes: list +) -> gpd.GeoDataFrame: """Get predicted probabilities for each cell. Args: diff --git a/src/entropice/paths.py b/src/entropice/paths.py index 85dd7db..bb6a197 100644 --- a/src/entropice/paths.py +++ b/src/entropice/paths.py @@ -6,12 +6,15 @@ import os from pathlib import Path from typing import Literal -DATA_DIR = Path(os.environ.get("FAST_DATA_DIR", None) or os.environ.get("DATA_DIR", None)).resolve() / "entropice" +DATA_DIR = ( + Path(os.environ.get("FAST_DATA_DIR", None) or os.environ.get("DATA_DIR", None) or "data").resolve() / "entropice" +) DATA_DIR = Path("/raid/scratch/tohoel001/data/entropice") # Temporary hardcoding for FAST cluster GRIDS_DIR = DATA_DIR / "grids" FIGURES_DIR = Path("figures") -DARTS_DIR = DATA_DIR / "darts" +RTS_DIR = DATA_DIR / "darts-rts" +RTS_LABELS_DIR = DATA_DIR / "darts-rts-mllabels" ERA5_DIR = DATA_DIR / "era5" ARCTICDEM_DIR = DATA_DIR / "arcticdem" EMBEDDINGS_DIR = DATA_DIR / "embeddings" @@ -22,7 +25,7 @@ RESULTS_DIR = DATA_DIR / "results" GRIDS_DIR.mkdir(parents=True, exist_ok=True) FIGURES_DIR.mkdir(parents=True, exist_ok=True) -DARTS_DIR.mkdir(parents=True, exist_ok=True) +RTS_DIR.mkdir(parents=True, exist_ok=True) ERA5_DIR.mkdir(parents=True, exist_ok=True) ARCTICDEM_DIR.mkdir(parents=True, exist_ok=True) EMBEDDINGS_DIR.mkdir(parents=True, exist_ok=True) @@ -34,9 +37,9 @@ DATASET_ENSEMBLES_DIR.mkdir(parents=True, exist_ok=True) watermask_file = WATERMASK_DIR / "simplified_water_polygons.shp" -dartsl2_file = DARTS_DIR / "DARTS_NitzeEtAl_v1-2_features_2018-2023_level2.parquet" -dartsl2_cov_file = DARTS_DIR / "DARTS_NitzeEtAl_v1-2_coverage_2018-2023_level2.parquet" -darts_ml_training_labels_repo = DARTS_DIR / "ML_training_labels" / "retrogressive_thaw_slumps" +dartsl2_file = RTS_DIR / "DARTS_NitzeEtAl_v1-2_features_2018-2023_level2.parquet" +dartsl2_cov_file = RTS_DIR / "DARTS_NitzeEtAl_v1-2_coverage_2018-2023_level2.parquet" +darts_ml_training_labels_repo = RTS_LABELS_DIR / "ML_training_labels" / "retrogressive_thaw_slumps" def _get_gridname(grid: Literal["hex", "healpix"], level: int) -> str: @@ -58,9 +61,9 @@ def get_grid_viz_file(grid: Literal["hex", "healpix"], level: int) -> Path: def get_darts_rts_file(grid: Literal["hex", "healpix"], level: int, labels: bool = False) -> Path: gridname = _get_gridname(grid, level) if labels: - rtsfile = DARTS_DIR / f"{gridname}_darts-mllabels.parquet" + rtsfile = RTS_LABELS_DIR / f"{gridname}_darts-mllabels.parquet" else: - rtsfile = DARTS_DIR / f"{gridname}_darts.parquet" + rtsfile = RTS_DIR / f"{gridname}_darts.parquet" return rtsfile @@ -107,8 +110,11 @@ def get_train_dataset_file(grid: Literal["hex", "healpix"], level: int) -> Path: return dataset_file -def get_dataset_cache(eid: str) -> Path: - cache_file = DATASET_ENSEMBLES_DIR / f"{eid}_dataset.parquet" +def get_dataset_cache(eid: str, subset: str | None = None) -> Path: + if subset is None: + cache_file = DATASET_ENSEMBLES_DIR / f"{eid}_dataset.parquet" + else: + cache_file = DATASET_ENSEMBLES_DIR / f"{eid}_{subset}_dataset.parquet" return cache_file @@ -116,7 +122,7 @@ def get_cv_results_dir( name: str, grid: Literal["hex", "healpix"], level: int, - task: Literal["binary", "multi"], + task: Literal["binary", "count", "density"], ) -> Path: gridname = _get_gridname(grid, level) now = datetime.datetime.now().strftime("%Y%m%d-%H%M%S") diff --git a/src/entropice/training.py b/src/entropice/training.py index 9cadf22..61b0c46 100644 --- a/src/entropice/training.py +++ b/src/entropice/training.py @@ -1,4 +1,3 @@ -# ruff: noqa: N806 """Training of classification models training.""" import pickle @@ -8,7 +7,6 @@ from typing import Literal import cyclopts import pandas as pd import toml -import torch import xarray as xr from cuml.ensemble import RandomForestClassifier from cuml.neighbors import KNeighborsClassifier @@ -17,9 +15,9 @@ from rich import pretty, traceback from scipy.stats import loguniform, randint from scipy.stats._distn_infrastructure import rv_continuous_frozen, rv_discrete_frozen from sklearn import set_config -from sklearn.model_selection import KFold, RandomizedSearchCV, train_test_split +from sklearn.model_selection import KFold, RandomizedSearchCV from stopuhr import stopwatch -from xgboost import XGBClassifier +from xgboost.sklearn import XGBClassifier from entropice.dataset import DatasetEnsemble from entropice.inference import predict_proba @@ -30,7 +28,7 @@ pretty.install() set_config(array_api_dispatch=True) -cli = cyclopts.App("entropice-training", config=cyclopts.config.Toml("training-config.toml")) +cli = cyclopts.App("entropice-training", config=cyclopts.config.Toml("training-config.toml")) # ty:ignore[invalid-argument-type] _metrics = { "binary": ["accuracy", "recall", "precision", "f1", "jaccard"], @@ -57,51 +55,6 @@ class CVSettings: model: Literal["espa", "xgboost", "rf", "knn"] = "espa" -def _create_xy_data(e: DatasetEnsemble, task: Literal["binary", "count", "density"] = "binary"): - data = e.create() - - covcol = "dartsml_has_coverage" if e.target == "darts_mllabels" else "darts_has_coverage" - bincol = "dartsml_has_rts" if e.target == "darts_mllabels" else "darts_has_rts" - countcol = "dartsml_rts_count" if e.target == "darts_mllabels" else "darts_rts_count" - densitycol = "dartsml_rts_density" if e.target == "darts_mllabels" else "darts_rts_density" - - data = data[data[covcol]].reset_index(drop=True) - - cols_to_drop = ["geometry"] - if e.target == "darts_mllabels": - cols_to_drop += [col for col in data.columns if col.startswith("dartsml_")] - else: - cols_to_drop += [col for col in data.columns if col.startswith("darts_")] - X_data = data.drop(columns=cols_to_drop).dropna() - if task == "binary": - labels = ["No RTS", "RTS"] - y_data = data.loc[X_data.index, bincol] - elif task == "count": - # Put into n categories (log scaled) - y_data = data.loc[X_data.index, countcol] - n_categories = 5 - bins = pd.qcut(y_data, q=n_categories, duplicates="drop").unique().categories - # Change the first interval to start at 1 and add a category for 0 - bins = pd.IntervalIndex.from_tuples( - [(-1, 0)] + [(int(interval.left), int(interval.right)) for interval in bins] - ) - print(f"{bins=}") - y_data = pd.cut(y_data, bins=bins) - labels = [str(v) for v in y_data.sort_values().unique()] - y_data = y_data.cat.codes - elif task == "density": - y_data = data.loc[X_data.index, densitycol] - n_categories = 5 - bins = pd.qcut(y_data, q=n_categories, duplicates="drop").unique().categories - print(f"{bins=}") - y_data = pd.cut(y_data, bins=bins) - labels = [str(v) for v in y_data.sort_values().unique()] - y_data = y_data.cat.codes - else: - raise ValueError(f"Unknown task: {task}") - return data, X_data, y_data, labels - - def _create_clf( settings: CVSettings, ): @@ -196,15 +149,7 @@ def random_cv( """ print("Creating training data...") - _, X_data, y_data, labels = _create_xy_data(dataset_ensemble, task=settings.task) - print(f"Using {settings.task}-class classification with {len(labels)} classes: {labels}") - print(f"{y_data.describe()=}") - X = X_data.to_numpy(dtype="float64") - y = y_data.to_numpy(dtype="int8") - X, y = torch.asarray(X, device=0), torch.asarray(y, device=0) - print(f"{X.shape=}, {y.shape=}") - X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) - print(f"{X_train.shape=}, {X_test.shape=}, {y_train.shape=}, {y_test.shape=}") + training_data = dataset_ensemble.create_cat_training_dataset(task=settings.task) clf, param_grid, fit_params = _create_clf(settings) print(f"Using model: {settings.model} with parameters: {param_grid}") @@ -224,14 +169,14 @@ def random_cv( print(f"Starting RandomizedSearchCV with {search.n_iter} candidates...") with stopwatch(f"RandomizedSearchCV fitting for {search.n_iter} candidates"): - search.fit(X_train, y_train, **fit_params) + search.fit(training_data.X.train, training_data.y.train, **fit_params) print("Best parameters combination found:") best_parameters = search.best_estimator_.get_params() for param_name in sorted(param_grid.keys()): print(f"{param_name}: {best_parameters[param_name]}") - test_accuracy = search.score(X_test, y_test) + test_accuracy = search.score(training_data.X.test, training_data.y.test) print(f"Accuracy of the best parameters using the inner CV of the random search: {search.best_score_:.3f}") print(f"Accuracy on test set: {test_accuracy:.3f}") @@ -251,7 +196,7 @@ def random_cv( "param_grid": param_grid_serializable, "cv_splits": cv.get_n_splits(), "metrics": metrics, - "classes": labels, + "classes": training_data.y.labels, } settings_file = results_dir / "search_settings.toml" print(f"Storing search settings to {settings_file}") @@ -267,7 +212,7 @@ def random_cv( # Store the search results results = pd.DataFrame(search.cv_results_) # Parse the params into individual columns - params = pd.json_normalize(results["params"]) + params = pd.json_normalize(results["params"]) # ty:ignore[invalid-argument-type] # Concatenate the params columns with the original DataFrame results = pd.concat([results.drop(columns=["params"]), params], axis=1) results_file = results_dir / "search_results.parquet" @@ -278,7 +223,7 @@ def random_cv( if settings.model == "espa": best_estimator = search.best_estimator_ # Annotate the state with xarray metadata - features = X_data.columns.tolist() + features = training_data.X.data.columns.tolist() boxes = list(range(best_estimator.K_)) box_centers = xr.DataArray( best_estimator.S_.cpu().numpy(), @@ -290,7 +235,7 @@ def random_cv( box_assignments = xr.DataArray( best_estimator.Lambda_.cpu().numpy(), dims=["class", "box"], - coords={"class": labels, "box": boxes}, + coords={"class": training_data.y.labels, "box": boxes}, name="box_assignments", attrs={"description": "Assignments of samples to boxes."}, ) @@ -317,7 +262,7 @@ def random_cv( # Predict probabilities for all cells print("Predicting probabilities for all cells...") - preds = predict_proba(dataset_ensemble, clf=best_estimator, classes=labels) + preds = predict_proba(dataset_ensemble, clf=best_estimator, classes=training_data.y.labels) preds_file = results_dir / "predicted_probabilities.parquet" print(f"Storing predicted probabilities to {preds_file}") preds.to_parquet(preds_file)