o
    sDi                     @  s   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e d)d	d
Zd)ddZd)ddZd*ddZd+ddZG dd dZG dd dZG dd  d ZG d!d" d"Zd,d'd(ZdS )-    )annotationsN)AnyIterableOptionalUnion)HelloCompat)_SENSITIVE_COMMANDS>   zlibzstdsnappyreturnboolc                  C  $   zdd l } W dS  ty   Y dS w Nr   TF)r   ImportError)r    r   Y/home/alumno/antzosa8961/venv/lib/python3.10/site-packages/pymongo/compression_support.py_have_snappy      r   c                  C  r   r   )r	   r   )r	   r   r   r   
_have_zlib%   r   r   c                  C  sD   zt jdkrddlm}  W dS ddlm}  W dS  ty!   Y dS w )N      r   r
   TF)sysversion_infocompressionr
   	backportsr   r   r   r   r   
_have_zstd.   s   
r   dummyr   valueUnion[str, Iterable[str]]	list[str]c                 C  s   z| d}W n ty   t|}Y nw |d d  D ]^}|tvr1|| tjd| dd q|dkrEt sE|| tjddd q|dkrYt sY|| tjddd q|d	kryt	 sy|| t
jd
krrtjddd qtjddd q|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
   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   )r   r    compressors
compressorr   r   r   validate_compressors:   sD   




r/   optionstrintc                 C  sT   zt |}W n ty   t|  d|d w |dk s |dkr(td| |f |S )Nz must be an integer, not 	   z$%s must be between -1 and 9, not %d.)r2   	Exception	TypeError
ValueError)r0   r    levelr   r   r   validate_zlib_compression_levele   s   r9   c                   @  s    e Zd ZdddZdd
dZdS )CompressionSettingsr-   r"   zlib_compression_levelr2   c                 C  s   || _ || _d S N)r-   r;   )selfr-   r;   r   r   r   __init__p   s   
zCompressionSettings.__init__Optional[list[str]]r   4Union[SnappyContext, ZlibContext, ZstdContext, None]c                 C  sB   |r|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ZlibContextr;   ZstdContext)r=   r-   chosenr   r   r   get_compression_contextt   s   
z+CompressionSettings.get_compression_contextN)r-   r"   r;   r2   )r-   r?   r   r@   )__name__
__module____qualname__r>   rE   r   r   r   r   r:   o   s    
r:   c                   @     e Zd ZdZedddZdS )	rA      databytesr   c                 C  s   dd l }|| S Nr   )r   compress)rK   r   r   r   r   rN      s   
zSnappyContext.compressNrK   rL   r   rL   rF   rG   rH   compressor_idstaticmethodrN   r   r   r   r   rA          rA   c                   @  s$   e Zd ZdZdddZdd	d
ZdS )rB   r$   r8   r2   c                 C  s
   || _ d S r<   )r8   )r=   r8   r   r   r   r>      s   
zZlibContext.__init__rK   rL   r   c                 C  s   dd l }||| jS rM   )r	   rN   r8   )r=   rK   r	   r   r   r   rN      s   zZlibContext.compressN)r8   r2   rO   )rF   rG   rH   rQ   r>   rN   r   r   r   r   rB      s    
rB   c                   @  rI   )	rC   r   rK   rL   r   c                 C  s.   t jdkrddlm} nddlm} || S )Nr   r   r   )r   r   r   r
   r   rN   )rK   r
   r   r   r   rN      s   

zZstdContext.compressNrO   rP   r   r   r   r   rC      rS   rC   rK   bytes | memoryviewrQ   rL   c                 C  s   |t jkrdd l}|t| S |tjkrdd l}|| S |tjkr:t	j
dkr/ddlm} nddlm} || S td|f )Nr   r   r   zUnknown compressorId %d)rA   rQ   r   
uncompressrL   rB   r	   
decompressrC   r   r   r   r
   r   r7   )rK   rQ   r   r	   r
   r   r   r   rV      s   





rV   )r   r   )r   r   r    r!   r   r"   )r0   r1   r    r   r   r2   )rK   rT   rQ   r2   r   rL   )
__future__r   r   r+   typingr   r   r   r   pymongo.hellor   pymongo.helpers_sharedr   r)   CMD
LEGACY_CMD_NO_COMPRESSIONupdater   r   r   r/   r9   r:   rA   rB   rC   rV   r   r   r   r   <module>   s&   


	
	

+

