o
    Nio                     @  s  d Z ddlmZ ddlZddlmZ 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lmZ ddlmZmZ er\ddlmZmZ ddlmZ G dd dZG dd deZG dd deZ G dd de Z!G dd de Z"G dd deZ#dS )z'Templates utility functions for Sphinx.    )annotationsN)partial)path)TYPE_CHECKINGAny)TemplateNotFound)
BaseLoader)SandboxedEnvironment)package_dir)SphinxFileSystemLoader)get_translator)rst	texescape)CallableSequence)Environmentc                   @  s,   e Zd ZddddZdddZdddZdS )BaseRendererNloaderBaseLoader | NonereturnNonec                 C  s.   t |dgd| _t| jjd< | jt  d S )Nzjinja2.ext.i18n)r   
extensionsrepr)r	   envr   filtersinstall_gettext_translationsr   )selfr    r   H/home/ubuntu/.local/lib/python3.10/site-packages/sphinx/util/template.py__init__   s   zBaseRenderer.__init__template_namestrcontextdict[str, Any]c                 C     | j ||S N)r   get_templaterender)r   r    r"   r   r   r   r'          zBaseRenderer.rendersourcec                 C  r$   r%   )r   from_stringr'   )r   r)   r"   r   r   r   render_string#   r(   zBaseRenderer.render_stringr%   )r   r   r   r   )r    r!   r"   r#   r   r!   )r)   r!   r"   r#   r   r!   )__name__
__module____qualname__r   r'   r+   r   r   r   r   r      s    
r   c                      s,   e Zd Zd fddZedddZ  ZS )FileRenderersearch_path Sequence[str | os.PathLike[str]]r   r   c                   s>   t |ttjB r|g}nttd |}t|}t | d S r%   )	
isinstancer!   osPathLikelistfilterr   superr   )r   r0   r   	__class__r   r   r   (   s
   zFileRenderer.__init__clstype[FileRenderer]filenamer!   r"   r#   c                 C  s(   t j|}t j|}| |||S r%   )r3   r   dirnamebasenamer'   )r:   r<   r"   r=   r>   r   r   r   render_from_file2   s   zFileRenderer.render_from_file)r0   r1   r   r   r:   r;   r<   r!   r"   r#   r   r!   r,   r-   r.   r   classmethodr?   __classcell__r   r   r8   r   r/   '   s    
r/   c                      s0   e Zd Z	dd fddZedddZ  ZS )SphinxRendererNtemplate_path'Sequence[str | os.PathLike[str]] | Noner   r   c                   s&   |d u rt jtd}t | d S )N	templates)r3   r   joinr
   r7   r   )r   rE   r8   r   r   r   <   s   zSphinxRenderer.__init__r:   r;   r<   r!   r"   r#   c                 C  s   t ||S r%   )r/   r?   )r:   r<   r"   r   r   r   r?   C   s   zSphinxRenderer.render_from_filer%   )rE   rF   r   r   r@   rA   r   r   r8   r   rD   ;   s
    rD   c                      $   e Zd Z		d
d fdd	Z  ZS )LaTeXRendererNrE   rF   latex_engine
str | Noner   r   c                   s   |d u rt jtddg}t | ttj|d}|| j	j
d< || j	j
d< tj| j	j
d< d| j	_d| j	_d	| j	_d| j	_d
| j	_d| j	_d S )NrG   latex)rK   eescapeeabbrz<%=z%>z<%z<#z#>)r3   r   rH   r
   r7   r   r   r   rO   r   r   escape_abbrvariable_start_stringvariable_end_stringblock_start_stringblock_end_stringcomment_start_stringcomment_end_string)r   rE   rK   rO   r8   r   r   r   K   s   zLaTeXRenderer.__init__NN)rE   rF   rK   rL   r   r   r,   r-   r.   r   rC   r   r   r8   r   rJ   J       rJ   c                      rI   )ReSTRendererNrE   rF   languagerL   r   r   c                   sH   t  | | jj|d tj| jjd< tj| jjd< tj| jjd< d S )N)r\   rN   rO   heading)r7   r   r   extendr   rO   r   r]   )r   rE   r\   r8   r   r   r   e   s
   zReSTRenderer.__init__rX   )rE   rF   r\   rL   r   r   rY   r   r   r8   r   r[   d   rZ   r[   c                   @  s$   e Zd ZdZdd	d
ZdddZdS )SphinxTemplateLoaderz(A loader supporting template inheritanceconfdirstr | os.PathLike[str]templates_pathsr1   system_templates_pathsr   r   c                 C  s`   g | _ g | _|D ]}tt||}| j | q|D ]}t|}| j | | j| qd S r%   )loaders
sysloadersr   r   rH   append)r   r`   rb   rc   templates_pathr   r   r   r   r   x   s   zSphinxTemplateLoader.__init__environmentr   templater!   #tuple[str, str, Callable[[], bool]]c              	   C  sZ   | dr| j}|dd  }n| j}|D ]}z	|||W   S  ty(   Y qw t|)N!   )
startswithre   rd   
get_sourcer   )r   rh   ri   rd   r   r   r   r   rn      s   
zSphinxTemplateLoader.get_sourceN)r`   ra   rb   r1   rc   r1   r   r   )rh   r   ri   r!   r   rj   )r,   r-   r.   __doc__r   rn   r   r   r   r   r_   u   s    
r_   )$ro   
__future__r   r3   	functoolsr   r   typingr   r   jinja2r   jinja2.loadersr   jinja2.sandboxr	   sphinxr
   sphinx.jinja2gluer   sphinx.localer   sphinx.utilr   r   collections.abcr   r   jinja2.environmentr   r   r/   rD   rJ   r[   r_   r   r   r   r   <module>   s,    