Ë
    Eü´j:1  ã                   óZ  — d Z ddlZddlZddlZddlmZmZmZmZm	Z	m
Z
mZmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ dZej4                  dk\  rddlmZ nddlmZ eeeddf   ZdZ dej4                  cxk  xr dk  nc Z!ej4                  dk  Z"e!xs e"Z# G d„ de«      Z$ e$dd«      Z% e$dd«      Z&eeeged   f      Z'eedged   f      Z( G d„ de«      Z) ejT                  d«      Z+de,de,fd„Z-de,dddefd „Z.e.Z/	 ddl0m1Z1 e1j^                  Z2ese2Z/yy# e3$ r Y yw xY w)!z"Http related parsers and protocol.é    N)ÚTYPE_CHECKINGÚAnyÚ	AwaitableÚCallableÚIterableÚListÚ
NamedTupleÚOptional)ÚCIMultiDicté   )ÚAbstractStreamWriter)ÚBaseProtocol)ÚClientConnectionResetError)ÚZLibCompressor)ÚNO_EXTENSIONS)ÚStreamWriterÚHttpVersionÚHttpVersion10ÚHttpVersion11)é   é   )ÚBuffer)ÚUnionzmemoryview[int]zmemoryview[bytes]i   )r   é   r   )r   r   é   )r   r   é	   c                   ó"   — e Zd ZU eed<   eed<   y)r   ÚmajorÚminorN)Ú__name__Ú
__module__Ú__qualname__ÚintÚ__annotations__© ó    úQ/root/workspace/ytshorts/venv/lib/python3.12/site-packages/aiohttp/http_writer.pyr   r   .   s   … ØƒJØ„Jr&   r   úCIMultiDict[str]c                   óœ  — e Zd ZU dZedz  ed<   dZeed<   dZeed<   dZ	e
dz  ed<   	 	 d(dedej                  d	ed
eddf
d„Zedej$                  dz  fd„«       Zedefd„«       Zd)d„Z	 d*dededz  ddfd„Zdeddfd„Zdee   ddfd„Zdeddfd„Zdededdfd„Zdddœdedededdfd„Zd ed!d"ddfd#„Zd)d$„Z d)d%„Z!d+de"ddfd&„Z#d)d'„Z$y),r   NÚlengthFÚchunkedÚ_eofÚ	_compressÚprotocolÚloopÚon_chunk_sentÚon_headers_sentÚreturnc                 óX   — || _         || _        || _        || _        d | _        d| _        y )NF)Ú	_protocolr/   Ú_on_chunk_sentÚ_on_headers_sentÚ_headers_bufÚ_headers_written)Úselfr.   r/   r0   r1   s        r'   Ú__init__zStreamWriter.__init__B   s2   € ð "ˆŒØˆŒ	Ø.;ˆÔØ2AˆÔØ*.ˆÔØ&+ˆÕr&   c                 ó.   — | j                   j                  S ©N)r4   Ú	transport©r9   s    r'   r=   zStreamWriter.transportP   s   € à�~‰~×'Ñ'Ð'r&   c                 ó   — | j                   S r<   )r4   r>   s    r'   r.   zStreamWriter.protocolT   s   € à�~‰~Ðr&   c                 ó   — d| _         y )NT)r+   r>   s    r'   Úenable_chunkingzStreamWriter.enable_chunkingX   s	   € Øˆ�r&   ÚencodingÚstrategyc                 ó(   — t        ||¬«      | _        y )N)rB   rC   )r   r-   )r9   rB   rC   s      r'   Úenable_compressionzStreamWriter.enable_compression[   s   € ô (°ÀHÔMˆ�r&   Úchunkc                 óö   — t        |«      }| xj                  |z  c_        | xj                  |z  c_        | j                  j                  }|�|j                  «       rt        d«      ‚|j                  |«       y )Nú!Cannot write to closing transport)ÚlenÚbuffer_sizeÚoutput_sizer4   r=   Ú
is_closingr   Úwrite)r9   rF   Úsizer=   s       r'   Ú_writezStreamWriter._write`   se   € Ü�5‹zˆØ×Ò˜DÑ ÕØ×Ò˜DÑ ÕØ—N‘N×,Ñ,ˆ	ØÐ 	× 4Ñ 4Ô 6Ü,Ð-PÓQÐQØ�‰˜Õr&   Úchunksc                 ón  — d}|D ]  }|t        |«      z  }Œ | xj                  |z  c_        | xj                  |z  c_        | j                  j                  }|�|j                  «       rt        d«      ‚t        s	|t        k  r!|j                  dj                  |«      «       y |j                  |«       y )Nr   rH   r&   )rI   rJ   rK   r4   r=   rL   r   ÚSKIP_WRITELINESÚMIN_PAYLOAD_FOR_WRITELINESrM   ÚjoinÚ
writelines)r9   rP   rN   rF   r=   s        r'   Ú_writelineszStreamWriter._writelinesi   s    € ØˆØò 	ˆEØ”C˜“JÑ‰Dð	à×Ò˜DÑ ÕØ×Ò˜DÑ ÕØ—N‘N×,Ñ,ˆ	ØÐ 	× 4Ñ 4Ô 6Ü,Ð-PÓQÐQÝ˜dÔ%?Ò?Ø�O‰O˜CŸH™H VÓ,Õ-à× Ñ  Õ(r&   c                 óh   — t        |«      d›d�j                  d«      }| j                  ||df«       y)z+Write a chunk with proper chunked encoding.Úxú
Úasciió   
N)rI   ÚencoderV   )r9   rF   Úchunk_len_pres      r'   Ú_write_chunked_payloadz#StreamWriter._write_chunked_payloadw   s4   € ä˜u›: a˜.¨Ð-×4Ñ4°WÓ=ˆØ×Ñ˜-¨°Ð8Õ9r&   Úis_eofc                 óž  — d| _         | j                  }d| _        t        r|€J ‚| j                  s(|r| j	                  ||f«       y| j                  |«       y|rLt        |«      d›d�j                  d«      }|r| j	                  |||df«       y| j	                  |||df«       y|r| j	                  |df«       y| j                  |«       y)	zASend buffered headers with payload, coalescing into single write.TNrX   rY   rZ   ó   
0

