-
-
Notifications
You must be signed in to change notification settings - Fork 34.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
Reactions are currently unavailable
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
Projects
Status
Done