o
    QDi                     @   s   d dl Z d dlZd dlmZmZmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ e Z	ddee d	ee fd
dZG dd deZdS )    N)AnyCallableOptional)VERSION)settings)	BaseCache)import_string)ConnectionInterruptedmethodreturn_valuec                    s2    du rt jtdS t   fdd}|S )zl
    Simple decorator that intercepts connection
    errors and ignores these if settings specify this.
    Nr   c              
      s`   z | g|R i |W S  t y/ } z| jr(| jr | jd W  Y d }~S |jd }~ww )NzException ignored)r	   _ignore_exceptions_log_ignored_exceptionslogger	exception	__cause__)selfargskwargser
   r    K/var/www/Datamplify/venv/lib/python3.10/site-packages/django_redis/cache.py
_decorator   s   z"omit_exception.<locals>._decorator)	functoolspartialomit_exceptionwraps)r
   r   r   r   r   r   r      s
   r   c                       s  e Zd Zdedeeef ddf fddZedd Ze	d	d
 Z
e	dd Ze	dd ZdjddZe	eddd Ze	dd Ze	dd Ze	dd Ze	dd Ze	i d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	d0d1 Ze	d2d3 Ze	d4d5 Z e	d6d7 Z!e	d8d9 Z"e	d:d; Z#e	d<d= Z$e	d>d? Z%e	d@dA Z&e	dBdC Z'e	dDdE Z(e	dFdG Z)e	dHdI Z*e	dJdK Z+e	dLdM Z,e	dNdO Z-e	dPdQ Z.e	dRdS Z/e	dTdU Z0e	dVdW Z1e	dXdY Z2e	dZd[ Z3e	d\d] Z4e	d^d_ Z5e	d`da Z6e	dbdc Z7e	ddde Z8e	dfdg Z9e	dhdi Z:  Z;S )k
RedisCacheserverparamsreturnNc                    s   t  | || _|| _ttdd| _|di }|dd| _t	| j| _d | _
|dttdd| _ttd	d| _| jrJtttd
t| _d S d | _d S )NDJANGO_REDIS_SCAN_ITERSIZE
   OPTIONSCLIENT_CLASSz!django_redis.client.DefaultClientIGNORE_EXCEPTIONSDJANGO_REDIS_IGNORE_EXCEPTIONSF#DJANGO_REDIS_LOG_IGNORED_EXCEPTIONSDJANGO_REDIS_LOGGER)super__init___server_paramsgetattrr   _default_scan_itersizeget_client_clsr   _clientr   r   logging	getLogger__name__r   )r   r   r    options	__class__r   r   r+   *   s0   
zRedisCache.__init__c                 C   s$   | j du r| | j| j| | _ | j S )z2
        Lazy client connection property.
        N)r2   r1   r,   r-   r   r   r   r   clientF   s   
zRedisCache.clientc                 O      | j j|i |S N)r:   setr   r   r   r   r   r   r=   O      zRedisCache.setc                 O   r;   r<   )r:   incr_versionr>   r   r   r   r@   S   r?   zRedisCache.incr_versionc                 O   r;   r<   )r:   addr>   r   r   r   rA   W   r?   zRedisCache.addc                 C   s    |  ||||}|tu r|}|S r<   )_getCONNECTION_INTERRUPTED)r   keydefaultversionr:   valuer   r   r   r0   [   s   zRedisCache.getr   c                 C   s   | j j||||dS )N)rE   rF   r:   )r:   r0   )r   rD   rE   rF   r:   r   r   r   rB   a   s   zRedisCache._getc                 O   s&   | j j|i |}tdkrt|S |S )z9returns a boolean instead of int since django version 3.1)      r   )r:   deleteDJANGO_VERSIONbool)r   r   r   resultr   r   r   rJ   e   s   zRedisCache.deletec                 O   s    | d| j | jj|i |S )Nitersize)
setdefaultr/   r:   delete_patternr>   r   r   r   rP   k   s   zRedisCache.delete_patternc                 O   r;   r<   )r:   delete_manyr>   r   r   r   rQ   p   r?   zRedisCache.delete_manyc                 C   s
   | j  S r<   )r:   clearr9   r   r   r   rR   t   s   