r[   ó   0

)r8   r7   r   r+   rV   rO   rI   r\   )r9   rF   r_   Úheaders_bufr]   s        r'   Ú_send_headers_with_payloadz'StreamWriter._send_headers_with_payload|   sÙ   € ð !%ˆÔØ×'Ñ'ˆØ ˆÔåð Ð*Ð*Ð*à�|Š|áØ× Ñ  +¨uÐ!5Ô6ð ð —‘˜KÔ(Øñ Ü" 5›z¨!˜n¨DÐ1×8Ñ8¸ÓAˆMÙØ× Ñ  +¨}¸eÐEUÐ!VÕWà× Ñ  +¨}¸eÀWÐ!MÕNÙØ×Ñ˜k¨<Ð8Õ9à�K‰K˜Õ$r&   Ti   )ÚdrainÚLIMITre   rf   c             ƒ   óf  K  — | j                   �| j                  |«      ƒ d{  –—†  t        |t        «      r)|j                  t	        |«      k7  r|j                  d«      }| j                  �&| j                  j                  |«      ƒ d{  –—† }|sy| j                  �Ht	        |«      }| j                  |k\  r| j                  |z
  | _        n|d| j                   }d| _        |sy| j                  rO| j                  sC| j                  |d«       |r.| j                  |kD  rd| _        | j                  «       ƒ d{  –—†  y|rb| j                  r| j                  |«       n| j!                  |«       |r0| j                  |kD  r d| _        | j                  «       ƒ d{  –—†  yyyy7 �Œ„7 �Œ7 Œp7 Œ­w)zÊ
        Writes chunk of data to a stream.

        write_eof() indicates end of stream.
        writer can't be used after write_eof() method being called.
        write() return drain future.
        NÚcr   F)r5   Ú
