• Jeremy Hylton's avatar
    Add checking for a number of metaclass error conditions. · fa955697
    Jeremy Hylton yazdı
    We add some new rules that are required for preserving internal
    invariants of types.
    
    1.  If type (or a subclass of type) appears in bases, it must appear
        before any non-type bases.  If a non-type base (like a regular
        new-style class) occurred first, it could trick type into
        allocating the new class an __dict__ which must be impossible.
    
    2. There are several checks that are made of bases when creating a
       type.  Those checks are now repeated when assigning to __bases__.
       We also add the restriction that assignment to __bases__ may not
       change the metaclass of the type.
    
    Add new tests for these cases and for a few other oddball errors that
    were no previously tested.  Remove a crasher test that was fixed.
    
    Also some internal refactoring:  Extract the code to find the most
    derived metaclass of a type and its bases.  It is now needed in two
    places.  Rewrite the TypeError checks in test_descr to use doctest.
    The tests now clearly show what exception they expect to see.
    fa955697
Adı
Son kayıt (commit)
Son güncelleme
..
stringlib Loading commit data...
abstract.c Loading commit data...
boolobject.c Loading commit data...
bufferobject.c Loading commit data...
cellobject.c Loading commit data...
classobject.c Loading commit data...
cobject.c Loading commit data...
codeobject.c Loading commit data...
complexobject.c Loading commit data...
descrobject.c Loading commit data...
dictnotes.txt Loading commit data...
dictobject.c Loading commit data...
enumobject.c Loading commit data...
exceptions.c Loading commit data...
fileobject.c Loading commit data...
floatobject.c Loading commit data...
frameobject.c Loading commit data...
funcobject.c Loading commit data...
genobject.c Loading commit data...
intobject.c Loading commit data...
iterobject.c Loading commit data...
listobject.c Loading commit data...
listsort.txt Loading commit data...
longobject.c Loading commit data...
methodobject.c Loading commit data...
moduleobject.c Loading commit data...
object.c Loading commit data...
obmalloc.c Loading commit data...
rangeobject.c Loading commit data...
setobject.c Loading commit data...
sliceobject.c Loading commit data...
stringobject.c Loading commit data...
structseq.c Loading commit data...
tupleobject.c Loading commit data...
typeobject.c Loading commit data...
unicodectype.c Loading commit data...
unicodeobject.c Loading commit data...
unicodetype_db.h Loading commit data...
weakrefobject.c Loading commit data...