Skip to main content

Generate changelogs based on tag messages and shortlogs

Project description

Automate releases and changelogs based on commit tags and shortlogs.

MIT Licensed PyPI Release Changelog Documentation Status Code Coverage Build Status Code Style Black

attribution provides a simple tool for automating a basic release workflow for Python projects. At its core, it generates Markdown-formatted changelogs based on the version tags in your repository, and can both fit into existing workflows, or automate the entire release preparation process with a single command.

When generating a changelog, attribution will find all tag names starting with “v” followed by a valid PEP 440 version identifier. It will then use the message from each tag, combined with the “shortlog”, to generate an ordered changelog that includes recognition for all contributers to your project. The output can be saved to your preferred changelog file, or piped to other tools as part of your release workflow:

$ attribution generate
project name


Another release

$ git shortlog -s v0.1...v0.2
    1 Ash
    3 Misty


First release

$ git shortlog -s ...v0.1
    1 Ash

If you prefer and end-to-end solution, attribution can also be used for creating release notes, updating a file with a matching version, and tagging a signed version bump commit containing the final changelog:

$ attribution tag -m "Final release" 1.0
$ head
project name


Final release

$ git shortlog -s v0.2...v1.0
    3 Ash
    2 Brock

attribution is a fully bootstrapped project. The Changelog is generated by attribution, and from version 1.2.0 onward, all releases are created with attribution as well.


attribution requires Python 3.6 or newer. You can install it from PyPI:

$ pip install attribution

attribution should guess reasonable defaults for most common Python projects, but for best results, you should initialize your project configuration:

$ attribution init
Project name [attribution]:
Package namespace [attribution]:
Use file [Y/n]:

This will automatically add the appropriate configuration to your project’s pyproject.toml:

name = "attribution"
package = "attribution"
version_file = true

More details can be found in the User Guide.


attribution is copyright John Reese, and licensed under the MIT license. I am providing code in this repository to you under an open source license. This is my personal repository; the license you receive to my code is from me and not from my employer. See the LICENSE file for details.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for attribution, version 1.4.0
Filename, size File type Python version Upload date Hashes
Filename, size attribution-1.4.0-py3-none-any.whl (14.2 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size attribution-1.4.0.tar.gz (22.5 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page