isinstanceÚ
memoryviewÚnbytesrI   Úcastr-   Úcompressr*   r7   r8   rd   rJ   re   r+   r^   rO   )r9   rF   re   rf   Ú	chunk_lens        r'   rM   zStreamWriter.writeœ   s}  è ø€ ð ×ÑÐ*Ø×%Ñ% eÓ,×,Ð,ä�eœZÔ(Ø�|‰|œs 5›zÒ)àŸ
™
 3›�à�>‰>Ð%ØŸ.™.×1Ñ1°%Ó8×8ˆEÙØà�;‰;Ð"Ü˜E›
ˆIØ�{‰{˜iÒ'Ø"Ÿk™k¨IÑ5�•à˜m §¡Ð,�Ø�”ÙØð ×Ò T×%:Ò%:Ø×+Ñ+¨E°5Ô9Ù˜×)Ñ)¨EÒ1Ø#$�Ô Ø—j‘j“l×"Ð"ØáØ�|Š|Ø×+Ñ+¨EÕ2à—‘˜EÔ"á˜×)Ñ)¨EÒ1Ø#$�Ô Ø—j‘j“l×"Ñ"ð 2ˆuð ð= -ùð 9ùð& #øð #úsH   ‚!F1£F'¤A'F1ÂF*ÂB0F1Ä<F-Ä=A!F1ÆF/Æ	F1Æ*F1Æ-F1Æ/F1Ústatus_lineÚheadersr(   c              ƒ   óŽ   K  — | j                   �| j                  |«      ƒ d{  –—†  t        ||«      }d| _        || _        y7 Œ­w)zWrite headers to the stream.NF)r6   Ú_serialize_headersr8   r7   )r9   ro   rp   Úbufs       r'   Úwrite_headerszStreamWriter.write_headersÏ   sI   è ø€ ð × Ñ Ð,Ø×'Ñ'¨Ó0×0Ð0ä  ¨gÓ6ˆØ %ˆÔØˆÕð	 1ús   ‚!A£A¤ Ac                 ó    — | j                   r| j                  ryd| _        | j                   }d| _         t        r|€J ‚| j                  |«       y)z3Force sending buffered headers if not already sent.NT)r7   r8   r   rO   ©r9   rc   s     r'   Úsend_headerszStreamWriter.send_headersÚ   sL   € à× Ò  D×$9Ò$9Øà $ˆÔØ×'Ñ'ˆØ ˆÔåàÐ*Ð*Ð*à�‰�KÕ r&   c                 óv  — | j                   ry| j                  rp| j                  sdd| _        | j                  }d| _        t        r|€J ‚| j                  r| j                  |df«       d| _         y| j                  |«       d| _         y| j                  r| j                  r| j                  d«       d| _         y)z&Indicate that the message is complete.NTrb   )r,   r7   r8   r   r+   rV   rO   rv   s     r'   Úset_eofzStreamWriter.set_eofé   s©   € à�9Š9Øð ×Ò T×%:Ò%:Ø$(ˆDÔ!Ø×+Ñ+ˆKØ $ˆDÔåà"Ð.Ð.Ð.ð �|Š|Ø× Ñ  +¨|Ð!<Ô=ð ˆ�	ð —‘˜KÔ(ð
 ˆ�	ð	 �\Š\˜d×3Ò3à�K‰K˜Ô%àˆ�	r&   c              ƒ   óî  K  — | j                   ry |r%| j                  �| j                  |«      ƒ d {  –—†  | j                  �r²g }d}|rA| j                  j                  |«      ƒ d {  –—† x}rt	        |«      }|j                  |«       | j                  j                  «       }|t	        |«      z  }|j                  |«       |sJ ‚| j                  r•| j                  s‰d| _        | j                  }d | _        | j                  r.|d›d�j                  d«      }| j                  ||g|¢d‘­«       n| j                  |g|¢­«       | j                  «       ƒ d {  –—†  d| _         y | j                  r-|d›d�j                  d«      }| j                  |g|¢d‘­«       n4t	        |«      dkD  r| j                  |«       n| j                  |d   «       | j                  «       ƒ d {  –—†  d| _         y | j                  r>| j                  s2| j                  |d«       | j                  «       ƒ d {  –—†  d| _         y | j                  rd|r1| j                  t	        |«      d›d�j                  d«      |df«       n| j                  d«       | j                  «       ƒ d {  –—†  d| _         y |r)| j                  |«       | j                  «       ƒ d {  –—†  d| _         y 7 �Œ±7 �Œ~7 �Œ�7 �Œ7 Œ»7 ŒM7 Œ­w)	Nr   TrX   rY   rZ   ra   r   rb   )r,   r5   r-   rm   rI   ÚappendÚflushr7   r8   r+   r\   rV   re   rO   rd   )r9   rF   rP   Ú
