Commitizen is command-line utility that helps you create your own set of rules for generating consistent commits, bumping your project's version, or generating a change log automatically.
PyData is an umbrella of projects from the scientific Python community, including NumPy, SciPy and Pandas. Some of these projects are using a commit message convention derived from the NumPy development guide, which will be referred to as the PyData convention.
Keep a Changelog is a specification for writing structured and human-readable changelogs. To my knowledge, there is currently no tooling available to turn PyData-style commit messages into a structured changelog automatically.
This plugin extends Commitizen to:
- Understand or generate commit messages following the PyData convention.
- Bump semantic versioning of a project based on those commit messages.
- Generate a structured changelog automatically following the KaC spec.
Table of Contents
pip install cz-pydata
pipx install commitizen
pipx inject commitizen cz-pydata
# .pre-commit-config.yaml
repos:
- repo: https://github.com/commitizen-tools/commitizen
rev: master # TODO: Replace by latest version
hooks:
- id: commitizen
additional_dependencies: [ cz-pydata ]
To use this plugin with the Commitizen CLI:
cz --name cz_pydata <command>
You can configure your project to use these commit rules
by adding the following settings in your pyproject.toml
:
[tool.commitizen]
name = "cz_pydata"
In addition, you may want to customize the commit message on version bumps
to support the REL
change type marker using:
bump_message = "REL: Release version $new_version"
Other configuration options are explained in the Commitizen documentation. Feel free to have a look at this project Commitizen configuration and adapt it to your needs.
cz-pydata
is distributed under the terms of the MIT license.