Skip to content

Changelog

The authoritative changelog is CHANGELOG.md in the repository, auto-generated by python-semantic-release on every merge to main.

How releases work

Every commit to main is scanned by python-semantic-release. The commit message determines whether a release fires and how the version bumps:

Commit prefix Version bump Triggers a release?
fix: patch yes
feat: minor yes
feat!: or BREAKING CHANGE: footer major yes
chore:, docs:, style:, refactor:, test:, ci:, build: none no

A release that fires:

  1. Bumps the version in pyproject.toml.
  2. Appends a section to CHANGELOG.md.
  3. Creates a Git tag and a GitHub Release.
  4. Builds and uploads wheels to PyPI via OIDC (no PyPI tokens stored).

Versioning policy

The schema document at the repo root is versioned with the package:

  • Breaking changes to the schema bump the major version.
  • Additive-only changes bump the minor version.

See Schema contract for the full policy.

Migrating between versions

For breaking changes, the CHANGELOG entry includes a "Breaking changes" subsection that lists the deltas with before/after examples. Pin your dependency to a major version (gpmap-v2 >= 1.0, < 2.0) if you want to opt out of automatic upgrades to a future v2.

v1 to v2

Migrating from the legacy harmslab/gpmap package is documented in Schema contract: migration from v1. The headlines:

  • New distribution name gpmap-v2 on PyPI. Import path is still gpmap.
  • encoding_table.genotype_index is renamed to site_index; old name still readable with a DeprecationWarning.
  • read_dataframe is renamed to from_dataframe.
  • binary_packed (uint8 2D) is exposed alongside the string-form binary.
  • JSON files require schema_version; legacy files read with a warning.
  • Several v1 bugs fixed (upper_transform/lower_transform, stats.unbiased_var, simulate.random_mutation_set, MultiPeakMountFujiSimulation retry cap).