11"""Unit tests for the trivial-route fast-path classification.
22
3- Verifies that ``route._is_trivial `` is True for simple async handlers that
3+ Verifies that ``route._trivial `` is True for simple async handlers that
44return a Response directly, and False whenever any feature that requires the
55full ``_execute_route`` path is present (DI, deps, perms, bg-tasks, etc.).
66
@@ -49,7 +49,7 @@ async def handler() -> Response:
4949 return Response (b"pong" )
5050
5151 route = _get_route (app , "/ping" )
52- assert route ._is_trivial is True # pyright: ignore[reportPrivateUsage]
52+ assert route ._trivial is True # pyright: ignore[reportPrivateUsage]
5353
5454 def test_request_only_param (self ) -> None :
5555 """Handler that only takes Request is trivial."""
@@ -60,7 +60,7 @@ async def handler(request: Request) -> Response:
6060 return PlainTextResponse ("hi" )
6161
6262 route = _get_route (app , "/hello" )
63- assert route ._is_trivial is True # pyright: ignore[reportPrivateUsage]
63+ assert route ._trivial is True # pyright: ignore[reportPrivateUsage]
6464
6565 def test_path_param_only (self ) -> None :
6666 """Handler with a single path param is trivial."""
@@ -71,7 +71,7 @@ async def handler(item_id: str) -> Response:
7171 return Response (item_id .encode ())
7272
7373 route = _get_route (app , "/items/{item_id}" )
74- assert route ._is_trivial is True # pyright: ignore[reportPrivateUsage]
74+ assert route ._trivial is True # pyright: ignore[reportPrivateUsage]
7575
7676 def test_query_param_with_default (self ) -> None :
7777 """Handler with a plain query param default is trivial."""
@@ -82,7 +82,7 @@ async def handler(q: str = "") -> Response:
8282 return Response (q .encode ())
8383
8484 route = _get_route (app , "/search" )
85- assert route ._is_trivial is True # pyright: ignore[reportPrivateUsage]
85+ assert route ._trivial is True # pyright: ignore[reportPrivateUsage]
8686
8787 def test_json_response_return (self ) -> None :
8888 """Handler returning JSONResponse is trivial."""
@@ -93,7 +93,7 @@ async def handler() -> JSONResponse:
9393 return JSONResponse ({"ok" : True })
9494
9595 route = _get_route (app , "/data" )
96- assert route ._is_trivial is True # pyright: ignore[reportPrivateUsage]
96+ assert route ._trivial is True # pyright: ignore[reportPrivateUsage]
9797
9898
9999# ---------------------------------------------------------------------------
@@ -111,7 +111,7 @@ def handler() -> Response: # type: ignore[return]
111111 return Response (b"sync" )
112112
113113 route = _get_route (app , "/sync" )
114- assert route ._is_trivial is False # pyright: ignore[reportPrivateUsage]
114+ assert route ._trivial is False # pyright: ignore[reportPrivateUsage]
115115
116116 def test_depends_callable_not_trivial (self ) -> None :
117117 """Routes with Depends() callable injection are NOT trivial."""
@@ -125,7 +125,7 @@ async def handler(val: Annotated[str, Depends(my_dep)]) -> Response:
125125 return Response (val .encode ())
126126
127127 route = _get_route (app , "/dep" )
128- assert route ._is_trivial is False # pyright: ignore[reportPrivateUsage]
128+ assert route ._trivial is False # pyright: ignore[reportPrivateUsage]
129129
130130 def test_permissions_not_trivial (self ) -> None :
131131 """Routes with permissions are NOT trivial."""
@@ -136,7 +136,7 @@ async def handler() -> Response:
136136 return Response (b"secure" )
137137
138138 route = _get_route (app , "/secure" )
139- assert route ._is_trivial is False # pyright: ignore[reportPrivateUsage]
139+ assert route ._trivial is False # pyright: ignore[reportPrivateUsage]
140140
141141 def test_route_level_dependencies_not_trivial (self ) -> None :
142142 """Routes with side-effect dependencies=[Depends(...)] are NOT trivial."""
@@ -150,7 +150,7 @@ async def handler() -> Response:
150150 return Response (b"guarded" )
151151
152152 route = _get_route (app , "/guarded" )
153- assert route ._is_trivial is False # pyright: ignore[reportPrivateUsage]
153+ assert route ._trivial is False # pyright: ignore[reportPrivateUsage]
154154
155155 def test_background_tasks_not_trivial (self ) -> None :
156156 """Routes injecting BackgroundTasks are NOT trivial."""
@@ -161,7 +161,7 @@ async def handler(bg: BackgroundTasks) -> Response:
161161 return Response (b"bg" )
162162
163163 route = _get_route (app , "/bg" )
164- assert route ._is_trivial is False # pyright: ignore[reportPrivateUsage]
164+ assert route ._trivial is False # pyright: ignore[reportPrivateUsage]
165165
166166 def test_response_model_not_trivial (self ) -> None :
167167 """Routes with an explicit response_model are NOT trivial."""
@@ -177,7 +177,7 @@ async def handler() -> Item:
177177 return Item (name = "x" )
178178
179179 route = _get_route (app , "/item" )
180- assert route ._is_trivial is False # pyright: ignore[reportPrivateUsage]
180+ assert route ._trivial is False # pyright: ignore[reportPrivateUsage]
181181
182182 def test_deprecated_not_trivial (self ) -> None :
183183 """Deprecated routes are NOT trivial (need deprecation headers)."""
@@ -188,7 +188,7 @@ async def handler() -> Response:
188188 return Response (b"old" )
189189
190190 route = _get_route (app , "/old" )
191- assert route ._is_trivial is False # pyright: ignore[reportPrivateUsage]
191+ assert route ._trivial is False # pyright: ignore[reportPrivateUsage]
192192
193193 def test_exclude_none_not_trivial (self ) -> None :
194194 """Routes with response_model_exclude_none are NOT trivial."""
@@ -199,7 +199,7 @@ async def handler() -> dict: # type: ignore[return]
199199 return {"a" : 1 , "b" : None }
200200
201201 route = _get_route (app , "/filtered" )
202- assert route ._is_trivial is False # pyright: ignore[reportPrivateUsage]
202+ assert route ._trivial is False # pyright: ignore[reportPrivateUsage]
203203
204204
205205# ---------------------------------------------------------------------------
@@ -219,7 +219,7 @@ async def handler() -> Response:
219219 return PlainTextResponse ("Hello, World!" )
220220
221221 route = _get_route (app , "/hello" )
222- assert route ._is_trivial is True # pyright: ignore[reportPrivateUsage]
222+ assert route ._trivial is True # pyright: ignore[reportPrivateUsage]
223223
224224 client = TestClient (app )
225225 resp = client .get ("/hello" )
@@ -237,7 +237,7 @@ async def handler(request: Request) -> Response:
237237 return PlainTextResponse (request .path )
238238
239239 route = _get_route (app , "/echo-path" )
240- assert route ._is_trivial is True # pyright: ignore[reportPrivateUsage]
240+ assert route ._trivial is True # pyright: ignore[reportPrivateUsage]
241241
242242 client = TestClient (app )
243243 resp = client .get ("/echo-path" )
@@ -254,7 +254,7 @@ async def handler(name: str = "world") -> Response:
254254 return PlainTextResponse (f"hello { name } " )
255255
256256 route = _get_route (app , "/greet" )
257- assert route ._is_trivial is True # pyright: ignore[reportPrivateUsage]
257+ assert route ._trivial is True # pyright: ignore[reportPrivateUsage]
258258
259259 client = TestClient (app )
260260 assert client .get ("/greet" ).text == "hello world"
@@ -272,7 +272,7 @@ async def handler() -> Response:
272272 raise HTTPException (status_code = 403 , detail = "Forbidden" )
273273
274274 route = _get_route (app , "/fail" )
275- assert route ._is_trivial is True # pyright: ignore[reportPrivateUsage]
275+ assert route ._trivial is True # pyright: ignore[reportPrivateUsage]
276276
277277 client = TestClient (app )
278278 resp = client .get ("/fail" )
0 commit comments