Situation
when comparing an incompatible type, the Version class raises TypeError (through the _comparator decorator):
>>> class Foo:
... pass
>>> v1 = semver.version.Version(1, 2, 3)
>>> v1 < Foo()
Traceback (most recent call last)
...
TypeError: other type <class '__main__.Foo'> must be in (<class 'semver.version.Version'>, <class 'dict'>, <class 'tuple'>, <class 'list'>, <class 'str'>, <class 'bytes'>)
From a semantic point of view this is correct.
Question
According to the NotImplemented documentation (emphasize by me):
Special value which should be returned by the binary special methods (e.g. __eq__(), __lt__(), __add__(), __rsub__(), etc.) to indicate that the operation is not implemented with respect to the other type; may be returned by the in-place binary special methods (e.g. __imul__(), __iand__(), etc.) for the same purpose. It should not be evaluated in a boolean context.
Should we return NotImplemented instead of raising TypeError?
@python-semver/reviewers @tlaferriere Thoughts? Concerns?
Situation
when comparing an incompatible type, the
Versionclass raisesTypeError(through the_comparatordecorator):From a semantic point of view this is correct.
Question
According to the NotImplemented documentation (emphasize by me):
Should we return
NotImplementedinstead of raisingTypeError?@python-semver/reviewers @tlaferriere Thoughts? Concerns?