build: migrate task runner from taskipy to camas#117
Open
JPHutchins wants to merge 3 commits into
Open
Conversation
Replace the [tool.taskipy.tasks] table with a camas tasks.py — the single task definition shared by local dev and CI. - tasks.py: format, lint, fix, typecheck, test, test_integration, coverage, plus check (parallel lint+typecheck+test) and all (format then check). Config makes all the local default and check the github default, so a bare `camas` reproduces CI. The matrix reads its Python versions from .python-version rather than duplicating the list. - CI: the lint-and-test matrix runs the github default via a bare `camas`; the coverage and integration jobs call their named tasks. - pre-commit hook: `camas --under 2s` — formatters first, then the read-only checks that fit the budget (slow mypy/pytest pruned). - Drop the taskipy dependency; add the camas MCP server config (.mcp.json). - Update the README dev docs and the integration package docstring. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
lint and matrix were needlessly Sequential — both are independent, read-only work, so a bare `&&`-style serialization left a free speedup on the table. - lint: Parallel(ruff check, pydoclint) — wall-clock is now max(leaf), not the sum. - matrix: Parallel over .python-version via camas's native matrix axis, running the read-only `camas check` per version (~5x faster than the sequential legs, and no per-version `ruff format` redundancy/race). fix and all stay Sequential: both have a real ordering dependency (fix's two mutating steps; all's format must finish before check reads). Co-Authored-By: Claude Opus 4.8 (1M context) <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.
What
Migrates the project's task runner from taskipy to camas. camas is now the single task definition shared by local development and CI — running a task locally reproduces CI exactly.
Changes
tasks.py(new) — replaces the[tool.taskipy.tasks]table:format,lint,fix,typecheck,test,test_integration(reachable ascamas test-integrationvia camas's hyphen-folding alias),coverage.check=Parallel(lint, typecheck, test);all=Sequential(format, check).Config(default_task=all, github_task=check)— a barecamasrunsalllocally andcheckunder GitHub Actions.matrixreads its Python versions from.python-version(SSOT, no duplicated list) and runscamas allper version.test.yaml) — the lint-and-test matrix now runs the github default via a bareuv run --python <v> camas(parallel lint+typecheck+test); thecoverage/integrationjobs call their named tasks.uv run camas --under 2s: formatters first, then the read-only checks that fit the budget (slowmypy/pytestpruned).pyproject.toml— droptaskipy; keepcamas[mcp,check]..mcp.json(new) — wires the camas MCP server for agents.tests/integration/__init__.py— updated to camas commands.Verification
camas allpasses locally (format + parallel lint/typecheck/test, full unit suite).camas check,camas --under 2s(selects format + ruff + pydoclint, prunes mypy/pytest), thetest-integrationhyphen alias, and thegithub_taskdispatch (barecamas→checkunderGITHUB_ACTIONS) were all verified.Note
Dropped the PEP 723 standalone header +
run_cli__main__block from thecamas --initscaffold: camas is a managed dev dependency invoked viauv run camas, so the standalone path would only duplicate the version pin already inpyproject.toml.🤖 Generated with Claude Code