pycharm forward stati c анализ на обертке - PullRequest
0 голосов
/ 13 февраля 2020

Поддерживает ли pycharm пересылку данных c для пользовательских функций?

Пример:

# python >= 3.7
import dataclasses


@dataclasses.dataclass
class Data:
    a: int
    b: int
    c: int


things = {
    "key": [Data(1, 2, 3)],
    #     ... other data things
}

print(things)


def add_modified_thing(key, **kwargs):
    data_things = things[key]
    base = data_things[0]
    alt = dataclasses.replace(base, **kwargs)
    data_things.append(alt)


# Very awkward but static analysis works
things["key"].append(dataclasses.replace(things["key"][0], b=-7))
# Clean but no static analysis
add_modified_thing("key", a=6)

print(things)

В этом примере я хотел бы использовать add_modified_thing и по-прежнему получать предупреждения о неправильных именах или неправильных типах. Есть ли способ убедить Pycharm проверить функцию-обертку, как ожидалось?


В стороне:

Похоже, что Pycharm имеет ограниченную поддержку (/ не делает) для анализа метапрограммирования ( 1 , 2 ), но на самом деле это не метапрограммирование. Я могу только предположить, что у Пичарма много внутренних магов c, чтобы сделать работу c анализа dataclasses.replace работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...