Modernize tooling: Switch to ty and add local CI testing#8
Merged
Conversation
Adopts Astral's new ty type checker to modernize the development tooling and align with the Ruff ecosystem for faster, more integrated type checking. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Modernizes dependency installation to use uv sync which reads directly from pyproject.toml and uv.lock, eliminating the need for intermediate requirements.txt files in the setup flow. This approach preserves environment markers for conditional dependencies and provides more accurate dependency resolution. Key changes: - Makefile: setup target now uses 'uv sync --all-extras' instead of pip sync - GitHub Actions: simplified dependency installation workflow - Dockerfile: uses 'uv sync --system --all-extras' with uv.lock for reproducible builds The compile-deps target remains available for cases requiring requirements.txt files. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Implements local execution of GitHub Actions workflows using act, reducing feedback time from minutes to seconds. This allows developers to test workflows locally before pushing to GitHub, saving CI/CD minutes and enabling faster iteration. Key additions: - .actrc: Configuration for act with smart defaults (catthehacker image, amd64 arch) - .github/workflows/ci-debug.yml: Fast debug workflow for iterative development - Makefile targets: - act-install: One-time setup with Homebrew or install script - act-check: Auto-installs act if missing - docker-check: Validates container runtime is running with helpful error messages - ci-list: List available workflows and jobs - ci-local: Run full test workflow locally - ci-local-docs: Run documentation build check - ci-debug: Fast iteration with customizable workflow - ci-clean: Clean up act containers and cache - Smart Docker socket detection (Colima/Docker/Podman) - README and CHANGELOG updates with usage instructions - Linux troubleshooting documentation for Docker permissions Benefits: - 5-20 second local feedback vs 2-5 minute GitHub runs - Test workflows before commit/push - Zero GitHub Actions minutes consumption - Debug workflows with full local inspection - Zero-setup experience: just run 'make ci-local' and it handles everything - Clear, actionable error messages when prerequisites missing 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <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.
Changes
This PR modernizes the development tooling with three focused improvements:
1. Type Checking: mypy → ty
Replaces mypy with Astral's ty for faster, more integrated type checking that aligns with the ruff ecosystem.
2. Dependency Management: uv pip sync → uv sync
Streamlines setup by using
uv sync --all-extraswhich reads directly frompyproject.tomlanduv.lock, eliminating intermediate requirements files and preserving environment markers for conditional dependencies.3. Local CI Testing with act
Adds ability to run GitHub Actions workflows locally before pushing:
make ci-localauto-installs everything neededci-local,ci-debug,ci-local-docs,ci-cleanBenefits
Testing
All checks pass locally and in CI: