
    ]*i                    *   d dl mZ d dl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j#                  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y)    )annotationsN)AnyIterableOptionalUnion)HelloCompat)_SENSITIVE_COMMANDS>   zlibzstdsnappyc                 ,    	 dd l } y# t        $ r Y yw xY wNr   TF)r   ImportError)r   s    U/home/alumno/antonio/venv/lib/python3.12/site-packages/pymongo/compression_support.py_have_snappyr      s         	c                 ,    	 dd l } y# t        $ r Y yw xY wr   )r
   r   )r
   s    r   
_have_zlibr   %   s     r   c                 d    	 t         j                  dk\  rddlm}  yddlm}  y# t
        $ r Y yw xY w)N      r   r   TF)sysversion_infocompressionr   	backportsr   r   s    r   
_have_zstdr   .   s7    w&(  ' s   # # 	//c                   	 |j                  d      }|d d  D ]  }|t        vr,|j	                  |       t        j                  d| d       8|dk(  r3t               s)|j	                  |       t        j                  dd       p|dk(  r3t               s)|j	                  |       t        j                  dd       |d	k(  st               r|j	                  |       t        j                  d
k\  rt        j                  dd       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   r   zhWire protocol compression with zstandard is not available. The compression.zstd module is not available.z|Wire protocol compression with zstandard is not available. You must install the backports.zstd module for zstandard support.)splitAttributeErrorlist_SUPPORTED_COMPRESSORSremovewarningswarnr   r   r   r   r   )dummyvaluecompressors
compressors       r   validate_compressorsr.   :   s0   "kk#&
 "!n 
33z*MM4ZLAaP8#LNz*MMP
 6!*,z*MM4
 6!*,z*7*D  X 7@ I  "5k"s   D) )E Ec                    	 t        |      }|dk  s|dkD  rt        d| |fz        |S # t        $ r t        |  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_levelr8   e   sf    QE
 rzUQY?65/QRRL	  Q6(";E9EFDPQs	   ) Ac                  $    e Zd ZddZ	 	 	 	 ddZy)CompressionSettingsc                     || _         || _        y N)r,   zlib_compression_level)selfr,   r=   s      r   __init__zCompressionSettings.__init__p   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ZlibContextr=   ZstdContext)r>   r,   chosens      r   get_compression_contextz+CompressionSettings.get_compression_contextt   sO      ^F!$&6!"4#>#>??6!"}$r@   N)r,   	list[str]r=   r2   )r,   zOptional[list[str]]returnz4Union[SnappyContext, ZlibContext, ZstdContext, None])__name__
__module____qualname__r?   rF    r@   r   r:   r:   o   s    =.	=r@   r:   c                  "    e Zd ZdZedd       Zy)rB      c                ,    dd l }|j                  |       S Nr   )r   compress)datar   s     r   rQ   zSnappyContext.compress   s    t$$r@   NrR   bytesrH   rT   rI   rJ   rK   compressor_idstaticmethodrQ   rL   r@   r   rB   rB      s    M% %r@   rB   c                       e Zd ZdZddZddZy)rC   r!   c                    || _         y r<   )r7   )r>   r7   s     r   r?   zZlibContext.__init__   s	    
r@   c                B    dd l }|j                  || j                        S rP   )r
   rQ   r7   )r>   rR   r
   s      r   rQ   zZlibContext.compress   s    }}T4::..r@   N)r7   r2   rS   )rI   rJ   rK   rV   r?   rQ   rL   r@   r   rC   rC      s    M/r@   rC   c                  "    e Zd ZdZedd       Zy)rD   r   c                d    t         j                  dk\  rddlm} nddlm} |j                  |       S )Nr   r   r   )r   r   r   r   r   rQ   )rR   r   s     r   rQ   zZstdContext.compress   s%    w&(&}}T""r@   NrS   rU   rL   r@   r   rD   rD      s    M# #r@   rD   c                Z   |t         j                  k(  rdd l}|j                  t	        |             S |t
        j                  k(  rdd l}|j                  |       S |t        j                  k(  r1t        j                  dk\  rddlm} nddlm} |j                  |       S t        d|fz        )Nr   r   r   zUnknown compressorId %d)rB   rV   r   
uncompressrT   rC   r
   
decompressrD   r   r   r   r   r   r5   )rR   rV   r   r
   r   s        r   r_   r_      s    333
 	  t--	+33	3t$$	+33	3w&(&t$$2m5EEFFr@   )rH   bool)r*   r   r+   zUnion[str, Iterable[str]]rH   rG   )r6   strr+   r   rH   r2   )rR   zbytes | memoryviewrV   r2   rH   rT   )
__future__r   r   r(   typingr   r   r   r   pymongo.hellor   pymongo.helpers_sharedr	   r&   CMD
LEGACY_CMD_NO_COMPRESSIONupdater   r   r   r.   r8   r:   rB   rC   rD   r_   rL   r@   r   <module>rj      s    # 
  1 1 % 63 ??K$:$:;   * +	(V (% %	/ 	/
# 
#Gr@   