Как набрать подсказку для функции, которая возвращает NamedTuple, созданный внутри функции

Линтер моей IDE (PyCharm) указывает, что я делаю ошибку с подсказкой типа return при создании namedtuple внутри функции. Проблема, похоже, в том, что я говорю, что верну тип NamedTuple, хотя на самом деле я возвращаю тип MyNamedTuple. Как я могу это решить?

Пример:

from typing import Dict, NamedTuple

def foo(bar: Dict) -> NamedTuple:
    MyNamedTuple = NamedTuple("MyNamedTuple", [(k, int) for k in bar.keys()])
    d = {k: v for k, v in bar.items()}
    return MyNamedTuple(**d)

>>> foo({"a": 1, "b": 2})
MyNamedTuple(a=1, b=2)


person jedge    schedule 10.06.2020    source источник
comment
Вы можете сделать def foo(bar: Dict) -> 'MyNamedTuple' в качестве обходного пути.   -  person Asocia    schedule 10.06.2020
comment
Я бы сказал, просто не делайте этого, создание именованного кортежа практически с любым полем выглядит для меня очень плохой практикой.   -  person Hollay-Horváth Zsombor    schedule 10.06.2020
comment
Спасибо @Asocia! Это может работать как обходной путь. И спасибо за поднятие @ Hollay-Horváth Zsombor - я только что опубликовал отдельно для обсуждения этого здесь на случай, если вы захотите взглянуть. Спасибо еще раз!   -  person jedge    schedule 10.06.2020