@@ -318,39 +318,28 @@ def get_oldest_and_newest_rev(
318
318
- `0.1.0..0.4.0`: as a range
319
319
- `0.3.0`: as a single version
320
320
"""
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
328
329
raise NoCommitsFoundError ("Could not find a valid revision range." )
329
330
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
336
333
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 )
340
335
if not tags_range :
341
336
raise NoCommitsFoundError ("Could not find a valid revision range." )
342
337
343
338
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
355
339
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