Skip to content

Run coverage from pytest addopts; add Sphinx docs - #8

Merged
pattonw merged 4 commits into
mainfrom
chore/best-practices
Nov 5, 2026
Merged

pattonw merged 4 commits into
mainfrom
chore/best-practices

Conversation

@pattonw

@pattonw pattonw commented Nov 5, 2026 •

Copy link
Copy Markdown
Collaborator

uv run pytest now measures coverage

[tool.pytest.ini_options] addopts carries --cov --cov-report=term-missing, so the README's uv run pytest prints the coverage table and enforces the committed fail_under floor exactly as CI does. The CI step drops the flags it no longer needs. A single file can be run without the floor:

uv run pytest --no-cov tests/<file>.py

Sphinx docs

docs/ builds with sphinx, autodoc, napoleon, autodoc-typehints and myst on the pydata theme, from a docs dependency group. The index includes the README. A hand-written page states the rules of Coordinate and Roi: integer arithmetic and division, None as unbounded, half-open intervals, empty ROIs, grow with negative amounts, and the three snap_to_grid modes, with examples taken from the tests. The API page is generated from the docstrings (the Roi class docstring needed one blank line for docutils). The docs workflow builds with -W on push to main and deploys to GitHub Pages; the README and [project.urls] link the site, which goes live with the first run on main.

Verified locally: uv run pytest passes the floor, uv run --group docs sphinx-build -W docs/source docs/build/html succeeds, ruff and ty clean.

Import time and test duration, tracked per commit

The tests job times its own uv run pytest and measures the cold import of funlib.geometry (benchmarks/run.py), and uploads the two numbers as an artifact from the floor-interpreter, highest-resolution cell. A new 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; the docs workflow now runs after each benchmark run (instead of on push) and copies dev/bench from gh-pages into 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

pattonw and others added 4 commits November 4, 2026 17:46
…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 and myst on
the pydata theme (the layout the e11lib.ml docs use), from a `docs`
dependency group. The index includes the README; a hand-written page states
the rules of Coordinate and Roi (integer arithmetic and division, None as
unbounded, half-open intervals, empty ROIs, grow with negative amounts, the
three snap_to_grid modes) with examples taken from the tests; the API page
is generated from the docstrings. The docs workflow builds with -W on push
to main and deploys to GitHub Pages; README and [project.urls] link the
site. The Roi class docstring gains the blank line docutils needed.

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>
@pattonw
pattonw merged commit b0f12ec into main Nov 5, 2026
6 checks passed
@pattonw
pattonw deleted the chore/best-practices branch November 5, 2026 03:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant