Track support for Python 3.15 in bed-reader.
Scope:
- Update Python classifiers and any version constraints.
- Add Python 3.15 to CI and wheel/artifact verification.
- Exercise both the Python API and Rust-backed paths on Python 3.15.
Version policy:
- Target Python 3.12-3.15 for the release adding Python 3.15.
- Drop Python 3.10, whose end of life is expected around October 2026, and Python 3.11 in line with Scientific Python SPEC 0's three-year support window.
- Revisit the floor annually: add the newest Python and drop versions outside that three-year window.
- Reassess dependency minimums and remove compatibility constraints that exist only for Python 3.10 or 3.11.
Release workflow modernization:
- Bring publication workflow up to the current FaST-LMM/PySnpTools standard.
- Add a tag-triggered release workflow that verifies the tag matches the package version.
- Run the Rust test/clippy checks and Python test suite against the tagged source.
- Build the maturin wheels and sdist, then clean-install and smoke-test the exact artifacts before publication.
- Validate the wheel rebuilt from the sdist and fail on mismatches.
- Publish to PyPI only after artifact tests pass, using Trusted Publishing and attestations.
- Pin action/tool versions consistently with the modern workflows.
- Decide separately whether the corresponding Rust crate should be published from the same release and add an explicit crates.io validation/publication step if so.
- Resolve and enforce the Python/Rust package version relationship before release.
Track support for Python 3.15 in bed-reader.
Scope:
Version policy:
Release workflow modernization: