a
    e	g
                     @   sZ   d Z ddlmZ ddlmZ zddlmZ W n   dZY n0 dZda	G dd	 d	eZ
dS )
z<Provide a :class:`.CacheImpl` for the Beaker caching system.    )
exceptions)	CacheImpl)cacheFTNc                       sH   e Zd ZdZ fddZdd Zdd Zdd	 Zd
d Zdd Z	  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                    sH   t stdtd u r8d|jjv r0|jjd ant at 	| d S )Nz8Can't initialize Beaker plugin; Beaker is not installed.manager)

has_beakerr   ZRuntimeException_beaker_cachetemplate
cache_argsbeaker_cacheZCacheManagersuper__init__)selfr   	__class__ X/var/www/html/llm_bihealth/app/venv/lib/python3.9/site-packages/mako/ext/beaker_cache.pyr       s    zBeakerCacheImpl.__init__c                 K   s   | dd }d|v r$| d|d< n| jjjr<| jjj|d< d|v rN| d |ddkrdd|d< d|v r| 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   typeZ	memcachedzext:memcachedregion	starttime
expiretime)
popr   r	   Zmodule_directorygetr   Zget_cache_regionidZ	get_cacher   )r   kwr   r   r   r
   r   r   r   
_get_cache-   s"    


zBeakerCacheImpl._get_cachec                 K   s*   | j f i |\}}|j|fd|i|S )NZ
createfuncr   r   )r   keyZcreation_functionr   r   r   r   r   get_or_createD   s    zBeakerCacheImpl.get_or_createc                 K   s,   | j f i |\}}|j||fi | d S N)r   put)r   r    valuer   r   r   r   r   r#   H   s    zBeakerCacheImpl.putc                 K   s&   | j f i |\}}|j|fi |S r"   r   r   r    r   r   r   r   r   r   L   s    zBeakerCacheImpl.getc                 K   s*   | j f i |\}}|j|fi | d S r"   )r   Zremove_valuer%   r   r   r   
invalidateP   s    zBeakerCacheImpl.invalidate)__name__
__module____qualname____doc__r   r   r!   r#   r   r&   __classcell__r   r   r   r   r      s   r   )r*   Zmakor   Z
mako.cacher   Zbeakerr   r   r   r   r   r   r   r   r   <module>   s   
