
    6iG                    J   d dl mZ d dlmZmZmZ d dlmZ d dl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 	 d d
lZe	rej2                  Zn" eed      rej2                  Znej6                  Z G d de      Z G d d      Zy
# e$ rZ ed      ed
Z[ww xY w)    )annotations)CallableMappingSequence)PathLike)TYPE_CHECKINGAnyoverload)BackgroundTask)URL)Request)HTMLResponse)ReceiveScopeSendNpass_contextz/jinja2 must be installed to use Jinja2Templatesc                  L     e Zd Z	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 d fdZd fdZ xZS )_TemplateResponsec                j    || _         || _        |j                  |      }t        |   |||||       y N)templatecontextrendersuper__init__)	selfr   r   status_codeheaders
media_type
backgroundcontent	__class__s	           G/var/www/files/kim/lib/python3.12/site-packages/starlette/templating.pyr   z_TemplateResponse.__init__    s6     !//'*+w
JO    c                   K   | j                   j                  di       }|j                  di       }d|v r* |d| j                  | j                   dd       d {    t        |   |||       d {    y 7 7 w)Nrequest
extensionszhttp.response.debug)r   r   )typeinfo)r   getr   r   __call__)r   scopereceivesendr&   r'   r"   s         r#   r+   z_TemplateResponse.__call__.   sz     ,,""9b1[[r2
 J. 5DMMfjfrfr?stuuugugt444 v4s$   AA>A:A>4A<5A><A>)   NNN)r   r	   r   dict[str, Any]r   intr   Mapping[str, str] | Noner   
str | Noner    BackgroundTask | None)r,   r   r-   r   r.   r   returnNone)__name__
__module____qualname__r   r+   __classcell__)r"   s   @r#   r   r      sa    
 ,0!%,0PP  P 	P
 *P P *P5 5r$   r   c                      e Zd ZdZedd	 	 	 	 	 dd       Zedd	 	 	 	 	 dd       Z	 dddd	 	 	 	 	 	 	 ddZddZdd	Z	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd
Zy)Jinja2Templatesa?  Jinja2 template renderer.

    Example:
        ```python
        from starlette.templating import Jinja2Templates

        templates = Jinja2Templates(directory="templates")

        async def homepage(request: Request) -> Response:
            return templates.TemplateResponse(request, "index.html")
        ```
    N)context_processorsc                    y r    )r   	directoryr=   s      r#   r   zJinja2Templates.__init__D        r$   c                    y r   r?   )r   envr=   s      r#   r   zJinja2Templates.__init__L   rA   r$   )r=   rC   c               *   t        |      t        |      z  sJ d       |xs g | _        |Dt        j                  |      }t        j                  |t        j
                               | _        n	||| _        | j                  | j                         y )Nz4either 'directory' or 'env' arguments must be passed)loader
autoescape)boolr=   jinja2FileSystemLoaderEnvironmentselect_autoescaperC   _setup_env_defaults)r   r@   r=   rC   rE   s        r#   r   zJinja2Templates.__init__T   s~     Ic*b,bb*"4": ,,Y7F))FD\D\D^_DH_DH  *r$   c                f    t         	 	 	 	 	 	 	 	 dd       }|j                  j                  d|       y )Nc               2    | d   } |j                   |fi |S )Nr&   )url_for)r   namepath_paramsr&   s       r#   rO   z4Jinja2Templates._setup_env_defaults.<locals>.url_forf   s$      'y1G"7??47;77r$   rO   )r   r0   rP   strrQ   r	   r5   r   )r   globals
setdefault)r   rC   rO   s      r#   rL   z#Jinja2Templates._setup_env_defaultse   sN    		8#	8	8 		8
 	8 
	8 	y'2r$   c                8    | j                   j                  |      S r   )rC   get_template)r   rP   s     r#   rV   zJinja2Templates.get_templater   s    xx$$T**r$   c                    |xs i }|j                  d|       | j                  D ]  }|j                   ||              | j                  |      }	t	        |	|||||      S )a>  
        Render a template and return an HTML response.

        Args:
            request: The incoming request instance.
            name: The template file name to render.
            context: Variables to pass to the template.
            status_code: HTTP status code for the response.
            headers: Additional headers to include in the response.
            media_type: Media type for the response.
            background: Background task to run after response is sent.

        Returns:
            An HTML response with the rendered template content.
        r&   )r   r   r   r    )rT   r=   updaterV   r   )
r   r&   rP   r   r   r   r   r    context_processorr   s
             r#   TemplateResponsez Jinja2Templates.TemplateResponseu   sv    2 -R9g.!%!8!8 	7NN,W56	7 $$T* #!!
 	
r$   )r@   z3str | PathLike[str] | Sequence[str | PathLike[str]]r=   0list[Callable[[Request], dict[str, Any]]] | Noner5   r6   )rC   jinja2.Environmentr=   r[   r5   r6   r   )r@   z:str | PathLike[str] | Sequence[str | PathLike[str]] | Noner=   r[   rC   zjinja2.Environment | Noner5   r6   )rC   r\   r5   r6   )rP   rR   r5   zjinja2.Template)Nr/   NNN)r&   r   rP   rR   r   zdict[str, Any] | Noner   r1   r   r2   r   r3   r    r4   r5   r   )	r7   r8   r9   __doc__r
   r   rL   rV   rZ   r?   r$   r#   r<   r<   6   s)    
 PT	F M	
 
  
 PT	   M	
 
  QU+ PT)-+M+ M	+
 '+ 
+"3+ *.,0!%,0'
'
 '
 '	'

 '
 *'
 '
 *'
 
'
r$   r<   ) 
__future__r   collections.abcr   r   r   osr   typingr   r	   r
   starlette.backgroundr   starlette.datastructuresr   starlette.requestsr   starlette.responsesr   starlette.typesr   r   r   rH   r   hasattrcontextfunctionImportError_import_errorr   r<   r?   r$   r#   <module>rk      s    " 7 7  / / / ( & , 0 0\ **6>*!..L!11L
5 5.f
 f
7  \
G
Hm[\s   5B B"	BB"