
    QjfB                    D   d Z ddlm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mZ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 erddlmZ ddlmZ ddlmZ ddl m!Z! ddZ"ddZ#ddZ$d dZ%d!dZ& G d d      Z'ed"d       Z( G d de      Z) G d dee      Z*y)#z+Glue code for the jinja2 templating engine.    )annotations)path)pformat)TYPE_CHECKINGAnyCallable)
BaseLoaderFileSystemLoaderTemplateNotFound)SandboxedEnvironment)open_if_existspass_context)TemplateBridge)logging)mtimes_of_files)Iterator)Environment)Builder)Themec                \    t        | t              r| j                         dv S t        |       S )N)true1yeson)
isinstancestrlowerboolvals    1lib/python3.12/site-packages/sphinx/jinja2glue.py_toboolr"      s(    #syy{8889    c                8    	 t        |       S # t        $ r Y yw xY wNr   )int
ValueErrorr   s    r!   _tointr(       s"    3x s   
 	c                h    | yt        |       j                         rt        |       dk(  rdS 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.
    initialr   0z%spx)r   isdigitr&   r   s    r!   _todimr-   '   s:     {	S			#h!ms5#5Jr#   c              #  2  K   | j                         }d}| D ]  }|dt        |d   d         z   z  } ||z  }d}t        |      D ]N  }d}|}	||dz   k(  rt        |      }n-| |d  D ]%  }|dt        |d   d         z   z  }|dz  }||k\  s% n ||	|  P y w)Nr      )copylenrange)
valuesslicesseqlengthvalueitems_per_sliceoffsetslice_numbercountstarts
             r!   _slice_indexr=   9   s     
++-CF '!c%(1+&&&'&OFf  \A%%XF Sq!---!O+	
 % s   BB
Bc                ~    d| vri | j                   d<   |r(|| j                   d   vrd| j                   d   |<   d|z  S y)z+Helper to output each access key only once._accesskeysr/   zaccesskey="%s" )vars)contextkeys     r!   	accesskeyrD   N   sL    G#&(]#
s',,}55+,]#C(#%%r#   c                  (    e Zd ZddZddZddZeZy)idgenc                    d| _         y r%   idselfs    r!   __init__zidgen.__init__Y   s	    r#   c                    | j                   S NrH   rJ   s    r!   currentzidgen.current\   s    wwr#   c                D    | xj                   dz  c_         | j                   S )Nr/   rH   rJ   s    r!   __next__zidgen.__next___   s    1wwr#   N)returnNone)rR   r&   )__name__
__module____qualname__rL   rO   rQ   next r#   r!   rF   rF   X   s     Dr#   rF   c                    d| v r,| j                  d      | j                  dd      z   }d| d| }t        j                  d      } |j                  |g|i | y)Npagenamefile_suffixr@   zin rendering z: zsphinx.themes)getr   	getLoggerwarning)rB   messageargskwargsfilenameloggers         r!   r^   r^   f   se    W;;z*W[[-KK!(2gY7/FFNN7,T,V,r#   c                      e Zd ZdZddZy)SphinxFileSystemLoaderzd
    FileSystemLoader subclass that is not so strict about '..'  entries in
    template names.
    c                J   | j                   D ]'  }t        j                  ||      t              }|' n t	        |      |5  |j                         j                  | j                        }d d d        t        j                        dfd}|fS # 1 sw Y   *xY w)Nc                 T    	 t        j                         k(  S # t        $ r Y yw xY w)NF)r   getmtimeOSError)rb   mtimes   r!   uptodatez3SphinxFileSystemLoader.get_source.<locals>.uptodate   s.    }}X.%77 s    	'')rR   r   )	