chunks_lenÚcompressed_chunkÚflush_chunkrc   r]   s           r'   Ú	write_eofzStreamWriter.write_eof  sÂ  è ø€ Ø�9Š9Øá�T×(Ñ(Ð4Ø×%Ñ% eÓ,×,Ð,ð �>‹>Ø"$ˆFØˆJÙ°D·N±N×4KÑ4KÈEÓ4R×.RÐRÐ*ÐRÜ Ð!1Ó2�
Ø—‘Ð.Ô/àŸ.™.×.Ñ.Ó0ˆKØœ#˜kÓ*Ñ*ˆJØ�M‰M˜+Ô&ÙÐ�:ð × Ò ¨×)>Ò)>Ø(,�Ô%Ø"×/Ñ/�Ø$(�Ô!à—<’<à'1°! n°DÐ$9×$@Ñ$@ÀÓ$I�MØ×$Ñ$Ø$ mÐO°fÐOÐ>NÑOõð
 ×$Ñ$ kÐ%;°FÑ%;Ô<Ø—j‘j“l×"Ð"Ø �”	Øð �|Š|Ø#-¨a .°Ð 5× <Ñ <¸WÓ E�Ø× Ñ  -Ð!K°&Ð!KÐ:JÑ!KÕLÜ�V“˜q’Ø× Ñ  Õ(à—‘˜F 1™IÔ&Ø—*‘*“,×ÐØˆDŒIØð ×Ò T×%:Ò%:à×+Ñ+¨E°4Ô8Ø—*‘*“,×ÐØˆDŒIØð �<Š<Ùà× Ñ Ü˜E›
 1�~ TÐ*×1Ñ1°'Ó:¸EÐCSÐTõð —‘˜LÔ)Ø—*‘*“,×ÐØˆDŒIØáØ�K‰K˜ÔØ—*‘*“,×Ðàˆ�	ðO -ùð /Sùð0 #ùð ùð øð øð ús   ‚0K5²K#³5K5Á(K&Á)C3K5ÅK)ÅBK5Ç)K,Ç*A	K5È3K/È4A/K5Ê#K1Ê$2K5ËK3ËK5Ë&K5Ë)K5Ë,K5Ë/K5Ë1K5Ë3K5c              ƒ   óŒ   K  — | j                   }|j                  �&|j                  r|j                  «       ƒ d{  –—†  yyy7 Œ­w)zFlush the write buffer.

        The intended use is to write

          await w.write(data)
          await w.drain()
        N)r4   r=   Ú_pausedÚ_drain_helper)r9   r.   s     r'   re   zStreamWriter.drainR  sB   è ø€ ð —>‘>ˆØ×ÑÐ)¨h×.>Ò.>Ø×(Ñ(Ó*×*Ñ*ð /?Ð)Ø*ús   ‚8AºA»A)NN)r2   N)ÚdeflateN)r&   )%r    r!   r"   r*   r#   r$   r+   Úboolr,   r-   r   r   ÚasyncioÚAbstractEventLoopÚ_T_OnChunkSentÚ_T_OnHeadersSentr:   ÚpropertyÚ	Transportr=   r.   rA   ÚstrrE   r   rO   r   rV   r^   rd   rM   rt   rw   ry   Úbytesr€   re   r%   r&   r'   r   r   ;   s±  … à€FˆC�$‰JÓØ€GˆTÓØ€Dˆ$ÓØ'+€Iˆ~ Ñ$Ó+ð )-Ø,0ñ,àð,ð ×'Ñ'ð,ð &ð	,ð
 *ð,ð 
