{"id":16943975,"url":"https://github.com/jeremyagray/pccc","last_synced_at":"2025-03-22T12:33:06.782Z","repository":{"id":57451269,"uuid":"325638712","full_name":"jeremyagray/pccc","owner":"jeremyagray","description":"Python Conventional Commit Checker","archived":false,"fork":false,"pushed_at":"2023-02-22T02:55:41.000Z","size":274,"stargazers_count":9,"open_issues_count":12,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-10-14T21:15:51.753Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://www.grayfarms.org/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jeremyagray.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-12-30T20:08:39.000Z","updated_at":"2024-06-05T15:02:48.000Z","dependencies_parsed_at":"2022-09-26T17:31:31.806Z","dependency_job_id":null,"html_url":"https://github.com/jeremyagray/pccc","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeremyagray%2Fpccc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeremyagray%2Fpccc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeremyagray%2Fpccc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeremyagray%2Fpccc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jeremyagray","download_url":"https://codeload.github.com/jeremyagray/pccc/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221829651,"owners_count":16887653,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-13T21:15:48.420Z","updated_at":"2024-10-28T12:54:13.348Z","avatar_url":"https://github.com/jeremyagray.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"======\npccc\n======\n\nThe Python Conventional Commit Checker.\n\n.. image:: https://badge.fury.io/py/pccc.svg\n   :target: https://badge.fury.io/py/pccc\n   :alt: PyPI Version\n.. image:: https://readthedocs.org/projects/pccc/badge/?version=latest\n   :target: https://pccc.readthedocs.io/en/latest/?badge=latest\n   :alt: Documentation Status\n\nDescription\n===========\n\npccc is a PyParsing based grammar and script for parsing and verifying\na commit message is a conventional commit.  The default grammar\nfollows the `specification\n\u003chttps://www.conventionalcommits.org/en/v1.0.0/#specification\u003e`_, but\nallows for the definition of types in addition to ``feat`` and ``fix``\nand for the definition of project specific scopes and footers in\ncompliance with the specification.  The maximum line lengths of the\ncommit header and commit body and spelling can also be checked.\n\nCurrently, the script interface will load configuration options and a\ncommit message and attempt to parse it.  If there are no parse\nexceptions, it will return 0, otherwise 1.  This interface should be\nusable at the git ``commit-msg`` hook stage now.  It can also be\nconfigured to ignore certain automatically generated commits (from\n``git pull`` for instance) if it is not desirable or possible to\ngenerate those commits as conventional commits (preferable).\n\nParsing Grammar\n===============\n\nGithub Closes Issue Syntax\n\n* KEYWORD = '(close[ds]?|fix(?:es|ed)?|resolve[ds]?)'\n* OWNER = '^[a-zA-Z0-9](?:[a-zA-Z0-9]|-(?=[a-zA-Z0-9])){0,38}$'\n* REPOSITORY = '^[a-zA-Z0-9](?:[a-zA-Z0-9]|-(?=[a-zA-Z0-9])){0,38}$'\n* ISSUE-NUMBER = '#\\d+'\n* Single issue in same repository:  KEYWORD #ISSUE-NUMBER\n* Single issue in different repository:  KEYWORD OWNER/REPOSITORY ISSUE-NUMBER\n* Multiple issues: use full syntax for each issue\n\nThe parser in ``pccc`` requires separating multiple issues on the ``Github-issues`` line with \", \".\n\nSee:\n\n#. https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue/\n#. https://github.com/shinn/github-username-regex/\n\nInstallation\n============\n\nInstall pccc with::\n\n  pip install pccc\n  pip freeze \u003e requirements.txt\n\nor add as a poetry dev-dependency.\n\nIf you desire a package locally built with poetry, download the\nsource, change the appropriate lines in ``pyproject.toml``, and\nrebuild.\n\nTo use as a git ``commit-msg`` hook, copy the script ``pccc`` to\n``.git/hooks/commit-msg`` and set the file as executable or integrate\nthe script or module into your existing ``commit-msg`` hook.  ``pccc``\nrelies on ``git`` setting the current working directory of the script\nto the root of the repository (where ``pyproject.toml`` or\n``package.json`` typically lives).  If this is not the repository\ndefault, pass the configuration file path as an argument or symlink\nfrom the current working directory to an appropriate configuration\nfile.\n\nUsage\n=====\n\nConsole::\n\n  pccc COMMIT_MSG\n  cat COMMIT_MSG | pccc\n\nIn Python::\n\n  \u003e\u003e\u003e import pccc\n  \u003e\u003e\u003e ccr = pccc.ConventionalCommitRunner()\n  \u003e\u003e\u003e ccr.options.load()\n  \u003e\u003e\u003e ccr.raw = \"some commit message\"\n  \u003e\u003e\u003e ccr.clean()\n  \u003e\u003e\u003e ccr.parse()\n  \u003e\u003e\u003e if ccr.exc == None:\n  ...     print(ccr)\n\nSee the source and `documentation\n\u003chttps://pccc.readthedocs.io/en/latest/\u003e`_ for more information.\n\nConfiguration\n=============\n\nSee ``pccc.toml`` for an example ``[tool.pccc]`` section that may be\ncopied into a ``pyproject.toml`` file.  The same entries may be used\nin a ``pccc`` entry in ``package.json`` for JavaScript/TypeScript\nprojects.\n\nCopyright and License\n=====================\n\nSPDX-License-Identifier: `GPL-3.0-or-later\n\u003chttps://spdx.org/licenses/GPL-3.0-or-later.html\u003e`_\n\npccc, the Python Conventional Commit Checker.\nCopyright (C) 2020-2021 `Jeremy A Gray \u003cjeremy.a.gray@gmail.com\u003e`_.\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the `GNU General Public License\n\u003chttps://www.gnu.org/licenses/gpl-3.0.html\u003e`_ as published by the Free\nSoftware Foundation, either version 3 of the License, or (at your\noption) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\nGeneral Public License for more details.\n\nYou should have received a copy of the `GNU General Public License\n\u003chttps://www.gnu.org/licenses/gpl-3.0.html\u003e`_ along with this program.\nIf not, see https://www.gnu.org/licenses/.\n\nAuthor\n======\n\n`Jeremy A Gray \u003cjeremy.a.gray@gmail.com\u003e`_\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeremyagray%2Fpccc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjeremyagray%2Fpccc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeremyagray%2Fpccc/lists"}