-
-
Notifications
You must be signed in to change notification settings - Fork 33.2k
Closed
Labels
3.12only security fixesonly security fixes3.13bugs and security fixesbugs and security fixes3.14bugs and security fixesbugs and security fixesstdlibStandard 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
Description
Bug report
Bug description:
We can create inspect.Signature
with two or more variable parameters, but this will be syntactically incorrect when defining the function manually:
import inspect
parameters = [
inspect.Parameter("args", kind=inspect.Parameter.VAR_POSITIONAL),
inspect.Parameter("other_args", kind=inspect.Parameter.VAR_POSITIONAL),
inspect.Parameter("kwargs", kind=inspect.Parameter.VAR_KEYWORD),
inspect.Parameter("other_kwargs", kind=inspect.Parameter.VAR_KEYWORD),
]
signature = inspect.Signature(parameters)
print(signature)
OUTPUT:
(*args, *other_args, **kwargs, **other_kwargs)
And naturally we get a syntax error when defining a function with such a signature:
def func(*args, *other_args, **kwargs, **other_kwargs):
...
OUTPUT:
File "/home/apostol_fet/inspect_signature.py", line 13
def func(*args, *other_args, **kwargs, **other_kwargs):
^
SyntaxError: * argument may appear only once
Can we add validations for this case in inspect.Signature.__init__
?
I would like to send a PR to fix this if it is not intended behavior.
CPython versions tested on:
3.12
Operating systems tested on:
Linux, Windows
Linked PRs
Eclips4, skirpichev, tomasr8 and Agent-Hellboy
Metadata
Metadata
Assignees
Labels
3.12only security fixesonly security fixes3.13bugs and security fixesbugs and security fixes3.14bugs and security fixesbugs and security fixesstdlibStandard 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