Ruff fast-api-non-annotated-dependency (FAST002)

fast-api-non-annotated-dependency в Ruff проверяет код на предупреждение FAST002. Правило относится к группе FastAPI.

Почему это неправильно

В FastAPI это может сделать маршрут менее очевидным, сломать работу параметров или создать лишнее дублирование в объявлении API.

Если валидатор показывает это предупреждение, исправьте место, на которое указывает Ruff, ориентируясь на смысл правила fast-api-non-annotated-dependency и пример ниже.

Пример ошибки

from fastapi import Depends, FastAPI

app = FastAPI()


async def common_parameters(q: str | None = None, skip: int = 0, limit: int = 100):
    return {"q": q, "skip": skip, "limit": limit}


@app.get("/items/")
async def read_items(commons: dict = Depends(common_parameters)):
    return commons

Как правильно

from typing import Annotated

from fastapi import Depends, FastAPI

app = FastAPI()


async def common_parameters(q: str | None = None, skip: int = 0, limit: int = 100):
    return {"q": q, "skip": skip, "limit": limit}


@app.get("/items/")
async def read_items(commons: Annotated[dict, Depends(common_parameters)]):
    return commons

Автоисправление

Ruff может предложить автоисправление в некоторых случаях.