]> git.ipfire.org Git - thirdparty/starlette.git/commitdiff
Create `anyio.Event` on async context (#2459)
authorMarcelo Trylesinski <marcelotryle@gmail.com>
Sun, 4 Feb 2024 12:50:31 +0000 (13:50 +0100)
committerGitHub <noreply@github.com>
Sun, 4 Feb 2024 12:50:31 +0000 (05:50 -0700)
* Create `anyio.Event` using a blocking portal

* Use cached property

* Ups

starlette/testclient.py

index 5b557032ece239fd28977e2b93bf246dc9bd844c..9e3ece4d9dbe80b20812dfe9dcb6b9eaffa84801 100644 (file)
@@ -10,6 +10,7 @@ import sys
 import typing
 import warnings
 from concurrent.futures import Future
+from functools import cached_property
 from types import GeneratorType
 from urllib.parse import unquote, urljoin
 
@@ -95,7 +96,6 @@ class WebSocketTestSession:
     def __enter__(self) -> WebSocketTestSession:
         self.exit_stack = contextlib.ExitStack()
         self.portal = self.exit_stack.enter_context(self.portal_factory())
-        self.should_close = anyio.Event()
 
         try:
             _: Future[None] = self.portal.start_task_soon(self._run)
@@ -109,6 +109,10 @@ class WebSocketTestSession:
         self.extra_headers = message.get("headers", None)
         return self
 
+    @cached_property
+    def should_close(self) -> anyio.Event:
+        return anyio.Event()
+
     async def _notify_close(self) -> None:
         self.should_close.set()