feat!: require Python 3.14 for the paperspec package

The specification pins the Unicode 16.0 character data (spec/01 §1.4),
which Python 3.14 is the first to ship; Python 3.12 has 15.0 and 3.13 has
15.1, so text with characters added in 16.0 could normalize differently
there. The tools already required 3.14; the package now does too.

- pyproject.toml: requires-python >= 3.14, with the 3.14 classifier.
- The package and tools docstrings, tools/README.md and the changelog say
  3.14 instead of 3.12.

pixi.lock still needs `pixi lock` (see the previous commit); its paperspec
entry also records the old requires-python.

pixi run check passes; no computed value changed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
alexmandClaude committed 2026-10-15 09:05:26 -04:00
1 parent a4eecb4d5b
commit cfe1f39099
5 files changed
+7 -5

No files matched your search

+1 -1
View File
@@ -69,7 +69,7 @@ A node's five values depend only on its own subtree, so after a correction the o
Other repositories of the project do not reimplement the specification: they install this repository as the Python package `paperspec` (`pip install .`, or a git pin) and import the oracle from it, so that every key, identifier, canonical JSON string, package check and database form comes from one piece of code.
The library surface they use is `keys`, `text`, `jcs`, `package`, `db`, `schema` and `rights`, with the schemas, SQL and vectors as package data (`importlib.resources.files("paperspec") / "sql" / "doc.sql"`).
Those modules run on Python 3.12 with the standard library alone, except that `schema` needs `paperspec[schema]` (`jsonschema` and `referencing`) and the HKDF and Ed25519 functions of `crypto` need `paperspec[crypto]`; `paperspec[tools]` installs both.
Those modules need Python 3.14, the first with the Unicode 16.0 character data the specification pins, and otherwise only the standard library, except that `schema` needs `paperspec[schema]` (`jsonschema` and `referencing`) and the HKDF and Ed25519 functions of `crypto` need `paperspec[crypto]`; `paperspec[tools]` installs both.
The package version comes from git tags through setuptools-scm, and `pixi run -e dev wheel` builds the wheel into `dist/`.
When `scienting-core` exists it takes this role behind the same vectors, and the import changes without any computed value changing.
Independent implementations follow the [specification](../spec/README.md) and test themselves against the [vectors](../vectors/README.md).
+1 -1
View File
@@ -3,7 +3,7 @@
Importing this package checks that the tools can run here, and puts `src/` first on the path, so that
`import paperspec` gets this checkout's reference implementation rather than an installed copy.
The tools need Python 3.14 and the packages `cryptography` and `jsonschema`; the `paperspec` package
itself does not, and other programs install it on its own.
itself needs Python 3.14 but neither package, and other programs install it on its own.
"""
import importlib.util