Python Conventional Commit Checker
Project description
The Python Conventional Commit Checker.
Description
pccc is a PyParsing based grammar and script for parsing and verifying a commit message is a conventional commit. The default grammar follows the specification, but allows for the definition of types in addition to feat and fix and for the definition of project specific scopes and footers in compliance with the specification. The maximum line lengths of the commit header and commit body and spelling can also be checked.
Currently, the script interface will load configuration options and a commit message and attempt to parse it. If there are no parse exceptions, it will return 0, otherwise 1. This interface should be usable at the git commit-msg hook stage now. It can also be configured to ignore certain automatically generated commits (from git pull for instance) if it is not desirable or possible to generate those commits as conventional commits (preferable).
Parsing Grammar
Github Closes Issue Syntax
KEYWORD = ‘(close[ds]?|fix(?:es|ed)?|resolve[ds]?)’
OWNER = ‘^[a-zA-Z0-9](?:[a-zA-Z0-9]|-(?=[a-zA-Z0-9])){0,38}$’
REPOSITORY = ‘^[a-zA-Z0-9](?:[a-zA-Z0-9]|-(?=[a-zA-Z0-9])){0,38}$’
ISSUE-NUMBER = ‘#d+’
Single issue in same repository: KEYWORD #ISSUE-NUMBER
Single issue in different repository: KEYWORD OWNER/REPOSITORY ISSUE-NUMBER
Multiple issues: use full syntax for each issue
The parser in pccc requires separating multiple issues on the Github-issues line with “, “.
See:
Installation
Install pccc with:
pip install pccc pip freeze > requirements.txt
or add as a poetry dev-dependency.
If you desire a package locally built with poetry, download the source, change the appropriate lines in pyproject.toml, and rebuild.
To use as a git commit-msg hook, copy the script pccc to .git/hooks/commit-msg and set the file as executable or integrate the script or module into your existing commit-msg hook. pccc relies on git setting the current working directory of the script to the root of the repository (where pyproject.toml or package.json typically lives). If this is not the repository default, pass the configuration file path as an argument or symlink from the current working directory to an appropriate configuration file.
Usage
Console:
pccc COMMIT_MSG cat COMMIT_MSG | pccc
In Python:
>>> import pccc >>> ccr = pccc.ConventionalCommitRunner() >>> ccr.options.load() >>> ccr.raw = "some commit message" >>> ccr.clean() >>> ccr.parse() >>> if ccr.exc == None: ... print(ccr)
See the source and documentation for more information.
Configuration
See pccc.toml for an example [tool.pccc] section that may be copied into a pyproject.toml file. The same entries may be used in a pccc entry in package.json for JavaScript/TypeScript projects.
Copyright and License
SPDX-License-Identifier: GPL-3.0-or-later
pccc, the Python Conventional Commit Checker. Copyright (C) 2020-2021 Jeremy A Gray.
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.
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
Built Distribution
File details
Details for the file pccc-0.4.14.tar.gz
.
File metadata
- Download URL: pccc-0.4.14.tar.gz
- Upload date:
- Size: 204.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 286cb8880a45ca0db683a22ac103c79f2c66f8f10a14d7d96b8887df4b50201f |
|
MD5 | 5c1cc33c1df7a936e173ed30d2284d1b |
|
BLAKE2b-256 | 213962499556598ff06c163bda898d19a262b7025ec2e851d209f7cb638845e2 |
File details
Details for the file pccc-0.4.14-py3-none-any.whl
.
File metadata
- Download URL: pccc-0.4.14-py3-none-any.whl
- Upload date:
- Size: 30.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7e88ad3a3a5c0a90bb6663a39e7afbeb2a88aa5862b4f3cfd4a15c43c42ac3a5 |
|
MD5 | a950e364ebaa02f4c8cbf3394b3450c2 |
|
BLAKE2b-256 | 1a3b19acc8c940c398334183d0b0024a77dd1944a26e4149b2c06d9df2d3be6b |