[Python-Dev] Definition of equality check behavior

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 :-)


More information about the Python-Dev mailing list