zendev-commit
zendev-commit owns commit profiles, Conventional Commits and Gitmoji
validation, the interactive commit flow, and its vendored data. It can be
installed and used without the complete zendev toolkit.
uv add --dev zendev-commit
uvx --from zendev-commit zendev-commit --help
uvx --from zendev-commit zendev-commit-msg --help
zendev-commit-msg validates complete commit messages. zendev-commit
interactively builds a message and invokes git commit.
Python API
from zendev.commit import CommitProfile, validate_commit_message
result = validate_commit_message(
"feat(parser): accept empty input",
profile=CommitProfile.CONVENTIONAL,
)
assert result.valid
Profiles
Configure the default profile in the consuming repository:
[tool.zendev.commit]
profile = "conventional"
The --profile option overrides repository configuration. auto reads the
nearest pyproject.toml and falls back to zendev.
| Profile | Contract |
|---|---|
zendev |
A Gitmoji emoji or shortcode paired with its canonical commit type. |
conventional |
Conventional Commits 1.0.0, including scopes, breaking changes, bodies, and footers. |
gitmoji |
The Gitmoji title shape with Unicode or shortcode intentions and optional scope/body. |
Examples accepted by the default profile:
🎉 init: begin a project
✨ feat: add export
🐛 fix(parser): handle null token
:memo: docs: update README
🚀 deploy: publish the package
Git-generated Merge, Revert, fixup!, squash!, amend!, and reword!
messages are accepted.
Commit hook
With .pre-commit-config.yaml:
repos:
- repo: https://github.com/zendev-lab/zendev
rev: v0.1.0
hooks:
- id: zendev-commit-msg
With prek.toml:
[[repos]]
repo = "https://github.com/zendev-lab/zendev"
rev = "v0.1.0"
hooks = [
{ id = "zendev-commit-msg" },
]
Install the Git hook:
uvx prek install --hook-type commit-msg
An explicit command is also available:
uvx --from zendev-commit zendev-commit-msg --profile conventional .git/COMMIT_EDITMSG
Gitmoji data
The default profile uses the vendored catalog in
src/zendev/data/gitmojis.json and the
reviewable pairing table in
src/zendev/data/emoji-conventions.toml.
Validation is deterministic and does not access the network.
The retained upstream license is in
src/zendev/data/LICENSE.gitmoji.
Maintainers should follow the
vendored-data procedure when
refreshing the catalog.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file zendev_commit-0.2.2-py3-none-any.whl.
File metadata
- Download URL: zendev_commit-0.2.2-py3-none-any.whl
- Upload date:
- Size: 16.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6ff0d58db001232dae3686c46b37a9d1d5f825fb06dc96903b2378a857c4c9a6
|
|
| MD5 |
457444afbe64ac0209e399ac17b7aae8
|
|
| BLAKE2b-256 |
2e25fea533092df7875e7976fbd3d53e7288fd1f00ce3be9b5fac3a731bed419
|
Provenance
The following attestation bundles were made for zendev_commit-0.2.2-py3-none-any.whl:
Publisher:
cd-release.yml on zendev-lab/zendev
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zendev_commit-0.2.2-py3-none-any.whl -
Subject digest:
6ff0d58db001232dae3686c46b37a9d1d5f825fb06dc96903b2378a857c4c9a6 - Sigstore transparency entry: 2685307061
- Sigstore integration time:
-
Permalink:
zendev-lab/zendev@ef6fcd52b3997cc6042a49439035829fe1360aa3 -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/zendev-lab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
cd-release.yml@ef6fcd52b3997cc6042a49439035829fe1360aa3 -
Trigger Event:
push
-
Statement type: