Skip to content

Commit ccfe4ee

Browse files
stephenworsleyvaleriupredoipre-commit-ci[bot]
authored
Unpin dask 2 (#6342)
* unpin and repin dask * unSKIP doctests * update lock files * edit tests to reference most recent pickle protocols * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * fix tests * fix tests and lockfile * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * fix tests * fix tests, somehow * update lockfiles * add whatsnew --------- Co-authored-by: Valeriu Predoi <[email protected]> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent ed45606 commit ccfe4ee

File tree

14 files changed

+60
-64
lines changed

14 files changed

+60
-64
lines changed

docs/src/whatsnew/latest.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,11 @@ This document explains the changes made to Iris for this release
100100
#. `@stephenworsley`_ dropped support for ``py310`` and adopted support for ``py313``
101101
as per the `SPEC 0`_ schedule. (:pull:`6195`)
102102

103+
#. `@stephenworsley`_ and `@valeriupredoi`_ removed the pin from dask since newer
104+
versions of dask fix the bug casuing the pin. Introduced a minimum pin (2025.1.0)
105+
to avoid this bug. (:pull:`6342`)
106+
107+
103108
📚 Documentation
104109
================
105110

@@ -142,6 +147,7 @@ This document explains the changes made to Iris for this release
142147
.. _@fnattino: https://github.com/fnattino
143148
.. _@jrackham-mo: https://github.com/jrackham-mo
144149
.. _@stefsmeets: https://github.com/stefsmeets
150+
.. _@valeriupredoi: https://github.com/valeriupredoi
145151

146152
.. comment
147153
Whatsnew resources in alphabetical order:

lib/iris/common/resolve.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2592,9 +2592,9 @@ def shape(self):
25922592
source 'Data from Met Office Unified Model 6.05'
25932593
>>> Resolve().shape is None
25942594
True
2595-
>>> Resolve(cube1, cube2).shape # doctest: +SKIP
2595+
>>> Resolve(cube1, cube2).shape
25962596
(240, 37, 49)
2597-
>>> Resolve(cube2, cube1).shape # doctest: +SKIP
2597+
>>> Resolve(cube2, cube1).shape
25982598
(240, 37, 49)
25992599
26002600
""" # noqa: D214, D406, D407, D410, D411

lib/iris/tests/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@
8686

8787
#: Basepath for test results.
8888
_RESULT_PATH = os.path.join(os.path.dirname(__file__), "results")
89+
MIN_PICKLE_PROTOCOL = 4
8990

9091
if "--data-files-used" in sys.argv:
9192
sys.argv.remove("--data-files-used")

lib/iris/tests/integration/test_pickle.py

Lines changed: 29 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -7,52 +7,47 @@
77
# Import iris.tests first so that some things can be initialised before
88
# importing anything else.
99
import iris.tests as tests # isort:skip
10-
1110
import pickle
1211

13-
import iris
14-
12+
import pytest
1513

16-
class Common:
17-
def pickle_cube(self, protocol):
18-
# Ensure that data proxies are pickleable.
19-
cube = iris.load(self.path)[0]
20-
with self.temp_filename(".pkl") as filename:
21-
with open(filename, "wb") as f:
22-
pickle.dump(cube, f, protocol)
23-
with open(filename, "rb") as f:
24-
ncube = pickle.load(f)
25-
self.assertEqual(ncube, cube)
14+
import iris
15+
from iris.tests import MIN_PICKLE_PROTOCOL
2616

27-
def test_protocol_0(self):
28-
self.pickle_cube(0)
17+
TESTED_PROTOCOLS = list(range(MIN_PICKLE_PROTOCOL, pickle.HIGHEST_PROTOCOL + 1))
2918

30-
def test_protocol_1(self):
31-
self.pickle_cube(1)
3219

33-
def test_protocol_2(self):
34-
self.pickle_cube(2)
20+
def pickle_cube(path, protocol, filename):
21+
# Ensure that data proxies are pickleable.
22+
cube = iris.load(path)[0]
23+
with open(filename, "wb") as f:
24+
pickle.dump(cube, f, protocol)
25+
with open(filename, "rb") as f:
26+
ncube = pickle.load(f)
27+
assert ncube == cube
3528

3629

30+
@pytest.mark.parametrize("protocol", TESTED_PROTOCOLS)
3731
@tests.skip_data
38-
class test_netcdf(Common, tests.IrisTest):
39-
def setUp(self):
40-
self.path = tests.get_data_path(
41-
("NetCDF", "global", "xyt", "SMALL_hires_wind_u_for_ipcc4.nc")
42-
)
32+
def test_netcdf(protocol, tmp_path):
33+
path = tests.get_data_path(
34+
("NetCDF", "global", "xyt", "SMALL_hires_wind_u_for_ipcc4.nc")
35+
)
36+
tmp_file = tmp_path / "netcdf.pkl"
37+
pickle_cube(path, protocol, tmp_file)
4338

4439

40+
@pytest.mark.parametrize("protocol", TESTED_PROTOCOLS)
4541
@tests.skip_data
46-
class test_pp(Common, tests.IrisTest):
47-
def setUp(self):
48-
self.path = tests.get_data_path(("PP", "aPPglob1", "global.pp"))
42+
def test_pp(protocol, tmp_path):
43+
path = tests.get_data_path(("PP", "aPPglob1", "global.pp"))
44+
tmp_file = tmp_path / "pp.pkl"
45+
pickle_cube(path, protocol, tmp_file)
4946

5047

48+
@pytest.mark.parametrize("protocol", TESTED_PROTOCOLS)
5149
@tests.skip_data
52-
class test_ff(Common, tests.IrisTest):
53-
def setUp(self):
54-
self.path = tests.get_data_path(("FF", "n48_multi_field"))
55-
56-
57-
if __name__ == "__main__":
58-
tests.main()
50+
def test_ff(protocol, tmp_path):
51+
path = tests.get_data_path(("FF", "n48_multi_field"))
52+
tmp_file = tmp_path / "ff.pkl"
53+
pickle_cube(path, protocol, tmp_file)

lib/iris/tests/test_pickling.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
# Import iris tests first so that some things can be initialised
88
# before importing anything else.
99
import iris.tests as tests # isort:skip
10-
1110
import io
1211
import pickle
1312

@@ -16,12 +15,13 @@
1615

1716
import iris
1817
from iris._lazy_data import as_concrete_data, as_lazy_data
18+
from iris.tests import MIN_PICKLE_PROTOCOL
1919

2020

2121
class TestPickle(tests.IrisTest):
2222
def pickle_then_unpickle(self, obj):
2323
"""Returns a generator of ("pickle protocol number", object) tuples."""
24-
for protocol in range(1 + pickle.HIGHEST_PROTOCOL):
24+
for protocol in range(MIN_PICKLE_PROTOCOL, pickle.HIGHEST_PROTOCOL + 1):
2525
bio = io.BytesIO()
2626
pickle.dump(obj, bio, protocol)
2727

lib/iris/tests/unit/analysis/test_PERCENTILE.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ def test_default_kwargs_passed(self, mocked_mquantiles):
162162
for key in ["alphap", "betap"]:
163163
self.assertEqual(mocked_mquantiles.call_args.kwargs[key], 1)
164164

165-
@mock.patch("scipy.stats.mstats.mquantiles")
165+
@mock.patch("scipy.stats.mstats.mquantiles", return_value=np.array([2, 4]))
166166
def test_chosen_kwargs_passed(self, mocked_mquantiles):
167167
data = np.arange(5)
168168
percent = [42, 75]
@@ -356,7 +356,7 @@ def test_numpy_percentile_called(self, mocked_percentile):
356356
# Check we have left "method" keyword to numpy's default.
357357
self.assertNotIn("method", mocked_percentile.call_args.kwargs)
358358

359-
@mock.patch("numpy.percentile")
359+
@mock.patch("numpy.percentile", return_value=np.array([2, 4]))
360360
def test_chosen_method_kwarg_passed(self, mocked_percentile):
361361
data = da.arange(5)
362362
percent = [42, 75]

lib/iris/tests/unit/fileformats/pp/test__interpret_field.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,9 @@ def test_landsea_unpacking_uses_dask(self):
117117
# Get the 'main' calculation entry.
118118
mask_toplev_item = lazy_mask_array.dask[mask_toplev_key]
119119
# This should be a task (a simple fetch).
120-
self.assertTrue(callable(mask_toplev_item[0]))
120+
self.assertTrue(callable(mask_toplev_item))
121121
# Get the key (name) of the array that it fetches.
122-
mask_data_name = mask_toplev_item[1]
122+
mask_data_name = mask_toplev_item.args[0].key
123123

124124
# Check that the item this refers to is a PPDataProxy.
125125
self.assertIsInstance(lazy_mask_array.dask[mask_data_name], pp.PPDataProxy)

requirements/locks/py311-linux-64.lock

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Generated by conda-lock.
22
# platform: linux-64
3-
# input_hash: 484c12b1591315f270b3e15b42ed2cba4c973b701897ae7eb79b8b9442d99a96
3+
# input_hash: 0e2b46335d407c1dacba3b0965f0164093e232b456197e26651a7fd261b99f5b
44
@EXPLICIT
55
https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81
66
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
268268
https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py311h2dc5d0c_0.conda#0b7a6100e053342079b607bbfdaeaa2a
269269
https://conda.anaconda.org/conda-forge/noarch/asv_runner-0.2.1-pyhd8ed1ab_0.conda#fdcbeb072c80c805a2ededaa5f91cd79
270270
https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda#373374a3ed20141090504031dc7b693e
271+
https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.2.0-pyhd8ed1ab_0.conda#3bc22d25e3ee83d709804a2040b4463c
271272
https://conda.anaconda.org/conda-forge/linux-64/gnutls-3.8.9-h5746830_0.conda#0e776b108cd87ee80618acc5ee64c07f
272273
https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.3.0-h76408a6_0.conda#0a06f278e5d9242057673b1358a75e8f
273-
https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.6.1-hd8ed1ab_0.conda#7f46575a91b1307441abc235d01cab66
274274
https://conda.anaconda.org/conda-forge/noarch/lazy-loader-0.4-pyhd8ed1ab_2.conda#d10d9393680734a8febc4b362a4c94f2
275275
https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.2-nompi_h5ddbaa4_116.conda#f51573abc223afed7e5374f34135ce05
276276
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
291291
https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.4-py311h9f3472d_1.conda#2c3c4f115d28ed9e001a271d5d8585aa
292292
https://conda.anaconda.org/conda-forge/noarch/colorspacious-1.1.2-pyhecae5ae_1.conda#04151bb8e351c6209caad045e4b1f4bd
293293
https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.1-py311hd18a35c_0.conda#351cb68d2081e249069748b6e60b3cd2
294-
https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.8.2-pyhd8ed1ab_0.conda#8e7524a2fb561506260db789806c7ee9
295294
https://conda.anaconda.org/conda-forge/noarch/identify-2.6.8-pyhd8ed1ab_0.conda#153a6ad50ad9db7bb4e042ee52a56f87
296295
https://conda.anaconda.org/conda-forge/noarch/lazy_loader-0.4-pyhd8ed1ab_2.conda#bb0230917e2473c77d615104dbe8a49d
297296
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
303302
https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.1-h861ebed_0.conda#59e660508a4de9401543303d5f576aeb
304303
https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda#07f45f1be1c25345faddb8db0de8039b
305304
https://conda.anaconda.org/conda-forge/linux-64/pykdtree-1.4.1-py311h9f3472d_0.conda#71a1a3016f6caabac25f77b742460248
305+
https://conda.anaconda.org/conda-forge/linux-64/python-stratify-0.3.0-py311h9f3472d_3.conda#a7c4169b1c920361597ddacb461350fd
306306
https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.8.0-py311h9f3472d_0.conda#17334e5c12abdf2db6b25bd4187cd3e4
307307
https://conda.anaconda.org/conda-forge/linux-64/scipy-1.15.2-py311h8f841c2_0.conda#5ec0a1732a05376241e1e4c6d50e0e91
308308
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
311311
https://conda.anaconda.org/conda-forge/noarch/wslink-2.3.2-pyhd8ed1ab_0.conda#b62ba33f73e92b385bdb00088533819a
312312
https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2#6b889f174df1e0f816276ae69281af4d
313313
https://conda.anaconda.org/conda-forge/linux-64/cf-units-3.3.0-py311h9f3472d_0.conda#555b148cafbd96b658499060d5e11a65
314-
https://conda.anaconda.org/conda-forge/noarch/distributed-2024.8.2-pyhd8ed1ab_0.conda#44d22b5d98a219a4c35cafe9bf3b9ce2
314+
https://conda.anaconda.org/conda-forge/noarch/distributed-2025.2.0-pyhd8ed1ab_0.conda#54562a2b30c8f357097e2be75295601e
315315
https://conda.anaconda.org/conda-forge/linux-64/elfutils-0.192-h7f4e02f_1.conda#369ce48a589a2aac91906c9ed89dd6e8
316316
https://conda.anaconda.org/conda-forge/linux-64/esmf-8.7.0-nompi_h6063b07_1.conda#15e28a0e5e651ba11495c87608652316
317317
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#
331331
https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.0-py311h2b939e6_0.conda#79239585ea50c427415ef629534bb3aa
332332
https://conda.anaconda.org/conda-forge/linux-64/netcdf4-1.7.2-nompi_py311h7c29e4f_101.conda#d966f11d28c699da7e9de2aa2f323a4f
333333
https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda#5353f5eb201a9415b12385e35ed1148d
334-
https://conda.anaconda.org/conda-forge/linux-64/python-stratify-0.3.0-py311h9f3472d_3.conda#a7c4169b1c920361597ddacb461350fd
335334
https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda#a9b9368f3701a417eac9edbcae7cb737
336335
https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.2.4-h3083f51_0.conda#c0d92f268209e0a0fd27954a5667c11d
337336
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
360359
https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda#00534ebcc0375929b45c3039b5ba7636
361360
https://conda.anaconda.org/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_1.conda#1a3281a0dc355c02b5506d87db2d78ac
362361
https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda#3bc61f7161d28137797e038263c04c54
363-

requirements/locks/py312-linux-64.lock

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Generated by conda-lock.
22
# platform: linux-64
3-
# input_hash: 99c5c493d72abab1088c22d89abdd9b5e70bb415845b13643a962d169660fe74
3+
# input_hash: bafcb30412f96e27e0bcbc91571bf16dce0b108578822ebc707b3d82114d2320
44
@EXPLICIT
55
https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81
66
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
259259
https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda#0ea623ee1f29a7e1d703bc3b0ef82306
260260
https://conda.anaconda.org/conda-forge/noarch/asv_runner-0.2.1-pyhd8ed1ab_0.conda#fdcbeb072c80c805a2ededaa5f91cd79
261261
https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda#373374a3ed20141090504031dc7b693e
262+
https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.2.0-pyhd8ed1ab_0.conda#3bc22d25e3ee83d709804a2040b4463c
262263
https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.3.0-h76408a6_0.conda#0a06f278e5d9242057673b1358a75e8f
263-
https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.6.1-hd8ed1ab_0.conda#7f46575a91b1307441abc235d01cab66
264264
https://conda.anaconda.org/conda-forge/noarch/lazy-loader-0.4-pyhd8ed1ab_2.conda#d10d9393680734a8febc4b362a4c94f2
265265
https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.2-nompi_h5ddbaa4_116.conda#f51573abc223afed7e5374f34135ce05
266266
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
281281
https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.4-py312hc0a28a1_1.conda#990033147b0a998e756eaaed6b28f48d
282282
https://conda.anaconda.org/conda-forge/noarch/colorspacious-1.1.2-pyhecae5ae_1.conda#04151bb8e351c6209caad045e4b1f4bd
283283
https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.1-py312h68727a3_0.conda#f5fbba0394ee45e9a64a73c2a994126a
284-
https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.8.2-pyhd8ed1ab_0.conda#8e7524a2fb561506260db789806c7ee9
285284
https://conda.anaconda.org/conda-forge/noarch/identify-2.6.8-pyhd8ed1ab_0.conda#153a6ad50ad9db7bb4e042ee52a56f87
286285
https://conda.anaconda.org/conda-forge/noarch/lazy_loader-0.4-pyhd8ed1ab_2.conda#bb0230917e2473c77d615104dbe8a49d
287286
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
292291
https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.1-h861ebed_0.conda#59e660508a4de9401543303d5f576aeb
293292
https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda#07f45f1be1c25345faddb8db0de8039b
294293
https://conda.anaconda.org/conda-forge/linux-64/pykdtree-1.4.1-py312hc0a28a1_0.conda#6a0691f8e533d92b14a6d5eee07b6964
294+
https://conda.anaconda.org/conda-forge/linux-64/python-stratify-0.3.0-py312hc0a28a1_3.conda#81bbcb20ea4a53b05a8cf51f31496038
295295
https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.8.0-py312hc0a28a1_0.conda#3f62987017ad18e9e7dadce9899de9ef
296296
https://conda.anaconda.org/conda-forge/linux-64/scipy-1.15.2-py312ha707e6e_0.conda#00b999c5f9d01fb633db819d79186bd4
297297
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
300300
https://conda.anaconda.org/conda-forge/noarch/wslink-2.3.2-pyhd8ed1ab_0.conda#b62ba33f73e92b385bdb00088533819a
301301
https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2#6b889f174df1e0f816276ae69281af4d
302302
https://conda.anaconda.org/conda-forge/linux-64/cf-units-3.3.0-py312hc0a28a1_0.conda#8b5b812d4c18cb37bda7a7c8d3a6acb3
303-
https://conda.anaconda.org/conda-forge/noarch/distributed-2024.8.2-pyhd8ed1ab_0.conda#44d22b5d98a219a4c35cafe9bf3b9ce2
303+
https://conda.anaconda.org/conda-forge/noarch/distributed-2025.2.0-pyhd8ed1ab_0.conda#54562a2b30c8f357097e2be75295601e
304304
https://conda.anaconda.org/conda-forge/linux-64/esmf-8.7.0-nompi_h6063b07_1.conda#15e28a0e5e651ba11495c87608652316
305305
https://conda.anaconda.org/conda-forge/noarch/imagehash-4.3.2-pyhd8ed1ab_0.conda#efbc812363856906a80344b496389d2e
306306
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#
319319
https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.0-py312hd3ec401_0.conda#c27a17a8c54c0d35cf83bbc0de8f7f77
320320
https://conda.anaconda.org/conda-forge/linux-64/netcdf4-1.7.2-nompi_py312ha728dd9_101.conda#7e41ca6012a6bf609539aec0dfee93f7
321321
https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda#5353f5eb201a9415b12385e35ed1148d
322-
https://conda.anaconda.org/conda-forge/linux-64/python-stratify-0.3.0-py312hc0a28a1_3.conda#81bbcb20ea4a53b05a8cf51f31496038
323322
https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda#a9b9368f3701a417eac9edbcae7cb737
324323
https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.2.4-h3083f51_0.conda#c0d92f268209e0a0fd27954a5667c11d
325324
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
347346
https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda#00534ebcc0375929b45c3039b5ba7636
348347
https://conda.anaconda.org/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_1.conda#1a3281a0dc355c02b5506d87db2d78ac
349348
https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda#3bc61f7161d28137797e038263c04c54
350-

0 commit comments

Comments
 (0)