pydantic 与 mypy 的结合使用
Usage of pydantic with mypy
我正在尝试使用大量使用 pydantic 的 FastAPI 编写应用程序。我还想使用 mypy
对我的代码进行类型检查。如何在不冲突的情况下为 pydantic 和 mypy 使用类型注释?
我知道 type: ignore
评论,但在我看来这是某种作弊 :)
示例:
from pydantic import BaseModel, Schema
class UsersQuery(BaseModel):
limit: int = Schema(default=100, gt=0, le=100)
offset: int = Schema(default=0, ge=0)
此代码工作正常,但类型检查失败。
mypy 输出:
error: Incompatible types in assignment (expression has type "Schema", variable has type "int")
error: Incompatible types in assignment (expression has type "Schema", variable has type "int")
type: ignore
是目前唯一的解决方案。
pydantic 的第 1 版应该会在几天内发布,其中 Field
(取代 v1 中的 Schema
)是一个返回 Any
的函数,应该可以解决这个问题。
tl;dr 等待 v1 发布并得到 fastapi 的支持,您的问题应该会得到解决。
我正在尝试使用大量使用 pydantic 的 FastAPI 编写应用程序。我还想使用 mypy
对我的代码进行类型检查。如何在不冲突的情况下为 pydantic 和 mypy 使用类型注释?
我知道 type: ignore
评论,但在我看来这是某种作弊 :)
示例:
from pydantic import BaseModel, Schema
class UsersQuery(BaseModel):
limit: int = Schema(default=100, gt=0, le=100)
offset: int = Schema(default=0, ge=0)
此代码工作正常,但类型检查失败。
mypy 输出:
error: Incompatible types in assignment (expression has type "Schema", variable has type "int")
error: Incompatible types in assignment (expression has type "Schema", variable has type "int")
type: ignore
是目前唯一的解决方案。
pydantic 的第 1 版应该会在几天内发布,其中 Field
(取代 v1 中的 Schema
)是一个返回 Any
的函数,应该可以解决这个问题。
tl;dr 等待 v1 发布并得到 fastapi 的支持,您的问题应该会得到解决。