o
    ђ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rTejZnejZW n eyc   dZY nw 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                      s6   e Zd Z				dd fddZd fddZ  ZS )_TemplateResponse   Ntemplater   contextdict[str, Any]status_codeintheadersMapping[str, str] | None
media_type
str | None
backgroundBackgroundTask | Nonec                   s.   || _ || _||}t ||||| d S N)r   r   rendersuper__init__)selfr   r   r   r   r   r   content	__class__ M/var/www/html/govbot/env/lib/python3.10/site-packages/starlette/templating.pyr"      s   	
z_TemplateResponse.__init__scoper   receiver   sendr   returnNonec                   s\   | 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)r   r   r   r   r   r   r   r   r   r   r   r   )r)   r   r*   r   r+   r   r,   r-   )__name__
__module____qualname__r"   r3   __classcell__r'   r'   r%   r(   r      s    r   c                   @  s   e Zd ZdZeddd2ddZeddd3ddZ	d4dddd5ddZd6ddZd7ddZd8ddZe					d9d:d,d-Z	e					d9d;d.d-Z	d<d1d-Z	dS )=Jinja2Templatesz}
    templates = Jinja2Templates("templates")

    return templates.TemplateResponse("index.html", {"request": request})
    N)context_processors	directory3str | PathLike[str] | Sequence[str | PathLike[str]]r9   0list[Callable[[Request], dict[str, Any]]] | Noneenv_optionsr   r,   r-   c                K     d S r   r'   )r#   r:   r9   r=   r'   r'   r(   r"   C   s   zJinja2Templates.__init__envjinja2.Environmentc                C  r>   r   r'   )r#   r?   r9   r'   r'   r(   r"   L   s   )r9   r?   :str | PathLike[str] | Sequence[str | PathLike[str]] | Nonejinja2.Environment | Nonec                K  s~   |rt dt td usJ dt|t|A sJ d|pg | _|d ur0| j|fi || _n|d ur7|| _| | 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   
c                 K  s2   t |}|d| |dd t jdi |S )Nloader
autoescapeTr'   )rF   FileSystemLoader
setdefaultEnvironment)r#   r:   r=   rJ   r'   r'   r(   rH   k   s   
zJinja2Templates._create_envc                 C  s    t dd	d
}|jd| d S )Nr   r   namestrpath_paramsr   r,   r   c                [  s   | d }|j |fi |S )Nr.   )url_for)r   rO   rQ   r.   r'   r'   r(   rR   w   s   z4Jinja2Templates._setup_env_defaults.<locals>.url_forrR   )r   r   rO   rP   rQ   r   r,   r   )r   globalsrM   )r#   r?   rR   r'   r'   r(   rI   v   s   	z#Jinja2Templates._setup_env_defaultsrO   rP   jinja2.Templatec                 C  s   | j |S r   )r?   get_template)r#   rO   r'   r'   r(   rU      s   zJinja2Templates.get_templater   r.   r   r   dict[str, Any] | Noner   r   r   r   r   r   r   r   r   c                 C  r>   r   r'   )r#   r.   rO   r   r   r   r   r   r'   r'   r(   TemplateResponse   s   
z Jinja2Templates.TemplateResponsec                 C  r>   r   r'   )r#   rO   r   r   r   r   r   r'   r'   r(   rW      s   argskwargsc                 O  sb  |rt |d trmt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rL|d
 n|d}t|dkr[|d n|d}d|vrhtd|d }	n|d }	t|dkr{|d n|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}nAd|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" keyrO      zThe `TemplateResponse` now requires the `request` argument.
Replace `TemplateResponse(name, {"context": context})` by `TemplateResponse(request, name)`.)r   r   r   r   )
isinstancerP   rC   rD   rE   lenr2   
ValueErrorr   rM   r9   updaterU   r   )r#   rX   rY   rO   r   r   r   r   r   r.   context_processorr   r'   r'   r(   rW      s`     
   




)r:   r;   r9   r<   r=   r   r,   r-   )r?   r@   r9   r<   r,   r-   r   )
r:   rA   r9   r<   r?   rB   r=   r   r,   r-   )r:   r;   r=   r   r,   r@   )r?   r@   r,   r-   )rO   rP   r,   rT   )Nr   NNN)r.   r   rO   rP   r   rV   r   r   r   r   r   r   r   r   r,   r   )rO   rP   r   rV   r   r   r   r   r   r   r   r   r,   r   )rX   r   rY   r   r,   r   )
r4   r5   r6   __doc__r	   r"   rH   rI   rU   rW   r'   r'   r'   r(   r8   <   s>    	


r8   ) 
__future__r   rC   collections.abcr   r   osr   typingr   r   r   r	   starlette.backgroundr
   starlette.datastructuresr   starlette.requestsr   starlette.responsesr   starlette.typesr   r   r   rF   hasattrr   contextfunctionModuleNotFoundErrorr   r8   r'   r'   r'   r(   <module>   s*    
