• Nick Coghlan's avatar
    Issue #23722: improve __classcell__ compatibility · 19d24674
    Nick Coghlan yazdı
    Handling zero-argument super() in __init_subclass__ and
    __set_name__ involved moving __class__ initialisation to
    type.__new__. This requires cooperation from custom
    metaclasses to ensure that the new __classcell__ entry
    is passed along appropriately.
    
    The initial implementation of that change resulted in abruptly
    broken zero-argument super() support in metaclasses that didn't
    adhere to the new requirements (such as Django's metaclass for
    Model definitions).
    
    The updated approach adopted here instead emits a deprecation
    warning for those cases, and makes them work the same way they
    did in Python 3.5.
    
    This patch also improves the related class machinery documentation
    to cover these details and to include more reader-friendly
    cross-references and index entries.
    19d24674
bltinmodule.c 80.2 KB