
    h                        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SrS\R6                  s=:*  =(       a    S:  Os  r\R6                  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%S\&S\&4S jr'S\&SSS\"4S jr(\(r) SSK*J+r+  \+RR                  r,\(       d  \,r)gg! \- a     gf = f)z"Http related parsers and protocol.    N)Any	AwaitableCallableIterableList
NamedTupleOptionalUnion)CIMultiDict   )AbstractStreamWriter)BaseProtocol)ClientConnectionResetError)ZLibCompressor)NO_EXTENSIONS)StreamWriterHttpVersionHttpVersion10HttpVersion11i   )      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       E/var/www/html/env/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r\	\S'   Sr
\	\S'   Sr\\   \S'     S'S\S	\R                  S
\S\SS4
S jjr\S\\R(                     4S j5       r\S\4S j5       rS(S jrS\R2                  4S\S\SS4S jjrS\\\\4   SS4S jr S\!\   SS4S jr"SSS.S\\\\4   S\	S\SS4S jjr#S\S S!SS4S" jr$S(S# jr%S)S\SS4S$ jjr&S(S% jr'S&r(g)*r   4   NlengthFchunked_eof	_compressprotocolloopon_chunk_senton_headers_sentreturnc                 4    Xl         X l        X0l        X@l        g N)	_protocolr1   _on_chunk_sent_on_headers_sent)selfr0   r1   r2   r3   s        r(   __init__StreamWriter.__init__;   s     "	.;2Ar'   c                 .    U R                   R                  $ r6   )r7   	transportr:   s    r(   r>   StreamWriter.transportG   s    ~~'''r'   c                     U R                   $ r6   )r7   r?   s    r(   r0   StreamWriter.protocolK   s    ~~r'   c                     SU l         g )NT)r-   r?   s    r(   enable_chunkingStreamWriter.enable_chunkingO   s	    r'   deflateencodingstrategyc                      [        XS9U l        g )N)rG   rH   )r   r/   )r:   rG   rH   s      r(   enable_compressionStreamWriter.enable_compressionR   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_sizer7   r>   
is_closingr   write)r:   rL   sizer>   s       r(   _writeStreamWriter._writeW   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   rN   r'   )rO   rP   rQ   r7   r>   rR   r   SKIP_WRITELINESMIN_PAYLOAD_FOR_WRITELINESrS   join
writelines)r:   rW   rT   rL   r>   s        r(   _writelinesStreamWriter._writelines`   s    ECJD D D NN,,		 4 4 6 6,-PQQ?d%??OOCHHV,-  (r'   Ti   )drainLIMITr_   r`   c                0  #    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(       a  U R                  (       a1  U R                  [	        U5      S S3R                  S5      US45        OU R                  U5        U R                  U:  a(  U(       a   SU l        U R                  5       I Sh  vN   gggg GNk N N7f)zWrites 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   x
asciis   
)r8   
isinstance
memoryviewnbytesrO   castr/   compressr,   r-   r]   encoderU   rP   r_   )r:   rL   r_   r`   	chunk_lens        r(   rS   StreamWriter.writen   sO     *%%e,,,eZ((||s5z)

3>>%..11%88E;;"E
I{{i'"kkI5m,||  E
1~T*11':E7K E"%'E#$ jjl"" -2' - - 90 #s5   "FFA.FFC2FF	FFFstatus_lineheadersr)   c                    #    U R                   b  U R                  U5      I Sh  vN   [        X5      nU R                  U5        g N!7f)z*Write request/response status and headers.N)r9   _serialize_headersrU   )r:   rn   ro   bufs       r(   write_headersStreamWriter.write_headers   sD        ,''000 !6C	 1s   "AA"Ac                     SU l         g)z&Indicate that the message is complete.TN)r.   r?   s    r(   set_eofStreamWriter.set_eof   s	    	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S S3R                  S5      nU R                  U/UQSP75        O[	        U5      S:  a  U R                  U5        OU R                  US   5        OtU R                  (       aK  U(       a2  [	        U5      S S3R                  S5      nU R                  XaS45        O*U R                  S5        OU(       a  U R                  U5        U R                  5       I S h  vN   SU l         g  GN GNu N7f)	Nr   rc   rd   re   s   
0

r   s   0

T)r.   r8   r/   rj   rO   appendflushr-   rk   r]   rU   r_   )r:   rL   rW   
chunks_lencompressed_chunkflush_chunkchunk_len_pres          r(   	write_eofStreamWriter.write_eof   s    99T((4%%e,,,>>>"$FJDNN4K4KE4R.RR*R !12
./....0K#k**JMM+&:||#-a. 5 < <W E  -!K&!K:J!KLVq  (F1I&\\#&u:a. 5 < <W E  -8H!IJL)KKjjl	A -
 /S2 	s4   ;G7G/?G7=G2>E$G7"G5#G72G75G7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)r7   r>   _paused_drain_helper)r:   r0   s     r(   r_   StreamWriter.drain   sA      >>)h.>.>((*** /?)*s   >A
 AA
)	r/   r.   r8   r9   r7   rP   r-   r,   r1   )NN)r4   N)r'   ))r    r!   r"   r#   r,   r	   r$   r%   r-   boolr.   r/   r   r   asyncioAbstractEventLoop_T_OnChunkSent_T_OnHeadersSentr;   property	Transportr>   r0   rD   zlibZ_DEFAULT_STRATEGYstrrJ   r
   bytes	bytearrayrg   rU   r   r]   rS   rs   rv   r   r_   r&   r   r'   r(   r   r   4   s    FHSM GTD$*.Ix'. )-,0
B
B ''
B &	
B
 *
B 

B (8G$5$56 ( ( ,   (9P9PNN36N	N
E%J">? D )(5/ )d )$ .#UIz12.# 	.#
 .# 
.#`		);			%U %T %N
+r'   r   stringr4   c                 4    SU ;   d  SU ;   a  [        S5      eU $ )N
zRNewline or carriage return detected in headers. Potential header injection attack.)
ValueError)r   s    r(   _safe_headerr      s(    v~1
 	
 Mr'   rn   ro   c                     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>   s$     X<?T)LO;s   )+rd   z

zutf-8)itemsr[   rk   )rn   ro   headers_genlines       r(   _py_serialize_headersr      s>    XXK&++k"::ZGD;;wr'   ).__doc__r   sysr   typingr   r   r   r   r   r   r	   r
   	multidictr   abcr   base_protocolr   client_exceptionsr   compression_utilsr   helpersr   __all__rZ   version_infoIS_PY313_BEFORE_313_2IS_PY_BEFORE_312_9rY   r   r   r   r   r   r   r   r   r   r   rq   aiohttp._http_writer_http_writer_c_serialize_headersImportErrorr   r'   r(   <module>r      sO   (  
 	 	 	 " % ' 9 - "
K " "c&6&6CCC %%
2 '=+=* 
 Aq!Aq! (E7IdO#;<=H&8%99T?%JKL j+' j+Z   s  5G  E   + 	/'::1  		s   C< <DD