o
    [h
                     @   sz   d dl Z d dlmZ d dlmZ d dlmZmZmZ zd dl	Z	W n e
y+   dZ	Y nw G dd deZG dd dZdS )	    N)BackgroundTask)Response)ReceiveScopeSendc                       sd   e Zd ZdZ				ddejdedededed	e	f fd
dZ
dedededdf fddZ  ZS )_TemplateResponsez	text/html   Ntemplatecontextstatus_codeheaders
media_type
backgroundc                    s.   || _ || _||}t ||||| d S N)r	   r
   rendersuper__init__)selfr	   r
   r   r   r   r   content	__class__ {/home/ubuntu/experiments/live_experiments/Pythonexperiments/Otree/venv/lib/python3.10/site-packages/starlette/templating.pyr      s   	
z_TemplateResponse.__init__scopereceivesendreturnc                    sX   | j di }|di }d|v r|d| j| j dI d H  t |||I d H  d S )Nrequest
extensionszhttp.response.template)typer	   r
   )r
   getr	   r   __call__)r   r   r   r   r   r   r   r   r   r!      s   
z_TemplateResponse.__call__r   NNN)__name__
__module____qualname__r   typingAnydictintstrr   r   r   r   r   r!   __classcell__r   r   r   r   r      s(    &r   c                   @   sv   e Zd ZdZdeddfddZdeddfdd	Zd
eddfddZ				dd
edede	dedede
defddZdS )Jinja2Templatesz}
    templates = Jinja2Templates("templates")

    return templates.TemplateResponse("index.html", {"request": request})
    	directoryr   Nc                 C   s    t d usJ d| || _d S )Nz/jinja2 must be installed to use Jinja2Templates)jinja2get_envenv)r   r-   r   r   r   r   3   s   zJinja2Templates.__init__zjinja2.Environmentc              	   C   sH   t jdtdtdtjdtfdd}t |}t j|dd}||jd	< |S )
Nr
   namepath_paramsr   c                 [   s   | d }|j |fi |S )Nr   )url_for)r
   r1   r2   r   r   r   r   r3   8   s   z(Jinja2Templates.get_env.<locals>.url_forT)loaderZ
autoescaper3   )	r.   Zcontextfunctionr(   r*   r&   r'   ZFileSystemLoaderEnvironmentglobals)r   r-   r3   r4   r0   r   r   r   r/   7   s   

zJinja2Templates.get_envr1   zjinja2.Templatec                 C   s   | j |S r   )r0   get_template)r   r1   r   r   r   r7   B   s   zJinja2Templates.get_templater   r
   r   r   r   r   c                 C   s.   d|vrt d| |}t||||||dS )Nr   z$context must include a "request" key)r   r   r   r   )
ValueErrorr7   r   )r   r1   r
   r   r   r   r   r	   r   r   r   TemplateResponseE   s   	
z Jinja2Templates.TemplateResponser"   )r#   r$   r%   __doc__r*   r   r/   r7   r(   r)   r   r   r9   r   r   r   r   r,   ,   s0    r,   )r&   Zstarlette.backgroundr   Zstarlette.responsesr   Zstarlette.typesr   r   r   r.   ImportErrorr   r,   r   r   r   r   <module>   s    