22
33import os
44import os .path
5- from collections .abc import Generator
5+ from collections .abc import Generator , Iterable , Mapping
66from difflib import SequenceMatcher
77from operator import itemgetter
88from pathlib import Path
9+ from typing import Any
910
1011from commitizen import changelog , defaults , factory , git , out
1112from commitizen .changelog_formats import get_changelog_format
2829class Changelog :
2930 """Generate a changelog based on the commit history."""
3031
31- def __init__ (self , config : BaseConfig , args ):
32+ def __init__ (self , config : BaseConfig , args : Mapping [ str , Any ] ):
3233 if not git .is_git_project ():
3334 raise NotAGitProjectError ()
3435
@@ -102,7 +103,7 @@ def __init__(self, config: BaseConfig, args):
102103 self .extras = args .get ("extras" ) or {}
103104 self .export_template_to = args .get ("export_template" )
104105
105- def _find_incremental_rev (self , latest_version : str , tags : list [GitTag ]) -> str :
106+ def _find_incremental_rev (self , latest_version : str , tags : Iterable [GitTag ]) -> str :
106107 """Try to find the 'start_rev'.
107108
108109 We use a similarity approach. We know how to parse the version from the markdown
@@ -151,18 +152,18 @@ def write_changelog(
151152
152153 changelog_file .write (changelog_out )
153154
154- def export_template (self ):
155+ def export_template (self )-> None :
155156 tpl = changelog .get_changelog_template (self .cz .template_loader , self .template )
156- src = Path (tpl .filename )
157- Path (self .export_template_to ).write_text (src .read_text ())
157+ src = Path (tpl .filename )# type: ignore
158+ Path (self .export_template_to ).write_text (src .read_text ())# type: ignore
158159
159- def __call__ (self ):
160+ def __call__ (self )-> None :
160161 commit_parser = self .cz .commit_parser
161162 changelog_pattern = self .cz .changelog_pattern
162163 start_rev = self .start_rev
163164 unreleased_version = self .unreleased_version
164165 changelog_meta = changelog .Metadata ()
165- change_type_map : dict | None = self .change_type_map
166+ change_type_map : dict [ str , str ] | None = self .change_type_map # type: ignore
166167 changelog_message_builder_hook : MessageBuilderHook | None = (
167168 self .cz .changelog_message_builder_hook
168169 )
@@ -187,10 +188,11 @@ def __call__(self):
187188 tags = self .tag_rules .get_version_tags (git .get_tags (), warn = True )
188189 end_rev = ""
189190 if self .incremental :
190- changelog_meta = self .changelog_format .get_metadata (self .file_name )
191- if changelog_meta .latest_version :
191+ if latest_version := self .changelog_format .get_metadata (
192+ self .file_name
193+ ).latest_version :
192194 start_rev = self ._find_incremental_rev (
193- strip_local_version (changelog_meta . latest_version_tag ), tags
195+ strip_local_version (latest_version ), tags
194196 )
195197 if self .rev_range :
196198 start_rev , end_rev = changelog .get_oldest_and_newest_rev (
@@ -216,7 +218,8 @@ def __call__(self):
216218 )
217219 if self .change_type_order :
218220 tree = changelog .generate_ordered_changelog_tree (
219- tree , self .change_type_order
221+ tree ,
222+ self .change_type_order , # type: ignore
220223 )
221224
222225 extras = self .cz .template_extras .copy ()
0 commit comments