diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 0c315cfa..7f930330 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -12,7 +12,7 @@ on: workflow_dispatch: env: - python-version: "3.13" + python-version: "3.14" jobs: build: @@ -65,12 +65,12 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.11", "3.12", "3.13"] + python-version: ["3.12", "3.13", "3.14"] dependencies: ["pinned"] include: - - python-version: "3.13" + - python-version: "3.14" dependencies: "latest" - - python-version: "3.11" + - python-version: "3.12" dependencies: "minimum" diff --git a/.github/workflows/release-tags.yaml b/.github/workflows/release-tags.yaml index 482d1a9e..57fd7783 100644 --- a/.github/workflows/release-tags.yaml +++ b/.github/workflows/release-tags.yaml @@ -7,7 +7,7 @@ on: workflow_dispatch: env: - python-version: "3.11" + python-version: "3.14" jobs: build: diff --git a/continuous-integration/requirements-3.12.txt b/continuous-integration/requirements-3.12.txt index f1eb3cec..0844ebbb 100644 --- a/continuous-integration/requirements-3.12.txt +++ b/continuous-integration/requirements-3.12.txt @@ -4,32 +4,32 @@ # # pip-compile --extra=testing --output-file=./continuous-integration/requirements-3.12.txt --unsafe-package=emsarray pyproject.toml # -bokeh==3.7.3 +bokeh==3.8.1 # via dask -bottleneck==1.5.0 +bottleneck==1.6.0 # via # emsarray # emsarray (pyproject.toml) cartopy==0.25.0 # via emsarray -certifi==2025.8.3 +certifi==2025.11.12 # via # netcdf4 # pyproj # requests -cftime==1.6.4.post1 +cftime==1.6.5 # via # cfunits # netcdf4 cfunits==3.3.7 # via emsarray -charset-normalizer==3.4.3 +charset-normalizer==3.4.4 # via requests -click==8.2.1 +click==8.3.0 # via # dask # distributed -cloudpickle==3.1.1 +cloudpickle==3.1.2 # via # dask # distributed @@ -37,33 +37,33 @@ contourpy==1.3.3 # via # bokeh # matplotlib -coverage[toml]==7.10.4 +coverage[toml]==7.11.3 # via pytest-cov cycler==0.12.1 # via matplotlib -dask[array,complete,dataframe,diagnostics,distributed]==2025.7.0 +dask[array,complete,dataframe,diagnostics,distributed]==2025.11.0 # via # distributed # xarray -distributed==2025.7.0 +distributed==2025.11.0 # via dask flake8==7.3.0 # via emsarray (pyproject.toml) -fonttools==4.59.1 +fonttools==4.60.1 # via matplotlib freezegun==1.5.5 # via emsarray (pyproject.toml) -fsspec==2025.7.0 +fsspec==2025.10.0 # via dask geojson==3.2.0 # via # emsarray # emsarray (pyproject.toml) -idna==3.10 +idna==3.11 # via requests -iniconfig==2.1.0 +iniconfig==2.3.0 # via pytest -isort==6.0.1 +isort==7.0.0 # via emsarray (pyproject.toml) jinja2==3.1.6 # via @@ -77,30 +77,30 @@ locket==1.0.0 # via # distributed # partd -lz4==4.4.4 +lz4==4.4.5 # via dask -markupsafe==3.0.2 +markupsafe==3.0.3 # via jinja2 -matplotlib==3.10.5 +matplotlib==3.10.7 # via # cartopy # emsarray # pytest-mpl mccabe==0.7.0 # via flake8 -msgpack==1.1.1 +msgpack==1.1.2 # via distributed -mypy==1.17.1 +mypy==1.18.2 # via emsarray (pyproject.toml) mypy-extensions==1.1.0 # via mypy -narwhals==2.1.2 +narwhals==2.11.0 # via bokeh -netcdf4==1.7.2 +netcdf4==1.7.3 # via # emsarray # emsarray (pyproject.toml) -numpy==2.3.2 +numpy==2.3.4 # via # bokeh # bottleneck @@ -132,23 +132,23 @@ packaging==25.0 # pytest # pytest-mpl # xarray -pandas==2.3.1 +pandas==2.3.3 # via # bokeh # dask # xarray -pandas-stubs==2.3.0.250703 +pandas-stubs==2.3.2.250926 # via emsarray (pyproject.toml) partd==1.4.2 # via dask pathspec==0.12.1 # via mypy -pillow==11.3.0 +pillow==12.0.0 # via # bokeh # matplotlib # pytest-mpl -platformdirs==4.3.8 +platformdirs==4.5.0 # via pooch pluggy==1.6.0 # via @@ -156,9 +156,9 @@ pluggy==1.6.0 # pytest-cov pooch==1.8.2 # via emsarray -psutil==7.0.0 +psutil==7.1.3 # via distributed -pyarrow==21.0.0 +pyarrow==22.0.0 # via dask pycodestyle==2.14.0 # via flake8 @@ -168,21 +168,21 @@ pygments==2.19.2 # via pytest pykdtree==1.4.3 # via emsarray -pyparsing==3.2.3 +pyparsing==3.2.5 # via matplotlib pyproj==3.7.2 # via cartopy -pyshp==2.3.1 +pyshp==3.0.2.post1 # via # cartopy # emsarray # emsarray (pyproject.toml) -pytest==8.4.1 +pytest==9.0.1 # via # emsarray (pyproject.toml) # pytest-cov # pytest-mpl -pytest-cov==6.2.1 +pytest-cov==7.0.0 # via emsarray (pyproject.toml) pytest-mpl==0.17.0 # via emsarray (pyproject.toml) @@ -193,14 +193,14 @@ python-dateutil==2.9.0.post0 # pandas pytz==2025.2 # via pandas -pyyaml==6.0.2 +pyyaml==6.0.3 # via # bokeh # dask # distributed -requests==2.32.4 +requests==2.32.5 # via pooch -shapely==2.1.1 +shapely==2.1.2 # via # cartopy # emsarray @@ -209,9 +209,9 @@ six==1.17.0 # via python-dateutil sortedcontainers==2.4.0 # via distributed -tblib==3.1.0 +tblib==3.2.2 # via distributed -toolz==1.0.0 +toolz==1.1.0 # via # dask # distributed @@ -220,11 +220,11 @@ tornado==6.5.2 # via # bokeh # distributed -types-pytz==2025.2.0.20250809 +types-pytz==2025.2.0.20251108 # via # emsarray (pyproject.toml) # pandas-stubs -typing-extensions==4.14.1 +typing-extensions==4.15.0 # via mypy tzdata==2025.2 # via pandas @@ -232,11 +232,11 @@ urllib3==2.5.0 # via # distributed # requests -xarray[parallel]==2025.8.0 +xarray[parallel]==2025.10.1 # via # emsarray # emsarray (pyproject.toml) -xyzservices==2025.4.0 +xyzservices==2025.10.0 # via bokeh zict==3.0.0 # via distributed diff --git a/continuous-integration/requirements-3.13.txt b/continuous-integration/requirements-3.13.txt index 98feef1b..5f1efc5f 100644 --- a/continuous-integration/requirements-3.13.txt +++ b/continuous-integration/requirements-3.13.txt @@ -4,32 +4,32 @@ # # pip-compile --extra=testing --output-file=./continuous-integration/requirements-3.13.txt --unsafe-package=emsarray pyproject.toml # -bokeh==3.7.3 +bokeh==3.8.1 # via dask -bottleneck==1.5.0 +bottleneck==1.6.0 # via # emsarray # emsarray (pyproject.toml) cartopy==0.25.0 # via emsarray -certifi==2025.8.3 +certifi==2025.11.12 # via # netcdf4 # pyproj # requests -cftime==1.6.4.post1 +cftime==1.6.5 # via # cfunits # netcdf4 cfunits==3.3.7 # via emsarray -charset-normalizer==3.4.3 +charset-normalizer==3.4.4 # via requests -click==8.2.1 +click==8.3.0 # via # dask # distributed -cloudpickle==3.1.1 +cloudpickle==3.1.2 # via # dask # distributed @@ -37,33 +37,33 @@ contourpy==1.3.3 # via # bokeh # matplotlib -coverage[toml]==7.10.4 +coverage[toml]==7.11.3 # via pytest-cov cycler==0.12.1 # via matplotlib -dask[array,complete,dataframe,diagnostics,distributed]==2025.7.0 +dask[array,complete,dataframe,diagnostics,distributed]==2025.11.0 # via # distributed # xarray -distributed==2025.7.0 +distributed==2025.11.0 # via dask flake8==7.3.0 # via emsarray (pyproject.toml) -fonttools==4.59.1 +fonttools==4.60.1 # via matplotlib freezegun==1.5.5 # via emsarray (pyproject.toml) -fsspec==2025.7.0 +fsspec==2025.10.0 # via dask geojson==3.2.0 # via # emsarray # emsarray (pyproject.toml) -idna==3.10 +idna==3.11 # via requests -iniconfig==2.1.0 +iniconfig==2.3.0 # via pytest -isort==6.0.1 +isort==7.0.0 # via emsarray (pyproject.toml) jinja2==3.1.6 # via @@ -77,30 +77,30 @@ locket==1.0.0 # via # distributed # partd -lz4==4.4.4 +lz4==4.4.5 # via dask -markupsafe==3.0.2 +markupsafe==3.0.3 # via jinja2 -matplotlib==3.10.5 +matplotlib==3.10.7 # via # cartopy # emsarray # pytest-mpl mccabe==0.7.0 # via flake8 -msgpack==1.1.1 +msgpack==1.1.2 # via distributed -mypy==1.17.1 +mypy==1.18.2 # via emsarray (pyproject.toml) mypy-extensions==1.1.0 # via mypy -narwhals==2.1.2 +narwhals==2.11.0 # via bokeh -netcdf4==1.7.2 +netcdf4==1.7.3 # via # emsarray # emsarray (pyproject.toml) -numpy==2.3.2 +numpy==2.3.4 # via # bokeh # bottleneck @@ -132,23 +132,23 @@ packaging==25.0 # pytest # pytest-mpl # xarray -pandas==2.3.1 +pandas==2.3.3 # via # bokeh # dask # xarray -pandas-stubs==2.3.0.250703 +pandas-stubs==2.3.2.250926 # via emsarray (pyproject.toml) partd==1.4.2 # via dask pathspec==0.12.1 # via mypy -pillow==11.3.0 +pillow==12.0.0 # via # bokeh # matplotlib # pytest-mpl -platformdirs==4.3.8 +platformdirs==4.5.0 # via pooch pluggy==1.6.0 # via @@ -156,9 +156,9 @@ pluggy==1.6.0 # pytest-cov pooch==1.8.2 # via emsarray -psutil==7.0.0 +psutil==7.1.3 # via distributed -pyarrow==21.0.0 +pyarrow==22.0.0 # via dask pycodestyle==2.14.0 # via flake8 @@ -168,21 +168,21 @@ pygments==2.19.2 # via pytest pykdtree==1.4.3 # via emsarray -pyparsing==3.2.3 +pyparsing==3.2.5 # via matplotlib pyproj==3.7.2 # via cartopy -pyshp==2.3.1 +pyshp==3.0.2.post1 # via # cartopy # emsarray # emsarray (pyproject.toml) -pytest==8.4.1 +pytest==9.0.1 # via # emsarray (pyproject.toml) # pytest-cov # pytest-mpl -pytest-cov==6.2.1 +pytest-cov==7.0.0 # via emsarray (pyproject.toml) pytest-mpl==0.17.0 # via emsarray (pyproject.toml) @@ -193,14 +193,14 @@ python-dateutil==2.9.0.post0 # pandas pytz==2025.2 # via pandas -pyyaml==6.0.2 +pyyaml==6.0.3 # via # bokeh # dask # distributed -requests==2.32.4 +requests==2.32.5 # via pooch -shapely==2.1.1 +shapely==2.1.2 # via # cartopy # emsarray @@ -209,9 +209,9 @@ six==1.17.0 # via python-dateutil sortedcontainers==2.4.0 # via distributed -tblib==3.1.0 +tblib==3.2.2 # via distributed -toolz==1.0.0 +toolz==1.1.0 # via # dask # distributed @@ -220,11 +220,11 @@ tornado==6.5.2 # via # bokeh # distributed -types-pytz==2025.2.0.20250809 +types-pytz==2025.2.0.20251108 # via # emsarray (pyproject.toml) # pandas-stubs -typing-extensions==4.14.1 +typing-extensions==4.15.0 # via mypy tzdata==2025.2 # via pandas @@ -232,11 +232,11 @@ urllib3==2.5.0 # via # distributed # requests -xarray[parallel]==2025.8.0 +xarray[parallel]==2025.10.1 # via # emsarray # emsarray (pyproject.toml) -xyzservices==2025.4.0 +xyzservices==2025.10.0 # via bokeh zict==3.0.0 # via distributed diff --git a/continuous-integration/requirements-3.11.txt b/continuous-integration/requirements-3.14.txt similarity index 78% rename from continuous-integration/requirements-3.11.txt rename to continuous-integration/requirements-3.14.txt index ab48a414..dfe33507 100644 --- a/continuous-integration/requirements-3.11.txt +++ b/continuous-integration/requirements-3.14.txt @@ -1,35 +1,35 @@ # -# This file is autogenerated by pip-compile with Python 3.11 +# This file is autogenerated by pip-compile with Python 3.14 # by the following command: # -# pip-compile --extra=testing --output-file=./continuous-integration/requirements-3.11.txt --unsafe-package=emsarray pyproject.toml +# pip-compile --extra=testing --output-file=./continuous-integration/requirements-3.14.txt --unsafe-package=emsarray pyproject.toml # -bokeh==3.7.3 +bokeh==3.8.1 # via dask -bottleneck==1.5.0 +bottleneck==1.6.0 # via # emsarray # emsarray (pyproject.toml) cartopy==0.25.0 # via emsarray -certifi==2025.8.3 +certifi==2025.11.12 # via # netcdf4 # pyproj # requests -cftime==1.6.4.post1 +cftime==1.6.5 # via # cfunits # netcdf4 cfunits==3.3.7 # via emsarray -charset-normalizer==3.4.3 +charset-normalizer==3.4.4 # via requests -click==8.2.1 +click==8.3.0 # via # dask # distributed -cloudpickle==3.1.1 +cloudpickle==3.1.2 # via # dask # distributed @@ -37,35 +37,33 @@ contourpy==1.3.3 # via # bokeh # matplotlib -coverage[toml]==7.10.4 +coverage[toml]==7.11.3 # via pytest-cov cycler==0.12.1 # via matplotlib -dask[array,complete,dataframe,diagnostics,distributed]==2025.7.0 +dask[array,complete,dataframe,diagnostics,distributed]==2025.11.0 # via # distributed # xarray -distributed==2025.7.0 +distributed==2025.11.0 # via dask flake8==7.3.0 # via emsarray (pyproject.toml) -fonttools==4.59.1 +fonttools==4.60.1 # via matplotlib freezegun==1.5.5 # via emsarray (pyproject.toml) -fsspec==2025.7.0 +fsspec==2025.10.0 # via dask geojson==3.2.0 # via # emsarray # emsarray (pyproject.toml) -idna==3.10 +idna==3.11 # via requests -importlib-metadata==8.7.0 - # via dask -iniconfig==2.1.0 +iniconfig==2.3.0 # via pytest -isort==6.0.1 +isort==7.0.0 # via emsarray (pyproject.toml) jinja2==3.1.6 # via @@ -79,30 +77,30 @@ locket==1.0.0 # via # distributed # partd -lz4==4.4.4 +lz4==4.4.5 # via dask -markupsafe==3.0.2 +markupsafe==3.0.3 # via jinja2 -matplotlib==3.10.5 +matplotlib==3.10.7 # via # cartopy # emsarray # pytest-mpl mccabe==0.7.0 # via flake8 -msgpack==1.1.1 +msgpack==1.1.2 # via distributed -mypy==1.17.1 +mypy==1.18.2 # via emsarray (pyproject.toml) mypy-extensions==1.1.0 # via mypy -narwhals==2.1.2 +narwhals==2.11.0 # via bokeh -netcdf4==1.7.2 +netcdf4==1.7.3 # via # emsarray # emsarray (pyproject.toml) -numpy==2.3.2 +numpy==2.3.4 # via # bokeh # bottleneck @@ -134,23 +132,23 @@ packaging==25.0 # pytest # pytest-mpl # xarray -pandas==2.3.1 +pandas==2.3.3 # via # bokeh # dask # xarray -pandas-stubs==2.3.0.250703 +pandas-stubs==2.3.2.250926 # via emsarray (pyproject.toml) partd==1.4.2 # via dask pathspec==0.12.1 # via mypy -pillow==11.3.0 +pillow==12.0.0 # via # bokeh # matplotlib # pytest-mpl -platformdirs==4.3.8 +platformdirs==4.5.0 # via pooch pluggy==1.6.0 # via @@ -158,9 +156,9 @@ pluggy==1.6.0 # pytest-cov pooch==1.8.2 # via emsarray -psutil==7.0.0 +psutil==7.1.3 # via distributed -pyarrow==21.0.0 +pyarrow==22.0.0 # via dask pycodestyle==2.14.0 # via flake8 @@ -170,21 +168,21 @@ pygments==2.19.2 # via pytest pykdtree==1.4.3 # via emsarray -pyparsing==3.2.3 +pyparsing==3.2.5 # via matplotlib pyproj==3.7.2 # via cartopy -pyshp==2.3.1 +pyshp==3.0.2.post1 # via # cartopy # emsarray # emsarray (pyproject.toml) -pytest==8.4.1 +pytest==9.0.1 # via # emsarray (pyproject.toml) # pytest-cov # pytest-mpl -pytest-cov==6.2.1 +pytest-cov==7.0.0 # via emsarray (pyproject.toml) pytest-mpl==0.17.0 # via emsarray (pyproject.toml) @@ -195,14 +193,14 @@ python-dateutil==2.9.0.post0 # pandas pytz==2025.2 # via pandas -pyyaml==6.0.2 +pyyaml==6.0.3 # via # bokeh # dask # distributed -requests==2.32.4 +requests==2.32.5 # via pooch -shapely==2.1.1 +shapely==2.1.2 # via # cartopy # emsarray @@ -211,9 +209,9 @@ six==1.17.0 # via python-dateutil sortedcontainers==2.4.0 # via distributed -tblib==3.1.0 +tblib==3.2.2 # via distributed -toolz==1.0.0 +toolz==1.1.0 # via # dask # distributed @@ -222,11 +220,11 @@ tornado==6.5.2 # via # bokeh # distributed -types-pytz==2025.2.0.20250809 +types-pytz==2025.2.0.20251108 # via # emsarray (pyproject.toml) # pandas-stubs -typing-extensions==4.14.1 +typing-extensions==4.15.0 # via mypy tzdata==2025.2 # via pandas @@ -234,16 +232,14 @@ urllib3==2.5.0 # via # distributed # requests -xarray[parallel]==2025.8.0 +xarray[parallel]==2025.10.1 # via # emsarray # emsarray (pyproject.toml) -xyzservices==2025.4.0 +xyzservices==2025.10.0 # via bokeh zict==3.0.0 # via distributed -zipp==3.23.0 - # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: # emsarray diff --git a/continuous-integration/requirements-minimum.txt b/continuous-integration/requirements-minimum.txt index 03b96783..97b04cf1 100644 --- a/continuous-integration/requirements-minimum.txt +++ b/continuous-integration/requirements-minimum.txt @@ -1,34 +1,34 @@ # -# This file is autogenerated by pip-compile with Python 3.11 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # pip-compile --extra=complete --output-file=./continuous-integration/requirements-minimum.txt --strip-extras --unsafe-package=certifi --unsafe-package=emsarray --unsafe-package=pytz --unsafe-package=tzdata pyproject.toml # -bokeh~=3.6.3 +bokeh~=3.7.3 # via dask bottleneck~=1.4.2 # via # emsarray # emsarray (pyproject.toml) -cartopy~=0.23.0 +cartopy~=0.24.1 # via emsarray -cftime~=1.6.4.post1 +cftime~=1.6.5 # via # cfunits # netcdf4 cfunits~=3.3.7 # via emsarray -charset-normalizer~=3.3.2 +charset-normalizer~=3.4.4 # via requests click~=8.1.8 # via # dask # distributed -cloudpickle~=3.0.0 +cloudpickle~=3.1.2 # via # dask # distributed -contourpy~=1.2.1 +contourpy~=1.3.3 # via # bokeh # matplotlib @@ -43,18 +43,16 @@ dask-expr~=1.1.21 # via dask distributed~=2024.12.1 # via dask -fonttools~=4.53.1 +fonttools~=4.54.1 # via matplotlib -fsspec~=2024.6.1 +fsspec~=2024.10.0 # via dask geojson~=3.1.0 # via # emsarray # emsarray (pyproject.toml) -idna~=3.10 +idna~=3.11 # via requests -importlib-metadata~=8.2.0 - # via dask jinja2~=3.1.6 # via # bokeh @@ -68,15 +66,17 @@ locket~=1.0.0 # partd lz4~=4.3.3 # via dask -markupsafe~=2.1.5 +markupsafe~=3.0.3 # via jinja2 -matplotlib~=3.9.4 +matplotlib~=3.10.7 # via # cartopy # emsarray -msgpack~=1.1.1 +msgpack~=1.1.2 # via distributed -netcdf4~=1.7.2 +narwhals~=2.11.0 + # via bokeh +netcdf4~=1.7.3 # via # emsarray # emsarray (pyproject.toml) @@ -94,7 +94,6 @@ numpy~=1.26.4 # matplotlib # netcdf4 # pandas - # pyarrow # pykdtree # shapely # xarray @@ -118,25 +117,25 @@ pandas~=2.2.3 # xarray partd~=1.4.2 # via dask -pillow~=10.4.0 +pillow~=11.0.0 # via # bokeh # matplotlib -platformdirs~=4.2.2 +platformdirs~=4.3.8 # via pooch pooch~=1.8.2 # via emsarray -psutil~=6.0.0 +psutil~=6.1.1 # via distributed -pyarrow~=17.0.0 +pyarrow~=18.0.0 # via # dask # dask-expr pykdtree~=1.3.13 # via emsarray -pyparsing~=3.1.4 +pyparsing~=3.2.5 # via matplotlib -pyproj~=3.6.1 +pyproj~=3.7.2 # via cartopy pyshp~=2.3.1 # via @@ -147,12 +146,12 @@ python-dateutil~=2.9.0.post0 # via # matplotlib # pandas -pyyaml~=6.0.2 +pyyaml~=6.0.3 # via # bokeh # dask # distributed -requests~=2.32.4 +requests~=2.32.5 # via pooch shapely~=2.0.7 # via @@ -165,7 +164,7 @@ sortedcontainers~=2.4.0 # via distributed tblib~=3.0.0 # via distributed -toolz~=0.12.1 +toolz~=1.0.0 # via # dask # distributed @@ -178,22 +177,20 @@ urllib3~=2.2.3 # via # distributed # requests -xarray~=2024.7.0 +xarray~=2024.10.0 # via # emsarray # emsarray (pyproject.toml) -xyzservices~=2024.6.0 +xyzservices~=2024.9.0 # via bokeh zict~=3.0.0 # via distributed -zipp~=3.20.2 - # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: # certifi # emsarray # pytz # tzdata +pytz tzdata certifi -pytz diff --git a/docs/releases/development.rst b/docs/releases/development.rst index b95e61fd..7a855e78 100644 --- a/docs/releases/development.rst +++ b/docs/releases/development.rst @@ -2,4 +2,6 @@ Next release (in development) ============================= -* ... +* Add support for Python 3.14 and drop support for Python 3.11, + following `SPEC-0 `_. + (:pr:`201`). diff --git a/pyproject.toml b/pyproject.toml index 99ea51be..5264ff57 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,7 +12,7 @@ authors = [ {name = "Coastal Environmental Modelling team, Oceans and Atmosphere, CSIRO", email = "coasts@csiro.au"}, ] license = {file = "LICENSE"} -requires-python = ">=3.11" +requires-python = ">=3.12" dependencies = [ "bottleneck >=1.3", "geojson >=3.1", @@ -49,9 +49,9 @@ complete = [ docs = [ "emsarray[complete]", - "sphinx ~=6.2.1", - "sphinx_book_theme ~=1.0.1", - "livereload~=2.6.3", + "sphinx ~=8.2.3", + "sphinx_book_theme ~=1.1.4", + "livereload~=2.7.1", ] testing = [ @@ -110,7 +110,7 @@ mpl-use-full-test-name = true # mpl-baseline-path = "tests/baseline_images" [tool.mypy] -python_version = "3.11" +python_version = "3.12" disallow_untyped_defs = true warn_return_any = true diff --git a/scripts/update_pinned_dependencies.sh b/scripts/update_pinned_dependencies.sh index b8d4680c..7d417095 100755 --- a/scripts/update_pinned_dependencies.sh +++ b/scripts/update_pinned_dependencies.sh @@ -2,7 +2,7 @@ set -e -PYTHON_VERSIONS=('3.11' '3.12' '3.13') +PYTHON_VERSIONS=('3.12' '3.13' '3.14') HERE="$( cd -- "$( realpath -- "$( dirname -- "$0" )" )" && pwd )" PROJECT_ROOT="$( dirname "$HERE" )" diff --git a/tox.ini b/tox.ini index a3832d33..0d7c8256 100644 --- a/tox.ini +++ b/tox.ini @@ -3,9 +3,9 @@ isolated_build = true package = wheel wheel_build_env = .pkg envlist = - py{311,312,313}-pytest-pinned - py311-pytest-minimum - py313-pytest-latest + py{312,313,314}-pytest-pinned + py312-pytest-minimum + py314-pytest-latest lint,docs skip_missing_interpreters = true @@ -18,12 +18,12 @@ sitepackages = false passenv = UDUNITS2_XML_PATH -[testenv:py{311,312,313}-pytest-{pinned,latest,minimum}] +[testenv:py{312,313,314}-pytest-{pinned,latest,minimum}] description = "Run the pytest test suite against a specific Python version and dependencies" deps = - py311-pinned: -rcontinuous-integration/requirements-3.11.txt py312-pinned: -rcontinuous-integration/requirements-3.12.txt py313-pinned: -rcontinuous-integration/requirements-3.13.txt + py314-pinned: -rcontinuous-integration/requirements-3.14.txt minimum: -rcontinuous-integration/requirements-minimum.txt extras = latest: testing