@@ -313,39 +313,28 @@ def get_oldest_and_newest_rev(
313313 - `0.1.0..0.4.0`: as a range
314314 - `0.3.0`: as a single version
315315 """
316- oldest : str | None = None
317- newest : str | None = None
318- try :
319- oldest , newest = version .split (".." )
320- except ValueError :
321- newest = version
322- if not (newest_tag := rules .find_tag_for (tags , newest )):
316+ oldest_version , sep , newest_version = version .partition (".." )
317+ if not sep :
318+ newest_version = version
319+ oldest_version = ""
320+
321+ def get_tag_name (v : str ) -> str :
322+ if tag := rules .find_tag_for (tags , v ):
323+ return tag .name
323324 raise NoCommitsFoundError ("Could not find a valid revision range." )
324325
325- oldest_tag = None
326- oldest_tag_name = None
327- if oldest :
328- if not (oldest_tag := rules .find_tag_for (tags , oldest )):
329- raise NoCommitsFoundError ("Could not find a valid revision range." )
330- oldest_tag_name = oldest_tag .name
326+ newest_tag_name = get_tag_name (newest_version )
327+ oldest_tag_name = get_tag_name (oldest_version ) if oldest_version else None
331328
332- tags_range = get_smart_tag_range (
333- tags , newest = newest_tag .name , oldest = oldest_tag_name
334- )
329+ tags_range = get_smart_tag_range (tags , newest_tag_name , oldest_tag_name )
335330 if not tags_range :
336331 raise NoCommitsFoundError ("Could not find a valid revision range." )
337332
338333 oldest_rev : str | None = tags_range [- 1 ].name
339- newest_rev = newest_tag .name
340-
341- # check if it's the first tag created
342- # and it's also being requested as part of the range
343- if oldest_rev == tags [- 1 ].name and oldest_rev == oldest_tag_name :
344- return None , newest_rev
345-
346- # when they are the same, and it's also the
347- # first tag created
348- if oldest_rev == newest_rev :
349- return None , newest_rev
350334
351- return oldest_rev , newest_rev
335+ # Return None for oldest_rev if:
336+ # 1. The oldest tag is the last tag in the list and matches the requested oldest tag
337+ # 2. The oldest and the newest tag are the same
338+ if oldest_rev == oldest_tag_name == tags [- 1 ].name or oldest_rev == newest_tag_name :
339+ oldest_rev = None
340+ return oldest_rev , newest_tag_name
0 commit comments