U
    nËjØ   ã                   @  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	ƒrˆe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__© ú8/tmp/pip-unpacked-wheel-pzfrzqh9/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  |�r¦t |d tƒrÜt 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rÒt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¡}nˆd|k�rÖt dt¡ d| di ¡k�rÖtdƒ‚| di ¡}| d| d¡¡}	t 	t|d ¡}| dd¡}| d¡}| d
¡}| d¡}| 
d|	¡ | jD ]}
| |
|	ƒ¡ �q@|  |¡}t||||||d�S )Nr   zÁThe `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   é   é   z˜The `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"   


