B
    è¹`'
  ã               @   sZ   d Z ddlmZ ddlmZ y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                sL   t st d¡‚td kr8d|jjkr0|jjd ant ¡ at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Úsuperr   Ú__init__)Úselfr   )Ú	__class__© ú]/home/kop/projects/devel/pgwui/test_venv/lib/python3.7/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 )N)r   r   )r   r   r   r   r   r   r   r   L   s    zBeakerCacheImpl.getc             K   s"   | j f |Ž\}}|j|f|Ž d S )N)r   Zremove_value)r   r   r   r   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   
