@@ -200,14 +200,14 @@ def __call__(self, media: Any, content_type: Optional[str] = ...) -> bytes: ...
200200Responder = Union [ResponderMethod , AsgiResponderMethod ]
201201
202202
203- # Middleware
204- class MiddlewareWithProcessRequest (Protocol ):
203+ # WSGI middleware interface
204+ class WsgiMiddlewareWithProcessRequest (Protocol ):
205205 """WSGI Middleware with request handler."""
206206
207207 def process_request (self , req : Request , resp : Response ) -> None : ...
208208
209209
210- class MiddlewareWithProcessResource (Protocol ):
210+ class WsgiMiddlewareWithProcessResource (Protocol ):
211211 """WSGI Middleware with resource handler."""
212212
213213 def process_resource (
@@ -219,14 +219,15 @@ def process_resource(
219219 ) -> None : ...
220220
221221
222- class MiddlewareWithProcessResponse (Protocol ):
222+ class WsgiMiddlewareWithProcessResponse (Protocol ):
223223 """WSGI Middleware with response handler."""
224224
225225 def process_response (
226226 self , req : Request , resp : Response , resource : object , req_succeeded : bool
227227 ) -> None : ...
228228
229229
230+ # ASGI lifespan middleware interface
230231class AsgiMiddlewareWithProcessStartup (Protocol ):
231232 """ASGI middleware with startup handler."""
232233
@@ -243,6 +244,7 @@ async def process_shutdown(
243244 ) -> None : ...
244245
245246
247+ # ASGI middleware interface
246248class AsgiMiddlewareWithProcessRequest (Protocol ):
247249 """ASGI middleware with request handler."""
248250
@@ -273,13 +275,14 @@ async def process_response(
273275 ) -> None : ...
274276
275277
276- class MiddlewareWithAsyncProcessRequestWs (Protocol ):
278+ # ASGI WebSocket middleware
279+ class AsgiMiddlewareWithProcessRequestWs (Protocol ):
277280 """ASGI middleware with WebSocket request handler."""
278281
279282 async def process_request_ws (self , req : AsgiRequest , ws : WebSocket ) -> None : ...
280283
281284
282- class MiddlewareWithAsyncProcessResourceWs (Protocol ):
285+ class AsgiMiddlewareWithProcessResourceWs (Protocol ):
283286 """ASGI middleware with WebSocket resource handler."""
284287
285288 async def process_resource_ws (
@@ -291,15 +294,18 @@ async def process_resource_ws(
291294 ) -> None : ...
292295
293296
294- class UniversalMiddlewareWithProcessRequest (MiddlewareWithProcessRequest , Protocol ):
297+ # Universal middleware that provides async versions via the _async postfix
298+ class UniversalMiddlewareWithProcessRequest (WsgiMiddlewareWithProcessRequest , Protocol ):
295299 """WSGI/ASGI middleware with request handler."""
296300
297301 async def process_request_async (
298302 self , req : AsgiRequest , resp : AsgiResponse
299303 ) -> None : ...
300304
301305
302- class UniversalMiddlewareWithProcessResource (MiddlewareWithProcessResource , Protocol ):
306+ class UniversalMiddlewareWithProcessResource (
307+ WsgiMiddlewareWithProcessResource , Protocol
308+ ):
303309 """WSGI/ASGI middleware with resource handler."""
304310
305311 async def process_resource_async (
@@ -311,7 +317,9 @@ async def process_resource_async(
311317 ) -> None : ...
312318
313319
314- class UniversalMiddlewareWithProcessResponse (MiddlewareWithProcessResponse , Protocol ):
320+ class UniversalMiddlewareWithProcessResponse (
321+ WsgiMiddlewareWithProcessResponse , Protocol
322+ ):
315323 """WSGI/ASGI middleware with response handler."""
316324
317325 async def process_response_async (
@@ -326,19 +334,34 @@ async def process_response_async(
326334# NOTE(jkmnt): This typing is far from perfect due to the Python typing limitations,
327335# but better than nothing. Middleware conforming to any protocol of the union
328336# will pass the type check. Other protocols violations are not checked.
329- Middleware = Union [
330- MiddlewareWithProcessRequest ,
331- MiddlewareWithProcessResource ,
332- MiddlewareWithProcessResponse ,
337+ SyncMiddleware = Union [
338+ WsgiMiddlewareWithProcessRequest ,
339+ WsgiMiddlewareWithProcessResource ,
340+ WsgiMiddlewareWithProcessResponse ,
333341]
342+ """Synchronous (WSGI) application middleware.
334343
335- AsgiMiddleware = Union [
344+ This type alias reflects the middleware interface for
345+ components that can be used with a WSGI app.
346+ """
347+
348+ AsyncMiddleware = Union [
336349 AsgiMiddlewareWithProcessRequest ,
337350 AsgiMiddlewareWithProcessResource ,
338351 AsgiMiddlewareWithProcessResponse ,
352+ # Lifespan middleware
339353 AsgiMiddlewareWithProcessStartup ,
340354 AsgiMiddlewareWithProcessShutdown ,
355+ # WebSocket middleware
356+ AsgiMiddlewareWithProcessRequestWs ,
357+ AsgiMiddlewareWithProcessResourceWs ,
358+ # Universal middleware with process_*_async methods
341359 UniversalMiddlewareWithProcessRequest ,
342360 UniversalMiddlewareWithProcessResource ,
343361 UniversalMiddlewareWithProcessResponse ,
344362]
363+ """Asynchronous (ASGI) application middleware.
364+
365+ This type alias reflects the middleware interface for components that can be
366+ used with an ASGI app.
367+ """
0 commit comments