[Python-Dev] Definition of equality check behavior (original) (raw)

Steven D'Aprano steve at pearwood.info
Tue May 7 19:30:09 EDT 2019


On Wed, May 08, 2019 at 12:05:07AM +0200, Max Vogler wrote:

Thanks for starting this discussion and addressing my issue, Jordan.

I would like to clarify the intentions behind my original issue <https://github.com/PythonCharmers/python-future/issues/432>: It does not concern coercion in Python's eq. Instead, the issue concerns the return of False instead of NotImplemented in future.types.newstr.eq.

Unless there is something special about newstr that it should force an unequal result, it should return NotImplemented when comparing to types it knows nothing about.

I'm reluctant to outright declare a class I know nothing about in a library I don't understand is buggy, but on the face of it, if newstr.eq doesn't return NotImplemented, it probably is buggy.

If so, newstr is in good company: failure to return NotImplemented is a very common bug in third-party code. I've written heaps of classes that wrongly force a False result. But I've learned better and don't do it any more :-)

-- Steven



More information about the Python-Dev mailing list