
    }cy                         d 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	 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)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     =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 *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)r1   r/   sphinxjsectionr   )superr   latex_docclassr   r   r   
startswithr   )r   r   r   	__class__s      r   r   zBuiltInTheme.__init__.   s    7? 	J"155gyIIDMM"155hIIDM&& 	% (4D $D 7? 	14=#;#;C#@#@ 	1'0D$$$'0D$$$r   )r&   r'   r(   r)   r*   r   r   __classcell__r9   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   )r6   r   configparserRawConfigParserr   readr   joinREQUIRED_CONFIG_KEYSr   r    NoSectionErrorr   r   NoOptionErrorargsOPTIONAL_CONFIG_KEYS)r   r   r>   r#   r$   excr9   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)   rF   rJ   r*   r   r:   r;   s   @r   r=   r=   C   so        %%&7LLLS C D          r   r=   c                   R    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	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   rE   srcdir).0prN   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   rN   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.r1   r/   N)r-   rU   )r   r   s     r   rX   z ThemeFactory.load_builtin_themesj   s4     ,Xv > >H+GV<<Gr   r   c                     || j         v r| j         |         }n&|                     |          }|st          |          }|                    | j                   |S )zGet a theme for given *name*.)rU   find_user_themer   r%   r   )r   r   rA   s      r   r   zThemeFactory.geto   s^    4; 	$K%EE((..E $d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)rW   r   rE   isfiler=   r   loggerwarning)r   r   
theme_pathconfig_pathrK   s        r   r[   zThemeFactory.find_user_theme{   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   rX   r*   r   r   r[   r+   r   r   rM   rM   a   s        ++-F -t - - - -=& =T = = = =

 
 
 
 
 

C 
E 
 
 
 
 
 
r   rM   )r)   rB   osr   typingr   sphinx.applicationr   sphinx.configr   sphinx.errorsr   sphinx.localer   sphinx.utilr	   	getLoggerr&   r^   r   r-   r=   rM   r+   r   r   <module>rj      sU   ( (                 % % % % % %             $ $ $ $ $ $            		8	$	$* * * * * * * *61 1 1 1 15 1 1 10       <$ $ $ $ $ $ $ $ $ $r   