U
    &%eJ                     @   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k
r   dZY nX 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__ S/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/starlette/templating.pyr      s    	
z_TemplateResponse.__init__)scopereceivesendreturnc                    sZ   | j di }|di }d|k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   s.   t d k	std| j|f|| _|p&g | _d S )Nz/jinja2 must be installed to use Jinja2Templates)jinja2AssertionError_create_envenvr4   )r   r3   r4   r5   r   r   r   r   A   s    zJinja2Templates.__init__zjinja2.Environment)r3   r5   r    c                 K   sV   t tttjtddd}t|}|d| |dd tj	f |}||j
d< |S )N)r   namepath_paramsr    c                 [   s   | d }|j |f|S )Nr!   )url_for)r   r:   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=   r9   r   r   r   r8   M   s    

zJinja2Templates._create_envzjinja2.Template)r:   r    c                 C   s   | j |S r   )r9   get_template)r   r:   r   r   r   rA   ]   s    zJinja2Templates.get_templater   )r:   r   r   r   r   r   r    c           
      C   sX   d|k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   updaterA   r   )
r   r:   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   r8   rA   r,   r-   r/   r   r   rE   r   r   r   r   r2   :   s8          r2   )r*   osr   Zstarlette.backgroundr   Zstarlette.datastructuresr   Zstarlette.requestsr   Zstarlette.responsesr   Zstarlette.typesr   r   r	   r6   hasattrr
   ZcontextfunctionModuleNotFoundErrorr   r2   r   r   r   r   <module>   s   


!