Larry Hastings added the comment:

In case a little background would help: while developing support for 
'__text_signature__' I had to move the test and the from_builtin() call to the 
top.  It used to be more in the middle-ish.  I don't have notes specifically on 
why I moved it, but I dimly recall that if I didn't try from_builtin first, 
there were other approaches that would succeed on the callable, that approach 
would fail on a builtin, so it'd throw an exception, and from_builtin wouldn't 
get a chance to try.

Also, I assumed that anything that had a __text_signature__ wasn't going to 
have any other kind of signature information.  Therefore, if the object had a 
__text_signature__ attribute, then I already knew that's the best approach and 
it should definitely be first.

Also also, I remember specifically that the isinstance(type) code would fail 
builtin classes.  But there's no generic way (that I know of) to tell whether a 
class is a user class or a builtin class.  So I wanted from_builtin to try 
handling a class first before the isinstance(type) class.

Are there callables in CPython that have *both* a __text_signature__ *and* have 
signature information derivable from another source, where you *don't* want to 
use __text_signature__?


Stefan: yes, you can write any garbage you want after "sig=(" and the C 
function that detects signatures will still assume you have a text signature.  
That reminds me of a good joke.

Patient: Doctor, it hurts whenever I move my arm in this funny way.  
*demonstrates*
Doctor: Well, then, don't do that.

I would be very interested if you knew of docstrings in the wild that 
innocently start with "sig=(" and yet aren't intended to be text signatures 
compatible with inspect.Signature.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue17159>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to