Skip to content

fix: declare the Apache-2.0 license in package metadata - #954

Open
sangkyoonnam wants to merge 1 commit into
apache:mainfrom
sangkyoonnam:fix/901-license-metadata
Open

sangkyoonnam wants to merge 1 commit into
apache:mainfrom
sangkyoonnam:fix/901-license-metadata

Conversation

@sangkyoonnam

Copy link
Copy Markdown

The wheel's METADATA has no license declaration today, which is item 3 of #901. This adds license = "Apache-2.0", so the wheel and sdist now carry License-Expression: Apache-2.0.

Changes

  • pyproject.toml: add license = "Apache-2.0" next to the existing license-files.
  • Raise the build requirement to flit_core >=3.11,<4. With 3.9 or 3.10 the build fails on the new field, and without it those versions also ignore license-files (a 3.10.1 build on main ships LICENSE, LICENSE-sdist and LICENSE-wheel and leaves out NOTICE and DISCLAIMER).

How I tested this

  • uv build --sdist --wheel: METADATA 2.4 with License-Expression: Apache-2.0 and License-File entries for DISCLAIMER, LICENSE-wheel and NOTICE. A wheel rebuilt from the extracted sdist, as sdist-wheel-equivalence does, has the same entries.
  • twine check passes for both artifacts, and scripts/verify_apache_artifacts.py artifacts passes on the wheel.
  • Builds pinned to flit_core 3.11.0 and 3.12.0 succeed; 3.9.0 and 3.10.1 fail.
  • pre-commit run --files pyproject.toml passes.

Notes

Release Validation installs flit without a version pin; that doesn't establish which backend built past releases. apache_release.py runs flit build, which uses the installed backend without resolving [build-system].requires, so voters on flit older than 3.11 need pip install --upgrade flit.

Other items from #901:

  • 2 (sdist side) and 4: since Create sdist license #899 the release helper installs LICENSE-sdist as the release sdist's LICENSE (a plain uv build doesn't). The wheel still ships licenses/LICENSE-wheel, and verify_apache_artifacts.py requires that name.
  • 5: license-files points at LICENSE-wheel, and sdist-wheel-equivalence builds the wheel from the sdist, so dropping it from the sdist would break that job unless the wheel's license file comes from somewhere else.
  • 1: 0.43.0.incubating isn't a valid PEP 440 version, so that exact filename won't work. A wheel build tag could carry it while keeping version 0.43.0, e.g. apache_burr-0.43.0-1incubating-py3-none-any.whl. Build tags must start with a digit and change which wheel pip prefers among otherwise equal ones; flit doesn't produce them today, and I haven't checked PyPI acceptance.

This PR only covers item 3. Items 2 (wheel side) and 5 need a decision on how the wheel gets its license file, and item 1 a naming decision. Happy to follow up on whichever direction you prefer.

I wrote this with Claude Code and reviewed and ran it myself.

Checklist

  • PR has an informative and human-readable title (this will be pulled into the release notes)
  • Changes are limited to a single goal (no scope creep)
  • Code passed the pre-commit check & code is left cleaner/nicer than when first encountered.
  • Any change in functionality is tested
  • New functions are documented (with a description, list of inputs, and expected output)
  • Placeholder code is flagged / future TODOs are captured in comments
  • Project documentation has been updated if adding/changing functionality.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added the area/ci Workflows, build, release scripts label Oct 10, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/ci Workflows, build, release scripts

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant