
    +h[                         d dl mZ ddlmZmZ ddl ddlmZmZm	Z	m
Z
mZ  G d de      Z G d	 d
ee      Z G d dee      Z G d dee      Z G d dee      Z G d dee      Zy)    )bool_ok   )get_protocol_versionparse_to_list   )*)BFInfoCFInfoCMSInfoTDigestInfoTopKInfoc                       e Zd ZdZed        Zed        Zed        Zed        Zed        Z	ed        Z
ed        Zed	        Zed
        Zed        Zed        Zy)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                 2    | j                  dg       | |z  } y)zAppend ITEMS to params.ITEMSNextend)paramsitemss     M/var/www/html/venv/lib/python3.12/site-packages/redis/commands/bf/__init__.pyappend_itemszAbstractBloom.append_items   s     	wi %    c                 0    || j                  d|g       yy)zAppend ERROR to params.NERRORr   )r   errors     r   append_errorzAbstractBloom.append_error   s      MM7E*+ r   c                 0    || j                  d|g       yy)zAppend CAPACITY to params.NCAPACITYr   )r   capacitys     r   append_capacityzAbstractBloom.append_capacity    s      MM:x01  r   c                 0    || j                  d|g       yy)zAppend EXPANSION to params.N	EXPANSIONr   )r   	expansions     r   append_expansionzAbstractBloom.append_expansion&   s       MM;	23 !r   c                 .    || j                  dg       yy)z Append NONSCALING tag to params.N
NONSCALINGr   )r   noScales     r   append_no_scalezAbstractBloom.append_no_scale,   s     MM<.) r   c                 N    t        |      dkD  r| j                  d       | |z  } yy)zAppend WEIGHTS to params.r   WEIGHTSN)lenappend)r   weightss     r   append_weightszAbstractBloom.append_weights2   s+     w<!MM)$gF r   c                 .    || j                  dg       yy)zAppend NOCREATE tag to params.NNOCREATEr   )r   noCreates     r   append_no_createzAbstractBloom.append_no_create9   s     MM:,'  r   c                     t        t        |            D ]*  }| j                  ||          | j                  ||          , y)z/Append pairs of items and increments to params.Nranger+   r,   )r   r   
incrementsis       r   append_items_and_incrementsz)AbstractBloom.append_items_and_increments?   s<     s5z" 	)AMM%(#MM*Q-(	)r   c                     t        t        |            D ]*  }| j                  ||          | j                  ||          , y)z,Append pairs of items and weights to params.Nr4   )r   r   r-   r7   s       r   append_values_and_weightsz'AbstractBloom.append_values_and_weightsF   s<     s5z" 	&AMM%(#MM'!*%	&r   c                 0    || j                  d|g       yy)zAppend MAXITERATIONS to params.NMAXITERATIONSr   )r   max_iterationss     r   append_max_iterationsz#AbstractBloom.append_max_iterationsM   s      %MM?N;< &r   c                 0    || j                  d|g       yy)zAppend BUCKETSIZE to params.N
BUCKETSIZEr   )r   bucket_sizes     r   append_bucket_sizez AbstractBloom.append_bucket_sizeS   s      "MM<56 #r   N)__name__
__module____qualname____doc__staticmethodr   r   r    r$   r(   r.   r2   r8   r:   r>   rB    r   r   r   r      s    	  
 , ,
 2 2
 4 4
 * *
   ( (
 ) ) & & = =
 7 7r   r   c                       e Zd Zd Zy)CMSBloomc                    t         t        t        t        t        t        i}t        t
        i}i }|| _        t        | _        |j                  | _	        t        | j                        dv r|j                  |       n|j                  |       |j                         D ]!  \  }}| j                  j                  ||       # y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selfrS   kwargs_MODULE_CALLBACKS_RESP2_MODULE_CALLBACKS_RESP3_MODULE_CALLBACKSkvs           r   __init__zCMSBloom.__init__[   s     7G w
 g#
 #%'%55,8$$%<=$$%<=%++- 	4DAqKK--a3	4r   NrC   rD   rE   ra   rH   r   r   rJ   rJ   Z   s    4r   rJ   c                       e Zd Zd Zy)	TOPKBloomc                    t         t        i}t        t        t        t        t
        t        t        t        i}i }|| _        t        | _
        |j                  | _        t        | j                        dv r|j                  |       n|j                  |       |j                         D ]!  \  }}| j                  j                  ||       # yrL   )TOPK_RESERVEr   TOPK_ADDr   TOPK_INCRBY	TOPK_INFOr   	TOPK_LISTrS   TOPKCommandsrU   rV   r   rW   r   rX   rY   s           r   ra   zTOPKBloom.__init__y   s     '
 mx}	#
 #%(%55,8$$%<=$$%<=%++- 	4DAqKK--a3	4r   Nrb   rH   r   r   rd   rd   x   s    4r   rd   c                       e Zd Zd Zy)CFBloomc                 Z   t         t        i}t        t        i}i }|| _        t
        | _        |j                  | _        t        | j                        dv r|j                  |       n|j                  |       |j                         D ]!  \  }}| j                  j                  ||       # yrL   )
CF_RESERVEr   CF_INFOr
   rS   
CFCommandsrU   rV   r   rW   r   rX   rY   s           r   ra   zCFBloom.__init__   s     
 V#
 #%&%55,8$$%<=$$%<=%++- 	4DAqKK--a3	4r   Nrb   rH   r   r   rm   rm      s    4r   rm   c                       e Zd Zd Zy)TDigestBloomc                    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|j%                  |       n|j%                  |       |j'                         D ]!  \  }}| j                  j)                  ||       # yrL   )TDIGEST_CREATEr   TDIGEST_BYRANKr   TDIGEST_BYREVRANKTDIGEST_CDFTDIGEST_INFOr   TDIGEST_MINfloatTDIGEST_MAXTDIGEST_TRIMMED_MEANTDIGEST_QUANTILErS   TDigestCommandsrU   rV   r   rW   r   rX   rY   s           r   ra   zTDigestBloom.__init__   s     G
 M}+ %m	#
 #%+%55,8$$%<=$$%<=%++- 	4DAqKK--a3	4r   Nrb   rH   r   r   rs   rs      s     4r   rs   c                       e Zd Zd Zy)BFBloomc                 Z   t         t        i}t        t        i}i }|| _        t
        | _        |j                  | _        t        | j                        dv r|j                  |       n|j                  |       |j                         D ]!  \  }}| j                  j                  ||       # yrL   )
BF_RESERVEr   BF_INFOr	   rS   
BFCommandsrU   rV   r   rW   r   rX   rY   s           r   ra   zBFBloom.__init__   s     

 V#
 #%&%55,8$$%<=$$%<=%++- 	4DAqKK--a3	4r   Nrb   rH   r   r   r   r      s    4r   r   N)redis._parsers.helpersr   helpersr   r   commandsinfor	   r
   r   r   r   objectr   rT   rJ   rk   rd   rq   rm   r   rs   r   r   rH   r   r   <module>r      sk    * 9  @ @O7F O7d4{M 4<4m 4> 4j-  4F!4?M !4H4j- 4r   