HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/env/lib64/python3.10/site-packages/cachelib/__pycache__/redis.cpython-310.pyc
o

!we9�@s4ddlZddlmZddlmZGdd�de�ZdS)�N)�	BaseCache)�RedisSerializerc@s�eZdZUdZdZejed<dZejed<e	�Z
						d2d	ejd
edeje
ded
edeje
dejfdd�Zdejedefdd�Zde
dejfdd�Zde
dejejfdd�Zd3de
dejdejedejfdd�Zd3de
dejdejedejfdd �Z	d3d!eje
ejfdejedejejfd"d#�Zde
defd$d%�Zde
dejejfd&d'�Zde
defd(d)�Zdefd*d+�Zd4de
d-edejfd.d/�Zd4de
d-edejfd0d1�ZdS)5�
RedisCacheaUses the Redis key-value store as a cache backend.

    The first argument can be either a string denoting address of the Redis
    server or an object resembling an instance of a redis.Redis class.

    Note: Python Redis API already takes care of encoding unicode strings on
    the fly.

    :param host: address of the Redis server or an object which API is
                 compatible with the official Python Redis client (redis-py).
    :param port: port number on which Redis server listens for connections.
    :param password: password authentication for the Redis server.
    :param db: db (zero-based numeric index) on Redis Server to connect.
    :param default_timeout: the default timeout that is used if no timeout is
                            specified on :meth:`~BaseCache.set`. A timeout of
                            0 indicates that the cache never expires.
    :param key_prefix: A prefix that should be added to all keys.

    Any additional keyword arguments will be passed to ``redis.Redis``.
    N�_read_client�
_write_client�	localhost��r�,�host�port�password�db�default_timeout�
key_prefix�kwargsc

Ks�t�||�|durtd��t|t�rGzddl}Wnty*}	ztd�|	�d}	~	ww|�dd�r5td��|j	d||||d�|��|_
|_n||_|_
|pPd|_dS)	Nz)RedisCache host parameter may not be Nonerzno redis module found�decode_responsesz0decode_responses is not supported by RedisCache.)r
rrr
��)
r�__init__�
ValueError�
isinstance�str�redis�ImportError�RuntimeError�get�Redisrrr)
�selfr
rrr
rrrr�errrr�G/home/arjun/projects/env/lib/python3.10/site-packages/cachelib/redis.pyr!s&


����zRedisCache.__init__�timeout�returncCst�||�}|dkrd}|S)z�Normalize timeout by setting it to default of 300 if
        not defined (None) or -1 if explicitly set to zero.

        :param timeout: timeout to normalize.
        r���)r�_normalize_timeout)rr rrrr#<szRedisCache._normalize_timeout�keycCs|j�|j�|j|��S�N)�
serializer�loadsrrr�rr$rrrrGszRedisCache.get�keyscs<�jr
�fdd�|D�}nt|�}�fdd��j�|�D�S)Nc�g|]}�j|�qSr�r��.0r$�rrr�
<listcomp>L�z'RedisCache.get_many.<locals>.<listcomp>csg|]}�j�|��qSr)r&r')r-�xr.rrr/O�)r�listr�mget�rr)�
prefixed_keysrr.r�get_manyJszRedisCache.get_many�valuecCsT|�|�}|j�|�}|dkr|jj|j||d�}|S|jj|j|||d�}|S)Nr"��namer8�r:r8�time)r#r&�dumpsr�setr�setex)rr$r8r �dump�resultrrrr>Qs
��zRedisCache.setcCsR|�|�}|j�|�}|jj|j||d�}|r'|dkr'|jj|j||d�|S)Nr9r")r:r<)r#r&r=r�setnxr�expire)rr$r8r r@�createdrrr�add\s
zRedisCache.add�mappingcCs�|�|�}|jjdd�}|��D]$\}}|j�|�}|dkr)|j|j||d�q|j|j|||d�q|�	�}dd�t
|��|�D�S)NF)�transactionr"r9r;cSsg|]\}}|r|�qSrr)r-�k�was_setrrrr/tr2z'RedisCache.set_many.<locals>.<listcomp>)r#r�pipeline�itemsr&r=r>rr?�execute�zipr))rrFr �piper$r8r@�resultsrrr�set_manyes
zRedisCache.set_manycC�t|j�|j|��Sr%)�boolr�deleterr(rrrrSv�zRedisCache.deletecsN|sgS�jr�fdd�|D�}ndd�|D�}�jj|��fdd�|D�S)Ncr*rr+r,r.rrr/}r0z*RedisCache.delete_many.<locals>.<listcomp>cSsg|]}|�qSrr�r-rHrrrr/scsg|]	}��|�s|�qSr)�hasrUr.rrr/�s)rrrSr5rr.r�delete_manyyszRedisCache.delete_manycCrQr%)rRr�existsrr(rrrrV�rTzRedisCache.hascCsFd}|jr|j�|jd�}|r|jj|�}t|�S|j��}t|�S)Nr�*)rrr)rrS�flushdbrR)r�statusr)rrr�clear�s
�zRedisCache.clear��deltacCs|jj|j||d�S�N)r:�amount�r�incrr�rr$r^rrr�inc�rTzRedisCache.inccCs|jj|j||d�Sr_rarcrrr�dec�szRedisCache.dec)rrNrr	Nr%)r])�__name__�
__module__�__qualname__�__doc__r�_t�Any�__annotations__rrr&�int�Optionalrrr#r�Listr7r>rE�DictrPrRrSrWrVr\rdrerrrrrsZ
�������
�&&
���

�

r)�typingrj�
cachelib.baser�cachelib.serializersrrrrrr�<module>s