dulwich.contrib.release_robot module

Determine last version string from tags.

Alternate to Versioneer using Dulwich to sort tags by time from newest to oldest.

Copy the following into the package __init__.py module:

from dulwich.contrib.release_robot import get_current_version
__version__ = get_current_version()

This example assumes the tags have a leading “v” like “v0.3”, and that the .git folder is in a project folder that contains the package folder.


* project
* .git
+-* package
  * __init__.py  <-- put __version__ here
dulwich.contrib.release_robot.get_current_version(projdir='.', pattern='[ a-zA-Z_\\-]*([\\d\\.]+[\\-\\w\\.]*)', logger=None)

Return the most recent tag, using an options regular expression pattern.

The default pattern will strip any characters preceding the first semantic version. EG: “Release-0.2.1-rc.1” will be come “0.2.1-rc.1”. If no match is found, then the most recent tag is return without modification.

  • projdir – path to .git

  • pattern – regular expression pattern with group that matches version

  • logger – a Python logging instance to capture exception


tag matching first group in regular expression pattern


Get list of tags in order from newest to oldest and their datetimes.


projdir – path to .git


list of tags sorted by commit time from newest to oldest

Each tag in the list contains the tag name, commit time, commit id, author and any tag meta. If a tag isn’t annotated, then its tag meta is None. Otherwise the tag meta is a tuple containing the tag time, tag id and tag name. Time is in UTC.