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).

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 (gpgraph-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/gpgraph package is documented in Graph model: migration from v1. The headlines:

  • New distribution name gpgraph-v2 on PyPI. Import path is still gpgraph.
  • Construction goes through GenotypePhenotypeGraph.from_gpm(gpm, ...) (no constructor argument).
  • Node attribute fitnesses is renamed to phenotypes to match gpmap-v2.
  • __repr__ is silent (v1 rendered a matplotlib figure as a side effect).
  • Matplotlib is an optional extra (gpgraph-v2[plot]).
  • gpgraph.neighbor_functions is renamed to gpgraph.neighbors. Pairwise get_neighbors returns np.ndarray[int64] of shape (E, 2) instead of a list of tuples.
  • Python 3.11+.