From a5ac24adee24ea4afe34506cae18854b6bbe13ee Mon Sep 17 00:00:00 2001 From: Ruth Comer <10599679+rcomer@users.noreply.github.com> Date: Wed, 8 Dec 2021 15:34:56 +0000 Subject: [PATCH 1/3] cube.aggregated_by output bounds (#4315) * calculate groupby indices up front * reduce code repetition * use min/max for non-monotonic coords * update failing tests; add and pass test for bounded case * whatsnew * clarity tweaks Co-authored-by: lbdreyer --- docs/src/whatsnew/latest.rst | 4 ++ lib/iris/analysis/__init__.py | 83 ++++++++++++++------------- lib/iris/tests/unit/cube/test_Cube.py | 26 ++++++++- 3 files changed, 72 insertions(+), 41 deletions(-) diff --git a/docs/src/whatsnew/latest.rst b/docs/src/whatsnew/latest.rst index e1738e1af8..63c96f8962 100644 --- a/docs/src/whatsnew/latest.rst +++ b/docs/src/whatsnew/latest.rst @@ -136,6 +136,10 @@ This document explains the changes made to Iris for this release array laziness, allowing efficient comparisons even with larger-than-memory objects. (:pull:`4439`) +#. `@rcomer`_ modified :meth:`~iris.cube.Cube.aggregated_by` to calculate new + coordinate bounds using minimum and maximum for unordered coordinates, + fixing :issue:`1528`. (:pull:`4315`) + 💣 Incompatible Changes ======================= diff --git a/lib/iris/analysis/__init__.py b/lib/iris/analysis/__init__.py index dc8ad78080..01c12c748a 100644 --- a/lib/iris/analysis/__init__.py +++ b/lib/iris/analysis/__init__.py @@ -2170,15 +2170,20 @@ def _compute_groupby_coords(self): def _compute_shared_coords(self): """Create the new shared coordinates given the group slices.""" + groupby_indices = [] groupby_bounds = [] - # Iterate over the ordered dictionary in order to construct - # a list of tuple group boundary indexes. + # Iterate over the ordered dictionary in order to construct a list of + # tuple group indices, and a list of the respective bounds of those + # indices. for key_slice in self._slices_by_key.values(): if isinstance(key_slice, tuple): - groupby_bounds.append((key_slice[0], key_slice[-1])) + indices = key_slice else: - groupby_bounds.append((key_slice.start, key_slice.stop - 1)) + indices = tuple(range(*key_slice.indices(self._stop))) + + groupby_indices.append(indices) + groupby_bounds.append((indices[0], indices[-1])) # Create new shared bounded coordinates. for coord, dim in self._shared_coords: @@ -2197,15 +2202,9 @@ def _compute_shared_coords(self): new_shape += shape[:-1] work_arr = work_arr.reshape(work_shape) - for key_slice in self._slices_by_key.values(): - if isinstance(key_slice, slice): - indices = key_slice.indices( - coord.points.shape[dim] - ) - key_slice = range(*indices) - + for indices in groupby_indices: for arr in work_arr: - new_points.append("|".join(arr.take(key_slice))) + new_points.append("|".join(arr.take(indices))) # Reinstate flattened dimensions. Aggregated dim now leads. new_points = np.array(new_points).reshape(new_shape) @@ -2220,48 +2219,54 @@ def _compute_shared_coords(self): raise ValueError(msg) else: new_bounds = [] + if coord.has_bounds(): + # Derive new coord's bounds from bounds. + item = coord.bounds + maxmin_axis = (dim, -1) + first_choices = coord.bounds.take(0, -1) + last_choices = coord.bounds.take(1, -1) + else: + # Derive new coord's bounds from points. + item = coord.points + maxmin_axis = dim + first_choices = last_choices = coord.points + + # Check whether item is monotonic along the dimension of interest. + deltas = np.diff(item, 1, dim) + monotonic = np.all(deltas >= 0) or np.all(deltas <= 0) # Construct list of coordinate group boundary pairs. - for start, stop in groupby_bounds: - if coord.has_bounds(): - # Collapse group bounds into bounds. + if monotonic: + # Use first and last bound or point for new bounds. + for start, stop in groupby_bounds: if ( getattr(coord, "circular", False) - and (stop + 1) == coord.shape[dim] + and (stop + 1) == self._stop ): new_bounds.append( [ - coord.bounds.take(start, dim).take(0, -1), - coord.bounds.take(0, dim).take(0, -1) - + coord.units.modulus, - ] - ) - else: - new_bounds.append( - [ - coord.bounds.take(start, dim).take(0, -1), - coord.bounds.take(stop, dim).take(1, -1), - ] - ) - else: - # Collapse group points into bounds. - if getattr(coord, "circular", False) and ( - stop + 1 - ) == len(coord.points): - new_bounds.append( - [ - coord.points.take(start, dim), - coord.points.take(0, dim) + first_choices.take(start, dim), + first_choices.take(0, dim) + coord.units.modulus, ] ) else: new_bounds.append( [ - coord.points.take(start, dim), - coord.points.take(stop, dim), + first_choices.take(start, dim), + last_choices.take(stop, dim), ] ) + else: + # Use min and max bound or point for new bounds. + for indices in groupby_indices: + item_slice = item.take(indices, dim) + new_bounds.append( + [ + item_slice.min(axis=maxmin_axis), + item_slice.max(axis=maxmin_axis), + ] + ) # Bounds needs to be an array with the length 2 start-stop # dimension last, and the aggregated dimension back in its diff --git a/lib/iris/tests/unit/cube/test_Cube.py b/lib/iris/tests/unit/cube/test_Cube.py index f4daf64bae..7d56b505bd 100644 --- a/lib/iris/tests/unit/cube/test_Cube.py +++ b/lib/iris/tests/unit/cube/test_Cube.py @@ -757,7 +757,29 @@ def test_agg_by_label(self): res_cube = self.cube.aggregated_by("label", self.mock_agg) val_coord = AuxCoord( np.array([1.0, 0.5, 1.0]), - bounds=np.array([[0, 2], [0, 1], [2, 0]]), + bounds=np.array([[0, 2], [0, 1], [0, 2]]), + long_name="val", + ) + label_coord = AuxCoord( + np.array(["alpha", "beta", "gamma"]), + long_name="label", + units="no_unit", + ) + self.assertEqual(res_cube.coord("val"), val_coord) + self.assertEqual(res_cube.coord("label"), label_coord) + + def test_agg_by_label_bounded(self): + # Aggregate a cube on a string coordinate label where label + # and val entries are not in step; the resulting cube has a val + # coord of bounded cells and a label coord of single string entries. + val_points = self.cube.coord("val").points + self.cube.coord("val").bounds = np.array( + [val_points - 0.5, val_points + 0.5] + ).T + res_cube = self.cube.aggregated_by("label", self.mock_agg) + val_coord = AuxCoord( + np.array([1.0, 0.5, 1.0]), + bounds=np.array([[-0.5, 2.5], [-0.5, 1.5], [-0.5, 2.5]]), long_name="val", ) label_coord = AuxCoord( @@ -890,7 +912,7 @@ def test_agg_by_label__lazy(self): res_cube = self.cube.aggregated_by("label", MEAN) val_coord = AuxCoord( np.array([1.0, 0.5, 1.0]), - bounds=np.array([[0, 2], [0, 1], [2, 0]]), + bounds=np.array([[0, 2], [0, 1], [0, 2]]), long_name="val", ) label_coord = AuxCoord( From 68b5e65e4cca34505f4731d2e9f3794cbd1d4f16 Mon Sep 17 00:00:00 2001 From: Bill Little Date: Fri, 10 Dec 2021 11:51:55 +0000 Subject: [PATCH 2/3] remove asv package dependency (#4456) --- requirements/ci/py37.yml | 1 - requirements/ci/py38.yml | 1 - setup.cfg | 1 - 3 files changed, 3 deletions(-) diff --git a/requirements/ci/py37.yml b/requirements/ci/py37.yml index 8e4b9d9c10..094ae84702 100644 --- a/requirements/ci/py37.yml +++ b/requirements/ci/py37.yml @@ -31,7 +31,6 @@ dependencies: - python-stratify # Test dependencies. - - asv - filelock - imagehash >=4.0 - nose diff --git a/requirements/ci/py38.yml b/requirements/ci/py38.yml index d7ccb0b9d5..d3d7f9d0c2 100644 --- a/requirements/ci/py38.yml +++ b/requirements/ci/py38.yml @@ -31,7 +31,6 @@ dependencies: - python-stratify # Test dependencies. - - asv - filelock - imagehash >=4.0 - nose diff --git a/setup.cfg b/setup.cfg index 26516ee1af..501614e9d0 100644 --- a/setup.cfg +++ b/setup.cfg @@ -74,7 +74,6 @@ docs = sphinxcontrib-napoleon sphinx-panels test = - asv filelock imagehash>=4.0 nose From 3638874a63e9bbee72b062fe02a8e500982eb796 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 13 Dec 2021 17:11:12 +0000 Subject: [PATCH 3/3] Updated environment lockfiles (#4458) Co-authored-by: Lockfile bot --- requirements/ci/nox.lock/py37-linux-64.lock | 27 ++++++++++----------- requirements/ci/nox.lock/py38-linux-64.lock | 25 +++++++++---------- 2 files changed, 25 insertions(+), 27 deletions(-) diff --git a/requirements/ci/nox.lock/py37-linux-64.lock b/requirements/ci/nox.lock/py37-linux-64.lock index a9a1c52811..19de342768 100644 --- a/requirements/ci/nox.lock/py37-linux-64.lock +++ b/requirements/ci/nox.lock/py37-linux-64.lock @@ -1,6 +1,6 @@ # Generated by conda-lock. # platform: linux-64 -# input_hash: f2449723874977e1bb5b571ab6f475f8d251e472d6f8826bd40fbb774e3916f7 +# input_hash: 2ded1a5e8a7c81e393e358171ff923c72d099e77a007d70daa2a15beb3a59545 @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-2021.10.8-ha878542_0.tar.bz2#575611b8a84f45960e87722eeb51fa26 @@ -12,7 +12,7 @@ https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.36.1-hea4e1c9 https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-11.2.0-h5c6108e_11.tar.bz2#2dcb18a9a0fa31f4f29e5a9b3eade394 https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-11.2.0-he4da1e4_11.tar.bz2#0bf83958e788f1e75ba26154cb702afe https://conda.anaconda.org/conda-forge/linux-64/mpi-1.0-mpich.tar.bz2#c1fcff3417b5a22bbc4cf6e8c23648cf -https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.27-ha770c72_1.tar.bz2#ca56dd3e2768f99f9e19869efb3434ec +https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.27-ha770c72_2.tar.bz2#17460296fbd27310a0d796115d79c930 https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29 https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-11.2.0-h69a702a_11.tar.bz2#4ea2f9f83b617a7682e8aa05dcb37c6a https://conda.anaconda.org/conda-forge/linux-64/libgomp-11.2.0-h1d223b6_11.tar.bz2#1d16527c76842bf9c41e9399d39d8097 @@ -78,7 +78,7 @@ https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.11-h36c2ea0_1013.tar.bz https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h7f98852_6.tar.bz2#9e94bf16f14c78a36561d5019f490d22 https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h10796ff_3.tar.bz2#21a8d66dc17f065023b33145c42652fe https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-12_linux64_openblas.tar.bz2#2e5082d4a9a18c21100e6ce5b6bcb4ec -https://conda.anaconda.org/conda-forge/linux-64/libglib-2.70.1-h174f98d_0.tar.bz2#b14ca7dc99d099dccf38d4d31ead3d63 +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.70.2-h174f98d_0.tar.bz2#76dc12f1c2366b02b9e21773fe122aeb https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-12_linux64_openblas.tar.bz2#9f401a6807a97e0c859d7522ae3d51ec https://conda.anaconda.org/conda-forge/linux-64/libllvm11-11.1.0-hf817b99_2.tar.bz2#646fa2f7c60b69ee8f918668e9c2fd31 https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.43.0-h812cca2_1.tar.bz2#d0a7846b7b3b8fb0d8b36904a53b8155 @@ -93,14 +93,14 @@ https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.0-ha95c52a_0.tar.bz2#b5 https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.36.0-h3371d22_4.tar.bz2#661e1ed5d92552785d9f8c781ce68685 https://conda.anaconda.org/conda-forge/linux-64/brotli-1.0.9-h7f98852_6.tar.bz2#612385c4a83edb0619fe911d9da317f4 https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2#4a06f2ac2e5bfae7b6b245171c3f07aa -https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.70.1-h780b84a_0.tar.bz2#e60c13f740e8988a6efa2822d63738bd +https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.70.2-h780b84a_0.tar.bz2#667ba134b9e86e9f000d6e67a39e22f5 https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.18.5-h9f60fe5_2.tar.bz2#6221115a24700aa8598ae5aa1574902d https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h64030ff_2.tar.bz2#112eb9b5b93f0c02e59aea4fd1967363 https://conda.anaconda.org/conda-forge/linux-64/krb5-1.19.2-hcc1bbae_3.tar.bz2#e29650992ae593bc05fc93722483e5c3 https://conda.anaconda.org/conda-forge/linux-64/libclang-11.1.0-default_ha53f305_1.tar.bz2#b9b71585ca4fcb5d442c5a9df5dd7e98 https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.3.0-h6f004c6_2.tar.bz2#34fda41ca84e67232888c9a885903055 https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.0.3-he3ba5ed_0.tar.bz2#f9dbabc7e01c459ed7a1d1d64b206e9b -https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.27-hfa10184_1.tar.bz2#577ac13be280c34b2f0cfd44267d2eac +https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.27-hfa10184_2.tar.bz2#8e2e8f9dcbd12b482be6bf8474bb1d34 https://conda.anaconda.org/conda-forge/linux-64/nss-3.73-hb5efdd6_0.tar.bz2#a5b91a14292ac34bac1f0506a3772fd5 https://conda.anaconda.org/conda-forge/linux-64/python-3.7.12-hb7a2778_100_cpython.tar.bz2#2d94b3e6a9fdaf83f6955d008c8011a7 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h7f98852_1.tar.bz2#536cc5db4d0a3ba0630541aec064b5e4 @@ -108,23 +108,23 @@ https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.10-h7f98852_ https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.12-py_0.tar.bz2#2489a97287f90176ecdc3ca982b4b0a0 https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2#5f095bc6454094e96f146491fd03633b https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2#ebb5f5f7dc4f1a3780ef7ea7738db08c -https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.0.8-pyhd8ed1ab_0.tar.bz2#7bc3465ff423c243bf8b2e77c5075bc7 +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.0.9-pyhd8ed1ab_0.tar.bz2#a57a3f6f2b0a7400e340f850c405df19 https://conda.anaconda.org/conda-forge/noarch/cloudpickle-2.0.0-pyhd8ed1ab_0.tar.bz2#3a8fc8b627d5fb6af827e126a10a86c6 https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.4-pyh9f0ad1d_0.tar.bz2#c08b4c1326b880ed44f3ffb04803332f https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb -https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.3-pyhd8ed1ab_0.tar.bz2#cc7dae067bb31c1598e23e151dfca986 +https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.4-pyhd8ed1ab_0.tar.bz2#7b50d840543d9cdae100e91582c33035 https://conda.anaconda.org/conda-forge/noarch/filelock-3.4.0-pyhd8ed1ab_0.tar.bz2#caff9785491992b3250ed4048fe51e2c https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.13.1-hba837de_1005.tar.bz2#fd3611672eb91bc9d24fd6fb970037eb https://conda.anaconda.org/conda-forge/noarch/fsspec-2021.11.1-pyhd8ed1ab_0.tar.bz2#a510ec93fdb50775091d2afba98a8acb https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.6-h04a7f16_0.tar.bz2#b24a1e18325a6e8f8b6b4a2ec5860ce2 -https://conda.anaconda.org/conda-forge/linux-64/glib-2.70.1-h780b84a_0.tar.bz2#bc4795f9d11dba7990c7e9cf9f7021b3 +https://conda.anaconda.org/conda-forge/linux-64/glib-2.70.2-h780b84a_0.tar.bz2#715dda657174cfd3a312c8b6694fd6ca https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.18.5-hf529b03_2.tar.bz2#3cf866063f2803944ddaee8b1d6da531 https://conda.anaconda.org/conda-forge/noarch/idna-3.1-pyhd3deb0d_0.tar.bz2#9c9aea4b8391264477df484f798562d0 https://conda.anaconda.org/conda-forge/noarch/imagesize-1.3.0-pyhd8ed1ab_0.tar.bz2#be807e7606fff9436e5e700f6bffb7c6 https://conda.anaconda.org/conda-forge/noarch/iris-sample-data-2.4.0-pyhd8ed1ab_0.tar.bz2#18ee9c07cf945a33f92caf1ee3d23ad9 https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f https://conda.anaconda.org/conda-forge/linux-64/libcurl-7.80.0-h2574ce0_0.tar.bz2#5d0784b790350f7939bb5d3f2c32e700 -https://conda.anaconda.org/conda-forge/linux-64/libpq-13.5-hd57d9b9_0.tar.bz2#20a3e094316bbaa7b890ccbd9c97acd5 +https://conda.anaconda.org/conda-forge/linux-64/libpq-13.5-hd57d9b9_1.tar.bz2#a0f425d61c7df890d6381ea352c3f1d7 https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.1-h3452ae3_0.tar.bz2#6d4bf6265d998b6c975c26a6a24062a2 https://conda.anaconda.org/conda-forge/noarch/locket-0.2.0-py_2.tar.bz2#709e8671651c7ec3d1ad07800339ff1d https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2#2ba8498c1018c1e9c61eb99b973dfe19 @@ -153,10 +153,10 @@ https://conda.anaconda.org/conda-forge/linux-64/cairo-1.16.0-h6cf1ce9_1008.tar.b https://conda.anaconda.org/conda-forge/linux-64/certifi-2021.10.8-py37h89c1867_1.tar.bz2#48e8442b6097c7d4a0e3494c74ff9eeb https://conda.anaconda.org/conda-forge/linux-64/cffi-1.15.0-py37h036bc23_0.tar.bz2#05ab26c7685bcb7dd8bc8752c121f823 https://conda.anaconda.org/conda-forge/linux-64/curl-7.80.0-h2574ce0_0.tar.bz2#4d8fd67e5ab7e00fde8ad085464f43b7 -https://conda.anaconda.org/conda-forge/linux-64/cython-0.29.24-py37hcd2ae1e_1.tar.bz2#c32a8d5bea21a1a7074b005199a45ede +https://conda.anaconda.org/conda-forge/linux-64/cython-0.29.25-py37hcd2ae1e_0.tar.bz2#4e9a69a5815f562d2bb1379ebbb63c19 https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h48d8840_2.tar.bz2#eba672c69baf366fdedd1c6f702dbb81 https://conda.anaconda.org/conda-forge/linux-64/docutils-0.17.1-py37h89c1867_1.tar.bz2#e0a3be74a594032b73f22762ba9941cc -https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.12.1-mpi_mpich_h9c45103_2.tar.bz2#39a57ab5ac7b7ea3342ba45d8c905a5e +https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.12.1-mpi_mpich_h9c45103_3.tar.bz2#4f1a733e563d27b98010b62888e149c9 https://conda.anaconda.org/conda-forge/linux-64/importlib-metadata-4.8.2-py37h89c1867_0.tar.bz2#a62f2bad6654c1a91e3241ca7979fe05 https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.3.2-py37h2527ec5_1.tar.bz2#441ac4d93d0d57d21ea9dcac48cb5d0d https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6ad9fb6_0.tar.bz2#45142dc44fcd04934f9ad68ce205e54d @@ -176,11 +176,10 @@ https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0-py37h5e8e339_3.tar.bz https://conda.anaconda.org/conda-forge/linux-64/setuptools-59.4.0-py37h89c1867_0.tar.bz2#01f5271a7c204862ca564ee63b35548d https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py37h5e8e339_2.tar.bz2#ec86ae00c96dea5f2d810957a8fabc26 https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-13.0.0.post2-py37h5e8e339_4.tar.bz2#6702ec56e12a0be3c70bf05991187bfd -https://conda.anaconda.org/conda-forge/linux-64/asv-0.4.2-py37hcd2ae1e_3.tar.bz2#0f076ca34a73c99253999aa65d787034 https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py37h5e8e339_1003.tar.bz2#4ad2e74470a3c08b0f6d59699f0d9a32 https://conda.anaconda.org/conda-forge/linux-64/cftime-1.5.1.1-py37hb1e94ed_1.tar.bz2#1b5b81088bc7d7e0bef7de4ef4bd1221 https://conda.anaconda.org/conda-forge/linux-64/cryptography-36.0.0-py37hf1a17b8_0.tar.bz2#2fd357ed549ff7f39a04f329938de4b3 -https://conda.anaconda.org/conda-forge/noarch/dask-core-2021.11.2-pyhd8ed1ab_0.tar.bz2#c3615fd90d2e5b11c5da6ea1f9a5730b +https://conda.anaconda.org/conda-forge/noarch/dask-core-2021.12.0-pyhd8ed1ab_0.tar.bz2#e572bf40b1e8783fed2526ecb5f5209e https://conda.anaconda.org/conda-forge/linux-64/editdistance-s-1.0.0-py37h2527ec5_2.tar.bz2#9aba6bcb02d12dbd2fead23b85720712 https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.28.3-py37h5e8e339_0.tar.bz2#5b7840e065bcdbfc6aaa72d772fcd190 https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-3.1.1-h83ec7ef_0.tar.bz2#ca8faaee04a83e3c4d6f708a35ac2ec3 @@ -219,7 +218,7 @@ https://conda.anaconda.org/conda-forge/linux-64/pyqtchart-5.12-py37he336c9b_8.ta https://conda.anaconda.org/conda-forge/linux-64/pyqtwebengine-5.12.1-py37he336c9b_8.tar.bz2#0a67d477c0524897883ca0f86d6fb15c https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.7-pyhd8ed1ab_0.tar.bz2#be75bab4820a56f77ba1a3fc9139c36a https://conda.anaconda.org/conda-forge/linux-64/esmpy-8.2.0-mpi_mpich_py37h7352969_101.tar.bz2#64fd02e7a0cefe0b5c604fea03774c73 -https://conda.anaconda.org/conda-forge/linux-64/graphviz-2.49.3-h85b4f2f_0.tar.bz2#71062453180260ef85c861996b29bd6a +https://conda.anaconda.org/conda-forge/linux-64/graphviz-2.50.0-h85b4f2f_1.tar.bz2#bc6418fd87ea67cf14417337ced3daa2 https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.12.3-py37h89c1867_8.tar.bz2#8038f9765a907fcf6fdfa6a9db71e371 https://conda.anaconda.org/conda-forge/noarch/requests-2.26.0-pyhd8ed1ab_1.tar.bz2#358581cc782802270d77c454c73a811a https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.5.0-py37h89c1867_0.tar.bz2#dc2167a62be1ca5253727201368ddc89 diff --git a/requirements/ci/nox.lock/py38-linux-64.lock b/requirements/ci/nox.lock/py38-linux-64.lock index 9853fdbede..de3e1a46f4 100644 --- a/requirements/ci/nox.lock/py38-linux-64.lock +++ b/requirements/ci/nox.lock/py38-linux-64.lock @@ -1,6 +1,6 @@ # Generated by conda-lock. # platform: linux-64 -# input_hash: 796c76ee2e4d97bae4d3daa00d09f009535d507b4b2cfaa1c9c95fe3d2a98e77 +# input_hash: 0b8e98b045b5545a96321ab961f5e97fe2da8aa929328cc8df2d4d5f33ed8159 @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-2021.10.8-ha878542_0.tar.bz2#575611b8a84f45960e87722eeb51fa26 @@ -12,7 +12,7 @@ https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.36.1-hea4e1c9 https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-11.2.0-h5c6108e_11.tar.bz2#2dcb18a9a0fa31f4f29e5a9b3eade394 https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-11.2.0-he4da1e4_11.tar.bz2#0bf83958e788f1e75ba26154cb702afe https://conda.anaconda.org/conda-forge/linux-64/mpi-1.0-mpich.tar.bz2#c1fcff3417b5a22bbc4cf6e8c23648cf -https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.27-ha770c72_1.tar.bz2#ca56dd3e2768f99f9e19869efb3434ec +https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.27-ha770c72_2.tar.bz2#17460296fbd27310a0d796115d79c930 https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29 https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-11.2.0-h69a702a_11.tar.bz2#4ea2f9f83b617a7682e8aa05dcb37c6a https://conda.anaconda.org/conda-forge/linux-64/libgomp-11.2.0-h1d223b6_11.tar.bz2#1d16527c76842bf9c41e9399d39d8097 @@ -78,7 +78,7 @@ https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.11-h36c2ea0_1013.tar.bz https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h7f98852_6.tar.bz2#9e94bf16f14c78a36561d5019f490d22 https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h10796ff_3.tar.bz2#21a8d66dc17f065023b33145c42652fe https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-12_linux64_openblas.tar.bz2#2e5082d4a9a18c21100e6ce5b6bcb4ec -https://conda.anaconda.org/conda-forge/linux-64/libglib-2.70.1-h174f98d_0.tar.bz2#b14ca7dc99d099dccf38d4d31ead3d63 +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.70.2-h174f98d_0.tar.bz2#76dc12f1c2366b02b9e21773fe122aeb https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-12_linux64_openblas.tar.bz2#9f401a6807a97e0c859d7522ae3d51ec https://conda.anaconda.org/conda-forge/linux-64/libllvm11-11.1.0-hf817b99_2.tar.bz2#646fa2f7c60b69ee8f918668e9c2fd31 https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.43.0-h812cca2_1.tar.bz2#d0a7846b7b3b8fb0d8b36904a53b8155 @@ -93,14 +93,14 @@ https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.0-ha95c52a_0.tar.bz2#b5 https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.36.0-h3371d22_4.tar.bz2#661e1ed5d92552785d9f8c781ce68685 https://conda.anaconda.org/conda-forge/linux-64/brotli-1.0.9-h7f98852_6.tar.bz2#612385c4a83edb0619fe911d9da317f4 https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2#4a06f2ac2e5bfae7b6b245171c3f07aa -https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.70.1-h780b84a_0.tar.bz2#e60c13f740e8988a6efa2822d63738bd +https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.70.2-h780b84a_0.tar.bz2#667ba134b9e86e9f000d6e67a39e22f5 https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.18.5-h9f60fe5_2.tar.bz2#6221115a24700aa8598ae5aa1574902d https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h64030ff_2.tar.bz2#112eb9b5b93f0c02e59aea4fd1967363 https://conda.anaconda.org/conda-forge/linux-64/krb5-1.19.2-hcc1bbae_3.tar.bz2#e29650992ae593bc05fc93722483e5c3 https://conda.anaconda.org/conda-forge/linux-64/libclang-11.1.0-default_ha53f305_1.tar.bz2#b9b71585ca4fcb5d442c5a9df5dd7e98 https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.3.0-h6f004c6_2.tar.bz2#34fda41ca84e67232888c9a885903055 https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.0.3-he3ba5ed_0.tar.bz2#f9dbabc7e01c459ed7a1d1d64b206e9b -https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.27-hfa10184_1.tar.bz2#577ac13be280c34b2f0cfd44267d2eac +https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.27-hfa10184_2.tar.bz2#8e2e8f9dcbd12b482be6bf8474bb1d34 https://conda.anaconda.org/conda-forge/linux-64/nss-3.73-hb5efdd6_0.tar.bz2#a5b91a14292ac34bac1f0506a3772fd5 https://conda.anaconda.org/conda-forge/linux-64/python-3.8.12-hb7a2778_2_cpython.tar.bz2#148ea076514259c7f562fbfba956a693 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h7f98852_1.tar.bz2#536cc5db4d0a3ba0630541aec064b5e4 @@ -108,22 +108,22 @@ https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.10-h7f98852_ https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.12-py_0.tar.bz2#2489a97287f90176ecdc3ca982b4b0a0 https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2#5f095bc6454094e96f146491fd03633b https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2#ebb5f5f7dc4f1a3780ef7ea7738db08c -https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.0.8-pyhd8ed1ab_0.tar.bz2#7bc3465ff423c243bf8b2e77c5075bc7 +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.0.9-pyhd8ed1ab_0.tar.bz2#a57a3f6f2b0a7400e340f850c405df19 https://conda.anaconda.org/conda-forge/noarch/cloudpickle-2.0.0-pyhd8ed1ab_0.tar.bz2#3a8fc8b627d5fb6af827e126a10a86c6 https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.4-pyh9f0ad1d_0.tar.bz2#c08b4c1326b880ed44f3ffb04803332f https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb -https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.3-pyhd8ed1ab_0.tar.bz2#cc7dae067bb31c1598e23e151dfca986 +https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.4-pyhd8ed1ab_0.tar.bz2#7b50d840543d9cdae100e91582c33035 https://conda.anaconda.org/conda-forge/noarch/filelock-3.4.0-pyhd8ed1ab_0.tar.bz2#caff9785491992b3250ed4048fe51e2c https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.13.1-hba837de_1005.tar.bz2#fd3611672eb91bc9d24fd6fb970037eb https://conda.anaconda.org/conda-forge/noarch/fsspec-2021.11.1-pyhd8ed1ab_0.tar.bz2#a510ec93fdb50775091d2afba98a8acb https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.6-h04a7f16_0.tar.bz2#b24a1e18325a6e8f8b6b4a2ec5860ce2 -https://conda.anaconda.org/conda-forge/linux-64/glib-2.70.1-h780b84a_0.tar.bz2#bc4795f9d11dba7990c7e9cf9f7021b3 +https://conda.anaconda.org/conda-forge/linux-64/glib-2.70.2-h780b84a_0.tar.bz2#715dda657174cfd3a312c8b6694fd6ca https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.18.5-hf529b03_2.tar.bz2#3cf866063f2803944ddaee8b1d6da531 https://conda.anaconda.org/conda-forge/noarch/idna-3.1-pyhd3deb0d_0.tar.bz2#9c9aea4b8391264477df484f798562d0 https://conda.anaconda.org/conda-forge/noarch/imagesize-1.3.0-pyhd8ed1ab_0.tar.bz2#be807e7606fff9436e5e700f6bffb7c6 https://conda.anaconda.org/conda-forge/noarch/iris-sample-data-2.4.0-pyhd8ed1ab_0.tar.bz2#18ee9c07cf945a33f92caf1ee3d23ad9 https://conda.anaconda.org/conda-forge/linux-64/libcurl-7.80.0-h2574ce0_0.tar.bz2#5d0784b790350f7939bb5d3f2c32e700 -https://conda.anaconda.org/conda-forge/linux-64/libpq-13.5-hd57d9b9_0.tar.bz2#20a3e094316bbaa7b890ccbd9c97acd5 +https://conda.anaconda.org/conda-forge/linux-64/libpq-13.5-hd57d9b9_1.tar.bz2#a0f425d61c7df890d6381ea352c3f1d7 https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.1-h3452ae3_0.tar.bz2#6d4bf6265d998b6c975c26a6a24062a2 https://conda.anaconda.org/conda-forge/noarch/locket-0.2.0-py_2.tar.bz2#709e8671651c7ec3d1ad07800339ff1d https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2#2ba8498c1018c1e9c61eb99b973dfe19 @@ -152,7 +152,7 @@ https://conda.anaconda.org/conda-forge/linux-64/cffi-1.15.0-py38h3931269_0.tar.b https://conda.anaconda.org/conda-forge/linux-64/curl-7.80.0-h2574ce0_0.tar.bz2#4d8fd67e5ab7e00fde8ad085464f43b7 https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h48d8840_2.tar.bz2#eba672c69baf366fdedd1c6f702dbb81 https://conda.anaconda.org/conda-forge/linux-64/docutils-0.16-py38h578d9bd_3.tar.bz2#a7866449fb9e5e4008a02df276549d34 -https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.12.1-mpi_mpich_h9c45103_2.tar.bz2#39a57ab5ac7b7ea3342ba45d8c905a5e +https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.12.1-mpi_mpich_h9c45103_3.tar.bz2#4f1a733e563d27b98010b62888e149c9 https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.3.2-py38h1fd1430_1.tar.bz2#085365abfe53d5d13bb68b1dda0b439e https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6ad9fb6_0.tar.bz2#45142dc44fcd04934f9ad68ce205e54d https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.0.1-py38h497a2fe_1.tar.bz2#1ef7b5f4826ca48a15e2cd98a5c3436d @@ -172,11 +172,10 @@ https://conda.anaconda.org/conda-forge/linux-64/setuptools-59.4.0-py38h578d9bd_0 https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py38h497a2fe_2.tar.bz2#63b3b55c98b4239134e0be080f448944 https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-13.0.0.post2-py38h497a2fe_4.tar.bz2#b70ba4bc5f580bde28e160cfb5b214f2 https://conda.anaconda.org/conda-forge/linux-64/virtualenv-20.4.7-py38h578d9bd_1.tar.bz2#37717ce393db8536ae2b613839af4274 -https://conda.anaconda.org/conda-forge/linux-64/asv-0.4.2-py38h709712a_3.tar.bz2#904ccf9a63af9655dc9986d1a488b07a https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py38h497a2fe_1003.tar.bz2#9189b42c42b9c87b2b2068cbe31901a8 https://conda.anaconda.org/conda-forge/linux-64/cftime-1.5.1.1-py38h6c62de6_1.tar.bz2#d4a47fd2bbc8292a322d462734b0ada5 https://conda.anaconda.org/conda-forge/linux-64/cryptography-36.0.0-py38h3e25421_0.tar.bz2#c6e700a66fcdb217dafbc16276e08421 -https://conda.anaconda.org/conda-forge/noarch/dask-core-2021.11.2-pyhd8ed1ab_0.tar.bz2#c3615fd90d2e5b11c5da6ea1f9a5730b +https://conda.anaconda.org/conda-forge/noarch/dask-core-2021.12.0-pyhd8ed1ab_0.tar.bz2#e572bf40b1e8783fed2526ecb5f5209e https://conda.anaconda.org/conda-forge/linux-64/editdistance-s-1.0.0-py38h1fd1430_2.tar.bz2#482431310c7b3320a31c8c6ce82a7a15 https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.28.3-py38h497a2fe_0.tar.bz2#f2e845a2fa4c50060aca0a168e82e93d https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-2.9.1-h83ec7ef_1.tar.bz2#9a9e823b2e31e84e5ce06f54ffce9d70 @@ -213,7 +212,7 @@ https://conda.anaconda.org/conda-forge/linux-64/pyqtchart-5.12-py38h7400c14_8.ta https://conda.anaconda.org/conda-forge/linux-64/pyqtwebengine-5.12.1-py38h7400c14_8.tar.bz2#857894ea9c5e53c962c3a0932efa71ea https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.7-pyhd8ed1ab_0.tar.bz2#be75bab4820a56f77ba1a3fc9139c36a https://conda.anaconda.org/conda-forge/linux-64/esmpy-8.2.0-mpi_mpich_py38h9147699_101.tar.bz2#5a9de1dec507b6614150a77d1aabf257 -https://conda.anaconda.org/conda-forge/linux-64/graphviz-2.49.3-h85b4f2f_0.tar.bz2#71062453180260ef85c861996b29bd6a +https://conda.anaconda.org/conda-forge/linux-64/graphviz-2.50.0-h85b4f2f_1.tar.bz2#bc6418fd87ea67cf14417337ced3daa2 https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.12.3-py38h578d9bd_8.tar.bz2#88368a5889f31dff922a2d57bbfc3f5b https://conda.anaconda.org/conda-forge/noarch/requests-2.26.0-pyhd8ed1ab_1.tar.bz2#358581cc782802270d77c454c73a811a https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.5.0-py38h578d9bd_0.tar.bz2#6ab6a5b2e54598428ca8ba112d4b682e