如何解决使用自定义装饰器时Pylance 类型检测错误?

如何解决使用自定义装饰器时Pylance 类型检测错误?

我有一个使用自定义装饰器的 Python 代码片段,尽管代码成功运行,但在使用装饰的函数时,Pylance 一直显示警告。问题似乎与 Pylance 无法识别装饰的函数返回 Result[Any] 而不是 Select 有关。以下是代码:

def execute(func):

def inner_wrapper(*args, **kwargs) -> Result[Any]:

with Session.begin() as session:

result = session.execute(func(*args, **kwargs))

return result

return inner_wrapper

@execute

def query_data_source(

start_id: int = 1, max_results_amount: int = 10

) -> Select: # 忽略

stmt = (

select(

DataSource.id,

DataSource.name,

DataSource.source_url,

DataSource.author,

DataSource.description,

DataSource.cover_image_url,

DataSource.start_date,

DataSource.end_date,

)

.where(DataSource.id >= start_id)

.limit(max_results_amount)

.order_by(DataSource.id)

)

return stmt

尽管代码功能正常,但 Pylance 发出警告,假设 query_data_source 函数返回 Select 而不是 Result[Any]。如何修改此代码以消除 Pylance 警告并准确传达装饰函数的返回类型?

其中 Session 是 sqlalchemy.orm 的 session 对象。DataSouce 是一张数据库表。


回答:

加上这个试试,测试是可以的

python">from typing import Callable

def execute(func) -> Callable[..., Result]:

以上是 如何解决使用自定义装饰器时Pylance 类型检测错误? 的全部内容, 来源链接: utcz.com/p/939081.html

回到顶部