or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

commands.mdconfiguration.mdgit-operations.mdindex.mdplugins.mdversion-management.md
tile.json

tessl/pypi-commitizen

Python commitizen client tool for standardized commit conventions and automated version management

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
pypipkg:pypi/commitizen@3.31.x

To install, run

npx @tessl/cli install tessl/pypi-commitizen@3.31.0

index.mddocs/

Commitizen

A comprehensive Python release management tool designed for development teams that enforces standardized commit message conventions and automates version management workflows. Commitizen provides an interactive command-line interface for creating conventional commits, automatically bumps semantic versions based on commit history, generates and maintains changelogs, and supports extensive customization through plugins and configuration files.

Package Information

  • Package Name: commitizen
  • Language: Python
  • Installation: pip install commitizen or pipx install commitizen
  • Python Support: 3.8+
  • Git Support: 1.8.5.2+

Core Imports

# Main plugin base class
from commitizen import BaseCommitizen

# Configuration management
from commitizen.config import BaseConfig, read_cfg

# Factory for creating plugin instances
from commitizen.factory import commiter_factory

# Command classes for programmatic usage
from commitizen.commands import Bump, Check, Commit, Changelog

# Built-in plugins
from commitizen.cz.conventional_commits import ConventionalCommitsCz
from commitizen.cz.jira import JiraSmartCz
from commitizen.cz.customize import CustomizeCommitsCz

# Git operations
from commitizen import git

# Version schemes
from commitizen.version_schemes import get_version_scheme, Pep440, SemVer

# Output and logging utilities
from commitizen.out import write, line, error, success, info, diagnostic, warn

# Hook system
from commitizen.hooks import run

# Command execution
from commitizen.cmd import run, Command

# Exception handling
from commitizen.exceptions import CommitizenException, NoCommitizenFoundException

Basic Usage

CLI Installation and Setup

# Recommended global installation
pipx install commitizen

# Initialize configuration in existing project
cz init

# Basic workflow - interactive commit
git add .
cz commit

# Automatically bump version and generate changelog
cz bump --changelog

# Push changes with tags
git push && git push --tags

Programmatic Usage

from commitizen.config import BaseConfig
from commitizen.factory import commiter_factory
from commitizen.commands import bump

# Create configuration
config = BaseConfig()
config.settings.update({
    "name": "cz_conventional_commits",
    "version": "1.0.0"
})

# Get commitizen plugin instance  
cz = commiter_factory(config)

# Use plugin methods
questions = cz.questions()
example = cz.example()
message = cz.message({"type": "feat", "subject": "add new feature"})

# Programmatic version bumping
result = bump.bump(
    config=config,
    increment="MINOR", 
    changelog=True,
    dry_run=False
)

Architecture

Commitizen follows a plugin-based architecture that enables customization and extensibility:

  • Core CLI: Command-line interface built with decli and argparse
  • Plugin System: Extensible commit message rules via entry points
  • Configuration Layer: Multi-format config support (TOML, JSON, YAML)
  • Version Providers: Support for different project types (Poetry, npm, Cargo, etc.)
  • Changelog Formats: Multiple output formats (Markdown, AsciiDoc, Textile, reStructuredText)
  • Git Integration: Comprehensive git operations with EOL handling and signing support
  • Hook System: Pre and post-bump hooks for workflow integration

Capabilities

CLI Commands

Comprehensive command-line interface for interactive commit creation, version management, changelog generation, and project configuration.

def main() -> None
class Bump: ...
class Check: ...  
class Commit: ...
class Changelog: ...
class Init: ...
class Version: ...
class Info: ...
class Example: ...
class Schema: ...
class ListCz: ...

CLI Commands

Configuration Management

Multi-format configuration system supporting TOML, JSON, and YAML formats with comprehensive settings for version management, changelog generation, and plugin configuration.

def read_cfg(project_root: str) -> BaseConfig
class BaseConfig: ...
class TomlConfig(BaseConfig): ...
class JsonConfig(BaseConfig): ...  
class YAMLConfig(BaseConfig): ...

Configuration

Plugin Development

Extensible plugin system for creating custom commit message rules, version providers, changelog formats, and version schemes.

class BaseCommitizen: ...
def discover_plugins() -> None
def commiter_factory(config: BaseConfig) -> BaseCommitizen

# Plugin registry
registry: dict[str, type[BaseCommitizen]]

Plugin Development

Version Management

Comprehensive version management with support for semantic versioning, PEP 440, automatic file updates, and multiple version schemes.

def find_increment(commits: list, regex: Pattern, incremental_rev: str) -> str
def update_version_in_files(current_version: str, new_version: str, files: list) -> None
def normalize_tag(tag: str, tag_format: str) -> str

class VersionProtocol: ...
class Pep440(BaseVersion): ...
class SemVer(BaseVersion): ...
def get_version_scheme(name: str) -> VersionProtocol

Version Management

Git Operations

Extensive git integration including commit creation, tag management, branch operations, repository status checking, and smart file handling with EOL support.

def commit(message: str, args: str = "") -> Command
def tag(name: str, message: str = "", signed: bool = False) -> Command
def add(pathspecs: list[str]) -> Command
def get_commits(start: str = "", end: str = "", rev: str = "", paths: list[str] = []) -> list[GitCommit]
def get_tags() -> list[GitTag]
def is_git_project() -> bool
def find_git_project_root() -> Path

Git Operations

Types

from typing import TypedDict, Protocol, NamedTuple
from enum import Enum

# Configuration types
class CzSettings(TypedDict):
    bump_message: str
    bump_pattern: str
    bump_map: dict[str, str]
    change_type_map: dict[str, str]
    change_type_order: list[str]
    commit_parser: str
    message_template: str
    questions: list[dict]
    schema: str
    schema_pattern: str
    example: str
    info: str

class Settings(TypedDict):
    name: str
    version: str
    version_files: list[str]
    tag_format: str
    update_changelog_on_bump: bool
    changelog_file: str
    # ... additional settings

# Git types
class GitCommit(NamedTuple):
    rev: str
    title: str
    body: str
    author: str
    author_email: str
    date: str

class GitTag(NamedTuple):
    name: str
    rev: str
    date: str

# Version types
class VersionProtocol(Protocol):
    def parse(self, version: str) -> Any: ...
    def bump(self, version: Any, increment: str) -> Any: ...
    def serialize(self, version: Any) -> str: ...

# Exit codes
class ExitCode(Enum):
    SUCCESS = 0
    EXPECTED_EXIT = 21
    # ... 40+ additional exit codes

# Command execution
class Command(NamedTuple):
    return_code: int
    out: str
    err: str

# Output functions
def write(message: str, quiet: bool = False) -> None: ...
def line(message: str, quiet: bool = False) -> None: ...
def error(message: str, quiet: bool = False) -> None: ...
def success(message: str, quiet: bool = False) -> None: ...
def info(message: str, quiet: bool = False) -> None: ...
def diagnostic(message: str, quiet: bool = False) -> None: ...
def warn(message: str, quiet: bool = False) -> None: ...

# Hook execution
def run() -> None: ...  # Execute pre/post hooks with environment setup