♻️ Simplify `AsyncExitStackMiddleware` as without Python 3.6 `AsyncExitStack` is always available (#9657)

♻️ Simplify AsyncExitStackMiddleware as without Python 3.6 AsyncExitStack is always available
This commit is contained in:
Sebastián Ramírez 2023-06-11 23:49:18 +02:00 committed by GitHub
parent df58ecdee2
commit 17e49bc9f7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 13 additions and 16 deletions

View File

@ -10,19 +10,16 @@ class AsyncExitStackMiddleware:
self.context_name = context_name self.context_name = context_name
async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None: async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None:
if AsyncExitStack: dependency_exception: Optional[Exception] = None
dependency_exception: Optional[Exception] = None async with AsyncExitStack() as stack:
async with AsyncExitStack() as stack: scope[self.context_name] = stack
scope[self.context_name] = stack try:
try: await self.app(scope, receive, send)
await self.app(scope, receive, send) except Exception as e:
except Exception as e: dependency_exception = e
dependency_exception = e raise e
raise e if dependency_exception:
if dependency_exception: # This exception was possibly handled by the dependency but it should
# This exception was possibly handled by the dependency but it should # still bubble up so that the ServerErrorMiddleware can return a 500
# still bubble up so that the ServerErrorMiddleware can return a 500 # or the ExceptionMiddleware can catch and handle any other exceptions
# or the ExceptionMiddleware can catch and handle any other exceptions raise dependency_exception
raise dependency_exception
else:
await self.app(scope, receive, send) # pragma: no cover