22
33import os
44import re
5- import typing as t
5+ import sys
66from collections import OrderedDict
77from textwrap import dedent
8-
9- try :
10- from jinja2 import Template
11- except ImportError :
12- from string import Template
8+ from typing import TYPE_CHECKING , Any , ClassVar
139
1410from commitizen import defaults , git
1511from commitizen .cz .base import BaseCommitizen
12+ from jinja2 import Template
1613
1714from cz_version_bump .git import repo_name_from_git_remote
1815from cz_version_bump .thanks import Thanker
1916
20- if t .TYPE_CHECKING :
17+ if sys .version_info >= (3 , 12 ):
18+ from typing import override
19+ else :
20+ from typing_extensions import override
21+
22+ if TYPE_CHECKING :
2123 from commitizen .defaults import Questions
2224
2325issue_id_pattern = re .compile (r"\s+\(#(\d+)\)$" )
2426
2527
2628class MeltanoCommitizen (BaseCommitizen ):
2729 bump_pattern = r"^(feat|fix|refactor|perf|break|docs|ci|chore|style|revert|test|build|packaging)(\(.+\))?(!)?" # noqa: E501
28- bump_map : t . ClassVar = OrderedDict (
30+ bump_map : ClassVar = OrderedDict (
2931 (
3032 (
3133 r"^break" ,
@@ -75,13 +77,16 @@ class MeltanoCommitizen(BaseCommitizen):
7577 "packaging" : "📦 Packaging changes" ,
7678 }
7779
78- def __init__ (self : MeltanoCommitizen , * args : t .Any , ** kwargs : t .Any ) -> None :
80+ @override
81+ def __init__ (self : MeltanoCommitizen , * args : Any , ** kwargs : Any ) -> None :
7982 super ().__init__ (* args , ** kwargs )
8083 self .repo_name = os .environ .get (
81- "GITHUB_REPOSITORY" , repo_name_from_git_remote ()
84+ "GITHUB_REPOSITORY" ,
85+ repo_name_from_git_remote (),
8286 )
8387 self .thanker = Thanker (self .repo_name )
8488
89+ @override
8590 def questions (self : MeltanoCommitizen ) -> Questions :
8691 """Questions regarding the commit message."""
8792 return [
@@ -124,16 +129,16 @@ def questions(self: MeltanoCommitizen) -> Questions:
124129 },
125130 ]
126131
132+ @override
127133 def message (self : MeltanoCommitizen , answers : dict ) -> str :
128134 """Format the git message."""
129135 message_template = Template ("{{change_type}}: {{message}}" )
130- if getattr (Template , "substitute" , None ):
131- return message_template .substitute (** answers )
132136 return message_template .render (** answers )
133137
138+ @override
134139 def changelog_message_builder_hook (
135140 self : MeltanoCommitizen ,
136- parsed_message : dict [str , str ],
141+ parsed_message : dict [str , Any ],
137142 commit : git .GitCommit ,
138143 ) -> dict :
139144 """Alter each git log line of the changelog.
@@ -176,6 +181,7 @@ def changelog_message_builder_hook(
176181
177182 return parsed_message
178183
184+ @override
179185 def changelog_hook (
180186 self : MeltanoCommitizen ,
181187 full_changelog : str ,
@@ -190,3 +196,11 @@ def changelog_hook(
190196 The full changelog.
191197 """
192198 return full_changelog
199+
200+ @override
201+ def example (self : MeltanoCommitizen ) -> str :
202+ return "feat: Add a new feature"
203+
204+ @override
205+ def info (self : MeltanoCommitizen ) -> str :
206+ return "Commitizen customized for Meltano projects (https://commitizen-tools.github.io/commitizen/customization)"
0 commit comments