o
    iiG                  
   @  s   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 zd d
lZe	rMejZneedrVejZnejZW n eyk Z zeded
Z[ww G dd deZG d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                      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__ \/var/www/scraper.webshop2u.hu/html/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(   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                   @  sx   e Zd ZdZeddd*d
dZeddd+ddZ	d,dddd-ddZd.ddZd/ddZ					d0d1d(d)ZdS )2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]]r9   0list[Callable[[Request], dict[str, Any]]] | Noner,   r-   c                C     d S r   r'   )r#   r:   r9   r'   r'   r(   r"   D      zJinja2Templates.__init__envjinja2.Environmentc                C  r=   r   r'   )r#   r?   r9   r'   r'   r(   r"   L   r>   )r9   r?   :str | PathLike[str] | Sequence[str | PathLike[str]] | Nonejinja2.Environment | Nonec                C  sh   t |t |A sJ d|pg | _|d ur%t|}tj|t d| _n|d ur,|| _| | j d S )Nz4either 'directory' or 'env' arguments must be passed)loader
autoescape)boolr9   jinja2FileSystemLoaderEnvironmentselect_autoescaper?   _setup_env_defaults)r#   r:   r9   r?   rC   r'   r'   r(   r"   T   s   

c                 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   rK   rM   r.   r'   r'   r(   rN   f   s   z4Jinja2Templates._setup_env_defaults.<locals>.url_forrN   )r   r   rK   rL   rM   r   r,   r   )r   globals
setdefault)r#   r?   rN   r'   r'   r(   rJ   e   s   	z#Jinja2Templates._setup_env_defaultsrK   rL   jinja2.Templatec                 C  s   | j |S r   )r?   get_template)r#   rK   r'   r'   r(   rR   r   s   zJinja2Templates.get_templater   r.   r   r   dict[str, Any] | Noner   r   r   r   r   r   r   r   r   c           
      C  sL   |pi }| d| | jD ]	}||| q| |}	t|	|||||d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   )rP   r9   updaterR   r   )
r#   r.   rK   r   r   r   r   r   context_processorr   r'   r'   r(   TemplateResponseu   s   

z Jinja2Templates.TemplateResponse)r:   r;   r9   r<   r,   r-   )r?   r@   r9   r<   r,   r-   r   )r:   rA   r9   r<   r?   rB   r,   r-   )r?   r@   r,   r-   )rK   rL   r,   rQ   )Nr   NNN)r.   r   rK   rL   r   rS   r   r   r   r   r   r   r   r   r,   r   )	r4   r5   r6   __doc__r	   r"   rJ   rR   rV   r'   r'   r'   r(   r8   6   s*    	

r8   ) 
__future__r   collections.abcr   r   r   osr   typingr   r   r	   starlette.backgroundr
   starlette.datastructuresr   starlette.requestsr   starlette.responsesr   starlette.typesr   r   r   rF   r   hasattrcontextfunctionImportError_import_errorr   r8   r'   r'   r'   r(   <module>   s.    

