U
    \ShS                     @  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 ddlmZ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)AnyCallable)TemplateNotFound)Environment)
BaseLoader)SandboxedEnvironment)package_dir)SphinxFileSystemLoader)get_translator)rst	texescapec                   @  sB   e Zd ZddddddZdddd	d
dZddddddZdS )BaseRendererNzBaseLoader | NoneNone)loaderreturnc                 C  s.   t |dgd| _t| jjd< | jt  d S )Nzjinja2.ext.i18n)r   
extensionsrepr)r
   envr   filtersZinstall_gettext_translationsr   )selfr    r   G/root/rtd-docs/venv/lib/python3.8/site-packages/sphinx/util/template.py__init__   s    zBaseRenderer.__init__strdict[str, Any])template_namecontextr   c                 C  s   | j ||S N)r   Zget_templaterender)r   r   r   r   r   r   r!      s    zBaseRenderer.render)sourcer   r   c                 C  s   | j ||S r    )r   Zfrom_stringr!   )r   r"   r   r   r   r   render_string   s    zBaseRenderer.render_string)N)__name__
__module____qualname__r   r!   r#   r   r   r   r   r      s   r   c                      s:   e Zd Zddd fddZeddddd	d
Z  ZS )FileRendererzstr | list[str]r   )search_pathr   c                   s8   t |tr|g}nttd |}t|}t | d S r    )
isinstancer   listfilterr   superr   )r   r(   r   	__class__r   r   r   #   s
    
zFileRenderer.__init__r   r   filenamer   r   c                 C  s(   t j|}t j|}| |||S r    )osr   dirnamebasenamer!   )clsr0   r   r2   r3   r   r   r   render_from_file-   s    zFileRenderer.render_from_filer$   r%   r&   r   classmethodr5   __classcell__r   r   r-   r   r'   "   s   
r'   c                      s<   e Zd Zdddd fddZedddd	d
dZ  ZS )SphinxRendererNNone | str | list[str]r   )template_pathr   c                   s&   |d krt jtd}t | d S )N	templates)r1   r   joinr   r,   r   )r   r;   r-   r   r   r   5   s    zSphinxRenderer.__init__r   r   r/   c                 C  s   t ||S r    )r'   r5   )r4   r0   r   r   r   r   r5   :   s    zSphinxRenderer.render_from_file)Nr6   r   r   r-   r   r9   4   s   r9   c                      s(   e Zd Zddddd fddZ  ZS )LaTeXRendererN
str | Noner   )r;   latex_enginer   c                   s   |d krt jtdd}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 )Nr<   latex)r@   eescapeZeabbrz<%=z%>z<%z<#z#>)r1   r   r=   r   r,   r   r   r   rC   r   r   Zescape_abbrZvariable_start_stringZvariable_end_stringZblock_start_stringZblock_end_stringZcomment_start_stringZcomment_end_string)r   r;   r@   rC   r-   r   r   r   @   s    zLaTeXRenderer.__init__)NNr$   r%   r&   r   r8   r   r   r-   r   r>   ?   s      r>   c                      s(   e Zd Zddddd fddZ  ZS )	ReSTRendererNr:   r?   r   )r;   languager   c                   sH   t  | | jj|d tj| jjd< tj| jjd< tj| jjd< d S )N)rF   rB   rC   heading)r,   r   r   extendr   rC   r   rG   )r   r;   rF   r-   r   r   r   X   s
    zReSTRenderer.__init__)NNrD   r   r   r-   r   rE   W   s      rE   c                   @  s6   e Zd ZdZdddddddZddd	d
ddZdS )SphinxTemplateLoaderz(A loader supporting template inheritancer   z	list[str]r   )confdirtemplates_pathssystem_templates_pathsr   c                 C  s`   g | _ g | _|D ] }tt||}| j | q|D ]$}t|}| j | | j| q6d S r    )loaders
sysloadersr   r   r=   append)r   rJ   rK   rL   Ztemplates_pathr   r   r   r   r   i   s    zSphinxTemplateLoader.__init__r   ztuple[str, str, Callable])environmenttemplater   c              	   C  sb   | dr| j}|dd  }n| j}|D ],}z|||W   S  tk
rR   Y q(X q(t|d S )N!   )
startswithrN   rM   
get_sourcer   )r   rP   rQ   rM   r   r   r   r   rU   w   s    
zSphinxTemplateLoader.get_sourceN)r$   r%   r&   __doc__r   rU   r   r   r   r   rI   f   s   rI   )!rV   
__future__r   r1   	functoolsr   r   typingr   r   Zjinja2r   Zjinja2.environmentr   Zjinja2.loadersr	   Zjinja2.sandboxr
   Zsphinxr   Zsphinx.jinja2gluer   Zsphinx.localer   Zsphinx.utilr   r   r   r'   r9   r>   rE   rI   r   r   r   r   <module>   s&   