From bc41390f388d88114e8529b17fe145c5af390cbb Mon Sep 17 00:00:00 2001 From: Victor Westerhuis Date: Fri, 13 Dec 2024 09:16:03 +0100 Subject: [PATCH] Fix comparison with subclasses --- src/semver/version.py | 2 +- tests/test_subclass.py | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/semver/version.py b/src/semver/version.py index 2f1f8cb7..0ff5b9f4 100644 --- a/src/semver/version.py +++ b/src/semver/version.py @@ -41,7 +41,7 @@ def _comparator(operator: Comparator) -> Comparator: @wraps(operator) def wrapper(self: "Version", other: Comparable) -> bool: comparable_types = ( - Version, + type(self), dict, tuple, list, diff --git a/tests/test_subclass.py b/tests/test_subclass.py index b33f4969..0d390009 100644 --- a/tests/test_subclass.py +++ b/tests/test_subclass.py @@ -1,4 +1,5 @@ from semver import Version +import pytest def test_subclass_from_versioninfo(): @@ -51,3 +52,20 @@ def __str__(self) -> str: dev_version = version.replace(prerelease="dev.0") assert str(dev_version) == "v1.1.0-dev.0" + + +def test_compare_with_subclass(): + class SemVerSubclass(Version): + pass + + with pytest.raises(TypeError): + SemVerSubclass.parse("1.0.0").compare(Version.parse("1.0.0")) + assert Version.parse("1.0.0").compare(SemVerSubclass.parse("1.0.0")) == 0 + + assert ( + SemVerSubclass.parse("1.0.0").__eq__(Version.parse("1.0.0")) is NotImplemented + ) + assert Version.parse("1.0.0").__eq__(SemVerSubclass.parse("1.0.0")) is True + + assert SemVerSubclass.parse("1.0.0") == Version.parse("1.0.0") + assert Version.parse("1.0.0") == SemVerSubclass.parse("1.0.0") pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy