diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8171c69..7f024a8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,7 +16,7 @@ jobs: - uses: actions/checkout@v4 - name: Build wheels - run: pipx run cibuildwheel==2.21.2 + run: pipx run cibuildwheel==4.3.1 - uses: actions/upload-artifact@v4 with: diff --git a/.github/workflows/build_deploy.yml b/.github/workflows/build_deploy.yml index 5447018..2d2f8d2 100644 --- a/.github/workflows/build_deploy.yml +++ b/.github/workflows/build_deploy.yml @@ -25,7 +25,7 @@ jobs: pip install babel - name: Build wheels - uses: pypa/cibuildwheel@v3.3.1 + uses: pypa/cibuildwheel@v4.3.1 env: CIBW_BEFORE_BUILD: pip install babel && pybabel compile -d plotpy/locale -D plotpy diff --git a/.github/workflows/test_pyqt5.yml b/.github/workflows/test_pyqt5.yml index 70c99af..1a88da6 100644 --- a/.github/workflows/test_pyqt5.yml +++ b/.github/workflows/test_pyqt5.yml @@ -22,7 +22,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.9", "3.13", "3.14"] + python-version: ["3.9", "3.13", "3.14", "3.15"] steps: - uses: actions/checkout@v4 diff --git a/doc/dev/platforms.rst b/doc/dev/platforms.rst index 621c19e..1bd5b5c 100644 --- a/doc/dev/platforms.rst +++ b/doc/dev/platforms.rst @@ -7,7 +7,7 @@ The following sections describe the reference platforms for the project. .. note:: - The officially supported Python versions are 3.9, 3.10, 3.11, 3.12 and 3.13. + The officially supported Python versions are 3.9 through 3.15. The officially supported Qt binding is PyQt5. However, efforts have been made and will continue to be made to support PyQt6 and PySide6 as well. diff --git a/plotpy/tests/unit/test_python_support.py b/plotpy/tests/unit/test_python_support.py new file mode 100644 index 0000000..af06780 --- /dev/null +++ b/plotpy/tests/unit/test_python_support.py @@ -0,0 +1,17 @@ +# Licensed under the terms of the BSD 3-Clause +# (see plotpy/LICENSE for details) + +"""Tests for supported Python versions in package metadata.""" + +from __future__ import annotations + +from importlib.metadata import metadata + +import pytest + + +@pytest.mark.parametrize("minor", range(9, 16)) +def test_python_classifiers(minor): + """Check that package metadata advertises every supported Python version.""" + classifiers = metadata("PlotPy").get_all("Classifier") + assert f"Programming Language :: Python :: 3.{minor}" in classifiers diff --git a/pyproject.toml b/pyproject.toml index cc5bb73..3f2c6a9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,6 +27,7 @@ classifiers = [ "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: 3.15", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Image Processing", "Topic :: Scientific/Engineering :: Human Machine Interfaces", @@ -117,5 +118,5 @@ line-ending = "auto" # Like Black, automatically detect the appropr convention = "google" [tool.cibuildwheel] -build = ["cp39-*", "cp310-*", "cp311-*", "cp312-*", "cp313-*", "cp314-*"] +build = ["cp39-*", "cp310-*", "cp311-*", "cp312-*", "cp313-*", "cp314-*", "cp315-*"] skip = ["*-manylinux_i686", "*-musllinux*"]