
    *Gj=                        U d dl Z d dlZd dlZd dlmZmZ d dlmZ d dlm	Z	m
Z
mZmZmZ ej        dk    rd dlmZ nd dlmZ eeedd	f         Z	 	 d dlZn# e$ r d dlZY nw xY wd
Zn# e$ r dZY nw xY w	 ej        dk    rd dlmZ nd dlmZ d
Zn# e$ r dZY nw xY wdZd ZdZ G d de          Z G d de          Z  G d de          Z! G d ded          Z" G d d          Z# e#e          Z$e#e%d<   de!ddfdZ&	 	 d,de'dz  d e(de)fd!Z* G d" d#e          Z+ G d$ d%          Z, G d& d'e+          Z- G d( d)e+          Z. G d* d+e+          Z/dS )-    N)ABCabstractmethod)Executor)AnyFinalProtocol	TypedDictcast)      )Buffer)Unionzmemoryview[int]zmemoryview[bytes]TF)r      )ZstdDecompressori   c                   0    e Zd ZdedefdZddedefdZdS )	ZLibCompressObjProtocoldatareturnc                     d S N selfr   s     a/home/rurouni/.hermes/hermes-agent/venv/lib/python3.11/site-packages/aiohttp/compression_utils.pycompressz ZLibCompressObjProtocol.compress,             .modec                    d S r   r   r   r   s     r   flushzZLibCompressObjProtocol.flush-   r   r   N.)__name__
__module____qualname__r   bytesr   intr"   r   r   r   r   r   +   s?        2V2222255#55555555r   r   c                       e Zd ZddededefdZddedefdZede	fd            Z
edefd	            Zedefd
            ZdS )ZLibDecompressObjProtocol.r   
