Skip to content
Open
Show file tree
Hide file tree
Changes from 6 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
8 changes: 4 additions & 4 deletions .github/workflows/ci-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,18 +35,18 @@ jobs:
fail-fast: false
matrix:
os: ["ubuntu-latest"]
python-version: ["3.13"]
python-version: ["3.14"]
session: ["doctest", "gallery"]
include:
- os: "ubuntu-latest"
python-version: "3.13"
python-version: "3.14"
session: "tests"
coverage: "--coverage"
- os: "ubuntu-latest"
python-version: "3.12"
python-version: "3.13"
session: "tests"
- os: "ubuntu-latest"
python-version: "3.11"
python-version: "3.12"
session: "tests"

env:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci-wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ["3.11", "3.12", "3.13"]
python-version: ["3.12", "3.13", "3.14"]
session: ["wheel"]
env:
ENV_NAME: "ci-wheels"
Expand Down
2 changes: 1 addition & 1 deletion benchmarks/bm_runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ def _check_requirements(package: str) -> None:

def _prep_data_gen_env() -> None:
"""Create or access a separate, unchanging environment for generating test data."""
python_version = "3.13"
python_version = "3.14"
data_gen_var = "DATA_GEN_PYTHON"
if data_gen_var in environ:
echo("Using existing data generation environment.")
Expand Down
8 changes: 7 additions & 1 deletion lib/iris/coords.py
Original file line number Diff line number Diff line change
Expand Up @@ -2800,7 +2800,13 @@ def __deepcopy__(self, memo): # numpydoc ignore=SS02
Used if copy.deepcopy is called on a coordinate.

"""
new_coord = copy.deepcopy(super(), memo)
# Inspired by matplotlib#30198.
# Replicates the default copy behaviour, which can then be modified below.
cls = self.__class__
memo[id(self)] = new_coord = cls.__new__(cls)
for key, val in self.__dict__.items():
setattr(new_coord, key, copy.deepcopy(val, memo))

# Ensure points and bounds arrays are read-only.
new_coord._values_dm.data.flags.writeable = False
if new_coord._bounds_dm is not None:
Expand Down
6 changes: 4 additions & 2 deletions lib/iris/tests/test_coding_standards.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import subprocess
from typing import List, Tuple

from packaging.version import Version
import pytest

import iris
Expand Down Expand Up @@ -70,8 +71,9 @@ def test_python_versions():
Test is designed to fail whenever Iris' supported Python versions are
updated, insisting that versions are updated EVERYWHERE in-sync.
"""
latest_supported = "3.13"
all_supported = ["3.11", "3.12", latest_supported]
all_supported = ["3.12", "3.13", "3.14"]
_parsed = [Version(v) for v in all_supported]
latest_supported = str(max(_parsed))

root_dir = Path(__file__).parents[3]
workflows_dir = root_dir / ".github" / "workflows"
Expand Down
2 changes: 1 addition & 1 deletion noxfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
nox.options.reuse_existing_virtualenvs = True

#: Python versions we can run sessions under
_PY_VERSIONS_ALL = ["3.11", "3.12", "3.13"]
_PY_VERSIONS_ALL = ["3.12", "3.13", "3.14"]
_PY_VERSION_LATEST = _PY_VERSIONS_ALL[-1]

#: One specific python version for docs builds
Expand Down
6 changes: 2 additions & 4 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@ classifiers = [
"Operating System :: Unix",
"Programming Language :: Python",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: Implementation :: CPython",
"Topic :: Scientific/Engineering",
"Topic :: Scientific/Engineering :: Atmospheric Science",
Expand All @@ -50,9 +50,7 @@ keywords = [
license = "BSD-3-Clause"
license-files = ["LICENSE"]
name = "scitools-iris"
# NOTE: currently pinning to avoid Python 3.14
# see : https://github.com/SciTools/iris/issues/6775
requires-python = ">=3.11,<3.14"
requires-python = ">=3.12"

[project.urls]
Code = "https://github.com/SciTools/iris"
Expand Down
71 changes: 36 additions & 35 deletions requirements/locks/py312-linux-64.lock

Large diffs are not rendered by default.

71 changes: 36 additions & 35 deletions requirements/locks/py313-linux-64.lock

Large diffs are not rendered by default.

336 changes: 336 additions & 0 deletions requirements/locks/py314-linux-64.lock

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion requirements/py311.yml → requirements/py314.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ channels:
- conda-forge

dependencies:
- python =3.11
- python =3.14

# Setup dependencies.
- setuptools >=77.0.3
Expand Down
Loading