o
    èÇh
  ã                   @   sX   d Z ddlmZ ddlmZ zddlmZ W n   dZY n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 u rd|jjv r|jjd ant ¡ atƒ  	|¡ d S )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__© úi/var/www/html/construction_image-detection-poc/venv/lib/python3.10/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 r'|  d¡ | d¡dkr2d|d< d|v rH|  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   r   r   r   Ú
_get_cache-   s"   


zBeakerCacheImpl._get_cachec                 K   s*   | j di |¤Ž\}}|j|fd|i|¤ŽS )NÚ
createfuncr   ©r$   r   )r   ÚkeyÚcreation_functionr#   r   r   r   r   Úget_or_createD   ó   zBeakerCacheImpl.get_or_createc                 K   s,   | j di |¤Ž\}}|j||fi |¤Ž d S ©Nr   )r$   Úput)r   r'   Úvaluer#   r   r   r   r   r,   H   s   zBeakerCacheImpl.putc                 K   s&   | j di |¤Ž\}}|j|fi |¤ŽS r+   r&   ©r   r'   r#   r   r   r   r   r   L   s   zBeakerCacheImpl.getc                 K   s*   | j di |¤Ž\}}|j|fi |¤Ž d S r+   )r$   Úremove_valuer.   r   r   r   Ú
invalidateP   r*   zBeakerCacheImpl.invalidate)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r$   r)   r,   r   r0   Ú__classcell__r   r   r   r   r      s    r   )r4   Úmakor   Ú
mako.cacher   Úbeakerr   r   r   r	   r   r   r   r   r   Ú<module>   s   