
    Ri                    Z   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	 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 ddlmZ edz  Zedz  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)TemplateNotFound)
BaseLoader)SandboxedEnvironment)package_dir)SphinxFileSystemLoader)get_translator)rst	texescape)CallableSequence)Any)Environment	templateslatexc                  &    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     L/home/agent/.friday_env/lib/python3.12/site-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                  B     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                r    t        |      } | |j                  f      j                  |j                  |      S r#   )r   parentr%   nameclsfilenamer'   s      r   render_from_filezFileRenderer.render_from_file6   s0     >HOO%&--hmmWEEr!   )r=    Sequence[str | os.PathLike[str]]r,   r-   rC   ztype[FileRenderer]rD   str | os.PathLike[str]r'   r/   r,   r.   r0   r1   r2   r    classmethodrE   __classcell__r>   s   @r   r5   r5   +   sF    ! FF(F  F 
	F Fr!   r5   c                  L     e Zd Z	 d	 	 	 d fdZe	 	 	 	 	 	 	 	 dd       Z xZS )SphinxRendererc                6    |t         f}t        | 	  |       y r#   )_TEMPLATES_PATHr<   r    )r   template_pathr>   s     r   r    zSphinxRenderer.__init__A   s       ,.M'r!   c                .    t         j                  ||      S r#   )r5   rE   rB   s      r   rE   zSphinxRenderer.render_from_fileH   s     ,,Xw??r!   r#   )rQ   'Sequence[str | os.PathLike[str]] | Noner,   r-   rG   rI   rL   s   @r   rN   rN   @   sY    GK(D(	( @@(@  @ 
	@ @r!   rN   c                  0     e Zd Z	 	 d	 	 	 	 	 d fdZ xZS )LaTeXRendererc                   |t         f}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 )
N)latex_engineeescapeeabbrz<%=z%>z<%z<#z#>)_LATEX_TEMPLATES_PATHr<   r    r   r   rY   r   r   escape_abbrvariable_start_stringvariable_end_stringblock_start_stringblock_end_stringcomment_start_stringcomment_end_string)r   rQ   rW   rY   r>   s       r   r    zLaTeXRenderer.__init__R   s    
  24M' ))E &%+"$-$9$9! */&'+$&*#$(!(,%&*#r!   NN)rQ   rS   rW   
str | Noner,   r-   r0   r1   r2   r    rK   rL   s   @r   rU   rU   Q   s3     BF#'+>+ !+ 
	+ +r!   rU   c                  0     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)languagerX   rY   heading)r<   r    r   extendr   rY   r   rj   )r   rQ   ri   r>   s      r   r    zReSTRenderer.__init__l   sp    
 	' 	* !$

%(ZZ"&)kk#r!   rc   )rQ   rS   ri   rd   r,   r-   re   rL   s   @r   rg   rg   k   s3     BF#2>2 2 
	2 2r!   rg   c                  <    e Zd ZdZ	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 ddZy)SphinxTemplateLoaderz(A loader supporting template inheritancec                &   g | _         g | _        t        |      }|D ]+  }t        ||z        }| j                   j	                  |       - |D ]C  }t        |      }| j                   j	                  |       | j                  j	                  |       E y r#   )loaders
sysloadersr   r   append)r   confdirtemplates_pathssystem_templates_pathsconf_dirtemplates_pathr   s          r   r    zSphinxTemplateLoader.__init__   s     =- 	(N+H~,EFF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!   )
startswithrp   ro   
get_sourcer   )r   environmenttemplatero   r   s        r   r{   zSphinxTemplateLoader.get_source   sw    
 s#ooG|HllG 	F((h??	
 x(( $ s   A	A"!A"N)rr   rH   rs   rF   rt   rF   r,   r-   )r|   r   r}   r.   r,   z#tuple[str, str, Callable[[], bool]])r0   r1   r2   __doc__r    r{   r3   r!   r   rm   rm   |   sR    2+'+ :+ !A	+
 
+&) ) ) 
-	)r!   rm   )'r~   
__future__r   r8   	functoolsr   pathlibr   typingr   jinja2r   jinja2.loadersr   jinja2.sandboxr	   sphinxr
   sphinx.jinja2gluer   sphinx.localer   sphinx.utilr   r   collections.abcr   r   r   jinja2.environmentr   rP   r[   r   r5   rN   rU   rg   rm   r3   r!   r   <module>r      s    - " 	     # % /  4 ( &2.+''1 < <F< F*@\ @"+N +42> 2"'): ')r!   