8000 Merge pull request #453 from viccie30/fix-subclass-comparison · python-semver/python-semver@15aa6a6 · GitHub
[go: up one dir, main page]

Skip to content

Commit 15aa6a6

Browse files
authored
Merge pull request #453 from viccie30/fix-subclass-comparison
Fix comparison with subclasses
2 parents bd97cfc + bc41390 commit 15aa6a6

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

src/semver/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ def _comparator(operator: Comparator) -> Comparator:
4141
@wraps(operator)
4242
def wrapper(self: "Version", other: Comparable) -> bool:
4343
comparable_types = (
44-
Version,
44+
type(self),
4545
dict,
4646
tuple,
4747
list,

tests/test_subclass.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from semver import Version
2+
import pytest
23

34

45
def test_subclass_from_versioninfo():
@@ -51,3 +52,20 @@ def __str__(self) -> str:
5152
dev_version = version.replace(prerelease="dev.0")
5253

5354
assert str(dev_version) == "v1.1.0-dev.0"
55+
56+
57+
def test_compare_with_subclass():
58+
class SemVerSubclass(Version):
59+
pass
60+
61+
with pytest.raises(TypeError):
62+
SemVerSubclass.parse("1.0.0").compare(Version.parse("1.0.0"))
63+
assert Version.parse("1.0.0").compare(SemVerSubclass.parse("1.0.0")) == 0
64+
65+
assert (
66+
SemVerSubclass.parse("1.0.0").__eq__(Version.parse("1.0.0")) is NotImplemented
67+
)
68+
assert Version.parse("1.0.0").__eq__(SemVerSubclass.parse("1.0.0")) is True
69+
70+
assert SemVerSubclass.parse("1.0.0") == Version.parse("1.0.0")
71+
assert Version.parse("1.0.0") == SemVerSubclass.parse("1.0.0")

0 commit comments

Comments
 (0)
0