a
     dA                     @   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 d dl	m
Z
 d dlmZmZmZ z$d dlZeedrtejZnejZW n ey   dZY n0 G d	d
 d
e
ZG dd dZdS )    N)PathLike)BackgroundTask)URL)Request)Response)ReceiveScopeSendpass_contextc                       sh   e Zd ZdZd
ejeeejej	e
e
f  eje
 eje d fddZeeedd 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__ ]/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/starlette/templating.pyr      s    	
z_TemplateResponse.__init__)scopereceivesendreturnc                    sZ   | j di }|di }d|v r@|d| j| j ddI d H  t |||I d H  d S )Nrequest
extensionszhttp.response.debug)r   r   )typeinfo)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 ejej	ej
egejeejf f   ejddddZejeef ejdddd	Zed
dddZdeeeejejeef  eje eje edddZdS )Jinja2Templatesz}
    templates = Jinja2Templates("templates")

    return templates.TemplateResponse("index.html", {"request": request})
    N)	directorycontext_processorsenv_optionsr    c                 K   s2   t d usJ d| j|fi || _|p*g | _d S )Nz/jinja2 must be installed to use Jinja2Templates)jinja2_create_envenvr4   )r   r3   r4   r5   r   r   r   r   A   s    zJinja2Templates.__init__zjinja2.Environment)r3   r5   r    c                 K   sZ   t tttjtddd}t|}|d| |dd tj	f i |}||j
d< |S )N)r   namepath_paramsr    c                 [   s   | d }|j |fi |S )Nr!   )url_for)r   r9   r:   r!   r   r   r   r;   P   s    z,Jinja2Templates._create_env.<locals>.url_forloaderZ
autoescapeTr;   )r
   r,   r0   r*   r+   r   r6   ZFileSystemLoader
setdefaultEnvironmentglobals)r   r3   r5   r;   r<   r8   r   r   r   r7   M   s    

zJinja2Templates._create_envzjinja2.Template)r9   r    c                 C   s   | j |S r   )r8   get_template)r   r9   r   r   r   r@   ]   s    zJinja2Templates.get_templater   )r9   r   r   r   r   r   r    c           
      C   sX   d|vrt dtt|d }| jD ]}||| q&| |}	t|	|||||dS )Nr!   z$context must include a "request" key)r   r   r   r   )
ValueErrorr*   castr   r4   updater@   r   )
r   r9   r   r   r   r   r   r!   Zcontext_processorr   r   r   r   TemplateResponse`   s    	

z Jinja2Templates.TemplateResponse)N)r   NNN)r'   r(   r)   __doc__r*   Unionr0   r   r.   ListCallabler   Dictr+   r   r7   r@   r,   r-   r/   r   r   rD   r   r   r   r   r2   :   s6         r2   )r*   osr   Zstarlette.backgroundr   Zstarlette.datastructuresr   Zstarlette.requestsr   Zstarlette.responsesr   Zstarlette.typesr   r   r	   r6   hasattrr
   ZcontextfunctionImportErrorr   r2   r   r   r   r   <module>   s   


!