chore: migrate dependency management to uv#507
Open
rpocase wants to merge 3 commits into
Open
Conversation
4b68ff4 to
6850dfe
Compare
There was a problem hiding this comment.
Pull request overview
Migrates the project from legacy requirements/setup.cfg packaging to a pyproject.toml-driven build (Hatchling) and dependency management aligned with uv, while updating type hints/signatures to satisfy a newer mypy.
Changes:
- Replaced
setup.py/setup.cfg+requirements*.txtwith PEP 621 metadata and extras inpyproject.toml(Hatchling backend). - Updated tox, Read the Docs config, and a CI workflow step to install dependencies via extras/uv instead of requirements files.
- Adjusted several cloud/instance method signatures to accept
**kwargsand tightened example type annotations for mypy.
Reviewed changes
Copilot reviewed 18 out of 19 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| tox.ini | Switches tox deps to install via project extras rather than requirements files; updates lint/typecheck targets. |
| test-requirements.txt | Removes legacy test requirements list (moved into pyproject.toml extras). |
| setup.py | Removes legacy setuptools entry point. |
| setup.cfg | Removes legacy package metadata and dependency declarations. |
| requirements.txt | Removes legacy “-e .” requirements indirection. |
| pyproject.toml | Adds PEP 621 project metadata, dependencies, optional extras, and tool configs; switches build backend to Hatchling. |
| pycloudlib/openstack/instance.py | Updates method signature to accept **kwargs for interface compatibility. |
| pycloudlib/oci/cloud.py | Adds **kwargs to selected APIs for signature compatibility. |
| pycloudlib/lxd/instance.py | Adds **kwargs to lifecycle methods; threads get_pty through _run_command. |
| pycloudlib/lxd/cloud.py | Adds **kwargs to snapshot signature for interface compatibility. |
| pycloudlib/gce/instance.py | Adds **kwargs to wait_for_delete signature for interface compatibility. |
| pycloudlib/ec2/cloud.py | Adds **kwargs to snapshot signature for interface compatibility. |
| examples/oracle/oracle-cluster-demo.py | Uses Optional[str] for nullable parameters to satisfy mypy. |
| examples/ibm_classic.py | Uses Optional[str] for nullable parameters to satisfy mypy. |
| docs/requirements.txt | Removes legacy docs requirements list (moved into pyproject.toml extras). |
| ci-requirements.txt | Removes legacy CI requirements list. |
| .readthedocs.yaml | Switches RTD install method to uv and uses the docs extra. |
| .github/workflows/version_check.yaml | Installs uv and uses it to install packaging for version checking. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
5eaab84 to
cef1487
Compare
Collaborator
Author
|
@blackboxsw if you have a moment |
the current setup is unexpected given the test runner is using uv. this migrates the setup to uv. mypy and some typed dependencies needed to be upgrade due to messaging around "typed-ast" not being installed with seemingly no workaround.
- Add [tool.uv] python-preference = "only-system" to pyproject.toml so uv never downloads a managed Python and always uses the system interpreter - Add tox-uv to tox requires so tox uses uv as its venv/install backend - Replace apt tox installs with astral-sh/setup-uv in all workflows - Collapse separate py310/py312 CI jobs into a single matrix job that selects the Ubuntu runner (22.04/24.04) based on the target Python version, making the Python→runner mapping explicit and easy to extend - Simplify version_check workflow: drop actions/setup-python and pip installs in favour of uv run --with packaging
migrating to mypy 2.x resulted in a larger amount of type failures being detected. this resolves all outstanding type hinting failures
cef1487 to
5260eb3
Compare
Collaborator
Author
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR Checklist
To ease the process of reviewing your PR, do make sure to complete the following checklist before submitting a pull
request.
tox -e formatlocally to automatically format my code before submittingtoxlocally ensuring that it passes before submittingOtherwise, please leave the PR as a draft to indicate that it is still a work in progress.
Description
this change migrates dependencies to be properly managed by uv instead of specified in requirements files,
upgrades mypy, and fixes newly found type hinting issues. this is in preparation for upgrading
openstack-sdk as netiface is orphaned and should be migrated to netiface2
Additional Context and Relevant Issues
this was triggered in part because running mypy was failing because of a missing typed-ast package.
at the same time, i've upgraded mypy and resolved all new type hinting issues.
Test Steps
N/A? i think integration tests should be run, but i don't have a proper setup to facilitate this