João Bernardo <jbv...@gmail.com> added the comment:

I see that every other comparison operator (<, >, <=, >=, ==, !=) except for 
`is` work the way I expect and is able to return anything.

e.g.

>>> numpy.arange(5) < 3
array([ True,  True,  True, False, False], dtype=bool)

I didn't checked the code (and probably I'm talking nonsense), but seems like 
the `in` operator has an extra call to `PyObject_IsTrue` that maybe could be 
dropped?

Of course it can break code relying on `x in y` being True/False but it would 
only happen on customized classes.

Another option that won't break code is to add a different method to handle 
these cases. Something like "__contains_non_bool__", but that'd be a big api 
change.

----------
components:  -Documentation

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue13667>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to