Skip to content

Incorrect error when argument missing from function call unpacking TypedDict #12755

Open
@Zeckie

Description

@Zeckie

Bug Report

When supplying arguments by unpacking a TypedDict, and the TypedDict does not supply all the parameters, mypy seems to treat it as only supplying the first parameter, even if that is the one that is missing.

To Reproduce

from typing import TypedDict

def my_function(foo: int, bar: int) -> None:
    pass

class MyTypedDict(TypedDict):
    # foo: int
    bar: int

    
a: MyTypedDict = {'bar': 1}

my_function(**a) # mypy - error: Missing positional argument "bar" in call to "my_function"
my_function(bar=1) # mypy - error: Missing positional argument "foo" in call to "my_function"

https://mypy-play.net/?mypy=0.931&python=3.11&flags=strict&gist=c72be0814d2e7684453f2a8825f2e986

Expected Behavior

The line my_function(**a) should result in mypy error error: Missing positional argument "foo" in call to "my_function", as it only supplies bar.

Actual Behavior

The line my_function(**a) resulted in mypy error error: Missing positional argument "bar" in call to "my_function".

When executed, python gave this error:

TypeError: my_function() missing 1 required positional argument: 'foo'

#11753

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions