
    rp0j:1                        S r SSKrSSKrSSKrSSKJrJrJrJrJ	r	J
r
JrJr  SSKJr  SSKJr  SSKJr  SSKJr  SS	KJr  SS
KJr  Sr\R4                  S:  a  SSKJr  OSSKJr  \\\SS4   rSr S\R4                  s=:*  =(       a    S:  Os  r!\R4                  S:  r"\!=(       d    \"r# " S S\5      r$\$" SS5      r%\$" SS5      r&\\\/\S   4      r'\\S/\S   4      r( " S S\5      r)\RT                  " S5      r+S\,S\,4S jr-S\,SSS\4S  jr.\.r/ SSK0J1r1  \1R^                  r2\(       d  \2r/gg! \3 a     gf = f)!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                   *    \ rS rSr% \\S'   \\S'   Srg)r   .   majorminor N)__name__
__module____qualname____firstlineno__int__annotations____static_attributes__r!       M/home/wildlama/miniconda3/lib/python3.13/site-packages/aiohttp/http_writer.pyr   r   .   s    JJr)   r   CIMultiDict[str]c                      \ rS rSr% Sr\S-  \S'   Sr\\S'   Sr	\\S'   Sr
\S-  \S'     S*S\S	\R                  S
\S\SS4
S jjr\S\R&                  S-  4S j5       r\S\4S j5       rS+S jr S,S\S\S-  SS4S jjrS\SS4S jrS\\   SS4S jrS\SS4S jrS\S\SS4S jrSSS.S\S\S\SS4S  jjrS!\S"S#SS4S$ jr S+S% jr!S+S& jr"S-S\#SS4S' jjr$S+S( jr%S)r&g).r   ;   NlengthFchunked_eof	_compressprotocolloopon_chunk_senton_headers_sentreturnc                 P    Xl         X l        X0l        X@l        S U l        SU l        g )NF)	_protocolr3   _on_chunk_sent_on_headers_sent_headers_buf_headers_written)selfr2   r3   r4   r5   s        r*   __init__StreamWriter.__init__B   s*     "	.;2A*.&+r)   c                 .    U R                   R                  $ N)r8   	transportr=   s    r*   rB   StreamWriter.transportP   s    ~~'''r)   c                     U R                   $ rA   )r8   rC   s    r*   r2   StreamWriter.protocolT   s    ~~r)   c                     SU l         g )NT)r/   rC   s    r*   enable_chunkingStreamWriter.enable_chunkingX   s	    r)   encodingstrategyc                      [        XS9U l        g )N)rJ   rK   )r   r1   )r=   rJ   rK   s      r*   enable_compressionStreamWriter.enable_compression[   s     (Mr)   chunkc                    [        U5      nU =R                  U-  sl        U =R                  U-  sl        U R                  R                  nUb  UR                  5       (       a  [        S5      eUR                  U5        g )N!Cannot write to closing transport)lenbuffer_sizeoutput_sizer8   rB   
is_closingr   write)r=   rO   sizerB   s       r*   _writeStreamWriter._write`   sh    5zD D NN,,		 4 4 6 6,-PQQr)   chunksc                    SnU H  nU[        U5      -  nM     U =R                  U-  sl        U =R                  U-  sl        U R                  R                  nUb  UR                  5       (       a  [        S5      e[        (       d
  U[        :  a!  UR                  SR                  U5      5        g UR                  U5        g )Nr   rQ   r)   )rR   rS   rT   r8   rB   rU   r   SKIP_WRITELINESMIN_PAYLOAD_FOR_WRITELINESrV   join
writelines)r=   rZ   rW   rO   rB   s        r*   _writelinesStreamWriter._writelinesi   s    ECJD D D NN,,		 4 4 6 6,-PQQ?d%??OOCHHV,-  (r)   c                 f    [        U5      S S3R                  S5      nU R                  X!S45        g)z+Write a chunk with proper chunked encoding.x
ascii   
N)rR   encoder`   )r=   rO   chunk_len_pres      r*   _write_chunked_payload#StreamWriter._write_chunked_payloadw   s2    u:a.-44W=-89r)   is_eofc                    SU l         U R                  nSU l        [        (       a  Uc   eU R                  (       d,  U(       a  U R	                  X145        gU R                  U5        gU(       aO  [        U5      S S3R                  S5      nU(       a  U R	                  X4US45        gU R	                  X4US45        gU(       a  U R	                  US45        gU R                  U5        g)	zASend buffered headers with payload, coalescing into single write.TNrc   rd   re      
0

