o
    `®f[  ã                   @   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   úS/home/ubuntu/webapp/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#$