zRedisCache.clearc                 O   r;   r<   )r:   get_manyr>   r   r   r   rS   x   r?   zRedisCache.get_manyc                 O   r;   r<   )r:   set_manyr>   r   r   r   rT   |   r?   zRedisCache.set_manyc                 O   r;   r<   )r:   incrr>   r   r   r   rU      r?   zRedisCache.incrc                 O   r;   r<   )r:   decrr>   r   r   r   rV      r?   zRedisCache.decrc                 O   r;   r<   )r:   has_keyr>   r   r   r   rW      r?   zRedisCache.has_keyc                 O   r;   r<   )r:   keysr>   r   r   r   rX      r?   zRedisCache.keysc                 O   r;   r<   )r:   	iter_keysr>   r   r   r   rY      r?   zRedisCache.iter_keysc                 O   r;   r<   )r:   ttlr>   r   r   r   rZ      r?   zRedisCache.ttlc                 O   r;   r<   )r:   pttlr>   r   r   r   r[      r?   zRedisCache.pttlc                 O   r;   r<   )r:   persistr>   r   r   r   r\      r?   zRedisCache.persistc                 O   r;   r<   )r:   expirer>   r   r   r   r]      r?   zRedisCache.expirec                 O   r;   r<   )r:   	expire_atr>   r   r   r   r^      r?   zRedisCache.expire_atc                 O   r;   r<   )r:   pexpirer>   r   r   r   r_      r?   zRedisCache.pexpirec                 O   r;   r<   )r:   
pexpire_atr>   r   r   r   r`      r?   zRedisCache.pexpire_atc                 O   r;   r<   )r:   lockr>   r   r   r   ra      r?   zRedisCache.lockc                 K   s   | j jdi | d S )Nr   )r:   close)r   r   r   r   r   rb      s   zRedisCache.closec                 O   r;   r<   )r:   touchr>   r   r   r   rc      r?   zRedisCache.touchc                 O   r;   r<   )r:   saddr>   r   r   r   rd      r?   zRedisCache.saddc                 O   r;   r<   )r:   scardr>   r   r   r   re      r?   zRedisCache.scardc                 O   r;   r<   )r:   sdiffr>   r   r   r   rf      r?   zRedisCache.sdiffc                 O   r;   r<   )r:   
sdiffstorer>   r   r   r   rg      r?   zRedisCache.sdiffstorec                 O   r;   r<   )r:   sinterr>   r   r   r   rh      r?   zRedisCache.sinterc                 O   r;   r<   )r:   sinterstorer>   r   r   r   ri      r?   zRedisCache.sinterstorec                 O   r;   r<   )r:   	sismemberr>   r   r   r   rj      r?   zRedisCache.sismemberc                 O   r;   r<   )r:   smembersr>   r   r   r   rk      r?   zRedisCache.smembersc                 O   r;   r<   )r:   smover>   r   r   r   rl      r?   zRedisCache.smovec                 O   r;   r<   )r:   spopr>   r   r   r   rm      r?   zRedisCache.spopc                 O   r;   r<   )r:   srandmemberr>   r   r   r   rn      r?   zRedisCache.srandmemberc                 O   r;   r<   )r:   sremr>   r   r   r   ro      r?   zRedisCache.sremc                 O   r;   r<   )r:   sscanr>   r   r   r   rp      r?   zRedisCache.sscanc                 O   r;   r<   )r:   
sscan_iterr>   r   r   r   rq      r?   zRedisCache.sscan_iterc                 O   r;   r<   )r:   
smismemberr>   r   r   r   rr      r?   zRedisCache.smismemberc                 O   r;   r<   )r:   sunionr>   r   r   r   rs      r?   zRedisCache.sunionc                 O   r;   r<   )r:   sunionstorer>   r   r   r   rt      r?   zRedisCache.sunionstorec                 O   r;   r<   )r:   hsetr>   r   r   r   ru      r?   zRedisCache.hsetc                 O   r;   r<   )r:   hdelr>   r   r   r   rv     r?   zRedisCache.hdelc                 O   r;   r<   )r:   hlenr>   r   r   r   rw     r?   zRedisCache.hlenc                 O   r;   r<   )r:   hkeysr>   r   r   r   rx     r?   zRedisCache.hkeysc                 O   r;   r<   )r:   hexistsr>   r   r   r   ry     r?   zRedisCache.hexists)NNN)<r5   
__module____qualname__strdictr   r+   propertyr:   r   r=   r@   rA   r0   rC   rB   rJ   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   __classcell__r   r   r7   r   r   )   s    "















































r   )NN)r   r3   typingr   r   r   djangor   rK   django.confr   django.core.cache.backends.baser   django.utils.module_loadingr   django_redis.exceptionsr	   objectrC   r   r   r   r   r   r   <module>   s     
