Skip to main content

Python commitizen client tool.

Project description

Python 3 command line utility to standardize commit messages

Conventional Commits PyPI Package latest release Supported versions

About

This is an interactive tool to commit based on some rules (like conventional commits).

It comes with some defaults commit styles, like jira, conventional commits, etc, and it’s easily extendable.

It’s useful for teams, because it is possible to standardize the commiting style.

Installation

pip install commitizen

Info

This client tool prompts the user with information about the commit.

Based on conventional commits

Example running commitizen

This is an example of how the git messages history would look like:

docs: improved commitizens tab in readme
feat(cz): jira smart commits
refactor(cli): renamed all to ls command
refactor(cz): renamed angular cz to conventional changelog cz
feat: info command for angular
docs(README): added badges
docs(LICENSE): new one
docs(README): added about, installation, creating, etc
chore(bumpversion): configured and added as dev dep
feat(config): new loads from ~/.cz and working project .cz .cz.cfg and setup.cfg

Commitizens

These are the available commiting styles by default:

The installed ones can be checked with:

cz ls

Commiting

Run in your terminal

cz commit

or the shortcut

cz c

Usage

usage: cz [-h] [--debug] [-n NAME] [--version]
        {ls,commit,c,example,info,schema} ...

Commitizen is a cli tool to generate conventional commits.
For more information about the topic go to https://conventionalcommits.org/

optional arguments:
-h, --help            show this help message and exit
--debug               use debug mode
-n NAME, --name NAME  use the given commitizen
--version             get the version of the installed commitizen

commands:
{ls,commit,c,example,info,schema}
    ls                  show available commitizens
    commit (c)          create new commit
    example             show commit example
    info                show information about the cz
    schema              show commit schema

Configuration

You can create in your project folder a file called .cz, .cz.cfg or in your setup.cfg or if you want to configure the global default in your user’s home folder a .cz file with the following information:

[commitizen]
name = cz_conventional_commits

Creating a commiter

Create a file starting with cz_ for example cz_jira.py. This prefix is used to detect the plugin. Same method flask uses

Inherit from BaseCommitizen and you must define questions and message. The others are optionals.

from commitizen import BaseCommitizen

class JiraCz(BaseCommitizen):

    def questions(self):
        """Questions regarding the commit message.

        Must have 'whaaaaat' format.
        More info: https://github.com/finklabs/whaaaaat/

        :rtype: list
        """
        questions = [
            {
                'type': 'input',
                'name': 'title',
                'message': 'Commit title'
            },
            {
                'type': 'input',
                'name': 'issue',
                'message': 'Jira Issue number:'
            },
        ]
        return questions

    def message(self, answers):
        """Generate the message with the given answers.

        :type answers: dict
        :rtype: string
        """
        return '{0} (#{1})'.format(answers['title'], answers['issue'])

    def example(self):
        """Provide an example to help understand the style (OPTIONAL)
        Used by cz example.

        :rtype: string
        """
        return 'Problem with user (#321)'

    def schema(self):
        """Show the schema used (OPTIONAL)

        :rtype: string
        """
        return '<title> (<issue>)'

    def info(self):
        """Explanation of the commit rules. (OPTIONAL)
        :rtype: string
        """
        return 'We use this because is useful'


discover_this = JiraCz  # used by the plugin system

The next file required is setup.py modified from flask version

from distutils.core import setup

setup(
    name='JiraCommitizen',
    version='0.1.0',
    py_modules=['cz_jira'],
    license='MIT',
    long_description='this is a long description',
    install_requires=['commitizen']
)

So at the end we would have

.
├── cz_jira.py
└── setup.py

And that’s it, you can install it without uploading to pypi by simply doing pip install . If you feel like it should be part of the repo, create a PR.

Python 2 support

Support for the old version of python (python 2) is limited, there are some things that won’t work, like aliases of commands, so, to commit run:

cz commit

Todo

  • [ ] auto changelog integration

  • [ ] tests

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

commitizen-0.9.9.tar.gz (11.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

commitizen-0.9.9-py2.py3-none-any.whl (12.0 kB view details)

Uploaded Python 2Python 3

File details

Details for the file commitizen-0.9.9.tar.gz.

File metadata

  • Download URL: commitizen-0.9.9.tar.gz
  • Upload date:
  • Size: 11.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.19.4 CPython/3.6.5

File hashes

Hashes for commitizen-0.9.9.tar.gz
Algorithm Hash digest
SHA256 f9a00debb1cf2dbe7e21435544fd7c8652c22d34d40b8926ecec4e022763d609
MD5 f02bbf8cd204791833dbc050977763b9
BLAKE2b-256 6da81bdae17a4f614f476f0e3b6cc729521c78ae97570a5b7854589f1ba11cd7

See more details on using hashes here.

File details

Details for the file commitizen-0.9.9-py2.py3-none-any.whl.

File metadata

  • Download URL: commitizen-0.9.9-py2.py3-none-any.whl
  • Upload date:
  • Size: 12.0 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.19.4 CPython/3.6.5

File hashes

Hashes for commitizen-0.9.9-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 b8b0be00ca280a4b31a691fd6fb67e3e04d5b78aa6c8632cd0bc62be89571b7d
MD5 1ffeb1e18c9a824f321fecf795bec264
BLAKE2b-256 77879e9159acdc9c46805ccd96b6a06570b2eadfc2031fb844ff13ed9bfbb999

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page