max_lengthr   c                     d S r   r   r   r   r+   s      r   
decompressz$ZLibDecompressObjProtocol.decompress1   r   r   lengthc                    d S r   r   r   r/   s     r   r"   zZLibDecompressObjProtocol.flush2   r   r   c                     d S r   r   r   s    r   eofzZLibDecompressObjProtocol.eof4   s    3r   c                     d S r   r   r3   s    r   unconsumed_tailz)ZLibDecompressObjProtocol.unconsumed_tail7   s    (+r   c                     d S r   r   r3   s    r   unused_dataz%ZLibDecompressObjProtocol.unused_data:   s    $'Cr   Nr#   )r$   r%   r&   r   r(   r'   r.   r"   propertyboolr4   r6   r8   r   r   r   r*   r*   0   s        KKvK3KKKKK77C7U7777T X++++ X+'U''' X'''r   r*   c                       e Zd ZU eed<   eed<   eed<   eed<   eed<   	 	 	 	 	 	 ddeded	ed
edededz  defdZ	 dd	ededefdZ		 dded	edede
fdZ	 dd	ededede
fdZdS )ZLibBackendProtocol	MAX_WBITSZ_FULL_FLUSHZ_SYNC_FLUSHZ_BEST_SPEEDZ_FINISH.levelmethodwbitsmemLevelstrategyzdictNr   c                     d S r   r   )r   rB   rC   rD   rE   rF   rG   s          r   compressobjzZLibBackendProtocol.compressobjE   s	     #&#r   c                     d S r   r   )r   rD   rG   s      r   decompressobjz!ZLibBackendProtocol.decompressobjN   s    $'Cr   r   c                    d S r   r   )r   r   rB   rD   s       r   r   zZLibBackendProtocol.compressR       r   bufsizec                    d S r   r   )r   r   rD   rN   s       r   r.   zZLibBackendProtocol.decompressU   rM   r   )......)..)r$   r%   r&   r(   __annotations__r   r   rI   r*   rK   r'   r   r.   r   r   r   r<   r<   >   sv        NNNMMM "& && & 	&
 & & }& 
!& & & & 14( (('-(	"( ( ( (
 ?B &)8;	    AD &):=	     r   r<   c                   .    e Zd ZU eed<   eed<   eed<   dS )CompressObjArgsrD   rF   rB   N)r$   r%   r&   r(   rP   r   r   r   rR   rR   Z   s+         JJJMMMJJJJJr   rR   )totalc                   *   e Zd ZdefdZedefd            Zedefd            Z	edefd            Z
edefd            Zedefd            Zedefd	            Zd
ededefdZd
ededefdZded
ededefdZded
ededefdZdedefdZdS )ZLibBackendWrapper_zlib_backendc                     || _         d S r   )rV   )r   rV   s     r   __init__zZLibBackendWrapper.__init__a   s    2?r   r   c                 .    t          | j        dd          S )Nr$   	undefinedgetattrrV   r3   s    r   namezZLibBackendWrapper.named   s    t):{CCCr   c                     | j         j        S r   )rV   r=   r3   s    r   r=   zZLibBackendWrapper.MAX_WBITSh   s    !++r   c                     | j         j        S r   )rV   r>   r3   s    r   r>   zZLibBackendWrapper.Z_FULL_FLUSHl       !..r   c                     | j         j        S r   )rV   r?   r3   s    r   r?   zZLibBackendWrapper.Z_SYNC_FLUSHp   r`   r   c                     | j         j        S r   )rV   r@   r3   s    r   r@   zZLibBackendWrapper.Z_BEST_SPEEDt   r`   r   c                     | j         j        S r   )rV   rA   r3   s    r   rA   zZLibBackendWrapper.Z_FINISHx   s    !**r   argskwargsc                 &     | j         j        |i |S r   )rV   rI   r   rd   re   s      r   rI   zZLibBackendWrapper.compressobj|   s    -t!-t>v>>>r   c                 &     | j         j        |i |S r   )rV   rK   rg   s      r   rK   z ZLibBackendWrapper.decompressobj   s    /t!/@@@@r   r   c                 .     | j         j        |g|R i |S r   )rV   r   r   r   rd   re   s       r   r   zZLibBackendWrapper.compress   s(    *t!*4A$AAA&AAAr   c                 .     | j         j        |g|R i |S r   )rV   r.   rj   s       r   r.   zZLibBackendWrapper.decompress   s(    ,t!,TCDCCCFCCCr   attrnamec                 ,    t          | j        |          S r   r[   )r   rl   s     r   __getattr__zZLibBackendWrapper.__getattr__   s    t)8444r   N)r$   r%   r&   r<   rX   r9   strr]   r(   r=   r>   r?   r@   rA   r   r   rI   r*   rK   r   r'   r   r.   rn   r   r   r   rU   rU   `   s       @&9 @ @ @ @ Dc D D D XD ,3 , , , X, /c / / / X/ /c / / / X/ /c / / / X/ +# + + + X+? ? ?8O ? ? ? ?A3 A# A:S A A A ABV BC B3 B5 B B B BDv Dc DS DU D D D D5C 5C 5 5 5 5 5 5r   rU   ZLibBackendnew_zlib_backendr   c                     | t           _        d S r   )rp   rV   )rq   s    r   set_zlib_backendrs      s     0Kr   encodingsuppress_deflate_headerc                 b    | dk    rdt           j        z   S |rt           j         nt           j        S )Ngzip   )rp   r=   )rt   ru   s     r   encoding_to_modery      s6     6K)))%<WK!!!+BWWr   c                       e Zd Zdefdedz  dedz  fdZeefde	dede
fd            Zefde	dede
fd	Zeedefd
                        ZdS )DecompressionBaseHandlerNexecutormax_sync_chunk_sizec                 "    || _         || _        dS )z&Base class for decompression handlers.N)	_executor_max_sync_chunk_size)r   r|   r}   s      r   rX   z!DecompressionBaseHandler.__init__   s     "$7!!!r   r   r+   r   c                     dS Decompress the given data.Nr   r-   s      r   decompress_syncz(DecompressionBaseHandler.decompress_sync   r   r   c                    K   | j         Qt          |          | j         k    r9t          j                                        | j        | j        ||           d{V S |                     ||          S r   )r   lenasyncioget_event_looprun_in_executorr   r   r-   s      r   r.   z#DecompressionBaseHandler.decompress   s      
 %1D		D555 /11AA 4dJ         ##D*555r   c                     dS )z7Return True if more output is available by passing b"".Nr   r3   s    r   data_availablez'DecompressionBaseHandler.data_available   r   r   )r$   r%   r&   MAX_SYNC_CHUNK_SIZEr   r(   rX   r   ZLIB_MAX_LENGTH_UNLIMITEDr   r'   r   r.   r9   r:   r   r   r   r   r{   r{      s         %)*=8 8T/8 !4Z8 8 8 8 .G) ))(+)	) ) ) ^) /H6 66(+6	6 6 6 6 F F F F ^ XF F Fr   r{   c                       e Zd Zddddddefdedz  dededz  dedz  dedz  dedz  d	edz  fd
Zde	de
fdZde	de
fdZddedz  de
fdZdS )ZLibCompressorNFrt   ru   rB   rD   rF   r|   r}   c                     || _         || _        |t          ||          n|| _        t	          t
          j                  | _        i }| j        |d<   |||d<   |||d<    | j        j        di || _        d S )NrD   rF   rB   r   )	r   r   ry   _moderU   rp   rV   rI   _compressor)	r   rt   ru   rB   rD   rF   r|   r}   re   s	            r   rX   zZLibCompressor.__init__   s     "$7! } X'>??? 	

 %7{7P$Q$Q"$*w!)F:#F7O94-9CCFCCr   r   r   c                 6    | j                             |          S r   )r   r   r   s     r   compress_synczZLibCompressor.compress_sync   s    ((...r   c                    K   | j         duot          |          | j         k    }|r=t          j                                        | j        | j        j        |           d{V S |                     |          S )a  Compress the data and returned the compressed bytes.

        Note that flush() must be called after the last call to compress()

        If the data size is large than the max_sync_chunk_size, the compression
        will be done in the executor. Otherwise, the compression will be done
        in the event loop.

        **WARNING: This method is NOT cancellation-safe when used with flush().**
        If this operation is cancelled, the compressor state may be corrupted.
        The connection MUST be closed after cancellation to avoid data corruption
        in subsequent compress operations.

        For cancellation-safe compression (e.g., WebSocket), the caller MUST wrap
        compress() + flush() + send operations in a shield and lock to ensure atomicity.
        N)	r   r   r   get_running_loopr   r   r   r   r   )r   r   should_use_executors      r   r   zZLibCompressor.compress   s      & %T1 6D		D55 	  	 133CC 0 94         !!$'''r   r   c                 R    | j                             ||n| j        j                  S )a	  Flush the compressor synchronously.

        **WARNING: This method is NOT cancellation-safe when called after compress().**
        The flush() operation accesses shared compressor state. If compress() was
        cancelled, calling flush() may result in corrupted data. The connection MUST
        be closed after compress() cancellation.

        For cancellation-safe compression (e.g., WebSocket), the caller MUST wrap
        compress() + flush() + send operations in a shield and lock to ensure atomicity.
        )r   r"   rV   rA   r!   s     r   r"   zZLibCompressor.flush   s1     %%$DD$*<*E
 
 	
