o
    :ήc$                     @   s   d dl Z d dlm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eedr.ejZnejZW n ey=   dZY nw G dd deZG d	d
 d
ZdS )    N)PathLike)BackgroundTask)Response)ReceiveScopeSendpass_contextc                       s   e Zd ZdZ				ddejdededejej	e
e
f  deje
 d	ej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__ ;/tmp/pip-target-vg8gfxp4/lib/python/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OptionalMappingstrr   r   r   r   r   r#   __classcell__r   r   r   r   r	      s(    &r	   c                   @   s   e Zd ZdZdejeef dejddfddZ	dejeef dejddfd	d
Z
deddfddZ				ddedededejejeef  deje deje defddZdS )Jinja2Templatesz}
    templates = Jinja2Templates("templates")

    return templates.TemplateResponse("index.html", {"request": request})
    	directoryenv_optionsr   Nc                 K   s(   t d usJ d| j|fi || _d S )Nz/jinja2 must be installed to use Jinja2Templates)jinja2_create_envenv)r   r1   r2   r   r   r   r   =   s   zJinja2Templates.__init__zjinja2.Environmentc              	   K   s`   t dtdtdtjdtfdd}t|}|d| |dd	 tjdi |}||j	d
< |S )Nr   namepath_paramsr   c                 [   s   | d }|j |fi |S )Nr   )url_for)r   r6   r7   r   r   r   r   r8   F   s   z,Jinja2Templates._create_env.<locals>.url_forloader
autoescapeTr8   r   )
r   r*   r.   r(   r)   r3   FileSystemLoader
setdefaultEnvironmentglobals)r   r1   r2   r8   r9   r5   r   r   r   r4   C   s   

zJinja2Templates._create_envr6   zjinja2.Templatec                 C   s   | j |S r   )r5   get_template)r   r6   r   r   r   r?   S   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   )
ValueErrorr?   r	   )r   r6   r   r   r   r   r   r   r   r   r   TemplateResponseV   s   	
z Jinja2Templates.TemplateResponser$   )r%   r&   r'   __doc__r(   Unionr.   r   r)   r   r4   r?   r*   r+   r,   r-   r   r	   rA   r   r   r   r   r0   6   sH    

r0   )r(   osr   starlette.backgroundr   starlette.responsesr   starlette.typesr   r   r   r3   hasattrr   contextfunctionImportErrorr	   r0   r   r   r   r   <module>   s     
