Skip to content

feature: Convert Unpack[TypedDict] to regular arguments #207

Open
@llucax

Description

@llucax

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:

image

Describe the solution you'd like

It would be nice if it were rendered as regular arguments instead, like:

image

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

featureNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions