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