Skip to content

Commit 272fb80

Browse files
committed
refactor(conventional_commits): use TypedDict for answers
1 parent a3919c9 commit 272fb80

File tree

1 file changed

+22
-14
lines changed

1 file changed

+22
-14
lines changed

commitizen/cz/conventional_commits/conventional_commits.py

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import os
22
import re
3+
from typing import TypedDict
34

45
from commitizen import defaults
56
from commitizen.cz.base import BaseCommitizen
@@ -27,6 +28,15 @@ def parse_subject(text):
2728
return required_validator(text, msg="Subject is required.")
2829

2930

31+
class ConventionalCommitsAnswers(TypedDict):
32+
prefix: str
33+
scope: str
34+
subject: str
35+
body: str
36+
footer: str
37+
is_breaking_change: bool
38+
39+
3040
class ConventionalCommitsCz(BaseCommitizen):
3141
bump_pattern = defaults.BUMP_PATTERN
3242
bump_map = defaults.BUMP_MAP
@@ -147,24 +157,22 @@ def questions(self) -> Questions:
147157
},
148158
]
149159

150-
def message(self, answers: dict) -> str:
151-
prefix = answers["prefix"]
152-
scope = answers["scope"]
153-
subject = answers["subject"]
154-
body = answers["body"]
155-
footer = answers["footer"]
156-
is_breaking_change = answers["is_breaking_change"]
160+
def message(self, answers: ConventionalCommitsAnswers) -> str: # type: ignore[override]
161+
parts: list[str] = [answers["prefix"]]
157162

158-
if scope:
159-
scope = f"({scope})"
160-
if body:
161-
body = f"\n\n{body}"
162-
if is_breaking_change:
163+
if scope := answers["scope"]:
164+
parts.append(f"({scope})")
165+
parts.append(f": {answers['subject']}")
166+
if body := answers["body"]:
167+
parts.append(f"\n\n{body}")
168+
169+
footer = answers["footer"]
170+
if answers["is_breaking_change"]:
163171
footer = f"BREAKING CHANGE: {footer}"
164172
if footer:
165-
footer = f"\n\n{footer}"
173+
parts.append(f"\n\n{footer}")
166174

167-
return f"{prefix}{scope}: {subject}{body}{footer}"
175+
return "".join(parts)
168176

169177
def example(self) -> str:
170178
return (

0 commit comments

Comments
 (0)