diff --git a/docs/src/whatsnew/latest.rst b/docs/src/whatsnew/latest.rst index c7e820922d..d4084c08f9 100644 --- a/docs/src/whatsnew/latest.rst +++ b/docs/src/whatsnew/latest.rst @@ -95,6 +95,11 @@ This document explains the changes made to Iris for this release #. `@stephenworsley`_ dropped support for ``py310`` and adopted support for ``py313`` as per the `SPEC 0`_ schedule. (:pull:`6195`) +#. `@stephenworsley`_ and `@valeriupredoi`_ removed the pin from dask since newer + versions of dask fix the bug casuing the pin. Introduced a minimum pin (2025.1.0) + to avoid this bug. (:pull:`6342`) + + 📚 Documentation ================ @@ -137,6 +142,7 @@ This document explains the changes made to Iris for this release .. _@fnattino: https://github.com/fnattino .. _@jrackham-mo: https://github.com/jrackham-mo .. _@stefsmeets: https://github.com/stefsmeets +.. _@valeriupredoi: https://github.com/valeriupredoi .. comment Whatsnew resources in alphabetical order: diff --git a/lib/iris/common/resolve.py b/lib/iris/common/resolve.py index 7a57ef7c2b..c4bc18309b 100644 --- a/lib/iris/common/resolve.py +++ b/lib/iris/common/resolve.py @@ -2592,9 +2592,9 @@ def shape(self): source 'Data from Met Office Unified Model 6.05' >>> Resolve().shape is None True - >>> Resolve(cube1, cube2).shape # doctest: +SKIP + >>> Resolve(cube1, cube2).shape (240, 37, 49) - >>> Resolve(cube2, cube1).shape # doctest: +SKIP + >>> Resolve(cube2, cube1).shape (240, 37, 49) """ # noqa: D214, D406, D407, D410, D411 diff --git a/lib/iris/tests/__init__.py b/lib/iris/tests/__init__.py index d0437a8ddd..aa86a6d8b5 100644 --- a/lib/iris/tests/__init__.py +++ b/lib/iris/tests/__init__.py @@ -86,6 +86,7 @@ #: Basepath for test results. _RESULT_PATH = os.path.join(os.path.dirname(__file__), "results") +MIN_PICKLE_PROTOCOL = 4 if "--data-files-used" in sys.argv: sys.argv.remove("--data-files-used") diff --git a/lib/iris/tests/integration/test_pickle.py b/lib/iris/tests/integration/test_pickle.py index 7317855512..d0c6b88fc0 100644 --- a/lib/iris/tests/integration/test_pickle.py +++ b/lib/iris/tests/integration/test_pickle.py @@ -7,52 +7,47 @@ # Import iris.tests first so that some things can be initialised before # importing anything else. import iris.tests as tests # isort:skip - import pickle -import iris - +import pytest -class Common: - def pickle_cube(self, protocol): - # Ensure that data proxies are pickleable. - cube = iris.load(self.path)[0] - with self.temp_filename(".pkl") as filename: - with open(filename, "wb") as f: - pickle.dump(cube, f, protocol) - with open(filename, "rb") as f: - ncube = pickle.load(f) - self.assertEqual(ncube, cube) +import iris +from iris.tests import MIN_PICKLE_PROTOCOL - def test_protocol_0(self): - self.pickle_cube(0) +TESTED_PROTOCOLS = list(range(MIN_PICKLE_PROTOCOL, pickle.HIGHEST_PROTOCOL + 1)) - def test_protocol_1(self): - self.pickle_cube(1) - def test_protocol_2(self): - self.pickle_cube(2) +def pickle_cube(path, protocol, filename): + # Ensure that data proxies are pickleable. + cube = iris.load(path)[0] + with open(filename, "wb") as f: + pickle.dump(cube, f, protocol) + with open(filename, "rb") as f: + ncube = pickle.load(f) + assert ncube == cube +@pytest.mark.parametrize("protocol", TESTED_PROTOCOLS) @tests.skip_data -class test_netcdf(Common, tests.IrisTest): - def setUp(self): - self.path = tests.get_data_path( - ("NetCDF", "global", "xyt", "SMALL_hires_wind_u_for_ipcc4.nc") - ) +def test_netcdf(protocol, tmp_path): + path = tests.get_data_path( + ("NetCDF", "global", "xyt", "SMALL_hires_wind_u_for_ipcc4.nc") + ) + tmp_file = tmp_path / "netcdf.pkl" + pickle_cube(path, protocol, tmp_file) +@pytest.mark.parametrize("protocol", TESTED_PROTOCOLS) @tests.skip_data -class test_pp(Common, tests.IrisTest): - def setUp(self): - self.path = tests.get_data_path(("PP", "aPPglob1", "global.pp")) +def test_pp(protocol, tmp_path): + path = tests.get_data_path(("PP", "aPPglob1", "global.pp")) + tmp_file = tmp_path / "pp.pkl" + pickle_cube(path, protocol, tmp_file) +@pytest.mark.parametrize("protocol", TESTED_PROTOCOLS) @tests.skip_data -class test_ff(Common, tests.IrisTest): - def setUp(self): - self.path = tests.get_data_path(("FF", "n48_multi_field")) - - -if __name__ == "__main__": - tests.main() +def test_ff(protocol, tmp_path): + path = tests.get_data_path(("FF", "n48_multi_field")) + tmp_file = tmp_path / "ff.pkl" + pickle_cube(path, protocol, tmp_file) diff --git a/lib/iris/tests/test_pickling.py b/lib/iris/tests/test_pickling.py index 311e6ec9aa..3a50ab4137 100644 --- a/lib/iris/tests/test_pickling.py +++ b/lib/iris/tests/test_pickling.py @@ -7,7 +7,6 @@ # Import iris tests first so that some things can be initialised # before importing anything else. import iris.tests as tests # isort:skip - import io import pickle @@ -16,12 +15,13 @@ import iris from iris._lazy_data import as_concrete_data, as_lazy_data +from iris.tests import MIN_PICKLE_PROTOCOL class TestPickle(tests.IrisTest): def pickle_then_unpickle(self, obj): """Returns a generator of ("pickle protocol number", object) tuples.""" - for protocol in range(1 + pickle.HIGHEST_PROTOCOL): + for protocol in range(MIN_PICKLE_PROTOCOL, pickle.HIGHEST_PROTOCOL + 1): bio = io.BytesIO() pickle.dump(obj, bio, protocol) diff --git a/lib/iris/tests/unit/analysis/test_PERCENTILE.py b/lib/iris/tests/unit/analysis/test_PERCENTILE.py index c1d3996309..e4bdef0fa7 100644 --- a/lib/iris/tests/unit/analysis/test_PERCENTILE.py +++ b/lib/iris/tests/unit/analysis/test_PERCENTILE.py @@ -162,7 +162,7 @@ def test_default_kwargs_passed(self, mocked_mquantiles): for key in ["alphap", "betap"]: self.assertEqual(mocked_mquantiles.call_args.kwargs[key], 1) - @mock.patch("scipy.stats.mstats.mquantiles") + @mock.patch("scipy.stats.mstats.mquantiles", return_value=np.array([2, 4])) def test_chosen_kwargs_passed(self, mocked_mquantiles): data = np.arange(5) percent = [42, 75] @@ -356,7 +356,7 @@ def test_numpy_percentile_called(self, mocked_percentile): # Check we have left "method" keyword to numpy's default. self.assertNotIn("method", mocked_percentile.call_args.kwargs) - @mock.patch("numpy.percentile") + @mock.patch("numpy.percentile", return_value=np.array([2, 4])) def test_chosen_method_kwarg_passed(self, mocked_percentile): data = da.arange(5) percent = [42, 75] diff --git a/lib/iris/tests/unit/fileformats/pp/test__interpret_field.py b/lib/iris/tests/unit/fileformats/pp/test__interpret_field.py index dfecd6aa2a..15c3f341f9 100644 --- a/lib/iris/tests/unit/fileformats/pp/test__interpret_field.py +++ b/lib/iris/tests/unit/fileformats/pp/test__interpret_field.py @@ -117,9 +117,9 @@ def test_landsea_unpacking_uses_dask(self): # Get the 'main' calculation entry. mask_toplev_item = lazy_mask_array.dask[mask_toplev_key] # This should be a task (a simple fetch). - self.assertTrue(callable(mask_toplev_item[0])) + self.assertTrue(callable(mask_toplev_item)) # Get the key (name) of the array that it fetches. - mask_data_name = mask_toplev_item[1] + mask_data_name = mask_toplev_item.args[0].key # Check that the item this refers to is a PPDataProxy. self.assertIsInstance(lazy_mask_array.dask[mask_data_name], pp.PPDataProxy) diff --git a/requirements/locks/py311-linux-64.lock b/requirements/locks/py311-linux-64.lock index d250f7001f..c35a2009f7 100644 --- a/requirements/locks/py311-linux-64.lock +++ b/requirements/locks/py311-linux-64.lock @@ -1,6 +1,6 @@ # Generated by conda-lock. # platform: linux-64 -# input_hash: 484c12b1591315f270b3e15b42ed2cba4c973b701897ae7eb79b8b9442d99a96 +# input_hash: 0e2b46335d407c1dacba3b0965f0164093e232b456197e26651a7fd261b99f5b @EXPLICIT https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda#19f3a56f68d2fd06c516076bff482c52 @@ -268,9 +268,9 @@ https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py311h2dc5d0c_1.cond https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py311h2dc5d0c_0.conda#0b7a6100e053342079b607bbfdaeaa2a https://conda.anaconda.org/conda-forge/noarch/asv_runner-0.2.1-pyhd8ed1ab_0.conda#fdcbeb072c80c805a2ededaa5f91cd79 https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda#373374a3ed20141090504031dc7b693e +https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.2.0-pyhd8ed1ab_0.conda#3bc22d25e3ee83d709804a2040b4463c https://conda.anaconda.org/conda-forge/linux-64/gnutls-3.8.9-h5746830_0.conda#0e776b108cd87ee80618acc5ee64c07f https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.3.0-h76408a6_0.conda#0a06f278e5d9242057673b1358a75e8f -https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.6.1-hd8ed1ab_0.conda#7f46575a91b1307441abc235d01cab66 https://conda.anaconda.org/conda-forge/noarch/lazy-loader-0.4-pyhd8ed1ab_2.conda#d10d9393680734a8febc4b362a4c94f2 https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.2-nompi_h5ddbaa4_116.conda#f51573abc223afed7e5374f34135ce05 https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda#ef1910918dd895516a769ed36b5b3a4e @@ -291,7 +291,6 @@ https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.t https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.4-py311h9f3472d_1.conda#2c3c4f115d28ed9e001a271d5d8585aa https://conda.anaconda.org/conda-forge/noarch/colorspacious-1.1.2-pyhecae5ae_1.conda#04151bb8e351c6209caad045e4b1f4bd https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.1-py311hd18a35c_0.conda#351cb68d2081e249069748b6e60b3cd2 -https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.8.2-pyhd8ed1ab_0.conda#8e7524a2fb561506260db789806c7ee9 https://conda.anaconda.org/conda-forge/noarch/identify-2.6.8-pyhd8ed1ab_0.conda#153a6ad50ad9db7bb4e042ee52a56f87 https://conda.anaconda.org/conda-forge/noarch/lazy_loader-0.4-pyhd8ed1ab_2.conda#bb0230917e2473c77d615104dbe8a49d https://conda.anaconda.org/conda-forge/linux-64/libass-0.17.3-hba53ac1_1.conda#f5e75fe79d446bf4975b41d375314605 @@ -303,6 +302,7 @@ https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_1.con https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.1-h861ebed_0.conda#59e660508a4de9401543303d5f576aeb https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda#07f45f1be1c25345faddb8db0de8039b https://conda.anaconda.org/conda-forge/linux-64/pykdtree-1.4.1-py311h9f3472d_0.conda#71a1a3016f6caabac25f77b742460248 +https://conda.anaconda.org/conda-forge/linux-64/python-stratify-0.3.0-py311h9f3472d_3.conda#a7c4169b1c920361597ddacb461350fd https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.8.0-py311h9f3472d_0.conda#17334e5c12abdf2db6b25bd4187cd3e4 https://conda.anaconda.org/conda-forge/linux-64/scipy-1.15.2-py311h8f841c2_0.conda#5ec0a1732a05376241e1e4c6d50e0e91 https://conda.anaconda.org/conda-forge/linux-64/shapely-2.0.7-py311h2fdb869_0.conda#75f428f392207807643fa016a7c57ad8 @@ -311,7 +311,7 @@ https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda#3 https://conda.anaconda.org/conda-forge/noarch/wslink-2.3.2-pyhd8ed1ab_0.conda#b62ba33f73e92b385bdb00088533819a https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2#6b889f174df1e0f816276ae69281af4d https://conda.anaconda.org/conda-forge/linux-64/cf-units-3.3.0-py311h9f3472d_0.conda#555b148cafbd96b658499060d5e11a65 -https://conda.anaconda.org/conda-forge/noarch/distributed-2024.8.2-pyhd8ed1ab_0.conda#44d22b5d98a219a4c35cafe9bf3b9ce2 +https://conda.anaconda.org/conda-forge/noarch/distributed-2025.2.0-pyhd8ed1ab_0.conda#54562a2b30c8f357097e2be75295601e https://conda.anaconda.org/conda-forge/linux-64/elfutils-0.192-h7f4e02f_1.conda#369ce48a589a2aac91906c9ed89dd6e8 https://conda.anaconda.org/conda-forge/linux-64/esmf-8.7.0-nompi_h6063b07_1.conda#15e28a0e5e651ba11495c87608652316 https://conda.anaconda.org/conda-forge/noarch/imagehash-4.3.2-pyhd8ed1ab_0.conda#efbc812363856906a80344b496389d2e @@ -331,7 +331,6 @@ https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-h49af25d_2.conda# https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.0-py311h2b939e6_0.conda#79239585ea50c427415ef629534bb3aa https://conda.anaconda.org/conda-forge/linux-64/netcdf4-1.7.2-nompi_py311h7c29e4f_101.conda#d966f11d28c699da7e9de2aa2f323a4f https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda#5353f5eb201a9415b12385e35ed1148d -https://conda.anaconda.org/conda-forge/linux-64/python-stratify-0.3.0-py311h9f3472d_3.conda#a7c4169b1c920361597ddacb461350fd https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda#a9b9368f3701a417eac9edbcae7cb737 https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.2.4-h3083f51_0.conda#c0d92f268209e0a0fd27954a5667c11d https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-47.0-unix_0.conda#49436a5c604f99058473d84580f0e341 @@ -360,4 +359,3 @@ https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8 https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda#00534ebcc0375929b45c3039b5ba7636 https://conda.anaconda.org/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_1.conda#1a3281a0dc355c02b5506d87db2d78ac https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda#3bc61f7161d28137797e038263c04c54 - diff --git a/requirements/locks/py312-linux-64.lock b/requirements/locks/py312-linux-64.lock index c9690249a2..a9c7e309d4 100644 --- a/requirements/locks/py312-linux-64.lock +++ b/requirements/locks/py312-linux-64.lock @@ -1,6 +1,6 @@ # Generated by conda-lock. # platform: linux-64 -# input_hash: 99c5c493d72abab1088c22d89abdd9b5e70bb415845b13643a962d169660fe74 +# input_hash: bafcb30412f96e27e0bcbc91571bf16dce0b108578822ebc707b3d82114d2320 @EXPLICIT https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda#19f3a56f68d2fd06c516076bff482c52 @@ -259,8 +259,8 @@ https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.cond https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda#0ea623ee1f29a7e1d703bc3b0ef82306 https://conda.anaconda.org/conda-forge/noarch/asv_runner-0.2.1-pyhd8ed1ab_0.conda#fdcbeb072c80c805a2ededaa5f91cd79 https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda#373374a3ed20141090504031dc7b693e +https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.2.0-pyhd8ed1ab_0.conda#3bc22d25e3ee83d709804a2040b4463c https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.3.0-h76408a6_0.conda#0a06f278e5d9242057673b1358a75e8f -https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.6.1-hd8ed1ab_0.conda#7f46575a91b1307441abc235d01cab66 https://conda.anaconda.org/conda-forge/noarch/lazy-loader-0.4-pyhd8ed1ab_2.conda#d10d9393680734a8febc4b362a4c94f2 https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.2-nompi_h5ddbaa4_116.conda#f51573abc223afed7e5374f34135ce05 https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda#ef1910918dd895516a769ed36b5b3a4e @@ -281,7 +281,6 @@ https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.t https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.4-py312hc0a28a1_1.conda#990033147b0a998e756eaaed6b28f48d https://conda.anaconda.org/conda-forge/noarch/colorspacious-1.1.2-pyhecae5ae_1.conda#04151bb8e351c6209caad045e4b1f4bd https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.1-py312h68727a3_0.conda#f5fbba0394ee45e9a64a73c2a994126a -https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.8.2-pyhd8ed1ab_0.conda#8e7524a2fb561506260db789806c7ee9 https://conda.anaconda.org/conda-forge/noarch/identify-2.6.8-pyhd8ed1ab_0.conda#153a6ad50ad9db7bb4e042ee52a56f87 https://conda.anaconda.org/conda-forge/noarch/lazy_loader-0.4-pyhd8ed1ab_2.conda#bb0230917e2473c77d615104dbe8a49d https://conda.anaconda.org/conda-forge/linux-64/libass-0.17.3-hba53ac1_1.conda#f5e75fe79d446bf4975b41d375314605 @@ -292,6 +291,7 @@ https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.con https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.1-h861ebed_0.conda#59e660508a4de9401543303d5f576aeb https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda#07f45f1be1c25345faddb8db0de8039b https://conda.anaconda.org/conda-forge/linux-64/pykdtree-1.4.1-py312hc0a28a1_0.conda#6a0691f8e533d92b14a6d5eee07b6964 +https://conda.anaconda.org/conda-forge/linux-64/python-stratify-0.3.0-py312hc0a28a1_3.conda#81bbcb20ea4a53b05a8cf51f31496038 https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.8.0-py312hc0a28a1_0.conda#3f62987017ad18e9e7dadce9899de9ef https://conda.anaconda.org/conda-forge/linux-64/scipy-1.15.2-py312ha707e6e_0.conda#00b999c5f9d01fb633db819d79186bd4 https://conda.anaconda.org/conda-forge/linux-64/shapely-2.0.7-py312h391bc85_0.conda#3491bd7e78aa7407c965312c4a5a9254 @@ -300,7 +300,7 @@ https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda#3 https://conda.anaconda.org/conda-forge/noarch/wslink-2.3.2-pyhd8ed1ab_0.conda#b62ba33f73e92b385bdb00088533819a https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2#6b889f174df1e0f816276ae69281af4d https://conda.anaconda.org/conda-forge/linux-64/cf-units-3.3.0-py312hc0a28a1_0.conda#8b5b812d4c18cb37bda7a7c8d3a6acb3 -https://conda.anaconda.org/conda-forge/noarch/distributed-2024.8.2-pyhd8ed1ab_0.conda#44d22b5d98a219a4c35cafe9bf3b9ce2 +https://conda.anaconda.org/conda-forge/noarch/distributed-2025.2.0-pyhd8ed1ab_0.conda#54562a2b30c8f357097e2be75295601e https://conda.anaconda.org/conda-forge/linux-64/esmf-8.7.0-nompi_h6063b07_1.conda#15e28a0e5e651ba11495c87608652316 https://conda.anaconda.org/conda-forge/noarch/imagehash-4.3.2-pyhd8ed1ab_0.conda#efbc812363856906a80344b496389d2e https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-batch-plugin-2025.0.0-h4d9b6c2_0.conda#62d563673a912579d277d27f0067b689 @@ -319,7 +319,6 @@ https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-h49af25d_2.conda# https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.0-py312hd3ec401_0.conda#c27a17a8c54c0d35cf83bbc0de8f7f77 https://conda.anaconda.org/conda-forge/linux-64/netcdf4-1.7.2-nompi_py312ha728dd9_101.conda#7e41ca6012a6bf609539aec0dfee93f7 https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda#5353f5eb201a9415b12385e35ed1148d -https://conda.anaconda.org/conda-forge/linux-64/python-stratify-0.3.0-py312hc0a28a1_3.conda#81bbcb20ea4a53b05a8cf51f31496038 https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda#a9b9368f3701a417eac9edbcae7cb737 https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.2.4-h3083f51_0.conda#c0d92f268209e0a0fd27954a5667c11d https://conda.anaconda.org/conda-forge/linux-64/vtk-base-9.3.1-egl_py312hc001bbe_13.conda#559a8d091b4e8806520f7f2f797c66de @@ -347,4 +346,3 @@ https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8 https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda#00534ebcc0375929b45c3039b5ba7636 https://conda.anaconda.org/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_1.conda#1a3281a0dc355c02b5506d87db2d78ac https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda#3bc61f7161d28137797e038263c04c54 - diff --git a/requirements/locks/py313-linux-64.lock b/requirements/locks/py313-linux-64.lock index 6ec0c12537..493ef1b9d1 100644 --- a/requirements/locks/py313-linux-64.lock +++ b/requirements/locks/py313-linux-64.lock @@ -1,6 +1,6 @@ # Generated by conda-lock. # platform: linux-64 -# input_hash: f8855be38c3508aab7d2c9270664a4b78b7181e0c1f740f1bfdd96ce4909964b +# input_hash: eee026827c087cb44d5ccb1bfccefe5875fde863788f149c6ba396df253a3e94 @EXPLICIT https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda#19f3a56f68d2fd06c516076bff482c52 @@ -269,8 +269,8 @@ https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py313h8060acc_1.cond https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py313h8060acc_0.conda#28bff2c6838524317be9b47b4b641058 https://conda.anaconda.org/conda-forge/noarch/asv_runner-0.2.1-pyhd8ed1ab_0.conda#fdcbeb072c80c805a2ededaa5f91cd79 https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda#373374a3ed20141090504031dc7b693e +https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.2.0-pyhd8ed1ab_0.conda#3bc22d25e3ee83d709804a2040b4463c https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.3.0-h76408a6_0.conda#0a06f278e5d9242057673b1358a75e8f -https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.6.1-hd8ed1ab_0.conda#7f46575a91b1307441abc235d01cab66 https://conda.anaconda.org/conda-forge/noarch/lazy-loader-0.4-pyhd8ed1ab_2.conda#d10d9393680734a8febc4b362a4c94f2 https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp19.1-19.1.7-default_hb5137d0_1.conda#6454f8c8c6094faaaf12acb912c1bb33 https://conda.anaconda.org/conda-forge/linux-64/libclang13-19.1.7-default_h9c6a7e4_1.conda#7a642dc8a248fb3fc077bf825e901459 @@ -295,7 +295,6 @@ https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.t https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.4-py313ha014f3b_1.conda#b20667f9b1d016c1141051a433f76dfc https://conda.anaconda.org/conda-forge/noarch/colorspacious-1.1.2-pyhecae5ae_1.conda#04151bb8e351c6209caad045e4b1f4bd https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.1-py313h33d0bda_0.conda#6b6768e7c585d7029f79a04cbc4cbff0 -https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.8.2-pyhd8ed1ab_0.conda#8e7524a2fb561506260db789806c7ee9 https://conda.anaconda.org/conda-forge/linux-64/glew-2.1.0-h9c3ff4c_2.tar.bz2#fb05eb5c47590b247658243d27fc32f1 https://conda.anaconda.org/conda-forge/noarch/identify-2.6.8-pyhd8ed1ab_0.conda#153a6ad50ad9db7bb4e042ee52a56f87 https://conda.anaconda.org/conda-forge/noarch/lazy_loader-0.4-pyhd8ed1ab_2.conda#bb0230917e2473c77d615104dbe8a49d @@ -307,6 +306,7 @@ https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py313ha87cce1_1.con https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.1-h861ebed_0.conda#59e660508a4de9401543303d5f576aeb https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda#07f45f1be1c25345faddb8db0de8039b https://conda.anaconda.org/conda-forge/linux-64/pykdtree-1.4.1-py313ha014f3b_0.conda#a6d57e9737d2a713e41d6252e0dd5439 +https://conda.anaconda.org/conda-forge/linux-64/python-stratify-0.3.0-py313ha014f3b_3.conda#041b8326743c64bd02b8c0f34f05e1ef https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.8.0-py313ha014f3b_0.conda#18e1fc89d6664bf2eec16a03a701c431 https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.8.2-h588cce1_0.conda#4d483b12b9fc7169d112d4f7a250c05c https://conda.anaconda.org/conda-forge/linux-64/scipy-1.15.2-py313h86fcf2b_0.conda#ca68acd9febc86448eeed68d0c6c8643 @@ -315,7 +315,7 @@ https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda#3 https://conda.anaconda.org/conda-forge/noarch/wslink-2.3.2-pyhd8ed1ab_0.conda#b62ba33f73e92b385bdb00088533819a https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2#6b889f174df1e0f816276ae69281af4d https://conda.anaconda.org/conda-forge/linux-64/cf-units-3.3.0-py313ha014f3b_0.conda#aecffd7a21d698e374487644ce67d6eb -https://conda.anaconda.org/conda-forge/noarch/distributed-2024.8.2-pyhd8ed1ab_0.conda#44d22b5d98a219a4c35cafe9bf3b9ce2 +https://conda.anaconda.org/conda-forge/noarch/distributed-2025.2.0-pyhd8ed1ab_0.conda#54562a2b30c8f357097e2be75295601e https://conda.anaconda.org/conda-forge/linux-64/esmf-8.7.0-nompi_h6063b07_1.conda#15e28a0e5e651ba11495c87608652316 https://conda.anaconda.org/conda-forge/noarch/imagehash-4.3.2-pyhd8ed1ab_0.conda#efbc812363856906a80344b496389d2e https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-batch-plugin-2025.0.0-h4d9b6c2_0.conda#62d563673a912579d277d27f0067b689 @@ -334,7 +334,6 @@ https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-h49af25d_2.conda# https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.0-py313h129903b_0.conda#ab5b84154e1d9e41d4f11aea76d74096 https://conda.anaconda.org/conda-forge/linux-64/netcdf4-1.7.2-nompi_py313h1dd084c_101.conda#7acb7a454880b024f7d67487a7495631 https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda#5353f5eb201a9415b12385e35ed1148d -https://conda.anaconda.org/conda-forge/linux-64/python-stratify-0.3.0-py313ha014f3b_3.conda#041b8326743c64bd02b8c0f34f05e1ef https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda#a9b9368f3701a417eac9edbcae7cb737 https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.2.4-h3083f51_0.conda#c0d92f268209e0a0fd27954a5667c11d https://conda.anaconda.org/conda-forge/linux-64/vtk-base-9.3.1-qt_py313hd521359_213.conda#77b7b4222fa21ffcf5ce3ce303706ada @@ -362,4 +361,3 @@ https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8 https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda#00534ebcc0375929b45c3039b5ba7636 https://conda.anaconda.org/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_1.conda#1a3281a0dc355c02b5506d87db2d78ac https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda#3bc61f7161d28137797e038263c04c54 - diff --git a/requirements/py311.yml b/requirements/py311.yml index 3ddb50b564..4722bfc108 100644 --- a/requirements/py311.yml +++ b/requirements/py311.yml @@ -14,7 +14,7 @@ dependencies: - cartopy >=0.21 - cf-units >=3.1 - cftime >=1.5 - - dask-core >=2022.9.0,!=2024.8.0, <2024.9 + - dask-core >=2025.1.0 # github.com/SciTools/iris/issues/6264 - libnetcdf !=4.9.1 - matplotlib-base >=3.5, !=3.9.1 - netcdf4 diff --git a/requirements/py312.yml b/requirements/py312.yml index 85e7192a20..ad59cb0ddb 100644 --- a/requirements/py312.yml +++ b/requirements/py312.yml @@ -14,7 +14,7 @@ dependencies: - cartopy >=0.21 - cf-units >=3.1 - cftime >=1.5 - - dask-core >=2022.9.0,!=2024.8.0, <2024.9 + - dask-core >=2025.1.0 # github.com/SciTools/iris/issues/6264 - libnetcdf !=4.9.1 - matplotlib-base >=3.5, !=3.9.1 - netcdf4 diff --git a/requirements/py313.yml b/requirements/py313.yml index 6d14b5acea..5ff35e2d49 100644 --- a/requirements/py313.yml +++ b/requirements/py313.yml @@ -14,7 +14,7 @@ dependencies: - cartopy >=0.21 - cf-units >=3.1 - cftime >=1.5 - - dask-core >=2022.9.0,!=2024.8.0, <2024.9 + - dask-core >=2025.1.0 # github.com/SciTools/iris/issues/6264 - libnetcdf !=4.9.1 - matplotlib-base >=3.5, !=3.9.1 - netcdf4 diff --git a/requirements/pypi-core.txt b/requirements/pypi-core.txt index 041ac8a9e4..8e07789032 100644 --- a/requirements/pypi-core.txt +++ b/requirements/pypi-core.txt @@ -1,7 +1,7 @@ cartopy>=0.21 cf-units>=3.1 cftime>=1.5.0 -dask[array]>=2022.9.0,!=2024.8.0, <2024.9 +dask[array]>=2025.1.0 # github.com/SciTools/iris/issues/6264 # libnetcdf!=4.9.1 (not available on PyPI) matplotlib>=3.5 netcdf4