o
    㥵ii                     @  s   d dl mZ d dl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 d	d
gZG dd	 d	e
Zzd dlZddlmZ W n eyU   G dd
 d
ZY dS w G dd deZejdddZG dd
 d
eZdS )    )annotations)AnyMapping)SmallResponse)URL)Protocol   )request)HttpResponseBaseTemplatesJinja2Templatesc                   @  s    e Zd Z				ddddZdS )r      NnamestrcontextMapping[str, Any]status_codeintheadersMapping[str, str] | None
media_type
str | Nonecharsetreturnr
   c                 C  s   t )zm
        The subclass must override this method and return
        an instance of a Response object.
        NotImplementedErrorselfr   r   r   r   r   r    r   F/home/ubuntu/.local/lib/python3.10/site-packages/kui/asgi/templates.pyTemplateResponse   s   zBaseTemplates.TemplateResponser   NNN)r   r   r   r   r   r   r   r   r   r   r   r   r   r
   )__name__
__module____qualname__r    r   r   r   r   r      s    N   )Jinja2TemplatesBasec                   @  s   e Zd ZdddZdS )r   r   Nonec                 C  s   t d)Nz'Install "jinja2" to use Jinja2Templatesr   )r   r   r   r   __init__*   s   Jinja2Templates.__init__N)r   r'   )r"   r#   r$   r(   r   r   r   r   r   )   s    c                      s6   e Zd ZdZ				dd fddZdddZ  ZS )_Jinja2TemplateResponsez	text/htmlr   Nenvjinja2.Environmentr   r   r   r   r   r   r   r   r   r   r   c                   s,   || _ | j || _t ||||| d S N)r+   get_templatetemplatesuperr(   )r   r+   r   r   r   r   r   r   	__class__r   r   r(   2   s   
z _Jinja2TemplateResponse.__init__r   bytesc                   s6   | j jr| j|I d H }n| j|}|| jS r-   )r+   is_asyncr/   render_asyncrenderencoder   )r   r   textr   r   r   r6   @   s
   z_Jinja2TemplateResponse.renderr!   )r+   r,   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r3   )r"   r#   r$   r   r(   r6   __classcell__r   r   r1   r   r*   /   s    r*   r   dictr   r   path_paramsr   r   r   c                 C  s   t ||S r-   )r	   url_for)r   r   r;   r   r   r   r<   G   s   r<   c                      s@   e Zd ZdZd fddZdddZ				ddddZ  ZS ) r   z
        templates = Jinja2Templates("dir", "package:dir")

        return templates.TemplateResponse("index.html", {"request": request})
        directoriesr   r   r'   c                   s   t  j|  t| jjd< d S )Nr<   )r0   r(   r<   r+   globals)r   r=   r1   r   r   r(   R   s   r)   loaderjinja2.BaseLoaderr,   c                 C  s   t j|dddS )NT)r?   enable_async
autoescape)jinja2Environment)r   r?   r   r   r   get_envV   s   zJinja2Templates.get_envr   Nr   r   r   r   r   r   r   r   r   r   r*   c              	   C  s   t | j||||||dS )N)r   r   r   r   )r*   r+   r   r   r   r   r    Y   s   	z Jinja2Templates.TemplateResponse)r=   r   r   r'   )r?   r@   r   r,   r!   )r   r   r   r   r   r   r   r   r   r   r   r   r   r*   )r"   r#   r$   __doc__r(   rE   r    r9   r   r   r1   r   r   K   s    
)r   r:   r   r   r;   r   r   r   )
__future__r   typingr   r   
baize.asgir   baize.datastructuresr   typing_extensionsr   requestsr	   	responsesr
   __all__r   rC   	templatesr&   ImportErrorr   r*   pass_contextr<   r   r   r   r   <module>   s*    