diff --git a/ci/min_deps_check.py b/ci/min_deps_check.py
index 3cc10c7ef32..23621c55560 100755
--- a/ci/min_deps_check.py
+++ b/ci/min_deps_check.py
@@ -30,12 +30,12 @@
POLICY_MONTHS = {"python": 24, "numpy": 18}
POLICY_MONTHS_DEFAULT = 12
POLICY_OVERRIDE: Dict[str, Tuple[int, int]] = {}
-has_errors = False
+errors = []
def error(msg: str) -> None:
- global has_errors
- has_errors = True
+ global errors
+ errors.append(msg)
print("ERROR:", msg)
@@ -48,7 +48,7 @@ def parse_requirements(fname) -> Iterator[Tuple[str, int, int, Optional[int]]]:
Yield (package name, major version, minor version, [patch version])
"""
- global has_errors
+ global errors
with open(fname) as fh:
contents = yaml.safe_load(fh)
@@ -157,9 +157,9 @@ def process_pkg(
status = "> (!)"
delta = relativedelta(datetime.now(), policy_published_actual).normalized()
n_months = delta.years * 12 + delta.months
- error(
- f"Package is too new: {pkg}={req_major}.{req_minor} was "
- f"published on {versions[req_major, req_minor]:%Y-%m-%d} "
+ warning(
+ f"Package is too new: {pkg}={policy_major}.{policy_minor} was "
+ f"published on {versions[policy_major, policy_minor]:%Y-%m-%d} "
f"which was {n_months} months ago (policy is {policy_months} months)"
)
else:
@@ -193,13 +193,18 @@ def main() -> None:
for pkg, major, minor, patch in parse_requirements(fname)
]
- print("Package Required Policy Status")
+ print("\nPackage Required Policy Status")
print("----------------- -------------------- -------------------- ------")
fmt = "{:17} {:7} ({:10}) {:7} ({:10}) {}"
for row in rows:
print(fmt.format(*row))
- assert not has_errors
+ if errors:
+ print("\nErrors:")
+ print("-------")
+ for i, e in enumerate(errors):
+ print(f"{i+1}. {e}")
+ sys.exit(1)
if __name__ == "__main__":
diff --git a/ci/requirements/bare-minimum.yml b/ci/requirements/bare-minimum.yml
index 7f35ccae987..fe1af1af027 100644
--- a/ci/requirements/bare-minimum.yml
+++ b/ci/requirements/bare-minimum.yml
@@ -11,5 +11,5 @@ dependencies:
- pytest-env
- pytest-xdist
- numpy=1.20
- - packaging=21.0
+ - packaging=21.3
- pandas=1.3
diff --git a/ci/requirements/min-all-deps.yml b/ci/requirements/min-all-deps.yml
index 1a2307aee5e..18ec6077737 100644
--- a/ci/requirements/min-all-deps.yml
+++ b/ci/requirements/min-all-deps.yml
@@ -8,40 +8,39 @@ dependencies:
# When upgrading python, numpy, or pandas, must also change
# doc/user-guide/installing.rst, doc/user-guide/plotting.rst and setup.py.
- python=3.8
- - boto3=1.18
+ - boto3=1.20
- bottleneck=1.3
- - cartopy=0.19
+ - cartopy=0.20
- cdms2=3.1
- cfgrib=0.9
- cftime=1.5
- coveralls
- - dask-core=2021.09
- - distributed=2021.09
+ - dask-core=2021.11
+ - distributed=2021.11
- flox=0.5
- h5netcdf=0.11
- # h5py and hdf5 tend to cause conflicrs
+ # h5py and hdf5 tend to cause conflicts
# for e.g. hdf5 1.12 conflicts with h5py=3.1
# prioritize bumping other packages instead
- - h5py=3.1
- - hdf5=1.10
+ - h5py=3.6
+ - hdf5=1.12
- hypothesis
- iris=3.1
- lxml=4.6 # Optional dep of pydap
- - matplotlib-base=3.4
- - nc-time-axis=1.3
+ - matplotlib-base=3.5
+ - nc-time-axis=1.4
# netcdf follows a 1.major.minor[.patch] convention
# (see https://github.com/Unidata/netcdf4-python/issues/1090)
- # bumping the netCDF4 version is currently blocked by #4491
- - netcdf4=1.5.3
+ - netcdf4=1.5.7
- numba=0.54
- numpy=1.20
- - packaging=21.0
+ - packaging=21.3
- pandas=1.3
- - pint=0.17
+ - pint=0.18
- pip
- - pseudonetcdf=3.1
+ - pseudonetcdf=3.2
- pydap=3.2
- # - pynio=1.5.5
+ # - pynio=1.5.5 # see: https://github.com/pydata/xarray/issues/4491
- pytest
- pytest-cov
- pytest-env
@@ -51,7 +50,7 @@ dependencies:
- seaborn=0.11
- sparse=0.13
- toolz=0.11
- - typing_extensions=3.10
+ - typing_extensions=4.0
- zarr=2.10
- pip:
- numbagg==0.1
diff --git a/doc/getting-started-guide/installing.rst b/doc/getting-started-guide/installing.rst
index d357843cdda..7124b0f87a5 100644
--- a/doc/getting-started-guide/installing.rst
+++ b/doc/getting-started-guide/installing.rst
@@ -8,7 +8,7 @@ Required dependencies
- Python (3.8 or later)
- `numpy `__ (1.20 or later)
-- `packaging `__ (21.0 or later)
+- `packaging `__ (21.3 or later)
- `pandas `__ (1.3 or later)
.. _optional-dependencies:
diff --git a/doc/whats-new.rst b/doc/whats-new.rst
index 97936dff700..13867daebf4 100644
--- a/doc/whats-new.rst
+++ b/doc/whats-new.rst
@@ -27,6 +27,25 @@ New Features
Breaking changes
~~~~~~~~~~~~~~~~
+- The minimum versions of some dependencies were changed (:pull:`7300`):
+
+ ========================== ========= ========
+ Package Old New
+ ========================== ========= ========
+ boto 1.18 1.20
+ cartopy 0.19 0.20
+ distributed 2021.09 2021.11
+ dask 2021.09 2021.11
+ h5py 3.1 3.6
+ hdf5 1.10 1.12
+ matplotlib-base 3.4 3.5
+ nc-time-axis 1.3 1.4
+ netcdf4 1.5.3 1.5.7
+ packaging 20.3 21.3
+ pint 0.17 0.18
+ pseudonetcdf 3.1 3.2
+ typing_extensions 3.10 4.0
+ ========================== ========= ========
Deprecations
~~~~~~~~~~~~
@@ -2571,7 +2590,7 @@ Breaking changes
have removed the internal use of the ``OrderedDict`` in favor of Python's builtin
``dict`` object which is now ordered itself. This change will be most obvious when
interacting with the ``attrs`` property on Dataset and DataArray objects.
- (:issue:`3380`, :pull:`3389`). By `Joe Hamman `_.
+ (:issue:`3380`, :pull:`3389`). HBy `Joeamman `_.
New functions/methods
~~~~~~~~~~~~~~~~~~~~~
diff --git a/requirements.txt b/requirements.txt
index e7015650c8b..4eb5c4a6b67 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -3,5 +3,5 @@
# https://help.github.com/en/github/visualizing-repository-data-with-graphs/listing-the-packages-that-a-repository-depends-on
numpy >= 1.20
-packaging >= 21.0
+packaging >= 21.3
pandas >= 1.3
diff --git a/setup.cfg b/setup.cfg
index 72dca2dec63..d2c4a4e51c3 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -77,7 +77,7 @@ python_requires = >=3.8
install_requires =
numpy >= 1.20 # recommended to use >= 1.22 for full quantile method support
pandas >= 1.3
- packaging >= 21.0
+ packaging >= 21.3
[options.extras_require]
io =