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 )
@@ -190,7 +191,7 @@ def __call__(self):
190191 changelog_meta = self .changelog_format .get_metadata (self .file_name )
191192 if changelog_meta .latest_version :
192193 start_rev = self ._find_incremental_rev (
193- strip_local_version (changelog_meta .latest_version_tag ), tags
194+ strip_local_version (changelog_meta .latest_version_tag or "" ), tags
194195 )
195196 if self .rev_range :
196197 start_rev , end_rev = changelog .get_oldest_and_newest_rev (
@@ -216,7 +217,8 @@ def __call__(self):
216217 )
217218 if self .change_type_order :
218219 tree = changelog .generate_ordered_changelog_tree (
219- tree , self .change_type_order
220+ tree ,
221+ self .change_type_order , # type: ignore
220222 )
221223
222224 extras = self .cz .template_extras .copy ()
0 commit comments