
    -Phu                       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 er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.    )annotationsN)TYPE_CHECKING)
ThemeError)__)logging)Path)Sphinx)Configc                  2    e Zd ZdZddgZddgZddZddZdS )ThemezA set of LaTeX configurations.	papersize	pointsizenamestrreturnNonec                Z    || _         || _        || _        d| _        d| _        d| _        d S )Nletterpaper10ptchapter)r   docclasswrapperclassr   r   toplevel_sectioning)selfr   s     ]/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sphinx/builders/latex/theming.py__init__zTheme.__init__   s4    	 &#,       configr
   c                    | 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   N)r   r   r   r   r   r
   r   r   )__name__
__module____qualname____doc__r    r$   r   r(    r   r   r   r      sW        ((&4!;/N- - - -
* 
* 
* 
* 
* 
*r   r   c                  $     e Zd ZdZd	 fdZ xZS )
BuiltInThemezA built-in LaTeX theme.r   r   r   r
   r   r   c                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   r4   sphinxjsectionr   )superr   latex_docclassr"   r   r   
startswithr   )r   r   r   	__class__s      r   r   zBuiltInTheme.__init__3   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*   r+   r,   r-   r   __classcell__r<   s   @r   r0   r0   0   sC        !!1 1 1 1 1 1 1 1 1 1r   r0   c                  4     e Zd ZdZddgZg dZd fdZ xZS )	UserThemezA user defined LaTeX theme.r   r   )r   r   r   r   r   filenamer   r   r   c                   t                                          |           t          j                    | _        | j                            |d           | j        D ]}	 | j                            d|          }t          | ||           0# t          j	        $ r'}t          d          |z  }t          |          |d }~wt          j        $ r4}t          d          ||j        d         fz  }t          |          |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   )r9   r   configparserRawConfigParserr   readREQUIRED_CONFIG_KEYSr"   r#   NoSectionErrorr   r   NoOptionErrorargsOPTIONAL_CONFIG_KEYS)r   r   rA   r&   r'   excmsgr<   s          r   r   zUserTheme.__init__N   s   "244G444, 		/ 		/C/55c5)))). / / /;<<xG oo3.- / / /899XsxPQ{<SS oo3./ , 	 	C55c5))))-   		 	s6   !,BD"B??D/D  D,D??EE)r   r   rA   r   r   r   )r*   r+   r,   r-   rH   rL   r   r=   r>   s   @r   r@   r@   H   sZ        %%&7LLL         r   r@   c                  2    e Zd ZdZddZdd	ZddZddZdS )ThemeFactoryz!A factory class for LaTeX Themes.appr	   r   r   c                    i | _         fdj        j        D             | _        j        | _        |                     j                   d S )Nc                $    g | ]}j         |z  S r.   )srcdir).0prQ   s     r   
<listcomp>z)ThemeFactory.__init__.<locals>.<listcomp>k   s    PPPqCJNPPPr   )themesr   latex_theme_paththeme_pathsload_builtin_themes)r   rQ   s    `r   r   zThemeFactory.__init__i   sP    (*PPPPCJ4OPPPj  ,,,,,r   r   r
   c                f    t          d|          | j        d<   t          d|          | j        d<   dS )zLoad built-in themes.r4   r2   N)r0   rX   )r   r   s     r   r[   z ThemeFactory.load_builtin_themeso   s4     ,Xv > >H+GV<<Gr   r   r   r   c                    || j         v r| j         |         }n$|                     |          pt          |          }|                    | j                   |S )zGet a theme for given *name*.)rX   find_user_themer   r(   r   )r   r   rD   s      r   r"   zThemeFactory.gett   sT    4;K%EE((..=%++ET[!!!r   Theme | Nonec                    | j         D ]b}||z  dz  }|                                rD	 t          ||          c S # t          $ r$}t                              |           Y d}~Zd}~ww xY wcdS )z3Find a theme named as *name* from latex_theme_path.z
theme.confN)rZ   is_filer@   r   loggerwarning)r   r   
theme_pathconfig_pathrM   s        r   r^   zThemeFactory.find_user_theme~   s    * 	( 	(J$t+l:K""$$ (($T;77777! ( ( (NN3''''''''(( ts   9
A'A""A'N)rQ   r	   r   r   r)   )r   r   r   r   )r   r   r   r_   )r*   r+   r,   r-   r   r[   r"   r^   r.   r   r   rP   rP   f   sj        ++- - - -= = = =
   
 
 
 
 
 
r   rP   )r-   
__future__r   rE   typingr   sphinx.errorsr   sphinx.localer   sphinx.utilr   pathlibr   sphinx.applicationr	   sphinx.configr
   	getLoggerr*   rb   r   r0   r@   rP   r.   r   r   <module>ro      so   ( ( " " " " " "                 $ $ $ $ $ $             %))))))$$$$$$		8	$	$* * * * * * * *61 1 1 1 15 1 1 10       <" " " " " " " " " "r   