recce
recce copied to clipboard
refactor: migrate from setuptools to uv for packaging
PR checklist
- [x] Ensure you have added or ran the appropriate tests for your PR.
- [x] DCO signed
What type of PR is this?
Refactor / Infrastructure
What this PR does / why we need it:
Migrate from setuptools to uv for packaging:
- Replace setup.py and setup_cloud.py with pyproject.toml using hatchling build backend
- Add uv workspace support for both recce and recce-cloud packages
- Add uv.lock for reproducible builds
- Update all CI workflows to use astral-sh/setup-uv action
- Update Makefile to use uv commands (uv sync, uv run, uv build)
- Add tox-uv for faster multi-version testing
- Pin sqlglot to >=27.29.0,<28.0 for test compatibility
- Add dbt-duckdb to dev dependencies for testing
- Track recce_cloud/VERSION in git and auto-bump both packages together
- Resolve merge conflicts with main branch
Benefits:
- 10-100x faster dependency resolution
- Lock file for reproducible environments
- Modern pyproject.toml standard compliance
- Both recce and recce-cloud can be built/published independently
- Automatic version alignment between recce and recce-cloud packages
Which issue(s) this PR fixes:
N/A - Infrastructure improvement
Special notes for your reviewer:
Developer workflow changes:
# Install dev environment
uv sync --all-extras
# Run tests
uv run pytest tests
# or
make test
# Build packages
uv build # recce
uv build --package recce-cloud # recce-cloud
# Run recce
uv run recce server
Version management changes:
- Both recce/VERSION and recce_cloud/VERSION are now tracked in git
- Auto-bump workflow (.github/workflows/bump.yaml) updates both VERSION files together
- No manual version syncing needed - they stay aligned automatically
Does this PR introduce a user-facing change?:
NONE
🤖 Generated with Claude Code
Codecov Report
:white_check_mark: All modified and coverable lines are covered by tests. see 2 files with indirect coverage changes
:rocket: New features to boost your workflow:
- :snowflake: Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
- :package: JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.