o
    Lj.                     @   s`  d dl mZ d dlmZ ddlmZmZ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	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G dd deZG dd deZG dd deZG dd deZG dd deZG dd deZ G d d! d!eZ!G d"d# d#eZ"G d$d% d%eZ#G d&d' d'eZ$d(S ))    )Literal)bool_ok   )apply_module_callbacksget_legacy_responses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   X/home/djax/ivt_ai_plugin/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_scale3      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_weights9   s   
zAbstractBloom.append_weightsc                 C   r$   )zAppend NOCREATE tag to params.NNOCREATEr   )r   noCreater   r   r   append_no_create@   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_incrementsF      z)AbstractBloom.append_items_and_incrementsc                 C   r1   )z,Append pairs of items and weights to params.Nr2   )r   r   r,   r5   r   r   r   append_values_and_weightsM   r7   z'AbstractBloom.append_values_and_weightsc                 C   r   )zAppend MAXITERATIONS to params.NMAXITERATIONSr   )r   max_iterationsr   r   r   append_max_iterationsT   r   z#AbstractBloom.append_max_iterationsc                 C   r   )zAppend BUCKETSIZE to params.N
BUCKETSIZEr   )r   bucket_sizer   r   r   append_bucket_sizeZ   r   z AbstractBloom.append_bucket_sizeN)__name__
__module____qualname____doc__staticmethodr   r   r    r#   r'   r-   r0   r6   r8   r;   r>   r   r   r   r   r      s0    









r   c                   @      e Zd Zdd ZdS )_CMSBloomBasec              
   K   s   t ttttti}tti}i }t|}tti}tti}|| _t| _	|j
| _
tt| jt| j||||||d}	|	 D ]\}
}| j|
| q:dS zCreate a new RedisBloom client.)commonresp2resp3resp2_unifiedresp3_unifiedresp3_to_resp2_legacyN)CMS_INITBYDIMr   CMS_INITBYPROB	CMS_MERGECMS_INFOr   dictclientCMSCommandscommandmixinexecute_commandr   r   r   r   set_response_callbackselfrR   kwargs_MODULE_CALLBACKS_RESP2_MODULE_CALLBACKS_RESP3_MODULE_CALLBACKS_RESP2_UNIFIED_MODULE_CALLBACKS_RESP3_UNIFIED_MODULE_CALLBACKS'_RESP3_TO_RESP2_LEGACY_MODULE_CALLBACKS	callbackskvr   r   r   __init__b   s8   	z_CMSBloomBase.__init__Nr?   r@   rA   rc   r   r   r   r   rE   a       rE   c                   @   rD   )_TOPKBloomBasec              
   K   s   t ti}tttttttti}i }tti}tti}tttttttti}|| _t	| _
|j| _tt| jt| j||||||d}	|	 D ]\}
}| j|
| qBdS rF   )TOPK_RESERVEr   TOPK_ADDr   TOPK_INCRBY	TOPK_INFOr   	TOPK_LISTrR   TOPKCommandsrT   rU   r   r   r   r   rV   rW   r   r   r   rc      sB   z_TOPKBloomBase.__init__Nrd   r   r   r   r   rf      re   rf   c                   @   rD   )_CFBloomBasec              
   K      t ti}tti}i }t|}tti}tti}|| _t| _|j| _t	t
| jt| j||||||d}	|	 D ]\}
}| j|
| q6dS rF   )
CF_RESERVEr   CF_INFOr   rQ   rR   
CFCommandsrT   rU   r   r   r   r   rV   rW   r   r   r   rc      s4   z_CFBloomBase.__init__Nrd   r   r   r   r   rm      re   rm   c                   @   rD   )_TDigestBloomBasec                 K   s   t ti}tttttttttt	t
t	tt	tti}i }t|}tttttttttt	t
t	tt	tti}tttt	t
t	tt	i}|| _t| _|j| _tt| jt| j||||||d}	|	 D ]\}
}| j|
| qXdS rF   )TDIGEST_CREATEr   TDIGEST_BYRANKr   TDIGEST_BYREVRANKTDIGEST_CDFTDIGEST_INFOr   TDIGEST_MINfloatTDIGEST_MAXTDIGEST_TRIMMED_MEANTDIGEST_QUANTILErQ   rR   TDigestCommandsrT   rU   r   r   r   r   rV   rW   r   r   r   rc      sV   
z_TDigestBloomBase.__init__Nrd   r   r   r   r   rr      re   rr   c                   @   rD   )_BFBloomBasec              
   K   rn   rF   )
BF_RESERVEr   BF_INFOr   rQ   rR   
BFCommandsrT   rU   r   r   r   r   rV   rW   r   r   r   rc   )  s4   z_BFBloomBase.__init__Nrd   r   r   r   r   r~   (  re   r~   c                   @      e Zd ZU dZed ed< dS )CMSBloomF_is_async_clientNr?   r@   rA   r   r   __annotations__r   r   r   r   r   W     
 r   c                   @   r   )	TOPKBloomFr   Nr   r   r   r   r   r   [  r   r   c                   @   r   )CFBloomFr   Nr   r   r   r   r   r   _  r   r   c                   @   r   )TDigestBloomFr   Nr   r   r   r   r   r   c  r   r   c                   @   r   )BFBloomFr   Nr   r   r   r   r   r   g  r   r   c                   @   r   )AsyncCMSBloomTr   Nr   r   r   r   r   r   k  r   r   c                   @   r   )AsyncTOPKBloomTr   Nr   r   r   r   r   r   o  r   r   c                   @   r   )AsyncCFBloomTr   Nr   r   r   r   r   r   s  r   r   c                   @   r   )AsyncTDigestBloomTr   Nr   r   r   r   r   r   w  r   r   c                   @   r   )AsyncBFBloomTr   Nr   r   r   r   r   r   {  r   r   N)%typingr   redis._parsers.helpersr   helpersr   r   r   r   commandsinfor   r   r   r   r   r   rS   rE   rl   rf   rq   rm   r}   rr   r   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s*    R+10;/