
    O&i^                         d Z ddl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 dd	lmZ  ej        e          Z G d
 d          Z G d de          Z G d de          Z G d d          ZdS )z"Theming support for LaTeX builder.    N)path)DictOptional)Sphinx)Config)
ThemeError)__)loggingc                   B    e Zd ZdZddgZddgZdeddfdZdeddfd	Z	dS )
ThemezA set of LaTeX configurations.	papersize	pointsizenamereturnNc                 Z    || _         || _        || _        d| _        d| _        d| _        d S )Nletterpaper10ptchapter)r   docclasswrapperclassr   r   toplevel_sectioning)selfr   s     j/home/geonatureadmin/si_en_reseau/tutos/venv/lib/python3.11/site-packages/sphinx/builders/latex/theming.py__init__zTheme.__init__   s4    	 &#,       configc                     | j         D ]:}|j                            |          r|j        |         }t          | ||           ;| j        D ])}||j        v r|j        |         }t          | ||           *dS )z0Override theme settings by user's configuration.N)LATEX_ELEMENTS_KEYSlatex_elementsgetsetattrUPDATABLE_KEYSlatex_theme_options)r   r   keyvalues       r   updatezTheme.update   s    + 	* 	*C$((-- *-c2c5)))& 	* 	*Cf000237c5)))	* 	*r   )
__name__
__module____qualname____doc__r   r"   strr   r   r&    r   r   r   r      ss        ((&4!;/N-S -T - - - -
*V 
* 
* 
* 
* 
* 
* 
*r   r   c                   0     e Zd ZdZdededdf fdZ xZS )BuiltInThemezA built-in LaTeX theme.r   r   r   Nc                 d   t                                          |           |dk    r!|j                            dd          | _        n |j                            dd          | _        |dv rd|z   | _        n|| _        |dk    r#| j                            d          s	d| _        d S d	| _        d S )
Nhowtoarticlemanualreport)r2   r0   sphinxjsectionr   )superr   latex_docclassr    r   r   
startswithr   )r   r   r   	__class__s      r   r   zBuiltInTheme.__init__.   s    7??"155gyIIDMM"155hIIDM&&& (4D $D 7??4=#;#;C#@#@?'0D$$$'0D$$$r   )r'   r(   r)   r*   r+   r   r   __classcell__r:   s   @r   r.   r.   +   sX        !!1S 1& 1T 1 1 1 1 1 1 1 1 1 1r   r.   c                   @     e Zd ZdZddgZg dZdededdf fd	Z xZS )
	UserThemezA user defined LaTeX theme.r   r   )r   r   r   r   filenamer   Nc                    t                                          |           t          j                    | _        | j                            t          j        |          d           | j        D ]}	 | j        	                    d|          }t          | ||           0# t          j        $ r%}t          t          d          |z            |d }~wt          j        $ r2}t          t          d          ||j        d         fz            |d }~ww xY w| j        D ]D}	 | j        	                    d|          }t          | ||           0# t          j        $ r Y Aw xY wd S )Nzutf-8)encodingthemez%r doesn't have "theme" settingz%r doesn't have "%s" settingr   )r7   r   configparserRawConfigParserr   readr   joinREQUIRED_CONFIG_KEYSr    r!   NoSectionErrorr   r	   NoOptionErrorargsOPTIONAL_CONFIG_KEYS)r   r   r?   r$   r%   excr:   s         r   r   zUserTheme.__init__I   s   "2448,,w???, 		C 		CCC55c5)))). 4 4 4 $F!G!G!)"* + +034- C C C $C!D!D"*CHQK!8"9 : :?BCC , 	 	C55c5))))-   		 	s6   3,B  D/ CD!-DD ,EEE)	r'   r(   r)   r*   rG   rK   r+   r   r;   r<   s   @r   r>   r>   C   so        %%&7LLLS C D          r   r>   c                   ^    e Zd ZdZdeddfdZdeddfdZdede	fd	Z
dedee	         fd
ZdS )ThemeFactoryz!A factory class for LaTeX Themes.appr   Nc                     i | _         fdj        j        D             | _        j        | _        |                     j                   d S )Nc                 D    g | ]}t          j        j        |          S r,   )r   rF   srcdir).0prO   s     r   
<listcomp>z)ThemeFactory.__init__.<locals>.<listcomp>f   s'    ZZZDIcj!44ZZZr   )themesr   latex_theme_paththeme_pathsload_builtin_themes)r   rO   s    `r   r   zThemeFactory.__init__d   sP    (*ZZZZcj>YZZZj  ,,,,,r   r   c                 f    t          d|          | j        d<   t          d|          | j        d<   dS )zLoad built-in themes.r2   r0   N)r.   rV   )r   r   s     r   rY   z ThemeFactory.load_builtin_themesj   s4     ,Xv > >H+GV<<Gr   r   c                     || j         v r| j         |         }n$|                     |          pt          |          }|                    | j                   |S )zGet a theme for given *name*.)rV   find_user_themer   r&   r   )r   r   rB   s      r   r    zThemeFactory.geto   sT    4;K%EE((..=%++ET[!!!r   c                     | j         D ]p}t          j        ||d          }t          j        |          rD	 t	          ||          c S # t
          $ r$}t                              |           Y d}~hd}~ww xY wqdS )z3Find a theme named as *name* from latex_theme_path.z
theme.confN)rX   r   rF   isfiler>   r   loggerwarning)r   r   
theme_pathconfig_pathrL   s        r   r\   zThemeFactory.find_user_themey   s    * 	( 	(J)JlCCK{;'' (($T;77777! ( ( (NN3''''''''(( ts   A
A5A00A5)r'   r(   r)   r*   r   r   r   rY   r+   r   r    r   r\   r,   r   r   rN   rN   a   s        ++-F -t - - - -=& =T = = = =
     
C 
HUO 
 
 
 
 
 
r   rN   )r*   rC   osr   typingr   r   sphinx.applicationr   sphinx.configr   sphinx.errorsr   sphinx.localer	   sphinx.utilr
   	getLoggerr'   r_   r   r.   r>   rN   r,   r   r   <module>rk      s[   ( (           ! ! ! ! ! ! ! ! % % % % % %             $ $ $ $ $ $            		8	$	$* * * * * * * *61 1 1 1 15 1 1 10       <" " " " " " " " " "r   