ó,ð ð(˜7×,Ñ,¨tÑ3ò (ó ð(ð ð˜,ò ó ðóð AEñNØðNØ36¸±:ðNà	óNð
˜Fð  tó ð) (¨6Ñ"2ð )°tó )ð:¨Fð :°tó :ð
%°ð %Àð %Èó %ðB /3Àò1#Øð1#Ø'+ð1#Ø;>ð1#à	ó1#ðf	 Øð	 Ø);ð	 à	ó	 ó!óñ6L Uð L°Tó Lô\
+r&   r   z[\x00-\x08\x0a-\x1f\x7f]Ústringr2   c                 óF   — t         j                  | «      �t        d«      ‚| S )NzSForbidden control character detected in headers. Potential header injection attack.)Ú_FORBIDDEN_HEADER_CHARS_REÚsearchÚ
ValueError)rŽ   s    r'   Ú_safe_headerr“   d  s,   € Ü!×(Ñ(¨Ó0Ð<Üð1ó
ð 	
ð €Mr&   ro   rp   c                 óœ   — t        | «       d„ |j                  «       D «       }| dz   dj                  |«      z   dz   }|j                  d«      S )Nc              3   óV   K  — | ]!  \  }}t        |«      d z   t        |«      z   –— Œ# y­w)z: N)r“   )Ú.0ÚkÚvs      r'   ú	<genexpr>z(_py_serialize_headers.<locals>.<genexpr>o  s&   è ø€ ÒXÁÀÀ1”< “? TÑ)¬L¸«OÕ;ÑXùs   ‚')rY   z

zutf-8)r“   ÚitemsrT   r\   )ro   rp   Úheaders_genÚlines       r'   Ú_py_serialize_headersr�   m  sF   € Ü�ÔÙXÈÏÉËÔX€KØ˜Ñ &§+¡+¨kÓ":Ñ:¸ZÑG€DØ�;‰;�wÓÐr&   )4Ú__doc__r†   ÚreÚsysÚtypingr   r   r   r   r   r   r	   r
   Ú	multidictr   Úabcr   Úbase_protocolr   Úclient_exceptionsr   Úcompression_utilsr   Úhelpersr   Ú__all__Úversion_infoÚcollections.abcr   r   r�   Ú	bytearrayrS   ÚIS_PY313_BEFORE_313_2ÚIS_PY_BEFORE_312_9rR   r   r   r   rˆ   r‰   r   Úcompiler�   rŒ   r“   r�   rr   Úaiohttp._http_writerÚ_http_writerÚ_c_serialize_headersÚImportErrorr%   r&   r'   ú<module>r³      s‰  ðÙ (ã Û 	Û 
÷	÷ 	ó 	õ "å %Ý 'Ý 9Ý -Ý "à
K€à×Ñ�wÒÞ&åà�5˜)Ð%6Ð8KÐKÑL€Fð "Ð Ø" c×&6Ñ&6ÖC¸ÔCÐ Ø×%Ñ%¨
Ñ2Ð Ø'Ò=Ð+=€ô�*ô ñ
 ˜A˜qÓ!€Ù˜A˜qÓ!€ð ˜( F 8¨Y°t©_Ð#<Ñ=Ñ>€Ø˜HÐ&8Ð%9¸9ÀT¹?Ð%JÑKÑLÐ ôa+Ð'ô a+ðL	 (˜RŸZ™ZÐ(CÓDÐ ð˜ð  ó ð  sð  Ð5Gð  ÈEó  ð +Ð ð	Ý/à'×:Ñ:ÐÙØ1Ñð øàò 	Ùð	ús   Ä
D" Ä"D*Ä)D*