a
    he                      @  s   d dl mZ d dlZd dlmZmZ d dlmZ d dlm	Z	m
Z
mZ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re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 )    )annotationsN)MappingSequence)PathLike)AnyCallablecastoverload)BackgroundTask)URL)Request)HTMLResponse)ReceiveScopeSendpass_contextc                      sF   e Zd Zdddddddd	 fd
dZddddd fddZ  ZS )_TemplateResponse   Nr   dict[str, Any]intMapping[str, str] | None
str | NoneBackgroundTask | None)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__ P/var/www/html/assistant/venv/lib/python3.9/site-packages/starlette/templating.pyr"      s    	
z_TemplateResponse.__init__r   r   r   None)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(   r3   ,   s    
	z_TemplateResponse.__call__)r   NNN)__name__
__module____qualname__r"   r3   __classcell__r'   r'   r%   r(   r      s       r   c                   @  s   e Zd ZdZedddddddd	d
Zedddddddd
Zd-ddddddddddd
ZddddddZdddddZdddddZed.ddd d!d"d#d$d%d&d'd(Z	ed/dd d!d"d#d$d%d)d*d(Z	ddd%d+d,d(Z	dS )0Jinja2Templatesz}
    templates = Jinja2Templates("templates")

    return templates.TemplateResponse("index.html", {"request": request})
    N)context_processorsz3str | PathLike[str] | Sequence[str | PathLike[str]]z0list[Callable[[Request], dict[str, Any]]] | Noner   r)   )	directoryr9   env_optionsr-   c                K  s   d S r   r'   )r#   r:   r9   r;   r'   r'   r(   r"   C   s    zJinja2Templates.__init__zjinja2.Environment)envr9   r-   c                C  s   d S r   r'   )r#   r<   r9   r'   r'   r(   r"   L   s    )r9   r<   z:str | PathLike[str] | Sequence[str | PathLike[str]] | Nonezjinja2.Environment | None)r:   r9   r<   r;   r-   c                K  s~   |rt dt td us J dt|t|A s8J d|p>g | _|d ur`| j|fi || _n|d urn|| _| | j d S )NzYExtra environment options are deprecated. Use a preconfigured jinja2.Environment instead.z/jinja2 must be installed to use Jinja2Templatesz4either 'directory' or 'env' arguments must be passed)	warningswarnDeprecationWarningjinja2boolr9   _create_envr<   _setup_env_defaults)r#   r:   r9   r<   r;   r'   r'   r(   r"   T   s    
)r:   r;   r-   c                 K  s2   t |}|d| |dd t jf i |S )NloaderZ
autoescapeT)r@   ZFileSystemLoader
setdefaultEnvironment)r#   r:   r;   rD   r'   r'   r(   rB   k   s    
zJinja2Templates._create_env)r<   r-   c                 C  s*   t ddddddd}|jd| d S )	Nr   strr   r   )r   namepath_paramsr-   c                [  s   | d }|j |fi |S )Nr.   )url_for)r   rH   rI   r.   r'   r'   r(   rJ   w   s    z4Jinja2Templates._setup_env_defaults.<locals>.url_forrJ   )r   globalsrE   )r#   r<   rJ   r'   r'   r(   rC   v   s    	z#Jinja2Templates._setup_env_defaultsrG   zjinja2.Template)rH   r-   c                 C  s   | j |S r   )r<   get_template)r#   rH   r'   r'   r(   rL      s    zJinja2Templates.get_templater   r   zdict[str, Any] | Noner   r   r   r   r   )r.   rH   r   r   r   r   r   r-   c                 C  s   d S r   r'   )r#   r.   rH   r   r   r   r   r   r'   r'   r(   TemplateResponse   s    
z Jinja2Templates.TemplateResponse)rH   r   r   r   r   r   r-   c                 C  s   d S r   r'   )r#   rH   r   r   r   r   r   r'   r'   r(   rM      s    )argskwargsr-   c                 O  sr  |rt |d trtdt |d }t|dkr<|d n
|di }t|dkr\|d n
|dd}t|dkr||d n|d	}t|d
kr|d
 n|d}t|dkr|d n|d}d|vrtd|d }	n|d }	t|dkr|d n|d }t|dkr|d n
|di }t|dkr8|d n
|dd}t|d
krZ|d
 n|d	}t|dkrz|d n|d}t|dkr|d n|d}nd|vrtdt d|di vrtd|di }|d|d}	tt|d }|dd}|d	}|d}|d}|	d|	 | j
D ]}
||
|	 q>| |}t||||||dS )Nr   zThe `name` is not the first parameter anymore. The first parameter should be the `Request` instance.
Replace `TemplateResponse(name, {"request": request})` by `TemplateResponse(request, name)`.   r      r   r      r      r      r   r.   z$context must include a "request" keyrH      zThe `TemplateResponse` now requires the `request` argument.
Replace `TemplateResponse(name, {"context": context})` by `TemplateResponse(request, name)`.)r   r   r   r   )
isinstancerG   r=   r>   r?   lenr2   
ValueErrorr   rE   r9   updaterL   r   )r#   rN   rO   rH   r   r   r   r   r   r.   Zcontext_processorr   r'   r'   r(   rM      s`      
""  "





)N)Nr   NNN)Nr   NNN)
r4   r5   r6   __doc__r	   r"   rB   rC   rL   rM   r'   r'   r'   r(   r8   <   s<   	            r8   ) 
__future__r   r=   collections.abcr   r   osr   typingr   r   r   r	   Zstarlette.backgroundr
   Zstarlette.datastructuresr   Zstarlette.requestsr   Zstarlette.responsesr   Zstarlette.typesr   r   r   r@   hasattrr   ZcontextfunctionModuleNotFoundErrorr   r8   r'   r'   r'   r(   <module>   s$   


