
    FeZ                    >   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	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 ddlmZ  G d d      Z G d de      Z G d de      Z  G d de       Z! G d de       Z" G d de      Z#y)z'Templates utility functions for Sphinx.    )annotationsN)partial)path)TYPE_CHECKINGAnyCallable)TemplateNotFound)
BaseLoader)SandboxedEnvironment)package_dir)SphinxFileSystemLoader)get_translator)rst	texescape)Sequence)Environmentc                  &    e Zd ZdddZddZddZy)	BaseRendererNc                    t        |dg      | _        t        | j                  j                  d<   | j                  j	                  t                      y )Nzjinja2.ext.i18n)loader
extensionsrepr)r   envr   filtersinstall_gettext_translationsr   )selfr   s     6/usr/lib/python3/dist-packages/sphinx/util/template.py__init__zBaseRenderer.__init__   s=    'vCTBUV#' --n.>?    c                V    | j                   j                  |      j                  |      S N)r   get_templaterender)r   template_namecontexts      r   r#   zBaseRenderer.render   s"    xx$$]3::7CCr   c                V    | j                   j                  |      j                  |      S r!   )r   from_stringr#   )r   sourcer%   s      r   render_stringzBaseRenderer.render_string"   s"    xx##F+227;;r   r!   )r   zBaseLoader | NonereturnNone)r$   strr%   dict[str, Any]r*   r,   )r(   r,   r%   r-   r*   r,   )__name__
__module____qualname__r   r#   r)    r   r   r   r      s    @
D<r   r   c                  2     e Zd Zd fdZedd       Z xZS )FileRendererc                    t        |t        t        j                  f      r|g}nt	        t        d |            }t        |      }t        | !  |       y r!   )	
isinstancer,   osPathLikelistfilterr   superr   )r   search_pathr   	__class__s      r   r   zFileRenderer.__init__'   sG    kC#56&-K vdK89K'4 r   c                    t         j                  j                  |      }t         j                  j                  |      } | |      j	                  ||      S r!   )r6   r   dirnamebasenamer#   )clsfilenamer%   r>   r?   s        r   render_from_filezFileRenderer.render_from_file1   s?    ''//(+77##H-7|""8W55r   )r;    Sequence[str | os.PathLike[str]]r*   r+   rA   r,   r%   r-   r*   r,   r.   r/   r0   r   classmethodrB   __classcell__r<   s   @r   r3   r3   &   s    ! 6 6r   r3   c                  4     e Zd Zdd fdZedd       Z xZS )SphinxRendererc                p    |$t         j                  j                  t        d      }t        |   |       y )N	templates)r6   r   joinr   r:   r   )r   template_pathr<   s     r   r   zSphinxRenderer.__init__9   s*     GGLLkBM'r   c                .    t         j                  ||      S r!   )r3   rB   )r@   rA   r%   s      r   rB   zSphinxRenderer.render_from_file>   s    ,,Xw??r   r!   )rN   'Sequence[str | os.PathLike[str]] | Noner*   r+   rD   rE   rH   s   @r   rJ   rJ   8   s    (
 @ @r   rJ   c                  ,     e Zd Z	 	 d	 	 	 d fdZ xZS )LaTeXRendererc                (   |&t         j                  j                  t        dd      g}t        |   |       t        t        j                  |      }|| j                  j                  d<   || j                  j                  d<   t        j                  | j                  j                  d<   d| j                  _        d| j                  _        d	| j                  _        d| j                  _        d
| j                  _        d| j                  _        y )NrL   latex)latex_engineeescapeeabbrz<%=z%>z<%z<#z#>)r6   r   rM   r   r:   r   r   r   rW   r   r   escape_abbrvariable_start_stringvariable_end_stringblock_start_stringblock_end_stringcomment_start_stringcomment_end_string)r   rN   rU   rW   r<   s       r   r   zLaTeXRenderer.__init__D   s     WW\\+{GLMM' ))E &%+"$-$9$9! */&'+$&*#$(!(,%&*#r   NN)rN   rP   rU   
str | Noner*   r+   r.   r/   r0   r   rG   rH   s   @r   rR   rR   C   s#    PT,0+)+59+ +r   rR   c                  ,     e Zd Z	 	 d	 	 	 d fdZ xZS )ReSTRendererc                F   t         |   |       | j                  j                  |       t        j
                  | j                  j                  d<   t        j
                  | j                  j                  d<   t        j                  | j                  j                  d<   y )N)languagerV   rW   heading)r:   r   r   extendr   rW   r   rg   )r   rN   rf   r<   s      r   r   zReSTRenderer.__init__[   sn    ' 	* !$

%(ZZ"&)kk#r   r`   )rN   rP   rf   ra   r*   r+   rb   rH   s   @r   rd   rd   Z   s#    PT(,
2%
215
2 
2r   rd   c                  ,    e Zd ZdZ	 	 	 	 	 	 ddZddZy)SphinxTemplateLoaderz(A loader supporting template inheritancec                2   g | _         g | _        |D ]<  }t        t        j                  ||            }| j                   j                  |       > |D ]C  }t        |      }| j                   j                  |       | j                  j                  |       E y r!   )loaders
sysloadersr   r   rM   append)r   confdirtemplates_pathssystem_templates_pathstemplates_pathr   s         r   r   zSphinxTemplateLoader.__init__k   s     - 	(N+DIIg~,NOFLL'	( 5 	+N+N;FLL'OO""6*	+r   c                    |j                  d      r| j                  }|dd  }n| j                  }|D ]  }	 |j                  ||      c S  t	        |      # t        $ r Y /w xY w)N!   )
startswithrm   rl   
get_sourcer	   )r   environmenttemplaterl   r   s        r   rw   zSphinxTemplateLoader.get_sourcez   su    s#ooG|HllG 	F((h??	
 x(( $ s   A	A"!A"N)ro   zstr | os.PathLike[str]rp   rC   rq   rC   r*   r+   )rx   r   ry   r,   r*   ztuple[str, str, Callable])r.   r/   r0   __doc__r   rw   r1   r   r   rj   rj   h   s'    2+"B+)I+NR+)r   rj   )$rz   
__future__r   r6   	functoolsr   r   typingr   r   r   jinja2r	   jinja2.loadersr
   jinja2.sandboxr   sphinxr   sphinx.jinja2gluer   sphinx.localer   sphinx.utilr   r   collections.abcr   jinja2.environmentr   r   r3   rJ   rR   rd   rj   r1   r   r   <module>r      s    - " 	   / / # % /  4 ( &(.
< 
<6< 6$@\ @+N +.2> 2): )r   