rf      0

)r<   r;   r   r/   r`   rX   rR   rg   )r=   rO   rk   headers_bufrh   s        r*   _send_headers_with_payload'StreamWriter._send_headers_with_payload|   s     !%'' = ***||  +!56  K( "5z!nD188AM  +eEU!VW  +eW!MNk<89KK$r)   Ti   )drainLIMITrr   rs   c                  #    U R                   b  U R                  U5      I Sh  vN   [        U[        5      (       a*  UR                  [	        U5      :w  a  UR                  S5      nU R                  b+  U R                  R                  U5      I Sh  vN nU(       d  gU R                  bN  [	        U5      nU R                  U:  a  U R                  U-
  U l        OUSU R                   nSU l        U(       d  gU R                  (       aZ  U R                  (       dI  U R                  US5        U(       a/  U R                  U:  a  SU l        U R                  5       I Sh  vN   gU(       am  U R                  (       a  U R                  U5        OU R!                  U5        U(       a1  U R                  U:  a   SU l        U R                  5       I Sh  vN   gggg GN GNK N N7f)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)r9   
isinstance
memoryviewnbytesrR   castr1   compressr.   r;   r<   rp   rS   rr   r/   ri   rX   )r=   rO   rr   rs   	chunk_lens        r*   rV   StreamWriter.write   s|     *%%e,,,eZ((||s5z)

3>>%..11%88E;;"E
I{{i'"kkI5m, T%:%:++E59))E1#$ jjl""||++E2E"))E1#$ jjl"" 2u = - 9& # #sH   "G%GA.G%GCG% G!!A1G%G#	G%G%!G%#G%status_lineheadersr+   c                    #    U R                   b  U R                  U5      I Sh  vN   [        X5      nSU l        X0l        g N7f)zWrite headers to the stream.NF)r:   _serialize_headersr<   r;   )r=   r}   r~   bufs       r*   write_headersStreamWriter.write_headers   sD        ,''000 6 %	 1s   "AAAc                     U R                   (       a  U R                  (       a  gSU l        U R                   nSU l         [        (       a  Uc   eU R                  U5        g)z3Force sending buffered headers if not already sent.NT)r;   r<   r   rX   r=   ro   s     r*   send_headersStreamWriter.send_headers   sN      D$9$9 $'' =***K r)   c                    U R                   (       a  gU R                  (       ar  U R                  (       da  SU l        U R                  nSU l        [        (       a  Uc   eU R                  (       a  U R                  US45        OEU R                  U5        O3U R                  (       a"  U R                  (       a  U R                  S5        SU l         g)z&Indicate that the message is complete.NTrn   )r0   r;   r<   r   r/   r`   rX   r   s     r*   set_eofStreamWriter.set_eof   s    99 T%:%:$(D!++K $D}"... ||  +|!<=K(\\d33KK%	r)   c                   #    U R                   (       a  g U(       a&  U R                  b  U R                  U5      I S h  vN   U R                  (       Ga  / nSnU(       aF  U R                  R                  U5      I S h  vN =n(       a  [	        U5      nUR                  U5        U R                  R                  5       nU[	        U5      -  nUR                  U5        U(       d   eU R                  (       a  U R                  (       d  SU l        U R                  nS U l        U R                  (       a-  US S3R                  S5      nU R                  Xg/UQSP75        OU R                  U/UQ75        U R                  5       I S h  vN   SU l         g U R                  (       a-  US S3R                  S5      nU R                  U/UQSP75        O5[	        U5      S:  a  U R                  U5        OU R                  US   5        U R                  5       I S h  vN   SU l         g U R                  (       aC  U R                  (       d2  U R                  US5        U R                  5       I S h  vN   SU l         g U R                  (       ai  U(       a1  U R                  [	        U5      S S3R                  S5      US45        OU R                  S5        U R                  5       I S h  vN   SU l         g U(       a)  U R                  U5        U R                  5       I S h  vN   SU l         g  GN GN GN GN N NR N7f)	Nr   Trc   rd   re   rm   r   rn   )r0   r9   r1   rz   rR   appendflushr;   r<   r/   rg   r`   rr   rX   rp   )r=   rO   rZ   
chunks_lencompressed_chunkflush_chunkro   rh   s           r*   	write_eofStreamWriter.write_eof  s    99T((4%%e,,, >>>"$FJDNN4K4KE4R.RR*R !12
./....0K#k**JMM+&:   )>)>(,%"//$(!<<'1!nD$9$@$@$IM$$$OfO>NO
 $$k%;F%;<jjl"" 	 ||#-a. 5 < <W E  -!K&!K:J!KLVq  (F1I&**,DI T%:%:++E48**,DI <<  E
1~T*11':ECST L)**,DIKK**,	O - /S0 #    s   ;ML/?M=L2>DM	L5
BML8AM0L;1A9M*L=+7M"L?#M2M5M8M;M=M?Mc                    #    U R                   nUR                  b+  UR                  (       a  UR                  5       I Sh  vN   ggg N7f)z_Flush the write buffer.

The intended use is to write

  await w.write(data)
  await w.drain()
N)r8   rB   _paused_drain_helper)r=   r2   s     r*   rr   StreamWriter.drainR  sA      >>)h.>.>((*** /?)*s   >A
 AA
)r1   r0   r;   r<   r9   r:   r8   rS   r/   r.   r3   )NN)r6   N)deflateN)r)   )'r"   r#   r$   r%   r.   r&   r'   r/   boolr0   r1   r   r   asyncioAbstractEventLoop_T_OnChunkSent_T_OnHeadersSentr>   property	TransportrB   r2   rH   strrM   r   rX   r   r`   ri   rp   rV   r   r   r   bytesr   rr   r(   r!   r)   r*   r   r   ;   s   FC$JGT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]stringr6   c                 H    [         R                  U 5      b  [        S5      eU $ )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)   r}   r~   c                     [        U 5        S UR                  5        5       nU S-   SR                  U5      -   S-   nUR                  S5      $ )Nc              3   Z   #    U  H!  u  p[        U5      S -   [        U5      -   v   M#     g7f)z: N)r   ).0kvs      r*   	<genexpr>(_py_serialize_headers.<locals>.<genexpr>o  s$     X<?T)LO;s   )+rd   z

zutf-8)r   itemsr^   rg   )r}   r~   headers_genlines       r*   _py_serialize_headersr   m  sF    XXK&++k"::ZGD;;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   	bytearrayr]   IS_PY313_BEFORE_313_2IS_PY_BEFORE_312_9r\   r   r   r   r   r   r   compiler   r   r   r   r   aiohttp._http_writer_http_writer_c_serialize_headersImportErrorr!   r)   r*   <module>r      s   (  	 
	 	 	 " % ' 9 - "
Kw&5)%68KKLF " "c&6&6CCC %%
2 '=+=* 
 Aq!Aq! (F8Yt_#<=>H&8%99T?%JKL a+' a+L	  ZZ(CD    s  5G  E   + 	/'::1  		s   D4 4D=<D=