为什么 FuncTools.wraps 不保留 IntelliSense?

why isn't functools.wraps preserving intellisense?

提问人:prosody 提问时间:10/8/2023 更新时间:10/8/2023 访问量:38

问:

蟒蛇 3.12 PyCharm 专业版 2023.2.2

我有这个(精简的)代码,我在其中检查输入是否为 OR ,然后根据需要进行转换。装饰器就位后,pycharm 不会警告我无法传递给 .我以为functools.wraps应该解决这个确切的问题?如果我注释掉装饰器,我会得到所需的波浪形红线idserialget_iddfserial_to_id

def a_decorator(func):
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        return func(*args, **kwargs)
    return wrapper

def an_id(id_or_serial):
    return len(id_or_serial) == 4

@a_decorator
def serial_to_id(serial, df):
    return convert(df=df, value=serial)

def get_id(id_or_serial):
    return id_or_serial if an_id(id_or_serial) else serial_to_id(id_or_serial)

Python 装饰器 包装器 FuncTools

评论

0赞 slothrop 10/8/2023
看起来像是 PyCharm 的一个未决问题:youtrack.jetbrains.com/issue/PY-62760/Support-functools.wraps
0赞 slothrop 10/8/2023
这回答了你的问题吗?Python 使用方法包装组件构造函数并保留参数完成
0赞 prosody 10/8/2023
谢谢!!我什至没有想到,这只不过是我对我正在做的事情的片面理解!
0赞 slothrop 10/8/2023
在这种情况下,不是你,而是IDE:)
0赞 prosody 10/8/2023
可悲的是,这个问题似乎是在 - Checks Stone Tablet - 2016 中提出的。所以我只能假设他们无意解决这个问题。我喜欢PyCharm。我第一次感到非常失望。youtrack.jetbrains.com/issue/PY-23067/......

答: 暂无答案