推荐 最新
ZZZ葡萄皮

如何解决使用自定义装饰器时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 是一张数据库表。

0
1
0
浏览量120