o
    Ph                     @   s   d dl Z d dlZd dlmZ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Dict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    ^/var/www/html/Testing_prj/Navya-Bakers/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d>d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$  Z%S )?
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)r4   r3   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   rB   S   rA   zRedisCache.incr_versionc                 O   r=   r>   )r<   addr@   r   r   r   rC   W   rA   zRedisCache.addc                 C   s    |  ||||}|tu r|}|S r>   )_getCONNECTION_INTERRUPTED)r   keydefaultversionr<   valuer   r   r   r2   [   s   zRedisCache.getr   c                 C   s   | j j||||dS )N)rG   rH   r<   )r<   r2   )r   rF   rG   rH   r<   r   r   r   rD   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   )r<   deleteDJANGO_VERSIONbool)r   r   r   resultr   r   r   rK   e   s   zRedisCache.deletec                 O   s    | d| j | jj|i |S )Nitersize)
setdefaultr1   r<   delete_patternr@   r   r   r   rQ   k   s   zRedisCache.delete_patternc                 O   r=   r>   )r<   delete_manyr@   r   r   r   rR   p   rA   zRedisCache.delete_manyc                 C   s
   | j  S r>   )r<   clearr;   r   r   r   rS   t   s   
zRedisCache.clearc                 O   r=   r>   )r<   get_manyr@   r   r   r   rT   x   rA   zRedisCache.get_manyc                 O   r=   r>   )r<   set_manyr@   r   r   r   rU   |   rA   zRedisCache.set_manyc                 O   r=   r>   )r<   incrr@   r   r   r   rV      rA   zRedisCache.incrc                 O   r=   r>   )r<   decrr@   r   r   r   rW      rA   zRedisCache.decrc                 O   r=   r>   )r<   has_keyr@   r   r   r   rX      rA   zRedisCache.has_keyc                 O   r=   r>   )r<   keysr@   r   r   r   rY      rA   zRedisCache.keysc                 O   r=   r>   )r<   	iter_keysr@   r   r   r   rZ      rA   zRedisCache.iter_keysc                 O   r=   r>   )r<   ttlr@   r   r   r   r[      rA   zRedisCache.ttlc                 O   r=   r>   )r<   pttlr@   r   r   r   r\      rA   zRedisCache.pttlc                 O   r=   r>   )r<   persistr@   r   r   r   r]      rA   zRedisCache.persistc                 O   r=   r>   )r<   expirer@   r   r   r   r^      rA   zRedisCache.expirec                 O   r=   r>   )r<   	expire_atr@   r   r   r   r_      rA   zRedisCache.expire_atc                 O   r=   r>   )r<   pexpirer@   r   r   r   r`      rA   zRedisCache.pexpirec                 O   r=   r>   )r<   
pexpire_atr@   r   r   r   ra      rA   zRedisCache.pexpire_atc                 O   r=   r>   )r<   lockr@   r   r   r   rb      rA   zRedisCache.lockc                 K   s   | j jdi | d S )Nr   )r<   close)r   r   r   r   r   rc      s   zRedisCache.closec                 O   r=   r>   )r<   touchr@   r   r   r   rd      rA   zRedisCache.touch)NNN)&r7   
__module____qualname__strr   r   r-   propertyr<   r   r?   rB   rC   r2   rE   rD   rK   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   __classcell__r   r   r9   r   r    )   sn    "

























r    )NN)r   r5   typingr   r   r   r   djangor   rL   django.confr   django.core.cache.backends.baser   django.utils.module_loadingr	   
exceptionsr   objectrE   r   r    r   r   r   r   <module>   s     
