4

我正在尝试使用密集使用 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)

此代码工作正常,但类型检查失败。

我的输出:

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")
4

1 回答 1

5

type: ignore是目前唯一的解决方案。

pydantic 的第 1 版应该在几天内发布,其中Field(在 v1 中替换Schema)是一个返回的函数Any,应该可以解决这个问题。

tl; dr 等待 v1 发布并由 fastapi 支持,您的问题应该得到解决。

于 2019-10-21T19:36:44.647 回答