o
    h                      @  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	rDejZnejZW n eyS   dZY nw G d
d deZG dd dZdS )    )annotationsN)PathLike)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template
typing.Anycontextdict[str, typing.Any]status_codeintheaderstyping.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__ h/var/www/html/construction_image-detection-poc/venv/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#   r.   +   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   r.   __classcell__r"   r"   r    r#   r      s    r   c                   @  s   e Zd ZdZejddd2ddZejddd3ddZ	d4dddd5ddZd6ddZd7ddZd8ddZ	ej					d9d:d,d-Z
ej					d9d;d.d-Z
d<d1d-Z
dS )=Jinja2Templatesz}
    templates = Jinja2Templates("templates")

    return templates.TemplateResponse("index.html", {"request": request})
    N)context_processors	directory:str | PathLike[str] | typing.Sequence[str | PathLike[str]]r4   >list[typing.Callable[[Request], dict[str, typing.Any]]] | Noneenv_optionsr   r'   r(   c                K     d S r   r"   )r   r5   r4   r8   r"   r"   r#   r   B   s   zJinja2Templates.__init__envjinja2.Environmentc                C  r9   r   r"   )r   r:   r4   r"   r"   r#   r   K   s   )r4   r:   Astr | PathLike[str] | typing.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boolr4   _create_envr:   _setup_env_defaults)r   r5   r4   r:   r8   r"   r"   r#   r   S   s   
c                 K  s2   t |}|d| |dd t jdi |S )Nloader
autoescapeTr"   )rA   FileSystemLoader
setdefaultEnvironment)r   r5   r8   rE   r"   r"   r#   rC   j   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   rJ   rL   r)   r"   r"   r#   rM   v   s   z4Jinja2Templates._setup_env_defaults.<locals>.url_forrM   )r   r   rJ   rK   rL   r   r'   r   )r   globalsrH   )r   r:   rM   r"   r"   r#   rD   u   s   	z#Jinja2Templates._setup_env_defaultsrJ   rK   jinja2.Templatec                 C  s   | j |S r   )r:   get_template)r   rJ   r"   r"   r#   rP      s   zJinja2Templates.get_templater   r)   r   r   dict[str, typing.Any] | Noner   r   r   r   r   r   r   r   r   c                 C  r9   r   r"   )r   r)   rJ   r   r   r   r   r   r"   r"   r#   TemplateResponse   s   
z Jinja2Templates.TemplateResponsec                 C  r9   r   r"   )r   rJ   r   r   r   r   r   r"   r"   r#   rR      s   argskwargsc                 O  sd  |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}nBd|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" keyrJ      zThe `TemplateResponse` now requires the `request` argument.
Replace `TemplateResponse(name, {"context": context})` by `TemplateResponse(request, name)`.)r   r   r   r   )
isinstancerK   r>   r?   r@   lenr-   
ValueErrortypingcastrH   r4   updaterP   r   )r   rS   rT   rJ   r   r   r   r   r   r)   context_processorr   r"   r"   r#   rR      s`     
   




)r5   r6   r4   r7   r8   r   r'   r(   )r:   r;   r4   r7   r'   r(   r   )
r5   r<   r4   r7   r:   r=   r8   r   r'   r(   )r5   r6   r8   r   r'   r;   )r:   r;   r'   r(   )rJ   rK   r'   rO   )Nr   NNN)r)   r   rJ   rK   r   rQ   r   r   r   r   r   r   r   r   r'   r   )rJ   rK   r   rQ   r   r   r   r   r   r   r   r   r'   r   )rS   r   rT   r   r'   r   )r/   r0   r1   __doc__r^   overloadr   rC   rD   rP   rR   r"   r"   r"   r#   r3   ;   s>    	


r3   )
__future__r   r^   r>   osr   starlette.backgroundr   starlette.datastructuresr   starlette.requestsr   starlette.responsesr   starlette.typesr   r	   r
   rA   hasattrr   contextfunctionModuleNotFoundErrorr   r3   r"   r"   r"   r#   <module>   s(    
