
    nh                    "   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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    /var/www/html/SchoolMeal/SchoolMeal/pds_admin_SchoolMeal/Backend/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d l } y# t        $ r Y yw xY wr   )	zstandardr   )r   s    r   
_have_zstdr   -   s     r   c                ,   	 |j                  d      }|d d  D ]  }|t        vr,|j	                  |       t        j                  d| d       7|dk(  r3t               s)|j	                  |       t        j                  dd       o|dk(  r3t               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warnr   r   r   )dummyvaluecompressors
compressors       r   validate_compressorsr'   6   s	   "kk#&
 "!n 
33z*MM4ZLAaP8#LNz*MMP
 6!*,z*MM4
 6!*,z*MMO)2 ;  "5k"s   C< <DD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_levelr1   Z   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%   r6   s      r   __init__zCompressionSettings.__init__e   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ZlibContextr6   ZstdContext)r7   r%   chosens      r   get_compression_contextz+CompressionSettings.get_compression_contexti   sO      ^F!$&6!"4#>#>??6!"}$r9   N)r%   	list[str]r6   r+   )r%   zOptional[list[str]]returnz4Union[SnappyContext, ZlibContext, ZstdContext, None])__name__
__module____qualname__r8   r?    r9   r   r3   r3   d   s    =.	=r9   r3   c                  "    e Zd ZdZedd       Zy)r;      c                ,    dd l }|j                  |       S Nr   )r   compress)datar   s     r   rJ   zSnappyContext.compress{   s    t$$r9   NrK   bytesrA   rM   rB   rC   rD   compressor_idstaticmethodrJ   rE   r9   r   r;   r;   x   s    M% %r9   r;   c                       e Zd ZdZddZddZy)r<   r   c                    || _         y r5   )r0   )r7   r0   s     r   r8   zZlibContext.__init__   s	    
r9   c                B    dd l }|j                  || j                        S rI   )r
   rJ   r0   )r7   rK   r
   s      r   rJ   zZlibContext.compress   s    }}T4::..r9   N)r0   r+   rL   )rB   rC   rD   rO   r8   rJ   rE   r9   r   r<   r<      s    M/r9   r<   c                  "    e Zd ZdZedd       Zy)r=      c                H    dd l }|j                         j                  |       S rI   )r   ZstdCompressorrJ   )rK   r   s     r   rJ   zZstdContext.compress   s!    
 	'')22488r9   NrL   rN   rE   r9   r   r=   r=      s    M9 9r9   r=   c                >   |t         j                  k(  rdd l}|j                  t	        |             S |t
        j                  k(  rdd l}|j                  |       S |t        j                  k(  r#dd l	}|j                         j                  |       S t        d|fz        )Nr   zUnknown compressorId %d)r;   rO   r   
uncompressrM   r<   r
   
decompressr=   r   ZstdDecompressorr.   )rK   rO   r   r
   r   s        r   rZ   rZ      s    333
 	  t--	+33	3t$$	+33	3 	))+66t<<2m5EEFFr9   )rA   bool)r#   r   r$   zUnion[str, Iterable[str]]rA   r@   )r/   strr$   r   rA   r+   )rK   rM   rO   r+   rA   rM   )
__future__r   r!   typingr   r   r   r   pymongo.hellor   pymongo.helpers_sharedr	   r   CMD
LEGACY_CMD_NO_COMPRESSIONupdater   r   r   r'   r1   r3   r;   r<   r=   rZ   rE   r9   r   <module>rf      s    #  1 1 % 63 ??K$:$:;   * +!H (% %	/ 	/
9 
9Gr9   