Skip to content

Conversation

@dguido
Copy link
Member

@dguido dguido commented Nov 28, 2025

Summary

  • Replace setup.py with pyproject.toml as single source of truth
  • Use hatchling as build backend (simpler than setuptools)
  • Add PEP 735 dependency-groups for dev dependencies
  • Add uv.lock for reproducible builds

Changes

File Change
pyproject.toml Full package config, deps, entry points, tool settings
setup.py Deleted (migrated to pyproject.toml)
Makefile Updated commands with uv support
.gitignore Updated patterns
uv.lock Lockfile for reproducible builds

Installation

# Traditional pip (still works)
pip install -e ".[dev]"

# Modern uv (10-100x faster)
pip install uv
uv sync --group dev

Why hatchling?

  • Simpler configuration than setuptools
  • Native pyproject.toml support
  • No setup.py/setup.cfg needed
  • Fast builds

Testing

  • pip install -e . works
  • uv sync works
  • ✅ All 14 console scripts available
  • uv build creates valid wheel

Part of

This is PR 1 of 4 splitting up #2768 (modernize-linting-and-config) into reviewable chunks.

🤖 Generated with Claude Code

- Replace setup.py with pyproject.toml as single source of truth
- Use hatchling as build backend (simpler than setuptools)
- Add PEP 735 dependency-groups for dev dependencies
- Update Makefile with modern commands (uv support)
- Add uv.lock for reproducible builds
- Update .gitignore patterns

The package can now be installed with:
  pip install -e ".[dev]"    # traditional
  uv sync --group dev        # modern (10-100x faster)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
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