Coverage for tests/test_dependency_partial.py: 100%
83 statements
« prev ^ index » next coverage.py v7.6.1, created at 2025-12-04 08:29 +0000
« prev ^ index » next coverage.py v7.6.1, created at 2025-12-04 08:29 +0000
1from functools import partial 1abcdefg
2from typing import AsyncGenerator, Generator 1abcdefg
4import pytest 1abcdefg
5from fastapi import Depends, FastAPI 1abcdefg
6from fastapi.testclient import TestClient 1abcdefg
7from typing_extensions import Annotated 1abcdefg
9app = FastAPI() 1abcdefg
12def function_dependency(value: str) -> str: 1abcdefg
13 return value 1hijklmn
16async def async_function_dependency(value: str) -> str: 1abcdefg
17 return value 1hijklmn
20def gen_dependency(value: str) -> Generator[str, None, None]: 1abcdefg
21 yield value 1hijklmn
24async def async_gen_dependency(value: str) -> AsyncGenerator[str, None]: 1abcdefg
25 yield value 1hijklmn
28class CallableDependency: 1abcdefg
29 def __call__(self, value: str) -> str: 1abcdefg
30 return value 1hijklmn
33class CallableGenDependency: 1abcdefg
34 def __call__(self, value: str) -> Generator[str, None, None]: 1abcdefg
35 yield value 1hijklmn
38class AsyncCallableDependency: 1abcdefg
39 async def __call__(self, value: str) -> str: 1abcdefg
40 return value 1hijklmn
43class AsyncCallableGenDependency: 1abcdefg
44 async def __call__(self, value: str) -> AsyncGenerator[str, None]: 1abcdefg
45 yield value 1hijklmn
48class MethodsDependency: 1abcdefg
49 def synchronous(self, value: str) -> str: 1abcdefg
50 return value 1hijklmn
52 async def asynchronous(self, value: str) -> str: 1abcdefg
53 return value 1hijklmn
55 def synchronous_gen(self, value: str) -> Generator[str, None, None]: 1abcdefg
56 yield value 1hijklmn
58 async def asynchronous_gen(self, value: str) -> AsyncGenerator[str, None]: 1abcdefg
59 yield value 1hijklmn
62callable_dependency = CallableDependency() 1abcdefg
63callable_gen_dependency = CallableGenDependency() 1abcdefg
64async_callable_dependency = AsyncCallableDependency() 1abcdefg
65async_callable_gen_dependency = AsyncCallableGenDependency() 1abcdefg
66methods_dependency = MethodsDependency() 1abcdefg
69@app.get("/partial-function-dependency") 1abcdefg
70async def get_partial_function_dependency( 1abcdefg
71 value: Annotated[
72 str, Depends(partial(function_dependency, "partial-function-dependency"))
73 ],
74) -> str:
75 return value 1hijklmn
78@app.get("/partial-async-function-dependency") 1abcdefg
79async def get_partial_async_function_dependency( 1abcdefg
80 value: Annotated[
81 str,
82 Depends(
83 partial(async_function_dependency, "partial-async-function-dependency")
84 ),
85 ],
86) -> str:
87 return value 1hijklmn
90@app.get("/partial-gen-dependency") 1abcdefg
91async def get_partial_gen_dependency( 1abcdefg
92 value: Annotated[str, Depends(partial(gen_dependency, "partial-gen-dependency"))],
93) -> str:
94 return value 1hijklmn
97@app.get("/partial-async-gen-dependency") 1abcdefg
98async def get_partial_async_gen_dependency( 1abcdefg
99 value: Annotated[
100 str, Depends(partial(async_gen_dependency, "partial-async-gen-dependency"))
101 ],
102) -> str:
103 return value 1hijklmn
106@app.get("/partial-callable-dependency") 1abcdefg
107async def get_partial_callable_dependency( 1abcdefg
108 value: Annotated[
109 str, Depends(partial(callable_dependency, "partial-callable-dependency"))
110 ],
111) -> str:
112 return value 1hijklmn
115@app.get("/partial-callable-gen-dependency") 1abcdefg
116async def get_partial_callable_gen_dependency( 1abcdefg
117 value: Annotated[
118 str,
119 Depends(partial(callable_gen_dependency, "partial-callable-gen-dependency")),
120 ],
121) -> str:
122 return value 1hijklmn
125@app.get("/partial-async-callable-dependency") 1abcdefg
126async def get_partial_async_callable_dependency( 1abcdefg
127 value: Annotated[
128 str,
129 Depends(
130 partial(async_callable_dependency, "partial-async-callable-dependency")
131 ),
132 ],
133) -> str:
134 return value 1hijklmn
137@app.get("/partial-async-callable-gen-dependency") 1abcdefg
138async def get_partial_async_callable_gen_dependency( 1abcdefg
139 value: Annotated[
140 str,
141 Depends(
142 partial(
143 async_callable_gen_dependency, "partial-async-callable-gen-dependency"
144 )
145 ),
146 ],
147) -> str:
148 return value 1hijklmn
151@app.get("/partial-synchronous-method-dependency") 1abcdefg
152async def get_partial_synchronous_method_dependency( 1abcdefg
153 value: Annotated[
154 str,
155 Depends(
156 partial(
157 methods_dependency.synchronous, "partial-synchronous-method-dependency"
158 )
159 ),
160 ],
161) -> str:
162 return value 1hijklmn
165@app.get("/partial-synchronous-method-gen-dependency") 1abcdefg
166async def get_partial_synchronous_method_gen_dependency( 1abcdefg
167 value: Annotated[
168 str,
169 Depends(
170 partial(
171 methods_dependency.synchronous_gen,
172 "partial-synchronous-method-gen-dependency",
173 )
174 ),
175 ],
176) -> str:
177 return value 1hijklmn
180@app.get("/partial-asynchronous-method-dependency") 1abcdefg
181async def get_partial_asynchronous_method_dependency( 1abcdefg
182 value: Annotated[
183 str,
184 Depends(
185 partial(
186 methods_dependency.asynchronous,
187 "partial-asynchronous-method-dependency",
188 )
189 ),
190 ],
191) -> str:
192 return value 1hijklmn
195@app.get("/partial-asynchronous-method-gen-dependency") 1abcdefg
196async def get_partial_asynchronous_method_gen_dependency( 1abcdefg
197 value: Annotated[
198 str,
199 Depends(
200 partial(
201 methods_dependency.asynchronous_gen,
202 "partial-asynchronous-method-gen-dependency",
203 )
204 ),
205 ],
206) -> str:
207 return value 1hijklmn
210client = TestClient(app) 1abcdefg
213@pytest.mark.parametrize( 1abcdefg
214 "route,value",
215 [
216 ("/partial-function-dependency", "partial-function-dependency"),
217 (
218 "/partial-async-function-dependency",
219 "partial-async-function-dependency",
220 ),
221 ("/partial-gen-dependency", "partial-gen-dependency"),
222 ("/partial-async-gen-dependency", "partial-async-gen-dependency"),
223 ("/partial-callable-dependency", "partial-callable-dependency"),
224 ("/partial-callable-gen-dependency", "partial-callable-gen-dependency"),
225 ("/partial-async-callable-dependency", "partial-async-callable-dependency"),
226 (
227 "/partial-async-callable-gen-dependency",
228 "partial-async-callable-gen-dependency",
229 ),
230 (
231 "/partial-synchronous-method-dependency",
232 "partial-synchronous-method-dependency",
233 ),
234 (
235 "/partial-synchronous-method-gen-dependency",
236 "partial-synchronous-method-gen-dependency",
237 ),
238 (
239 "/partial-asynchronous-method-dependency",
240 "partial-asynchronous-method-dependency",
241 ),
242 (
243 "/partial-asynchronous-method-gen-dependency",
244 "partial-asynchronous-method-gen-dependency",
245 ),
246 ],
247)
248def test_dependency_types_with_partial(route: str, value: str) -> None: 1abcdefg
249 response = client.get(route) 1hijklmn
250 assert response.status_code == 200, response.text 1hijklmn
251 assert response.json() == value 1hijklmn