ogdoad 1.0.0

Clifford algebras (with nilpotents) over the field-like subclasses of combinatorial games: nimbers, surreals, surcomplex.
Documentation
[workspace]
members = ["grundy"]

[package]
name = "ogdoad"
version = "1.0.0"
edition = "2021"
description = "Clifford algebras (with nilpotents) over the field-like subclasses of combinatorial games: nimbers, surreals, surcomplex."
license = "AGPL-3.0-or-later"
authors = ["a9lim <mx@a9l.im>"]
repository = "https://github.com/a9lim/ogdoad"
homepage = "https://github.com/a9lim/ogdoad"
documentation = "https://docs.rs/ogdoad"
readme = "README.md"
keywords = ["clifford-algebra", "surreal-numbers", "nimbers", "quadratic-forms", "game-theory"]
categories = ["mathematics", "science"]
# The published crate is the Rust library artifact. The Python research probes
# (`experiments/`), the LaTeX draft notes (`writeups/`), the repo CI/infra
# (`.github/`), the research/audit ledgers (`docs/` — repo bookkeeping, linked
# from the README via the repository URL), the unpublished grundy language
# crate (`grundy/`, a workspace member cargo would exclude anyway), and the
# Python-distribution side (the regenerable `ogdoad.pyi` stub, `demo.py`,
# `pyproject.toml`, `scripts/` — all built/consumed separately via maturin,
# never from this tarball) are part of the source tree but not the crate a
# `cargo add` consumer needs, so they are kept out of the `.crate`.
exclude = [
    "experiments/",
    "writeups/",
    ".github/",
    "docs/",
    "grundy/",
    "ogdoad.pyi",
    "demo.py",
    "pyproject.toml",
    "scripts/",
]

# docs.rs builds the default, pure-Rust feature set. The `python` feature pulls
# in PyO3's extension-module linkage, which a docs build neither needs nor wants.
[package.metadata.docs.rs]
no-default-features = false

[lib]
name = "ogdoad"
# cdylib for the Python extension module; rlib for `cargo test` and examples.
crate-type = ["cdylib", "rlib"]

[dependencies]
# PyO3 is optional and only pulled in for the Python build. Gating it behind
# the `python` feature keeps `cargo test` pure-Rust (no libpython linkage),
# so the math core stays verifiable without the Python toolchain in the loop.
pyo3 = { version = "0.28", features = ["abi3-py39"], optional = true }

[features]
default = []
python = ["dep:pyo3", "pyo3/extension-module"]

[dev-dependencies]
# Property-based testing of the Scalar ring axioms across every backend.
proptest = "1"