• Raymond Hettinger's avatar
    1. Removed module self test in favor of unittests -- Timbot's suggestion. · fa1480f6
    Raymond Hettinger yazdı
    2. Replaced calls to Set([]) with Set() -- Timbot's suggestion
    3. Fixed subtle bug in sets of sets:
    
    The following code did not work (will add to test suite):
        d = Set('d')
        s = Set([d])  # Stores inner set as an ImmutableSet
        s.remove(d)   # For comparison, wraps d in _TemporarilyImmutableSet
    
    The comparison proceeds by computing the hash of the
    _TemporarilyImmutableSet and finding it in the dictionary.
    It then verifies equality by calling ImmutableSet.__eq__()
    and crashes from the binary sanity check.
    
    The problem is that the code assumed equality would be checked
    with _TemporarilyImmutableSet.__eq__().
    
    The solution is to let _TemporarilyImmutableSet derive from BaseSet
    so it will pass the sanity check and then to provide it with the
    ._data element from the wrapped set so that ImmutableSet.__eq__()
    will find ._data where it expects.
    
    Since ._data is now provided and because BaseSet is the base class,
    _TemporarilyImmutableSet no longer needs .__eq__() or .__ne__().
    
    Note that inheriting all of BaseSet's methods is harmless because
    none of those methods (except ones starting with an underscore)
    can mutate the .data element.  Also _TemporarilyImmutableSet is only
    used internally as is not otherwise visible.
    fa1480f6
Adı
Son kayıt (commit)
Son güncelleme
Demo Loading commit data...
Doc Loading commit data...
Grammar Loading commit data...
Include Loading commit data...
Lib Loading commit data...
Mac Loading commit data...
Misc Loading commit data...
Modules Loading commit data...
Objects Loading commit data...
PC Loading commit data...
PCbuild Loading commit data...
Parser Loading commit data...
Python Loading commit data...
RISCOS Loading commit data...
Tools Loading commit data...
.cvsignore Loading commit data...
.hgtags Loading commit data...
LICENSE Loading commit data...
Makefile.pre.in Loading commit data...
README Loading commit data...
configure Loading commit data...
configure.in Loading commit data...
install-sh Loading commit data...
pyconfig.h.in Loading commit data...
setup.py Loading commit data...