
    7 f&                         d dl Z d dlmZ d dlmZ d dlmZ d dlmZm	Z	 d dl
mZmZ d dlmZ d dlmZmZmZ g d	Zd
 Zd Z G d de          ZdS )    N)perf_counter)Local)settings)CacheHandlercaches)gettext_lazyngettext)Panel)get_stack_traceget_template_inforender_stacktrace)addgetset
get_or_settouchdeleteclearget_manyset_manydelete_manyhas_keyincrdecrincr_versiondecr_versionc                      t                     t          j                   fd            }t           |           d S )Nc                  X    j         }| | i |S |                    | |          S N)_djdt_panel_record_call)argskwargspanelcachenameoriginal_methods      P/var/www/equiseq/venv/lib/python3.11/site-packages/debug_toolbar/panels/cache.pywrapperz%_monkey_patch_method.<locals>.wrapper$   sA    !="?D3F333%%eT?D&QQQ    )getattr	functoolswrapssetattr)r%   r&   r)   r'   s   `` @r(   _monkey_patch_methodr/   !   sm    eT**O__%%R R R R R R &%R E4!!!!!r*   c                 l    t          | d          s#t          D ]}t          | |           d| _        d S d S )N_djdt_patchedT)hasattrWRAPPED_CACHE_METHODSr/   r1   )r%   r&   s     r(   _monkey_patch_cacher4   /   sN    5/** #) 	. 	.D ----"# #r*   c                        e Zd ZdZdZ e            Z fdZed             Z	ed             Z
d Zd Z ed          Zed	             Zed
             Zd Zd Zd Zd Z xZS )
CachePanelz3
    Panel that displays the cache statistics.
    zdebug_toolbar/panels/cache.htmlc                      t                      j        |i | d| _        d| _        d| _        g | _        d t          D             | _        d S )Nr   c                     i | ]}|d S )r    ).0r&   s     r(   
<dictcomp>z'CachePanel.__init__.<locals>.<dictcomp>E   s    AAA4tQAAAr*   )super__init__
total_timehitsmissescallsr3   counts)selfr"   r#   	__class__s      r(   r=   zCachePanel.__init__?   sU    $)&)))	
AA+@AAAr*   c                 .    t          | j        dd          S )a  
        Return the currently enabled CachePanel instance or None.

        If a request is in process with a CachePanel enabled, this will return that
        panel (based on the current thread or async task).  Otherwise it will return
        None.
        current_instanceN)r+   _context_locals)clss    r(   rF   zCachePanel.current_instanceG   s     s*,>EEEr*   c                      t          t          d          sFt          j        t          j                   fd            }|t          _        dt          _        d S d S )Nr1   c                 x     | |          }                                 }|t          |           ||_        |S r   )rF   r4   r    )rC   aliasr%   r$   rH   r'   s       r(   r)   z!CachePanel.ready.<locals>.wrapper[   sF    'e44,,..$'...(-E%r*   T)r2   r   create_connectionr,   r-   r1   )rH   r)   r'   s   ` @r(   readyzCachePanel.readyR   su    |_55 	.
 +<O__--     .- .5L*)-L&&&#	. 	.r*   c	           
         |dk    s|dk    r$|| xj         dz  c_         nu| xj        dz  c_        nd|dk    r^d|v r|d         n|d         }	| xj        t          |          z  c_        | xj         t          |	          t          |          z
  z  c_         |dz  }| xj        |z  c_        | j        |xx         dz  cc<   | j                            ||||t          |          ||d           d S )	Nr   r      r   keysr   i  )timer&   r"   r#   tracetemplate_infobackend)r@   r?   lenr>   rB   rA   appendr   )
rC   r&   
time_takenreturn_valuer"   r#   rR   rS   rT   rP   s
             r(   _store_call_infozCachePanel._store_call_infog   s$    5==DL00#q 		Q			Z%+v%5%56&>>47DII\***IIKK3t99s<'8'888KKd
:%DQ
" *511!." 
	
 
	
 
	
 
	
 
	
r*   c           
          d |_         	 t                      } ||i |}t                      |z
  }| |_         n# | |_         w xY w|                     |||||t          d          t	                      |           |S )N   )skip)r&   rW   rX   r"   r#   rR   rS   rT   )r    r   rY   r   r   )	rC   r%   r&   r'   r"   r#   
start_timevaluets	            r(   r!   zCachePanel._record_call   s     !	%%J#OT4V44E+A $EE$$$$!q)))+-- 	 		
 		
 		
 s	   '8 	ACachec                 b    t          | j                  }t          dd|          || j        dz  S )Nz$%(cache_calls)d call in %(time).2fmsz%%(cache_calls)d calls in %(time).2fms)cache_callsrQ   )rU   rA   r	   r>   )rC   rb   s     r(   nav_subtitlezCachePanel.nav_subtitle   s@    $*oo23
 
 (AA	B 	Br*   c                 v    t          t          t          ddg                    }t          dd|          d|iz  S )NCACHESdefaultz"Cache calls from %(count)d backendz#Cache calls from %(count)d backendscount)rU   r+   r   r	   )rC   rg   s     r(   titlezCachePanel.title   sG    GHh<<==01
 
 e	 	r*   c                 z    t          j        d          D ]}t          |           | |_        | | j        _        d S )NTinitialized_only)r   allr4   r    rG   rF   rC   r%   s     r(   enable_instrumentationz!CachePanel.enable_instrumentation   sL     Z666 	% 	%E&&& $E 15---r*   c                 |    t          | j        d          r| j        `t          j        d          D ]	}d |_        
d S )NrF   Trj   )r2   rG   rF   r   rl   r    rm   s     r(   disable_instrumentationz"CachePanel.disable_instrumentation   sR    4');<< 	6$5Z666 	% 	%E $E	% 	%r*   c           	          |                      t          | j                  | j        | j        | j        | j        | j        d           d S )N)total_callsrA   r>   r?   r@   rB   )record_statsrU   rA   r>   r?   r@   rB   )rC   requestresponses      r(   generate_statszCachePanel.generate_stats   sR    "4:"o	++ 		
 		
 		
 		
 		
r*   c                     |                                  }|                    dd          }d                    |                    dd                    }|                     d||           d S )Nr>   r   zCache {} Callsrr   )	get_statsr   formatrecord_server_timing)rC   rt   ru   statsr^   rh   s         r(   generate_server_timingz!CachePanel.generate_server_timing   sc      		,** ''		-(C(CDD!!,u=====r*   )__name__
__module____qualname____doc__templater   rG   r=   classmethodrF   rM   rY   r!   _	nav_titlepropertyrc   rh   rn   rp   rv   r|   __classcell__)rD   s   @r(   r6   r6   6   s3         1HeggOB B B B B F F [F . . [.("
 "
 "
H  : '

IB B XB   X5 5 5% % %

 

 

> > > > > > >r*   r6   )r,   rQ   r   asgiref.localr   django.confr   django.core.cacher   r   django.utils.translationr   r   r	   debug_toolbar.panelsr
   debug_toolbar.utilsr   r   r   r3   r/   r4   r6   r9   r*   r(   <module>r      s                               2 2 2 2 2 2 2 2 @ @ @ @ @ @ @ @ & & & & & & U U U U U U U U U U   &" " "# # #j> j> j> j> j> j> j> j> j> j>r*   