Summary
Completes the modernization and test-hardening track.
This PR updates the project to a current, deterministic development workflow and prepares the repository for future feature work.
Highlights
- Move packaging metadata to PEP 621 in
pyproject.toml - Remove legacy
setup.py,setup.cfg,poetry.lock,tox.ini - Adopt
uvanduv.lock - Add
scripts/checkas the canonical validation entrypoint - Support and validate Python 3.10 through 3.14
- Add Ruff lint/format checks,
tytype checking, coverage reporting, and package build verification - Add Forgejo/Codeberg workflow for self-hosted validation
- Make default tests hermetic; live API checks are opt-in only
- Expand API/error behavior test coverage
- Modernize low-risk internals while preserving public API behavior
- Refresh README, examples, changelog, and release checklist
- Mark modernization plan complete and unblock small follow-up feature slices
Validation
Final local validation passed with:
scripts/check
Covered:
- Ruff lint
- Ruff format check
- ty type check
- coverage run
- test matrix on Python 3.10, 3.11, 3.12, 3.13, 3.14
- package build verification
Notes
Release publication is intentionally deferred to a follow-up after this PR is merged and hosted Forgejo/Codeberg validation is green on dev and main.
Deferred follow-up work remains for targeted parser/error-response/status-parser behavior improvements.
## Summary
Completes the modernization and test-hardening track.
This PR updates the project to a current, deterministic development workflow and prepares the repository for future feature work.
## Highlights
- Move packaging metadata to PEP 621 in `pyproject.toml`
- Remove legacy `setup.py`, `setup.cfg`, `poetry.lock`, `tox.ini`
- Adopt `uv` and `uv.lock`
- Add `scripts/check` as the canonical validation entrypoint
- Support and validate Python 3.10 through 3.14
- Add Ruff lint/format checks, `ty` type checking, coverage reporting, and package build verification
- Add Forgejo/Codeberg workflow for self-hosted validation
- Make default tests hermetic; live API checks are opt-in only
- Expand API/error behavior test coverage
- Modernize low-risk internals while preserving public API behavior
- Refresh README, examples, changelog, and release checklist
- Mark modernization plan complete and unblock small follow-up feature slices
## Validation
Final local validation passed with:
```bash
scripts/check
```
Covered:
- Ruff lint
- Ruff format check
- ty type check
- coverage run
- test matrix on Python 3.10, 3.11, 3.12, 3.13, 3.14
- package build verification
Notes
Release publication is intentionally deferred to a follow-up after this PR is merged and hosted Forgejo/Codeberg validation is green on dev and main.
Deferred follow-up work remains for targeted parser/error-response/status-parser behavior improvements.