Получение автозаполнения IDE для сгенерированного кода

Я пытаюсь создать класс данных, подобный классу, но pycharm не обеспечивает автозаполнение.

from dataclasses import dataclass


def my_data(cls):
    args = ", ".join(cls.__annotations__)
    func_txt = f"def __init__(self,{args}):\n pass"
    ns = {}
    exec(func_txt, ns)
    cls.__init__ = ns['__init__']
    return cls


@my_data
class Foo:
    name: str
    place: str
    age: int


@dataclass
class Bar:
    name: str
    place: str
    age: int


if __name__ == '__main__':
    f = Foo(name="John", place="London", age=12)

Автозаполнение IDE для класса данных

Автозаполнение IDE для my_data

Как это работает для dataclass, но не для my_data? Есть ли в IDE специальная логика, чтобы заставить ее работать для dataclass, или я что-то упустил?

Обновление: Похоже, это особая логика: https://youtrack.jetbrains.com/issue/PY-27398


person balki    schedule 22.10.2020    source источник