
    dfe                       d dl mZ d dlZd dlmZmZmZmZ d dlm	Z	 d dl
mZ d dlmZ 	  e	d      ZdZ	  e	d
      ZdZ	  e	d      ZdZh dZej,                  ej.                  hZej3                  e       ddZddZ G d d      Z G d d      Z G d d      Z G d d      ZddZ y# e$ r d	ZY w xY w# e$ r d	ZY w xY w# e$ r d	ZY w xY w)    )annotationsN)AnyIterableOptionalUnion)lazy_import)HelloCompat)_SENSITIVE_COMMANDSsnappyTFzlib	zstandard>   r   zstdr   c                   	 |j                  d      }|d d  D ]  }|t        vr,|j	                  |       t        j                  d| d       7|dk(  r/t        s)|j	                  |       t        j                  dd       k|dk(  r/t        s)|j	                  |       t        j                  dd       |d	k(  st        r|j	                  |       t        j                  d
d        |S # t        $ r t        |      }Y w xY w)N,zUnsupported compressor:    )
stacklevelr   zuWire protocol compression with snappy is not available. You must install the python-snappy module for snappy support.r   zWWire protocol compression with zlib is not available. The zlib module is not available.r   zwWire protocol compression with zstandard is not available. You must install the zstandard module for zstandard support.)
splitAttributeErrorlist_SUPPORTED_COMPRESSORSremovewarningswarn_HAVE_SNAPPY
_HAVE_ZLIB
_HAVE_ZSTD)dummyvaluecompressors
compressors       T/home/api-vastappli/venv/lib/python3.12/site-packages/pymongo/compression_support.pyvalidate_compressorsr"   1   s   "kk#&
 "!n 
33z*MM4ZLAaP8#Lz*MMP
 6!*z*MM4
 6!*z*MMO)2 ;  "5k"s   C0 0DDc                    	 t        |      }|dk  s|dkD  rt        d| |fz        |S # t        $ r t        |  d|d      d w xY w)Nz must be an integer, not .	   z$%s must be between -1 and 9, not %d.)int	Exception	TypeError
ValueError)optionr   levels      r!   validate_zlib_compression_levelr-   U   sh    RE
 rzUQY?65/QRRL	  R6(";E9AFGTQRs	   ) Ac                  $    e Zd ZddZ	 	 	 	 ddZy)CompressionSettingsc                     || _         || _        y N)r   zlib_compression_level)selfr   r2   s      r!   __init__zCompressionSettings.__init__`   s    &&<#    c                    |r>|d   }|dk(  r
t               S |dk(  rt        | j                        S |dk(  r
t               S y y )Nr   r   r   r   )SnappyContextZlibContextr2   ZstdContext)r3   r   chosens      r!   get_compression_contextz+CompressionSettings.get_compression_contextd   sO      ^F!$&6!"4#>#>??6!"}$r5   N)r   	list[str]r2   r'   )r   zOptional[list[str]]returnz4Union[SnappyContext, ZlibContext, ZstdContext, None])__name__
__module____qualname__r4   r;    r5   r!   r/   r/   _   s    =.	=r5   r/   c                  "    e Zd ZdZedd       Zy)r7      c                ,    t         j                  |       S r1   )r   compressdatas    r!   rE   zSnappyContext.compressv   s    t$$r5   NrG   bytesr=   rI   r>   r?   r@   compressor_idstaticmethodrE   rA   r5   r!   r7   r7   s   s    M% %r5   r7   c                       e Zd ZdZddZddZy)r8   r   c                    || _         y r1   )r,   )r3   r,   s     r!   r4   zZlibContext.__init__~   s	    
r5   c                B    t         j                  || j                        S r1   )r   rE   r,   )r3   rG   s     r!   rE   zZlibContext.compress   s    }}T4::..r5   N)r,   r'   rH   )r>   r?   r@   rK   r4   rE   rA   r5   r!   r8   r8   {   s    M/r5   r8   c                  "    e Zd ZdZedd       Zy)r9      c                H    t         j                         j                  |       S r1   )r   ZstdCompressorrE   rF   s    r!   rE   zZstdContext.compress   s     '')22488r5   NrH   rJ   rA   r5   r!   r9   r9      s    M9 9r5   r9   c                >   |t         j                  k(  rt        j                  t	        |             S |t
        j                  k(  rt        j                  |       S |t        j                  k(  r#t        j                         j                  |       S t        d|fz        )NzUnknown compressorId %d)r7   rK   r   
uncompressrI   r8   r   
decompressr9   r   ZstdDecompressorr*   )rG   rK   s     r!   rV   rV      s    333
   t--	+33	3t$$	+33	3 ))+66t<<2m5EEFFr5   )r   r   r   zUnion[str, Iterable[str]]r=   r<   )r+   strr   r   r=   r'   )rG   rI   rK   r'   r=   rI   )!
__future__r   r   typingr   r   r   r   pymongo._lazy_importr   pymongo.hellor	   pymongo.monitoringr
   r   r   ImportErrorr   r   r   r   r   CMD
LEGACY_CMD_NO_COMPRESSIONupdater"   r-   r/   r7   r8   r9   rV   rA   r5   r!   <module>rc      s    #  1 1 , % 2"FL
vDJ
K(IJ 4 ??K$:$:;   * +!H (% %/ /9 9Gk  L  J  Js4   
B, 
B9  
C ,B65B69CCCC