Поддерживает ли 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 работы.