
    }c                     P   d Z ddlZddlmZ ddlmZ ddlmZmZ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 ddlmZ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!dS )z'Templates utility functions for Sphinx.    N)partial)path)CallableDictListTupleUnion)TemplateNotFound)Environment)
BaseLoader)SandboxedEnvironment)package_dir)SphinxFileSystemLoader)get_translator)rst	texescapec                   H    e Zd Zd
deddfdZdededefdZdededefd	ZdS )BaseRendererNloaderreturnc                     t          |dg          | _        t          | j        j        d<   | j                            t                                 d S )Nzjinja2.ext.i18n)r   
extensionsrepr)r   envr   filtersinstall_gettext_translationsr   )selfr   s     4lib/python3.11/site-packages/sphinx/util/template.py__init__zBaseRenderer.__init__   sK    'vCTBUVVV#' --n.>.>?????    template_namecontextc                 \    | j                             |                              |          S N)r   get_templaterender)r   r!   r"   s      r   r&   zBaseRenderer.render   s&    x$$]33::7CCCr    sourcec                 \    | j                             |                              |          S r$   )r   from_stringr&   )r   r'   r"   s      r   render_stringzBaseRenderer.render_string   s&    x##F++227;;;r    r$   )	__name__
__module____qualname__r   r   strr   r&   r*    r    r   r   r      s        @ @z @T @ @ @ @
DC D$ D3 D D D D<C <$ <3 < < < < < <r    r   c                   h     e Zd Zdeeee         f         ddf fdZedededefd            Z	 xZ
S )FileRenderersearch_pathr   Nc                     t          |t                    r|g}nt          t          d |                    }t	          |          }t                                          |           d S r$   )
isinstancer.   listfilterr   superr   )r   r2   r   	__class__s      r   r   zFileRenderer.__init__!   sb    k3'' 	:&-KK vdK8899K'44     r    filenamer"   c                     t           j                            |          }t           j                            |          } | |                              ||          S r$   )osr   dirnamebasenamer&   )clsr9   r"   r<   r=   s        r   render_from_filezFileRenderer.render_from_file+   sH    '//(++7##H--s7||""8W555r    r+   r,   r-   r	   r.   r   r   classmethodr   r?   __classcell__r8   s   @r   r1   r1       s        !E#tCy.$9 !d ! ! ! ! ! ! 6 6d 6s 6 6 6 [6 6 6 6 6r    r1   c                   j     e Zd Zddeeee         f         ddf fdZedededefd            Z	 xZ
S )	SphinxRendererNtemplate_pathr   c                     |%t           j                            t          d          }t	                                          |           d S )N	templates)r;   r   joinr   r7   r   )r   rF   r8   s     r   r   zSphinxRenderer.__init__3   s?     	CGLLkBBM'''''r    r9   r"   c                 8    t                               ||          S r$   )r1   r?   )r>   r9   r"   s      r   r?   zSphinxRenderer.render_from_file8   s    ,,Xw???r    r$   r@   rC   s   @r   rE   rE   2   s        ( (eCcN&; (t ( ( ( ( ( (
 @ @d @s @ @ @ [@ @ @ @ @r    rE   c                   .     e Zd Zddededdf fdZ xZS )LaTeXRendererNrF   latex_enginer   c                    |&t           j                            t          dd          }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	        _        d S )NrH   latex)rM   eescapeeabbrz<%=z%>z<%z<#z#>)r;   r   rI   r   r7   r   r   r   rQ   r   r   escape_abbrvariable_start_stringvariable_end_stringblock_start_stringblock_end_stringcomment_start_stringcomment_end_string)r   rF   rM   rQ   r8   s       r   r   zLaTeXRenderer.__init__>   s     	LGLLk7KKM''' )EEE &%+"$-$9! */&'+$&*#$(!(,%&*###r    NN)r+   r,   r-   r.   r   rB   rC   s   @r   rL   rL   =   sW        + +c + +t + + + + + + + + + +r    rL   c                   J     e Zd Zddeeee         f         deddf fdZ xZS )ReSTRendererNrF   languager   c                    t                                          |           | j                            |           t          j        | j        j        d<   t          j        | j        j        d<   t          j        | j        j        d<   d S )N)r]   rP   rQ   heading)r7   r   r   extendr   rQ   r   r_   )r   rF   r]   r8   s      r   r   zReSTRenderer.__init__T   sn    ''' 	*** !$
%(Z"&)k###r    rZ   )r+   r,   r-   r	   r.   r   r   rB   rC   s   @r   r\   r\   S   se        	2 	2eCcN&; 	2c 	2]a 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2r    r\   c            	       h    e Zd ZdZdedee         dee         ddfdZded	edeeee	f         fd
Z
dS )SphinxTemplateLoaderz(A loader supporting template inheritanceconfdirtemplates_pathssystem_templates_pathsr   Nc                 4   g | _         g | _        |D ]>}t          t          j        ||                    }| j                             |           ?|D ]E}t          |          }| j                             |           | j                            |           Fd S r$   )loaders
sysloadersr   r   rI   append)r   rc   rd   re   templates_pathr   s         r   r   zSphinxTemplateLoader.__init__c   s    - 	( 	(N+DIg~,N,NOOFL''''4 	+ 	+N+N;;FL'''O""6****	+ 	+r    environmenttemplatec                     |                     d          r| j        }|dd          }n| j        }|D ]*}	 |                    ||          c S # t          $ r Y 'w xY wt	          |          )N!   )
startswithrh   rg   
get_sourcer
   )r   rk   rl   rg   r   s        r   rq   zSphinxTemplateLoader.get_sourceq   s    s## 	#oG|HHlG 	 	F((h?????#   x(((s   A
AA)r+   r,   r-   __doc__r.   r   r   r   r   r   rq   r/   r    r   rb   rb   `   s        22+ +d3i +)-c+7;+ + + +)k )S )U3PSU]K]E^ ) ) ) ) ) )r    rb   )"rr   r;   	functoolsr   r   typingr   r   r   r   r	   jinja2r
   jinja2.environmentr   jinja2.loadersr   jinja2.sandboxr   sphinxr   sphinx.jinja2gluer   sphinx.localer   sphinx.utilr   r   r   r1   rE   rL   r\   rb   r/   r    r   <module>r}      s   - - 				             5 5 5 5 5 5 5 5 5 5 5 5 5 5 # # # # # # * * * * * * % % % % % % / / / / / /       4 4 4 4 4 4 ( ( ( ( ( ( & & & & & & & &
< 
< 
< 
< 
< 
< 
< 
<6 6 6 6 6< 6 6 6$@ @ @ @ @\ @ @ @+ + + + +N + + +,
2 
2 
2 
2 
2> 
2 
2 
2) ) ) ) ): ) ) ) ) )r    