Skip to content
Draft
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
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