[New-bugs-announce] [issue21801] inspect.signature doesn't always return a signature

Claudiu Popa report at bugs.python.org
Wed Jun 18 14:41:45 CEST 2014


New submission from Claudiu Popa:

Hello. I noticed the following behaviour while working with xmlrpc proxy methods.

>>> import inspect, xmlrpc.client
>>> proxy = xmlrpc.client.ServerProxy('http://localhost:8000')
>>> proxy.mul
<xmlrpc.client._Method object at 0x03B0C890>
>>> inspect.signature(proxy.mul)
<xmlrpc.client._Method object at 0x03B0CC90>
>>>


Now, according to the documentation, inspect.signature should return a signature or fail, but in this case it returns the actual object, which is misleading at least. This happens because _Method implements a proxy __getattr__, any accessed attribute becoming again a _Method. At the same time, inspect.signature happily uses 

try:
   obj.__signature__
except AttributeError:
   ...

to obtain the signature, if present.

The attached patch checks if __signature__ is an actual Signature object. I searched, but couldn't find any, if __signature__ can be anything, so I hope that this approach works.

----------
components: Library (Lib)
files: inspect_signature.patch
keywords: patch
messages: 220936
nosy: Claudiu.Popa, yselivanov
priority: normal
severity: normal
status: open
title: inspect.signature doesn't always return a signature
type: enhancement
versions: Python 3.5
Added file: http://bugs.python.org/file35682/inspect_signature.patch

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue21801>
_______________________________________


More information about the New-bugs-announce mailing list