-
Notifications
You must be signed in to change notification settings - Fork 594
[WIP] Migrates from pip to uv and adds dynamic versioning #6156
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
- Updated pyproject.toml with project metadata and dependencies - Modified CI/CD workflows to use uv instead of pip - Updated Dockerfile to install and use uv - Updated all documentation to use uv commands - Added MIGRATION_TO_UV.md guide - Created compile-requirements.sh script for uv - Updated .gitignore to exclude uv.lock This migration provides significant performance improvements while maintaining backward compatibility with existing requirements files.
- Simplified pyproject.toml to avoid conflicts with setup.py - Maintained hybrid approach for complex build system compatibility - Verified full installation and functionality with uv - Added verification script for testing uv setup - Updated migration guide with working configuration All tests pass: ✅ uv pip install -e ".[dev]" works correctly ✅ dispatch CLI command functional ✅ All 28 plugins discovered properly ✅ ~10x faster than pip installation
- spacy==3.8.5 was yanked due to incorrect Python 3.13 support - Updated to spacy==3.8.7 which is the latest stable version - Recompiled requirements-base.txt with uv
🚀 BREAKING CHANGE: Fully migrated from setup.py to pyproject.toml ## What's New ✅ Full modern uv support: uv add, uv remove, uv sync, uv lock ✅ Complete pyproject.toml configuration with all dependencies ✅ Lock file generation with uv.lock for reproducible builds ✅ All 28 plugins and entry points migrated ✅ Faster dependency management (~10x speedup) ## Migration Details - Moved setup.py → setup.py.bak (deprecated) - Added complete [project] table to pyproject.toml - All dependencies now in pyproject.toml instead of requirements files - Plugin entry points fully migrated - Updated verification script for modern workflow ## New Commands Available - uv sync --dev # Install all dependencies - uv add package-name # Add new dependency - uv remove package-name # Remove dependency - uv lock --upgrade # Update lock file ## Backward Compatibility - Legacy 'uv pip install -e .[dev]' still works - All existing functionality preserved - CI/CD workflows updated but compatible This completes the full modernization of Dispatch's Python packaging.
🧹 Major Cleanup: Complete transition to pyproject.toml ## Files Removed ❌ setup.cfg - moved configurations to pyproject.toml ❌ requirements-*.in/txt - dependencies now in pyproject.toml ❌ scripts/compile-requirements.sh - replaced by uv lock ❌ package.json/package-lock.json - accidentally committed files ## Configurations Migrated ✅ Moved pytest config from setup.cfg to pyproject.toml ✅ Moved coverage config from setup.cfg to pyproject.toml ✅ Black config already in pyproject.toml ## Modern Workflow - Dependencies: pyproject.toml (declarative) - Lock file: uv.lock (generated) - Testing: pytest with pyproject.toml config - Coverage: coverage with pyproject.toml config ## Benefits - 🗂️ Single source of truth: pyproject.toml - 🔒 Reproducible builds: uv.lock - 🧹 Cleaner repository: fewer config files - 📈 Modern standard: PEP 518/621 compliant This completes the full migration to modern Python packaging standards.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR migrates the Dispatch project from pip to uv for dependency management and introduces dynamic versioning using versioningit. The migration removes the legacy setup.py build system in favor of a modern pyproject.toml-based configuration with hatchling as the build backend.
- Replaces setup.py with pyproject.toml using hatchling build backend and versioningit for dynamic versioning
- Updates version detection from pkg_resources to importlib.metadata
- Migrates all documentation and CI/CD references from pip to uv commands
Reviewed Changes
Copilot reviewed 17 out of 18 changed files in this pull request and generated 4 comments.
Show a summary per file
File | Description |
---|---|
src/dispatch/init.py | Updates version detection to use importlib.metadata instead of pkg_resources |
setup.py | Removes entire legacy setup.py file with custom build commands |
pyproject.toml | Adds comprehensive project configuration with dependencies, build system, and tooling |
requirements-*.txt/.in | Removes legacy pip-compile requirements files |
scripts/verify-uv-setup.sh | Adds verification script for uv migration |
Documentation files | Updates pip commands to uv equivalents |
CI/CD workflows | Updates GitHub Actions to use uv instead of pip |
Docker configuration | Installs uv and updates pip commands |
No description provided.