
    $g                         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Z G d de          ZdS )    N)AnyCallableDictOptional)VERSION)settings)	BaseCache)import_string   )ConnectionInterruptedmethodreturn_valuec                       t          j        t                    S t          j                    fd            }|S )zl
    Simple decorator that intercepts connection
    errors and ignores these if settings specify this.
    Nr   c                     	  | g|R i |S # t           $ r;}| j        r(| j        r| j                            d           cY d }~S |j        d }~ww xY w)NzException ignored)r   _ignore_exceptions_log_ignored_exceptionslogger	exception	__cause__)selfargskwargser   r   s       R/var/www/html/netbox-4.1.3/venv/lib/python3.11/site-packages/django_redis/cache.py
_decoratorz"omit_exception.<locals>._decorator   s    	6$0000000$ 	 	 	& $/ ?K))*=>>>#######+	s     
A)AAAA)	functoolspartialomit_exceptionwraps)r   r   r   s   `` r   r   r      s\     ~ lKKKK_V	 	 	 	 	 	     c                       e Zd Zdedeeef         ddf fdZed             Ze	d             Z
e	d             Ze	d	             Zd"d
Z e	e          d             Ze	d             Ze	d             Ze	d             Ze	d             Z e	i           d             Ze	d             Ze	d             Ze	d             Ze	d             Ze	d             Ze	d             Ze	d             Ze	d             Ze	d             Ze	d             Ze	d             Ze	d             Z e	d             Z!e	d             Z"e	d              Z#e	d!             Z$ xZ%S )#
RedisCacheserverparamsreturnNc                 H   t                                          |           || _        || _        t	          t
          dd          | _        |                    di           }|                    dd          | _        t          | j                  | _        d | _
        |                    dt	          t
          dd                    | _        t	          t
          d	d          | _        | j        r-t          j        t	          t
          d
t                              n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__s       r   r1   zRedisCache.__init__*   s      &-2B'
 '
# **Y++";;?
 
 ))9::")++H>FF#
 #
 (/;U(
 (
$
 +Ggh0ExPPQQQ 	r!   c                 j    | j         &|                     | j        | j        |           | _         | j         S )z2
        Lazy client connection property.
        )r8   r7   r2   r3   r   s    r   clientzRedisCache.clientF   s1    
 <++DL$,MMDL|r!   c                 &     | j         j        |i |S N)r@   setr   r   r   s      r   rC   zRedisCache.setO       t{////r!   c                 &     | j         j        |i |S rB   )r@   incr_versionrD   s      r   rG   zRedisCache.incr_versionS   s    't{'8888r!   c                 &     | j         j        |i |S rB   )r@   addrD   s      r   rI   zRedisCache.addW   rE   r!   c                 L    |                      ||||          }|t          u r|}|S rB   )_getCONNECTION_INTERRUPTED)r   keydefaultversionr@   values         r   r6   zRedisCache.get[   s/    		#w88***Er!   r   c                 >    | j                             ||||          S )N)rN   rO   r@   )r@   r6   )r   rM   rN   rO   r@   s        r   rK   zRedisCache._geta   s    {sGWVTTTr!   c                 ^     | j         j        |i |}t          dk    rt          |          n|S )z9returns a boolean instead of int since django version 3.1)   r   r   )r@   deleteDJANGO_VERSIONbool)r   r   r   results       r   rT   zRedisCache.deletee   s7     $#T4V44-::tF|||Fr!   c                 \    |                     d| j                    | j        j        |i |S )Nitersize)
setdefaultr5   r@   delete_patternrD   s      r   r[   zRedisCache.delete_patternk   s5    *d&ABBB)t{)4:6:::r!   c                 &     | j         j        |i |S rB   )r@   delete_manyrD   s      r   r]   zRedisCache.delete_manyp   s    &t{&7777r!   c                 4    | j                                         S rB   )r@   clearr?   s    r   r_   zRedisCache.cleart   s    {  """r!   c                 &     | j         j        |i |S rB   )r@   get_manyrD   s      r   ra   zRedisCache.get_manyx       #t{#T4V444r!   c                 &     | j         j        |i |S rB   )r@   set_manyrD   s      r   rd   zRedisCache.set_many|   rb   r!   c                 &     | j         j        |i |S rB   )r@   incrrD   s      r   rf   zRedisCache.incr       t{0000r!   c                 &     | j         j        |i |S rB   )r@   decrrD   s      r   ri   zRedisCache.decr   rg   r!   c                 &     | j         j        |i |S rB   )r@   has_keyrD   s      r   rk   zRedisCache.has_key       "t{"D3F333r!   c                 &     | j         j        |i |S rB   )r@   keysrD   s      r   rn   zRedisCache.keys   rg   r!   c                 &     | j         j        |i |S rB   )r@   	iter_keysrD   s      r   rp   zRedisCache.iter_keys       $t{$d5f555r!   c                 &     | j         j        |i |S rB   )r@   ttlrD   s      r   rs   zRedisCache.ttl   rE   r!   c                 &     | j         j        |i |S rB   )r@   pttlrD   s      r   ru   zRedisCache.pttl   rg   r!   c                 &     | j         j        |i |S rB   )r@   persistrD   s      r   rw   zRedisCache.persist   rl   r!   c                 &     | j         j        |i |S rB   )r@   expirerD   s      r   ry   zRedisCache.expire   s    !t{!426222r!   c                 &     | j         j        |i |S rB   )r@   	expire_atrD   s      r   r{   zRedisCache.expire_at   rq   r!   c                 &     | j         j        |i |S rB   )r@   pexpirerD   s      r   r}   zRedisCache.pexpire   rl   r!   c                 &     | j         j        |i |S rB   )r@   
pexpire_atrD   s      r   r   zRedisCache.pexpire_at   s    %t{%t6v666r!   c                 &     | j         j        |i |S rB   )r@   lockrD   s      r   r   zRedisCache.lock   rg   r!   c                 *     | j         j        di | d S )N )r@   close)r   r   s     r   r   zRedisCache.close   s#    ##F#####r!   c                 &     | j         j        |i |S rB   )r@   touchrD   s      r   r   zRedisCache.touch   s     t{ $1&111r!   )NNN)&r;   
__module____qualname__strr   r   r1   propertyr@   r   rC   rG   rI   r6   rL   rK   rT   r[   r]   r_   ra   rd   rf   ri   rk   rn   rp   rs   ru   rw   ry   r{   r}   r   r   r   r   __classcell__)r=   s   @r   r#   r#   )   sO       
s 
DcN 
t 
 
 
 
 
 
8   X 0 0 ^0 9 9 ^9 0 0 ^0    ^!7888U U 98U G G ^G
 ; ; ^; 8 8 ^8 # # ^# ^$$$5 5 %$5 5 5 ^5 1 1 ^1 1 1 ^1 4 4 ^4 1 1 ^1 6 6 ^6 0 0 ^0 1 1 ^1 4 4 ^4 3 3 ^3 6 6 ^6 4 4 ^4 7 7 ^7 1 1 ^1 $ $ ^$ 2 2 ^2 2 2 2 2r!   r#   )NN)r   r9   typingr   r   r   r   djangor   rU   django.confr   django.core.cache.backends.baser	   django.utils.module_loadingr
   
exceptionsr   objectrL   r   r#   r   r!   r   <module>r      s        0 0 0 0 0 0 0 0 0 0 0 0 , , , , , ,             5 5 5 5 5 5 5 5 5 5 5 5 - - - - - -  FJ X5=c]   4Q2 Q2 Q2 Q2 Q2 Q2 Q2 Q2 Q2 Q2r!   