Skip to content

build: migrate task runner from taskipy to camas#117

Open
JPHutchins wants to merge 3 commits into
mainfrom
feature/taskipy-to-camas
Open

build: migrate task runner from taskipy to camas#117
JPHutchins wants to merge 3 commits into
mainfrom
feature/taskipy-to-camas

Conversation

@JPHutchins

Copy link
Copy Markdown
Collaborator

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:
    • Leaf tasks: format, lint, fix, typecheck, test, test_integration (reachable as camas test-integration via camas's hyphen-folding alias), coverage.
    • check = Parallel(lint, typecheck, test); all = Sequential(format, check).
    • Config(default_task=all, github_task=check) — a bare camas runs all locally and check under GitHub Actions.
    • matrix reads its Python versions from .python-version (SSOT, no duplicated list) and runs camas all per version.
  • CI (test.yaml) — the lint-and-test matrix now runs the github default via a bare uv run --python <v> camas (parallel lint+typecheck+test); the coverage/integration jobs call their named tasks.
  • pre-commit hookuv run camas --under 2s: formatters first, then the read-only checks that fit the budget (slow mypy/pytest pruned).
  • pyproject.toml — drop taskipy; keep camas[mcp,check].
  • .mcp.json (new) — wires the camas MCP server for agents.
  • README + tests/integration/__init__.py — updated to camas commands.

Verification

camas all passes locally (format + parallel lint/typecheck/test, full unit suite). camas check, camas --under 2s (selects format + ruff + pydoclint, prunes mypy/pytest), the test-integration hyphen alias, and the github_task dispatch (bare camascheck under GITHUB_ACTIONS) were all verified.

Note

Dropped the PEP 723 standalone header + run_cli __main__ block from the camas --init scaffold: camas is a managed dev dependency invoked via uv run camas, so the standalone path would only duplicate the version pin already in pyproject.toml.

🤖 Generated with Claude Code

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>
Copilot AI review requested due to automatic review settings June 19, 2026 22:21

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

JPHutchins and others added 2 commits June 19, 2026 15:31
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>
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.

2 participants