Files
paperspec/pixi.toml
T
alexmandClaude 2b4467d315 feat: install tools/oracle as the paperspec package
Other repositories (paperstack, then paperpack) import the reference
implementation instead of reimplementing the specification; scienting-core
will take the role later behind the same vectors.

- pyproject.toml: distribution and import name `paperspec`, version 0.1.0,
  Python >= 3.12, no base dependencies; `tools/oracle` is the package, and
  `schemas/`, `sql/` and `vectors/` ship as the data subpackages
  `paperspec.schemas`, `paperspec.sql` and `paperspec.vectors`. Extras
  `schema`, `crypto` and `tools`.
- tools/oracle/__init__.py: the Python 3.14 and cryptography/jsonschema gate
  runs only when imported as `tools.oracle` by the repository's own tools.
- crypto.py imports `cryptography` on first use of HKDF and Ed25519, with an
  ImportError naming `paperspec[crypto]`; schema.py imports `jsonschema` and
  `referencing` in `Store.validator` and `Store.registry`. package.py, db.py
  and receipts.py then import on a bare interpreter.
- pixi.toml installs the package editable (pixi.lock re-solved; no conda pin
  changed), so the tools and the package resolve to the same code.
- tools/README.md names the library surface and the extras; CHANGELOG.md
  records the packaging change under 0.1.0, since check.py requires the
  changelog's first heading to equal the format version.

No computed value, vector, fixture, schema or SQL file changed.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-15 07:53:27 -04:00

39 lines
1.9 KiB
TOML

[workspace]
name = "paperspec"
version = "0.1.0"
description = "The scienting data formats: specification, JSON Schemas, SQL, test vectors and fixtures"
authors = ["Scientific Computing Studio <maintainer@scient.ing>"]
license = "CC-BY-4.0 AND CC0-1.0 AND Apache-2.0"
license-file = "LICENSE.md"
readme = "README.md"
homepage = "https://paperspec.scient.ing"
repository = "https://git.scient.ing/infra/paperspec"
documentation = "https://paperspec.scient.ing/docs/"
channels = ["conda-forge"]
platforms = ["linux-64", "linux-aarch64", "osx-64", "osx-arm64"]
requires-pixi = ">=0.40"
[dependencies]
python = ">=3.14,<3.15"
jsonschema = ">=4.26.0"
markdownlint-cli2 = ">=0.23.3"
nodejs = ">=22"
cryptography = ">=46"
# The tools import the oracle as `tools.oracle`; other programs install it as `paperspec`. The editable
# self-install makes both resolve to the same code.
[pypi-dependencies]
paperspec = { path = ".", editable = true }
[tasks]
check = { cmd = "python tools/check.py", depends-on = [
"lint",
], description = "Check schemas, records, packages, vectors, a byte-for-byte rebuild, the SQL round trip, prose and links" }
quick = { cmd = "python tools/check.py --quick", description = "Check everything except the byte-for-byte rebuild" }
build = { cmd = "python tools/build.py", description = "Rebuild fixtures/ and vectors/ from fixtures/src/ and the oracle" }
lint = { cmd = "markdownlint-cli2", description = "Lint every Markdown file with markdownlint" }
load = { cmd = "python tools/load.py", description = "Load packages into SQLite: pixi run load --sqlite lab.db PACKAGE..." }
validate = { cmd = "python tools/validate.py", description = "Validate packages, or run proposed corrections through the gate" }
stress = { cmd = "python tools/stress.py", description = "Stress the oracle with random inputs: pixi run stress -- --seed N" }
site = { cmd = "python tools/site.py", description = "Build the website into _site/" }