如何解决使用自定义装饰器时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 Callabledef execute(func) -> Callable[..., Result]:
以上是 如何解决使用自定义装饰器时Pylance 类型检测错误? 的全部内容, 来源链接: utcz.com/p/939081.html