FastAPI / Pydantic в проекте с MyPy - PullRequest
0 голосов
/ 21 мая 2019

В настоящее время я работаю над учебником по fastAPI, и моя среда настроена на использование black, flake8, bandit и mypy. Все в этом уроке работает нормально, но мне постоянно приходится # печатать: игнорировать вещи, чтобы заставить mypy взаимодействовать.

class Item(BaseModel):
    name: str
    description: str = None
    price: float
    tax: float = None


@app.post("/items/")
async def create_items(item: Item) -> Item:
    return item

Mypy тогда ошибки:

 ❯ mypy main.py                                                                                                                                                                                                 [14:34:08]
main.py:9: error: Incompatible types in assignment (expression has type "None", variable has type "str")
main.py:11: error: Incompatible types in assignment (expression has type "None", variable has type "float") 

Я мог бы # type: ignore, но тогда я теряю подсказки типов и проверку в моем редакторе. Я что-то упускаю из виду или мне просто нужно отключить mypy для проектов FastAPI?

1 Ответ

1 голос
/ 21 мая 2019

Вы можете использовать Optional:

from typing import Optional

class Item(BaseModel):
    name: str
    description: Optional[str] = None
    price: float
    tax: Optional[float] = None

Это говорит mypy, что значение должно быть этого типа, но None приемлемо.

...