Summary
We give a lint here for FAST001 here when probably we should abort because neither Item nor Foo are defined.
Example:
from __future__ import annotations
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
@app.post("/items/", response_model=Foo) # false positive FAST001
async def create_item(item: Item) -> Item:
return item
Playground
This is because we check that two resolved names are equal - but .resolve_name returns an Option and in this case resolving both Foo and Item gives None:
|
return semantic.resolve_name(response_mode_name_expr) |
|
== semantic.resolve_name(return_value_name_expr); |
Version
No response
Summary
We give a lint here for FAST001 here when probably we should abort because neither
ItemnorFooare defined.Example:
Playground
This is because we check that two resolved names are equal - but
.resolve_namereturns anOptionand in this case resolving bothFooandItemgivesNone:ruff/crates/ruff_linter/src/rules/fastapi/rules/fastapi_redundant_response_model.rs
Lines 124 to 125 in 6e7ff07
Version
No response