Skip to content

Commit 32d7adb

Browse files
committed
refactor(changelog): type untyped arguments
1 parent f0bdd55 commit 32d7adb

File tree

3 files changed

+30
-13
lines changed

3 files changed

+30
-13
lines changed

commitizen/commands/bump.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -342,14 +342,14 @@ def __call__(self) -> None:
342342
"dry_run": dry_run,
343343
}
344344
if self.changelog_to_stdout:
345-
changelog_cmd = Changelog(self.config, {**args, "dry_run": True})
345+
changelog_cmd = Changelog(self.config, {**args, "dry_run": True}) # type: ignore
346346
try:
347347
changelog_cmd()
348348
except DryRunExit:
349349
pass
350350

351351
args["file_name"] = self.file_name
352-
changelog_cmd = Changelog(self.config, args)
352+
changelog_cmd = Changelog(self.config, args) # type: ignore
353353
changelog_cmd()
354354
files.append(changelog_cmd.file_name)
355355

commitizen/commands/changelog.py

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
import os
44
import os.path
5-
from collections.abc import Generator, Iterable, Mapping
5+
from collections.abc import Generator, Iterable
66
from difflib import SequenceMatcher
77
from operator import itemgetter
88
from pathlib import Path
9-
from typing import Any, cast
9+
from typing import Any, TypedDict, cast
1010

1111
from commitizen import changelog, defaults, factory, git, out
1212
from commitizen.changelog_formats import get_changelog_format
@@ -26,10 +26,28 @@
2626
from commitizen.version_schemes import get_version_scheme
2727

2828

29+
class ChangelogArgs(TypedDict, total=False):
30+
change_type_map: dict[str, str]
31+
change_type_order: list[str]
32+
current_version: str
33+
dry_run: bool
34+
file_name: str
35+
incremental: bool
36+
merge_prerelease: bool
37+
rev_range: str
38+
start_rev: str
39+
tag_format: str
40+
unreleased_version: str | None
41+
version_scheme: str
42+
template: str
43+
extras: dict[str, Any]
44+
export_template: str
45+
46+
2947
class Changelog:
3048
"""Generate a changelog based on the commit history."""
3149

32-
def __init__(self, config: BaseConfig, args: Mapping[str, Any]) -> None:
50+
def __init__(self, config: BaseConfig, args: ChangelogArgs) -> None:
3351
if not git.is_git_project():
3452
raise NotAGitProjectError()
3553

@@ -59,17 +77,17 @@ def __init__(self, config: BaseConfig, args: Mapping[str, Any]) -> None:
5977

6078
self.changelog_format = get_changelog_format(self.config, self.file_name)
6179

62-
self.incremental = args["incremental"] or self.config.settings.get(
63-
"changelog_incremental"
80+
self.incremental = bool(
81+
args.get("incremental") or self.config.settings.get("changelog_incremental")
6482
)
65-
self.dry_run = args["dry_run"]
83+
self.dry_run = bool(args.get("dry_run"))
6684

6785
self.scheme = get_version_scheme(
6886
self.config.settings, args.get("version_scheme")
6987
)
7088

7189
current_version = (
72-
args.get("current_version", config.settings.get("version")) or ""
90+
args.get("current_version") or self.config.settings.get("version") or ""
7391
)
7492
self.current_version = self.scheme(current_version) if current_version else None
7593

@@ -84,9 +102,7 @@ def __init__(self, config: BaseConfig, args: Mapping[str, Any]) -> None:
84102
or defaults.CHANGE_TYPE_ORDER,
85103
)
86104
self.rev_range = args.get("rev_range")
87-
self.tag_format: str = (
88-
args.get("tag_format") or self.config.settings["tag_format"]
89-
)
105+
self.tag_format = args.get("tag_format") or self.config.settings["tag_format"]
90106
self.tag_rules = TagRules(
91107
scheme=self.scheme,
92108
tag_format=self.tag_format,
@@ -164,7 +180,7 @@ def __call__(self) -> None:
164180
start_rev = self.start_rev
165181
unreleased_version = self.unreleased_version
166182
changelog_meta = changelog.Metadata()
167-
change_type_map: dict[str, str] | None = self.change_type_map # type: ignore
183+
change_type_map: dict[str, str] | None = self.change_type_map
168184
changelog_message_builder_hook: MessageBuilderHook | None = (
169185
self.cz.changelog_message_builder_hook
170186
)

commitizen/defaults.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ class Settings(TypedDict, total=False):
3737
changelog_format: str | None
3838
changelog_incremental: bool
3939
changelog_merge_prerelease: bool
40+
change_type_map: dict[str, str]
4041
changelog_start_rev: str | None
4142
customize: CzSettings
4243
encoding: str

0 commit comments

Comments
 (0)