Skip to content

fix(license): declare Apache-2.0 everywhere, matching the LICENSE file - #577

Merged
padak merged 2 commits into
mainfrom
fix/license-apache-2-0
Aug 11, 2026
Merged

fix(license): declare Apache-2.0 everywhere, matching the LICENSE file#577
padak merged 2 commits into
mainfrom
fix/license-apache-2-0

Conversation

@padak

@padak padak commented Aug 11, 2026

Copy link
Copy Markdown
Member

pyproject.toml, build/package/nfpm.yaml, the Homebrew formula, the Claude Code
plugin manifest and the README. So v0.79.0 onwards shipped a wheel telling PyPI
one licence while the LICENSE file inside the same distribution said another,
and the Chocolatey package pointed its licenseUrl at the Apache text under an
MIT declaration.

Nothing caught it because every file was individually valid -- the drift only
exists between them. tests/test_license_consistency.py now pins all five
declaration sites to the LICENSE file, including a catch-all that fails if any
of them says MIT again.

Verified on the real artifact, not just the source: uv build --wheel now
emits License-Expression: Apache-2.0 and License-File: LICENSE.

No code change.


Open in Devin Review

pyproject.toml, build/package/nfpm.yaml, the Homebrew formula, the Claude Code
plugin manifest and the README. So v0.79.0 onwards shipped a wheel telling PyPI
one licence while the LICENSE file inside the same distribution said another,
and the Chocolatey package pointed its licenseUrl at the Apache text under an
MIT declaration.

Nothing caught it because every file was individually valid -- the drift only
exists between them. tests/test_license_consistency.py now pins all five
declaration sites to the LICENSE file, including a catch-all that fails if any
of them says MIT again.

Verified on the real artifact, not just the source: `uv build --wheel` now
emits `License-Expression: Apache-2.0` and `License-File: LICENSE`.

No code change.

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 potential issue.

Open in Devin Review

Comment thread tests/test_license_consistency.py
Devin review of #577. Both turned out to need documentation rather than a fix,
but one needed checking rather than assuming.

WinGet: `Keboola.KeboolaCLI` DOES exist in microsoft/winget-pkgs and declares
'MIT License' -- but it is the legacy Go CLI from keboola/keboola-as-code, a
different product whose own LICENSE is MIT. Our id is `Keboola.KeboolaCLI2`,
which has never been submitted (the winget job has never succeeded). So there
is no kbagent manifest carrying a wrong licence today. The forward risk is
real though: `wingetcreate update` only bumps version and installer URL, so
the FIRST successful submission has to set License: Apache-2.0 itself. Noted
in the workflow step, next to the code someone will edit when they fix it.

Chocolatey: the nuspec has no SPDX field, only `licenseUrl`, which points at
the repository's LICENSE and therefore self-updated when that file changed --
which is why this channel never went stale. Pinned by a test so it keeps
pointing there rather than at some hard-coded licence page.
@padak
padak merged commit 318faa2 into main Aug 11, 2026
4 checks passed
@padak
padak deleted the fix/license-apache-2-0 branch August 11, 2026 23:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant