@@ -318,39 +318,28 @@ def get_oldest_and_newest_rev(
318318 - `0.1.0..0.4.0`: as a range
319319 - `0.3.0`: as a single version
320320 """
321- oldest : str | None = None
322- newest : str | None = None
323- try :
324- oldest , newest = version .split (".." )
325- except ValueError :
326- newest = version
327- if not (newest_tag := rules .find_tag_for (tags , newest )):
321+ oldest_version , sep , newest_version = version .partition (".." )
322+ if not sep :
323+ newest_version = version
324+ oldest_version = ""
325+
326+ def get_tag_name (v : str ) -> str :
327+ if tag := rules .find_tag_for (tags , v ):
328+ return tag .name
328329 raise NoCommitsFoundError ("Could not find a valid revision range." )
329330
330- oldest_tag = None
331- oldest_tag_name = None
332- if oldest :
333- if not (oldest_tag := rules .find_tag_for (tags , oldest )):
334- raise NoCommitsFoundError ("Could not find a valid revision range." )
335- oldest_tag_name = oldest_tag .name
331+ newest_tag_name = get_tag_name (newest_version )
332+ oldest_tag_name = get_tag_name (oldest_version ) if oldest_version else None
336333
337- tags_range = get_smart_tag_range (
338- tags , newest = newest_tag .name , oldest = oldest_tag_name
339- )
334+ tags_range = get_smart_tag_range (tags , newest_tag_name , oldest_tag_name )
340335 if not tags_range :
341336 raise NoCommitsFoundError ("Could not find a valid revision range." )
342337
343338 oldest_rev : str | None = tags_range [- 1 ].name
344- newest_rev = newest_tag .name
345-
346- # check if it's the first tag created
347- # and it's also being requested as part of the range
348- if oldest_rev == tags [- 1 ].name and oldest_rev == oldest_tag_name :
349- return None , newest_rev
350-
351- # when they are the same, and it's also the
352- # first tag created
353- if oldest_rev == newest_rev :
354- return None , newest_rev
355339
356- return oldest_rev , newest_rev
340+ # Return None for oldest_rev if:
341+ # 1. The oldest tag is the last tag in the list and matches the requested oldest tag
342+ # 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
345+ return oldest_rev , newest_tag_name
0 commit comments