Repository navigation
Run coverage from pytest addopts; add Sphinx docs - #47
Merged
Merged
Conversation
…command `[tool.pytest.ini_options] addopts` now carries `--cov --cov-report=term-missing`, so the README's `uv run pytest` prints the coverage table and enforces `[tool.coverage.report] fail_under` the same way CI does. The CI step drops the flags it no longer needs. A single-file run can skip the floor with `--no-cov`. Co-Authored-By: Claude Mythos 5.1 <noreply@anthropic.com>
docs/ builds with sphinx, autodoc, napoleon, autodoc-typehints, autodoc_pydantic and myst on the pydata theme (the layout the e11lib.ml docs use), from a `docs` dependency group. The index includes the README. Two hand-written pages: arrays and metadata (the five metadata fields and their defaults, how a MetaDataFormat maps them onto attributes, and the four config file locations with their precedence, from read_config), and graph databases (attribute types, Vec, and the u-endpoint rule that decides which edges a ROI reads and writes). The API page is generated from the docstrings; three malformed `class:` roles in array.py become :class:. The docs workflow builds with -W on push to main and deploys to GitHub Pages; README and [project.urls] link the site. Co-Authored-By: Claude Mythos 5.1 <noreply@anthropic.com>
The tests job times its own `uv run pytest`, measures the cold import of the package's headline modules (benchmarks/run.py), and uploads the two numbers as an artifact from one matrix cell. The benchmark workflow runs when a tests run on main completes, downloads that artifact, creates the gh-pages branch if it is missing, and publishes with github-action-benchmark to gh-pages:dev/bench, with a comparison table in the job summary and a commit comment when a metric gets 1.5x worse. The docs gain a Benchmarks page that charts every metric from that data, one line per metric with the commit on hover and click; the docs workflow now runs after each benchmark run and copies dev/bench from gh-pages into the deployed site, so the charts carry the newest point and the action's own dashboard keeps its URL. Nothing runs the test suite twice. Co-Authored-By: Claude Mythos 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
uv run pytestnow measures coverage[tool.pytest.ini_options] addoptscarries--cov --cov-report=term-missing, so the README'suv run pytestprints the coverage table and enforces the committedfail_underfloor exactly as CI does. The CI step drops the flags it no longer needs. A single file can be run without the floor:testpaths = ["tests"]replaces thetestsargument on the command line.Sphinx docs
docs/builds with sphinx, autodoc, napoleon, autodoc-typehints, autodoc_pydantic and myst on the pydata theme, from adocsdependency group. The index includes the README. Two hand-written pages: Arrays and metadata (the five metadata fields and their defaults, how aMetaDataFormatmaps them onto attributes, and the four config file locations with their precedence) and Graph databases (attribute types,Vec, and the rule that an edge belongs to the ROI of itsuendpoint on read and write). The API page is generated from the docstrings; three malformed`class:Roi`roles inarray.pybecome:class:`Roi`. Thedocsworkflow builds with-Won push tomainand deploys to GitHub Pages; the README and[project.urls]link the site, which goes live with the first run onmain. Ruff now excludes*.md, since ruff 0.17 formats code blocks inside Markdown.Verified locally:
uv run pytestpasses the floor,uv run --group docs sphinx-build -W docs/source docs/build/htmlsucceeds, ruff and ty clean.Import time and test duration, tracked per commit
The
testsjob times its ownuv run pytestand measures the cold import offunlib.persistence(benchmarks/run.py), and uploads the two numbers as an artifact from the floor-interpreter, highest-resolution cell. A newbenchmarkworkflow runs when a tests run onmaincompletes, downloads that artifact, creates thegh-pagesbranch if it is missing, and publishes with github-action-benchmark togh-pages:dev/bench, with a comparison table in the job summary and a commit comment when a metric gets 1.5x worse. The docs gain a Benchmarks page that charts every metric from that data; the docs workflow now runs after each benchmark run (instead of on push) and copiesdev/benchfromgh-pagesinto the deployed site, so the charts carry the newest point and the action's own dashboard stays reachable under the docs site. Nothing runs the test suite twice.The same setup runs end to end in pattonw/prototype-lib.
🤖 Generated with Claude Code