def exception_issubclass_w(space, w_cls1, w_cls2): if isinstance(w_cls1, W_ClassObject): if isinstance(w_cls2, W_ClassObject): return w_cls1.is_subclass_of(w_cls2) return False if isinstance(w_cls2, W_ClassObject): return False return BaseObjSpace.exception_issubclass_w(space, w_cls1, w_cls2)
def exception_issubclass_w(space, w_cls1, w_cls2): cls1 = space.interpclass_w(w_cls1) cls2 = space.interpclass_w(w_cls2) if isinstance(cls1, W_ClassObject): if isinstance(cls2, W_ClassObject): return cls1.is_subclass_of(cls2) return False if isinstance(cls2, W_ClassObject): return False return BaseObjSpace.exception_issubclass_w(space, w_cls1, w_cls2)
def exception_issubclass_w(space, w_cls1, w_cls2): if (space.type(w_cls1) is space.w_type and space.type(w_cls2) is space.w_type): return BaseObjSpace.exception_issubclass_w(space, w_cls1, w_cls2) # if (not exception_is_valid_class_w(space, w_cls2) or not exception_is_valid_class_w(space, w_cls1)): return False # # The rest is the rare slow case. Use the general logic of issubclass() # (issue #3149). CPython 3.x doesn't do that (but there is a # many-years issue report: https://bugs.python.org/issue12029), and # there are probably tests, so we won't call abstract_issubclass_w() # either in PyPy3. try: return abstract_issubclass_w(space, w_cls1, w_cls2, True) except OperationError as e: if e. async (space): raise return False
def exception_issubclass_w(space, w_cls1, w_cls2): return BaseObjSpace.exception_issubclass_w(space, w_cls1, w_cls2)