classification
Title: Signature.from_builtin should raise a ValueError when no signature can be provided
Type: behavior Stage: patch review
Components: Versions: Python 3.4
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: Nosy List: brett.cannon, larry, ncoghlan, python-dev, yselivanov
Priority: normal Keywords: needs review, patch

Created on 2014-01-28 17:00 by yselivanov, last changed 2014-01-29 15:49 by yselivanov. This issue is now closed.

Files
File name Uploaded Description Edit
from_builtin_errors_01.patch yselivanov, 2014-01-28 21:27 review
Messages (6)
msg209565 - (view) Author: Yury Selivanov (yselivanov) * (Python committer) Date: 2014-01-28 17:00
Right now it may return `None` if no signature can be returned for the given builtin. If we decide to implement #17373 in 3.5, I'd like all three methods -- from_builtin, from_function, from_callable -- to either return a signature or to raise an exception.
msg209586 - (view) Author: Yury Selivanov (yselivanov) * (Python committer) Date: 2014-01-28 21:27
A patch is attached, please review.
msg209638 - (view) Author: Nick Coghlan (ncoghlan) * (Python committer) Date: 2014-01-29 12:36
This proposal and patch look good to me. The current behaviour definitely isn't desirable:

>>> import inspect
>>> inspect.Signature.from_function(1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/ncoghlan/devel/py3k/Lib/inspect.py", line 1888, in from_function
    raise TypeError('{!r} is not a Python function'.format(func))
TypeError: 1 is not a Python function
>>> inspect.Signature.from_builtin(1)
>>> 

Signature.from_function() and Signature.from_builtin() should both also be documented, but we may want to wait for PEP 457 and #17373 in Python 3.5 before sorting all that out.
msg209649 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2014-01-29 15:46
New changeset 9433b380ad33 by Yury Selivanov in branch 'default':
inspect.Signature: Make from_builtin to raise an exception if no signature can
http://hg.python.org/cpython/rev/9433b380ad33
msg209650 - (view) Author: Yury Selivanov (yselivanov) * (Python committer) Date: 2014-01-29 15:47
Nick, thanks for the review. Committed.
msg209651 - (view) Author: Yury Selivanov (yselivanov) * (Python committer) Date: 2014-01-29 15:49
> Signature.from_function() and Signature.from_builtin() should both also be documented, but we may want to wait for PEP 457 and #17373 in Python 3.5 before sorting all that out.

I would like to wait till 3.5 too. Right now both of them are sort of "private" API, so we still have the liberty to adjust their behaviour in 3.5 if needed.
History
Date User Action Args
2014-01-29 15:49:12yselivanovsetmessages: + msg209651
2014-01-29 15:47:10yselivanovsetstatus: open -> closed
resolution: fixed
messages: + msg209650
2014-01-29 15:46:28python-devsetnosy: + python-dev
messages: + msg209649
2014-01-29 12:36:44ncoghlansetmessages: + msg209638
2014-01-28 21:27:50yselivanovsetkeywords: + needs review, patch
files: + from_builtin_errors_01.patch
messages: + msg209586

stage: patch review
2014-01-28 17:00:19yselivanovcreate