Skip to content

feat(settings): add YAML-driven configuration to reduce plugin needs#935

Draft
EmilienM wants to merge 2 commits intopython-wheel-build:mainfrom
EmilienM:issue_928_
Draft

feat(settings): add YAML-driven configuration to reduce plugin needs#935
EmilienM wants to merge 2 commits intopython-wheel-build:mainfrom
EmilienM:issue_928_

Conversation

@EmilienM
Copy link
Contributor

Summary

Implements 6 features from issue #928 to allow more package configurations to be expressed declaratively in YAML settings files, reducing the need for custom override plugins (~30 plugins can be eliminated, ~12 more simplified).

  • Auto ensure_pkg_info (Proposal 2.2): prepare_new_source() now automatically creates PKG-INFO when missing
  • Version template in env (Proposal 2.4): ${version}, ${version_base_version}, ${version_post} template variables in env: settings
  • YAML dependency removal (Proposal 2.3): remove_install_requires and update_install_requires in project_override
  • Create missing files (Proposal 2.6): create_files setting to create files in source tree during preparation
  • YAML resolver config (Proposal 2.1): provider: github/gitlab with organization, repo, project_path, server_url, tag_matcher in resolver_dist
  • Rust vendor ordering (Proposal 3.1): vendor_rust_before_patch setting to control vendoring order

All changes are backward compatible. Plugin hooks continue to take priority over YAML settings.

Test plan

  • All 383 existing + new unit tests pass
  • mypy type checking passes (0 issues)
  • ruff lint checking passes (0 issues)
  • Verify new settings work with real package builds (e2e)
  • Verify existing YAML configurations still work unchanged

🤖 Generated with Claude Code

Closes: #928

Implements 6 features from issue python-wheel-build#928 to allow more package
configurations to be expressed declaratively in YAML settings files,
reducing the need for custom override plugins.

New capabilities:
- Auto ensure_pkg_info in prepare_new_source (Proposal 2.2)
- ${version}, ${version_base_version}, ${version_post} template
  variables in env settings (Proposal 2.4)
- remove_install_requires and update_install_requires in
  project_override for [project] dependencies (Proposal 2.3)
- create_files setting to create missing source files (Proposal 2.6)
- resolver_dist provider/organization/repo/tag_matcher for
  YAML-driven GitHub/GitLab tag resolution (Proposal 2.1)
- vendor_rust_before_patch ordering control (Proposal 3.1)

All changes are backward compatible with existing YAML configurations
and plugin hooks continue to take priority over YAML settings.

Co-Authored-By: Claude <claude@anthropic.com>
Closes: python-wheel-build#928
@EmilienM EmilienM requested a review from a team as a code owner February 27, 2026 03:04
@EmilienM
Copy link
Contributor Author

This is an experimentation - do not review it please.

@mergify mergify bot added the ci label Feb 27, 2026
@EmilienM EmilienM marked this pull request as draft February 27, 2026 03:08
Additional tests for resolver configuration, source preparation,
pyproject override, and create_files functionality covering edge
cases and integration scenarios.

Co-Authored-By: Claude <claude@anthropic.com>
Signed-off-by: Emilien Macchi <emacchi@redhat.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Reduce downstream plugin needs through YAML-driven configuration enhancements

1 participant