@@ -41,20 +41,21 @@ def _git_version_tags(repo: git.Repo) -> t.Mapping[git.Tag, Version]:
4141
4242
4343def _latest_git_version_tag_on_branches (
44- repo : git .Repo , assume_if_none : bool , commit : git .Commit , commit_distance : int ,
45- skip_commits : t .Set [git .Commit ]) -> t .Union [int , t .Tuple [
46- git .Commit , t .Optional [git .TagReference ], t .Optional [Version ], int ]]:
44+ repo : git .Repo , assume_if_none : bool , commit : git .objects .Commit , commit_distance : int ,
45+ skip_commits : t .Set [git .objects .Commit ]) -> t .Union [int , t .Tuple [
46+ t .Optional [git .objects .Commit ], t .Optional [git .TagReference ], t .Optional [Version ],
47+ int ]]:
4748 _LOG .log (logging .NOTSET , 'entering %i branches...' , len (commit .parents ))
4849 results = []
4950 main_commit_distance = None
5051 for parent in commit .parents :
5152 try :
5253 result = _latest_git_version_tag (
5354 repo , assume_if_none , parent , commit_distance , skip_commits )
54- if main_commit_distance is None :
55- main_commit_distance = result [3 ]
5655 except ValueError :
5756 continue
57+ if main_commit_distance is None :
58+ main_commit_distance = result [3 ]
5859 if result [2 ] is not None :
5960 results .append (result )
6061 if not results :
@@ -72,17 +73,17 @@ def _latest_git_version_tag_on_branches(
7273
7374
7475def _latest_git_version_tag (
75- repo : git .Repo , assume_if_none : bool = False , base_commit : git .Commit = None ,
76- commit_distance : int = 0 , skip_commits : t .Set [git .Commit ] = None ) -> t .Tuple [
77- git .Commit , t .Optional [git .TagReference ], t .Optional [Version ], int ]:
78- """Retrun (commit, tag at that commit if any, latest version, distance from the version)."""
76+ repo : git .Repo , assume_if_none : bool = False , base_commit : git .objects . Commit = None ,
77+ commit_distance : int = 0 , skip_commits : t .Set [git .objects . Commit ] = None ) -> t .Tuple [
78+ t . Optional [ git .objects . Commit ] , t .Optional [git .TagReference ], t .Optional [Version ], int ]:
79+ """Return (commit, tag at that commit if any, latest version, distance from the version)."""
7980 version_tags = _git_version_tags (repo )
80- version_tag_commits : t .Dict [git .Commit , set ] = {}
81+ version_tag_commits : t .Dict [git .objects . Commit , set ] = {}
8182 for tag , version in version_tags .items ():
82- commit = tag .commit
83- if commit not in version_tag_commits :
84- version_tag_commits [commit ] = set ()
85- version_tag_commits [commit ].add (tag )
83+ _commit = tag .commit
84+ if _commit not in version_tag_commits :
85+ version_tag_commits [_commit ] = set ()
86+ version_tag_commits [_commit ].add (tag )
8687 current_version_tags = {}
8788 commit = None
8889 if skip_commits is None :
@@ -120,7 +121,8 @@ def _latest_git_version_tag(
120121
121122
122123def _upcoming_git_version_tag (repo : git .Repo , ignore_untracked_files : bool = True ) -> t .Tuple [
123- git .Commit , t .Optional [git .TagReference ], Version , int , bool ]:
124+ t .Optional [git .objects .Commit ], t .Optional [git .TagReference ], t .Optional [Version ], int ,
125+ bool ]:
124126 commit , tag , version , commit_distance = _latest_git_version_tag (repo , True )
125127 is_repo_dirty = repo .is_dirty (untracked_files = not ignore_untracked_files )
126128 return commit , tag , version , commit_distance , is_repo_dirty
@@ -131,13 +133,16 @@ def query_git_repo(repo_path: pathlib.Path, search_parent_directories: bool = Tr
131133 _LOG .debug ('looking for git repository in "%s"' , repo_path )
132134 repo = git .Repo (str (repo_path ), search_parent_directories = search_parent_directories )
133135 _LOG .debug ('found git repository in "%s"' , repo .working_dir )
134- return _latest_git_version_tag (repo )[2 ]
136+ version = _latest_git_version_tag (repo )[2 ]
137+ assert isinstance (version , Version ), version
138+ return version
135139
136140
137141def predict_git_repo (repo_path : pathlib .Path , search_parent_directories : bool = True ) -> Version :
138142 """Predict version from tags, commit history and index status of git repository."""
139143 repo = git .Repo (str (repo_path ), search_parent_directories = search_parent_directories )
140144 version , commit_distance , is_repo_dirty = _upcoming_git_version_tag (repo )[2 :]
145+ assert isinstance (version , Version ), version
141146 if commit_distance > 0 :
142147 version .devel_increment (commit_distance )
143148 version .local = (repo .head .commit .hexsha [:8 ],)
0 commit comments