Skip to content

Commit 135fc4d

Browse files
committed
Use dunder writer internally in ClientResponse (#9340)
(cherry picked from commit 8a97e03)
1 parent b959358 commit 135fc4d

File tree

1 file changed

+23
-17
lines changed

1 file changed

+23
-17
lines changed

aiohttp/client_reqrep.py

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -762,7 +762,7 @@ async def send(self, conn: "Connection") -> "ClientResponse":
762762
self.response = response_class(
763763
self.method,
764764
self.original_url,
765-
writer=self._writer,
765+
writer=task,
766766
continue100=self._continue,
767767
timer=self._timer,
768768
request_info=self.request_info,
@@ -773,9 +773,9 @@ async def send(self, conn: "Connection") -> "ClientResponse":
773773
return self.response
774774

775775
async def close(self) -> None:
776-
if self._writer is not None:
776+
if self.__writer is not None:
777777
try:
778-
await self._writer
778+
await self.__writer
779779
except asyncio.CancelledError:
780780
if (
781781
sys.version_info >= (3, 11)
@@ -785,11 +785,11 @@ async def close(self) -> None:
785785
raise
786786

787787
def terminate(self) -> None:
788-
if self._writer is not None:
788+
if self.__writer is not None:
789789
if not self.loop.is_closed():
790-
self._writer.cancel()
791-
self._writer.remove_done_callback(self.__reset_writer)
792-
self._writer = None
790+
self.__writer.cancel()
791+
self.__writer.remove_done_callback(self.__reset_writer)
792+
self.__writer = None
793793

794794
async def _on_chunk_request_sent(self, method: str, url: URL, chunk: bytes) -> None:
795795
for trace in self._traces:
@@ -845,8 +845,8 @@ def __init__(
845845

846846
self._real_url = url
847847
self._url = url.with_fragment(None)
848-
self._body: Any = None
849-
self._writer: Optional[asyncio.Task[None]] = writer
848+
self._body: Optional[bytes] = None
849+
self._writer = writer
850850
self._continue = continue100 # None by default
851851
self._closed = True
852852
self._history: Tuple[ClientResponse, ...] = ()
@@ -874,10 +874,16 @@ def __reset_writer(self, _: object = None) -> None:
874874

875875
@property
876876
def _writer(self) -> Optional["asyncio.Task[None]"]:
877+
"""The writer task for streaming data.
878+
879+
_writer is only provided for backwards compatibility
880+
for subclasses that may need to access it.
881+
"""
877882
return self.__writer
878883

879884
@_writer.setter
880885
def _writer(self, writer: Optional["asyncio.Task[None]"]) -> None:
886+
"""Set the writer task for streaming data."""
881887
if self.__writer is not None:
882888
self.__writer.remove_done_callback(self.__reset_writer)
883889
self.__writer = writer
@@ -1128,16 +1134,16 @@ def raise_for_status(self) -> None:
11281134

11291135
def _release_connection(self) -> None:
11301136
if self._connection is not None:
1131-
if self._writer is None:
1137+
if self.__writer is None:
11321138
self._connection.release()
11331139
self._connection = None
11341140
else:
1135-
self._writer.add_done_callback(lambda f: self._release_connection())
1141+
self.__writer.add_done_callback(lambda f: self._release_connection())
11361142

11371143
async def _wait_released(self) -> None:
1138-
if self._writer is not None:
1144+
if self.__writer is not None:
11391145
try:
1140-
await self._writer
1146+
await self.__writer
11411147
except asyncio.CancelledError:
11421148
if (
11431149
sys.version_info >= (3, 11)
@@ -1148,8 +1154,8 @@ async def _wait_released(self) -> None:
11481154
self._release_connection()
11491155

11501156
def _cleanup_writer(self) -> None:
1151-
if self._writer is not None:
1152-
self._writer.cancel()
1157+
if self.__writer is not None:
1158+
self.__writer.cancel()
11531159
self._session = None
11541160

11551161
def _notify_content(self) -> None:
@@ -1159,9 +1165,9 @@ def _notify_content(self) -> None:
11591165
self._released = True
11601166

11611167
async def wait_for_close(self) -> None:
1162-
if self._writer is not None:
1168+
if self.__writer is not None:
11631169
try:
1164-
await self._writer
1170+
await self.__writer
11651171
except asyncio.CancelledError:
11661172
if (
11671173
sys.version_info >= (3, 11)

0 commit comments

Comments
 (0)