
    }c                        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mZmZ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  	 ddlm!Z! n# e"$ r	 ddlm#Z! Y nw xY werddl$m%Z% de&de'fdZ(de&de)fdZ*dee)e&f         de&fdZ+dede)dee         fdZ,dede&de&fdZ- G d d          Z.e!de
de&ded ede&f
d!            Z/ G d" d#e          Z0 G d$ d%ee          Z1dS )&z+Glue code for the jinja2 templating engine.    N)path)pformat)TYPE_CHECKINGAnyCallableDictIteratorListTupleUnion)
BaseLoaderFileSystemLoaderTemplateNotFound)Environment)SandboxedEnvironment)open_if_exists)TemplateBridge)Theme)logging)mtimes_of_files)pass_context)contextfunction)Buildervalreturnc                 v    t          | t                    r|                                 dv S t          |           S )N)true1yeson)
isinstancestrlowerboolr   s    1lib/python3.11/site-packages/sphinx/jinja2glue.py_toboolr'      s4    #s 9yy{{88899    c                 D    	 t          |           S # t          $ r Y dS w xY wNr   )int
ValueErrorr%   s    r&   _tointr-   !   s4    3xx   qqs    
c                     | dS t          |                                           rt          |           dk    rdnd| z  S | S )a  
    Make val a css dimension. In particular the following transformations
    are performed:

    - None -> 'initial' (default CSS value)
    - 0 -> '0'
    - ints and string representations of ints are interpreted as pixels.

    Everything else is returned unchanged.
    Ninitialr   0z%spx)r"   isdigitr+   r%   s    r&   _todimr2   (   sM      6y	S				 6#hh!m5ss#5Jr(   valuesslicesc              #   r  K   t          |           }d}| D ]#}|dt          |d         d                   z   z  }$||z  }d}t          |          D ]f}d}|}	||dz   k    rt          |          }n;| |d          D ]0}|dt          |d         d                   z   z  }|dz  }||k    r n1||	|         V  gd S )Nr      )listlenrange)
r3   r4   seqlengthvalueitems_per_sliceoffsetslice_numbercountstarts
             r&   _slice_indexrB   :   s     
v,,CF ' '!c%(1+&&&&&OFf    \A%% 	XXFF  Sq!----!O+ E%,   r(   contextkeyc                 n    d| vr
i | j         d<   |r$|| j         d         vrd| j         d         |<   d|z  S dS )z+Helper to output each access key only once._accesskeysr6   zaccesskey="%s" )vars)rC   rD   s     r&   	accesskeyrI   O   sW    G# )&(]#
 &s',}55 &+,]#C(#%%2r(   c                   2    e Zd ZddZdefdZdefdZeZdS )idgenr   Nc                     d| _         d S r*   idselfs    r&   __init__zidgen.__init__Z   s    r(   c                     | j         S NrM   rO   s    r&   currentzidgen.current]   s	    wr(   c                 0    | xj         dz  c_         | j         S )Nr6   rM   rO   s    r&   __next__zidgen.__next__`   s    1wr(   )r   N)__name__
__module____qualname__rQ   r+   rT   rV   next r(   r&   rK   rK   Y   s_               #     DDDr(   rK   messageargskwargsc                     d| v r4|                      d          |                      dd          z   }d|d|}t          j        d          } |j        |g|R i | dS )Npagenamefile_suffixrG   zin rendering z: zsphinx.themes)getr   	getLoggerwarning)rC   r\   r]   r^   filenameloggers         r&   rd   rd   f   s|    W >;;z**W[[-K-KK+388WW=//FFN7,T,,,V,,,2r(   c            	       8    e Zd ZdZdededeeeef         fdZdS )SphinxFileSystemLoaderzd
    FileSystemLoader subclass that is not so strict about '..'  entries in
    template names.
    environmenttemplater   c                 |   | j         D ]}t          t          j        ||                    t	                    }|6|5  |                                                    | j                  }d d d            n# 1 swxY w Y   t          j	                  dt          ffd}||fc S t          |          )Nr   c                  X    	 t          j                   k    S # t          $ r Y dS w xY w)NF)r   getmtimeOSError)re   mtimes   r&   uptodatez3SphinxFileSystemLoader.get_source.<locals>.uptodate   s?    !=22e;; ! ! ! 55!s    
)))
searchpathr"   pathlibPathr   readdecodeencodingr   rm   r$   r   )	rP   ri   rj   rq   fcontentsrp   re   ro   s	          @@r&   
get_sourcez!SphinxFileSystemLoader.get_sourcev   s   / 	0 	0J7<
H==>>Hx((A  : :6688??4=99: : : : : : : : : : : : : : : M(++E!d ! ! ! ! ! ! !
 Xx////x(((s   -A;;A?	A?	N)	rW   rX   rY   __doc__r   r"   r   r   ry   r[   r(   r&   rh   rh   p   sU         
)k )S )U3PSU]K]E^ ) ) ) ) ) )r(   rh   c            	           e Zd ZdZddddede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efdZded	edeeeef         fdZdS )BuiltinTemplateLoaderzK
    Interfaces the rendering environment of jinja2 for use in Sphinx.
    Nbuilderr   themedirsr   c                    |r$|                                 }|d |D             z   }n%|rt          |          }t          |          }ng }g }t          j        j                  | _        j        j        r&fdj        j        D             }||dd<   ||dd<   || _        d |D             | _        j        j	        d u}|rdgng }t          | |          | _        t          | j        j        d<   t          | j        j        d<   t          | j        j        d	<   t           | j        j        d
