
    Fe                    p   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 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 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# e$ r	 ddlmZ Y fw xY w)%z+Glue code for the jinja2 templating engine.    )annotations)path)pformat)TYPE_CHECKINGAnyCallable)
BaseLoaderFileSystemLoaderTemplateNotFound)SandboxedEnvironment)open_if_exists)TemplateBridge)logging)mtimes_of_files)pass_context)contextfunction)Iterator)Environment)Builder)Themec                \    t        | t              r| j                         dv S t        |       S )N)true1yeson)
isinstancestrlowerboolvals    3/usr/lib/python3/dist-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              #  (  K   t        |       }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      )listlenrange)
valuesslicesseqlengthvalueitems_per_sliceoffsetslice_numbercountstarts
             r"   _slice_indexr>   >   s     
v,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._accesskeysr0   zaccesskey="%s" )vars)contextkeys     r"   	accesskeyrE   S   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__^   s	    r$   c                    | j                   S NrI   rK   s    r"   currentzidgen.currenta   s    wwr$   c                D    | xj                   dz  c_         | j                   S )Nr0   rI   rK   s    r"   __next__zidgen.__next__d   s    1wwr$   N)returnNone)rS   r'   )__name__
__module____qualname__rM   rP   rR   next r$   r"   rG   rG   ]   s     Dr$   rG   c                    d| v r,| j                  d      | j                  dd      z   }d| d| }t        j                  d      } |j                  |g|i | y)Npagenamefile_suffixrA   zin rendering z: zsphinx.themes)getr   	getLoggerwarning)rC   messageargskwargsfilenameloggers         r"   r_   r_   j   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)rc   mtimes   r"   uptodatez3SphinxFileSystemLoader.get_source.<locals>.uptodate   s.    }}X.%77 s    	'')rS   r   )	
searchpathr   joinr   r   readdecodeencodingri   )	rL   environmenttemplaterm   fcontentsrl   rc   rk   s	          @@r"   
get_sourcez!SphinxFileSystemLoader.get_sourcez   s    // 	-JyyX6Hx(A}		- #8,, 	6vvxt}}5H	6 h'	
 8++	6 	6s   *BB"Nrr   r   rs   r   rS   ztuple[str, str, Callable])rU   rV   rW   __doc__rv   rY   r$   r"   rf   rf   t   s    
,r$   rf   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_   rE   rG   )get_theme_dirsr   rn   r1   r2   configtemplates_pathtemplatepathlenconfdir	pathchainrf   loadersapp
translatorr   rr   r#   filtersr)   r.   r>   r   r   globalsr_   rE   rG   install_gettext_translations)rL   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>>((,3NN,I,I"K&( #'))GOOR"@ "K "K/IaN1K! # <GGa.q1G;;))5,4'("
/t;EG-4  *,2  ),2  )2>  /,8,A  ).5  +0<Y0G  -,1  )99'++:P:PQ E 'N"K Hs   I *'I%(I*c                V    | j                   j                  |      j                  |      S rO   )rr   get_templaterender)rL   rs   rC   s      r"   r   zBuiltinTemplateLoader.render   s$    ,,X6==gFFr$   c                V    | j                   j                  |      j                  |      S rO   )rr   from_stringr   )rL   sourcerC   s      r"   render_stringz#BuiltinTemplateLoader.render_string   s$    ++F3::7CCr$   c                @    t        t        | j                  d            S )Nz.html)maxr   r   rK   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  t	        |      # t        $ r Y /w xY w)N!r0   )r   
startswithr   rv   r   )rL   rr   rs   r   r|   s        r"   rv   z BuiltinTemplateLoader.get_source   s    ,,s#d2234G|H 	F((h??	
 x(( $ s   A	A$#A$)NN)r   r   r   zTheme | Noner   zlist[str] | NonerS   rT   )rs   r   rC   dictrS   r   )r   r   rC   r   rS   r   )rS   floatrw   )	rU   rV   rW   rx   r   r   r   r   rv   rY   r$   r"   rz   rz      sV     #!%	.R.R .R 	.R
 
.R`GD=
)r$   rz   N)r!   r   rS   r   )r!   r   rS   r'   )r!   z	int | strrS   r   )r4   r1   r5   r'   rS   zIterator[list])rC   r   rD   r   rS   r   )
rC   r   r`   r   ra   r   rb   r   rS   r   )-rx   
__future__r   osr   pprintr   typingr   r   r   jinja2r	   r
   r   jinja2.sandboxr   jinja2.utilsr   sphinx.applicationr   sphinx.utilr   sphinx.util.osutilr   r   ImportErrorr   collections.abcr   jinja2.environmentr   sphinx.buildersr   sphinx.themingr   r#   r)   r.   r>   rE   rG   r_   rf   rz   rY   r$   r"   <module>r      s    1 "   / / A A / ' -  .7) (.'$$ *
 
  ,- ,8M)NJ M){  767s   B' 'B54B5