[NumPy-Tickets] [NumPy] #1433: numpy array captures 'in' statement when it shouldn't

NumPy Trac numpy-tickets@scipy....
Sun Sep 5 15:06:31 CDT 2010

#1433: numpy array captures 'in' statement when it shouldn't
  Reporter:  graik        |       Owner:  somebody    
      Type:  enhancement  |      Status:  reopened    
  Priority:  normal       |   Milestone:              
 Component:  numpy.core   |     Version:  1.3.0       
Resolution:               |    Keywords:  __contains__
Changes (by graik):

  * status:  closed => reopened
  * type:  defect => enhancement
  * resolution:  wontfix =>


 Thanks for having a look at this. Though I am afraid I disagree. Now I
 haven't checked every version of numpy or Numeric. But we have used this
 construction in a large python library since many years
 (http://biskit.sf.net). First with Numeric then with numpy. It could well
 be that the later Numeric versions were already broken / modified -- we
 kept using some version 23.x because everything later became increasingly
 unstable. I also made a big leap in numpy versions from a very early to
 the latest one.

 Anyway, this is non-python behavior. It seems then that numpy's equality
 operation should be fixed. Python data types have an expected behavior --
 if compared to some other (incompatible) data type, they simply return
 False. This allows many common and elegant short cuts. For example,
 another very frequent pattern in our library was this (assigning a default
 value if None is given):

   a = None
   b = a or zeros( 10 )

 instead of:
   a = None
   b = zeros( 10 )
   if a is not None:
       b = a

 It works perfectly fine with all python data types. But because of numpy's
 new __equal__, we had to remove all these constructs. This new ValueError
 is quite annoying. It should only be raised if we are actually comparing


Ticket URL: <http://projects.scipy.org/numpy/ticket/1433#comment:2>
NumPy <http://projects.scipy.org/numpy>
My example project

More information about the NumPy-Tickets mailing list