
    +h
                     ^    d Z ddlmZ ddlmZ 	 ddlmZ dZda	 G d d	e      Z
y#  dZY xY w)
z<Provide a :class:`.CacheImpl` for the Beaker caching system.    )
exceptions)	CacheImpl)cacheTFNc                   @     e Zd ZdZ fdZd Zd Zd Zd Zd Z	 xZ
S )BeakerCacheImplzA :class:`.CacheImpl` provided for the Beaker caching system.

    This plugin is used by default, based on the default
    value of ``'beaker'`` for the ``cache_impl`` parameter of the
    :class:`.Template` or :class:`.TemplateLookup` classes.

    c                     t         st        j                  d      t        Fd|j                  j
                  v r|j                  j
                  d   ant        j                         at        | %  |       y )Nz8Can't initialize Beaker plugin; Beaker is not installed.manager)

has_beakerr   RuntimeException_beaker_cachetemplate
cache_argsbeaker_cacheCacheManagersuper__init__)selfr   	__class__s     H/var/www/html/venv/lib/python3.12/site-packages/mako/ext/beaker_cache.pyr   zBeakerCacheImpl.__init__    se    --J   ENN555 % 9 9) D , 9 9 ;    c                 V   |j                  dd       }d|v r|j                  d      |d<   nC| j                  j                  j                  r#| j                  j                  j                  |d<   d|v r|j                  d       |j	                  d      dk(  rd|d<   d|v r=|j                  d      }t        j                  | j                  j                  |fi |}n*t        j                  | j                  j                  fi |}d	| j                  j                  i}|r||d
<   ||fS )Ntimeoutdirdata_dirr	   type	memcachedzext:memcachedregion	starttime
expiretime)
popr   r   module_directorygetr   get_cache_regionid	get_cacher   )r   kwr   r   r   r   s         r   
_get_cachezBeakerCacheImpl._get_cache-   s    VVIt,
B;VVE]BzNZZ  11!ZZ00AABzN?FF966&>[((BvJr>VVH%F!224::==&OBOE!++DJJMM@R@E!4::#7#78
'1J|$j  r   c                 V     | j                   di |\  }} |j                  |fd|i|S )N
createfunc r'   r"   )r   keycreation_functionr&   r   s        r   get_or_createzBeakerCacheImpl.get_or_createD   s5    #DOO)b)	ruyyA):AbAAr   c                 V     | j                   di |\  }} |j                  ||fi | y Nr*   )r'   put)r   r,   valuer&   r   s        r   r1   zBeakerCacheImpl.putH   s.    #DOO)b)	r		#u##r   c                 R     | j                   di |\  }} |j                  |fi |S r0   r+   r   r,   r&   r   s       r   r"   zBeakerCacheImpl.getL   s/    #DOO)b)	ruyy###r   c                 T     | j                   di |\  }} |j                  |fi | y r0   )r'   remove_valuer4   s       r   
invalidatezBeakerCacheImpl.invalidateP   s.    #DOO)b)	r3%"%r   )__name__
__module____qualname____doc__r   r'   r.   r1   r"   r7   __classcell__)r   s   @r   r   r      s'     !.B$$&r   r   )r;   makor   
mako.cacher   beakerr   r   r
   r   r   r*   r   r   <module>r@      s=    C   , J<&i <&Js   & ,