Migrate packaging to pyproject.toml with an SPDX license#55
Merged
Conversation
- Add pyproject.toml: PEP 621 metadata, requires-python >=3.9, the test extra, project URLs, and a dynamic version read from pystrix.VERSION. - PEP 639 SPDX license: license = "LGPL-3.0-or-later" + license-files for COPYING and COPYING.LESSER. Drop the deprecated License :: classifier. - Pin setuptools>=77 in [build-system] (PEP 639 support; supplied by build isolation). - Move the ruff config from ruff.toml into [tool.ruff]. - Remove setup.py, build-release.py, and ruff.toml. Build with `python -m build`. - Update README and AGENTS.md references (and refresh stale AGENTS notes that predated the test suite and linter), and the changelog. Verified: `python -m build` produces sdist + wheel with the SPDX license and bundled license files; `pip install -e '.[test]'` works; ruff and the 37 tests pass. Closes #54
Per maintainer decision: the package metadata names the maintaining organization rather than enumerating individuals (who stay credited via the GitHub contributors graph and README). No emails, so no contributor PII is published. Author remains Neil Tallim.
- Add a `package` CI job that runs `python -m build`, validates metadata with `twine check`, installs the wheel, and imports the package. The packaging migration's main regression surface was previously unguarded in CI (codex finding). - Remove the stale `build-release.py` Fixed changelog entry: it credited a fix to a script this branch deletes, contradicting the migration entry in the same Unreleased block (consistency finding). The dynamic-version reorder suggestion was dropped: codex verified the static AST attr resolution returns the version without importing the package, so no change is needed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Closes #54
Summary
Migrates packaging from
setup.py+ the bespokebuild-release.pyto a standardpyproject.toml(PEP 621), with a PEP 639 SPDX license. The setuptools backend is kept, sopip installand production usage are unchanged — no uv or other tooling is introduced.Changes
pyproject.toml— PEP 621 metadata,requires-python = ">=3.9", thetestoptional-dependencies extra, project URLs, and a dynamic version read frompystrix.VERSION([tool.setuptools.dynamic]).license = "LGPL-3.0-or-later"withlicense-files = ["COPYING", "COPYING.LESSER"]. The deprecatedLicense ::trove classifier is dropped (PEP 639).setuptools>=77pinned in[build-system]for PEP 639 support; build isolation supplies it regardless of the locally installed setuptools.ruff.tomlinto[tool.ruff];ruff.tomlremoved.setup.pyandbuild-release.py. Building is nowpython -m build(sdist + wheel); the bespoke tarball and the already-dead RPM path it served are gone.Attribution
authors = Neil Tallim(the creator, per the README).maintainers = IVR Technology Group— the organization that maintains the package today. Individuals are not enumerated: every contributor stays credited via the GitHub contributors graph and the README, so the field never needs per-contributor updates. No emails are published (no contributor PII), consistent with the project's data-privacy stance.Verification
python -m buildproduces an sdist and wheel; wheel metadata showsLicense-Expression: LGPL-3.0-or-later,License-File: COPYING/COPYING.LESSER, version 1.2.0, and no license classifier.pip install -e '.[test]'works.ruff check .andruff format --check .pass (ruff reads[tool.ruff]from pyproject); 37 tests pass.Follow-up
VERSION, move[Unreleased], tagv1.3.0).🤖 Generated with Claude Code