
    ~Ti                     |   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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 ddlmZ e	r(ddlmZmZ ddlmZ ddlm Z  ddl!m"Z" ddl#m$Z$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      Z0y)&z+Glue code for the jinja2 templating engine.    )annotationsN)Path)pformat)TYPE_CHECKING)
BaseLoaderFileSystemLoaderTemplateNotFound)SandboxedEnvironment)open_if_existspass_context)TemplateBridge)logging)_StrPath)_last_modified_time)CallableIterator)Any)Environment)Builder)_RealIndexEntries_RealIndexEntry)Themec                \    t        | t              r| j                         dv S t        |       S )N>   1onyestrue)
isinstancestrlowerboolvals    D/home/agent/.local/lib/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$   _todimr0   .   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@   ?   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._accesskeysr2   zaccesskey="%s" )vars)contextkeys     r$   	accesskeyrG   V   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__a   s	    r&   c                    | j                   S NrK   rM   s    r$   currentzidgen.currentd   s    wwr&   c                D    | xj                   dz  c_         | j                   S Nr2   rK   rM   s    r$   __next__zidgen.__next__g   s    1wwr&   N)returnNone)rV   r)   )__name__
__module____qualname__rO   rR   rU   next r&   r$   rI   rI   `   s     Dr&   rI   c                    d| v r,| j                  d      | j                  dd      z   }d| d| }t        j                  d      } |j                  |g|i | y)Npagenamefile_suffixrC   zin rendering z: zsphinx.themes)getr   	getLoggerwarning)rE   messageargskwargsfilenameloggers         r$   rb   rb   n   se    W;;z*W[[-KK!(2gY7/FFNN7,T,V,r&   c                  $    e Zd ZdZ	 	 	 	 	 	 ddZy)SphinxFileSystemLoaderz_FileSystemLoader subclass that is not so strict about '..'  entries in
    template names.
    c                  	
 |j                  d      rd}|j                  d      |z   }nd }t        t        | j                        D ]?  }||z  	t        t        	            }| n-|#||z  	t        t        	            }|? n t        |      |5  |j                         j                  | j                        }d d d        t        	      
d	
fd}t        	      |fS # 1 sw Y   )xY w)Nz.jinja_tc                 @    	 t               k(  S # t        $ r Y yw xY w)NF)r   OSError)rf   mtimes   r$   uptodatez3SphinxFileSystemLoader.get_source.<locals>.uptodate   s*    *84== s    	)rV   r!   )endswithremovesuffixmapr   
searchpathr   r   r	   readdecodeencodingr   )rN   environmenttemplatelegacy_suffixlegacy_templatesearch_pathfcontentsro   rf   rn   s            @@r$   
get_sourcez!SphinxFileSystemLoader.get_source}   s     X& M&33H=MO"OtT__5 	-K"X-Hs8}-A}*&8"3x=1=	- #8,, 	6vvxt}}5H	6 $H-	 X00	6 	6s   *C((C1Nrw   r   rx   r   rV   z#tuple[str, str, Callable[[], bool]])rX   rY   rZ   __doc__r~   r\   r&   r$   ri   ri   x   s$    !1&!125!1	,!1r&   ri   c                  h    e Zd ZdZ	 	 d
	 	 	 	 	 	 	 ddZddZddZddZddZddZ		 	 	 	 	 	 dd	Z
y)BuiltinTemplateLoaderzAInterfaces the rendering environment of jinja2 for use in Sphinx.Nc                   |r.|j                         }||D cg c]  }|j                   c}z   }n9|r3t        t        t        |            }t        t        t        |            }ng }g }t        |j                  j                        | _        |j                  j                  r:|j                  j                  D cg c]  }|j                  |z   }}||dd ||dd || _
        |D 	cg c]  }	t        |	       c}	| _        |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<   |
r&| j                  j7                  |j                         y y c c}w c c}w c c}	w )Nr   zjinja2.ext.i18n)loader
extensionstobooltointtodimslice_indexdebugrb   rG   rI   )get_theme_dirsparentlistrr   r   r4   configtemplates_pathtemplatepathlenconfdir	pathchainri   loaders_translatorr
   rw   r%   filtersr+   r0   r@   r   r   globalsrb   rG   rI   install_gettext_translations)rN   builderthemedirsr   ploaderchaintpcfg_templates_pathxuse_i18nr   s               r$   initzBuiltinTemplateLoader.init   s    ,,.I#&CAqxx&CCKS401Is8T23KIK  #7>>#@#@A>>((/6~~/L/L")+"$" " 0IaN1K! # <GGa.q1G&&d2,4'("
/t
S-4  *,2  ),2  )2>  /,8,A  ).5  +0<Y0G  -,1  )99':M:MN E 'D" Hs   I<I)Ic                V    | j                   j                  |      j                  |      S rQ   )rw   get_templaterender)rN   rx   rE   s      r$   r   zBuiltinTemplateLoader.render   s$    ,,X6==gFFr&   c                V    | j                   j                  |      j                  |      S rQ   )rw   from_stringr   )rN   sourcerE   s      r$   render_stringz#BuiltinTemplateLoader.render_string   s$    ++F3::7CCr&   c                (    | j                         d   S r(   _newest_template_mtime_namerM   s    r$   newest_template_mtimez+BuiltinTemplateLoader.newest_template_mtime       //1!44r&   c                (    | j                         d   S rT   r   rM   s    r$   newest_template_namez*BuiltinTemplateLoader.newest_template_name   r   r&   c                :    t        d | j                  D              S )Nc              3     K   | ]c  }t        j                  |      D ]I  \  }}}|D ]>  }|j                  d       r+t        ||      j	                         j
                  dz  |f @ K e yw)z.htmli ʚ;N)oswalkrp   r   statst_mtime_ns).0dirnameroot_dirsfilessfiles         r$   	<genexpr>zDBuiltinTemplateLoader._newest_template_mtime_name.<locals>.<genexpr>   s}      
&(ggg&6
 #eU	
 ~~g&	 $##%11E95A
A
A
s   A)A+)maxr   rM   s    r$   r   z1BuiltinTemplateLoader._newest_template_mtime_name   s      
>>
 
 	
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!r2   z not found in )r   
startswithr   r~   r	   rw   r   r   )rN   rw   rx   r   r   msgs         r$   r~   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] | NonerV   rW   )rx   r   rE   dict[str, Any]rV   r   )r   r   rE   r   rV   r   )rV   float)rV   r   )rV   ztuple[float, str]r   )rX   rY   rZ   r   r   r   r   r   r   r   r~   r\   r&   r$   r   r      sv    K #!%	/O/O /O 	/O
 
/ObGD55
$&$25$	,$r&   r   )r#   r   rV   r!   )r#   r   rV   r)   )r#   z	int | strrV   r   )r6   r   r7   r)   rV   zIterator[list[_RealIndexEntry]])rE   r   rF   r   rV   r   )
rE   r   rc   r   rd   r   re   r   rV   r   )1r   
__future__r   r   pathlibr   pprintr   typingr   jinja2r   r   r	   jinja2.sandboxr
   jinja2.utilsr   r   sphinx.applicationr   sphinx.utilr   sphinx.util._pathlibr   sphinx.util.osutilr   collections.abcr   r   r   jinja2.environmentr   sphinx.buildersr   (sphinx.environment.adapters.indexentriesr   r   sphinx.themingr   r%   r+   r0   r@   rG   rI   rb   ri   r   r\   r&   r$   <module>r      s    1 " 	     A A / 5 -  ) 22.' %"  '* $ .   &1- &1R[$NJ [$r&   