
    bCi-                     ~   S r SSKrSSKrSSK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
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!  \!R>                  r"\(       d  \"rgg! \# a     gf = f)z"Http related parsers and protocol.    N)Any	AwaitableCallable
NamedTupleOptionalUnion)CIMultiDict   )AbstractStreamWriter)BaseProtocol)ZLibCompressor)NO_EXTENSIONS)StreamWriterHttpVersionHttpVersion10HttpVersion11c                   *    \ 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/james-whalen/.local/lib/python3.13/site-packages/aiohttp/http_writer.pyr   r      s    JJr   r   CIMultiDict[str]c                   @   \ rS rSr  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\R"                  4S\S\SS4S jjr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\SS4S jjrS S jrSrg)"r      Nprotocolloopon_chunk_senton_headers_sentreturnc                     Xl         X l        S U l        SU l        SU l        SU l        SU l        S U l        S U l        X0l	        X@l
        g )NFr   )	_protocolr%   lengthchunkedbuffer_sizeoutput_size_eof	_compress_drain_waiter_on_chunk_sent_on_headers_sent)selfr$   r%   r&   r'   s        r    __init__StreamWriter.__init__   sN     "		37!.;2Ar   c                 .    U R                   R                  $ N)r*   	transportr4   s    r    r9   StreamWriter.transport5   s    ~~'''r   c                     U R                   $ r8   )r*   r:   s    r    r$   StreamWriter.protocol9   s    ~~r   c                     SU l         g )NT)r,   r:   s    r    enable_chunkingStreamWriter.enable_chunking=   s	    r   deflateencodingstrategyc                      [        XS9U l        g )N)rB   rC   )r   r0   )r4   rB   rC   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                  nU R                  R
                  (       a  Ub  UR                  5       (       a  [        S5      eUR                  U5        g )Nz!Cannot write to closing transport)	lenr-   r.   r9   r*   	connected
is_closingConnectionResetErrorwrite)r4   rG   sizer9   s       r    _writeStreamWriter._writeE   sn    5zD D NN	~~''9+<	@T@T@V@V&'JKKr   Ti   )drainLIMITrQ   rR   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(       a  U R                  (       a$  S[	        U5      -  R                  S5      nXQ-   S-   n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N^ 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   
)r2   
isinstance
memoryviewnbytesrI   castr0   compressr+   r,   encoderO   r-   rQ   )r4   rG   rQ   rR   	chunk_lenchunk_len_pres         r    rM   StreamWriter.writeN   sC     *%%e,,,eZ((||s5z)

3>>%..11%88E;;"E
I{{i'"kkI5m,||!)CJ!6 > >w G%-7KK%'E#$ jjl"" -2' - - 9. #s5   "F	FA.F	FC%F	9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)r3   _serialize_headersrO   )r4   r`   ra   bufs       r    write_headersStreamWriter.write_headersy   sD        ,''000 !6C	 1s   "AA"Ac                   #    U R                   (       a  g U(       a&  U R                  b  U R                  U5      I S h  vN   U R                  (       a  U(       a#  U R                  R                  U5      I S h  vN nXR                  R	                  5       -  nU(       a5  U R
                  (       a$  S[        U5      -  R                  S5      nX!-   S-   nO?U R
                  (       a.  U(       a%  S[        U5      -  R                  S5      nX!-   S-   nOSnU(       a  U R                  U5        U R                  5       I S h  vN   SU l         g  GN N N7f)NrU   rV   s   
0

s   0

T)
r/   r2   r0   r[   flushr,   rI   r\   rO   rQ   )r4   rG   r]   s      r    	write_eofStreamWriter.write_eof   s    99T((4%%e,,,>>"nn55e<<^^))++E%E
2::7C	!),<<||!)CJ!6 > >w GI%-0@@E(EKKjjl	/ - =" 	s4   ;EE:E8E9CE EEEEc                    #    U R                   R                  b#  U R                   R                  5       I Sh  vN   gg N7f)z_Flush the write buffer.

The intended use is to write

  await w.write(data)
  await w.drain()
N)r*   r9   _drain_helperr:   s    r    rQ   StreamWriter.drain   s5      >>##/....000 00s   5A >A )r0   r1   r/   r2   r3   r*   r-   r,   r+   r%   r.   )NN)r(   N)r   )r   r   r   r   r   asyncioAbstractEventLoop_T_OnChunkSent_T_OnHeadersSentr5   propertyr   	Transportr9   r$   r?   zlibZ_DEFAULT_STRATEGYstrr   rE   bytesrO   boolrM   re   ri   rQ   r   r   r   r    r   r      s4   
 )-,0BB ''B &	B
 *B 
B, (8G$5$56 ( ( ,   (9P9PNN36N	N
E d  .2)#)#&*)#:=)#	)#V		);			U T <	1r   r   stringr(   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)ry   s    r    _safe_headerr~      s(    v~1
 	
 Mr   r`   ra   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   )+z
z

zutf-8)itemsjoinr\   )r`   ra   headers_genlines       r    _py_serialize_headersr      s>    XXK&++k"::ZGD;;wr   )$__doc__rn   rt   typingr   r   r   r   r   r   	multidictr	   abcr   base_protocolr   compression_utilsr   helpersr   __all__r   r   r   rw   rp   rq   r   rv   r~   r   rc   aiohttp._http_writer_http_writer_c_serialize_headersImportErrorr   r   r    <module>r      s   (   H H ! % ' - "
K* 
 Aq!Aq! (E7IdO#;<=H&8%99T?%JKL M1' M1`   s  5G  E   + 	/'::1  		s   B3 3B<;B<