It’s unclear to me why an allowlist is used vs denylist for all attributes. For other thread it’s copy cache_info/cache_clear. For a class callable that has more attributes (dunder/non-dunder) unsure what issue is with copy as much as is possible and skip a few known fields that should be left as is.
Can’t say that’s come up for me any time recently. Generally if I’m decorating a class, it’s with something specifically designed to decorate classes, and which will return the original class after doing its work as a side effect. So I wouldn’t want to use @wraps et. al. with it anyway.