
    _i                    0   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 h dZe	j        e	j        hZe                    e           d#d	Zd#d
Zd#dZ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dS )'    )annotationsN)AnyIterableOptionalUnion)HelloCompat)_SENSITIVE_COMMANDS>   zlibzstdsnappyreturnboolc                 2    	 dd l } dS # t          $ r Y dS w xY wNr   TF)r   ImportError)r   s    >D:\Nbitz\venv\Lib\site-packages\pymongo/compression_support.py_have_snappyr      s7    t   uu    
c                 2    	 dd l } dS # t          $ r Y dS w xY wr   )r
   r   )r
   s    r   
_have_zlibr   $   s7    t   uur   c                 2    	 dd l } dS # t          $ r Y dS w xY wr   )	zstandardr   )r   s    r   
_have_zstdr   -   s:    t   uur   dummyr   valueUnion[str, Iterable[str]]	list[str]c                z   	 |                     d          }n# t          $ r t          |          }Y nw xY w|d d          D ]}|t          vr/|                    |           t          j        d| d           :|dk    r:t                      s,|                    |           t          j        dd           z|dk    r:t                      s,|                    |           t          j        dd           |d	k    r9t                      s+|                    |           t          j        d
d           |S )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warnr   r   r   )r   r   compressors
compressors       r   validate_compressorsr+   6   s   "kk#&& " " "5kk" "!!!n  
333z***MAZAAaPPPPP8##LNN#z***MP    
 6!!*,,!z***M4    
 6!!*,,!z***MO   
 s    44optionstrintc                    	 t          |          }n## t          $ r t          |  d|          d w xY w|dk     s|dk    rt          d| |fz            |S )Nz must be an integer, not 	   z$%s must be between -1 and 9, not %d.)r.   	Exception	TypeError
ValueError)r,   r   levels      r   validate_zlib_compression_levelr6   Z   s    QE

 Q Q Q6EEEEEFFDPQrzzUQYY?65/QRRRLs     2c                      e Zd ZddZdd	Zd
S )CompressionSettingsr)   r   zlib_compression_levelr.   c                "    || _         || _        d S N)r)   r9   )selfr)   r9   s      r   __init__zCompressionSettings.__init__e   s    &&<###    Optional[list[str]]r   4Union[SnappyContext, ZlibContext, ZstdContext, None]c                    |rL|d         }|dk    rt                      S |dk    rt          | j                  S |dk    rt                      S d S d S )Nr   r   r
   r   )SnappyContextZlibContextr9   ZstdContext)r<   r)   chosens      r   get_compression_contextz+CompressionSettings.get_compression_contexti   se      	 ^F!!$&6!!"4#>???6!!"}}$4tr>   N)r)   r   r9   r.   )r)   r?   r   r@   )__name__
__module____qualname__r=   rF    r>   r   r8   r8   d   s<        = = = =     r>   r8   c                  *    e Zd ZdZedd            ZdS )rB      databytesr   c                4    dd l }|                    |           S Nr   )r   compress)rM   r   s     r   rQ   zSnappyContext.compress{   s    t$$$r>   NrM   rN   r   rN   rG   rH   rI   compressor_idstaticmethodrQ   rJ   r>   r   rB   rB   x   s7        M% % % \% % %r>   rB   c                  "    e Zd ZdZd
dZddZd	S )rC   r    r5   r.   c                    || _         d S r;   )r5   )r<   r5   s     r   r=   zZlibContext.__init__   s    


r>   rM   rN   r   c                @    dd l }|                    || j                  S rP   )r
   rQ   r5   )r<   rM   r
   s      r   rQ   zZlibContext.compress   s!    }}T4:...r>   N)r5   r.   rR   )rG   rH   rI   rT   r=   rQ   rJ   r>   r   rC   rC      sA        M   / / / / / /r>   rC   c                  *    e Zd ZdZedd            ZdS )rD      rM   rN   r   c                X    dd l }|                                                    |           S rP   )r   ZstdCompressorrQ   )rM   r   s     r   rQ   zZstdContext.compress   s0    
 	''))224888r>   NrR   rS   rJ   r>   r   rD   rD      s7        M9 9 9 \9 9 9r>   rD   rM   bytes | memoryviewrT   rN   c                \   |t           j        k    r&dd l}|                    t	          |                     S |t
          j        k    rdd l}|                    |           S |t          j        k    r+dd l	}|
                                                    |           S t          d|fz            )Nr   zUnknown compressorId %d)rB   rT   r   
uncompressrN   rC   r
   
decompressrD   r   ZstdDecompressorr4   )rM   rT   r   r
   r   s        r   r`   r`      s    333
 	  t---	+3	3	3t$$$	+3	3	3 	))++66t<<<2m5EEFFFr>   )r   r   )r   r   r   r   r   r   )r,   r-   r   r   r   r.   )rM   r]   rT   r.   r   rN   )
__future__r   r'   typingr   r   r   r   pymongo.hellor   pymongo.helpers_sharedr	   r%   CMD
LEGACY_CMD_NO_COMPRESSIONupdater   r   r   r+   r6   r8   rB   rC   rD   r`   rJ   r>   r   <module>rj      s   # " " " " "  1 1 1 1 1 1 1 1 1 1 1 1 % % % % % % 6 6 6 6 6 6333 ?K$:;   * + + +         ! ! ! !H          (% % % % % % % %	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/
9 
9 
9 
9 
9 
9 
9 
9G G G G G Gr>   