@@ -281,6 +281,16 @@ def incremental_build(
281281 return output_lines
282282
283283
284+ def get_next_tag_name_after_version (tags : Iterable [GitTag ], version : str ) -> str | None :
285+ it = iter (tag .name for tag in tags )
286+ for name in it :
287+ if name == version :
288+ return next (it , None )
289+
290+ raise NoCommitsFoundError (f"Could not find a valid revision range. { version = } " )
291+
292+
293+ # TODO: unused, deprecate this?
284294def get_smart_tag_range (
285295 tags : Sequence [GitTag ], newest : str , oldest : str | None = None
286296) -> list [GitTag ]:
@@ -308,7 +318,7 @@ def get_smart_tag_range(
308318
309319
310320def get_oldest_and_newest_rev (
311- tags : Sequence [GitTag ],
321+ tags : Iterable [GitTag ],
312322 version : str ,
313323 rules : TagRules ,
314324) -> tuple [str | None , str ]:
@@ -331,15 +341,13 @@ def get_tag_name(v: str) -> str:
331341 newest_tag_name = get_tag_name (newest_version )
332342 oldest_tag_name = get_tag_name (oldest_version ) if oldest_version else None
333343
334- tags_range = get_smart_tag_range (tags , newest_tag_name , oldest_tag_name )
335- if not tags_range :
336- raise NoCommitsFoundError ("Could not find a valid revision range." )
337-
338- oldest_rev : str | None = tags_range [- 1 ].name
344+ oldest_rev = get_next_tag_name_after_version (
345+ tags , oldest_tag_name or newest_tag_name
346+ )
339347
340348 # Return None for oldest_rev if:
341349 # 1. The oldest tag is the last tag in the list and matches the requested oldest tag
342350 # 2. The oldest and the newest tag are the same
343- if oldest_rev == oldest_tag_name == tags [ - 1 ]. name or oldest_rev == newest_tag_name :
344- oldest_rev = None
351+ if oldest_rev == newest_tag_name :
352+ return None , newest_tag_name
345353 return oldest_rev , newest_tag_name
0 commit comments