Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support python 3.10 #4840

Merged
merged 3 commits into from
Jun 30, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .github/workflows/ci-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,12 @@ jobs:
fail-fast: false
matrix:
os: ["ubuntu-latest"]
python-version: ["3.9"]
python-version: ["3.10"]
session: ["tests", "doctest", "gallery", "linkcheck"]
include:
- os: "ubuntu-latest"
python-version: "3.9"
session: "tests"
- os: "ubuntu-latest"
python-version: "3.8"
session: "tests"
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/refresh-lockfiles.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ jobs:
steps:
- uses: actions/checkout@v3
- id: get_py
run: echo "::set-output name=matrix::$(ls -1 requirements/ci/py??.yml | xargs -n1 basename | sed 's/....$//' | jq -cnR '[inputs]')"
run: echo "::set-output name=matrix::$(ls -1 requirements/ci/py*.yml | xargs -n1 basename | sed 's/....$//' | jq -cnR '[inputs]')"

gen_lockfiles:
# this is a matrix job: it splits to create new lockfiles for each
Expand Down
19 changes: 18 additions & 1 deletion lib/iris/coords.py
Original file line number Diff line number Diff line change
Expand Up @@ -1345,7 +1345,24 @@ def __add__(self, mod):
return Cell(point, bound)

def __hash__(self):
return super().__hash__()
# Required for >py39 and >np1.22.x due to changes in Cell behaviour for
# point=np.nan, as calling super().__hash__() returns a different
# hash and thus does not trigger the following call to Cell.__eq__
# to determine equality.
# Note that, no explicit Cell bound nan check is performed here.
# That is delegated to Cell.__eq__ instead. It's imperative we keep
# Cell.__hash__ light-weight to minimise performance degradation.
# Reference:
# - https://bugs.python.org/issue43475
# - /~https://github.com/numpy/numpy/issues/18833
# - /~https://github.com/numpy/numpy/pull/18908
# - /~https://github.com/numpy/numpy/issues/21210

try:
point = "nan" if np.isnan(self.point) else self.point
except TypeError:
point = self.point
return hash((point,))

