|
6 | 6 |
|
7 | 7 | from functools import total_ordering |
8 | 8 | import functools |
9 | | -import re |
10 | 9 |
|
11 | 10 | import attr |
12 | 11 | import semantic_version |
@@ -452,31 +451,27 @@ def __lt__(self, other): |
452 | 451 | return NotImplemented |
453 | 452 | base_vers1 = self.value[:-1] |
454 | 453 | base_vers2 = other.value[:-1] |
455 | | - if base_vers1 == base_vers2 and (is_prerelease(self.value) or is_prerelease(other.value)): |
456 | | - return is_prerelease1_lt_prerelease2(self.value, other.value) |
| 454 | + # Check if versions have the same base, and `one and only one` of them is a pre-release. |
| 455 | + if base_vers1 == base_vers2 and ( |
| 456 | + self.is_prerelease(self.value) != self.is_prerelease(other.value) |
| 457 | + ): |
| 458 | + return self.is_prerelease(self.value) |
457 | 459 | return self.value.__lt__(other.value) |
458 | 460 |
|
459 | 461 | def __gt__(self, other): |
460 | 462 | if not isinstance(other, self.__class__): |
461 | 463 | return NotImplemented |
462 | 464 | base_vers1 = self.value[:-1] |
463 | 465 | base_vers2 = other.value[:-1] |
464 | | - if base_vers1 == base_vers2 and (is_prerelease(self.value) or is_prerelease(other.value)): |
465 | | - return not is_prerelease1_lt_prerelease2(self.value, other.value) |
| 466 | + if base_vers1 == base_vers2 and ( |
| 467 | + self.is_prerelease(self.value) != self.is_prerelease(other.value) |
| 468 | + ): |
| 469 | + return self.is_prerelease(other.value) |
466 | 470 | return self.value.__gt__(other.value) |
467 | 471 |
|
468 | | - |
469 | | -def is_prerelease(value): |
470 | | - patch = value[-1] |
471 | | - return patch.startswith("-beta") or patch.startswith("-alpha") |
472 | | - |
473 | | - |
474 | | -def is_prerelease1_lt_prerelease2(value1, value2): |
475 | | - if is_prerelease(value1) and is_prerelease(value2): |
476 | | - patch1 = value1[-1] |
477 | | - patch2 = value2[-1] |
478 | | - return patch1[1:] < patch2[1:] |
479 | | - return is_prerelease(value1) and not is_prerelease(value2) |
| 472 | + def is_prerelease(self, value): |
| 473 | + patch = value[-1] |
| 474 | + return patch.startswith("-beta") or patch.startswith("-alpha") |
480 | 475 |
|
481 | 476 |
|
482 | 477 | @attr.s(frozen=True, order=False, eq=False, hash=True) |
|
0 commit comments