ruff/crates/ruff_linter/resources/test/fixtures/fastapi
Denys Kyslytsyn e677863787
[`fastapi`] Avoid false positive for class dependencies (`FAST003`) (#18271)
<!--
Thank you for contributing to Ruff/ty! To help us out with reviewing,
please consider the following:

- Does this pull request include a summary of the change? (See below.)
- Does this pull request include a descriptive title? (Please prefix
with `[ty]` for ty pull
  requests.)
- Does this pull request include references to any relevant issues?
-->

## Summary

Closes #17226.

This PR updates the `FAST003` rule to correctly handle [FastAPI class
dependencies](https://fastapi.tiangolo.com/tutorial/dependencies/classes-as-dependencies/).
Specifically, if a path parameter is declared in either:

- a `pydantic.BaseModel` used as a dependency, or  
- the `__init__` method of a class used as a dependency,  

then `FAST003` will no longer incorrectly report it as unused.

FastAPI allows a shortcut when using annotated class dependencies -
`Depends` can be called without arguments, e.g.:

```python
class MyParams(BaseModel):
    my_id: int

@router.get("/{my_id}")
def get_id(params: Annotated[MyParams, Depends()]): ...
```
This PR ensures that such usage is properly supported by the linter.

Note: Support for dataclasses is not included in this PR. Let me know if
you’d like it to be added.

## Test Plan

Added relevant test cases to the `FAST003.py` fixture.
2025-06-02 14:34:50 -04:00
..
FAST001.py Use TypeChecker for detecting fastapi routes (#15093) 2024-12-21 15:45:28 +01:00
FAST002_0.py [`FastAPI`] Update `Annotated` fixes (`FAST002`) (#15462) 2025-01-15 13:05:53 -05:00
FAST002_1.py [`FastAPI`] Update `Annotated` fixes (`FAST002`) (#15462) 2025-01-15 13:05:53 -05:00
FAST003.py [`fastapi`] Avoid false positive for class dependencies (`FAST003`) (#18271) 2025-06-02 14:34:50 -04:00