unittest wart/bug for assertNotEqual

Steven D'Aprano steven at REMOVE.THIS.cybersource.com.au
Wed Oct 21 00:12:34 CEST 2009


On Tue, 20 Oct 2009 14:45:49 -0700, Zac Burns wrote:

> My preference would be that failIfEqual checks both != and ==. This is
> practical, and would benefit almost all use cases. If "!=" isn't "not
> ==" (IEEE NaNs I hear is the only known use case)

numpy uses == and != as element-wise operators:


>>> import numpy
>>> a = numpy.array([10, 20, 30, 40])
>>> b = numpy.array([10, 20, 31, 40])
>>> a==b
array([ True,  True, False,  True], dtype=bool)
>>> a!=b
array([False, False,  True, False], dtype=bool)
>>> not a!=b
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: The truth value of an array with more than one element is 
ambiguous. Use a.any() or a.all()



> then those could simply not use this method.

I'm not so sure this is a good idea. Python specifically treats == and != 
as independent. There's no reason to think that a class must have both, 
or that it's an error if it defines == without !=, or even that they are 
reflections of each other. numpy doesn't, and that's a pretty huge 
counter-example.

 
> It would not surprise me if changing this would bring to light many
> existing bugs.

It would surprise me.


-- 
Steven



More information about the Python-list mailing list