Несовместимый тип Mypy не распознает объекты Union of Dataclass как ключевые - PullRequest
1 голос
/ 12 октября 2019

MyPy дает мне incompatible type error, когда ожидаемый тип параметра функции Dict[Union[CustomObject1, CustomObject2], ...], и я передаю Dict[CustomObject1, ...].

Учитывайте следующее:

from typing import Dict, List, Union

import dataclasses


@dataclasses.dataclass(frozen=True)
class MyKey:
    myStr: str


@dataclasses.dataclass(frozen=True)
class MySecondKey:
    myStr: str


@dataclasses.dataclass
class CustomDataObject:
    dataProp: Dict[MySecondKey, Dict[str, List[Dict[str, int]]]]


sample_data = {MySecondKey(myStr="a"): {"foo": [{"bar": 0}]}}
sample_prop = CustomDataObject(dataProp=sample_data).dataProp


def dummy_func(
    some_data: Dict[
        Union[MyKey, MySecondKey], Dict[str, List[Dict[str, int]]]
    ],
):
    print(some_data)


print(dummy_func(sample_prop))

Ошибка: Argument 1 to "dummy_func" has incompatible type; expected "Dict[Union[MyKey, MySecondKey], Dict[str, List[Dict[str, int]]]]".

Почему это происходит? Как я могу решить эту проблему?

...