Automatic semantic versioning for python projects
Clone or download
semantic-release and relekang 3.11.2
Latest commit 762fbcf Jun 10, 2018



Automatic semantic versioning for python projects. This is an python implementation of the semantic-release for js by Stephan Bönnemann. If you find this topic interesting you should check out his talk from JSConf Budapest.

Build status PyPI version


pip install python-semantic-release


The general idea is to have some sort of tag in commit messages that indicates certain types of changes. If a commit message lack a tag it is ignored. Running release can be run locally or from a CI service.

Usage: semantic-release [OPTIONS] COMMAND

  --major  Force major version.
  --minor  Force minor version.
  --patch  Force patch version.
  --noop   No-operations mode, finds the new version number without changing it.
  --post   If used with the changelog command, the changelog will be posted to the release api.
  --retry  Retry the same release, do not bump.
  --help   Show this message and exit.


  • version - Create a new release. Will change the version, commit it and tag it.
  • publish - Runs version before pushing to git and uploading to pypi.
  • changelog - Generates the changelog for the next release.

Running commands from

Add the following to your and you will be able to run python <command> as you would semantic-release <command>.

    from semantic_release import setup_hook
except ImportError:


Configuration belongs in semantic_release section of the setup.cfg file in your project. Details about configuration options can be found in the configuration documentation.