Skip to content

Commit

Permalink
Merge branch 'master' into avoid-collapsing-user-exception-groups
Browse files Browse the repository at this point in the history
  • Loading branch information
graingert authored Jan 4, 2025
2 parents 6ad6d7c + 0ad90dc commit f30ef9f
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 18 deletions.
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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'",
]

Expand Down
14 changes: 7 additions & 7 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,22 @@
-e .[full]

# Testing
coverage==7.6.1
coverage==7.6.10
importlib-metadata==8.5.0
mypy==1.13.0
ruff==0.8.1
mypy==1.14.1
ruff==0.8.5
typing_extensions==4.12.2
types-contextvars==2.4.7.3
types-PyYAML==6.0.12.20240917
types-PyYAML==6.0.12.20241230
types-dataclasses==0.6.6
pytest==8.3.4
trio==0.27.0
trio==0.28.0

# Documentation
black==24.10.0
mkdocs==1.6.1
mkdocs-material==9.5.47
mkdocstrings-python==1.12.2
mkdocs-material==9.5.49
mkdocstrings-python==1.13.0

# Packaging
build==1.2.2.post1
Expand Down
3 changes: 2 additions & 1 deletion starlette/middleware/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,8 @@ async def body_stream() -> typing.AsyncGenerator[bytes, None]:
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:
async with create_collapsing_task_group() as task_group:
response = await self.dispatch_func(request, call_next)
Expand Down
22 changes: 13 additions & 9 deletions starlette/testclient.py
Original file line number Diff line number Diff line change
Expand Up @@ -117,8 +117,10 @@ async def _run(self, *, task_status: anyio.abc.TaskStatus[anyio.CancelScope]) ->
"""
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
Expand Down Expand Up @@ -657,14 +659,16 @@ def __enter__(self) -> TestClient:
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)

Expand Down

0 comments on commit f30ef9f

Please sign in to comment.