GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — Incorrect `inspect.Signature` can be created: pos-only with a default followed by pos-or-kw without one · Issue #103556 · python/cpython Closed Labels stdlibStandard Library Python modules in the Lib/ directoryStandard Library Python modules in the Lib/ directorytype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error DescriptionWhile working on #103553 I found one more problem that merits its own issue. Right now it is impossible to create a function that have a pos-or-keyword parameter without a default comming after a pos-only parameter with a default. Demo: >>> def test(pod=42, /, pk): ... File "<stdin>", line 1 def test(pod=42, /, pk): ... ^^ SyntaxError: parameter without a default follows parameter with a default >>> lambda pod=42, /, pk: ... File "<stdin>", line 1 lambda pod=42, /, pk: ... ^^ SyntaxError: parameter without a default follows parameter with a default But, it is possible to create a signature like this. Repro: >>> import inspect >>> def one(pk): ... ... >>> def two(pod=42, /): ... ... >>> sig1 = inspect.signature(one) >>> sig2 = inspect.signature(two) >>> inspect.Signature((sig2.parameters['pod'], sig1.parameters['pk'])) <Signature (pod=42, /, pk)> This looks like a bug to me, there's no reason for a signature to behave differently and to support function signatures that cannot be created. Desired behaviour: Traceback (most recent call last): File "/Users/sobolev/Desktop/cpython/ex.py", line 7, in <module> print(inspect.Signature((sig2.parameters['pod'], sig1.parameters['pk']))) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/sobolev/Desktop/cpython/Lib/inspect.py", line 3039, in __init__ raise ValueError(msg) ValueError: non-default argument follows default argument The fix is quite easy. PR is incomming. I've also tried the same thing with #103404 (because it is very related) but, it still does not solve this corner case. Linked PRsReacted by Gouvernathor Activity
MetadataMetadataAssigneesLabelsstdlibStandard Library Python modules in the Lib/ directoryStandard Library Python modules in the Lib/ directorytype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error ProjectsMilestoneRelationshipsDevelopmentIssue actions |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |