Skip to content

Commit 5327798

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

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
@@ -745,7 +745,7 @@ async def send(self, conn: "Connection") -> "ClientResponse":
745745
self.response = response_class(
746746
self.method,
747747
self.original_url,
748-
writer=self._writer,
748+
writer=task,
749749
continue100=self._continue,
750750
timer=self._timer,
751751
request_info=self.request_info,
@@ -756,9 +756,9 @@ async def send(self, conn: "Connection") -> "ClientResponse":
756756
return self.response
757757

758758
async def close(self) -> None:
759-
if self._writer is not None:
759+
if self.__writer is not None:
760760
try:
761-
await self._writer
761+
await self.__writer
762762
except asyncio.CancelledError:
763763
if (
764764
sys.version_info >= (3, 11)
@@ -768,11 +768,11 @@ async def close(self) -> None:
768768
raise
769769

770770
def terminate(self) -> None:
771-
if self._writer is not None:
771+
if self.__writer is not None:
772772
if not self.loop.is_closed():
773-
self._writer.cancel()
774-
self._writer.remove_done_callback(self.__reset_writer)
775-
self._writer = None
773+
self.__writer.cancel()
774+
self.__writer.remove_done_callback(self.__reset_writer)
775+
self.__writer = None
776776

777777
async def _on_chunk_request_sent(self, method: str, url: URL, chunk: bytes) -> None:
778778
for trace in self._traces:
@@ -828,8 +828,8 @@ def __init__(
828828

829829
self._real_url = url
830830
self._url = url.with_fragment(None)
831-
self._body: Any = None
832-
self._writer: Optional[asyncio.Task[None]] = writer
831+
self._body: Optional[bytes] = None
832+
self._writer = writer
833833
self._continue = continue100 # None by default
834834
self._closed = True
835835
self._history: Tuple[ClientResponse, ...] = ()
@@ -857,10 +857,16 @@ def __reset_writer(self, _: object = None) -> None:
857857

858858
@property
859859
def _writer(self) -> Optional["asyncio.Task[None]"]:
860+
"""The writer task for streaming data.
861+
862+
_writer is only provided for backwards compatibility
863+
for subclasses that may need to access it.
864+
"""
860865
return self.__writer
861866

862867
@_writer.setter
863868
def _writer(self, writer: Optional["asyncio.Task[None]"]) -> None:
869+
"""Set the writer task for streaming data."""
864870
if self.__writer is not None:
865871
self.__writer.remove_done_callback(self.__reset_writer)
866872
self.__writer = writer
@@ -1111,16 +1117,16 @@ def raise_for_status(self) -> None:
11111117

11121118
def _release_connection(self) -> None:
11131119
if self._connection is not None:
1114-
if self._writer is None:
1120+
if self.__writer is None:
11151121
self._connection.release()
11161122
self._connection = None
11171123
else:
1118-
self._writer.add_done_callback(lambda f: self._release_connection())
1124+
self.__writer.add_done_callback(lambda f: self._release_connection())
11191125

11201126
async def _wait_released(self) -> None:
1121-
if self._writer is not None:
1127+
if self.__writer is not None:
11221128
try:
1123-
await self._writer
1129+
await self.__writer
11241130
except asyncio.CancelledError:
11251131
if (
11261132
sys.version_info >= (3, 11)
@@ -1131,8 +1137,8 @@ async def _wait_released(self) -> None:
11311137
self._release_connection()
11321138

11331139
def _cleanup_writer(self) -> None:
1134-
if self._writer is not None:
1135-
self._writer.cancel()
1140+
if self.__writer is not None:
1141+
self.__writer.cancel()
11361142
self._session = None
11371143

11381144
def _notify_content(self) -> None:
@@ -1142,9 +1148,9 @@ def _notify_content(self) -> None:
11421148
self._released = True
11431149

11441150
async def wait_for_close(self) -> None:
1145-
if self._writer is not None:
1151+
if self.__writer is not None:
11461152
try:
1147-
await self._writer
1153+
await self.__writer
11481154
except asyncio.CancelledError:
11491155
if (
11501156
sys.version_info >= (3, 11)

0 commit comments

Comments
 (0)