Skip to content

build: drop the License :: classifier now that license is a PEP 639 expression - #17

Merged
tn-pisama merged 1 commit into
mainfrom
fix/pep639-license-classifier
Jul 30, 2026
Merged

build: drop the License :: classifier now that license is a PEP 639 expression#17
tn-pisama merged 1 commit into
mainfrom
fix/pep639-license-classifier

Conversation

@tn-pisama

Copy link
Copy Markdown
Contributor

Summary

pyproject.toml carried both a PEP 639 license = "MIT" expression and the
legacy "License :: OSI Approved :: MIT License" classifier. PEP 639 does
not permit both together, and setuptools>=78 raises InvalidConfigError
when they coexist. hatchling (this repo's build backend) tolerates it
today, which is why builds have not failed yet, but it's latent breakage
behind a future setuptools bump -- and inconsistent with the sibling
packages (pisama-core, pisama-detectors, pisama-agent-sdk,
pisama-verifier-gym) already fixed for the same defect.

  • Remove only the stale License :: classifier line; license = "MIT" is untouched.
  • Patch bump 0.6.1 -> 0.6.2 (pyproject.toml + the source-checkout __version__ fallback).
  • CHANGELOG entry under [0.6.2].

Test plan

  • ruff check src tests -- pass
  • mypy src/pisama -- pass, 65 files
  • pytest -q --cov=pisama --cov-fail-under=60 -- 196 passed, 70.51% coverage
  • python -m build && python -m twine check dist/* -- PASS on both sdist and wheel
  • Extracted the built wheel's METADATA: License-Expression: MIT present, License-File: LICENSE present, no Classifier: License :: line
  • CI green on this PR (polling)

🤖 Generated with Claude Code

…xpression

pyproject.toml carries both `license = "MIT"` (PEP 639 expression) and the
legacy `"License :: OSI Approved :: MIT License"` classifier. PEP 639 does
not permit both together, and setuptools>=78 raises InvalidConfigError when
they coexist -- the same defect already fixed on the sibling packages
(pisama-core, pisama-detectors, pisama-agent-sdk, pisama-verifier-gym) in
this same review round.

hatchling tolerates it today, which is why the build did not fail, but it
is latent breakage behind a future setuptools bump.

Verified: ruff, mypy, pytest (196 passed, 70.51% cov) all pass; `python -m
build` + `twine check` PASS on both artifacts; wheel METADATA confirmed
`License-Expression: MIT` present and no `Classifier: License ::` line.

Patch bump to 0.6.2 because the fix only matters once it reaches PyPI.

Co-Authored-By: Claude <noreply@anthropic.com>
@tn-pisama
tn-pisama merged commit ae16cb0 into main Jul 30, 2026
9 checks passed
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