bpo-11572: Make several minor improvements to copy module by berkerpeksag · Pull Request #8208 · python/cpython
try: issc = issubclass(cls, type) except TypeError: # cls is not a class issc = False if issc: if issubclass(cls, type): # treat it as a regular class: return _copy_immutable(x)
copier = getattr(cls, "__copy__", None) if copier: if copier is not None: return copier(x)
reductor = dispatch_table.get(cls) if reductor: if reductor is not None: rv = reductor(x) else: reductor = getattr(x, "__reduce_ex__", None) if reductor: if reductor is not None: rv = reductor(4) else: reductor = getattr(x, "__reduce__", None)
copier = _deepcopy_dispatch.get(cls) if copier: if copier is not None: y = copier(x, memo) else: try: issc = issubclass(cls, type) except TypeError: # cls is not a class (old Boost; see SF #502085) issc = 0 if issc: if issubclass(cls, type): y = _deepcopy_atomic(x, memo) else: copier = getattr(x, "__deepcopy__", None) if copier: if copier is not None: y = copier(memo) else: reductor = dispatch_table.get(cls) if reductor: rv = reductor(x) else: reductor = getattr(x, "__reduce_ex__", None) if reductor: if reductor is not None: rv = reductor(4) else: reductor = getattr(x, "__reduce__", None)