diff --git a/pixi.lock b/pixi.lock index 7cc4fbcd7..ace4a1928 100644 --- a/pixi.lock +++ b/pixi.lock @@ -39,11 +39,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hb755f60_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.32.1-h4bc722e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.32.2-h4bc722e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.7.4-hbcca054_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-5.3.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cachetools-5.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hbb29018_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.16.0-py311hb3a22ac_0.conda @@ -56,11 +56,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-42.0.8-py311h4a61cc7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.12.3-py311h459d7ec_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2024.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2024.7.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.7.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.9-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2024.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2024.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/docutils-0.20.1-py311h38be061_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda @@ -94,7 +94,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/h5py-3.11.0-nompi_py311h439e445_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-8.5.0-hfac3d4d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hfac3d4d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.3-nompi_hdf9ad27_105.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 @@ -124,14 +124,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-15.0.0-h61ff412_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-h661eb56_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-h661eb56_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-22_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-23_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.69-h0f662aa_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-22_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-23_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp15-15.0.7-default_h127d8a8_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-18.1.8-default_h6ae225f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-18.1.8-default_h9def88c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.8.0-hca28451_1.conda @@ -143,7 +143,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.1.0-h77fa898_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-1.11.0-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-1.11.0-h4ab18f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.22.5-h59595ed_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.22.5-h59595ed_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.1.0-h69a702a_0.conda @@ -155,11 +155,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.59.3-hd6c4280_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-22_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-23_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm15-15.0.7-hb3ce162_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm18-18.1.8-hc9dba70_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm18-18.1.8-h8b73ec9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnl-3.9.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnl-3.10.0-h4bc722e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.27-pthreads_hac2b453_1.conda @@ -181,6 +181,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.16-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.7.0-h2c5496b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-h4c95cb1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-h4ab18f5_1.conda @@ -196,15 +197,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.8-py311h52f7536_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.0.5-py311h459d7ec_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.3.0-hf1915f5_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.3.0-hca2cd23_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.3.0-h70512c7_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.3.0-ha479ceb_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h59595ed_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nspr-4.35-h27087fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nss-3.102-h593d115_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4ab18f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4bc722e_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.3.0-pyhc1e730c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-1.9.2-h4b38347_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda @@ -226,13 +227,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.9-py311hf0fb5b6_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-12.12.2-py311hb755f60_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.0-he550d4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.9-hb806964_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-24.3.25-pyh59ac667_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda @@ -241,7 +242,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.1-py311h459d7ec_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.8-ha2b5568_22.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.8-h320f8da_24.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rdma-core-52.0-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2023.09.01-h7f4b329_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda @@ -250,18 +251,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.4.1-h06160fa_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.14.0-py311h517d4fd_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-70.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-71.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sip-6.7.12-py311hb755f60_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.1.10-hdb0a2a9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.4.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-1.0.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-1.0.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tblib-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tensorboard-2.15.2-pyhd8ed1ab_0.conda @@ -307,7 +308,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-h4ab18f5_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.22.0-py311hb6f056b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311h5cd10c7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda - pypi: https://files.pythonhosted.org/packages/8d/9e/f7caf7486a22c3f8dde60228a9905c73dd676cdcacbdaa4390acfc9ae959/h5pyd-0.18.0.tar.gz - pypi: https://files.pythonhosted.org/packages/91/29/df4b9b42f2be0b623cbd5e2140cafcaa2bef0759a00b7b70104dcfe2fb51/joblib-1.4.2-py3-none-any.whl @@ -352,11 +353,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.1.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311ha891d26_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.32.1-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.32.2-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.7.4-hf0a4a13_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-5.3.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cachetools-5.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.16.0-py311h4a08483_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cftime-1.6.4-py311h5d790af_0.conda @@ -368,10 +369,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-42.0.8-py311hcaeb4ce_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cytoolz-0.12.3-py311h05b510d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2024.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2024.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2024.7.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.7.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2024.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/docutils-0.20.1-py311h267d04e_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/flatbuffers-23.5.26-h13dd4ca_1.conda @@ -414,11 +415,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-flight-sql-15.0.0-h39a9b85_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-gandiva-15.0.0-hf757142_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-15.0.0-h7fd9903_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-22_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-23_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hb547adb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-22_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-23_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.8.0-h7b6f9a7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-18.1.8-h167917d_0.conda @@ -426,6 +427,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.2-hebf3989_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda @@ -433,7 +435,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.59.3-h9560976_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-22_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-23_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm15-15.0.7-h2621b3d_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.58.0-ha4dd798_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.27-openmp_h517c56d_1.conda @@ -466,7 +468,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.3.1-hfb2fe0b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.3.1-hfb2fe0b_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.3.0-pyhc1e730c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-1.9.2-h7c018df_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda @@ -484,11 +486,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.0-h3ba56d0_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.9-h932a869_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-24.3.25-pyh59ac667_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda @@ -503,17 +505,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.14.0-py311hceeca8c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-70.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-71.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.1.10-hd04f947_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.4.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-1.0.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-1.0.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tblib-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tensorboard-2.15.2-pyhd8ed1ab_0.conda @@ -540,7 +542,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.9.4-py311h05b510d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.22.0-py311h4a6b76e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311h4a6b76e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda - pypi: https://files.pythonhosted.org/packages/8d/9e/f7caf7486a22c3f8dde60228a9905c73dd676cdcacbdaa4390acfc9ae959/h5pyd-0.18.0.tar.gz - pypi: https://files.pythonhosted.org/packages/91/29/df4b9b42f2be0b623cbd5e2140cafcaa2bef0759a00b7b70104dcfe2fb51/joblib-1.4.2-py3-none-any.whl @@ -602,11 +604,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hb755f60_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/build-0.7.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.32.1-h4bc722e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.32.2-h4bc722e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.7.4-hbcca054_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-5.3.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cachetools-5.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hbb29018_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.16.0-py311hb3a22ac_0.conda @@ -620,14 +622,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-42.0.8-py311h4a61cc7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.12.3-py311h459d7ec_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2024.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2024.7.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.7.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.9-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2024.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2024.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/docutils-0.20.1-py311h38be061_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/flatbuffers-23.5.26-h59595ed_1.conda @@ -660,7 +663,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/h5py-3.11.0-nompi_py311h439e445_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-8.5.0-hfac3d4d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hfac3d4d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.3-nompi_hdf9ad27_105.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 @@ -698,14 +701,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-15.0.0-h61ff412_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-h661eb56_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-h661eb56_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-22_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-23_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.69-h0f662aa_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-22_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-23_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp15-15.0.7-default_h127d8a8_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-18.1.8-default_h6ae225f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-18.1.8-default_h9def88c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.8.0-hca28451_1.conda @@ -717,7 +720,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.1.0-h77fa898_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-1.11.0-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-1.11.0-h4ab18f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.22.5-h59595ed_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.22.5-h59595ed_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.1.0-h69a702a_0.conda @@ -729,11 +732,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.59.3-hd6c4280_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-22_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-23_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm15-15.0.7-hb3ce162_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm18-18.1.8-hc9dba70_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm18-18.1.8-h8b73ec9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnl-3.9.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnl-3.10.0-h4bc722e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.27-pthreads_hac2b453_1.conda @@ -755,6 +758,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.16-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.7.0-h2c5496b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-h4c95cb1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-h4ab18f5_1.conda @@ -774,8 +778,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.8-py311h52f7536_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.0.5-py311h459d7ec_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.3.0-hf1915f5_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.3.0-hca2cd23_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.3.0-h70512c7_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.3.0-ha479ceb_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h59595ed_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nh3-0.2.18-py311hb3a8bbb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nspr-4.35-h27087fc_0.conda @@ -783,7 +787,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4ab18f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4bc722e_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.3.0-pyhc1e730c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-1.9.2-h4b38347_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda @@ -805,7 +809,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-15.0.0-py311h39c9aba_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyarrow-hotfix-0.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.0-pyhd8ed1ab_0.conda @@ -813,13 +817,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.9-py311hf0fb5b6_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-12.12.2-py311hb755f60_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.0-he550d4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.9-hb806964_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-24.3.25-pyh59ac667_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda @@ -828,7 +833,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.1-py311h459d7ec_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.8-ha2b5568_22.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.8-h320f8da_24.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rdma-core-52.0-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2023.09.01-h7f4b329_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda @@ -839,24 +844,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.5.1-py311hce3a109_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.5.2-py311hce3a109_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.4.1-h06160fa_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.14.0-py311h517d4fd_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.3.3-py311h38be061_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-70.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-71.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sip-6.7.12-py311hb755f60_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.1.10-hdb0a2a9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.4.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-2.0.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-1.0.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-1.0.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jquery-4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tblib-3.0.0-pyhd8ed1ab_0.conda @@ -906,9 +911,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-h4ab18f5_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.22.0-py311hb6f056b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311h5cd10c7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda - - pypi: https://files.pythonhosted.org/packages/27/98/318351f17c4c2f59b7d7fc8280fc95c0159357732a26cc6b33de0aeca44d/astroid-3.2.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/80/96/b32bbbb46170a1c8b8b1f28c794202e25cfe743565e9d3469b8eb1e0cc05/astroid-3.2.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/7a/cef76fd8438a42f96db64ddaa85280485a9c395e7df3db8158cfec1eee34/dill-0.3.8-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8e/41/9307e4f5f9976bc8b7fea0b66367734e8faf3ec84bc0d412d8cfabbb66cd/distlib-0.3.8-py2.py3-none-any.whl @@ -930,7 +935,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/55/c4/bf8ede2d1641e0a2e027c6d0c7060e00332851ea772cc5cee42a4a207707/pycodestyle-2.12.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d4/d7/f1b7db88d8e4417c5d47adad627a93547f44bdc9028372dbd2313f34a855/pyflakes-3.2.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/26/ba/c21b9f0fad649cada64fdfbed8546c74c998f137b487affb1be451b23bb8/pyjson5-1.6.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/2e/ff/7f52c1461d8ceaefa989d2700a027f84427879bb7571145bbffdec5d5f4a/pylint-3.2.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/09/88/1a406dd0b17a4796f025d8c937d8d56f97869cffa55c21d9edb07f5a3912/pylint-3.2.6-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b3/63/e9e81d5e7370d46f08407c37399b507725125587b01fff46b4da5ddd3a4a/requests_unixsocket-0.3.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/32/63/ed228892adad313aab0d0f9261241e7bf1efe36730a2788ad424bcad00ca/scikit_learn-1.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/d0/d7/8621c4726ad3f788a1db4c0c409044b16edc563f5c9542807b3724037555/sphinx_click-6.0.0-py3-none-any.whl @@ -972,11 +977,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311ha891d26_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/build-0.7.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.32.1-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.32.2-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.7.4-hf0a4a13_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-5.3.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cachetools-5.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.16.0-py311h4a08483_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cftime-1.6.4-py311h5d790af_0.conda @@ -989,13 +994,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-42.0.8-py311hcaeb4ce_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cytoolz-0.12.3-py311h05b510d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2024.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2024.7.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.7.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.9-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2024.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2024.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/docutils-0.20.1-py311h267d04e_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/flatbuffers-23.5.26-h13dd4ca_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fonttools-4.53.1-py311hd3f4193_0.conda @@ -1044,11 +1050,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-flight-sql-15.0.0-h39a9b85_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-gandiva-15.0.0-hf757142_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-15.0.0-h7fd9903_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-22_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-23_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hb547adb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-22_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-23_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.8.0-h7b6f9a7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-18.1.8-h167917d_0.conda @@ -1056,6 +1062,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.2-hebf3989_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda @@ -1063,7 +1070,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.59.3-h9560976_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-22_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-23_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm15-15.0.7-h2621b3d_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.58.0-ha4dd798_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.27-openmp_h517c56d_1.conda @@ -1101,7 +1108,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.3.1-hfb2fe0b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.3.1-hfb2fe0b_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.3.0-pyhc1e730c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-1.9.2-h7c018df_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda @@ -1119,7 +1126,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.0.0-py311hd3f4193_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-h27ca646_1001.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-15.0.0-py311hd7bc329_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyarrow-hotfix-0.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.0-pyhd8ed1ab_0.conda @@ -1127,11 +1134,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.0-h3ba56d0_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.9-h932a869_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-24.3.25-pyh59ac667_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda @@ -1149,21 +1157,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.5.1-py311hd374d79_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.5.2-py311hd374d79_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.14.0-py311hceeca8c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-70.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-71.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.1.10-hd04f947_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.4.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-2.0.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-1.0.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-1.0.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jquery-4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tblib-3.0.0-pyhd8ed1ab_0.conda @@ -1194,9 +1202,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.9.4-py311h05b510d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.22.0-py311h4a6b76e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311h4a6b76e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda - - pypi: https://files.pythonhosted.org/packages/27/98/318351f17c4c2f59b7d7fc8280fc95c0159357732a26cc6b33de0aeca44d/astroid-3.2.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/80/96/b32bbbb46170a1c8b8b1f28c794202e25cfe743565e9d3469b8eb1e0cc05/astroid-3.2.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/7a/cef76fd8438a42f96db64ddaa85280485a9c395e7df3db8158cfec1eee34/dill-0.3.8-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8e/41/9307e4f5f9976bc8b7fea0b66367734e8faf3ec84bc0d412d8cfabbb66cd/distlib-0.3.8-py2.py3-none-any.whl @@ -1218,7 +1226,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/55/c4/bf8ede2d1641e0a2e027c6d0c7060e00332851ea772cc5cee42a4a207707/pycodestyle-2.12.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d4/d7/f1b7db88d8e4417c5d47adad627a93547f44bdc9028372dbd2313f34a855/pyflakes-3.2.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0c/8b/24c7d8f7785bdaab55481b67e736e892b01e10be2366860d67484f48ad50/pyjson5-1.6.6-cp311-cp311-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/2e/ff/7f52c1461d8ceaefa989d2700a027f84427879bb7571145bbffdec5d5f4a/pylint-3.2.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/09/88/1a406dd0b17a4796f025d8c937d8d56f97869cffa55c21d9edb07f5a3912/pylint-3.2.6-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b3/63/e9e81d5e7370d46f08407c37399b507725125587b01fff46b4da5ddd3a4a/requests_unixsocket-0.3.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7d/d7/fb80c63062b60b1fa5dcb2d4dd3a4e83bd8c68cdc83cf6ff8c016228f184/scikit_learn-1.5.1-cp311-cp311-macosx_12_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/d0/d7/8621c4726ad3f788a1db4c0c409044b16edc563f5c9542807b3724037555/sphinx_click-6.0.0-py3-none-any.whl @@ -1269,11 +1277,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hb755f60_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.32.1-h4bc722e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.32.2-h4bc722e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.7.4-hbcca054_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-5.3.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cachetools-5.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hbb29018_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.16.0-py311hb3a22ac_0.conda @@ -1286,11 +1294,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-42.0.8-py311h4a61cc7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.12.3-py311h459d7ec_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2024.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2024.7.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.7.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.9-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2024.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2024.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/docutils-0.20.1-py311h38be061_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda @@ -1324,7 +1332,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/h5py-3.11.0-nompi_py311h439e445_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-8.5.0-hfac3d4d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hfac3d4d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.3-nompi_hdf9ad27_105.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 @@ -1354,14 +1362,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-15.0.0-h61ff412_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-h661eb56_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-h661eb56_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-22_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-23_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.69-h0f662aa_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-22_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-23_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp15-15.0.7-default_h127d8a8_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-18.1.8-default_h6ae225f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-18.1.8-default_h9def88c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.8.0-hca28451_1.conda @@ -1373,7 +1381,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.1.0-h77fa898_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-1.11.0-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-1.11.0-h4ab18f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.22.5-h59595ed_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.22.5-h59595ed_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.1.0-h69a702a_0.conda @@ -1385,11 +1393,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.59.3-hd6c4280_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-22_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-23_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm15-15.0.7-hb3ce162_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm18-18.1.8-hc9dba70_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm18-18.1.8-h8b73ec9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnl-3.9.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnl-3.10.0-h4bc722e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.27-pthreads_hac2b453_1.conda @@ -1411,6 +1419,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.16-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.7.0-h2c5496b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-h4c95cb1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-h4ab18f5_1.conda @@ -1426,15 +1435,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.8-py311h52f7536_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.0.5-py311h459d7ec_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.3.0-hf1915f5_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.3.0-hca2cd23_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.3.0-h70512c7_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.3.0-ha479ceb_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h59595ed_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nspr-4.35-h27087fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nss-3.102-h593d115_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4ab18f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4bc722e_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.3.0-pyhc1e730c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-1.9.2-h4b38347_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda @@ -1456,13 +1465,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.9-py311hf0fb5b6_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-12.12.2-py311hb755f60_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.0-he550d4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.9-hb806964_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-24.3.25-pyh59ac667_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda @@ -1471,7 +1480,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.1-py311h459d7ec_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.8-ha2b5568_22.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.8-h320f8da_24.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rdma-core-52.0-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2023.09.01-h7f4b329_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda @@ -1480,20 +1489,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.4.1-h06160fa_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.14.0-py311h517d4fd_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-70.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-71.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sip-6.7.12-py311hb755f60_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.1.10-hdb0a2a9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.4.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-2.0.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-1.0.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-1.0.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jquery-4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tblib-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tensorboard-2.15.2-pyhd8ed1ab_0.conda @@ -1539,7 +1548,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-h4ab18f5_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.22.0-py311hb6f056b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311h5cd10c7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda - pypi: https://files.pythonhosted.org/packages/8d/9e/f7caf7486a22c3f8dde60228a9905c73dd676cdcacbdaa4390acfc9ae959/h5pyd-0.18.0.tar.gz - pypi: https://files.pythonhosted.org/packages/91/29/df4b9b42f2be0b623cbd5e2140cafcaa2bef0759a00b7b70104dcfe2fb51/joblib-1.4.2-py3-none-any.whl @@ -1584,11 +1593,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.1.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311ha891d26_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.32.1-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.32.2-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.7.4-hf0a4a13_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-5.3.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cachetools-5.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.16.0-py311h4a08483_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cftime-1.6.4-py311h5d790af_0.conda @@ -1600,10 +1609,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-42.0.8-py311hcaeb4ce_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cytoolz-0.12.3-py311h05b510d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2024.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2024.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2024.7.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.7.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2024.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/docutils-0.20.1-py311h267d04e_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/flatbuffers-23.5.26-h13dd4ca_1.conda @@ -1646,11 +1655,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-flight-sql-15.0.0-h39a9b85_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-gandiva-15.0.0-hf757142_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-15.0.0-h7fd9903_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-22_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-23_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hb547adb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-22_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-23_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.8.0-h7b6f9a7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-18.1.8-h167917d_0.conda @@ -1658,6 +1667,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.2-hebf3989_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda @@ -1665,7 +1675,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.59.3-h9560976_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-22_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-23_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm15-15.0.7-h2621b3d_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.58.0-ha4dd798_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.27-openmp_h517c56d_1.conda @@ -1698,7 +1708,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.3.1-hfb2fe0b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.3.1-hfb2fe0b_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.3.0-pyhc1e730c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-1.9.2-h7c018df_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda @@ -1716,11 +1726,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.0-h3ba56d0_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.9-h932a869_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-24.3.25-pyh59ac667_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda @@ -1735,19 +1745,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.14.0-py311hceeca8c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-70.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-71.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.1.10-hd04f947_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.4.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-2.0.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-1.0.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-1.0.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jquery-4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tblib-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tensorboard-2.15.2-pyhd8ed1ab_0.conda @@ -1774,7 +1784,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.9.4-py311h05b510d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.22.0-py311h4a6b76e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311h4a6b76e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda - pypi: https://files.pythonhosted.org/packages/8d/9e/f7caf7486a22c3f8dde60228a9905c73dd676cdcacbdaa4390acfc9ae959/h5pyd-0.18.0.tar.gz - pypi: https://files.pythonhosted.org/packages/91/29/df4b9b42f2be0b623cbd5e2140cafcaa2bef0759a00b7b70104dcfe2fb51/joblib-1.4.2-py3-none-any.whl @@ -1832,11 +1842,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hb755f60_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.32.1-h4bc722e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.32.2-h4bc722e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.7.4-hbcca054_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-5.3.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cachetools-5.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hbb29018_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.16.0-py311hb3a22ac_0.conda @@ -1849,11 +1859,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-42.0.8-py311h4a61cc7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.12.3-py311h459d7ec_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2024.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2024.7.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.7.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.9-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2024.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2024.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/docutils-0.20.1-py311h38be061_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda @@ -1887,7 +1897,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/h5py-3.11.0-nompi_py311h439e445_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-8.5.0-hfac3d4d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hfac3d4d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.3-nompi_hdf9ad27_105.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 @@ -1917,14 +1927,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-15.0.0-h61ff412_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-h661eb56_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-h661eb56_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-22_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-23_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.69-h0f662aa_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-22_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-23_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp15-15.0.7-default_h127d8a8_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-18.1.8-default_h6ae225f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-18.1.8-default_h9def88c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.8.0-hca28451_1.conda @@ -1936,7 +1946,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.1.0-h77fa898_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-1.11.0-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-1.11.0-h4ab18f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.22.5-h59595ed_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.22.5-h59595ed_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.1.0-h69a702a_0.conda @@ -1948,11 +1958,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.59.3-hd6c4280_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-22_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-23_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm15-15.0.7-hb3ce162_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm18-18.1.8-hc9dba70_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm18-18.1.8-h8b73ec9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnl-3.9.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnl-3.10.0-h4bc722e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.27-pthreads_hac2b453_1.conda @@ -1974,6 +1984,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.16-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.7.0-h2c5496b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-h4c95cb1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-h4ab18f5_1.conda @@ -1989,15 +2000,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.8-py311h52f7536_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.0.5-py311h459d7ec_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.3.0-hf1915f5_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.3.0-hca2cd23_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.3.0-h70512c7_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.3.0-ha479ceb_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h59595ed_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nspr-4.35-h27087fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nss-3.102-h593d115_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4ab18f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4bc722e_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.3.0-pyhc1e730c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-1.9.2-h4b38347_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda @@ -2019,13 +2030,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.9-py311hf0fb5b6_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-12.12.2-py311hb755f60_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.0-he550d4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.9-hb806964_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-24.3.25-pyh59ac667_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda @@ -2034,7 +2045,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.1-py311h459d7ec_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.8-ha2b5568_22.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.8-h320f8da_24.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rdma-core-52.0-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2023.09.01-h7f4b329_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda @@ -2043,18 +2054,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.4.1-h06160fa_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.14.0-py311h517d4fd_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-70.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-71.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sip-6.7.12-py311hb755f60_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.1.10-hdb0a2a9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.4.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-1.0.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-1.0.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tblib-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tensorboard-2.15.2-pyhd8ed1ab_0.conda @@ -2100,7 +2111,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-h4ab18f5_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.22.0-py311hb6f056b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311h5cd10c7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda - pypi: https://files.pythonhosted.org/packages/8d/9e/f7caf7486a22c3f8dde60228a9905c73dd676cdcacbdaa4390acfc9ae959/h5pyd-0.18.0.tar.gz - pypi: https://files.pythonhosted.org/packages/91/29/df4b9b42f2be0b623cbd5e2140cafcaa2bef0759a00b7b70104dcfe2fb51/joblib-1.4.2-py3-none-any.whl @@ -2145,11 +2156,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.1.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311ha891d26_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.32.1-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.32.2-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.7.4-hf0a4a13_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-5.3.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cachetools-5.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.16.0-py311h4a08483_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cftime-1.6.4-py311h5d790af_0.conda @@ -2161,10 +2172,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-42.0.8-py311hcaeb4ce_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cytoolz-0.12.3-py311h05b510d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2024.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2024.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2024.7.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.7.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2024.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/docutils-0.20.1-py311h267d04e_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/flatbuffers-23.5.26-h13dd4ca_1.conda @@ -2207,11 +2218,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-flight-sql-15.0.0-h39a9b85_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-gandiva-15.0.0-hf757142_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-15.0.0-h7fd9903_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-22_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-23_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hb547adb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-22_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-23_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.8.0-h7b6f9a7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-18.1.8-h167917d_0.conda @@ -2219,6 +2230,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.2-hebf3989_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda @@ -2226,7 +2238,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.59.3-h9560976_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-22_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-23_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm15-15.0.7-h2621b3d_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.58.0-ha4dd798_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.27-openmp_h517c56d_1.conda @@ -2259,7 +2271,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.3.1-hfb2fe0b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.3.1-hfb2fe0b_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.3.0-pyhc1e730c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-1.9.2-h7c018df_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda @@ -2277,11 +2289,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.0-h3ba56d0_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.9-h932a869_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-24.3.25-pyh59ac667_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda @@ -2296,17 +2308,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.14.0-py311hceeca8c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-70.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-71.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.1.10-hd04f947_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.4.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-1.0.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-1.0.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tblib-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tensorboard-2.15.2-pyhd8ed1ab_0.conda @@ -2333,7 +2345,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.9.4-py311h05b510d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.22.0-py311h4a6b76e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311h4a6b76e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda - pypi: https://files.pythonhosted.org/packages/8d/9e/f7caf7486a22c3f8dde60228a9905c73dd676cdcacbdaa4390acfc9ae959/h5pyd-0.18.0.tar.gz - pypi: https://files.pythonhosted.org/packages/91/29/df4b9b42f2be0b623cbd5e2140cafcaa2bef0759a00b7b70104dcfe2fb51/joblib-1.4.2-py3-none-any.whl @@ -2499,9 +2511,9 @@ packages: timestamp: 1718118368236 - kind: pypi name: astroid - version: 3.2.3 - url: https://files.pythonhosted.org/packages/27/98/318351f17c4c2f59b7d7fc8280fc95c0159357732a26cc6b33de0aeca44d/astroid-3.2.3-py3-none-any.whl - sha256: 3eae9ea67c11c858cdd2c91337d2e816bd019ac897ca07d7b346ac10105fceb3 + version: 3.2.4 + url: https://files.pythonhosted.org/packages/80/96/b32bbbb46170a1c8b8b1f28c794202e25cfe743565e9d3469b8eb1e0cc05/astroid-3.2.4-py3-none-any.whl + sha256: 413658a61eeca6202a59231abb473f932038fbcbf1666587f66d482083413a25 requires_dist: - typing-extensions>=4.0.0 ; python_version < '3.11' requires_python: '>=3.8.0' @@ -3334,35 +3346,35 @@ packages: timestamp: 1720974522888 - kind: conda name: c-ares - version: 1.32.1 + version: 1.32.2 build: h4bc722e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.32.1-h4bc722e_0.conda - sha256: 3c1130b10ad70c427a4fa7a479ff7a43a69dbaa38719e4b1ebc6bcf77754eb63 - md5: 7ed005e0df2bd50406b110b48ac4587b + url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.32.2-h4bc722e_0.conda + sha256: d1b01f9e3d10b97fd09e19fda0caf9bfad3c884a6b19fb3f654a9aed02a70b58 + md5: 8024af1ee7078e37fa3101c0a0296af2 depends: - __glibc >=2.17,<3.0.a0 - libgcc-ng >=12 license: MIT license_family: MIT purls: [] - size: 179730 - timestamp: 1720777643624 + size: 179740 + timestamp: 1721065841233 - kind: conda name: c-ares - version: 1.32.1 + version: 1.32.2 build: h99b78c6_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.32.1-h99b78c6_0.conda - sha256: 3fce26accd2a8d87ad0cb3391152f30545b2d790bc9ed21496ed46935a54cf8d - md5: baeec198158f1bb3ffab4bd6eca277d3 + url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.32.2-h99b78c6_0.conda + sha256: c9cb861e4cc5458df7e9277dd16623efc69491d1d74a85d826c121e2d831415c + md5: b0bcd3b8a19fb530d6106467dc681bb4 depends: - __osx >=11.0 license: MIT license_family: MIT purls: [] - size: 157392 - timestamp: 1720777883193 + size: 157768 + timestamp: 1721065989990 - kind: conda name: ca-certificates version: 2024.7.4 @@ -3425,21 +3437,21 @@ packages: timestamp: 1615209567874 - kind: conda name: cachetools - version: 5.3.3 + version: 5.4.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/cachetools-5.3.3-pyhd8ed1ab_0.conda - sha256: 561b860cba68da76cab8c6504bb5bfb4756ecb2ec9f124d0c17e76caad4f6dfd - md5: cd4c26c702a9bcdc70ff05b609ddacbe + url: https://conda.anaconda.org/conda-forge/noarch/cachetools-5.4.0-pyhd8ed1ab_0.conda + sha256: 02f52917d6724960629c20dbdf9f8def95b1784acd600763ea41af47d905afbd + md5: c55fbbc5bac8e9efbba71c0d1ed57713 depends: - python >=3.7 license: MIT license_family: MIT purls: - pkg:pypi/cachetools?source=conda-forge-mapping - size: 14665 - timestamp: 1708987821240 + size: 14722 + timestamp: 1721092006298 - kind: conda name: cairo version: 1.18.0 @@ -3821,19 +3833,19 @@ packages: timestamp: 1706897222426 - kind: conda name: dask - version: 2024.7.0 + version: 2024.7.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dask-2024.7.0-pyhd8ed1ab_0.conda - sha256: 8c4c05e42b34fb0c5eec1ce2fd542ee756333659e056ac34fab20e12376f4d21 - md5: f0647685bcd2c8d78b6e8177d6735edb + url: https://conda.anaconda.org/conda-forge/noarch/dask-2024.7.1-pyhd8ed1ab_0.conda + sha256: e0e65b82d4243cea3fb6ce603b676ef3ee6c0d6b94341f2260f78910a3665087 + md5: fa1908a0e13396792ff849a34171d90e depends: - bokeh >=2.4.2,!=3.0.* - cytoolz >=0.11.0 - - dask-core >=2024.7.0,<2024.7.1.0a0 + - dask-core >=2024.7.1,<2024.7.2.0a0 - dask-expr >=1.1,<1.2 - - distributed >=2024.7.0,<2024.7.1.0a0 + - distributed >=2024.7.1,<2024.7.2.0a0 - jinja2 >=2.10.3 - lz4 >=4.3.2 - numpy >=1.21 @@ -3847,17 +3859,17 @@ packages: license_family: BSD purls: - pkg:pypi/dask?source=conda-forge-mapping - size: 7434 - timestamp: 1720318437409 + size: 7381 + timestamp: 1721450216256 - kind: conda name: dask-core - version: 2024.7.0 + version: 2024.7.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.7.0-pyhd8ed1ab_0.conda - sha256: 9c0f6ef94a1967fa553b1b26db032f9a61881c92f9ff0dbee572d2df5d173c53 - md5: 755e47653ae38f5c50f1435af756e844 + url: https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.7.1-pyhd8ed1ab_0.conda + sha256: 2991b4eefe1e4cfa631c569795885377dc19ab30ef9bfaece9664578426b9e9d + md5: 80f7ce024289c333fdc5ad54a194fc86 depends: - click >=8.1 - cloudpickle >=1.5.0 @@ -3872,19 +3884,19 @@ packages: license_family: BSD purls: - pkg:pypi/dask?source=conda-forge-mapping - size: 878090 - timestamp: 1720290443126 + size: 878420 + timestamp: 1721437122459 - kind: conda name: dask-expr - version: 1.1.7 + version: 1.1.9 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.7-pyhd8ed1ab_0.conda - sha256: bdcb6a1a26cb5c61711e4bfdb99565ce4aba4e292faab6ca595bceca76ff9d13 - md5: 412b700b5a88f167078cd7b839881086 + url: https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.9-pyhd8ed1ab_0.conda + sha256: 7b9135d9ae3cb748c7c62a96f2c3d63a720deafbae6f4defe916e4f940d7928d + md5: 1fdd81b57dd1e4a38b6e57f1138f4e61 depends: - - dask-core 2024.7.0 + - dask-core 2024.7.1 - pandas >=2 - pyarrow - python >=3.9 @@ -3892,8 +3904,8 @@ packages: license_family: BSD purls: - pkg:pypi/dask-expr?source=conda-forge-mapping - size: 183907 - timestamp: 1720300457390 + size: 184352 + timestamp: 1721447602127 - kind: conda name: dbus version: 1.13.6 @@ -3945,18 +3957,18 @@ packages: sha256: 034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784 - kind: conda name: distributed - version: 2024.7.0 + version: 2024.7.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/distributed-2024.7.0-pyhd8ed1ab_0.conda - sha256: 69f9a962a122b4fdd36f1aa59a8780299d8e0b9ec3e11c757ce77dadb63a1231 - md5: 2ae917b0098f286f63f69ec9365fb0b1 + url: https://conda.anaconda.org/conda-forge/noarch/distributed-2024.7.1-pyhd8ed1ab_0.conda + sha256: 6b619bc34192f7d2f1115175e17fd0de4772db31a19248e712b34f5ee56b7cf8 + md5: 0a8e18bb76f2dd6ce7e9b1fb9dbba78a depends: - click >=8.0 - cloudpickle >=1.5.0 - cytoolz >=0.10.1 - - dask-core >=2024.7.0,<2024.7.1.0a0 + - dask-core >=2024.7.1,<2024.7.2.0a0 - jinja2 >=2.10.3 - locket >=1.0.0 - msgpack-python >=1.0.0 @@ -3976,8 +3988,8 @@ packages: license_family: BSD purls: - pkg:pypi/distributed?source=conda-forge-mapping - size: 795925 - timestamp: 1720300404413 + size: 798182 + timestamp: 1721444461693 - kind: conda name: docutils version: 0.20.1 @@ -4029,6 +4041,23 @@ packages: - pkg:pypi/exceptiongroup?source=conda-forge-mapping size: 20418 timestamp: 1720869435725 +- kind: conda + name: execnet + version: 2.1.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda + sha256: 564bc012d73ca29964e7acca18d60b2fa8d20eea6d258d98cfc24df5167beaf0 + md5: 15dda3cdbf330abfe9f555d22f66db46 + depends: + - python >=3.8 + license: MIT + license_family: MIT + purls: + - pkg:pypi/execnet?source=conda-forge-mapping + size: 38883 + timestamp: 1712591929944 - kind: conda name: executing version: 2.0.1 @@ -4824,12 +4853,12 @@ packages: - h5py ; extra == 'hdf5' - kind: conda name: harfbuzz - version: 8.5.0 + version: 9.0.0 build: hfac3d4d_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-8.5.0-hfac3d4d_0.conda - sha256: a141fc55f8bfdab7db03fe9d8e61cb0f8c8b5970ed6540eda2db7186223f4444 - md5: f5126317dd0ce0ba26945e411ecc6960 + url: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hfac3d4d_0.conda + sha256: 5854e5ac2d3399ef30b59f15045c19fa5f0bab94d116bd75cac4d05181543dc3 + md5: c7b47c64af53e8ecee01d101eeab2342 depends: - cairo >=1.18.0,<2.0a0 - freetype >=2.12.1,<3.0a0 @@ -4841,8 +4870,8 @@ packages: license: MIT license_family: MIT purls: [] - size: 1598244 - timestamp: 1715701061364 + size: 1590518 + timestamp: 1719579998295 - kind: conda name: hdf5 version: 1.14.3 @@ -5882,47 +5911,45 @@ packages: - kind: conda name: libblas version: 3.9.0 - build: 22_linux64_openblas - build_number: 22 + build: 23_linux64_openblas + build_number: 23 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-22_linux64_openblas.conda - sha256: 082b8ac20d43a7bbcdc28b3b1cd40e4df3a8b5daf0a2d23d68953a44d2d12c1b - md5: 1a2a0cd3153464fee6646f3dd6dad9b8 + url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-23_linux64_openblas.conda + sha256: edb1cee5da3ac4936940052dcab6969673ba3874564f90f5110f8c11eed789c2 + md5: 96c8450a40aa2b9733073a9460de972c depends: - libopenblas >=0.3.27,<0.3.28.0a0 - libopenblas >=0.3.27,<1.0a0 constrains: - - libcblas 3.9.0 22_linux64_openblas + - liblapacke 3.9.0 23_linux64_openblas + - libcblas 3.9.0 23_linux64_openblas + - liblapack 3.9.0 23_linux64_openblas - blas * openblas - - liblapacke 3.9.0 22_linux64_openblas - - liblapack 3.9.0 22_linux64_openblas license: BSD-3-Clause - license_family: BSD purls: [] - size: 14537 - timestamp: 1712542250081 + size: 14880 + timestamp: 1721688759937 - kind: conda name: libblas version: 3.9.0 - build: 22_osxarm64_openblas - build_number: 22 + build: 23_osxarm64_openblas + build_number: 23 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-22_osxarm64_openblas.conda - sha256: 8620e13366076011cfcc6b2565c7a2d362c5d3f0423f54b9ef9bfc17b1a012a4 - md5: aeaf35355ef0f37c7c1ba35b7b7db55f + url: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-23_osxarm64_openblas.conda + sha256: 1c30da861e306a25fac8cd30ce0c1b31c9238d04e7768c381cf4d431b4361e6c + md5: acae9191e8772f5aff48ab5232d4d2a3 depends: - libopenblas >=0.3.27,<0.3.28.0a0 - libopenblas >=0.3.27,<1.0a0 constrains: + - liblapack 3.9.0 23_osxarm64_openblas - blas * openblas - - liblapack 3.9.0 22_osxarm64_openblas - - liblapacke 3.9.0 22_osxarm64_openblas - - libcblas 3.9.0 22_osxarm64_openblas + - liblapacke 3.9.0 23_osxarm64_openblas + - libcblas 3.9.0 23_osxarm64_openblas license: BSD-3-Clause - license_family: BSD purls: [] - size: 14824 - timestamp: 1712542396471 + size: 15103 + timestamp: 1721688997980 - kind: conda name: libbrotlicommon version: 1.1.0 @@ -6038,43 +6065,41 @@ packages: - kind: conda name: libcblas version: 3.9.0 - build: 22_linux64_openblas - build_number: 22 + build: 23_linux64_openblas + build_number: 23 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-22_linux64_openblas.conda - sha256: da1b2faa017663c8f5555c1c5518e96ac4cd8e0be2a673c1c9e2cb8507c8fe46 - md5: 4b31699e0ec5de64d5896e580389c9a1 + url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-23_linux64_openblas.conda + sha256: 3e7a3236e7e03e308e1667d91d0aa70edd0cba96b4b5563ef4adde088e0881a5 + md5: eede29b40efa878cbe5bdcb767e97310 depends: - - libblas 3.9.0 22_linux64_openblas + - libblas 3.9.0 23_linux64_openblas constrains: - - liblapack 3.9.0 22_linux64_openblas + - liblapacke 3.9.0 23_linux64_openblas + - liblapack 3.9.0 23_linux64_openblas - blas * openblas - - liblapacke 3.9.0 22_linux64_openblas license: BSD-3-Clause - license_family: BSD purls: [] - size: 14438 - timestamp: 1712542270166 + size: 14798 + timestamp: 1721688767584 - kind: conda name: libcblas version: 3.9.0 - build: 22_osxarm64_openblas - build_number: 22 + build: 23_osxarm64_openblas + build_number: 23 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-22_osxarm64_openblas.conda - sha256: 2c7902985dc77db1d7252b4e838d92a34b1729799ae402988d62d077868f6cca - md5: 37b3682240a69874a22658dedbca37d9 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-23_osxarm64_openblas.conda + sha256: c39d944909d0608bd0333398be5e0051045c9451bfd6cc6320732d33375569c8 + md5: bad6ee9b7d5584efc2bc5266137b5f0d depends: - - libblas 3.9.0 22_osxarm64_openblas + - libblas 3.9.0 23_osxarm64_openblas constrains: + - liblapack 3.9.0 23_osxarm64_openblas + - liblapacke 3.9.0 23_osxarm64_openblas - blas * openblas - - liblapack 3.9.0 22_osxarm64_openblas - - liblapacke 3.9.0 22_osxarm64_openblas license: BSD-3-Clause - license_family: BSD purls: [] - size: 14741 - timestamp: 1712542420590 + size: 14991 + timestamp: 1721689017803 - kind: conda name: libclang-cpp15 version: 15.0.7 @@ -6096,20 +6121,22 @@ packages: - kind: conda name: libclang13 version: 18.1.8 - build: default_h6ae225f_0 + build: default_h9def88c_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libclang13-18.1.8-default_h6ae225f_0.conda - sha256: c4c878a7419b6cce2b81d538025a577e1761e95731463aad7d211ebe5c8a2ede - md5: 28ad2db5c14d2e23d7962b8389e2cc0b + url: https://conda.anaconda.org/conda-forge/linux-64/libclang13-18.1.8-default_h9def88c_1.conda + sha256: ec9a672623c5d485e48bd14f36353ec0b5c14f516440dfbb6674b1c784289eb4 + md5: 04c8c481b30c3fe62bec148fa4a75857 depends: + - __glibc >=2.17,<3.0.a0 - libgcc-ng >=12 - libllvm18 >=18.1.8,<18.2.0a0 - libstdcxx-ng >=12 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 11033359 - timestamp: 1718868986747 + size: 11016960 + timestamp: 1721479548831 - kind: conda name: libcrc32c version: 1.1.2 @@ -6359,6 +6386,21 @@ packages: purls: [] size: 73730 timestamp: 1710362120304 +- kind: conda + name: libexpat + version: 2.6.2 + build: hebf3989_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.2-hebf3989_0.conda + sha256: ba7173ac30064ea901a4c9fb5a51846dcc25512ceb565759be7d18cbf3e5415e + md5: e3cde7cfa87f82f7cb13d482d5e0ad09 + constrains: + - expat 2.6.2.* + license: MIT + license_family: MIT + purls: [] + size: 63655 + timestamp: 1710362424980 - kind: conda name: libffi version: 3.4.2 @@ -6429,19 +6471,20 @@ packages: - kind: conda name: libgcrypt version: 1.11.0 - build: h4ab18f5_0 + build: h4ab18f5_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-1.11.0-h4ab18f5_0.conda - sha256: df01345f5f23ef268523f1fc6c088b6cec1b49c978b8b92da608b4d81c16d62f - md5: 0a00e32cabe3e571c0611387e7bc2042 + url: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-1.11.0-h4ab18f5_1.conda + sha256: 9e97e4a753d2ee238cfc7375f0882830f0d8c1667431bc9d070a0f6718355570 + md5: 14858a47d4cc995892e79f2b340682d7 depends: - libgcc-ng >=12 - libgpg-error >=1.50,<2.0a0 license: LGPL-2.1-or-later AND GPL-2.0-or-later license_family: GPL purls: [] - size: 685291 - timestamp: 1719405073729 + size: 684307 + timestamp: 1721392291497 - kind: conda name: libgettextpo version: 0.22.5 @@ -6762,43 +6805,41 @@ packages: - kind: conda name: liblapack version: 3.9.0 - build: 22_linux64_openblas - build_number: 22 + build: 23_linux64_openblas + build_number: 23 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-22_linux64_openblas.conda - sha256: db246341d42f9100d45adeb1a7ba8b1ef5b51ceb9056fd643e98046a3259fde6 - md5: b083767b6c877e24ee597d93b87ab838 + url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-23_linux64_openblas.conda + sha256: 25c7aef86c8a1d9db0e8ee61aa7462ba3b46b482027a65d66eb83e3e6f949043 + md5: 2af0879961951987e464722fd00ec1e0 depends: - - libblas 3.9.0 22_linux64_openblas + - libblas 3.9.0 23_linux64_openblas constrains: - - libcblas 3.9.0 22_linux64_openblas + - liblapacke 3.9.0 23_linux64_openblas + - libcblas 3.9.0 23_linux64_openblas - blas * openblas - - liblapacke 3.9.0 22_linux64_openblas license: BSD-3-Clause - license_family: BSD purls: [] - size: 14471 - timestamp: 1712542277696 + size: 14823 + timestamp: 1721688775172 - kind: conda name: liblapack version: 3.9.0 - build: 22_osxarm64_openblas - build_number: 22 + build: 23_osxarm64_openblas + build_number: 23 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-22_osxarm64_openblas.conda - sha256: 2b1b24c98d15a6a3ad54cf7c8fef1ddccf84b7c557cde08235aaeffd1ff50ee8 - md5: f2794950bc005e123b2c21f7fa3d7a6e + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-23_osxarm64_openblas.conda + sha256: 13799a137ffc80786725e7e2820d37d4c0d59dbb76013a14c21771415b0a4263 + md5: 754ef44f72ab80fd14eaa789ac393a27 depends: - - libblas 3.9.0 22_osxarm64_openblas + - libblas 3.9.0 23_osxarm64_openblas constrains: - blas * openblas - - liblapacke 3.9.0 22_osxarm64_openblas - - libcblas 3.9.0 22_osxarm64_openblas + - liblapacke 3.9.0 23_osxarm64_openblas + - libcblas 3.9.0 23_osxarm64_openblas license: BSD-3-Clause - license_family: BSD purls: [] - size: 14730 - timestamp: 1712542435551 + size: 14999 + timestamp: 1721689026268 - kind: conda name: libllvm15 version: 15.0.7 @@ -6840,12 +6881,14 @@ packages: - kind: conda name: libllvm18 version: 18.1.8 - build: hc9dba70_0 + build: h8b73ec9_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libllvm18-18.1.8-hc9dba70_0.conda - sha256: e29a5f79a746f33a73fe540ae46eaaf8bbb64abceeb9f056347d9f2112b8e799 - md5: f94ed0c5953c78dcca7adb953f4c5bfb + url: https://conda.anaconda.org/conda-forge/linux-64/libllvm18-18.1.8-h8b73ec9_1.conda + sha256: 8a04961ef1ef88a5af6632441580f607cf20c02d0f413bd11354929331cbe729 + md5: 16d94b3586ef3558e5a583598524deb4 depends: + - __glibc >=2.17,<3.0.a0 - libgcc-ng >=12 - libstdcxx-ng >=12 - libxml2 >=2.12.7,<3.0a0 @@ -6854,8 +6897,8 @@ packages: license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 38397164 - timestamp: 1718831290770 + size: 38233630 + timestamp: 1721183903221 - kind: conda name: libnghttp2 version: 1.58.0 @@ -6902,19 +6945,20 @@ packages: timestamp: 1702130473930 - kind: conda name: libnl - version: 3.9.0 - build: hd590300_0 + version: 3.10.0 + build: h4bc722e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libnl-3.9.0-hd590300_0.conda - sha256: aae03117811e704c3f3666e8374dd2e632f1d78bef0c27330e7298b24004819e - md5: d27c451db4f1d3c983c78167d2fdabc2 + url: https://conda.anaconda.org/conda-forge/linux-64/libnl-3.10.0-h4bc722e_0.conda + sha256: 51593540670434d304a14e31f783cedcaae8a8b4101e9d0d59a7d4051397cb04 + md5: 6221e705f55cf0533f0777ae54ad86c6 depends: + - __glibc >=2.17,<3.0.a0 - libgcc-ng >=12 license: LGPL-2.1-or-later license_family: LGPL purls: [] - size: 732866 - timestamp: 1702657849946 + size: 734296 + timestamp: 1721460768363 - kind: conda name: libnsl version: 2.0.1 @@ -7495,6 +7539,21 @@ packages: purls: [] size: 359805 timestamp: 1693089356642 +- kind: conda + name: libxcrypt + version: 4.4.36 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + license: LGPL-2.1-or-later + purls: [] + size: 100393 + timestamp: 1702724383534 - kind: conda name: libxkbcommon version: 1.7.0 @@ -8086,42 +8145,44 @@ packages: - kind: conda name: mysql-common version: 8.3.0 - build: hf1915f5_4 - build_number: 4 + build: h70512c7_5 + build_number: 5 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.3.0-hf1915f5_4.conda - sha256: 4cf6d29e091398735348550cb74cfd5006e04892d54b6b1ba916935f1af1a151 - md5: 784a4df6676c581ca624fbe460703a6d + url: https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.3.0-h70512c7_5.conda + sha256: 09296629aab020fb131c8256d8683087769c53ce5197ca3a2abe040bfb285d88 + md5: 4b652e3e572cbb3f297e77c96313faea depends: + - __glibc >=2.17,<3.0.a0 - libgcc-ng >=12 - libstdcxx-ng >=12 - - openssl >=3.2.1,<4.0a0 + - openssl >=3.3.1,<4.0a0 license: GPL-2.0-or-later license_family: GPL purls: [] - size: 784844 - timestamp: 1709910607121 + size: 780145 + timestamp: 1721386057930 - kind: conda name: mysql-libs version: 8.3.0 - build: hca2cd23_4 - build_number: 4 + build: ha479ceb_5 + build_number: 5 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.3.0-hca2cd23_4.conda - sha256: c39cdd1a5829aeffc611f789bdfd4dbd4ce1aa829c73d728defec180b5265d91 - md5: 1b50eebe2a738a3146c154d2eceaa8b6 + url: https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.3.0-ha479ceb_5.conda + sha256: c6e9b0961b6877eda8c300b12a0939c81f403a4eb5c0db802e13130fd5a3a059 + md5: 82776ee8145b9d1fd6546604de4b351d depends: + - __glibc >=2.17,<3.0.a0 - libgcc-ng >=12 - libstdcxx-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - - mysql-common 8.3.0 hf1915f5_4 - - openssl >=3.2.1,<4.0a0 - - zstd >=1.5.5,<1.6.0a0 + - libzlib >=1.3.1,<2.0a0 + - mysql-common 8.3.0 h70512c7_5 + - openssl >=3.3.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 license: GPL-2.0-or-later license_family: GPL purls: [] - size: 1537884 - timestamp: 1709910705541 + size: 1532137 + timestamp: 1721386157918 - kind: conda name: ncurses version: '6.5' @@ -8293,9 +8354,9 @@ packages: requires_python: '>=3.8' - kind: pypi name: nrel-sup3r - version: 0.1.3.dev161+gd1a8b475 + version: 0.1.3.dev334+g02385195.d20240723 path: . - sha256: 22266d783327e326f8344dd65bc46012c4026c446134bafe56faea9a0ce601d2 + sha256: 7d5df7b60044822a89c42af066c49703903f9d82a3c6394db259679ba5233e77 requires_dist: - nrel-rex>=0.2.84 - nrel-phygnn>=0.0.23 @@ -8486,13 +8547,14 @@ packages: - kind: conda name: openssl version: 3.3.1 - build: h4ab18f5_1 - build_number: 1 + build: h4bc722e_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4ab18f5_1.conda - sha256: ff3faf8d4c1c9aa4bd3263b596a68fcc6ac910297f354b2ce28718a3509db6d9 - md5: b1e9d076f14e8d776213fd5047b4c3d9 + url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4bc722e_2.conda + sha256: b294b3cc706ad1048cdb514f0db3da9f37ae3fcc0c53a7104083dd0918adb200 + md5: e1b454497f9f7c1147fdde4b53f1b512 depends: + - __glibc >=2.17,<3.0.a0 - ca-certificates - libgcc-ng >=12 constrains: @@ -8500,17 +8562,17 @@ packages: license: Apache-2.0 license_family: Apache purls: [] - size: 2896610 - timestamp: 1719363957188 + size: 2895213 + timestamp: 1721194688955 - kind: conda name: openssl version: 3.3.1 - build: hfb2fe0b_1 - build_number: 1 + build: hfb2fe0b_2 + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.3.1-hfb2fe0b_1.conda - sha256: 3ab411856c3bef88595473f0dd86e82de4f913f88319548acf262d5b1175b050 - md5: c665dec48e08311096823956642a501c + url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.3.1-hfb2fe0b_2.conda + sha256: dd7d988636f74473ebdfe15e05c5aabdb53a1d2a846c839d62289b0c37f81548 + md5: 9b551a504c1cc8f8b7b22c01814da8ba depends: - __osx >=11.0 - ca-certificates @@ -8519,8 +8581,8 @@ packages: license: Apache-2.0 license_family: Apache purls: [] - size: 2897767 - timestamp: 1719363723462 + size: 2899682 + timestamp: 1721194599446 - kind: conda name: opt_einsum version: 3.3.0 @@ -9077,21 +9139,21 @@ packages: timestamp: 1705690081905 - kind: conda name: pure_eval - version: 0.2.2 + version: 0.2.3 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2 - sha256: 72792f9fc2b1820e37cc57f84a27bc819c71088c3002ca6db05a2e56404f9d44 - md5: 6784285c7e55cb7212efabc79e4c2883 + url: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda + sha256: dcfcb3cee1ae0a89729601582cc3edea20ba13c9493967a03a693c67567af0c8 + md5: 0f051f09d992e0d08941706ad519ee0e depends: - python >=3.5 license: MIT license_family: MIT purls: - pkg:pypi/pure-eval?source=conda-forge-mapping - size: 14551 - timestamp: 1642876055775 + size: 16551 + timestamp: 1721585805256 - kind: conda name: pyarrow version: 15.0.0 @@ -9285,12 +9347,12 @@ packages: timestamp: 1706895211122 - kind: pypi name: pylint - version: 3.2.5 - url: https://files.pythonhosted.org/packages/2e/ff/7f52c1461d8ceaefa989d2700a027f84427879bb7571145bbffdec5d5f4a/pylint-3.2.5-py3-none-any.whl - sha256: 32cd6c042b5004b8e857d727708720c54a676d1e22917cf1a2df9b4d4868abd6 + version: 3.2.6 + url: https://files.pythonhosted.org/packages/09/88/1a406dd0b17a4796f025d8c937d8d56f97869cffa55c21d9edb07f5a3912/pylint-3.2.6-py3-none-any.whl + sha256: 03c8e3baa1d9fb995b12c1dbe00aa6c4bcef210c2a2634374aedeb22fb4a8f8f requires_dist: - platformdirs>=2.2.0 - - astroid<=3.3.0.dev0,>=3.2.2 + - astroid<=3.3.0.dev0,>=3.2.4 - isort!=5.13.0,<6,>=4.2.5 - mccabe<0.8,>=0.6 - tomlkit>=0.10.1 @@ -9305,13 +9367,13 @@ packages: requires_python: '>=3.8.0' - kind: conda name: pyopenssl - version: 24.0.0 + version: 24.2.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.0.0-pyhd8ed1ab_0.conda - sha256: bacd1d38585f447e2809e7621283661da7c97cfa20f545edb0ac5838356ed87b - md5: b50aec2c744a5c493c09cce9e2e7533e + url: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.2.1-pyhd8ed1ab_0.conda + sha256: 462ed9c13d6655327005c6e70aee534d0bf74607f039c9b5421e0cd650e4bc5c + md5: 3af1942211bc9c25d0160a8975203254 depends: - cryptography >=41.0.5,<43 - python >=3.7 @@ -9319,8 +9381,8 @@ packages: license_family: Apache purls: - pkg:pypi/pyopenssl?source=conda-forge-mapping - size: 127070 - timestamp: 1706660212326 + size: 127588 + timestamp: 1721521277834 - kind: conda name: pyparsing version: 3.1.2 @@ -9405,19 +9467,19 @@ packages: timestamp: 1661604969727 - kind: conda name: pytest - version: 8.2.2 + version: 8.3.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pytest-8.2.2-pyhd8ed1ab_0.conda - sha256: 00b7a49b31cf705b59edbd96219d8a67d2b9f51a913aa059fadd921b016965cb - md5: 0f3f49c22c7ef3a1195fa61dad3c43be + url: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.1-pyhd8ed1ab_0.conda + sha256: 23693df629c43f277b564abfcb321f6d9c4b6153a925ed004be7749bbc09ac3c + md5: b6a3ab8559a42070c6b6c3063faea1ed depends: - colorama - exceptiongroup >=1.0.0rc8 - iniconfig - packaging - - pluggy <2.0,>=1.5 + - pluggy <2,>=1.5 - python >=3.8 - tomli >=1 constrains: @@ -9426,64 +9488,87 @@ packages: license_family: MIT purls: - pkg:pypi/pytest?source=conda-forge-mapping - size: 257061 - timestamp: 1717533913269 + size: 258093 + timestamp: 1721511691954 +- kind: conda + name: pytest-xdist + version: 3.6.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda + sha256: c9f27ed55352bee2c9f7cc2fdaf12b322ee280b1989d7e763b4540d4fe7ec995 + md5: b39568655c127a9c4a44d178ac99b6d0 + depends: + - execnet >=2.1 + - pytest >=7.0.0 + - python >=3.8 + constrains: + - psutil >=3.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytest-xdist?source=conda-forge-mapping + size: 38320 + timestamp: 1718138508765 - kind: conda name: python - version: 3.11.0 - build: h3ba56d0_1_cpython - build_number: 1 + version: 3.11.9 + build: h932a869_0_cpython subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.0-h3ba56d0_1_cpython.conda - sha256: 28a54d78cd2624a12bd2ceb0f1816b0cba9b4fd97df846b5843b3c1d51642ab2 - md5: 2aa7ca3702d9afd323ca34a9d98879d1 + url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.9-h932a869_0_cpython.conda + sha256: a436ceabde1f056a0ac3e347dadc780ee2a135a421ddb6e9a469370769829e3c + md5: 293e0713ae804b5527a673e7605c04fc depends: + - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.2,<3.0a0 - libffi >=3.4,<4.0a0 - - libsqlite >=3.40.0,<4.0a0 + - libsqlite >=3.45.3,<4.0a0 - libzlib >=1.2.13,<2.0.0a0 - - ncurses >=6.3,<7.0a0 - - openssl >=3.0.7,<4.0a0 - - readline >=8.1.2,<9.0a0 - - tk >=8.6.12,<8.7.0a0 + - ncurses >=6.4.20240210,<7.0a0 + - openssl >=3.2.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 - tzdata - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.11.* *_cp311 license: Python-2.0 purls: [] - size: 14492975 - timestamp: 1673699560906 + size: 14644189 + timestamp: 1713552154779 - kind: conda name: python - version: 3.11.0 - build: he550d4f_1_cpython - build_number: 1 + version: 3.11.9 + build: hb806964_0_cpython subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.0-he550d4f_1_cpython.conda - sha256: 464f998e406b645ba34771bb53a0a7c2734e855ee78dd021aa4dedfdb65659b7 - md5: 8d14fc2aa12db370a443753c8230be1e + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.9-hb806964_0_cpython.conda + sha256: 177f33a1fb8d3476b38f73c37b42f01c0b014fa0e039a701fd9f83d83aae6d40 + md5: ac68acfa8b558ed406c75e98d3428d7b depends: - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.2,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc-ng >=12 - - libnsl >=2.0.0,<2.1.0a0 - - libsqlite >=3.40.0,<4.0a0 - - libuuid >=2.32.1,<3.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.45.3,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 - libzlib >=1.2.13,<2.0.0a0 - - ncurses >=6.3,<7.0a0 - - openssl >=3.0.7,<4.0a0 - - readline >=8.1.2,<9.0a0 - - tk >=8.6.12,<8.7.0a0 + - ncurses >=6.4.20240210,<7.0a0 + - openssl >=3.2.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 - tzdata - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.11.* *_cp311 license: Python-2.0 purls: [] - size: 31476523 - timestamp: 1673700777998 + size: 30884494 + timestamp: 1713553104915 - kind: conda name: python-dateutil version: 2.9.0 @@ -9679,12 +9764,12 @@ packages: - kind: conda name: qt-main version: 5.15.8 - build: ha2b5568_22 - build_number: 22 + build: h320f8da_24 + build_number: 24 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.8-ha2b5568_22.conda - sha256: e621b4445b08c353cd754e8b1e529ed6d27b53d23629064e504727225e291017 - md5: 15de976572f24032540236006d6d0e9f + url: https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.8-h320f8da_24.conda + sha256: 43773cf96efce22f8c46b4666fba89953c71cad60b309693147fb90b04557c64 + md5: bec111b67cb8dc63277c6af65d214044 depends: - __glibc >=2.17,<3.0.a0 - alsa-lib >=1.2.12,<1.3.0a0 @@ -9694,16 +9779,16 @@ packages: - freetype >=2.12.1,<3.0a0 - gst-plugins-base >=1.24.5,<1.25.0a0 - gstreamer >=1.24.5,<1.25.0a0 - - harfbuzz >=8.5.0,<9.0a0 + - harfbuzz >=9.0.0,<10.0a0 - icu >=73.2,<74.0a0 - - krb5 >=1.21.2,<1.22.0a0 + - krb5 >=1.21.3,<1.22.0a0 - libclang-cpp15 >=15.0.7,<15.1.0a0 - libclang13 >=15.0.7 - libcups >=2.3.3,<2.4.0a0 - libevent >=2.1.12,<2.1.13.0a0 - libexpat >=2.6.2,<3.0a0 - libgcc-ng >=12 - - libglib >=2.80.2,<3.0a0 + - libglib >=2.80.3,<3.0a0 - libjpeg-turbo >=3.0.0,<4.0a0 - libllvm15 >=15.0.7,<15.1.0a0 - libpng >=1.6.43,<1.7.0a0 @@ -9716,7 +9801,7 @@ packages: - libzlib >=1.3.1,<2.0a0 - mysql-libs >=8.3.0,<8.4.0a0 - nspr >=4.35,<5.0a0 - - nss >=3.101,<4.0a0 + - nss >=3.102,<4.0a0 - openssl >=3.3.1,<4.0a0 - pulseaudio-client >=17.0,<17.1.0a0 - xcb-util >=0.4.1,<0.5.0a0 @@ -9735,8 +9820,8 @@ packages: license: LGPL-3.0-only license_family: LGPL purls: [] - size: 61406677 - timestamp: 1719032641557 + size: 60403438 + timestamp: 1721277287096 - kind: conda name: rdma-core version: '52.0' @@ -9964,12 +10049,12 @@ packages: timestamp: 1658329024970 - kind: conda name: ruff - version: 0.5.1 + version: 0.5.2 build: py311hce3a109_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.5.1-py311hce3a109_0.conda - sha256: 935106ff3da7d15bc1f7cab3d43bfb52a6e5c56f63de6a9dc7d13754b25fad6d - md5: 49023d04146fa4d61bd2c8f251fd9d8e + url: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.5.2-py311hce3a109_0.conda + sha256: 57b5f4e1573392dc44957f1e027a85797f185ef332a92b25eb18cdde4ce19f11 + md5: 750bfee62849b2e65735107aa5acdfa4 depends: - __glibc >=2.17,<3.0.a0 - libgcc-ng >=12 @@ -9982,16 +10067,16 @@ packages: license_family: MIT purls: - pkg:pypi/ruff?source=conda-forge-mapping - size: 7168346 - timestamp: 1720324035001 + size: 7154470 + timestamp: 1720986952497 - kind: conda name: ruff - version: 0.5.1 + version: 0.5.2 build: py311hd374d79_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.5.1-py311hd374d79_0.conda - sha256: 90129e285e2505a87401fd52ea5b92498ae0a9fdee6cddd8fea66eedda49ca94 - md5: e564d8501d85ed83ebbfb07d0ee5542f + url: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.5.2-py311hd374d79_0.conda + sha256: e3f595c57528cbd1bc9c69b46ebcabc6fbfdf514583b837f301481edbbe68ea0 + md5: bced605a88675788f0c6437c8759c7ae depends: - __osx >=11.0 - libcxx >=16 @@ -10004,8 +10089,8 @@ packages: license_family: MIT purls: - pkg:pypi/ruff?source=conda-forge-mapping - size: 5834081 - timestamp: 1720324428397 + size: 5827787 + timestamp: 1720987101957 - kind: conda name: s2n version: 1.4.1 @@ -10223,21 +10308,21 @@ packages: timestamp: 1695551942931 - kind: conda name: setuptools - version: 70.3.0 + version: 71.0.4 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/setuptools-70.3.0-pyhd8ed1ab_0.conda - sha256: 869ea7688c040911ac1050d5765fa1f3d8ea1858c9f9cecb0df136a2f5e44f46 - md5: 693bb57e8f92120caa956898065f3627 + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-71.0.4-pyhd8ed1ab_0.conda + sha256: e1b5dd28d2ea2a7ad660fbc8d1f2ef682a2f8460f80240d836d62e56225ac680 + md5: ee78ac9c720d0d02fcfd420866b82ab1 depends: - python >=3.8 license: MIT license_family: MIT purls: - pkg:pypi/setuptools?source=conda-forge-mapping - size: 496453 - timestamp: 1720782643725 + size: 1463254 + timestamp: 1721475299854 - kind: conda name: sip version: 6.7.12 @@ -10346,26 +10431,26 @@ packages: timestamp: 1621217159824 - kind: conda name: sphinx - version: 7.3.7 + version: 7.4.7 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.3.7-pyhd8ed1ab_0.conda - sha256: 41101e2b0b8722087f06bd73251ba95ef89db515982b6a89aeebfa98ebcb65a1 - md5: 7b1465205e28d75d2c0e1a868ee00a67 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.4.7-pyhd8ed1ab_0.conda + sha256: 0de25d561b20dd06982df45a2c3cef490e45b0d4bae8d2c290030721bdadecd6 + md5: c568e260463da2528ecfd7c5a0b41bbd depends: - alabaster >=0.7.14,<0.8.dev0 - - babel >=2.9 - - colorama >=0.4.5 - - docutils >=0.18.1,<0.22 + - babel >=2.13 + - colorama >=0.4.6 + - docutils >=0.20,<0.22 - imagesize >=1.3 - - importlib-metadata >=4.8 - - jinja2 >=3.0 - - packaging >=21.0 - - pygments >=2.14 + - importlib-metadata >=6.0 + - jinja2 >=3.1 + - packaging >=23.0 + - pygments >=2.17 - python >=3.9 - - requests >=2.25.0 - - snowballstemmer >=2.0 + - requests >=2.30.0 + - snowballstemmer >=2.2 - sphinxcontrib-applehelp - sphinxcontrib-devhelp - sphinxcontrib-htmlhelp >=2.0.0 @@ -10377,8 +10462,8 @@ packages: license_family: BSD purls: - pkg:pypi/sphinx?source=conda-forge-mapping - size: 1345378 - timestamp: 1713555005540 + size: 1358660 + timestamp: 1721487658869 - kind: pypi name: sphinx-click version: 6.0.0 @@ -10479,13 +10564,13 @@ packages: timestamp: 1705126153592 - kind: conda name: sphinxcontrib-htmlhelp - version: 2.0.5 + version: 2.0.6 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.5-pyhd8ed1ab_0.conda - sha256: 512f393cfe34cb3de96ade7a7ad900d6278e2087a1f0e5732aa60fadee396d99 - md5: 7e1e7437273682ada2ed5e9e9714b140 + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.6-pyhd8ed1ab_0.conda + sha256: ef8a4e783dba8003273622059363ada968009ca36f853c5faa54ea0f2f789fd3 + md5: d6f4b617daa8c677f60c06a3a61e2743 depends: - python >=3.9 - sphinx >=5 @@ -10493,8 +10578,8 @@ packages: license_family: BSD purls: - pkg:pypi/sphinxcontrib-htmlhelp?source=conda-forge-mapping - size: 33499 - timestamp: 1705118297318 + size: 32515 + timestamp: 1721494088852 - kind: conda name: sphinxcontrib-jquery version: '4.1' @@ -10531,13 +10616,13 @@ packages: timestamp: 1691604844204 - kind: conda name: sphinxcontrib-qthelp - version: 1.0.7 + version: 1.0.8 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.7-pyhd8ed1ab_0.conda - sha256: dd35b52f056c39081cd0ae01155174277af579b69e5d83798a33e9056ec78d63 - md5: 26acae54b06f178681bfb551760f5dd1 + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.8-pyhd8ed1ab_0.conda + sha256: d644031a17b970c89b11ebd6ff56e7dafc71d9096754840e7742e6597238527f + md5: 179912c661d6aa9fe794e81c854f8d9f depends: - python >=3.9 - sphinx >=5 @@ -10545,8 +10630,8 @@ packages: license_family: BSD purls: - pkg:pypi/sphinxcontrib-qthelp?source=conda-forge-mapping - size: 27005 - timestamp: 1705126340442 + size: 26753 + timestamp: 1721493589439 - kind: conda name: sphinxcontrib-serializinghtml version: 1.1.10 @@ -11779,13 +11864,12 @@ packages: timestamp: 1716874213487 - kind: conda name: zstandard - version: 0.22.0 - build: py311h4a6b76e_1 - build_number: 1 + version: 0.23.0 + build: py311h4a6b76e_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.22.0-py311h4a6b76e_1.conda - sha256: b7b86382936a604d58af2706933c743c124bd9078054e13e6b76d57807596613 - md5: 34b2bd2270fd11f9926e0498c0c87a05 + url: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311h4a6b76e_0.conda + sha256: c372898778c58816cf8ad0031504ffb9a451d92c8547e2e524e6e61c1df5d9a3 + md5: 0571c2ddfd8f08fbf08f3333ac826b2d depends: - __osx >=11.0 - cffi >=1.11 @@ -11798,18 +11882,18 @@ packages: license_family: BSD purls: - pkg:pypi/zstandard?source=conda-forge-mapping - size: 332160 - timestamp: 1718866671859 + size: 332378 + timestamp: 1721044254516 - kind: conda name: zstandard - version: 0.22.0 - build: py311hb6f056b_1 - build_number: 1 + version: 0.23.0 + build: py311h5cd10c7_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.22.0-py311hb6f056b_1.conda - sha256: 9980740f9b5f9028288c71b750d6a6691d0676ae50db97866d9ee34ab51e8b16 - md5: 72e84ef20a510ab5fca1f3d80a16e9e2 + url: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311h5cd10c7_0.conda + sha256: ee4e7202ed6d6027eabb9669252b4dfd8144d4fde644435ebe39ab608086e7af + md5: 8efe4fe2396281627b3450af8357b190 depends: + - __glibc >=2.17,<3.0.a0 - cffi >=1.11 - libgcc-ng >=12 - python >=3.11,<3.12.0a0 @@ -11820,8 +11904,8 @@ packages: license_family: BSD purls: - pkg:pypi/zstandard?source=conda-forge-mapping - size: 415158 - timestamp: 1718866512189 + size: 416323 + timestamp: 1721044178290 - kind: conda name: zstd version: 1.5.6 diff --git a/pyproject.toml b/pyproject.toml index ce1988db8..5bebc104f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -77,7 +77,11 @@ exclude = [ ] [tool.ruff.lint] -fixable = [] +fixable = [ + "E225", # missing-whitespace-around-operator + "E303", # too-many-blank-lines + "UP039", # unnecessary-class-parentheses + ] # preview = true # logger-objects = [] task-tags = ["TODO", "FIXME", "XXX"] @@ -210,6 +214,9 @@ ignore = [ # redundant-keyword-arg # c-extension-no-member +[tool.ruff.lint.flake8-quotes] +inline-quotes = 'single' + [tool.ruff.lint.mccabe] # Flag errors (`C901`) whenever the complexity level exceeds 5. max-complexity = 12 @@ -253,13 +260,13 @@ channels = ["conda-forge", "anaconda", "main"] platforms = ["osx-arm64", "linux-64"] [tool.pixi.dependencies] -python = "==3.11" +python = "~=3.11.0" cftime = ">=1.6.2" dask = ">=2022.0" h5netcdf = ">=1.1.0" pillow = ">=10.0" matplotlib = ">=3.1" -numpy = ">=1.7.0" +numpy = "~=1.7" pandas = ">=2.0" scipy = ">=1.0.0" tensorflow = ">2.4,<2.16" @@ -279,6 +286,7 @@ doc = { features = ["doc"], solve-group = "default" } test = { features = ["test"], solve-group = "default" } [tool.pixi.tasks] +test = "pytest --pdb --durations=10 tests" [tool.pixi.feature.doc.dependencies] sphinx = ">=7.0" @@ -292,3 +300,4 @@ build = ">=0.6" twine = ">=5.0" ruff = ">=0.4" ipython = ">=8.0" +pytest-xdist = ">=3.0" diff --git a/sup3r/bias/__init__.py b/sup3r/bias/__init__.py index 6fd24ddfe..cb91350c0 100644 --- a/sup3r/bias/__init__.py +++ b/sup3r/bias/__init__.py @@ -1,19 +1,22 @@ """Bias calculation and correction modules.""" -from .bias_transforms import (global_linear_bc, local_linear_bc, - local_qdm_bc, monthly_local_linear_bc) from .bias_calc import (LinearCorrection, MonthlyLinearCorrection, MonthlyScalarCorrection, SkillAssessment) -from .qdm import QuantileDeltaMappingCorrection +from .bias_transforms import (global_linear_bc, local_linear_bc, + local_qdm_bc, local_presrat_bc, + monthly_local_linear_bc) +from .qdm import PresRat, QuantileDeltaMappingCorrection __all__ = [ "global_linear_bc", "local_linear_bc", "local_qdm_bc", + "local_presrat_bc", "monthly_local_linear_bc", "LinearCorrection", "MonthlyLinearCorrection", "MonthlyScalarCorrection", + "PresRat", "QuantileDeltaMappingCorrection", "SkillAssessment", ] diff --git a/sup3r/bias/bias_calc.py b/sup3r/bias/bias_calc.py index 05dfd7c7d..5fa77e98d 100644 --- a/sup3r/bias/bias_calc.py +++ b/sup3r/bias/bias_calc.py @@ -984,7 +984,7 @@ def run(self, class MonthlyLinearCorrection(LinearCorrection): """Calculate linear correction *scalar +adder factors to bias correct data - This calculation operates on single bias sites on a montly basis + This calculation operates on single bias sites on a monthly basis """ NT = 12 @@ -1044,7 +1044,7 @@ class MonthlyScalarCorrection(MonthlyLinearCorrection): scalar factors are computed as mean(base_data) / mean(bias_data). Adder factors are still written but are exactly zero. - This calculation operates on single bias sites on a montly basis + This calculation operates on single bias sites on a monthly basis """ @staticmethod diff --git a/sup3r/bias/bias_transforms.py b/sup3r/bias/bias_transforms.py index 7d8af060a..da6517069 100644 --- a/sup3r/bias/bias_transforms.py +++ b/sup3r/bias/bias_transforms.py @@ -14,10 +14,50 @@ logger = logging.getLogger(__name__) -def _get_factors(lat_lon, ds, bias_fp, threshold=0.1): +def _get_factors(lat_lon, var_names, bias_fp, threshold=0.1): + """Get bias correction factors from sup3r's standard resource + + This was stripped without any change from original + `get_spatial_bc_factors` to allow re-use in other `*_bc_factors` + functions. + + Parameters + ---------- + lat_lon : np.ndarray + Array of latitudes and longitudes for the domain to bias correct + (n_lats, n_lons, 2) + var_names : dict + A dictionary mapping the expected variable name in the `Resource` + and the desired name to output. For instance the dictionary + `{'base': 'base_ghi_params'}` would return a `params['base']` with + a value equals to `base_ghi_params` from the `bias_fp` file. + bias_fp : str + Filepath to bias correction file from the bias calc module. Must have + datasets defined as values of the dictionary `var_names` given as an + input argument, such as "{feature_name}_scalar" or + "base_{base_dset}_params". Those are the full low-resolution shape of + the forward pass input that will be sliced using lr_padded_slice for + the current chunk. + threshold : float + Nearest neighbor euclidean distance threshold. If the coordinates are + more than this value away from the bias correction lat/lon, an error is + raised. + + Return + ------ + dict : + A dictionary with the content from `bias_fp` as mapped by `var_names`, + therefore, the keys here are the same keys in `var_names`. + """ with Resource(bias_fp) as res: lat = np.expand_dims(res['latitude'], axis=-1) lon = np.expand_dims(res['longitude'], axis=-1) + assert ( + np.diff(lat[:, :, 0], axis=0) <= 0 + ).all(), 'Require latitude in decreasing order' + assert ( + np.diff(lon[:, :, 0], axis=1) >= 0 + ).all(), 'Require longitude in increasing order' lat_lon_bc = np.dstack((lat, lon)) diff = lat_lon_bc - lat_lon[:1, :1] diff = np.hypot(diff[..., 0], diff[..., 1]) @@ -37,12 +77,15 @@ def _get_factors(lat_lon, ds, bias_fp, threshold=0.1): raise RuntimeError(msg) res_names = [r.lower() for r in res.dsets] - missing = [d for d in ds.values() if d.lower() not in res_names] + missing = [d for d in var_names.values() if d.lower() not in res_names] msg = f'Missing {" and ".join(missing)} in resource: {bias_fp}.' assert missing == [], msg - varnames = {k: res.dsets[res_names.index(ds[k].lower())] for k in ds} - out = {k: res[varnames[k], slice_y, slice_x] for k in ds} + varnames = { + k: res.dsets[res_names.index(var_names[k].lower())] + for k in var_names + } + out = {k: res[varnames[k], slice_y, slice_x] for k in var_names} return out @@ -70,9 +113,10 @@ def get_spatial_bc_factors(lat_lon, feature_name, bias_fp, threshold=0.1): more than this value away from the bias correction lat/lon, an error is raised. """ - ds = {'scalar': f'{feature_name}_scalar', - 'adder': f'{feature_name}_adder'} - out = _get_factors(lat_lon, ds, bias_fp, threshold) + var_names = {'scalar': f'{feature_name}_scalar', + 'adder': f'{feature_name}_adder', + } + out = _get_factors(lat_lon, var_names, bias_fp, threshold) return out['scalar'], out['adder'] @@ -115,27 +159,29 @@ def get_spatial_bc_quantiles(lat_lon: np.array, Returns ------- - base : np.array - Parameters used to define the statistical distribution estimated for - the ``base_dset``. It has a shape of (I, J, P), where (I, J) are the - same first two dimensions of the given `lat_lon` and P is the number - of parameters and depends on the type of distribution. See - :class:`~sup3r.bias.qdm.QuantileDeltaMappingCorrection` for more - details. - bias : np.array - Parameters used to define the statistical distribution estimated for - (historical) ``feature_name``. It has a shape of (I, J, P), where - (I, J) are the same first two dimensions of the given `lat_lon` and P - is the number of parameters and depends on the type of distribution. - See :class:`~sup3r.bias.qdm.QuantileDeltaMappingCorrection` for - more details. - bias_fut : np.array - Parameters used to define the statistical distribution estimated for - (future) ``feature_name``. It has a shape of (I, J, P), where (I, J) - are the same first two dimensions of the given `lat_lon` and P is the - number of parameters used and depends on the type of distribution. See - :class:`~sup3r.bias.qdm.QuantileDeltaMappingCorrection` for more - details. + params : dict + A dictionary collecting the following parameters: + - base : np.array + Parameters used to define the statistical distribution estimated for + the ``base_dset``. It has a shape of (I, J, P), where (I, J) are the + same first two dimensions of the given `lat_lon` and P is the number + of parameters and depends on the type of distribution. See + :class:`~sup3r.bias.qdm.QuantileDeltaMappingCorrection` for more + details. + - bias : np.array + Parameters used to define the statistical distribution estimated for + (historical) ``feature_name``. It has a shape of (I, J, P), where + (I, J) are the same first two dimensions of the given `lat_lon` and P + is the number of parameters and depends on the type of distribution. + See :class:`~sup3r.bias.qdm.QuantileDeltaMappingCorrection` for + more details. + - bias_fut : np.array + Parameters used to define the statistical distribution estimated for + (future) ``feature_name``. It has a shape of (I, J, P), where (I, J) + are the same first two dimensions of the given `lat_lon` and P is the + number of parameters used and depends on the type of distribution. + See :class:`~sup3r.bias.qdm.QuantileDeltaMappingCorrection` for more + details. cfg : dict Metadata used to guide how to use of the previous parameters on reconstructing the statistical distributions. For instance, @@ -159,18 +205,19 @@ def get_spatial_bc_quantiles(lat_lon: np.array, >>> lat_lon = np.array([ ... [39.649033, -105.46875 ], ... [39.649033, -104.765625]]) - >>> params = get_spatial_bc_quantiles( - ... lat_lon, "ghi", "rsds", "./dist_params.hdf") + >>> params, cfg = get_spatial_bc_quantiles( + ... lat_lon, "ghi", "rsds", "./dist_params.hdf") """ - ds = {'base': f'base_{base_dset}_params', - 'bias': f'bias_{feature_name}_params', - 'bias_fut': f'bias_fut_{feature_name}_params'} - out = _get_factors(lat_lon, ds, bias_fp, threshold) + var_names = {'base': f'base_{base_dset}_params', + 'bias': f'bias_{feature_name}_params', + 'bias_fut': f'bias_fut_{feature_name}_params', + } + params = _get_factors(lat_lon, var_names, bias_fp, threshold) with Resource(bias_fp) as res: cfg = res.global_attrs - return out['base'], out['bias'], out['bias_fut'], cfg + return params, cfg def global_linear_bc(input, scalar, adder, out_range=None): @@ -505,11 +552,14 @@ def local_qdm_bc(data: np.ndarray, data.shape[2] == time_index.size ), 'Time should align with data 3rd dimension' - base, bias, bias_fut, cfg = get_spatial_bc_quantiles(lat_lon, - base_dset, - feature_name, - bias_fp, - threshold) + params, cfg = get_spatial_bc_quantiles(lat_lon, + base_dset, + feature_name, + bias_fp, + threshold) + base = params['base'] + bias = params['bias'] + bias_fut = params['bias_fut'] if lr_padded_slice is not None: spatial_slice = (lr_padded_slice[0], lr_padded_slice[1]) @@ -561,3 +611,258 @@ def local_qdm_bc(data: np.ndarray, output[:, :, subset_idx] = tmp return output + + +def get_spatial_bc_presrat(lat_lon: np.array, + base_dset: str, + feature_name: str, + bias_fp: str, + threshold: float = 0.1): + """Statistical distributions previously estimated for given lat/lon points + + Recover the parameters that describe the statistical distribution + previously estimated with :class:`~sup3r.bias.PresRat` for three datasets: + ``base`` (historical reference), ``bias`` (historical biased reference), + and ``bias_fut`` (the future biased dataset, usually the data to correct). + + Parameters + ---------- + lat_lon : ndarray + Array of latitudes and longitudes for the domain to bias correct + (n_lats, n_lons, 2) + base_dset : str + Name of feature used as historical reference. A Dataset with name + "base_{base_dset}_params" will be retrieved from ``bias_fp``. + feature_name : str + Name of the feature that is being corrected. Datasets with names + "bias_{feature_name}_params" and "bias_fut_{feature_name}_params" will + be retrieved from ``bias_fp``. + bias_fp : str + Filepath to bias correction file from the bias calc module. Must have + datasets "base_{base_dset}_params", "bias_{feature_name}_params", and + "bias_fut_{feature_name}_params" that define the statistical + distributions. + threshold : float + Nearest neighbor euclidean distance threshold. If the coordinates are + more than this value away from the bias correction lat/lon, an error + is raised. + + Returns + ------- + dict : + A dictionary containing: + - base : np.array + Parameters used to define the statistical distribution estimated for + the ``base_dset``. It has a shape of (I, J, T, P), where (I, J) are + the same first two dimensions of the given `lat_lon`; T is time in + intervals equally spaced along a year. Check + `cfg['time_window_center']` below to map each T to a day of the + year; and P is the number of parameters and depends on the type of + distribution. See :class:`~sup3r.bias.PresRat` for more details. + - bias : np.array + Parameters used to define the statistical distribution estimated for + (historical) ``feature_name``. It has a shape of (I, J, T, P), where + (I, J) are the same first two dimensions of the given `lat_lon`; T + is time in intervals equally spaced along a year. Check + `cfg['time_window_center']` to map each T to a day of the year; and P + is the number of parameters and depends on the type of distribution. + See :class:`~sup3r.bias.PresRat` for more details. + - bias_fut : np.array + Parameters used to define the statistical distribution estimated for + (future) ``feature_name``. It has a shape of (I, J, T, P), where + (I, J) are the same first two dimensions of the given `lat_lon`; T + is time in intervals equally spaced along a year. Check + `cfg['time_window_center']` to map each T to a day of the year; and + P is the number of parameters used and depends on the type of + distribution. + See :class:`~sup3r.bias.PresRat` for more details. + - bias_tau_fut : np.array + The threshold for negligible magnitudes. Any value smaller than that + should be replaced by zero to preserve the zero (precipitation) + rate. I has dimension of (I, J, dummy), where (I, J) are the same + first two dimensions of the given `lat_lon`; and a dummy 3rd + dimension required due to the way sup3r saves data in an HDF. + - k_factor : np.array + The K factor used to preserve the mean rate of change from the model + (see [Pierce2015]_). It has a shape of (I, J, T), where (I, J) are + the same first two dimensions of the given `lat_lon`; T is time in + intervals equally spaced along a year. Check + `cfg['time_window_center']` to map each T to a day of the year. + cfg : dict + Metadata used to guide how to use of the previous parameters on + reconstructing the statistical distributions. For instance, + `cfg['dist']` defines the type of distribution, and + `cfg['time_window_center']` maps the dimension T in days of the + year for the dimension T of the parameters above. See + :class:`~sup3r.bias.PresRat` for more details, including which + metadata is saved. + + Warnings + -------- + Be careful selecting which `bias_fp` to use. In particular, if + "bias_fut_{feature_name}_params" is representative for the desired target + period. + + See Also + -------- + sup3r.bias.PresRat + Estimate the statistical distributions loaded here. + + References + ---------- + .. [Pierce2015] Pierce, D. W., Cayan, D. R., Maurer, E. P., Abatzoglou, J. + T., & Hegewisch, K. C. (2015). Improved bias correction techniques for + hydrological simulations of climate change. Journal of Hydrometeorology, + 16(6), 2421-2442. + + Examples + -------- + >>> lat_lon = np.array([ + ... [39.649033, -105.46875 ], + ... [39.649033, -104.765625]]) + >>> params, cfg = get_spatial_bc_quantiles( + ... lat_lon, "ghi", "rsds", "./dist_params.hdf") + """ + ds = {'base': f'base_{base_dset}_params', + 'bias': f'bias_{feature_name}_params', + 'bias_fut': f'bias_fut_{feature_name}_params', + 'bias_tau_fut': f'{feature_name}_tau_fut', + 'k_factor': f'{feature_name}_k_factor', + } + params = _get_factors(lat_lon, ds, bias_fp, threshold) + + with Resource(bias_fp) as res: + cfg = res.global_attrs + + return params, cfg + + +def local_presrat_bc(data: np.ndarray, + lat_lon: np.ndarray, + base_dset: str, + feature_name: str, + bias_fp, + time_index: np.ndarray, + lr_padded_slice=None, + threshold=0.1, + relative=True, + no_trend=False, + ): + """Bias correction using PresRat + + Parameters + ---------- + data : np.ndarray + Sup3r input data to be bias corrected, assumed to be 3D with shape + (spatial, spatial, temporal) for a single feature. + lat_lon : np.ndarray + Array of latitudes and longitudes for the domain to bias correct + (n_lats, n_lons, 2) + base_dset : + Name of feature that is used as (historical) reference. Dataset with + names "base_{base_dset}_params" will be retrieved. + feature_name : str + Name of feature that is being corrected. Datasets with names + "bias_{feature_name}_params" and "bias_fut_{feature_name}_params" will + be retrieved. + bias_fp : str + Filepath to statistical distributions file from the bias calc module. + Must have datasets "bias_{feature_name}_params", + "bias_fut_{feature_name}_params", and "base_{base_dset}_params" that + are the parameters to define the statistical distributions to be used + to correct the given `data`. + time_index : pd.DatetimeIndex + DatetimeIndex object associated with the input data temporal axis + (assumed 3rd axis e.g. axis=2). Note that if this method is called as + part of a sup3r resolution forward pass, the time_index will be + included automatically for the current chunk. + lr_padded_slice : tuple | None + Tuple of length four that slices (spatial_1, spatial_2, temporal, + features) where each tuple entry is a slice object for that axes. + Note that if this method is called as part of a sup3r forward pass, the + lr_padded_slice will be included automatically in the kwargs for the + active chunk. If this is None, no slicing will be done and the full + bias correction source shape will be used. + threshold : float + Nearest neighbor euclidean distance threshold. If the coordinates are + more than this value away from the bias correction lat/lon, an error + is raised. + relative : bool + Apply QDM correction as a relative factor (product), otherwise, it is + applied as an offset (sum). + no_trend: bool, default=False + An option to ignore the trend component of the correction, thus + resulting in an ordinary Quantile Mapping, i.e. corrects the bias by + comparing the distributions of the biased dataset with a reference + datasets, without reinforcing the zero rate or applying the k-factor. + See ``params_mf`` of + :class:`rex.utilities.bc_utils.QuantileDeltaMapping`. Note that this + assumes that params_mh is the data distribution representative for the + target data. + """ + assert data.ndim == 3, 'data was expected to be a 3D array' + assert ( + data.shape[-1] == time_index.size + ), 'The last dimension of data should be time' + + params, cfg = get_spatial_bc_presrat( + lat_lon, base_dset, feature_name, bias_fp, threshold + ) + time_window_center = cfg['time_window_center'] + base = params['base'] + bias = params['bias'] + bias_fut = params['bias_fut'] + bias_tau_fut = params['bias_tau_fut'] + + if lr_padded_slice is not None: + spatial_slice = (lr_padded_slice[0], lr_padded_slice[1]) + base = base[spatial_slice] + bias = bias[spatial_slice] + bias_fut = bias_fut[spatial_slice] + + data_unbiased = np.full_like(data, np.nan) + closest_time_idx = abs( + time_window_center[:, np.newaxis] - np.array(time_index.day_of_year) + ).argmin(axis=0) + for nt in set(closest_time_idx): + subset_idx = closest_time_idx == nt + subset = data[:, :, subset_idx] + oh = base[:, :, nt] + mh = bias[:, :, nt] + mf = bias_fut[:, :, nt] + + if no_trend: + mf = None + else: + mf = mf.reshape(-1, mf.shape[-1]) + # The distributions are 3D (space, space, N-params) + # Collapse 3D (space, space, N) into 2D (space**2, N) + QDM = QuantileDeltaMapping(oh.reshape(-1, oh.shape[-1]), + mh.reshape(-1, mh.shape[-1]), + mf, + dist=cfg['dist'], + relative=relative, + sampling=cfg['sampling'], + log_base=cfg['log_base'], + ) + + # input 3D shape (spatial, spatial, temporal) + # QDM expects input arr with shape (time, space) + tmp = subset.reshape(-1, subset.shape[-1]).T + # Apply QDM correction + tmp = QDM(tmp) + # Reorgnize array back from (time, space) + # to (spatial, spatial, temporal) + subset = tmp.T.reshape(subset.shape) + + # If no trend, it doesn't make sense to correct for zero rate or + # apply the k-factor, but limit to QDM only. + if not no_trend: + subset = np.where(subset < bias_tau_fut, 0, subset) + + k_factor = params['k_factor'][:, :, nt] + subset = subset * k_factor[:, :, np.newaxis] + + data_unbiased[:, :, subset_idx] = subset + + return data_unbiased diff --git a/sup3r/bias/mixins.py b/sup3r/bias/mixins.py index 1d8c8174a..be9504723 100644 --- a/sup3r/bias/mixins.py +++ b/sup3r/bias/mixins.py @@ -92,3 +92,62 @@ def fill_and_smooth(self, out[key][~nan_mask, idt] = arr_smooth_int[~nan_mask] return out + + +class ZeroRateMixin: + """Estimate zero rate + + + [Pierce2015]_. + + References + ---------- + .. [Pierce2015] Pierce, D. W., Cayan, D. R., Maurer, E. P., Abatzoglou, J. + T., & Hegewisch, K. C. (2015). Improved bias correction techniques for + hydrological simulations of climate change. Journal of Hydrometeorology, + 16(6), 2421-2442. + """ + @staticmethod + def zero_precipitation_rate(arr: np.ndarray, threshold: float = 0.0): + """Rate of (nearly) zero precipitation days + + Estimate the rate of values less than a given ``threshold``. In concept + the threshold would be zero (thus the name zero precipitation rate) + but it is often used a small threshold to truncate negligible values. + For instance, [Pierce2015]_ uses 0.01 mm/day for PresRat correction. + + Parameters + ---------- + arr : np.ndarray + An array of values to be analyzed. Usually precipitation but it + could be applied to other quantities. + threshold : float + Minimum value accepted. Less than that is assumed to be zero. + + Returns + ------- + rate : float + Rate of days with negligible precipitation (see Z_gf in + [Pierce2015]_). + + Notes + ----- + The ``NaN`` are ignored for the rate estimate. Therefore, a large + number of ``NaN`` might compromise the confidence of the estimator. + + If the input values are all non-finite, it returns NaN. + + Examples + -------- + >>> ZeroRateMixin().zero_precipitation_rate([2, 3, 4], 1) + 0.0 + + >>> ZeroRateMixin().zero_precipitation_rate([0, 1, 2, 3], 1) + 0.25 + + >>> ZeroRateMixin().zero_precipitation_rate([0, 1, 2, 3, np.nan], 1) + 0.25 + """ + idx = np.isfinite(arr) + + return np.mean((arr[idx] <= threshold).astype('i')) diff --git a/sup3r/bias/qdm.py b/sup3r/bias/qdm.py index f1864db1d..5d2a4a111 100644 --- a/sup3r/bias/qdm.py +++ b/sup3r/bias/qdm.py @@ -13,15 +13,17 @@ import h5py import numpy as np from rex.utilities.bc_utils import ( + QuantileDeltaMapping, sample_q_invlog, sample_q_linear, sample_q_log, ) +from typing import Optional from sup3r.preprocessing.data_handling.base import DataHandler from sup3r.utilities.utilities import expand_paths from .bias_calc import DataRetrievalBase -from .mixins import FillAndSmoothMixin +from .mixins import FillAndSmoothMixin, ZeroRateMixin logger = logging.getLogger(__name__) @@ -45,6 +47,7 @@ class QuantileDeltaMappingCorrection(FillAndSmoothMixin, DataRetrievalBase): a dataset. """ + # Default to ~monthly scale centered on every ~15 days NT = 24 """Number of times to calculate QDM parameters in a year""" WINDOW_SIZE = 30 @@ -66,9 +69,11 @@ def __init__(self, decimals=None, match_zero_rate=False, n_quantiles=101, - dist="empirical", - sampling="linear", - log_base=10): + dist='empirical', + relative=None, + sampling='linear', + log_base=10, + ): """ Parameters ---------- @@ -190,6 +195,7 @@ class to be retrieved from the rex/sup3r library. If a self.n_quantiles = n_quantiles self.dist = dist + self.relative = relative self.sampling = sampling self.log_base = log_base @@ -205,7 +211,8 @@ class to be retrieved from the rex/sup3r library. If a base_handler_kwargs=base_handler_kwargs, bias_handler_kwargs=bias_handler_kwargs, decimals=decimals, - match_zero_rate=match_zero_rate) + match_zero_rate=match_zero_rate, + ) self.bias_fut_fps = bias_fut_fps @@ -216,7 +223,8 @@ class to be retrieved from the rex/sup3r library. If a target=self.target, shape=self.shape, val_split=0.0, - **self.bias_handler_kwargs) + **self.bias_handler_kwargs, + ) def _init_out(self): """Initialize output arrays `self.out` @@ -237,28 +245,33 @@ def _init_out(self): @staticmethod def _window_center(ntimes: int): - """A sequence of equally spaced `ntimes` day of year along a year + """A sequence of equally spaced `ntimes` day of year This is used to identify the center of moving windows to apply filters - and masks. For instance, if ntimes equal to 12, it would return - approximately the months' center time. + and masks. For instance, if `ntimes` equal to 12, it would return + 12 equal periods, i.e. approximately the months' center time. This is conveniently shifted one half time interval so that December 31st would be closest to the last interval of the year instead of the first. - Leap years are neglected here. + Leap years are neglected, but if processed here, the doy 366 is + included in the relevant windows as an extra data, which would + cause a negligible error. Parameters ---------- ntimes : int - Number of intervals in one year. + Number of intervals in one year. Choose 12 for approximately + monthly time scales. Returns ------- np.ndarray : - Sequence of center points dividing a standard year in `ntimes` - intervals. + Sequence of days of the year equally spaced and shifted by half + window size, thus `ntimes`=12 results in approximately [15, 45, + ...]. It includes the fraction of a day, thus 15.5 is equivalent + to January 15th, 12:00h. """ assert ntimes > 0, "Requires a positive number of intervals" @@ -280,6 +293,8 @@ def _run_single(cls, bias_ti, bias_fut_ti, decimals, + dist, + relative, sampling, n_samples, log_base, @@ -332,7 +347,8 @@ def get_qdm_params(bias_data, base_dset, sampling, n_samples, - log_base): + log_base, + ): """Get quantiles' cut point for given datasets Estimate the quantiles' cut points for each of the three given @@ -388,7 +404,8 @@ def get_qdm_params(bias_data, quantiles = sample_q_invlog(n_samples, log_base) else: msg = ('sampling option must be linear, log, or invlog, but ' - 'received: {}'.format(sampling)) + 'received: {}'.format(sampling) + ) logger.error(msg) raise KeyError(msg) @@ -396,7 +413,8 @@ def get_qdm_params(bias_data, f'bias_{bias_feature}_params': np.quantile(bias_data, quantiles), f'bias_fut_{bias_feature}_params': np.quantile(bias_fut_data, quantiles), - f'base_{base_dset}_params': np.quantile(base_data, quantiles)} + f'base_{base_dset}_params': np.quantile(base_data, quantiles), + } return out @@ -445,7 +463,8 @@ def run(self, daily_reduction='avg', fill_extend=True, smooth_extend=0, - smooth_interior=0): + smooth_interior=0, + ): """Estimate the statistical distributions for each location Parameters @@ -488,8 +507,8 @@ def run(self, if not base_gid.any(): self.bad_bias_gids.append(bias_gid) - logger.debug(f"No base data for bias_gid: {bias_gid}. " - "Adding it to bad_bias_gids") + logger.debug(f'No base data for bias_gid: {bias_gid}. ' + 'Adding it to bad_bias_gids') else: bias_data = self.get_bias_data(bias_gid) bias_fut_data = self.get_bias_data(bias_gid, @@ -506,6 +525,8 @@ def run(self, bias_ti=self.bias_fut_dh.time_index, bias_fut_ti=self.bias_fut_dh.time_index, decimals=self.decimals, + dist=self.dist, + relative=self.relative, sampling=self.sampling, n_samples=self.n_quantiles, log_base=self.log_base, @@ -546,6 +567,8 @@ def run(self, bias_ti=self.bias_fut_dh.time_index, bias_fut_ti=self.bias_fut_dh.time_index, decimals=self.decimals, + dist=self.dist, + relative=self.relative, sampling=self.sampling, n_samples=self.n_quantiles, log_base=self.log_base, @@ -613,3 +636,429 @@ def window_mask(doy, d0, window_size): idx = (doy > d_start) & (doy < d_end) return idx + + +class PresRat(ZeroRateMixin, QuantileDeltaMappingCorrection): + """PresRat bias correction method (precipitation) + + The PresRat correction [Pierce2015]_ is defined as the combination of + three steps: + * Use the model-predicted change ratio (with the CDFs); + * The treatment of zero-precipitation days (with the fraction of dry days); + * The final correction factor (K) to preserve the mean (ratio between both + estimated means); + + To keep consistency with the full sup3r pipeline, PresRat was implemented + as follows: + + 1) Define zero rate from observations (oh) + + Using the historical observations, estimate the zero rate precipitation + for each gridpoint. It is expected a long time series here, such as + decadal or longer. A threshold larger than zero is an option here. + + The result is a 2D (space) `zero_rate` (non-dimensional). + + 2) Find the threshold for each gridpoint (mh) + + Using the zero rate from the previous step, identify the magnitude + threshold for each gridpoint that satisfies that dry days rate. + + Note that Pierce (2015) impose `tau` >= 0.01 mm/day for precipitation. + + The result is a 2D (space) threshold `tau` with the same dimensions + of the data been corrected. For instance, it could be mm/day for + precipitation. + + 3) Define `Z_fg` using `tau` (mf) + + The `tau` that was defined with the *modeled historical*, is now + used as a threshold on *modeled future* before any correction to define + the equivalent zero rate in the future. + + The result is a 2D (space) rate (non-dimensional) + + 4) Estimate `tau_fut` using `Z_fg` + + Since sup3r process data in smaller chunks, it wouldn't be possible to + apply the rate `Z_fg` directly. To address that, all *modeled future* + data is corrected with QDM, and applying `Z_fg` it is defined the + `tau_fut`. + + References + ---------- + .. [Pierce2015] Pierce, D. W., Cayan, D. R., Maurer, E. P., Abatzoglou, J. + T., & Hegewisch, K. C. (2015). Improved bias correction techniques for + hydrological simulations of climate change. Journal of Hydrometeorology, + 16(6), 2421-2442. + """ + def _init_out(self): + super()._init_out() + + shape = (*self.bias_gid_raster.shape, 1) + self.out[f'{self.base_dset}_zero_rate'] = np.full(shape, + np.nan, + np.float32) + self.out[f'{self.bias_feature}_tau_fut'] = np.full(shape, + np.nan, + np.float32) + shape = (*self.bias_gid_raster.shape, self.NT) + self.out[f'{self.bias_feature}_k_factor'] = np.full( + shape, np.nan, np.float32) + + # pylint: disable=W0613 + @classmethod + def _run_single(cls, + bias_data, + bias_fut_data, + base_fps, + bias_feature, + base_dset, + base_gid, + base_handler, + daily_reduction, + *, + bias_ti, + bias_fut_ti, + decimals, + dist, + relative, + sampling, + n_samples, + log_base, + zero_rate_threshold, + base_dh_inst=None, + ): + """Estimate probability distributions at a single site + + TODO! This should be refactored. There is too much redundancy in + the code. Let's make it work first, and optimize later. + """ + base_data, base_ti = cls.get_base_data( + base_fps, + base_dset, + base_gid, + base_handler, + daily_reduction=daily_reduction, + decimals=decimals, + base_dh_inst=base_dh_inst, + ) + + window_size = cls.WINDOW_SIZE or 365 / cls.NT + window_center = cls._window_center(cls.NT) + + template = np.full((cls.NT, n_samples), np.nan, np.float32) + out = {} + corrected_fut_data = np.full_like(bias_fut_data, np.nan) + for nt, t in enumerate(window_center): + # Define indices for which data goes in the current time window + base_idx = cls.window_mask(base_ti.day_of_year, t, window_size) + bias_idx = cls.window_mask(bias_ti.day_of_year, t, window_size) + bias_fut_idx = cls.window_mask(bias_fut_ti.day_of_year, + t, + window_size) + + if any(base_idx) and any(bias_idx) and any(bias_fut_idx): + tmp = cls.get_qdm_params(bias_data[bias_idx], + bias_fut_data[bias_fut_idx], + base_data[base_idx], + bias_feature, + base_dset, + sampling, + n_samples, + log_base) + for k, v in tmp.items(): + if k not in out: + out[k] = template.copy() + out[k][(nt), :] = v + + QDM = QuantileDeltaMapping( + out[f'base_{base_dset}_params'][nt], + out[f'bias_{bias_feature}_params'][nt], + out[f'bias_fut_{bias_feature}_params'][nt], + dist=dist, + relative=relative, + sampling=sampling, + log_base=log_base + ) + subset = bias_fut_data[bias_fut_idx] + corrected_fut_data[bias_fut_idx] = QDM(subset).squeeze() + + # Step 1: Define zero rate from observations + assert base_data.ndim == 1 + obs_zero_rate = cls.zero_precipitation_rate( + base_data, zero_rate_threshold) + out[f'{base_dset}_zero_rate'] = obs_zero_rate + + # Step 2: Find tau for each grid point + + # Removed NaN handling, thus reinforce finite-only data. + assert np.isfinite(bias_data).all(), "Unexpected invalid values" + assert bias_data.ndim == 1, "Assumed bias_data to be 1D" + n_threshold = round(obs_zero_rate * bias_data.size) + n_threshold = min(n_threshold, bias_data.size - 1) + tau = np.sort(bias_data)[n_threshold] + # Pierce (2015) imposes 0.01 mm/day + # tau = max(tau, 0.01) + + # Step 3: Find Z_gf as the zero rate in mf + assert np.isfinite(bias_fut_data).all(), "Unexpected invalid values" + z_fg = (bias_fut_data < tau).astype('i').sum() / bias_fut_data.size + + # Step 4: Estimate tau_fut with corrected mf + tau_fut = np.sort(corrected_fut_data)[round( + z_fg * corrected_fut_data.size)] + + out[f'{bias_feature}_tau_fut'] = tau_fut + + # ---- K factor ---- + + k = np.full(cls.NT, np.nan, np.float32) + for nt, t in enumerate(window_center): + base_idx = cls.window_mask(base_ti.day_of_year, t, window_size) + bias_idx = cls.window_mask(bias_ti.day_of_year, t, window_size) + bias_fut_idx = cls.window_mask(bias_fut_ti.day_of_year, + t, + window_size) + + oh = base_data[base_idx].mean() + mh = bias_data[bias_idx].mean() + mf = bias_fut_data[bias_fut_idx].mean() + mf_unbiased = corrected_fut_data[bias_fut_idx].mean() + + x = mf / mh + x_hat = mf_unbiased / oh + k[nt] = x / x_hat + + out[f'{bias_feature}_k_factor'] = k + + return out + + def run( + self, + fp_out=None, + max_workers=None, + daily_reduction='avg', + fill_extend=True, + smooth_extend=0, + smooth_interior=0, + zero_rate_threshold=0.0, + ): + """Estimate the required information for PresRat correction + + Parameters + ---------- + fp_out : str | None + Optional .h5 output file to write scalar and adder arrays. + max_workers : int, optional + Number of workers to run in parallel. 1 is serial and None is all + available. + daily_reduction : None | str + Option to do a reduction of the hourly+ source base data to daily + data. Can be None (no reduction, keep source time frequency), "avg" + (daily average), "max" (daily max), "min" (daily min), + "sum" (daily sum/total) + fill_extend : bool + Whether to fill data extending beyond the base meta data with + nearest neighbor values. + smooth_extend : float + Option to smooth the scalar/adder data outside of the spatial + domain set by the threshold input. This alleviates the weird seams + far from the domain of interest. This value is the standard + deviation for the gaussian_filter kernel + smooth_interior : float + Value to use to smooth the scalar/adder data inside of the spatial + domain set by the threshold input. This can reduce the effect of + extreme values within aggregations over large number of pixels. + This value is the standard deviation for the gaussian_filter + kernel. + zero_rate_threshold : float, default=0.0 + Threshold value used to determine the zero rate in the observed + historical dataset. For instance, 0.01 means that anything less + than that will be considered negligible, hence equal to zero. + + Returns + ------- + out : dict + Dictionary with parameters defining the statistical distributions + for each of the three given datasets. Each value has dimensions + (lat, lon, n-parameters). + """ + logger.debug('Calculate CDF parameters for QDM') + + logger.info( + 'Initialized params with shape: {}'.format( + self.bias_gid_raster.shape + ) + ) + self.bad_bias_gids = [] + + # sup3r DataHandler opening base files will load all data in parallel + # during the init and should not be passed in parallel to workers + if isinstance(self.base_dh, DataHandler): + max_workers = 1 + + if max_workers == 1: + logger.debug('Running serial calculation.') + for i, bias_gid in enumerate(self.bias_meta.index): + raster_loc = np.where(self.bias_gid_raster == bias_gid) + _, base_gid = self.get_base_gid(bias_gid) + + if not base_gid.any(): + self.bad_bias_gids.append(bias_gid) + logger.debug( + f'No base data for bias_gid: {bias_gid}. ' + 'Adding it to bad_bias_gids' + ) + else: + bias_data = self.get_bias_data(bias_gid) + bias_fut_data = self.get_bias_data( + bias_gid, self.bias_fut_dh + ) + single_out = self._run_single( + bias_data, + bias_fut_data, + self.base_fps, + self.bias_feature, + self.base_dset, + base_gid, + self.base_handler, + daily_reduction, + bias_ti=self.bias_fut_dh.time_index, + bias_fut_ti=self.bias_fut_dh.time_index, + decimals=self.decimals, + dist=self.dist, + relative=self.relative, + sampling=self.sampling, + n_samples=self.n_quantiles, + log_base=self.log_base, + base_dh_inst=self.base_dh, + zero_rate_threshold=zero_rate_threshold, + ) + for key, arr in single_out.items(): + self.out[key][raster_loc] = arr + + logger.info( + 'Completed bias calculations for {} out of {} ' + 'sites'.format(i + 1, len(self.bias_meta)) + ) + + else: + logger.debug( + 'Running parallel calculation with {} workers.'.format( + max_workers + ) + ) + with ProcessPoolExecutor(max_workers=max_workers) as exe: + futures = {} + for bias_gid in self.bias_meta.index: + raster_loc = np.where(self.bias_gid_raster == bias_gid) + _, base_gid = self.get_base_gid(bias_gid) + + if not base_gid.any(): + self.bad_bias_gids.append(bias_gid) + else: + bias_data = self.get_bias_data(bias_gid) + bias_fut_data = self.get_bias_data( + bias_gid, self.bias_fut_dh + ) + future = exe.submit( + self._run_single, + bias_data, + bias_fut_data, + self.base_fps, + self.bias_feature, + self.base_dset, + base_gid, + self.base_handler, + daily_reduction, + bias_ti=self.bias_fut_dh.time_index, + bias_fut_ti=self.bias_fut_dh.time_index, + decimals=self.decimals, + dist=self.dist, + relative=self.relative, + sampling=self.sampling, + n_samples=self.n_quantiles, + log_base=self.log_base, + zero_rate_threshold=zero_rate_threshold, + ) + futures[future] = raster_loc + + logger.debug('Finished launching futures.') + for i, future in enumerate(as_completed(futures)): + raster_loc = futures[future] + single_out = future.result() + for key, arr in single_out.items(): + self.out[key][raster_loc] = arr + + logger.info( + 'Completed bias calculations for {} out of {} ' + 'sites'.format(i + 1, len(futures)) + ) + + logger.info('Finished calculating bias correction factors.') + + self.out = self.fill_and_smooth( + self.out, fill_extend, smooth_extend, smooth_interior + ) + + extra_attrs = { + 'zero_rate_threshold': zero_rate_threshold, + 'time_window_center': self.time_window_center, + } + self.write_outputs(fp_out, + self.out, + extra_attrs=extra_attrs, + ) + + return copy.deepcopy(self.out) + + def write_outputs(self, fp_out: str, + out: dict = None, + extra_attrs: Optional[dict] = None): + """Write outputs to an .h5 file. + + Parameters + ---------- + fp_out : str | None + An HDF5 filename to write the estimated statistical distributions. + out : dict, optional + A dictionary with the three statistical distribution parameters. + If not given, it uses :attr:`.out`. + extra_attrs: dict, optional + Extra attributes to be exported together with the dataset. + + Examples + -------- + >>> mycalc = PresRat(...) + >>> mycalc.write_outputs(fp_out="myfile.h5", out=mydictdataset, + ... extra_attrs={'zero_rate_threshold': 0.01}) + """ + + out = out or self.out + + if fp_out is not None: + if not os.path.exists(os.path.dirname(fp_out)): + os.makedirs(os.path.dirname(fp_out), exist_ok=True) + + with h5py.File(fp_out, 'w') as f: + # pylint: disable=E1136 + lat = self.bias_dh.lat_lon[..., 0] + lon = self.bias_dh.lat_lon[..., 1] + f.create_dataset('latitude', data=lat) + f.create_dataset('longitude', data=lon) + for dset, data in out.items(): + f.create_dataset(dset, data=data) + + for k, v in self.meta.items(): + f.attrs[k] = json.dumps(v) + f.attrs['dist'] = self.dist + f.attrs['sampling'] = self.sampling + f.attrs['log_base'] = self.log_base + f.attrs['base_fps'] = self.base_fps + f.attrs['bias_fps'] = self.bias_fps + f.attrs['bias_fut_fps'] = self.bias_fut_fps + if extra_attrs is not None: + for a, v in extra_attrs.items(): + f.attrs[a] = v + logger.info('Wrote quantiles to file: {}'.format(fp_out)) diff --git a/tests/bias/test_presrat_bias_correction.py b/tests/bias/test_presrat_bias_correction.py new file mode 100644 index 000000000..f4ddb40c5 --- /dev/null +++ b/tests/bias/test_presrat_bias_correction.py @@ -0,0 +1,830 @@ +"""Validating PresRat correction procedures + + +Relevant resources used in the tests: +- fp_resource: Synthetic dataset representing observed historical (oh). +- fp_cc: Filename of standard biased dataset. +- fut_cc: Future dataset sample based on fp_cc + an offset + small noise +- fp_fut_cc: Filname to `fut_cc`. +- fut_cc_notrend: Future dataset identical to fp_cc, i.e. no trend. +- fp_fut_cc_notrend: Filename to fut_cc_notrend. +- presrat_params: Parameters of reference to test PresRat (using fp_fut_cc). +- presrat_notrend_params: Quantiles of future (mf) are identical to bias + reference (mh). Thus, there is no trend in the model. +- presrat_identity_params: All distributions (oh & mf) are identical to mh, + i.e. observations equal to model that doesn't change on time. +- presrat_nozeros_params: Same of presrat_params, but no zero_rate, i.e. + there is a bias correction but all zero_rate values are equal to 0 + (percent), i.e. no value is modified to zero. +- presrat_nochanges_params: Like presrat_identity_params, but also all + zero_rate are zero percent, i.e. no values should be forced to be zero. +""" + +import os +import shutil + +import h5py +import math +import numpy as np +import pandas as pd +import pytest +import xarray as xr +from rex import Outputs + +from sup3r import CONFIG_DIR, TEST_DATA_DIR +from sup3r.models import Sup3rGan +from sup3r.pipeline.forward_pass import ForwardPass, ForwardPassStrategy +from sup3r.bias import ( + local_qdm_bc, + local_presrat_bc, + PresRat, +) +from sup3r.bias.mixins import ZeroRateMixin +from sup3r.preprocessing.data_handling import DataHandlerNC + +FP_CC = os.path.join(TEST_DATA_DIR, 'rsds_test.nc') +FP_CC_LAT_LON = DataHandlerNC(FP_CC, 'rsds').lat_lon +# A reference zero rate threshold that might not make sense physically but for +# testing purposes only. This might change in the future to force edge cases. +ZR_THRESHOLD = 0.01 +TAU = 0.01 +TARGET = (38.24552917480469, -105.46875) +SHAPE = (4, 4) +VAR_MIN = 0 +# Fix this max +VAR_MAX = 1300 + +# Time duration in days of all sample dataset +# More than a year to check year transition situations +SAMPLE_TIME_DURATION = 2 * 365 + 1 +# Temporal resolution in days of sample dataset +SAMPLE_TIME_RESOLUTION = 1 +SAMPLE_ZERO_RATE = 0.01 + + +@pytest.fixture(scope='module') +def fp_resource(tmpdir_factory): + """Synthetic data, observed historical dataset + + Note + ---- + Latitude MUST be descending and longitude ascending, otherwise + `bias_transforms._get_factors()` does the wrong thing. + """ + fn = tmpdir_factory.mktemp('data').join('precip_oh.h5') + + # Reproducing FP_NSRDB before I can change it. + time = pd.date_range( + '2018-01-01 00:00:00+0000', '2018-03-26 23:30:00+0000', freq='30m' + ) + time = pd.DatetimeIndex( + np.arange( + np.datetime64('2018-01-01 00:00:00+00:00'), + np.datetime64('2019-01-01 00:00:00+00:00'), + np.timedelta64(6, 'h'), + ) + ) + lat = np.arange(39.77, 39.00, -0.04) + lon = np.arange(-105.14, -104.37, 0.04) + rng = np.random.default_rng() + ghi = rng.lognormal(0.0, 1.0, (time.size, lat.size, lon.size)) + + ds = xr.Dataset( + data_vars={'ghi': (['time', 'lat', 'lon'], ghi)}, + coords={ + 'time': ('time', time), + # "time_bnds": (["time", "bnds"], time_bnds), + 'lat': ('lat', lat), + 'lon': ('lon', lon), + }, + ) + + ds = ds.sortby('lat', ascending=False) + lat_2d, lon_2d = xr.broadcast(ds['lat'], ds['lon']) + meta = pd.DataFrame( + { + 'latitude': lat_2d.values.flatten(), + 'longitude': lon_2d.values.flatten(), + } + ) + + shapes = {'ghi': (len(ds.ghi.time), np.prod(ds.ghi.isel(time=0).shape))} + attrs = {'ghi': None} + chunks = {'ghi': None} + dtypes = {'ghi': 'float32'} + + Outputs.init_h5( + fn, + ['ghi'], + shapes, + attrs, + chunks, + dtypes, + meta=meta, + time_index=pd.DatetimeIndex(ds.time), + ) + with Outputs(fn, 'a') as out: + out['ghi'] = ds.stack(flat=('lat', 'lon'))['ghi'] + + # DataHandlerNCforCC requires a string + fn = str(fn) + return fn + + +@pytest.fixture(scope='module') +def precip(): + """Synthetic historical modeled dataset + + Note + ---- + There are different expected patterns in different components of the + processing. For instance, lon might be expected as 0-360 in some places + but -180 to 180 in others, and expect a certain order that does not + necessarily match latitutde. So changes in the coordinates shall be + done carefullly. + """ + # first value must conform with TARGET[0] + # n values must conform with SHAPE[0] + # dlat = -0.70175216 + lat = np.array( + [40.3507847105177, 39.649032596592, 38.9472804370071, 38.2455282337738] + ) + # assert np.allclose(lat[0], TARGET[0]) + # assert lat.size == SHAPE[0] + + # lon = np.linspace(254.4, 255.1, 10) + # first value must conform with TARGET[1] + # n values must conform with SHAPE[1] + lon = np.array([254.53125, 255.234375, 255.9375, 256.640625]) + # assert np.allclose(lat[1], 360 + TARGET[0]) + # assert lon.size == SHAPE[0] + + t0 = np.datetime64('2015-01-01T12:00:00') + time = t0 + np.arange( + 0, SAMPLE_TIME_DURATION, SAMPLE_TIME_RESOLUTION, dtype='timedelta64[D]' + ) + # bnds = (-np.timedelta64(12, 'h'), np.timedelta64(12, 'h')) + # time_bnds = time[:, np.newaxis] + bnds + rng = np.random.default_rng() + pr = rng.lognormal(0.0, 1.0, (time.size, lat.size, lon.size)) + + # Transform the upper tail into negligible to guarantee some 'zero + # precipiation days'. + thr = np.sort(pr.flatten())[-math.ceil(0.001 * pr.size)] + pr = np.where(pr < thr, pr, SAMPLE_ZERO_RATE / 2) + + # In case of playing with offset or other adjustments + assert pr.min() >= 0 + + ds = xr.DataArray( + name='rsds', + data=pr, + dims=['time', 'lat', 'lon'], + coords={ + 'time': ('time', time), + 'lat': ('lat', lat), + 'lon': ('lon', lon), + }, + ) + + return ds + + +@pytest.fixture(scope='module') +def fp_cc(tmpdir_factory, precip): + """Precipitation sample filename + + DataHandlerNCforCC requires a file to be opened + """ + fn = tmpdir_factory.mktemp('data').join('precip_mh.nc') + precip.to_netcdf(fn) + # DataHandlerNCforCC requires a string + fn = str(fn) + return fn + + +# fut_cc +@pytest.fixture(scope='module') +def precip_fut(precip): + """Synthetic data, modeled future (mf) dataset""" + da = precip.copy(deep=True) + + time = da['time'] + np.timedelta64(18263, 'D') + time.attrs = da['time'].attrs + da['time'] = time + # Adding an offset of 3 IQ + offset = 3 * float(da.quantile(0.75) - da.quantile(0.25)) + da += offset + # adding a small noise + da += 1e-6 * np.random.randn(*da.shape) + + return da + + +@pytest.fixture(scope='module') +def fp_fut_cc(tmpdir_factory, precip_fut): + """Sample future CC dataset (precipitation) filename""" + fn = tmpdir_factory.mktemp('data').join('precip_mf.nc') + precip_fut.to_netcdf(fn) + # DataHandlerNCforCC requires a string + fn = str(fn) + return fn + + +@pytest.fixture(scope='module') +def fut_cc(fp_fut_cc): + """Gives the dataset itself related to fp_fut_cc + + Giving an object in memory makes everything more efficient by avoiding I/O + reading files and overhead for multiple uses. + + Note that ``Resources`` modifies the dataset so we cannot just load the + NetCDF. Here we run a couple of checks to confirm that the output + dataset is as expected by sup3r. + + To use time as expected by sup3r: time = pd.to_datetime(da.time) + To use latlon as expected by sup3r: + latlon = np.stack(xr.broadcast(da["lat"], da["lon"] - 360), + axis=-1).astype('float32') + """ + ds = xr.open_dataset(fp_fut_cc) + + # Operating with numpy arrays impose a fixed dimensions order + # This compute is required here. + da = ds['rsds'].compute().transpose('lat', 'lon', 'time') + + # The _get_factors() assume latitude as descending and it will + # silently return wrong values otherwise. + da = da.sortby('lat', ascending=False) + + latlon = np.stack(xr.broadcast(da['lat'], da['lon'] - 360), axis=-1) + # Confirm that dataset order is consistent + # Somewhere in pipeline latlon are downgraded to f32 + assert np.allclose(latlon.astype('float32'), FP_CC_LAT_LON) + + # Verify data alignment in comparison with expected for FP_CC + for ii in range(ds.lat.size): + for jj in range(ds.lon.size): + assert np.allclose( + da.sel(lat=latlon[ii, jj, 0]).sel(lon=latlon[ii, jj, 1] + 360), + da.data[ii, jj], + ) + + return da + + +@pytest.fixture(scope='module') +def fp_fut_cc_notrend(tmpdir_factory, fp_cc): + """Sample future CC (mf) dataset identical to historical CC (mh) + + This is currently a copy of fp_cc, thus no trend on time. + """ + fn = tmpdir_factory.mktemp('data').join('test_mf_notrend.nc') + shutil.copyfile(fp_cc, fn) + # DataHandlerNCforCC requires a string + fn = str(fn) + return fn + + +@pytest.fixture(scope='module') +def fut_cc_notrend(fp_fut_cc_notrend): + """Extract the dataset from fp_fut_cc_notrend + + The internal process to read such dataset is way more complex than just + reading it and there are some transformations. This function must provide + a dataset compatible with the one expected from the standard processing. + """ + ds = xr.open_dataset(fp_fut_cc_notrend) + + # Although it is the same file, somewhere in the data reading process + # the longitude is tranformed to the standard [-180 to 180] and it is + # expected to be like that everywhere. + ds['lon'] = ds['lon'] - 360 + + # Operating with numpy arrays impose a fixed dimensions order + # This compute is required here. + da = ds['rsds'].compute().transpose('lat', 'lon', 'time') + + # The _get_factors() assume latitude as descending and it will + # silently return wrong values otherwise. + da = da.sortby('lat', ascending=False) + + latlon = np.stack(xr.broadcast(da['lat'], da['lon']), axis=-1) + # Confirm that dataset order is consistent + # Somewhere in pipeline latlon are downgraded to f32 + assert np.allclose(latlon.astype('float32'), FP_CC_LAT_LON) + + # Verify data alignment in comparison with expected for FP_CC + for ii in range(ds.lat.size): + for jj in range(ds.lon.size): + np.allclose( + da.sel(lat=latlon[ii, jj, 0]).sel(lon=latlon[ii, jj, 1]), + da.data[ii, jj], + ) + + return da + + +@pytest.fixture(scope='module') +def presrat_params(tmpdir_factory, fp_resource, fp_cc, fp_fut_cc): + """PresRat parameters for standard datasets + + Use the standard datasets to estimate the distributions and save + in a temporary place to be re-used + """ + calc = PresRat( + fp_resource, + fp_cc, + fp_fut_cc, + 'ghi', + 'rsds', + target=TARGET, + shape=SHAPE, + distance_upper_bound=0.7, + bias_handler='DataHandlerNCforCC', + ) + fn = tmpdir_factory.mktemp('params').join('presrat.h5') + # Physically non-sense threshold choosed to result in gridpoints with and + # without zero rate correction for the given testing dataset. + _ = calc.run(zero_rate_threshold=ZR_THRESHOLD, fp_out=fn) + + # DataHandlerNCforCC requires a string + fn = str(fn) + + return fn + + +@pytest.fixture(scope='module') +def presrat_notrend_params( + tmpdir_factory, fp_resource, fp_cc, fp_fut_cc_notrend +): + """No change in time + + The bias_fut distribution is equal to bias (modeled historical), so no + change in time. + + We could save some overhead by copying fp_fut_cc and replacing some + values there. That was done before but missed some variables resulting + in errors. + """ + calc = PresRat( + fp_resource, + fp_cc, + fp_fut_cc_notrend, + 'ghi', + 'rsds', + target=TARGET, + shape=SHAPE, + distance_upper_bound=0.7, + bias_handler='DataHandlerNCforCC', + ) + fn = tmpdir_factory.mktemp('params').join('presrat_notrend.h5') + _ = calc.run(zero_rate_threshold=ZR_THRESHOLD, fp_out=fn) + + # DataHandlerNCforCC requires a string + fn = str(fn) + + return fn + + +@pytest.fixture(scope='module') +def presrat_identity_params(tmpdir_factory, presrat_params): + """Identical distribution""" + + fn = tmpdir_factory.mktemp('params').join('presrat_identity.h5') + shutil.copyfile(presrat_params, fn) + + with h5py.File(fn, 'r+') as f: + f['bias_rsds_params'][:] = f['bias_fut_rsds_params'][:] + f['base_ghi_params'][:] = f['bias_fut_rsds_params'][:] + f.flush() + + return str(fn) + + +@pytest.fixture(scope='module') +def presrat_nochanges_params(tmpdir_factory, presrat_params): + """Identical distribution, no zero rate, and K=1 + + All distributions are identical, zero rate changes are all zero, and the + K factor is equal to 1, therefore, the PresRat correction should not change + anything. + + Note that distributions are based on bias_fut, so it is assumed that the + test cases will be datasets coherent with that bias_fut distribution, + otherwise it could lead to differences if out of that scale. + """ + fn = tmpdir_factory.mktemp('params').join('presrat_nochanges.h5') + shutil.copyfile(presrat_params, fn) + + with h5py.File(fn, 'r+') as f: + f['bias_fut_rsds_params'][:] = f['bias_rsds_params'][:] + f['base_ghi_params'][:] = f['bias_rsds_params'][:] + f['ghi_zero_rate'][:] *= 0 + f['rsds_tau_fut'][:] *= 0 + f['rsds_k_factor'][:] = 1 + f.flush() + + return str(fn) + + +@pytest.fixture(scope='module') +def presrat_nozeros_params(tmpdir_factory, presrat_params): + """PresRat parameters without zero rate correction + + The same standard parameters but all zero_rate values are equal to zero, + which means that zero percent, i.e. none, of the values should be forced + to be zero. + """ + fn = tmpdir_factory.mktemp('params').join('presrat_nozeros.h5') + shutil.copyfile(presrat_params, fn) + + with h5py.File(fn, 'r+') as f: + f['ghi_zero_rate'][:] *= 0 + f['rsds_tau_fut'][:] *= 0 + f.flush() + + return str(fn) + + +# ==== Zero rate estimate ==== + + +def test_zero_precipitation_rate(): + """Zero rate estimate using median""" + f = ZeroRateMixin().zero_precipitation_rate + arr = np.random.randn(100) + + rate = f(arr, threshold=np.median(arr)) + assert rate == 0.5 + + +def test_zero_precipitation_rate_extremes(): + """Zero rate estimate with extremme thresholds""" + f = ZeroRateMixin().zero_precipitation_rate + arr = np.arange(10) + + rate = f(arr, threshold=-1) + assert rate == 0 + + rate = f(arr, threshold=0) + assert rate == 0.1 + + # Remember, 9 is the last value, i.e. the 10th value + rate = f(arr, threshold=9) + assert rate == 1 + + rate = f(arr, threshold=arr.max() + 1) + assert rate == 1 + + +def test_zero_precipitation_rate_nanonly(): + """Zero rate estimate with only NaNs gives NaN""" + f = ZeroRateMixin().zero_precipitation_rate + arr = np.nan * np.zeros(10) + + # All NaN gives NaN rate + rate = f(arr) + assert np.isnan(rate) + + +def test_zero_precipitation_rate_nan(): + """Zero rate estimate with NaNs + + NaN shouldn't be counted to find the rate. Thus an array with NaNs should + give the same results if the NaN were removed before the calculation. + """ + f = ZeroRateMixin().zero_precipitation_rate + arr = np.arange(10) + + r1 = f(arr, threshold=5) + r2 = f(np.concatenate([5 * [np.nan], arr]), threshold=5) + assert r1 == r2 + + +# ==== PresRat parameters estimate ==== + + +def test_presrat_calc(fp_resource, fp_cc, fp_fut_cc): + """Standard PresRat (pre) calculation + + Estimate the required parameters with a standard setup. + """ + calc = PresRat( + fp_resource, + fp_cc, + fp_fut_cc, + 'ghi', + 'rsds', + target=TARGET, + shape=SHAPE, + bias_handler='DataHandlerNCforCC', + ) + + out = calc.run() + + expected_vars = [ + 'bias_rsds_params', + 'bias_fut_rsds_params', + 'base_ghi_params', + 'ghi_zero_rate', + 'rsds_k_factor', + 'rsds_tau_fut', + ] + for v in expected_vars: + assert v in out, f'Missing {v} in the calculated output' + assert ( + out[v].shape[:2] == SHAPE + ), "Doesn't match expected spatial shape" + # This is only true because fill and extend are applied by default. + assert np.all(np.isfinite(out[v])), f'Invalid value for {v}' + + for k, v in ((k, v) for k, v in out.items() if k.endswith('_zero_rate')): + assert np.all((v >= 0) & (v <= 1)), f'Out of range [0, 1]: {k}' + + for k, v in ((k, v) for k, v in out.items() if k.endswith('_k_factor')): + assert np.all(v > 0), f'K factor must be positive: {k}' + + +@pytest.mark.parametrize('threshold', [0, 1, 1e6]) +def test_parallel(fp_resource, fp_cc, fp_fut_cc, threshold): + """Running in parallel must not alter results + + Check with different thresholds, which will result in different zero rates. + """ + s = PresRat( + fp_resource, + fp_cc, + fp_fut_cc, + 'ghi', + 'rsds', + target=TARGET, + shape=SHAPE, + bias_handler='DataHandlerNCforCC', + ) + + out_s = s.run(max_workers=1, zero_rate_threshold=threshold) + + p = PresRat( + fp_resource, + fp_cc, + fp_fut_cc, + 'ghi', + 'rsds', + target=TARGET, + shape=SHAPE, + bias_handler='DataHandlerNCforCC', + ) + + out_p = p.run(max_workers=2, zero_rate_threshold=threshold) + + for k in out_s.keys(): + assert k in out_p, f'Missing {k} in parallel run' + assert np.allclose( + out_s[k], out_p[k], equal_nan=True + ), f'Different results for {k}' + + +@pytest.mark.parametrize('threshold', [0, 1, 1e6]) +def test_presrat_zero_rate(fp_resource, fp_cc, fp_fut_cc, threshold): + """Estimate zero_rate within PresRat.run() + + Use thresholds that gives 0%, 100%, and something between. + + Notes + ----- + - Rate should be zero if threshold is zero for this dataset. + """ + calc = PresRat( + fp_resource, + fp_cc, + fp_fut_cc, + 'ghi', + 'rsds', + target=TARGET, + shape=SHAPE, + bias_handler='DataHandlerNCforCC', + ) + + out = calc.run(zero_rate_threshold=threshold) + + assert 'ghi_zero_rate' in out, 'Missing ghi_zero_rate in calc output' + for k, v in ((k, v) for k, v in out.items() if k.endswith('_zero_rate')): + # This is only true because fill and extend are applied by default. + assert np.all(np.isfinite(v)), f'Invalid value for {v}' + + assert np.all((v >= 0) & (v <= 1)), f'Out of range [0, 1]: {k}' + + if threshold <= 0: + assert np.all(v == 0), 'It should be rate 0 for threshold==0' + elif threshold >= 1e4: + assert np.all(v == 1), 'It should be rate 1 for threshold>=1e4' + + +# ==== PresRat Transform ==== + + +def test_presrat_transform(presrat_params, precip_fut): + """A standard run with local_presrat_bc + + Confirms that: + - unbiased values is different than input biases data + - unbiased zero rate is not smaller the input zero rate + """ + # local_presrat_bc expects time in the last dimension. + data = precip_fut.transpose('lat', 'lon', 'time').values + time = pd.to_datetime(precip_fut.time) + latlon = np.stack( + xr.broadcast(precip_fut['lat'], precip_fut['lon'] - 360), axis=-1 + ).astype('float32') + + unbiased = local_presrat_bc( + data, latlon, 'ghi', 'rsds', presrat_params, time + ) + + assert np.isfinite(unbiased).any(), "Can't compare if only NaN" + # Confirm that there were changes, but at this point stop there. + assert not np.allclose(data, unbiased, equal_nan=False) + + n_zero = (data == 0).astype('i').sum() + unbiased_n_zero = (unbiased == 0).astype('i').sum() + assert n_zero <= unbiased_n_zero + + +def test_presrat_transform_nochanges(presrat_nochanges_params, fut_cc_notrend): + """The correction should result in no changes at all + + Note that there are a lot of implicit transformations, so we cannot expect + to be able to esily compare all gridpoints. + + The unbiased output must be the same if: + - The three CDFs are the same, so no change due to QDM. There is one + caveat here. The data to be corrected is compared with the mf's CDF, and + if out of distribution, it would lead to differences; + - All zero rate set to zero percent, so no value is forced to zero; + - The value to be corrected is the same used to estimate the means for the + K factor; + """ + data = fut_cc_notrend.values + time = pd.to_datetime(fut_cc_notrend.time) + latlon = np.stack( + xr.broadcast(fut_cc_notrend['lat'], fut_cc_notrend['lon']), + axis=-1, + ).astype('float32') + + unbiased = local_presrat_bc( + data, latlon, 'ghi', 'rsds', presrat_nochanges_params, time + ) + + assert np.isfinite(unbiased).any(), "Can't compare if only NaN" + + assert np.allclose( + data, unbiased, equal_nan=False + ), "This case shouldn't modify the data" + + +def test_presrat_transform_nozerochanges(presrat_nozeros_params, fut_cc): + """No adjustment to zero + + Correction procedure results in some changes, but since the zero_rate + correction is all set to zero percent, there are no values adjusted to + zero. + """ + data = fut_cc.values + time = pd.to_datetime(fut_cc.time) + latlon = np.stack( + xr.broadcast(fut_cc['lat'], fut_cc['lon'] - 360), axis=-1 + ).astype('float32') + + corrected = local_presrat_bc( + data, + latlon, + 'ghi', + 'rsds', + presrat_nozeros_params, + time, + ) + + assert np.isfinite(data).any(), "Can't compare if only NaN" + assert not np.allclose( + data, corrected, equal_nan=False + ), 'Expected changes due to bias correction' + assert not ( + (data != 0) & (corrected == 0) + ).any(), 'Unexpected value corrected (zero_rate) to zero (dry day)' + + +def test_compare_qdm_vs_presrat(presrat_params, precip_fut): + """Compare bias correction methods QDM vs PresRat""" + + # local_presrat_bc and local_qdm_bc expects time in the last dimension. + data = precip_fut.transpose('lat', 'lon', 'time').values + time = pd.to_datetime(precip_fut.time) + latlon = np.stack( + xr.broadcast(precip_fut['lat'], precip_fut['lon'] - 360), axis=-1 + ).astype('float32') + + unbiased_qdm = local_qdm_bc( + data, + latlon, + 'ghi', + 'rsds', + presrat_params, + time, + ) + unbiased_presrat = local_presrat_bc( + data, + latlon, + 'ghi', + 'rsds', + presrat_params, + time, + ) + + assert ( + unbiased_qdm.shape == unbiased_presrat.shape + ), 'QDM and PresRat output should have the same shape' + + n_zero_qdm = (unbiased_qdm < TAU).astype('i').sum() + n_zero_presrat = (unbiased_presrat < TAU).astype('i').sum() + assert ( + n_zero_qdm <= n_zero_presrat + ), 'PresRat should guarantee greater or equal zero precipitation days' + + +def test_fwp_integration(tmp_path, presrat_params, fp_fut_cc): + """Integration of the bias correction method into the forward pass + + Validate two aspects: + - We should be able to run a forward pass with unbiased data. + - The bias trend should be observed in the predicted output. + """ + fp_gen = os.path.join(CONFIG_DIR, 'spatiotemporal/gen_3x_4x_2f.json') + fp_disc = os.path.join(CONFIG_DIR, 'spatiotemporal/disc.json') + features = ['rsds'] + target = TARGET + shape = SHAPE + temporal_slice = slice(None, None, 1) + fwp_chunk_shape = (4, 4, 150) + input_files = [fp_fut_cc] + + Sup3rGan.seed() + model = Sup3rGan(fp_gen, fp_disc, learning_rate=1e-4) + _ = model.generate(np.ones((4, 10, 10, 6, len(features)))) + model.meta['lr_features'] = features + model.meta['hr_out_features'] = features + model.meta['s_enhance'] = 3 + model.meta['t_enhance'] = 4 + + out_dir = os.path.join(tmp_path, 'st_gan') + model.save(out_dir) + + bias_correct_kwargs = { + 'rsds': { + 'feature_name': 'rsds', + 'base_dset': 'ghi', + 'bias_fp': presrat_params, + } + } + + strat = ForwardPassStrategy( + input_files, + model_kwargs={'model_dir': out_dir}, + fwp_chunk_shape=fwp_chunk_shape, + spatial_pad=0, + temporal_pad=0, + input_handler_kwargs=dict( + target=target, + shape=shape, + temporal_slice=temporal_slice, + worker_kwargs=dict(max_workers=1), + ), + out_pattern=os.path.join(tmp_path, 'out_{file_id}.nc'), + worker_kwargs=dict(max_workers=1), + input_handler='DataHandlerNCforCC', + ) + bc_strat = ForwardPassStrategy( + input_files, + model_kwargs={'model_dir': out_dir}, + fwp_chunk_shape=fwp_chunk_shape, + spatial_pad=0, + temporal_pad=0, + input_handler_kwargs=dict( + target=target, + shape=shape, + temporal_slice=temporal_slice, + worker_kwargs=dict(max_workers=1), + ), + out_pattern=os.path.join(tmp_path, 'out_{file_id}.nc'), + worker_kwargs=dict(max_workers=1), + input_handler='DataHandlerNCforCC', + bias_correct_method='local_presrat_bc', + bias_correct_kwargs=bias_correct_kwargs, + ) + + for ichunk in range(strat.chunks): + fwp = ForwardPass(strat, chunk_index=ichunk) + bc_fwp = ForwardPass(bc_strat, chunk_index=ichunk) + + _delta = bc_fwp.input_data - fwp.input_data + _delta = bc_fwp.run_chunk() - fwp.run_chunk() diff --git a/tests/bias/test_qdm_bias_correction.py b/tests/bias/test_qdm_bias_correction.py index e6634262d..33f298b74 100644 --- a/tests/bias/test_qdm_bias_correction.py +++ b/tests/bias/test_qdm_bias_correction.py @@ -12,7 +12,10 @@ from sup3r import CONFIG_DIR, TEST_DATA_DIR from sup3r.models import Sup3rGan from sup3r.pipeline.forward_pass import ForwardPass, ForwardPassStrategy -from sup3r.bias import local_qdm_bc, QuantileDeltaMappingCorrection +from sup3r.bias import ( + local_qdm_bc, + QuantileDeltaMappingCorrection, +) from sup3r.preprocessing.data_handling import DataHandlerNC, DataHandlerNCforCC FP_NSRDB = os.path.join(TEST_DATA_DIR, 'test_nsrdb_co_2018.h5') @@ -96,19 +99,18 @@ def dist_params(tmpdir_factory, fp_fut_cc): Use the standard datasets to estimate the distributions and save in a temporary place to be re-used """ - calc = QuantileDeltaMappingCorrection( - FP_NSRDB, - FP_CC, - fp_fut_cc, - 'ghi', - 'rsds', - target=TARGET, - shape=SHAPE, - distance_upper_bound=0.7, - bias_handler='DataHandlerNCforCC', - ) + calc = QuantileDeltaMappingCorrection(FP_NSRDB, + FP_CC, + fp_fut_cc, + 'ghi', + 'rsds', + target=TARGET, + shape=SHAPE, + distance_upper_bound=0.7, + bias_handler='DataHandlerNCforCC', + ) fn = tmpdir_factory.mktemp('params').join('standard.h5') - _ = calc.run(max_workers=1, fp_out=fn) + _ = calc.run(fp_out=fn) # DataHandlerNCforCC requires a string fn = str(fn) @@ -123,16 +125,15 @@ def test_qdm_bc(fp_fut_cc): something fundamental is wrong. """ - calc = QuantileDeltaMappingCorrection( - FP_NSRDB, - FP_CC, - fp_fut_cc, - 'ghi', - 'rsds', - target=TARGET, - shape=SHAPE, - bias_handler='DataHandlerNCforCC', - ) + calc = QuantileDeltaMappingCorrection(FP_NSRDB, + FP_CC, + fp_fut_cc, + 'ghi', + 'rsds', + target=TARGET, + shape=SHAPE, + bias_handler='DataHandlerNCforCC', + ) out = calc.run() @@ -440,7 +441,8 @@ def test_fwp_integration(tmp_path): input_files = [os.path.join(TEST_DATA_DIR, 'ua_test.nc'), os.path.join(TEST_DATA_DIR, 'va_test.nc'), os.path.join(TEST_DATA_DIR, 'orog_test.nc'), - os.path.join(TEST_DATA_DIR, 'zg_test.nc')] + os.path.join(TEST_DATA_DIR, 'zg_test.nc'), + ] n_samples = 101 quantiles = np.linspace(0, 1, n_samples)