
    mgB                        U d Z ddlmZmZmZ ddlZg Zee   ed<   g Z	ee   ed<   i Z
i Zi Z G d d      Z G d d	      Zeg ee   f   Zeg ee   f   Zd dZ G d de      Z G d de      Zdededededed
dfdZd
ee   fdZd
ee   fdZded
efdZded
ee   fdZded
ee   fdZ edeedd        edeedd        edeedd       y)!zSSH compression handlers    )CallableListOptionalN	_cmp_algs_default_cmp_algsc                   &    e Zd ZdZdedee   fdZy)
CompressorzBase class for data compressordatareturnc                     t         )zCompress dataNotImplementedErrorselfr
   s     4lib/python3.12/site-packages/asyncssh/compression.pycompresszCompressor.compress&   
     "!    N)__name__
__module____qualname____doc__bytesr   r    r   r   r	   r	   #   s    ("U "x "r   r	   c                   &    e Zd ZdZdedee   fdZy)Decompressorz Base class for data decompressorr
   r   c                     t         )zDecompress datar   r   s     r   
decompresszDecompressor.decompress/   r   r   N)r   r   r   r   r   r   r   r   r   r   r   r   ,   s    *"u "% "r   r   r   c                       y)z*Compressor/decompressor for no compressionNr   r   r   r   _noner    9   s     r   c                   .    e Zd ZdZddZdedee   fdZy)_ZLibCompressz9Wrapper class to force a sync flush and handle exceptionsr   Nc                 6    t        j                         | _        y N)zlibcompressobj_compr   s    r   __init__z_ZLibCompress.__init__B   s    %%'
r   r
   c                     	 | j                   j                  |      | j                   j                  t        j                        z   S # t        j
                  $ r Y yw xY w)z4Compress data using zlib compression with sync flushN)r'   r   flushr%   Z_SYNC_FLUSHerrorr   s     r   r   z_ZLibCompress.compressE   sQ    	::&&t,::##D$5$567 7zz 		s   AA AAr   N)r   r   r   r   r)   r   r   r   r   r   r   r"   r"   ?   s!    C(U x r   r"   c                   .    e Zd ZdZddZdedee   fdZy)_ZLibDecompressz"Wrapper class to handle exceptionsr   Nc                 6    t        j                         | _        y r$   )r%   decompressobj_decompr(   s    r   r)   z_ZLibDecompress.__init__R   s    ))+r   r
   c                 l    	 | j                   j                  |      S # t        j                  $ r Y yw xY w)z&Decompress data using zlib compressionN)r3   r   r%   r-   r   s     r   r   z_ZLibDecompress.decompressU   s2    	<<**400zz 		s    33r.   )r   r   r   r   r)   r   r   r   r   r   r   r0   r0   O   s!    ,,u % r   r0   alg
compressordecompressor
after_authdefaultc                     t         j                  |        |rt        j                  |        |t        | <   |t        | <   |t
        | <   y)z Register a compression algorithmN)r   appendr   _cmp_params_cmp_compressors_cmp_decompressors)r5   r6   r7   r8   r9   s        r   register_compression_algr?   ^   sC    
 S  %!K&S*sr   c                      t         S )z'Return supported compression algorithms)r   r   r   r   get_compression_algsrA   n   s
     r   c                      t         S )z%Return default compression algorithms)r   r   r   r   get_default_compression_algsrC   t   s
     r   c                     t         |    S )zGet parameters of a compression algorithm

       This function returns whether or not a compression algorithm should
       be delayed until after authentication completes.

    )r<   r5   s    r   get_compression_paramsrF   z   s     sr   c                     t        |           S )zwReturn an instance of a compressor

       This function returns an object that can be used for data compression.

    )r=   rE   s    r   get_compressorrH      s     C ""r   c                     t        |           S )z{Return an instance of a decompressor

       This function returns an object that can be used for data decompression.

    )r>   rE   s    r   get_decompressorrJ      s     c"$$r   s   zlib@openssh.comTs   zlibFs   noner.   )r   typingr   r   r   r%   r   r   __annotations__r   r<   r=   r>   r	   r   _CompressorType_DecompressorTyper    r"   r0   boolr?   rA   rC   rF   rH   rJ   r   r   r   <module>rP      sr  *  + + 	4; !# 4; #  " "" " 2x
334R,!778 J  l +% +_ ++<+)-+8<+AE+ d5k d5k  $ # #(:"6 #%% %H\$: % ,&F &G Fr   