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:
5 files changed
+7
-5
No files matched your search
+1
-1
@@ -26,6 +26,6 @@ Packaging and lazy imports only; the formats stay at 0.1.0, and no computed valu
|
|||||||
|
|
||||||
- The oracle moves from `tools/oracle/` to `src/paperspec/` and installs as the Python package `paperspec` (`pyproject.toml`, setuptools), with `schemas/`, `sql/` and `vectors/` as the data subpackages `paperspec.schemas`, `paperspec.sql` and `paperspec.vectors`, so other repositories import the reference implementation instead of reimplementing it.
|
- The oracle moves from `tools/oracle/` to `src/paperspec/` and installs as the Python package `paperspec` (`pyproject.toml`, setuptools), with `schemas/`, `sql/` and `vectors/` as the data subpackages `paperspec.schemas`, `paperspec.sql` and `paperspec.vectors`, so other repositories import the reference implementation instead of reimplementing it.
|
||||||
- The package version comes from git tags through setuptools-scm.
|
- The package version comes from git tags through setuptools-scm.
|
||||||
- The base package has no dependencies and runs on Python 3.12; the extras `paperspec[schema]` (`jsonschema`, `referencing`), `paperspec[crypto]` (`cryptography`) and `paperspec[tools]` (both) cover `schema` and the HKDF and Ed25519 functions of `crypto`, which now import their packages on first use.
|
- The base package has no dependencies and requires Python 3.14, the first with the Unicode 16.0 character data the specification pins; the extras `paperspec[schema]` (`jsonschema`, `referencing`), `paperspec[crypto]` (`cryptography`) and `paperspec[tools]` (both) cover `schema` and the HKDF and Ed25519 functions of `crypto`, which now import their packages on first use.
|
||||||
- The tools import `paperspec` from `src/`, and their Python 3.14 and package check moves to `tools/__init__.py`, so the package itself checks nothing on import.
|
- The tools import `paperspec` from `src/`, and their Python 3.14 and package check moves to `tools/__init__.py`, so the package itself checks nothing on import.
|
||||||
- The pixi workspace installs the package editable, and a `dev` environment builds the wheel with `pixi run -e dev wheel`.
|
- The pixi workspace installs the package editable, and a `dev` environment builds the wheel with `pixi run -e dev wheel`.
|
||||||
+3
-1
@@ -10,11 +10,13 @@ readme = "README.md"
|
|||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
license-files = ["LICENSE.md"]
|
license-files = ["LICENSE.md"]
|
||||||
authors = [{ name = "Scientific Computing Studio", email = "maintainer@scient.ing" }]
|
authors = [{ name = "Scientific Computing Studio", email = "maintainer@scient.ing" }]
|
||||||
requires-python = ">=3.12"
|
# Python 3.14 is the first with the Unicode 16.0 character data the specification pins (spec/01 §1.4).
|
||||||
|
requires-python = ">=3.14"
|
||||||
classifiers = [
|
classifiers = [
|
||||||
"Development Status :: 3 - Alpha",
|
"Development Status :: 3 - Alpha",
|
||||||
"Intended Audience :: Science/Research",
|
"Intended Audience :: Science/Research",
|
||||||
"Programming Language :: Python :: 3 :: Only",
|
"Programming Language :: Python :: 3 :: Only",
|
||||||
|
"Programming Language :: Python :: 3.14",
|
||||||
"Topic :: Scientific/Engineering",
|
"Topic :: Scientific/Engineering",
|
||||||
]
|
]
|
||||||
# The base package is standard library only. `schema.py` needs jsonschema and
|
# The base package is standard library only. `schema.py` needs jsonschema and
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
in this repository; see tools/README.md.
|
in this repository; see tools/README.md.
|
||||||
|
|
||||||
The modules other programs use (`keys`, `text`, `jcs`, `package`, `db`, `rights`, ...) need only the
|
The modules other programs use (`keys`, `text`, `jcs`, `package`, `db`, `rights`, ...) need only the
|
||||||
standard library and Python 3.12.
|
standard library and Python 3.14, the first with the Unicode 16.0 character data the specification pins.
|
||||||
`schema` needs `paperspec[schema]` and the HKDF and Ed25519 functions of `crypto` need `paperspec[crypto]`;
|
`schema` needs `paperspec[schema]` and the HKDF and Ed25519 functions of `crypto` need `paperspec[crypto]`;
|
||||||
both import their packages on first use.
|
both import their packages on first use.
|
||||||
The schemas, SQL and vectors travel as package data: `importlib.resources.files("paperspec") / "sql"`.
|
The schemas, SQL and vectors travel as package data: `importlib.resources.files("paperspec") / "sql"`.
|
||||||
|
|||||||
+1
-1
@@ -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.
|
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"`).
|
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/`.
|
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.
|
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).
|
Independent implementations follow the [specification](../spec/README.md) and test themselves against the [vectors](../vectors/README.md).
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
Importing this package checks that the tools can run here, and puts `src/` first on the path, so that
|
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.
|
`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
|
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
|
import importlib.util
|
||||||
|
|||||||
Reference in new issue
Block a user