U
    EZh                      @  s   d dl mZ d dlZ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	re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 )    )annotationsN)PathLike)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   N
typing.Anydict[str, typing.Any]inttyping.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__ [/home/aprabhat/apps/x.techxrdev.in/venv/lib/python3.8/site-packages/starlette/templating.pyr      s    	
z_TemplateResponse.__init__r	   r   r
   None)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   r.   __classcell__r"   r"   r    r#   r      s       r   c                   @  s   e Zd ZdZejdddddddd	d
Zej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jd.ddd d!d"d#d$d%d&d'd(Z
ej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_processorsz:str | PathLike[str] | typing.Sequence[str | PathLike[str]]z>list[typing.Callable[[Request], dict[str, typing.Any]]] | Noner   r$   )	directoryr4   env_optionsr(   c                K  s   d S r   r"   )r   r5   r4   r6   r"   r"   r#   r   B   s    zJinja2Templates.__init__zjinja2.Environment)envr4   r(   c                C  s   d S r   r"   )r   r7   r4   r"   r"   r#   r   K   s    )r4   r7   zAstr | PathLike[str] | typing.Sequence[str | PathLike[str]] | Nonezjinja2.Environment | None)r5   r4   r7   r6   r(   c                K  sz   |rt dt td k	s tdt|t|A s8td|p>g | _|d k	r\| j|f|| _n|d k	rj|| _| 	| 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AssertionErrorboolr4   _create_envr7   _setup_env_defaults)r   r5   r4   r7   r6   r"   r"   r#   r   S   s    
)r5   r6   r(   c                 K  s.   t |}|d| |dd t jf |S )NloaderZ
autoescapeT)r;   ZFileSystemLoader
setdefaultEnvironment)r   r5   r6   r@   r"   r"   r#   r>   j   s    
zJinja2Templates._create_env)r7   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|S )Nr)   )url_for)r   rD   rE   r)   r"   r"   r#   rF   v   s    z4Jinja2Templates._setup_env_defaults.<locals>.url_forrF   )r   globalsrA   )r   r7   rF   r"   r"   r#   r?   u   s    	z#Jinja2Templates._setup_env_defaultsrC   zjinja2.Template)rD   r(   c                 C  s   | j |S r   )r7   get_template)r   rD   r"   r"   r#   rH      s    zJinja2Templates.get_templater   r   zdict[str, typing.Any] | Noner   r   r   r   r   )r)   rD   r   r   r   r   r   r(   c                 C  s   d S r   r"   )r   r)   rD   r   r   r   r   r   r"   r"   r#   TemplateResponse   s    
z Jinja2Templates.TemplateResponse)rD   r   r   r   r   r   r(   c                 C  s   d S r   r"   )r   rD   r   r   r   r   r   r"   r"   r#   rI      s    )argskwargsr(   c                 O  st  |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|k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|krtdt d|di k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" keyrD         zThe `TemplateResponse` now requires the `request` argument.
Replace `TemplateResponse(name, {"context": context})` by `TemplateResponse(request, name)`.)r   r   r   r   )
isinstancerC   r8   r9   r:   lenr-   
ValueErrortypingcastrA   r4   updaterH   r   )r   rJ   rK   rD   r   r   r   r   r   r)   Zcontext_processorr   r"   r"   r#   rI      s`      
""  "





)N)Nr   NNN)Nr   NNN)r/   r0   r1   __doc__rU   overloadr   r>   r?   rH   rI   r"   r"   r"   r#   r3   ;   s<   	            r3   )
__future__r   rU   r8   osr   Zstarlette.backgroundr   Zstarlette.datastructuresr   Zstarlette.requestsr   Zstarlette.responsesr   Zstarlette.typesr   r	   r
   r;   hasattrr   ZcontextfunctionModuleNotFoundErrorr   r3   r"   r"   r"   r#   <module>   s"   


