o
    rPf[                     @   s   d dl mZ ddlmZmZ ddlT ddlmZmZm	Z	m
Z
mZ G dd deZG d	d
 d
eeZG dd deeZG dd deeZG dd deeZG dd deeZdS )    )bool_ok   )get_protocol_versionparse_to_list   )*)BFInfoCFInfoCMSInfoTDigestInfoTopKInfoc                   @   s   e Zd ZdZedd Zedd Zedd Zedd	 Zed
d Z	edd Z
edd Zedd Zedd Zedd Zedd ZdS )AbstractBlooma  
    The client allows to interact with RedisBloom and use all of
    it's functionality.

    - BF for Bloom Filter
    - CF for Cuckoo Filter
    - CMS for Count-Min Sketch
    - TOPK for TopK Data Structure
    - TDIGEST for estimate rank statistics
    c                 C   s   |  dg | |7 } dS )zAppend ITEMS to params.ITEMSNextend)paramsitems r   [/var/www/html/humari/django-venv/lib/python3.10/site-packages/redis/commands/bf/__init__.pyappend_items   s   zAbstractBloom.append_itemsc                 C      |dur|  d|g dS dS )zAppend ERROR to params.NERRORr   )r   errorr   r   r   append_error      zAbstractBloom.append_errorc                 C   r   )zAppend CAPACITY to params.NCAPACITYr   )r   capacityr   r   r   append_capacity    r   zAbstractBloom.append_capacityc                 C   r   )zAppend EXPANSION to params.N	EXPANSIONr   )r   	expansionr   r   r   append_expansion&   r   zAbstractBloom.append_expansionc                 C      |dur|  dg dS dS )z Append NONSCALING tag to params.N
NONSCALINGr   )r   noScaler   r   r   append_no_scale,      zAbstractBloom.append_no_scalec                 C   s&   t |dkr| d | |7 } dS dS )zAppend WEIGHTS to params.r   WEIGHTSN)lenappend)r   weightsr   r   r   append_weights2   s   
zAbstractBloom.append_weightsc                 C   r!   )zAppend NOCREATE tag to params.NNOCREATEr   )r   noCreater   r   r   append_no_create9   r%   zAbstractBloom.append_no_createc                 C   2   t t|D ]}| ||  | ||  qdS )z/Append pairs of items and increments to params.Nranger'   r(   )r   r   
incrementsir   r   r   append_items_and_increments?      z)AbstractBloom.append_items_and_incrementsc                 C   r.   )z,Append pairs of items and weights to params.Nr/   )r   r   r)   r2   r   r   r   append_values_and_weightsF   r4   z'AbstractBloom.append_values_and_weightsc                 C   r   )zAppend MAXITERATIONS to params.NMAXITERATIONSr   )r   max_iterationsr   r   r   append_max_iterationsM   r   z#AbstractBloom.append_max_iterationsc                 C   r   )zAppend BUCKETSIZE to params.N
BUCKETSIZEr   )r   bucket_sizer   r   r   append_bucket_sizeS   r   z AbstractBloom.append_bucket_sizeN)__name__
__module____qualname____doc__staticmethodr   r   r   r    r$   r*   r-   r3   r5   r8   r;   r   r   r   r   r      s0    









r   c                   @      e Zd Zdd ZdS )CMSBloomc                 K   sx   t ttttti}tti}i }|| _t| _|j	| _	t
| jdv r%|| n|| | D ]\}}| j|| q.dS zCreate a new RedisBloom client.)3   N)CMS_INITBYDIMr   CMS_INITBYPROB	CMS_MERGECMS_INFOr
   clientCMSCommandscommandmixinexecute_commandr   updater   set_response_callbackselfrJ   kwargs_MODULE_CALLBACKS_RESP2_MODULE_CALLBACKS_RESP3_MODULE_CALLBACKSkvr   r   r   __init__[   s    	
zCMSBloom.__init__Nr<   r=   r>   rX   r   r   r   r   rB   Z       rB   c                   @   rA   )	TOPKBloomc                 K   s|   t ti}tttttttti}i }|| _t	| _
|j| _t| jdv r'|| n|| | D ]\}}| j|| q0dS rC   )TOPK_RESERVEr   TOPK_ADDr   TOPK_INCRBY	TOPK_INFOr   	TOPK_LISTrJ   TOPKCommandsrL   rM   r   rN   r   rO   rP   r   r   r   rX   y   s"   
zTOPKBloom.__init__NrY   r   r   r   r   r[   x   rZ   r[   c                   @   rA   )CFBloomc                 K   p   t ti}tti}i }|| _t| _|j| _t| jdv r!|	| n|	| |
 D ]\}}| j|| q*dS rC   )
CF_RESERVEr   CF_INFOr	   rJ   
CFCommandsrL   rM   r   rN   r   rO   rP   r   r   r   rX      s   
zCFBloom.__init__NrY   r   r   r   r   rb      rZ   rb   c                   @   rA   )TDigestBloomc                 K   s   t ti}tttttttttt	t
t	tt	tti}i }|| _t| _|j| _t| jdv r/|| n|| | D ]\}}| j|| q8dS rC   )TDIGEST_CREATEr   TDIGEST_BYRANKr   TDIGEST_BYREVRANKTDIGEST_CDFTDIGEST_INFOr   TDIGEST_MINfloatTDIGEST_MAXTDIGEST_TRIMMED_MEANTDIGEST_QUANTILErJ   TDigestCommandsrL   rM   r   rN   r   rO   rP   r   r   r   rX      s*   

zTDigestBloom.__init__NrY   r   r   r   r   rg      rZ   rg   c                   @   rA   )BFBloomc                 K   rc   rC   )
BF_RESERVEr   BF_INFOr   rJ   
BFCommandsrL   rM   r   rN   r   rO   rP   r   r   r   rX      s   
zBFBloom.__init__NrY   r   r   r   r   rs      rZ   rs   N)redis._parsers.helpersr   helpersr   r   commandsinfor   r	   r
   r   r   objectr   rK   rB   ra   r[   rf   rb   rr   rg   rv   rs   r   r   r   r   <module>   s    R#$