Open
Description
Is your feature request related to a problem? Please describe.
Not a problem, but when writing functions/classes with lots of options, and in particular when these options need to be forwarded down to a few levels, it is extremely convenient to use Unpack[TypeDict]
as the type for keyword arguments and group all arguments in a class that can be reused.
For example:
from typing import TypedDict, Unpack
class Args(TypedDict):
"""Arguments for the add function"""
a: int
"""The first number"""
b: int
"""The second number"""
def add(**args: Unpack[Args]) -> int:
"""Add two numbers together.
Args:
**args: The arguments for the function.
Returns:
The sum of the two numbers.
"""
return args["a"] + args["b"]
Renders as:
Describe the solution you'd like
It would be nice if it were rendered as regular arguments instead, like:
Describe alternatives you've considered
They are basically above.
Additional context
I know this might be tricky, specially considering cases using Args(TypeDict, total=False)
or NotRequired
as in this case some arguments could not be present at all, which is different from passing None
for example. But maybe there is a low hanging fruit, and at least some limited support could be added.
Metadata
Metadata
Assignees
Labels
Type
Projects
Milestone
Relationships
Development
No branches or pull requests
Activity
pawamoy commentedon Nov 21, 2024
Thanks for the request @llucax! Related: mkdocstrings/griffe#284.
llucax commentedon Nov 22, 2024
Oh, thanks for the reference, I completely missed it. I was actually in doubt if it had to be reported in griffe or not 🤷
pawamoy commentedon Nov 22, 2024
No worries, it's not a duplicate. Support for
Unpack
must be implemented in Griffe, but here we also want an option to actually unpack the signature when rendering 🙂Kludex commentedon Dec 31, 2024
This would be very nice. I was going to ask about it.
samuelcolvin commentedon Dec 31, 2024
This would be great plase @pawamoy.