o
    ù•;hS  ã                   @   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ƒ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.ZITEMSN©Úextend)ÚparamsÚitems© r   úM/var/www/html/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.NZCAPACITYr   )r   Úcapacityr   r   r   Úappend_capacity    r   zAbstractBloom.append_capacityc                 C   r   )zAppend EXPANSION to params.NZ	EXPANSIONr   )r   Z	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.NZ
NONSCALINGr   )r   Z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   ZWEIGHTSN)ÚlenÚappend)r   Úweightsr   r   r   Úappend_weights2   s   
þzAbstractBloom.append_weightsc                 C   r   )zAppend NOCREATE tag to params.NZNOCREATEr   )r   Z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   Z
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"   r(   r   r   r   Úappend_values_and_weightsF   r*   z'AbstractBloom.append_values_and_weightsc                 C   r   )zAppend MAXITERATIONS to params.NZMAXITERATIONSr   )r   Zmax_iterationsr   r   r   Úappend_max_iterationsM   r   z#AbstractBloom.append_max_iterationsc                 C   r   )zAppend BUCKETSIZE to params.NZ
BUCKETSIZEr   )r   Zbucket_sizer   r   r   Úappend_bucket_sizeS   r   z AbstractBloom.append_bucket_sizeN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústaticmethodr   r   r   r   r   r#   r$   r)   r+   r,   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)ZCMS_INITBYDIMr   ZCMS_INITBYPROBZ	CMS_MERGEZCMS_INFOr
   ÚclientÚCMSCommandsÚcommandmixinÚexecute_commandr   Úupdater   Úset_response_callback©Úselfr8   ÚkwargsZ_MODULE_CALLBACKSZ_RESP2_MODULE_CALLBACKSZ_RESP3_MODULE_CALLBACKSÚkÚvr   r   r   Ú__init__[   s    û	ÿ
ÿzCMSBloom.__init__N©r.   r/   r0   rC   r   r   r   r   r4   Z   ó    r4   c                   @   r3   )Ú	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 r5   )ZTOPK_RESERVEr   ZTOPK_ADDr   ZTOPK_INCRBYZ	TOPK_INFOr   Z	TOPK_LISTr8   ÚTOPKCommandsr:   r;   r   r<   r   r=   r>   r   r   r   rC   y   s"   ÿü
ÿzTOPKBloom.__init__NrD   r   r   r   r   rF   x   rE   rF   c                   @   r3   )ÚCFBloomc                 K   óp   t ti}tti}i }|| _t| _|j| _t| jƒdv r!| 	|¡ n| 	|¡ | 
¡ D ]\}}| j ||¡ q*dS r5   )Z
CF_RESERVEr   ZCF_INFOr	   r8   Ú
CFCommandsr:   r;   r   r<   r   r=   r>   r   r   r   rC   ˜   s   ÿÿ
ÿzCFBloom.__init__NrD   r   r   r   r   rH   —   rE   rH   c                   @   r3   )Ú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 r5   )ZTDIGEST_CREATEr   ZTDIGEST_BYRANKr   ZTDIGEST_BYREVRANKZTDIGEST_CDFZTDIGEST_INFOr   ZTDIGEST_MINÚfloatZTDIGEST_MAXZTDIGEST_TRIMMED_MEANZTDIGEST_QUANTILEr8   ÚTDigestCommandsr:   r;   r   r<   r   r=   r>   r   r   r   rC   »   s*   ÿø

ÿzTDigestBloom.__init__NrD   r   r   r   r   rK   º   rE   rK   c                   @   r3   )ÚBFBloomc                 K   rI   r5   )Z
BF_RESERVEr   ZBF_INFOr   r8   Ú
BFCommandsr:   r;   r   r<   r   r=   r>   r   r   r   rC   ß   s   ÿÿ
ÿzBFBloom.__init__NrD   r   r   r   r   rN   Þ   rE   rN   N)Zredis._parsers.helpersr   Zhelpersr   r   ÚcommandsÚinfor   r	   r
   r   r   r   r9   r4   rG   rF   rJ   rH   rM   rK   rO   rN   r   r   r   r   Ú<module>   s    R#$