Submit
Path:
~
/
/
proc
/
thread-self
/
root
/
opt
/
alt
/
python37
/
lib
/
python3.7
/
site-packages
/
mako
/
__pycache__
/
File Content:
cache.cpython-37.pyc
B �C]8 � @ sX d dl mZ d dl mZ e�d�ZejZeddd� G dd� de�ZG d d � d e�Z dS )� )�compat)�utilz mako.cacheZbeakerzmako.ext.beaker_cacheZBeakerCacheImplc @ sx e Zd ZdZdZdZdZdd� Zdd� Zdd� Z d d � Z dd� ZeZd d� Z dd� Zdd� Zdd� Zdd� Zdd� ZdS )�Cachea� Represents a data content cache made available to the module space of a specific :class:`.Template` object. .. versionadded:: 0.6 :class:`.Cache` by itself is mostly a container for a :class:`.CacheImpl` object, which implements a fixed API to provide caching services; specific subclasses exist to implement different caching strategies. Mako includes a backend that works with the Beaker caching system. Beaker itself then supports a number of backends (i.e. file, memory, memcached, etc.) The construction of a :class:`.Cache` is part of the mechanics of a :class:`.Template`, and programmatic access to this cache is typically via the :attr:`.Template.cache` attribute. Nc G sH t |tj�r|rd S || _|jj| _|jj| _i | _ | � | jj�| _d S )N) � isinstancer Zstring_types�template�module�__name__�idZ_modified_time� starttime�_def_regions� _load_implZ cache_impl�impl)�selfr �args� r �;/opt/alt/python37/lib/python3.7/site-packages/mako/cache.py�__init__B s zCache.__init__c C s t �|�| �S )N)�_cache_plugins�load)r �namer r r r M s zCache._load_implc K s | j ||df|�S )zcRetrieve a value from the cache, using the given creation function to generate a new value.N)�_ctx_get_or_create)r �key�creation_function�kwr r r � get_or_createP s zCache.get_or_createc K s( | j js|� S | jj||f| �||��S )zcRetrieve a value from the cache, using the given creation function to generate a new value.)r Z cache_enabledr r � _get_cache_kw)r r r �contextr r r r r V s zCache._ctx_get_or_createc K s | j j||f| �|d�� dS )z�Place a value in the cache. :param key: the value's key. :param value: the value. :param \**kw: cache configuration arguments. N)r �setr )r r �valuer r r r r a s z Cache.setc K s | j j|f| �|d��S )aF Retrieve a value from the cache. :param key: the value's key. :param \**kw: cache configuration arguments. The backend is configured using these arguments upon first request. Subsequent requests that use the same series of configuration values will use that same backend. N)r �getr )r r r r r r r s s z Cache.getc K s | j j|f| �|d�� dS )aF Invalidate a value in the cache. :param key: the value's key. :param \**kw: cache configuration arguments. The backend is configured using these arguments upon first request. Subsequent requests that use the same series of configuration values will use that same backend. N)r � invalidater )r r r r r r r s zCache.invalidatec C s | j ddd� dS )zWInvalidate the cached content of the "body" method for this template. Zrender_body)�__M_defnameN)r )r r r r �invalidate_body� s zCache.invalidate_bodyc C s | j d| d| d� dS )z`Invalidate the cached content of a particular ``<%def>`` within this template. z render_%s)r! N)r )r r r r r �invalidate_def� s zCache.invalidate_defc C s | j ||d� dS )aN Invalidate a nested ``<%def>`` within this template. Caching of nested defs is a blunt tool as there is no management of scope -- nested defs that use cache tags need to have names unique of all other nested defs in the template, else their content will be overwritten by each other. )r! N)r )r r r r r �invalidate_closure� s zCache.invalidate_closurec C s� |� dd �}|s(| jj�� }|�|� n6|| jkr>| j| }n | jj�� }|�|� || j|<