diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 1124193..ff4b8c8 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -41,7 +41,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
- python-version: ['3.10', '3.11', '3.12', '3.13']
+ python-version: ['3.10', '3.11', '3.12', '3.13', '3.14']
steps:
- name: Checkout code
uses: actions/checkout@v4
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 8ad542c..c390385 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -53,7 +53,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
- python-version: ['3.10', '3.11', '3.12', '3.13']
+ python-version: ['3.10', '3.11', '3.12', '3.13', '3.14']
steps:
- name: Checkout code
uses: actions/checkout@v4
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
new file mode 100644
index 0000000..ebdc630
--- /dev/null
+++ b/CHANGELOG.rst
@@ -0,0 +1,29 @@
+=========
+Changelog
+=========
+
+All notable changes to this project are documented in this file.
+
+The format is based on `Keep a Changelog
+`_, and this project adheres to
+`Semantic Versioning `_.
+
+Unreleased
+==========
+
+Added
+-----
+
+- Python 3.14 to the CI and release test matrices.
+
+Changed
+-------
+
+- Moved the package trove classifiers into ``pyproject.toml`` so they ship in
+ the published metadata, covering Python 3.10 to 3.14.
+- Updated the supported Python version range in ``docs/release.rst``.
+
+Removed
+-------
+
+- ``classifiers.txt``, which was not read by the build.
diff --git a/classifiers.txt b/classifiers.txt
deleted file mode 100644
index 0324104..0000000
--- a/classifiers.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-Development Status :: 5 - Production/Stable
-Intended Audience :: Developers
-Intended Audience :: Information Technology
-License :: OSI Approved :: Apache Software License
-Programming Language :: Python
-Programming Language :: Python :: 3
-Programming Language :: Python :: 3 :: Only
-Programming Language :: Python :: 3.5
-Programming Language :: Python :: 3.6
-Programming Language :: Python :: 3.7
-Topic :: Software Development :: Libraries
-Topic :: Utilities
diff --git a/docs/release.rst b/docs/release.rst
index f4815b2..b9a8599 100644
--- a/docs/release.rst
+++ b/docs/release.rst
@@ -73,7 +73,7 @@ Release Steps
Once the tag is pushed, the Release workflow automatically:
* Builds the Python package (wheel and sdist)
- * Tests the package on Python 3.10-3.13
+ * Tests the package on Python 3.10-3.14
* Publishes to TestPyPI
* Publishes to PyPI
* Creates a GitHub Release with the built artifacts
diff --git a/pyproject.toml b/pyproject.toml
index 28e4271..aa97cdd 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -12,6 +12,22 @@ authors = [
readme = "README.rst"
license = {file = "LICENSE"}
requires-python = ">=3.10"
+classifiers = [
+ "Development Status :: 5 - Production/Stable",
+ "Intended Audience :: Developers",
+ "Intended Audience :: Information Technology",
+ "License :: OSI Approved :: Apache Software License",
+ "Programming Language :: Python",
+ "Programming Language :: Python :: 3",
+ "Programming Language :: Python :: 3 :: Only",
+ "Programming Language :: Python :: 3.10",
+ "Programming Language :: Python :: 3.11",
+ "Programming Language :: Python :: 3.12",
+ "Programming Language :: Python :: 3.13",
+ "Programming Language :: Python :: 3.14",
+ "Topic :: Software Development :: Libraries",
+ "Topic :: Utilities",
+]
dependencies = []
[dependency-groups]