Skip to content

FAST001 false positive for undefined names #20945

@dylwil3

Description

@dylwil3

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

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingruleImplementing or modifying a lint rule

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions