feat: implement optional dependencies and modernize packaging (issue #96)#119
feat: implement optional dependencies and modernize packaging (issue #96)#119
Conversation
) - Create pyproject.toml with PEP 517/518 support - Move cloud providers (boto3, google-cloud) to optional extras - Add extras: s3, gcs, cloud, dev - Pin dependency versions for reproducibility - Modernize setup.py to PEP 517 shim - Update requirements.txt with version constraints and installation instructions - Add GitHub Actions workflow for building and publishing to PyPI - All 114 tests pass with new packaging configuration
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #119 +/- ##
=======================================
Coverage 68.70% 68.70%
=======================================
Files 20 20
Lines 1553 1553
Branches 279 279
=======================================
Hits 1067 1067
+ Misses 411 410 -1
- Partials 75 76 +1 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull Request Overview
This PR modernizes the Python packaging configuration by migrating from setup.py to a declarative pyproject.toml configuration (PEP 517/518), implements optional dependencies for cloud storage providers (S3, GCS), and adds a GitHub Actions workflow for automated PyPI publishing.
Key Changes
- Migrated packaging configuration from
setup.pytopyproject.tomlwith modern declarative format - Added optional dependency groups for S3, GCS, cloud providers, and development tools
- Implemented automated PyPI publishing workflow with build artifact management
Reviewed Changes
Copilot reviewed 3 out of 6 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| setup.py | Replaced with minimal backwards-compatibility shim that delegates to pyproject.toml |
| pyproject.toml | New declarative packaging configuration with build system requirements, project metadata, dependencies, and optional dependency groups |
| .github/workflows/publish-pypi.yml | New GitHub Actions workflow for building and publishing packages to PyPI on releases |
| build: | ||
| needs: update-version |
There was a problem hiding this comment.
The 'build' job has an unconditional dependency on 'update-version', but 'update-version' only runs when 'github.event_name == release'. For workflow_dispatch events, the 'build' job will be skipped because its dependency never runs. Either make the 'needs' conditional or ensure 'update-version' runs for both event types.
|
|
||
| steps: | ||
| - uses: actions/checkout@v5 | ||
|
|
There was a problem hiding this comment.
The 'build' job checks out code without specifying a ref, which means it will checkout the default branch state before the version update committed in the 'update-version' job. Add 'ref: main' to ensure the updated pyproject.toml is used for the build.
| with: | |
| ref: main |
Description
Implements optional dependencies and modernizes packaging for the project.
Closes #96
Changes
Type of change