
    iG                    H   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j        Zn eed          rej        Znej        Zn# e$ rZ ed          ed
Z[ww xY w G d de          Z G d d          Zd
S )    )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                  6     e Zd Z	 	 	 	 dd fdZd fdZ xZS )_TemplateResponse   Ntemplater	   contextdict[str, Any]status_codeintheadersMapping[str, str] | None
media_type
str | None
backgroundBackgroundTask | Nonec                    || _         || _        |                    |          }t                                          |||||           d S N)r   r   rendersuper__init__)	selfr   r   r   r   r   r   content	__class__s	           Q/root/projects/qq-shell/venv/lib/python3.11/site-packages/starlette/templating.pyr%   z_TemplateResponse.__init__    sJ     !//'**+w
JOOOOO    scoper   receiver   sendr   returnNonec                
  K   | j                             di           }|                    di           }d|v r! |d| j        | j         dd           d {V  t                                          |||           d {V  d S )Nrequest
extensionszhttp.response.debug)r   r   )typeinfo)r   getr   r$   __call__)r&   r+   r,   r-   r1   r2   r(   s         r)   r6   z_TemplateResponse.__call__.   s      ,""9b11[[r22
 J..$ 5DMfjfr?s?sttuuuuuuuuuggugt44444444444r*   )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%   r6   __classcell__)r(   s   @r)   r   r      su        
 ,0!%,0P P P P P P P5 5 5 5 5 5 5 5 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dS ).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_processors	directory3str | PathLike[str] | Sequence[str | PathLike[str]]r=   0list[Callable[[Request], dict[str, Any]]] | Noner.   r/   c                   d S r"    )r&   r>   r=   s      r)   r%   zJinja2Templates.__init__D   	     sr*   envjinja2.Environmentc                   d S r"   rB   )r&   rD   r=   s      r)   r%   zJinja2Templates.__init__L   rC   r*   )r=   rD   :str | PathLike[str] | Sequence[str | PathLike[str]] | Nonejinja2.Environment | Nonec               6   t          |          t          |          z  s
J d            |pg | _        |At          j        |          }t          j        |t          j                              | _        n	||| _        |                     | j                   d S )Nz4either 'directory' or 'env' arguments must be passed)loader
autoescape)boolr=   jinja2FileSystemLoaderEnvironmentselect_autoescaperD   _setup_env_defaults)r&   r>   r=   rD   rJ   s        r)   r%   zJinja2Templates.__init__T   s     Ic*bb,bbbb"4": ,Y77F)FD\D^D^___DHH_DH  *****r*   c                ^    t           dd	            }|j                            d
|           d S )Nr   r   namestrpath_paramsr	   r.   r   c               .    | d         } |j         |fi |S )Nr1   )url_for)r   rS   rU   r1   s       r)   rW   z4Jinja2Templates._setup_env_defaults.<locals>.url_forf   s(      'y1G"7?477;777r*   rW   )r   r   rS   rT   rU   r	   r.   r   )r   globals
setdefault)r&   rD   rW   s      r)   rQ   z#Jinja2Templates._setup_env_defaultse   s@    		8 	8 	8 
	8 	y'22222r*   rS   rT   jinja2.Templatec                6    | j                             |          S r"   )rD   get_template)r&   rS   s     r)   r\   zJinja2Templates.get_templater   s    x$$T***r*   r   r1   r   r   dict[str, Any] | Noner   r   r   r   r   r   r   r    r   c                    |pi }|                     d|           | j        D ] }|                     ||                     !|                     |          }	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.
        r1   )r   r   r   r   )rY   r=   updater\   r   )
r&   r1   rS   r   r   r   r   r   context_processorr   s
             r)   TemplateResponsez Jinja2Templates.TemplateResponseu   s    2 -R9g...!%!8 	7 	7NN,,W556666$$T** #!!
 
 
 	
r*   )r>   r?   r=   r@   r.   r/   )rD   rE   r=   r@   r.   r/   r"   )r>   rG   r=   r@   rD   rH   r.   r/   )rD   rE   r.   r/   )rS   rT   r.   rZ   )Nr   NNN)r1   r   rS   rT   r   r]   r   r   r   r   r   r   r   r    r.   r   )	r7   r8   r9   __doc__r
   r%   rQ   r\   ra   rB   r*   r)   r<   r<   6   s         
 PT	     X 
 PT	     X QU+ PT)-+ + + + + +"3 3 3 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   rM   r   hasattrcontextfunctionImportError_import_errorr   r<   rB   r*   r)   <module>rp      s   " " " " " " 7 7 7 7 7 7 7 7 7 7       / / / / / / / / / / / / / / / / ( ( ( ( ( ( & & & & & & , , , , , , 0 0 0 0 0 0 0 0 0 0\MMM  2*76>** 	2!.LL!1L \ \ \
+G
H
Hm[\5 5 5 5 5 5 5 5.f
 f
 f
 f
 f
 f
 f
 f
 f
 f
s   )A. .B3A??B