Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.7k
Description
Pydoc usesinspect.signature() to get a function signature.inspect.signature() supports Python functions, and also extension functions defined with Argument Clinic (by parsing the__text_signature__ attribute). Unfortunately Argument Clinic is used with functions whose signature cannot be expressed in Python, e.g.getattr() ordict.pop(). It produces a human readable__text_signature__, but it can not be represented as aSignature object, soinspect.signature() fails. Pydoc display generic(...) for such functions.
Since pydoc only needs a string representation of signature, not aSignature object, I propose to use__text_signature__ ifinspect.signature() fails. It needs only some trivial processing.
Before:
getattr(...) Get a named attribute from an object. getattr(x, 'y') is equivalent to x.y When a default argument is given, it is returned when the attribute doesn't exist; without it, an exception is raised in that case.After:
getattr(object, name, default=<unrepresentable>, /) Get a named attribute from an object. getattr(x, 'y') is equivalent to x.y When a default argument is given, it is returned when the attribute doesn't exist; without it, an exception is raised in that case.