Python interpreter bug
Available news archives: comp.lang.tcl - comp.lang.python - comp.security.firewalls - sci.crypt - comp.lang.php - comp.lang.javascript
Google
 
Web news.hping.org


comp.lang.python archive

Python interpreter bug

From: <alainpoint@yahoo.fr>
Date: Fri Oct 07 2005 - 14:07:14 CEST

Hello,

I came accross what i think is a serious bug in the python interpreter.

Membership testing seems not to work for list of objects when these
objects have a user-defined __cmp__ method.
It is present in Python 2.3 and 2.4. I don't know about other versions.
The following code illustrates the bug:
from random import choice
class OBJ:
        def __init__(self,identifier):
                self.id=identifier
                self.allocated=0
        def __cmp__(self,other):
                return cmp(other.allocated,self.allocated)
mylist=[OBJ(i) for i in range(20)]
excluded=[obj for obj in mylist if obj.id>choice(range(20))]
for obj in mylist:
        if obj in excluded:
                assert obj.id in [objt.id for objt in excluded]
                continue

Running the above snippet will trigger the assert. The culprit seems to
be the __cmp__ method which sorts on a key with constant value.
Best regards
Alain
Received on Sat Oct 15 04:15:29 2005