_py_abc.py
# Source Generated with Decompyle++
# File: _py_abc.pyc (Python 3.13)
from _weakrefset import WeakSet
def get_cache_token():
return ABCMeta._abc_invalidation_counter
class ABCMeta(type):
# MAKE_CELL(0)
__module__ = __name__
__qualname__ = 'ABCMeta'
_abc_invalidation_counter = 0
def __new__(mcls = None, name = None, bases = None, namespace = None, **kwargs):
# COPY_FREE_VARS(1)
# WARNING: Decompyle incomplete
def register(cls, subclass):
if not isinstance(subclass, type):
raise TypeError('Can only register classes')
if None(subclass, cls):
return subclass
if None(cls, subclass):
raise RuntimeError('Refusing to create an inheritance cycle')
None._abc_registry.add(subclass)
return subclass
def _dump_registry(cls, file = (None,)):
print(f'''Class: {cls.__module__}.{cls.__qualname__}''', file = file)
print(f'''Inv. counter: {get_cache_token()}''', file = file)
for name in cls.__dict__:
if name.startswith('_abc_'):
value = getattr(cls, name)
if isinstance(value, WeakSet):
value = set(value)
print(f'''{name}: {value!r}''', file = file)
return None
def _abc_registry_clear(cls):
cls._abc_registry.clear()
def _abc_caches_clear(cls):
cls._abc_cache.clear()
cls._abc_negative_cache.clear()
def __instancecheck__(cls, instance):
# MAKE_CELL(0)
subclass = instance.__class__
if subclass in cls._abc_cache:
return True
subtype = None(instance)
if subtype is subclass:
if cls._abc_negative_cache_version < ABCMeta._abc_invalidation_counter and subclass in cls._abc_negative_cache:
return False
return None.__subclasscheck__(subclass)
return (lambda .0 = None: # COPY_FREE_VARS(1)# Return a generator
for c in .0:
cls.__subclasscheck__(c)None)((subclass, subtype)())
def __subclasscheck__(cls, subclass):
if not isinstance(subclass, type):
raise TypeError('issubclass() arg 1 must be a class')
if None in cls._abc_cache:
return True
if None._abc_negative_cache_version < ABCMeta._abc_invalidation_counter:
cls._abc_negative_cache = WeakSet()
cls._abc_negative_cache_version = ABCMeta._abc_invalidation_counter
elif subclass in cls._abc_negative_cache:
return False
ok = cls.__subclasshook__(subclass)
if ok is not NotImplemented:
if ok:
cls._abc_cache.add(subclass)
else:
cls._abc_negative_cache.add(subclass)
return ok
if None in getattr(subclass, '__mro__', ()):
cls._abc_cache.add(subclass)
return True
for rcls in None._abc_registry:
if issubclass(subclass, rcls):
cls._abc_cache.add(subclass)
return True
for scls in cls.__subclasses__():
if issubclass(subclass, scls):
cls._abc_cache.add(subclass)
return True
cls._abc_negative_cache.add(subclass)
return False
__classcell__ = None