-
Notifications
You must be signed in to change notification settings - Fork 8
feat: replace poetry with uv and drop support for python 3.8/3.9 #22
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: master
Are you sure you want to change the base?
Conversation
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 modernizes the project's tooling by replacing Poetry with uv for dependency management and build processes, while also dropping support for Python 3.8/3.9 and adding Python 3.13 support. The changes include updating the project configuration, modernizing Python type hints to use PEP 604 syntax (union operator |), removing redundant pytest.mark.anyio decorators in favor of configuration-based auto-detection, and adding an MIT license to the distribution.
Key Changes
- Migration from Poetry to uv for dependency management and building
- Python version support updated to 3.10-3.13 (dropping 3.8 and 3.9)
- Type hints modernized throughout the codebase to use
|syntax instead ofUnion - Test configuration simplified with
anyio_mode = "auto"in pytest config
Reviewed Changes
Copilot reviewed 17 out of 19 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| pyproject.toml | Complete migration from Poetry to uv format with project metadata, dependency groups, and build configuration |
| poetry.lock | Removed Poetry lock file entirely |
| tests/*.py | Modernized type hints and removed explicit @pytest.mark.anyio decorators |
| taskiq_nats/*.py | Updated type hints to use modern union syntax and adjusted type ignore comments |
| .github/workflows/*.yaml | Updated CI/CD workflows to use uv instead of Poetry |
| .pre-commit-config.yaml | Updated pre-commit hooks to use uv for running tools |
| docker-compose.yml | Removed deprecated version field |
| README.md | Fixed typos ("betwee" → "between") |
| LICENSE | Added MIT license file |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| ] | ||
|
|
||
| [build-system] | ||
| requires = ["uv_build>=0.9.9,<0.10.0"] |
Copilot
AI
Nov 17, 2025
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.
The version constraint for uv_build specifies >=0.9.9,<0.10.0, which is a very narrow range. This may cause build failures if version 0.10.0 is released. Consider using a more flexible version constraint like >=0.9.9,<1.0.0 or just >=0.9.9 to allow for minor version updates.
| requires = ["uv_build>=0.9.9,<0.10.0"] | |
| requires = ["uv_build>=0.9.9,<1.0.0"] |
| enable-cache: false | ||
| python-version: "3.12" | ||
| version: "latest" | ||
| - run: uv version "${GITHUB_REF_NAME}" |
Copilot
AI
Nov 17, 2025
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.
The command uv version "${GITHUB_REF_NAME}" appears to be incorrect. The uv CLI doesn't have a version subcommand that sets the project version. You likely need a different approach to set the version in the project, such as modifying the pyproject.toml file directly or using a tool that supports version management. Consider using sed or a similar tool to update the version in pyproject.toml.
| - run: uv version "${GITHUB_REF_NAME}" | |
| - run: sed -i 's/^version = .*/version = "'"${GITHUB_REF_NAME}"'"/' pyproject.toml |
| async def test_push_based_broker_success( # (too many await) | ||
| nats_urls: List[str], | ||
| nats_urls: list[str], |
Copilot
AI
Nov 17, 2025
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.
The @pytest.mark.anyio decorator was removed from this test function, but the decorator is still present on line 53 (@pytest.mark.anyio()). This creates an inconsistency - either all test functions should use the decorator, or none should (relying on the anyio_mode = "auto" config). Please remove the decorator from line 53 for consistency.
Features:
Mics:
pytest.mark.anyiomarks in favor ofanyio_mode=autoconfig option.