Skip to content

Commit e223247

Browse files
Support for Python 3.14 (#4303)
Co-authored-by: Bouwe Andela <b.andela@esciencecenter.nl> Co-authored-by: Bouwe Andela <bouweandela@gmail.com>
1 parent 7731d60 commit e223247

11 files changed

Lines changed: 9406 additions & 5418 deletions

File tree

.github/workflows/run-tests-monitor.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ jobs:
3333
environment:
3434
- test-py312
3535
- test-py313
36+
- test-py314
3637
name: ${{ matrix.os }} ${{ matrix.environment }}
3738
steps:
3839
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

.github/workflows/test.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ jobs:
2929
environment:
3030
- test-py312
3131
- test-py313
32+
- test-py314
3233
name: ${{ matrix.os }} ${{ matrix.environment }}
3334
steps:
3435
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

esmvaltool/cmorizers/data/datasets.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ datasets:
88
info: |
99
Aerosol Optical Depth information from a worldwide network of stations.
1010
11+
NOTE this formatter is currently not working for Python 3.14 since pys2index is
12+
not supported under Python 3.14! You will have to use Python<3.14, and install pys2index
13+
from conda-forge.
14+
1115
AGCD:
1216
tier: 2
1317
source: "http://dx.doi.org/10.25914/6009600786063"
@@ -1261,6 +1265,10 @@ datasets:
12611265
Download the following archive:
12621266
ch4_surface-flask_ccgg_text.tar.gz
12631267
1268+
NOTE this formatter is currently not working for Python 3.14 since pys2index is
1269+
not supported under Python 3.14! You will have to use Python<3.14, and install pys2index
1270+
from conda-forge.
1271+
12641272
NOAA-GML-SURFACE-FLASK-CO2:
12651273
tier: 2
12661274
source: https://gml.noaa.gov/aftp/data/trace_gases/co2/flask/surface/
@@ -1269,6 +1277,10 @@ datasets:
12691277
Download the following archive:
12701278
co2_surface-flask_ccgg_text.tar.gz
12711279
1280+
NOTE this formatter is currently not working for Python 3.14 since pys2index is
1281+
not supported under Python 3.14! You will have to use Python<3.14, and install pys2index
1282+
from conda-forge.
1283+
12721284
NOAAGlobalTemp:
12731285
tier: 2
12741286
source: https://www.ncei.noaa.gov/data/noaa-global-surface-temperature/v5/access/
@@ -1293,6 +1305,10 @@ datasets:
12931305
Download the following archive:
12941306
n2o_surface-flask_ccgg_text.tar.gz
12951307
1308+
NOTE this formatter is currently not working for Python 3.14 since pys2index is
1309+
not supported under Python 3.14! You will have to use Python<3.14, and install pys2index
1310+
from conda-forge.
1311+
12961312
NSIDC-0116-sh:
12971313
tier: 3
12981314
source: https://nsidc.org/data/NSIDC-0116

esmvaltool/cmorizers/data/formatters/datasets/aeronet.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@
1212
Download and processing instructions
1313
Download the following file:
1414
https://aeronet.gsfc.nasa.gov/data_push/V3/AOD/AOD_Level20_Monthly_V3.tar.gz
15+
16+
NOTE this formatter is currently not working for Python 3.14 since pys2index is
17+
not supported under Python 3.14! You will have to use Python<3.14, and install pys2index
18+
from conda-forge.
1519
"""
1620

1721
import logging

esmvaltool/cmorizers/data/formatters/datasets/noaa_gml_surface_flask.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@
1414
https://gml.noaa.gov/aftp/data/trace_gases/ch4/flask/surface/ch4_surface-flask_ccgg_text.tar.gz
1515
https://gml.noaa.gov/aftp/data/trace_gases/co2/flask/surface/co2_surface-flask_ccgg_text.tar.gz
1616
https://gml.noaa.gov/aftp/data/trace_gases/n2o/flask/surface/n2o_surface-flask_ccgg_text.tar.gz
17+
18+
NOTE this formatter is currently not working for Python 3.14 since pys2index is
19+
not supported under Python 3.14! You will have to use Python<3.14, and install pys2index
20+
from conda-forge.
1721
"""
1822

1923
import logging

esmvaltool/cmorizers/data/formatters/datasets/noaa_gml_surface_flask_ch4.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@
1212
Download and processing instructions
1313
Download the following file:
1414
https://gml.noaa.gov/aftp/data/trace_gases/ch4/flask/surface/ch4_surface-flask_ccgg_text.tar.gz
15+
16+
NOTE this formatter is currently not working for Python 3.14 since pys2index is
17+
not supported under Python 3.14! You will have to use Python<3.14, and install pys2index
18+
from conda-forge.
1519
"""
1620

1721
from esmvaltool.cmorizers.data.formatters.datasets import (

esmvaltool/cmorizers/data/formatters/datasets/noaa_gml_surface_flask_co2.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@
1212
Download and processing instructions
1313
Download the following file:
1414
https://gml.noaa.gov/aftp/data/trace_gases/co2/flask/surface/co2_surface-flask_ccgg_text.tar.gz
15+
16+
NOTE this formatter is currently not working for Python 3.14 since pys2index is
17+
not supported under Python 3.14! You will have to use Python<3.14, and install pys2index
18+
from conda-forge.
1519
"""
1620

1721
from esmvaltool.cmorizers.data.formatters.datasets import (

esmvaltool/cmorizers/data/formatters/datasets/noaa_gml_surface_flask_n2o.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@
1212
Download and processing instructions
1313
Download the following file:
1414
https://gml.noaa.gov/aftp/data/trace_gases/n2o/flask/surface/n2o_surface-flask_ccgg_text.tar.gz
15+
16+
NOTE this formatter is currently not working for Python 3.14 since pys2index is
17+
not supported under Python 3.14! You will have to use Python<3.14, and install pys2index
18+
from conda-forge.
1519
"""
1620

1721
from esmvaltool.cmorizers.data.formatters.datasets import (

pixi.lock

Lines changed: 9321 additions & 5393 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ classifiers = [
1616
"Programming Language :: Python :: 3",
1717
"Programming Language :: Python :: 3.12",
1818
"Programming Language :: Python :: 3.13",
19+
"Programming Language :: Python :: 3.14",
1920
"Topic :: Scientific/Engineering",
2021
"Topic :: Scientific/Engineering :: Atmospheric Science",
2122
"Topic :: Scientific/Engineering :: GIS",
@@ -59,7 +60,6 @@ dependencies = [
5960
"pandas",
6061
"progressbar2",
6162
"pyproj>=2.1",
62-
"pys2index",
6363
"python-dateutil",
6464
"pyyaml",
6565
"rasterio>=1.3.10",
@@ -81,7 +81,7 @@ description = "A community tool for pre-processing data from Earth system models
8181
license = "Apache-2.0"
8282
license-files = ["LICENSE", "NOTICE"]
8383
name = "ESMValTool"
84-
requires-python = ">=3.12,<3.14"
84+
requires-python = ">=3.12,<3.15"
8585

8686
[project.entry-points."console_scripts"]
8787
nclcodestyle = "esmvaltool.utils.nclcodestyle.nclcodestyle:_main"
@@ -244,7 +244,6 @@ convention = "numpy"
244244
"progressbar2" = "*"
245245
"prov" = "*"
246246
"pyproj" = ">=2.1"
247-
"pys2index" = "*"
248247
"python" = ">=3.12"
249248
"python-cdo" = "*"
250249
"python-dateutil" = "*"
@@ -284,19 +283,20 @@ platforms = ["linux-64", "osx-arm64"]
284283
default = { features = ["esmvalcore", "dev", "doc", "test"], solve-group = "default" }
285284
esmvaltool-python = { features = ["esmvalcore"], solve-group = "default" }
286285
# Environment for running diagnostics that also require NCL.
287-
esmvaltool-ncl-dev = { features = ["esmvalcore", "ncl", "dev", "doc", "test"], solve-group = "ncl" }
288-
esmvaltool-ncl = { features = ["esmvalcore", "ncl"], solve-group = "ncl" }
286+
esmvaltool-ncl-dev = { features = ["esmvalcore", "ncl", "dev", "doc", "pys2index", "test"], solve-group = "ncl" }
287+
esmvaltool-ncl = { features = ["esmvalcore", "ncl", "pys2index"], solve-group = "ncl" }
289288
# Environment for running diagnostics that also require R.
290289
esmvaltool-r-dev = { features = ["esmvalcore", "r", "dev", "doc", "test"], solve-group = "r" }
291290
esmvaltool-r = { features = ["esmvalcore", "r"], solve-group = "r" }
292291
# Environment for running any diagnostic.
293-
esmvaltool-dev = { features = ["esmvalcore", "ncl", "r", "dev", "doc", "test"], solve-group = "esmvaltool" }
294-
esmvaltool = { features = ["esmvalcore", "ncl", "r"], solve-group = "esmvaltool" }
292+
esmvaltool-dev = { features = ["esmvalcore", "ncl", "r", "dev", "doc", "pys2index", "test"], solve-group = "esmvaltool" }
293+
esmvaltool = { features = ["esmvalcore", "ncl", "pys2index", "r"], solve-group = "esmvaltool" }
295294
# Environment with the development version of ESMValCore for testing new features and bug fixes.
296295
esmvalcore-dev = { features = ["esmvalcore-dev", "dev", "doc", "test"], solve-group = "esmvalcore-dev" }
297296
# Environments for running tests with specific Python versions.
298-
test-py312 = { features = ["py312", "esmvalcore", "test"], solve-group = "py312" }
299-
test-py313 = { features = ["py313", "esmvalcore", "test"], solve-group = "default" }
297+
test-py312 = { features = ["py312", "esmvalcore", "test", "pys2index"], solve-group = "py312" }
298+
test-py313 = { features = ["py313", "esmvalcore", "test", "pys2index"], solve-group = "py313" }
299+
test-py314 = { features = ["py314", "esmvalcore", "test"], solve-group = "default" }
300300

301301
# Default ESMValCore version.
302302
[tool.pixi.feature.esmvalcore.dependencies]
@@ -342,6 +342,10 @@ test-py313 = { features = ["py313", "esmvalcore", "test"], solve-group = "defaul
342342
[tool.pixi.feature.py313.dependencies]
343343
"python" = "3.13.*"
344344

345+
# Feature for running tests with Python 3.14.
346+
[tool.pixi.feature.py314.dependencies]
347+
"python" = "3.14.*"
348+
345349
# Feature for running diagnostics that also require NCL.
346350
[tool.pixi.feature.ncl]
347351
platforms = ["linux-64"]
@@ -352,6 +356,9 @@ platforms = ["linux-64"]
352356
"nco" = "*"
353357
"imagemagick" = "*"
354358

359+
[tool.pixi.feature.pys2index.dependencies]
360+
"pys2index" = "*"
361+
355362
# Feature for running diagnostics that also require R.
356363
[tool.pixi.feature.r]
357364
platforms = ["linux-64"]

0 commit comments

Comments
 (0)