<   t#          t$                    | j        j        d<   t(          | j        j        d<   t#          t*                    | j        j        d<   t,          | j        j        d<   |r&| j                            j        j	                   d S d S )Nc                 8    g | ]}t          j        |d           S )z..)r   join).0ps     r&   
<listcomp>z.BuiltinTemplateLoader.init.<locals>.<listcomp>   s$    &M&M&MatyD'9'9&M&M&Mr(   c                 D    g | ]}t          j        j        |          S r[   )r   r   confdir)r   tpr}   s     r&   r   z.BuiltinTemplateLoader.init.<locals>.<listcomp>   s=     "K "K "K&( #')GOR"@"@ "K "K "Kr(   r   c                 ,    g | ]}t          |          S r[   )rh   )r   xs     r&   r   z.BuiltinTemplateLoader.init.<locals>.<listcomp>   s!    GGGa.q11GGGr(   zjinja2.ext.i18n)loader
extensionstobooltointtodimslice_indexdebugrd   rI   rK   )get_theme_dirsr7   r8   configtemplates_pathtemplatepathlen	pathchainloadersapp
translatorr   ri   r'   filtersr-   r2   rB   r   r   globalsrd   rI   rK   install_gettext_translations)	rP   r}   r~   r   r   loaderchaincfg_templates_pathuse_i18nr   s	    `       r&   initzBuiltinTemplateLoader.init   s    
	,,..I#&M&M9&M&M&MMKK 	T

It**KKIK  #7>#@AA>( 	2"K "K "K "K,3N,I"K "K "K/IacN1K! # HG;GGG;)5,4<'(("
/t;EG G G-4 *,2 ),2 )2> /,8,A,A ).5 +0<Y0G0G -,1 ) 	R99'+:PQQQQQ	R 	Rr(   rj   rC   c                 \    | j                             |                              |          S rS   )ri   get_templaterender)rP   rj   rC   s      r&   r   zBuiltinTemplateLoader.render   s'    ,,X66==gFFFr(   sourcec                 \    | j                             |                              |          S rS   )ri   from_stringr   )rP   r   rC   s      r&   render_stringz#BuiltinTemplateLoader.render_string   s'    ++F33::7CCCr(   c                 F    t          t          | j        d                    S )Nz.html)maxr   r   rO   s    r&   newest_template_mtimez+BuiltinTemplateLoader.newest_template_mtime   s    ?4>7;;<<<r(   ri   c                     | j         }|                    d          r|| j        d          }|dd          }|D ]*}	 |                    ||          c S # t          $ r Y 'w xY wt	          |          )N!r6   )r   
startswithr   ry   r   )rP   ri   rj   r   r   s        r&   ry   z BuiltinTemplateLoader.get_source   s    ,s## 	$d2334G|H 	 	F((h?????#   x(((s   A
A A )NN)rW   rX   rY   rz   r   r
   r"   r   r   r   r   floatr   r   r   r   ry   r[   r(   r&   r|   r|      s        )R )RI )Re )R$s) )RW[ )R )R )R )RVGs GT Gc G G G GDC D$ D3 D D D D=u = = = =
)k )S )U3PSU]K]E^ ) ) ) ) ) )r(   r|   )2rz   rr   osr   pprintr   typingr   r   r   r   r	   r
   r   r   jinja2r   r   r   jinja2.environmentr   jinja2.sandboxr   jinja2.utilsr   sphinx.applicationr   sphinx.themingr   sphinx.utilr   sphinx.util.osutilr   r   ImportErrorr   sphinx.buildersr   r"   r$   r'   r+   r-   r2   rB   rI   rK   rd   rh   r|   r[   r(   r&   <module>r      s   1 1              S S S S S S S S S S S S S S S S S S S S A A A A A A A A A A * * * * * * / / / / / / ' ' ' ' ' ' - - - - - -                   . . . . . .7))))))) 7 7 7666666667  (''''''          c3h C    $   s  x~        *s      
 
 
 
 
 
 
 
 T C  s s    ) ) ) ) )- ) ) )4H) H) H) H) H)NJ H) H) H) H) H)s   A# #A10A1