From 0a30bebf85b6bb8d2ed5a04278f78b4a739aad17 Mon Sep 17 00:00:00 2001 From: Amulya K H Date: Tue, 3 Feb 2026 14:59:00 +0530 Subject: [PATCH 1/3] Add regression test for Annotated ForwardRef dependency --- tests/test_dependency_wrapped.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tests/test_dependency_wrapped.py b/tests/test_dependency_wrapped.py index a4044112a2..6e61c12233 100644 --- a/tests/test_dependency_wrapped.py +++ b/tests/test_dependency_wrapped.py @@ -8,6 +8,9 @@ from fastapi import Depends, FastAPI from fastapi.concurrency import iterate_in_threadpool, run_in_threadpool from fastapi.testclient import TestClient +from typing import Annotated, ForwardRef + + if sys.version_info >= (3, 13): # pragma: no cover from inspect import iscoroutinefunction else: # pragma: no cover @@ -447,3 +450,21 @@ def test_class_dependency(route): response = client.get(route) assert response.status_code == 200, response.text assert response.json() is True + +def test_annotated_forwardref_dependency(): + app = FastAPI() + + User = ForwardRef("User") + + def get_user() -> "User": + return {"name": "amulya"} + + @app.get("/") + def read_user(user: Annotated[User, Depends(get_user)]): + return user + + client = TestClient(app) + response = client.get("/") + + assert response.status_code == 200 + assert response.json() == {"name": "amulya"} From 49daf31abd0a7c522a08ffc5a62f88fb93ab68e9 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci-lite[bot]" <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Date: Tue, 3 Feb 2026 09:30:49 +0000 Subject: [PATCH 2/3] =?UTF-8?q?=F0=9F=8E=A8=20Auto=20format?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/test_dependency_wrapped.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tests/test_dependency_wrapped.py b/tests/test_dependency_wrapped.py index 6e61c12233..a593a4135f 100644 --- a/tests/test_dependency_wrapped.py +++ b/tests/test_dependency_wrapped.py @@ -2,15 +2,13 @@ import inspect import sys from collections.abc import AsyncGenerator, Generator from functools import wraps +from typing import Annotated, ForwardRef import pytest from fastapi import Depends, FastAPI from fastapi.concurrency import iterate_in_threadpool, run_in_threadpool from fastapi.testclient import TestClient -from typing import Annotated, ForwardRef - - if sys.version_info >= (3, 13): # pragma: no cover from inspect import iscoroutinefunction else: # pragma: no cover @@ -451,6 +449,7 @@ def test_class_dependency(route): assert response.status_code == 200, response.text assert response.json() is True + def test_annotated_forwardref_dependency(): app = FastAPI() From dc0029f1141daf873a75b5e5cce70d9926924faf Mon Sep 17 00:00:00 2001 From: Amulya K H Date: Wed, 4 Feb 2026 07:43:46 +0530 Subject: [PATCH 3/3] Move ForwardRef annotated dependency test to dedicated module --- tests/test_forwardref_in_annotation.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 tests/test_forwardref_in_annotation.py diff --git a/tests/test_forwardref_in_annotation.py b/tests/test_forwardref_in_annotation.py new file mode 100644 index 0000000000..9ccc73f508 --- /dev/null +++ b/tests/test_forwardref_in_annotation.py @@ -0,0 +1,23 @@ +from typing import Annotated, ForwardRef + +from fastapi import Depends, FastAPI +from fastapi.testclient import TestClient + + +def test_annotated_forwardref_dependency(): + app = FastAPI() + + User = ForwardRef("User") + + def get_user() -> "User": + return {"name": "amulya"} + + @app.get("/") + def read_user(user: Annotated[User, Depends(get_user)]): + return user + + client = TestClient(app) + response = client.get("/") + + assert response.status_code == 200 + assert response.json() == {"name": "amulya"}