U
    \g%i
  ã                   @   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X 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 )ÚBeakerCacheImplzûA :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 kr8d|jjk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__© úT/var/www/html/api-medvista/venv/lib/python3.8/site-packages/mako/ext/beaker_cache.pyr       s    ÿzBeakerCacheImpl.__init__c                 K   s¾   |  dd ¡}d|kr$|  d¡|d< n| jjjr<| jjj|d< d|krN|  d¡ | d¡dkrdd|d< d|krŒ|  d¡}tj| jj|f|Ž}ntj| jjf|Ž}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 |Ž\}}|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 |Ž\}}|j||f|Ž d S ©N)r   Úput)r   r    Úvaluer   r   r   r   r   r#   H   s    zBeakerCacheImpl.putc                 K   s   | j f |Ž\}}|j|f|ŽS r"   r   ©r   r    r   r   r   r   r   r   L   s    zBeakerCacheImpl.getc                 K   s"   | j f |Ž\}}|j|f|Ž 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*   Úmakor   Z
mako.cacher   Zbeakerr   r   r   r   r   r   r   r   r   Ú<module>   s   
