diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 532cae9..a04bb80 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -51,7 +51,7 @@ jobs: fail-fast: false matrix: os: [ "ubuntu-latest" ] - python-version: [ "3.9", "3.10", "3.11" ] + python-version: [ "3.9", "3.10", "3.11", "3.12", "3.13" ] runs-on: "${{ matrix.os }}" defaults: run: @@ -87,7 +87,7 @@ jobs: fail-fast: false matrix: os: [ "ubuntu-latest" ] - python-version: [ "3.9", "3.10", "3.11" ] + python-version: [ "3.9", "3.10", "3.11", "3.12", "3.13" ] runs-on: "${{ matrix.os }}" steps: - name: Check out repository diff --git a/changelog/58.docs.md b/changelog/58.docs.md new file mode 100644 index 0000000..ebad804 --- /dev/null +++ b/changelog/58.docs.md @@ -0,0 +1 @@ +Recorded the strategy for supported Python versions and dependencies diff --git a/changelog/58.trivial.md b/changelog/58.trivial.md new file mode 100644 index 0000000..5efc1d5 --- /dev/null +++ b/changelog/58.trivial.md @@ -0,0 +1 @@ +Added support for Python 3.12 and 3.13 diff --git a/docs/development.md b/docs/development.md index 83a5fbd..05ab1f6 100644 --- a/docs/development.md +++ b/docs/development.md @@ -75,6 +75,27 @@ The steps required are the following: 1. Enjoy the newly available version +## Testing strategy + +We support Python 3.9 and above. +We follow the [Python life-cycle schedule](https://devguide.python.org/versions/) +and will drop support for Python versions when they reach their end of life. +Given the nature of the package, +we want to ensure support for a broad range of Python versions to minimise any downstream constraints. +Libraries building on `openscm-units` are free to further restrict the Python versions +(or other dependencies) they support. + +For downstream package maintainers we recommend following +the [SPEC 0000](https://scientific-python.org/specs/spec-0000/) deprecation policy. +This policy provides support for a key scientific packages for 24 months after release +and Python versions for 36 months after release. +The Python ecosystem is quicker to adopt new versions than it was previously +and these reduced support timelines reflect that. + +None-the-less we also recommend that lockfiles are used for analysis projects +to capture the exact versions of dependencies used. +This will enable the project to be recreated in the future even if the Python version is no longer supported. + ## Read the Docs Our documentation is hosted by [Read the Docs (RtD)](https://www.readthedocs.org/), diff --git a/pyproject.toml b/pyproject.toml index ae1d259..37f3cd1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,11 +21,15 @@ readme = "README.md" classifiers = [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", + "Intended Audience :: Science/Research", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Topic :: Scientific/Engineering", ] [build-system]