searchpathr   joinr   r   readdecodeencodingrh   )	rK   environmenttemplaterl   fcontentsrk   rb   rj   s	          @@r!   
get_sourcez!SphinxFileSystemLoader.get_sourcev   s    // 	-JyyX6Hx(A}		- #8,, 	6vvxt}}5H	6 h'	 8++	6 	6s   *BB"Nrq   r   rr   r   rR   ztuple[str, str, Callable])rT   rU   rV   __doc__ru   rX   r#   r!   re   re   p   s    
,r#   re   c                  L    e Zd ZdZ	 	 d	 	 	 	 	 	 	 d	dZd
dZddZddZddZy)BuiltinTemplateLoaderzK
    Interfaces the rendering environment of jinja2 for use in Sphinx.
    Nc                   |r8|j                         }||D cg c]  }t        j                  |d       c}z   }n|rt        |      }t        |      }ng }g }t	        |j
                  j                        | _        |j
                  j                  rK|j
                  j                  D cg c]"  }t        j                  |j                  |      $ }}||dd ||dd || _	        |D 	cg c]  }	t        |	       c}	| _        |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	<   t0        | j                  j.                  d
<   t+        t2              | j                  j.                  d<   t4        | j                  j.                  d<   |
r0| j                  j7                  |j                  j                         y y c c}w c c}w c c}	w )Nz..r   zjinja2.ext.i18n)loader
extensionstobooltointtodimslice_indexdebugr^   rD   rF   )get_theme_dirsr   rm   listr1   configtemplates_pathtemplatepathlenconfdir	pathchainre   loadersapp
translatorr   rq   r"   filtersr(   r-   r=   r   r   globalsr^   rD   rF   install_gettext_translations)rK   builderthemedirsr   ploaderchaintpcfg_templates_pathxuse_i18nr|   s               r!   initzBuiltinTemplateLoader.init   s    ,,.I#9&MatyyD'9&MMKT
It*KIK  #7>>#@#@A>>((9@9V9V"35		'//2." " 0IaN1K! # <GGa.q1G;;))5,4'("
/t
S-4  *,2  ),2  )2>  /,8,A  ).5  +0<Y0G  -,1  )99&& E 'N" Hs   I *'I%(I*c                V    | j                   j                  |      j                  |      S rN   )rq   get_templaterender)rK   rr   rB   s      r!   r   zBuiltinTemplateLoader.render   s$    ,,X6==gFFr#   c                V    | j                   j                  |      j                  |      S rN   )rq   from_stringr   )rK   sourcerB   s      r!   render_stringz#BuiltinTemplateLoader.render_string   s$    ++F3::7CCr#   c                @    t        t        | j                  d            S )Nz.html)maxr   r   rJ   s    r!   newest_template_mtimez+BuiltinTemplateLoader.newest_template_mtime   s    ?4>>7;<<r#   c                   | j                   }|j                  d      r|| j                  d  }|dd  }|D ]  }	 |j                  ||      c S  |d| j
                  j                  j                   }t	        |      # t        $ r Y Tw xY w)N!r/   z not found in )r   
startswithr   ru   r   rq   r{   r   )rK   rq   rr   r   r{   msgs         r!   ru   z BuiltinTemplateLoader.get_source   s    ,,s#d2245G|H 	F((h??	
 N4+;+;+B+B+L+L*MNs## $ s   A==	B	B	)NN)r   r   r   zTheme | Noner   zlist[str] | NonerR   rS   )rr   r   rB   dictrR   r   )r   r   rB   r   rR   r   )rR   floatrv   )	rT   rU   rV   rw   r   r   r   r   ru   rX   r#   r!   ry   ry      sQ     #!%	11 1 	1
 
1fGD=
$r#   ry   N)r    r   rR   r   )r    r   rR   r&   )r    z	int | strrR   r   )r3   r   r4   r&   rR   zIterator[list])rB   r   rC   r   rR   r   )
rB   r   r_   r   r`   r   ra   r   rR   r   )+rw   
__future__r   osr   pprintr   typingr   r   r   jinja2r	   r
   r   jinja2.sandboxr   jinja2.utilsr   r   sphinx.applicationr   sphinx.utilr   sphinx.util.osutilr   collections.abcr   jinja2.environmentr   sphinx.buildersr   sphinx.themingr   r"   r(   r-   r=   rD   rF   r^   re   ry   rX   r#   r!   <module>r      s    1 "   / / A A / 5 -  .(.'$$ *   ,- ,:Q$NJ Q$r#   