o
    ri                     @  sT   d dl mZ d dlmZmZ d dlmZ d dlmZ d dl	m
Z
 G dd deZdS )	    )annotations)ABCabstractmethod)
ModuleType)parse_storage_uri)get_package_datac                   @  sh  e Zd ZdZee dZee dZee dZee dZee dZ	ee dZ
dJddZdKddZedLddZedMdd ZedNd!d"ZedNd#d$ZeedOd&d'Ze	(dPdQd,d-ZedRd.d/ZedSd0d1ZedTd4d5ZedUd9d:Ze	(dPdVd;d<Ze	(dPdWd=d>ZedXd@dAZedYdBdCZedZdEdFZedZdGdHZdIS )[RedisBridgezresources/redis/lua_scriptsz/moving_window.luaz/acquire_moving_window.luaz/clear_keys.luaz/incr_expire.luaz/sliding_window.luaz/acquire_sliding_window.luauristr
dependencyr   
key_prefixoptionsfloat | str | boolreturnNonec                 K  sh   || _ t| j | _|| _i | _|| _|d| jj }r!|| jd< |d| jj }r2|| jd< d S d S )Nusernamepassword)	r	   r   options_from_urir   parsed_authr   getr   r   )selfr	   r   r   r   r   r    r   ^/var/www/html/pca-backend/venv/lib/python3.10/site-packages/limits/aio/storage/redis/bridge.py__init__   s   
zRedisBridge.__init__keyc                 C  s   | j  d| S )N:)r   r   r   r   r   r   prefixed_key)   s   zRedisBridge.prefixed_keyc                 C     d S Nr   r   r   r   r   register_scripts,      zRedisBridge.register_scriptsservice_name
str | Noneuse_replicasboolsentinel_kwargs$dict[str, str | float | bool] | Nonestr | float | boolc                 K  r   r   r   )r   r#   r%   r'   r   r   r   r   use_sentinel/   s   zRedisBridge.use_sentinelc                 K  r   r   r   r   r   r   r   r   	use_basic8   r"   zRedisBridge.use_basicc                 K  r   r   r   r+   r   r   r   use_cluster;   r"   zRedisBridge.use_cluster-type[Exception] | tuple[type[Exception], ...]c                 C  r   r   r   r    r   r   r   base_exceptions>   s   zRedisBridge.base_exceptions   expiryintamountc                      d S r   r   )r   r   r1   r3   r   r   r   incrD   s   zRedisBridge.incrc                   r4   r   r   r   r   r   r   r   L      zRedisBridge.getc                   r4   r   r   r   r   r   r   clearO   r6   zRedisBridge.clearlimittuple[float, int]c                   r4   r   r   )r   r   r8   r1   r   r   r   get_moving_windowR      zRedisBridge.get_moving_windowprevious_keycurrent_keytuple[int, float, int, float]c                   r4   r   r   )r   r<   r=   r1   r   r   r   get_sliding_windowW   r;   zRedisBridge.get_sliding_windowc                   r4   r   r   )r   r   r8   r1   r3   r   r   r   acquire_entry\   s   zRedisBridge.acquire_entryc                   r4   r   r   )r   r<   r=   r8   r1   r3   r   r   r   acquire_sliding_window_entrye   s   z(RedisBridge.acquire_sliding_window_entryfloatc                   r4   r   r   r   r   r   r   
get_expiryo   r6   zRedisBridge.get_expiryc                   r4   r   r   r    r   r   r   checkr   r6   zRedisBridge.check
int | Nonec                   r4   r   r   r    r   r   r   resetu   r6   zRedisBridge.resetc                   r4   r   r   r    r   r   r   	lua_resetx   r6   zRedisBridge.lua_resetN)
r	   r
   r   r   r   r
   r   r   r   r   )r   r
   r   r
   )r   r   )
r#   r$   r%   r&   r'   r(   r   r)   r   r   )r   r)   r   r   )r   r.   )r0   )r   r
   r1   r2   r3   r2   r   r2   )r   r
   r   r2   )r   r
   r   r   )r   r
   r8   r2   r1   r2   r   r9   )r<   r
   r=   r
   r1   r2   r   r>   )
r   r
   r8   r2   r1   r2   r3   r2   r   r&   )r<   r
   r=   r
   r8   r2   r1   r2   r3   r2   r   r&   )r   r
   r   rB   )r   r&   )r   rE   )__name__
__module____qualname__RES_DIRr   SCRIPT_MOVING_WINDOWSCRIPT_ACQUIRE_MOVING_WINDOWSCRIPT_CLEAR_KEYSSCRIPT_INCR_EXPIRESCRIPT_SLIDING_WINDOWSCRIPT_ACQUIRE_SLIDING_WINDOWr   r   r   r!   r*   r,   r-   propertyr/   r5   r   r7   r:   r?   r@   rA   rC   rD   rF   rG   r   r   r   r   r   
   sd    

	r   N)
__future__r   abcr   r   typesr   limits._storage_schemer   limits.utilr   r   r   r   r   r   <module>   s    