Files
graphify/RELEASING.md
safishamsiandClaude Opus 4.8 0115e43122 docs: align #3845 contributor guide with maintainer policy
Follow-up edits on #3845 to match the settled maintainer decisions:
- CODE_OF_CONDUCT.md: set the enforcement/reporting contact to
  safi@graphify.com (was an unspecified 'email the maintainer if known').
- README team-graph section: add the machine-local never-commit list
  (.graphify_root, .graphify_python, .graphify_analysis.json, the AST
  cache, needs_update) and the re-extract-to-update note. manifest.json
  stays committable since #3781 made its keys portable.
- Add RELEASING.md (maintainer-facing): version bump + changelog +
  uv.lock, test on 3.10/3.13, push v8, gh release create -> PyPI via
  trusted publishing (no twine/token), verify with uvx --refresh.
- CONTRIBUTING Further Reading: drop the paid Gumroad link, point at
  RELEASING.md instead.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-26 13:57:39 +01:00

1.8 KiB

Releasing graphify

Maintainer-facing release process. Contributors do not need this; see CONTRIBUTING.md for how to propose changes.

graphify publishes to PyPI (package name graphifyy) automatically through GitHub trusted publishing. There is no manual twine upload and no API token to manage.

Steps

  1. Bump the version. Edit version in pyproject.toml.
  2. Update the changelog. Add a dated section for the new version at the top of CHANGELOG.md, crediting each landed PR and its author.
  3. Refresh the lock. Run uv lock so uv.lock records the new version (and any dependency changes).
  4. Test on both supported interpreters. Run the full suite on Python 3.10 and 3.13:
    uv run pytest
    # and against a 3.13 environment, e.g.
    uv run --python 3.13 pytest
    
  5. Commit and push v8. Commit the version, changelog, and lock together, then git push origin v8.
  6. Cut the GitHub release. Tag the release off v8:
    gh release create vX.Y.Z --repo Graphify-Labs/graphify --target v8 \
      --title "vX.Y.Z" --notes-file <notes>
    
    Publishing the release fires publish.yml on the release-published event, which builds the wheel/sdist and uploads to PyPI via trusted publishing. Do not run twine or pass a token.
  7. Verify the install once PyPI has the new version (the JSON API updates before the install index; use --refresh):
    uvx --refresh --from graphifyy==X.Y.Z graphify --version
    

Version numbering

Keep public versions contiguous. If a number was bumped locally but never published to PyPI, reuse that number for the next release rather than leaving a gap.

Supported versions

Security fixes target only the latest released 0.9.x. See SECURITY.md.