Migrate to PEP 735 dependency groups #146
Closed
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.
Summary
This PR implements support for PEP 735 dependency groups in the pyos-package-template, addressing issue #143.
Changes Made
1. Updated
template/pyproject.toml.jinja[dependency-groups]whenuse_hatch_envs=True[project.optional-dependencies]for backward compatibility whenuse_hatch_envs=False[dependency-groups]sectiontwineto the dependency-groups build section2. Updated Hatch Environments
features = [...]todependency-groups = [...]builder = trueto the build environment (required for Hatch 1.16+)dependencies = ["twine"]to build environment as a workaround for dependency-groups not being installed in builder environments (see Builder and non-dev environments ignore dependency groups pypa/hatch#2152)3. Added Tests
test_hatch_deps_groups()to verify dependency-groups are properly configured when using hatch environmentstest_template_suite()to usehatch run build:checkinstead ofhatch build --cleanand explicitly enable hatch environments4. Updated Documentation
CHANGELOG.mdwith comprehensive notes about the migrationuse_hatch_envs=FalseKey Benefits
✅ Standards-compliant: Uses PEP 735 dependency groups instead of tool-specific optional-dependencies
✅ Less tool lock-in: Makes the template less attached to Hatch-specific configuration
✅ Forward-compatible: Leverages the newly released Hatch 1.16 support for dependency groups
✅ Backward-compatible: Maintains optional-dependencies when not using Hatch environments
Testing
test_hatch_deps_groups()that validates the dependency-groups configurationNotes
use_hatch_envs=False, the template continues to use[project.optional-dependencies]for backward compatibilityFixes #143
cc @mathematicalmichael @Midnighter @sneakers-the-rat