Skip to content

fast-api-unused-path-parameter (FAST003)#

Derived from the FastAPI linter.

Fix is sometimes available.

This rule is unstable and in preview. The --preview flag is required for use.

What it does#

Identifies FastAPI routes that declare path parameters in the route path that are not included in the function signature.

Why is this bad?#

Path parameters are used to extract values from the URL path.

If a path parameter is declared in the route path but not in the function signature, it will not be accessible in the function body, which is likely a mistake.

If a path parameter is declared in the route path, but as a positional-only argument in the function signature, it will also not be accessible in the function body, as FastAPI will not inject the parameter.

Known problems#

If the path parameter is not a valid Python identifier (e.g., user-id, as opposed to user_id), FastAPI will normalize it. However, this rule simply ignores such path parameters, as FastAPI's normalization behavior is undocumented.

Example#

from fastapi import FastAPI

app = FastAPI()


@app.get("/things/{thing_id}")
async def read_thing(query: str): ...

Use instead:

from fastapi import FastAPI

app = FastAPI()


@app.get("/things/{thing_id}")
async def read_thing(thing_id: int, query: str): ...

Fix safety#

This rule's fix is marked as unsafe, as modifying a function signature can change the behavior of the code.