r   r   )r$   r%   r&   r   ro   r:   r(   r   rX   r   r'   r   r   r"   r   r   r   r   r      s         $(-  #$(*=D D*D "&D Tz	D
 TzD *D T/D !4ZD D D D6/& /U / / / /(6 (e ( ( ( (8
 
#* 
 
 
 
 
 
 
r   r   c            
            e Zd Zdddefdedz  dededz  dedz  f fdZe	fde
d	ed
efdZdded
efdZed
efd            Zed
efd            Z xZS )ZLibDecompressorNFrt   ru   r|   r}   c                    t                                          ||           t          ||          | _        t	          t
          j                  | _        | j                            | j                  | _        d| _	        d | _
        d S )Nr|   r}   rD   F)superrX   ry   r   rU   rp   rV   rK   _decompressor_last_empty_pending_unused_data)r   rt   ru   r|   r}   	__class__s        r   rX   zZLibDecompressor.__init__  s|     	(@STTT%h0GHH
$6{7P$Q$Q!/==DJ=OO 26!!!r   r   r+   r   c                    | j         | j         t          |          z   }d | _         | j                            | j        j        |z   |          }|dk    | _        | j        j        r| j        j        r| j        j        }| j        	                    | j
                  | _        |t          k    r |t          |          z  }|dk    r|| _         nC| j                            ||          }|dk    | _        ||z  }| j        j        r| j        j        | j        j        r:| j
        | j        j        k    r%| j        	                    | j
                  | _        |S )Nr   r   r   )r   r'   r   r.   r6   r   r4   r8   rV   rK   r   r   r   r=   )r   r   r+   resultunusedchunks         r   r   z ZLibDecompressor.decompress_sync  sd    $0,uT{{:D(,D%#...5z
 
 "S=
  $ 
	);)G 
	'3F!%!3!A!A
!A!S!SD666c&kk)
??06D-&11&*EEE$|DeOF  $ 
	);)G 
	  ! 	Tdj43E3O&O&O!%!3!A!A
!A!S!SDr   r   r/   c                 t    |dk    r| j                             |          n| j                                         S Nr   )r   r"   r1   s     r   r"   zZLibDecompressor.flush?  s=     zz $$V,,,#))++	
r   c                 V    t          | j        j                  p| j         p| j        d uS r   )r:   r   r6   r   r   r3   s    r   r   zZLibDecompressor.data_availableF  s8     #344 5##5(4	
r   c                     | j         j        S r   )r   r4   r3   s    r   r4   zZLibDecompressor.eofN  s    !%%r   )r   )r$   r%   r&   r   ro   r:   r   r(   rX   r   r   r'   r   r"   r9   r   r4   __classcell__r   s   @r   r   r     s/         $(-$(*=7 7*7 "&7 T/	7
 !4Z7 7 7 7 7 7 /H" ""(+"	" " " "H
 
C 
 
 
 
 
 
 
 
 
 X
 &T & & & X& & & & &r   r   c                   ~     e Zd Zdefdedz  dedz  ddf fdZefdedede	fdZ
de	fd	Zedefd
            Z xZS )BrotliDecompressorNr|   r}   r   c                     t           st          d          t          j                    | _        d| _        t                                          ||           dS )z)Decompress data using the Brotli library.zIThe brotli decompression is not available. Please install `Brotli` moduleFr   N)