def __eq__(self, other):
"""
Expand Down
2 changes: 1 addition & 1 deletion requirements/ci/iris.yml
254 changes: 254 additions & 0 deletions requirements/ci/nox.lock/py310-linux-64.lock

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions requirements/ci/nox.lock/py38-linux-64.lock
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.10.0-ha56f1ee_2.tar.bz2#6ab4eaa11ff01801cffca0a27489dc04
https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.4.0-hc85c160_1.tar.bz2#151f9fae3ab50f039c8735e47770aa2d
https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.14-h22db469_0.tar.bz2#7d623237b73d93dd856b5dd0f5fedd6b
https://conda.anaconda.org/conda-forge/linux-64/libzip-1.8.0-h4de3113_1.tar.bz2#175a746a43d42c053b91aa765fbc197d
https://conda.anaconda.org/conda-forge/linux-64/libzip-1.9.2-hc869a4a_0.tar.bz2#2d9e11c1183391882e95fec81d0d71c8
https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.29-h28c427c_1.tar.bz2#36dbdbf505b131c7e79a3857f3537185
https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.39.0-h4ff8645_0.tar.bz2#ead30581ba8cfd52d69632868b844d4a
https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.0-h166bdaf_0.tar.bz2#384e7fcb3cd162ba3e4aed4b687df566
Expand Down Expand Up @@ -206,7 +206,7 @@ https://conda.anaconda.org/conda-forge/linux-64/cryptography-37.0.2-py38h2b5fc30
https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.6.1-pyhd8ed1ab_0.tar.bz2#69655c7e78034d4293130f5a5ecf7421
https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.33.3-py38h0a891b7_0.tar.bz2#fd11badf5b3f7d738cc983cb2c75946e
https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.20.3-hf6a322e_0.tar.bz2#6ea2ce6265c3207876ef2369b7479f08
https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-4.3.0-hf9f4e7c_0.tar.bz2#2a9c6660562d7e3fdeda0f0159e1046d
https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-4.4.0-hf9f4e7c_0.tar.bz2#dbb42a46de29a600e71952dfdabfba7e
https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.2-pyhd8ed1ab_1.tar.bz2#c8490ed5c70966d232fdd389d0dbed37
https://conda.anaconda.org/conda-forge/linux-64/mo_pack-0.2.0-py38h71d37f0_1007.tar.bz2#c8d3d8f137f8af7b1daca318131223b1
https://conda.anaconda.org/conda-forge/linux-64/netcdf-fortran-4.5.4-mpi_mpich_h1364a43_0.tar.bz2#b6ba4f487ef9fd5d353ff277df06d133
Expand Down
4 changes: 2 additions & 2 deletions requirements/ci/nox.lock/py39-linux-64.lock
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.10.0-ha56f1ee_2.tar.bz2#6ab4eaa11ff01801cffca0a27489dc04
https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.4.0-hc85c160_1.tar.bz2#151f9fae3ab50f039c8735e47770aa2d
https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.14-h22db469_0.tar.bz2#7d623237b73d93dd856b5dd0f5fedd6b
https://conda.anaconda.org/conda-forge/linux-64/libzip-1.8.0-h4de3113_1.tar.bz2#175a746a43d42c053b91aa765fbc197d
https://conda.anaconda.org/conda-forge/linux-64/libzip-1.9.2-hc869a4a_0.tar.bz2#2d9e11c1183391882e95fec81d0d71c8
https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.29-h28c427c_1.tar.bz2#36dbdbf505b131c7e79a3857f3537185
https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.39.0-h4ff8645_0.tar.bz2#ead30581ba8cfd52d69632868b844d4a
https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.0-h166bdaf_0.tar.bz2#384e7fcb3cd162ba3e4aed4b687df566
Expand Down Expand Up @@ -207,7 +207,7 @@ https://conda.anaconda.org/conda-forge/linux-64/cryptography-37.0.2-py39hd97740a
https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.6.1-pyhd8ed1ab_0.tar.bz2#69655c7e78034d4293130f5a5ecf7421
https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.33.3-py39hb9d737c_0.tar.bz2#43f3c538bbcf6ed0da225891e11bf0a8
https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.20.3-hf6a322e_0.tar.bz2#6ea2ce6265c3207876ef2369b7479f08
https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-4.3.0-hf9f4e7c_0.tar.bz2#2a9c6660562d7e3fdeda0f0159e1046d
https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-4.4.0-hf9f4e7c_0.tar.bz2#dbb42a46de29a600e71952dfdabfba7e
https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.2-pyhd8ed1ab_1.tar.bz2#c8490ed5c70966d232fdd389d0dbed37
https://conda.anaconda.org/conda-forge/linux-64/mo_pack-0.2.0-py39hd257fcd_1007.tar.bz2#e7527bcf8da0dad996aaefd046c17480
https://conda.anaconda.org/conda-forge/linux-64/netcdf-fortran-4.5.4-mpi_mpich_h1364a43_0.tar.bz2#b6ba4f487ef9fd5d353ff277df06d133
Expand Down
49 changes: 49 additions & 0 deletions requirements/ci/py310.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: iris-dev

channels:
- conda-forge

dependencies:
- python =3.10

# Setup dependencies.
- setuptools >=40.8.0

# Core dependencies.
- cartopy >=0.20
- cf-units >=3
- cftime >=1.5
- dask-core >=2
- matplotlib
- netcdf4
- numpy >=1.19
- python-xxhash
- pyproj
- scipy

# Optional dependencies.
- esmpy >=7.0
- graphviz
- iris-sample-data >=2.4.0
- mo_pack
- nc-time-axis >=1.4
- pandas
- pip
- python-stratify

# Test dependencies.
- filelock
- imagehash >=4.0
- pre-commit
- psutil
- pytest
- pytest-xdist
- requests

# Documentation dependencies.
- sphinx
- sphinxcontrib-napoleon
- sphinx-copybutton
- sphinx-gallery
- sphinx-panels
- pydata-sphinx-theme = 0.8.1