recce icon indicating copy to clipboard operation
recce copied to clipboard

refactor: migrate from setuptools to uv for packaging

Open even-wei opened this issue 2 months ago • 1 comments

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

even-wei avatar Nov 18 '25 02:11 even-wei

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.

codecov[bot] avatar Nov 20 '25 03:11 codecov[bot]