o
    3Q
                     @   s@   d Z ddlmZ ddlmZ ddlmZ dZG dd deZdS )	a  

Jinja2 extension that adds support for caching template fragments.

Usage:
    {% cache timeout key1[, [key2, ...]] %}
    ...
    {% endcache %}

    By default the value of "path to template file" + "block start line" is used as cache key.
    Also key name can be set manually. Keys are concated together into a single string.
    that can be used to avoid the same block evaluating in different templates.

    Set timeout to "del" to delete cached value:
    {% cache 'del' key1 %}...

Example:
    Considering we have render_form_field and render_submit macros.
    {% cache 60*5 'myform' %}
    <div>
        <form>
        {% render_form_field form.username %}
        {% render_submit %}
        </form>
    </div>
    {% endcache %}

    )nodes)	Extension)make_template_fragment_key_template_fragment_cachec                   @   s&   e Zd ZedgZdd Zdd ZdS )CacheExtensioncachec                 C   s   t |jj}| g}|jdr||  n|td|j|f  g }|jdr;||  |jds.|rF|t	| n|tg  |j
dgdd}t| d|g g ||S )Ncommaz%s%szname:endcacheT)drop_needle_cache)nextstreamlinenoparse_expressionskip_ifappendr   ConstfilenameListparse_statements	CallBlockcall_method
set_lineno)selfparserr   argsvary_onbody r   N/home/ubuntu/webapp/venv/lib/python3.10/site-packages/flask_cache/jinja2ext.pyparse)   s$   
zCacheExtension.parsec           	   
   C   s|   zt | jt}W n ty } z|d }~ww t||d}|dkr)|| | S ||}|d u r<| }|||| |S )N)r   del)getattrenvironmentJINJA_CACHE_ATTR_NAMEAttributeErrorr   deletegetset)	r   timeoutfragment_namer   callerr   ekeyrvr   r   r   r
   F   s   

zCacheExtension._cacheN)__name__
__module____qualname__r'   tagsr   r
   r   r   r   r   r   &   s    
r   N)	__doc__jinja2r   
jinja2.extr   flask.ext.cacher   r#   r   r   r   r   r   <module>   s   