Bug report
Repro:
>>> from reprlib import recursive_repr
>>>
>>> class My:
... @recursive_repr()
... def __repr__[T](self, converter: T | None = None): ...
...
>>> My().__repr__.__type_params__
()
This happens because recursive_repr does not use @wraps, but reinvents it:
|
# Can't use functools.wraps() here because of bootstrap issues |
|
wrapper.__module__ = getattr(user_function, '__module__') |
|
wrapper.__doc__ = getattr(user_function, '__doc__') |
|
wrapper.__name__ = getattr(user_function, '__name__') |
|
wrapper.__qualname__ = getattr(user_function, '__qualname__') |
|
wrapper.__annotations__ = getattr(user_function, '__annotations__', {}) |
|
wrapper.__wrapped__ = user_function |
|
return wrapper |
And __type_params__ was added in #104600
Linked PRs
Bug report
Repro:
This happens because
recursive_reprdoes not use@wraps, but reinvents it:cpython/Lib/reprlib.py
Lines 26 to 33 in f2eaa92
And
__type_params__was added in #104600Linked PRs
reprlib.recursive_reprcopies__type_params__#109819reprlib.recursive_reprcopies__type_params__(… #109999