@@ -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