diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 2cbf55f52ca..f9bfa032a98 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -8,14 +8,12 @@ jobs:
- job: Linux
strategy:
matrix:
- py36-bare-minimum:
- conda_env: py36-bare-minimum
- py36-min-all-deps:
- conda_env: py36-min-all-deps
- py36-min-nep18:
- conda_env: py36-min-nep18
- py36:
- conda_env: py36
+ py37-bare-minimum:
+ conda_env: py37-bare-minimum
+ py37-min-all-deps:
+ conda_env: py37-min-all-deps
+ py37-min-nep18:
+ conda_env: py37-min-nep18
py37:
conda_env: py37
py38:
@@ -121,6 +119,6 @@ jobs:
- template: ci/azure/add-conda-to-path.yml
- bash: |
conda install -y pyyaml
- python ci/min_deps_check.py ci/requirements/py36-bare-minimum.yml
- python ci/min_deps_check.py ci/requirements/py36-min-all-deps.yml
+ python ci/min_deps_check.py ci/requirements/py37-bare-minimum.yml
+ python ci/min_deps_check.py ci/requirements/py37-min-all-deps.yml
displayName: minimum versions policy
diff --git a/ci/min_deps_check.py b/ci/min_deps_check.py
index 95c6ff22aa2..5f94c81ef8a 100755
--- a/ci/min_deps_check.py
+++ b/ci/min_deps_check.py
@@ -35,9 +35,11 @@
# setuptools-scm doesn't work with setuptools < 36.7 (Nov 2017).
# The conda metadata is malformed for setuptools < 38.4 (Jan 2018)
# (it's missing a timestamp which prevents this tool from working).
+ # setuptools < 40.4 (Sep 2018) from conda-forge cannot be installed into a py37
+ # environment
# TODO remove this special case and the matching note in installing.rst
- # after July 2021.
- "setuptools": (38, 4),
+ # after March 2022.
+ "setuptools": (40, 4),
}
has_errors = False
diff --git a/ci/requirements/py36.yml b/ci/requirements/py36.yml
deleted file mode 100644
index 97fe92e2271..00000000000
--- a/ci/requirements/py36.yml
+++ /dev/null
@@ -1,49 +0,0 @@
-name: xarray-tests
-channels:
- - conda-forge
- - nodefaults
-dependencies:
- - python=3.6
- - black
- - boto3
- - bottleneck
- - cartopy
- - cdms2
- - cfgrib
- - cftime
- - coveralls
- - dask
- - distributed
- - flake8
- - h5netcdf
- - h5py=2
- - hdf5
- - hypothesis
- - iris
- - isort
- - lxml # Optional dep of pydap
- - matplotlib-base
- - mypy=0.790 # Must match .pre-commit-config.yaml
- - nc-time-axis
- - netcdf4
- - numba
- - numpy
- - pandas
- - pint
- - pip
- - pseudonetcdf
- - pydap
- # - pynio: not compatible with netCDF4>1.5.3; only tested in py36-bare-minimum
- - pytest
- - pytest-cov
- - pytest-env
- - pytest-xdist
- - rasterio
- - scipy
- - seaborn
- - setuptools
- - sparse
- - toolz
- - zarr
- - pip:
- - numbagg
diff --git a/ci/requirements/py36-bare-minimum.yml b/ci/requirements/py37-bare-minimum.yml
similarity index 84%
rename from ci/requirements/py36-bare-minimum.yml
rename to ci/requirements/py37-bare-minimum.yml
index f9255d719de..fbeb87032b7 100644
--- a/ci/requirements/py36-bare-minimum.yml
+++ b/ci/requirements/py37-bare-minimum.yml
@@ -3,7 +3,7 @@ channels:
- conda-forge
- nodefaults
dependencies:
- - python=3.6
+ - python=3.7
- coveralls
- pip
- pytest
@@ -12,4 +12,4 @@ dependencies:
- pytest-xdist
- numpy=1.15
- pandas=0.25
- - setuptools=38.4
+ - setuptools=40.4
diff --git a/ci/requirements/py36-min-all-deps.yml b/ci/requirements/py37-min-all-deps.yml
similarity index 90%
rename from ci/requirements/py36-min-all-deps.yml
rename to ci/requirements/py37-min-all-deps.yml
index bb25ffcdc76..feef86ddf5c 100644
--- a/ci/requirements/py36-min-all-deps.yml
+++ b/ci/requirements/py37-min-all-deps.yml
@@ -7,7 +7,7 @@ dependencies:
# Run ci/min_deps_check.py to verify that this file respects the policy.
# When upgrading python, numpy, or pandas, must also change
# doc/installing.rst and setup.py.
- - python=3.6
+ - python=3.7
- black
- boto3=1.9
- bottleneck=1.2
@@ -33,7 +33,7 @@ dependencies:
- numba=0.46
- numpy=1.15
- pandas=0.25
- # - pint # See py36-min-nep18.yml
+ # - pint # See py37-min-nep18.yml
- pip
- pseudonetcdf=3.0
- pydap=3.2
@@ -45,8 +45,8 @@ dependencies:
- rasterio=1.0
- scipy=1.3
- seaborn=0.9
- - setuptools=38.4
- # - sparse # See py36-min-nep18.yml
+ - setuptools=40.4
+ # - sparse # See py37-min-nep18.yml
- toolz=0.10
- zarr=2.3
- pip:
diff --git a/ci/requirements/py36-min-nep18.yml b/ci/requirements/py37-min-nep18.yml
similarity index 91%
rename from ci/requirements/py36-min-nep18.yml
rename to ci/requirements/py37-min-nep18.yml
index 3171c90992d..aea86261a0e 100644
--- a/ci/requirements/py36-min-nep18.yml
+++ b/ci/requirements/py37-min-nep18.yml
@@ -5,7 +5,7 @@ channels:
dependencies:
# Optional dependencies that require NEP18, such as sparse and pint,
# require drastically newer packages than everything else
- - python=3.6
+ - python=3.7
- coveralls
- dask=2.9
- distributed=2.9
@@ -18,5 +18,5 @@ dependencies:
- pytest-env
- pytest-xdist
- scipy=1.3
- - setuptools=38.4
+ - setuptools=40.4
- sparse=0.8
diff --git a/doc/installing.rst b/doc/installing.rst
index 45999b254ad..d5783e557e1 100644
--- a/doc/installing.rst
+++ b/doc/installing.rst
@@ -6,8 +6,8 @@ Installation
Required dependencies
---------------------
-- Python (3.6 or later)
-- setuptools (38.4 or later)
+- Python (3.7 or later)
+- setuptools (40.4 or later)
- `numpy `__ (1.15 or later)
- `pandas `__ (0.25 or later)
@@ -100,7 +100,7 @@ dependencies:
- **Python:** 42 months
(`NEP-29 `_)
-- **setuptools:** 42 months (but no older than 38.4)
+- **setuptools:** 42 months (but no older than 40.4)
- **numpy:** 24 months
(`NEP-29 `_)
- **dask and dask.distributed:** 12 months (but no older than 2.9)
diff --git a/doc/whats-new.rst b/doc/whats-new.rst
index 0d839bc678b..70b3c407b36 100644
--- a/doc/whats-new.rst
+++ b/doc/whats-new.rst
@@ -22,6 +22,18 @@ v0.16.3 (unreleased)
Breaking changes
~~~~~~~~~~~~~~~~
+- xarray no longer supports python 3.6
+
+ The minimum versions of some other dependencies were changed:
+ ============ ====== ====
+ Package Old New
+ ============ ====== ====
+ Python 3.6 3.7
+ setuptools 38.4 40.4
+ ============ ====== ====
+
+ (:issue:`4688`, :pull:`4720`)
+ By `Justus Magin `_.
- As a result of :pull:`4684` the default units encoding for
datetime-like values (``np.datetime64[ns]`` or ``cftime.datetime``) will now
always be set such that ``int64`` values can be used. In the past, no units
diff --git a/requirements.txt b/requirements.txt
index 3cbeb368c09..23eff8f07cb 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -4,4 +4,4 @@
numpy >= 1.15
pandas >= 0.25
-setuptools >= 38.4
+setuptools >= 40.4
diff --git a/setup.cfg b/setup.cfg
index b92db683779..a695191bf02 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -64,21 +64,21 @@ classifiers =
Intended Audience :: Science/Research
Programming Language :: Python
Programming Language :: Python :: 3
- Programming Language :: Python :: 3.6
Programming Language :: Python :: 3.7
+ Programming Language :: Python :: 3.8
Topic :: Scientific/Engineering
[options]
packages = find:
zip_safe = False # https://mypy.readthedocs.io/en/latest/installed_packages.html
include_package_data = True
-python_requires = >=3.6
+python_requires = >=3.7
install_requires =
numpy >= 1.15
pandas >= 0.25
- setuptools >= 38.4 # For pkg_resources
+ setuptools >= 40.4 # For pkg_resources
setup_requires =
- setuptools >= 38.4
+ setuptools >= 40.4
setuptools_scm