Home | History | Annotate | Download | only in Lib

Lines Matching full:subclass

82     # registered as a virtual subclass of anything.  It forces the
105 def register(cls, subclass):
106 """Register a virtual subclass of an ABC."""
107 if not isinstance(subclass, (type, types.ClassType)):
109 if issubclass(subclass, cls):
110 return # Already a subclass
111 # Subtle: test for cycles *after* testing for "already a subclass";
113 if issubclass(cls, subclass):
116 cls._abc_registry.add(subclass)
131 subclass = getattr(instance, '__class__', None)
132 if subclass is not None and subclass in cls._abc_cache:
137 subtype = subclass
138 if subtype is subclass or subclass is None:
143 # Fall back to the subclass check.
145 return (cls.__subclasscheck__(subclass) or
148 def __subclasscheck__(cls, subclass):
149 """Override for issubclass(subclass, cls)."""
151 if subclass in cls._abc_cache:
158 elif subclass in cls._abc_negative_cache:
160 # Check the subclass hook
161 ok = cls.__subclasshook__(subclass)
165 cls._abc_cache.add(subclass)
167 cls._abc_negative_cache.add(subclass)
169 # Check if it's a direct subclass
170 if cls in getattr(subclass, '__mro__', ()):
171 cls._abc_cache.add(subclass)
173 # Check if it's a subclass of a registered class (recursive)
175 if issubclass(subclass, rcls):
176 cls._abc_cache.add(subclass)
178 # Check if it's a subclass of a subclass (recursive)
180 if issubclass(subclass, scls):
181 cls._abc_cache.add(subclass)
184 cls._abc_negative_cache.add(subclass)