mirror of https://github.com/astral-sh/ruff
<!-- 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. |
||
|---|---|---|
| .. | ||
| FAST001.py | ||
| FAST002_0.py | ||
| FAST002_1.py | ||
| FAST003.py | ||