Skip to content

Standardize CI workflows: tests on pull requests, lint, publish - #44

Merged
pattonw merged 3 commits into
mainfrom
chore/ci-templates
Nov 3, 2026
Merged

pattonw merged 3 commits into
mainfrom
chore/ci-templates

Conversation

@pattonw

@pattonw pattonw commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

Why

Tests only ran on push, so a pull request from a fork never got a test run. The ruff job linted funlib/persistence, a path that has not existed since the move to src/: ruff warned and exited 0, so only tests/ has been linted. There was no format check, actions tracked @master/@main, and publishing went through pip + setup-python@v3.

What changes

  • tests.yaml: triggers on pull_request, pushes to main, and manual dispatch. Matrix is the requires-python floor and newest (3.11, 3.14) × highest/lowest-direct. setup-uv@v6 pins the interpreter, uv sync installs, pytest reports coverage (pytest-cov is added to the dev group). The PostgreSQL service is unchanged.
  • lint.yaml replaces ruff.yaml and ty.yaml: ruff check . (whole tree), ruff format --check . (new) and ty check src tests, each on pull requests.
  • publish.yaml: uv build instead of pip + setup-python@v3; runs on v* tags only. The PYPI_API_TOKEN secret is still used; id-token: write is in place for trusted publishing once a publisher is registered on PyPI.
  • README badges follow the renamed workflows.

A second commit is mechanical: ruff format . (five files) and one import-order fix in explore.ipynb, with the pinned ruff 0.17.3, so the new checks start green.

Verified locally

  • ruff check . and ruff format --check .: clean.
  • ty check src tests: 10 diagnostics, the same 10 as on main (the ty job is red on main already; unchanged here).
  • pytest tests on 3.11 / lowest-direct and 3.14 / highest: 134 passed, 29 skipped each (the PostgreSQL tests need the service and are skipped here).

🤖 Generated with Claude Code

pattonw and others added 3 commits November 3, 2026 15:11
- tests.yaml: run on pull requests as well as pushes to main (and on
  dispatch); matrix is the requires-python floor and newest (3.11,
  3.14) x highest/lowest-direct; setup-uv@v6 pins the interpreter;
  coverage reported (pytest-cov added to the dev group); checkout and
  setup-uv no longer track @master/@main.
- lint.yaml replaces ruff.yaml and ty.yaml: ruff check on the whole
  tree (the old job linted `funlib/persistence`, a path that has not
  existed since the move to src/, so only tests/ was checked), ruff
  format --check, and ty as separate jobs.
- publish.yaml: `uv build` instead of pip + setup-python@v3; v* tags.
- README badges follow the renamed workflows.

Co-Authored-By: Claude Mythos 5.1 <noreply@anthropic.com>
Mechanical: `ruff format .` (five files) and one import-order fix in
explore.ipynb, with the pinned ruff 0.17.3, so the new lint and format
checks start green. No code changes.

Co-Authored-By: Claude Mythos 5.1 <noreply@anthropic.com>
The lowest pinned versions of some dependencies ship no wheels for the
newest Python and their sdists do not build there, so that matrix cell
cannot install. The floor interpreter still runs lowest-direct.

Co-Authored-By: Claude Mythos 5.1 <noreply@anthropic.com>
@pattonw

pattonw commented Nov 3, 2026

Copy link
Copy Markdown
Contributor Author

Follow-up commit: the first CI run showed that lowest-direct cannot install on the newest interpreter in the matrix (the lowest pinned versions of some dependencies ship no wheels for it and their sdists do not build there). That one cell is now excluded with a comment; the floor interpreter still runs lowest-direct, and the newest runs highest.

@pattonw
pattonw merged commit 877e2db into main Nov 3, 2026
4 of 5 checks passed
@pattonw
pattonw deleted the chore/ci-templates branch November 3, 2026 23:45
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