o
    Ci#                     @   s   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yM   dZY nw G d	d
 d
eZG dd dZdS )    N)PathLike)BackgroundTask)URL)Request)HTMLResponse)ReceiveScopeSendpass_contextc                       s   e Zd Z				ddejdejeejf dedejej	eef  deje deje
 f fd	d
Zdedededdf fddZ  ZS )_TemplateResponse   N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__ l/var/www/html/fyndo/python/python_agents/rag_suite/venv/lib/python3.10/site-packages/starlette/templating.pyr      s   	
z_TemplateResponse.__init__scopereceivesendreturnc                    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)__name__
__module____qualname__typingAnyDictstrintOptionalMappingr   r   r   r   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ejejeje	gej
eejf f   dejddfd	d
Zejdddddejejeje	gej
eejf f   ddfdd
Z	d&ddddddejejeje	gej
eejf f   dejd dejddf
dd
ZdddejddfddZd'ddZdeddfddZej					d(de	dedejej
eejf  dedejejeef  deje deje defd d!Zej					d(dedejej
eejf  dedejejeef  deje deje defd"d!Zd#ejd$ejdefd%d!ZdS ))Jinja2Templatesz}
    templates = Jinja2Templates("templates")

    return templates.TemplateResponse("index.html", {"request": request})
    N)context_processors	directoryzgtyping.Union[str, PathLike[typing.AnyStr], typing.Sequence[typing.Union[str, PathLike[typing.AnyStr]]]]r3   env_optionsr    c                K      d S r   r   )r   r4   r3   r5   r   r   r   r   @   s   
zJinja2Templates.__init__envjinja2.Environmentc                C   r6   r   r   )r   r7   r3   r   r   r   r   L   s   	)r3   r7   zmtyping.Union[str, PathLike[typing.AnyStr], typing.Sequence[typing.Union[str, PathLike[typing.AnyStr]]], None]c                K   sv   |rt dt td usJ d|s|sJ d|pg | _|d ur,| j|fi || _n|d ur3|| _| | 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jinja2r3   _create_envr7   _setup_env_defaults)r   r4   r3   r7   r5   r   r   r   r   W   s   

c                 K   s2   t |}|d| |dd t jdi |S )Nloader
autoescapeTr   )r<   FileSystemLoader
setdefaultEnvironment)r   r4   r5   r?   r   r   r   r=   p   s   
zJinja2Templates._create_envc              	   C   s>   t dtjttjf dtdtjdtfdd}|jd| d S )Nr   namepath_paramsr    c                [   s   | d }|j |fi |S )Nr!   )url_for)r   rD   rE   r!   r   r   r   rF   |   s   z4Jinja2Templates._setup_env_defaults.<locals>.url_forrF   )r
   r*   r,   r-   r+   r   globalsrB   )r   r7   rF   r   r   r   r>   {   s   	z#Jinja2Templates._setup_env_defaultsrD   zjinja2.Templatec                 C   s   | j |S r   )r7   get_template)r   rD   r   r   r   rH      s   zJinja2Templates.get_templater   r!   r   r   r   r   r   c                 C   r6   r   r   )r   r!   rD   r   r   r   r   r   r   r   r   TemplateResponse      z Jinja2Templates.TemplateResponsec                 C   r6   r   r   )r   rD   r   r   r   r   r   r   r   r   rI      rJ   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" keyrD         zThe `TemplateResponse` now requires the `request` argument.
Replace `TemplateResponse(name, {"context": context})` by `TemplateResponse(request, name)`.)r   r   r   r   )
isinstancer-   r9   r:   r;   lenr%   
ValueErrorr*   castrB   r3   updaterH   r   )r   rK   rL   rD   r   r   r   r   r   r!   context_processorr   r   r   r   rI      sh    
  




r   )r7   r8   r    N)Nr   NNN)r'   r(   r)   __doc__r*   overloadr/   ListCallabler   r,   r-   r+   r   r=   r>   rH   r.   r0   r   r   rI   r   r   r   r   r2   9   s       	


	r2   )r*   r9   osr   starlette.backgroundr   starlette.datastructuresr   starlette.requestsr   starlette.responsesr   starlette.typesr   r   r	   r<   hasattrr
   contextfunctionModuleNotFoundErrorr   r2   r   r   r   r   <module>   s&    