HAS_BROTLIRuntimeErrorbrotliDecompressor_objr   r   rX   r   r|   r}   r   s      r   rX   zBrotliDecompressor.__init__W  sb      	1   '))	 (@STTTTTr   r   r+   c                    t          | j        d          rh|t          k    r.t          t          | j                            |                    }nt          t          | j                            ||                    }ng|t          k    r.t          t          | j                            |                    }n.t          t          | j                            ||                    }|dk    | _        |S )r   r.   r   )hasattrr   r   r
   r'   r.   processr   )r   r   r+   r   s       r   r   z"BrotliDecompressor.decompress_syncf  s     49l++ 		J666eTY%9%9$%?%?@@eTY%9%9$
%K%KLL666eTY%6%6t%<%<==eTY%6%6tZ%H%HII!S=r   c                     t          | j        d          r,t          t          | j                                                  S dS )zFlush the decompressor.r"   r   )r   r   r
   r'   r"   r3   s    r   r"   zBrotliDecompressor.flushx  s7    49g&& 	2ty00111sr   c                 F    | j                                          o| j         S r   )r   is_finishedr   r3   s    r   r   z!BrotliDecompressor.data_available~  s$    9((***C43C/CCr   r$   r%   r&   r   r   r(   rX   r   r   r'   r   r"   r9   r:   r   r   r   s   @r   r   r   S  s         %)*=U UT/U !4ZU 
	U U U U U U  /H (+	   $u     D D D D XD D D D Dr   r   c                   ~     e Zd Zdefdedz  dedz  ddf fdZefdedede	fdZ
de	fd	Zedefd
            Z xZS )ZSTDDecompressorNr|   r}   r   c                     t           st          d          t                      | _        d | _        t                                          ||           d S )NzOThe zstd decompression is not available. Please install `backports.zstd` moduler   )HAS_ZSTDr   r   r   r   r   rX   r   s      r   rX   zZSTDDecompressor.__init__  s_    
  	9   %&&	26!(@STTTTTr   r   r+   c                    |t           k    rt          n|}| j        | j        |z   }d | _        | j                            ||          }| j        j        r| j        j        r| j        j        }t                      | _        |t          k    r |t          |          z  }|dk    r|| _        n6|| j                            ||          z  }| j        j        r| j        j        | j        j        rt                      | _        |S r   )	r   ZSTD_MAX_LENGTH_UNLIMITEDr   r   r.   r4   r8   r   r   )r   r   r+   zstd_max_lengthr   r8   s         r   r   z ZSTDDecompressor.decompress_sync  s    666 &% 	
 $0,t3D(,D%%%dO<< im 	I	 5 	I)/K(**DI";;;3v;;."a''0;D-di**;HHHF im 	I	 5 	I 9= 	+(**DIr   c                     dS )Nr   r   r3   s    r   r"   zZSTDDecompressor.flush  s    sr   c                 H    | j         j         o| j         j         p| j        d uS r   )r   needs_inputr4   r   r3   s    r   r   zZSTDDecompressor.data_available  s0     	%%;dim*;3&d2	3r   r   r   s   @r   r   r     s         %)*=U UT/U !4ZU 
	U U U U U U /H$ $$(+$	$ $ $ $Lu     3 3 3 3 X3 3 3 3 3r   r   )NF)0r   syszlibabcr   r   concurrent.futuresr   typingr   r   r   r	   r
   version_infocollections.abcr   r   r'   	bytearray
brotlicffir   ImportErrorr   compression.zstdr   backports.zstdr   r   r   r   r   r*   r<   rR   rU   rp   rP   rs   ro   r:   r(   ry   r{   r   r   r   r   r   r   r   <module>r      s
    



  # # # # # # # # ' ' ' ' ' ' 8 8 8 8 8 8 8 8 8 8 8 8 8 8w&&&&&&&5)%68KKLF#####    JJ   JJJ
7""5555555333333HH   HHH     6 6 6 6 6h 6 6 6
( ( ( ( ( ( ( (    (   8    iu    *5 *5 *5 *5 *5 *5 *5 *5Z #5"4T":": : : :1': 1t 1 1 1 1
  $)X XDjX!X 	X X X X F  F  F  F  Fs  F  F  FFH
 H
 H
 H
 H
 H
 H
 H
VD& D& D& D& D&/ D& D& D&N-D -D -D -D -D1 -D -D -D`<3 <3 <3 <3 <3/ <3 <3 <3 <3 <3sB   A A' 	A!A'  A!!A' 'A10A15B BB