]> git.ipfire.org Git - thirdparty/starlette.git/commitdiff
fix create_memory_object_stream not subscriptable at runtime in old anyio versions...
authorThomas Grainger <tagrain@gmail.com>
Fri, 3 Jan 2025 13:16:39 +0000 (13:16 +0000)
committerGitHub <noreply@github.com>
Fri, 3 Jan 2025 13:16:39 +0000 (13:16 +0000)
pyproject.toml
starlette/middleware/base.py
starlette/testclient.py

index 223b6319fb76666498c8dda2f26ad8b223a7959b..02a3820fca8019d743a184412b01b8e875b43c0f 100644 (file)
@@ -26,7 +26,7 @@ classifiers = [
     "Topic :: Internet :: WWW/HTTP",
 ]
 dependencies = [
-    "anyio>=3.4.0,<5",
+    "anyio>=3.6.2,<5",
     "typing_extensions>=3.10.0; python_version < '3.10'",
 ]
 
index 6e37c6f603b537a08eae32070ee3545543b566a5..f146984b3428c5217a9e62aa001ff87f3ae92d2e 100644 (file)
@@ -172,7 +172,8 @@ class BaseHTTPMiddleware:
             response.raw_headers = message["headers"]
             return response
 
-        send_stream, recv_stream = anyio.create_memory_object_stream[Message]()
+        streams: anyio.create_memory_object_stream[Message] = anyio.create_memory_object_stream()
+        send_stream, recv_stream = streams
         with recv_stream, send_stream, collapse_excgroups():
             async with anyio.create_task_group() as task_group:
                 response = await self.dispatch_func(request, call_next)
index 4f9788feb8828e70bba98180ee58153815032bb3..fb2ad6e3555b62433c27c48fd9760dabdad52801 100644 (file)
@@ -117,8 +117,10 @@ class WebSocketTestSession:
         """
         The sub-thread in which the websocket session runs.
         """
-        send_tx, send_rx = anyio.create_memory_object_stream[Message](math.inf)
-        receive_tx, receive_rx = anyio.create_memory_object_stream[Message](math.inf)
+        send: anyio.create_memory_object_stream[Message] = anyio.create_memory_object_stream(math.inf)
+        send_tx, send_rx = send
+        receive: anyio.create_memory_object_stream[Message] = anyio.create_memory_object_stream(math.inf)
+        receive_tx, receive_rx = receive
         with send_tx, send_rx, receive_tx, receive_rx, anyio.CancelScope() as cs:
             self._receive_tx = receive_tx
             self._send_rx = send_rx
@@ -657,14 +659,16 @@ class TestClient(httpx.Client):
             def reset_portal() -> None:
                 self.portal = None
 
-            send1, receive1 = anyio.create_memory_object_stream[
-                typing.Union[typing.MutableMapping[str, typing.Any], None]
-            ](math.inf)
-            send2, receive2 = anyio.create_memory_object_stream[typing.MutableMapping[str, typing.Any]](math.inf)
-            for channel in (send1, send2, receive1, receive2):
+            send: anyio.create_memory_object_stream[typing.MutableMapping[str, typing.Any] | None] = (
+                anyio.create_memory_object_stream(math.inf)
+            )
+            receive: anyio.create_memory_object_stream[typing.MutableMapping[str, typing.Any]] = (
+                anyio.create_memory_object_stream(math.inf)
+            )
+            for channel in (*send, *receive):
                 stack.callback(channel.close)
-            self.stream_send = StapledObjectStream(send1, receive1)
-            self.stream_receive = StapledObjectStream(send2, receive2)
+            self.stream_send = StapledObjectStream(*send)
+            self.stream_receive = StapledObjectStream(*receive)
             self.task = portal.start_task_soon(self.lifespan)
             portal.call(self.wait_startup)