
    -Ph                    x   U d Z ddlmZ ddlZddlZddl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mZ ddlmZ dd	lmZmZ dd
lmZmZ ddlmZ er2ddl	Z	ddlmZmZ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*m+Z+  ej,        e-          Z.ed         Z/de0d<   dZ1e2ej3        ej4        fZ5 G d de          Z6 e7            ddMdZ8 G d  d!          Z9e7e2         e9z  Z:de0d"<    G d# d$          Z; G d% d&          Z<dNd,Z=dOd0Z>dPd5Z?dPd6Z@dPd7ZAdQd9ZBdQd:ZCdRd?ZDdSdAZEdPdBZFdTdJZGdUdLZHdS )Vz"Build configuration file handling.    )annotationsN)chdir)getenv)Path)TYPE_CHECKINGAnyLiteral
NamedTuple)RemovedInSphinx90Warning)ConfigErrorExtensionError)___)logging)
CollectionIterableIteratorSequenceSet)	TypeAlias)Sphinx)BuildEnvironment)Tags)ExtensionMetadata_ExtensionSetupFunc) envepubgettexthtml	applehelpdevhelpr   _ConfigRebuildzconf.pyc                  .    e Zd ZU ded<   ded<   ded<   dS )ConfigValuestrnamer   valuer#   rebuildN)__name__
__module____qualname____annotations__     M/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sphinx/config.pyr%   r%   /   s0         IIIJJJr/   r%   _seenobjobjectr2   frozenset[int]returnboolc                  t          | t                    rdS t          |           |v rdS t          | t                    r@|t          |           hz  t	          fd|                                 D                       S t          | t          t          z  t          z  t          z            r.|t          |           hz  t	          fd| D                       S dS )z*Check if an object is serializable or not.FTc              3  b   K   | ])\  }}t          |           ot          |           V  *dS r1   Nis_serializable).0keyr(   seens      r0   	<genexpr>z"is_serializable.<locals>.<genexpr>@   sZ       
 
U Ct,,,Sd1S1S1S
 
 
 
 
 
r/   c              3  :   K   | ]}t          |           V  dS r:   r;   )r=   itemr?   s     r0   r@   z"is_serializable.<locals>.<genexpr>F   s0      EE?4t444EEEEEEr/   )

isinstanceUNSERIALIZABLE_TYPESiddictallitemslisttupleset	frozenset)r3   r2   r?   s     @r0   r<   r<   5   s    #+,, u 
#ww%t#t F3y  
 
 
 
!iikk
 
 
 
 
 	
 
C+i7	8	8 F3y EEEEEEEEEE
 4r/   c                  *    e Zd ZdZddZddZddZdS )ENUMzRepresents the candidates which a config value should be one of.

    Example:
        app.add_config_value('latex_show_urls', 'no', None, ENUM('no', 'footnote', 'inline'))
    
candidatesstr | bool | Noner6   Nonec                .    t          |          | _        d S N)rL   _candidates)selfrO   s     r0   __init__zENUM.__init__U   s    $Z00r/   r&   c           	     ~    dd                     t          t          t          | j                                       dS )NzENUM(, ))joinsortedmapreprrT   rU   s    r0   __repr__zENUM.__repr__X   s4    HtyyD$2B(C(C!D!DEEHHHHr/   r(   /str | bool | None | Sequence[str | bool | None]r7   c                     t          |t          t          z  d z            r	| j        v S t	           fd|D                       S )Nc              3  *   K   | ]}|j         v V  d S rS   )rT   )r=   rB   rU   s     r0   r@   zENUM.match.<locals>.<genexpr>^   s+      >>44++>>>>>>r/   )rC   r&   r7   rT   rG   )rU   r(   s   ` r0   matchz
ENUM.match[   sO    eS4Z$.// 	-D,,,>>>>>>>>>>r/   N)rO   rP   r6   rQ   r6   r&   )r(   r`   r6   r7   )r*   r+   r,   __doc__rV   r_   rc   r.   r/   r0   rN   rN   N   s^         1 1 1 1I I I I? ? ? ? ? ?r/   rN   _OptValidTypesc                       e Zd ZU dZded<   ded<   ded<   ded	<   	 d!d" fdZd#dZd$dZd%dZd&dZ	d' fdZ
d( fdZd)dZd* fdZd+d Z xZS ),_Optdefaultr)   valid_typesdescriptionr   rj   r#   r)   rf   rk   r&   rl   r   r6   rQ   c                   t                                          d|           t                                          d|           t                                          d|           t                                          d|           dS )a^  Configuration option type for Sphinx.

        The type is intended to be immutable; changing the field values
        is an unsupported action.
        No validation is performed on the values, though consumers will
        likely expect them to be of the types advertised.
        The old tuple-based interface will be removed in Sphinx 9.
        rj   r)   rk   rl   Nsuper__setattr__)rU   rj   r)   rk   rl   	__class__s        r0   rV   z_Opt.__init__l   ss     	Iw///Iw///M;777M;77777r/   c           
     `    | j         j         d| j        d| j        d| j        d| j        d
S )Nz	(default=z
, rebuild=z, valid_types=z, description=rY   )rq   r,   rj   r)   rl   r^   s    r0   r_   z_Opt.__repr__   s_    ~* 1 1|1 1|1 1  <1 1  +	1 1 1	
r/   otherr4   r7   c                    t          |t                    r:| j        | j        | j        | j        f}|j        |j        |j        |j        f}||k    S t          S rS   )rC   rh   rj   r)   rk   rl   NotImplementedrU   rs   self_tpl	other_tpls       r0   __eq__z_Opt.__eq__   sc    eT"" 	)  	H !!	I y((r/   c                    | j         |j         u r:| j        | j        | j        | j        f}|j        |j        |j        |j        f}||k    S t
          S rS   )rq   rj   r)   rk   rl   ru   rv   s       r0   __lt__z_Opt.__lt__   s`    >U_,,  	H !!	I i''r/   intc                P    t          | j        | j        | j        | j        f          S rS   )hashrj   r)   rk   rl   r^   s    r0   __hash__z_Opt.__hash__   s#    T\4<1A4CSTUUUr/   r>   r(   c                    |dv r | j         j        d|}t          |          t                                          ||           d S )N>   rj   r)   rl   rk   z' object does not support assignment to )rq   r*   	TypeErrorro   rp   )rU   r>   r(   msgrq   s       r0   rp   z_Opt.__setattr__   sT    FFF^,^^WZ^^CC.. C'''''r/   c                    |dv r | j         j        d|}t          |          t                                          |           d S )N>   rj   r)   rl   rk   z% object does not support deletion of )rq   r*   r   ro   __delattr__)rU   r>   r   rq   s      r0   r   z_Opt.__delattr__   sR    FFF^,\\UX\\CC.. C     r/   /tuple[Any, _ConfigRebuild, _OptValidTypes, str]c                6    | j         | j        | j        | j        fS rS   ri   r^   s    r0   __getstate__z_Opt.__getstate__   s    |T\4+;T=MMMr/   statec                &   |\  }}}}t                                          d|           t                                          d|           t                                          d|           t                                          d|           d S )Nrj   r)   rk   rl   rn   )rU   r   rj   r)   rk   rl   rq   s         r0   __setstate__z_Opt.__setstate__   s     6;2+{Iw///Iw///M;777M;77777r/   rB   int | slicec                    t          j        d| j        j        dt          d           | j        | j        | j        f|         S )NzThe zp object tuple interface is deprecated, use attribute access instead for 'default', 'rebuild', and 'valid_types'.   )
stacklevel)warningswarnrq   r*   r   rj   r)   rk   )rU   rB   s     r0   __getitem__z_Opt.__getitem__   s[    X4>* X X X$		
 	
 	
 	
 dlD,<=dCCr/   r   )
rj   r   r)   r#   rk   rf   rl   r&   r6   rQ   rd   )rs   r4   r6   r7   )rs   rh   r6   r7   )r6   r|   )r>   r&   r(   r   r6   rQ   )r>   r&   r6   rQ   )r6   r   )r   r   r6   rQ   )rB   r   r6   r   )r*   r+   r,   	__slots__r-   rV   r_   ry   r{   r   rp   r   r   r   r   __classcell__rq   s   @r0   rh   rh   d   s]        BILLL 8 8 8 8 8 8 8(
 
 
 
   "   "V V V V( ( ( ( ( (! ! ! ! ! !N N N N8 8 8 8 8 8D D D D D D D Dr/   rh   c                      e Zd ZU dZi d edd eef                    d edd eef                    d edd	 eeeef                    d
 ed d	 eeeef                    d edd eef                    d edd eef                    d edd eef                    d edd eef                    d edd eef                    d edgd eeef                    d edd eef                    d edd ee	f                    d edd e
dddd                    d edd eef                    d  ed! d eef                    d" ed#d$ide          d% ed&d eef                    i d' eg d eef                    d( ed)gd eef                    d* edd eef                    d+ edd ee	f                    d, edd ee	f                    d- edd ee	f                    d. ed/d e
d/d0d1                    d2 edd ee	f                    d3 edd ee	f                    d4 edd	 eef                    d5 ed6d eef                    d7 ei d eef                    d8 eg d	 eef                    d9 edd	 eef                    d: edd ee	f                    d; eg d eeef                    d< edd ee	f                    i d= eg d	 eeef                    d> edd eef                    d? edd eef                    d@ edd ee	f                    dA edBd eej        f                    dC edd eef                    dD ei d eef                    dE edd eeej        f                    dF edd ee	f                    dG eg d eeeef                    dH eg d eeeef                    dI edd ee	f                    dJ edKd eeej        f                    dL ei d eef                    dM edd eeej        f                    dN edd ee	f                    dO edd eef                     edd ee	f                     edPd eef                     edd ee	f                     edd eeeej        f                     edd eef                     edd ee	f                     edQd eef                     eg dRdSdTgdUd eef                     edd ee	f                    dV	ZdWedX<   	 	 ddd^Zedd_            Zedda            Ze	 	 dddh            ZddmZeddn            ZddoZddpZddqZd fdtZdduZ ddvZ!ddwZ"ddxZ#ddzZ$dd|Z%	 dddZ&ddZ'ddZ(ddZ) xZ*S )Configa  Configuration file abstraction.

    The Config object makes the values of all config options available as
    attributes.

    It is exposed via the :py:class:`~sphinx.application.Sphinx`\ ``.config``
    and :py:class:`sphinx.environment.BuildEnvironment`\ ``.config`` attributes.
    For example, to get the value of :confval:`language`, use either
    ``app.config.language`` or ``env.config.language``.
    projectzProject name not setr   authorzAuthor name not setproject_copyrightr   r    	copyrightc                    | j         S rS   )r   configs    r0   <lambda>zConfig.<lambda>   s	    63 r/   versionreleasetoday	today_fmtNlanguageenlocale_dirslocalesfigure_language_filenamez{root}.{language}{ext} gettext_allow_fuzzy_translationsFr   translation_progress_classesT
translateduntranslated
master_docindexroot_docc                    | j         S rS   )r   r   s    r0   r   zConfig.<lambda>   s	    (9 r/   source_suffixz.rstrestructuredtextsource_encodingz	utf-8-sigexclude_patternsinclude_patternsz**default_roleadd_function_parenthesesadd_module_namestoc_object_entriestoc_object_entries_show_parentsdomainrG   hidetrim_footnote_reference_spaceshow_authorspygments_stylehighlight_languagerj   highlight_optionstemplates_pathtemplate_bridgekeep_warningssuppress_warningsshow_warning_typesmodindex_common_prefix
rst_epilog
rst_prologtrim_doctest_flagsprimary_domainpyneeds_sphinxneeds_extensionsmanpages_urlnitpickynitpick_ignorenitpick_ignore_regexnumfignumfig_secnum_depth   numfig_formatmaximum_signature_line_lengthmath_number_allmath_eqref_format.qDe)jazh_CNzh_TWmantext)	languagesbuilders)	math_numfigmath_numsep
tls_verifytls_cacerts
user_agentsmartquotessmartquotes_actionsmartquotes_excludesoption_emphasise_placeholdersdict[str, _Opt]config_valuesr   dict[str, Any] | None	overridesr6   rQ   c                   |pi }|t          |          ni | _        t          j                                        | _        || _        t          | j                                                  D ]P}d|v rJ|	                    dd          \  }}| j        
                    |          |                    |i           |<   Q|                    d          | _        d| j        v rM| j        
                    d          }t          |t                    r|	                    d          |d<   n||d<   |                    dg           | _        d S )Nr   r   setup
extensions,)rF   
_overridesr   r   copy_options_raw_configrI   keyssplitpop
setdefaultgetr   rC   r&   r   )rU   r   r   
raw_configr'   	real_namer>   r   s           r0   rV   zConfig.__init__7  s9   
 &,\r
-6-B$y///,1133%--//00 	V 	VDd{{!%C!3!3	3<@O<O<OPT<U<U
%%i44S91;1H1H
4?**,,\::J*c** 6+5+;+;C+@+@
<((+5
<(%/^^L"%E%Er/   c                    | j         S rS   r   r^   s    r0   valueszConfig.valuesP  s
    }r/   dict[str, Any]c                    | j         S rS   )r   r^   s    r0   r   zConfig.overridesT  s
    r/   clstype[Config]confdirstr | os.PathLike[str]tagsTags | Nonec                N   t          |t                    }|                                st          t	          d          |z            t          ||          }|                    dd          ,t                              t	          d                     d|d<    | ||          S )z/Create a Config object from configuration file.z4config directory doesn't contain a conf.py file (%s)r   .NzInvalid configuration value found: 'language = None'. Update your configuration to a valid language code. Falling back to 'en' (English).r   )	r   CONFIG_FILENAMEis_filer   r   eval_config_filer   loggerwarning)r  r  r   r  filename	namespaces         r0   readzConfig.readX  s     11!! 	IJJWT   %Xt44	 ==S))1NN6    %)Ij!s9i(((r/   r'   r&   r(   r   c                   | j         |         }|j        }|j        }|t          k    r|S t	          |t
                    r$d|j        v r|dk    rdS d|j        v r|dk    rdS |S t          |          t          u s	t          |v rH|dk    rdS |dk    rdS t          |          dk    r|S t          d          ||fz  }t          |          t	          |t                    r$t          t          d          || dfz            t	          |t                    r|                    d	          S t	          |t                     rD	 t!          |          S # t          $ r'}t          t          d
          ||fz            |d }~ww xY wt#          |          r|S t	          |t$                    s||S t          t          d          |z            )NF0T1r   z!'%s' must be '0' or '1', got '%s'zZcannot override dictionary config setting %r, ignoring (use %r to set individual elements)z
.key=valuer   z/invalid number %r for config value %r, ignoringzAcannot override config setting %r with unsupported type, ignoring)r   rj   rk   r   rC   rN   rT   typer7   lenr   r   rF   
ValueErrorrI   r   r|   callabler&   )rU   r'   r(   optrj   rk   r   excs           r0   convert_overrideszConfig.convert_overridesw  s+   mD!+o#Lk4(( 	#///ESLLu{...5C<<tL']]d""t{':':||u||t;!##899T5MICc"""gt$$ 	C  D,,,-	.   gt$$ 	$;;s###gs## 	5zz!    HIIdm$  
 G 	Lgs## 	wLRSS
 
 	
s   E 
F"E==Fc                     d S rS   r.   r.   r/   r0   pre_init_valueszConfig.pre_init_values  s	     	r/   c                .    |                                   d S rS   )_report_override_warningsr^   s    r0   init_valueszConfig.init_values  s    &&(((((r/   c                |    | j         D ]3}|| j        vr(t                              t	          d          |           4d S )Nz-unknown config value %r in override, ignoring)r   r   r  r  r   rU   r'   s     r0   r   z Config._report_override_warnings  sO    O 	 	D4=((FGG  	 	r/   c                    g }| j         D ]@}	 t          | |          }n# t          $ r d}Y nw xY w|                    | d|           A| j        j        dz   d                    |          z   dz   S )Nz<error!>=(rX   rY   )r   getattr	Exceptionappendrq   r,   rZ   )rU   r  opt_name	opt_values       r0   r_   zConfig.__repr__  s     	7 	7H'#D(33		 ' ' '&			'MMX55	556666~*S0499V3D3DDsJJs   --r>   r4   c                   |dk    r#t                                          d|           nz|dk    r#t                                          d|           nQ|dk    r#t                                          d|           n(|dk    r"t                                          d|           t                                          ||           d S )Nr   r   r   r   rn   )rU   r>   r(   rq   s      r0   rp   zConfig.__setattr__  s    ,GG
E2222JGGe4444KGG 3U;;;;'''GGU333C'''''r/   c                   || j         v r|| j        v r| j        |         }t          |t                    s|| j        |<   |S 	 |                     ||          }|                     ||           |S # t          $ r%}t          	                    d|           Y d }~nd }~ww xY w|| j
        v r%| j
        |         }|                     ||           |S | j         |         j        }t          |          r ||           S || j        |<   |S |                    d          r | j        j        d|}t!          |          t#          d          |z  }t!          |          )Nz%sr   z object has no attribute zNo such config value: %r)r   r   rC   r&   __dict__r  rp   r  r  r  r   rj   r  
startswithrq   r*   AttributeErrorr   )rU   r'   r(   r  rj   r   s         r0   __getattr__zConfig.__getattr__  s   4=  t&&-!%-- !*/DM$' L! 224??E $$T5111 L	 " . . .NN4--------. t'''(.  u---mD)1G   %wt}}$")DM$N??3 	&^,QQQQC %%%+,,t3S!!!s   A0 0
B:BBc                "    t          | |          S rS   )r'  r#  s     r0   r   zConfig.__getitem__  s    tT"""r/   c                (    t          | ||           d S rS   )setattr)rU   r'   r(   s      r0   __setitem__zConfig.__setitem__  s    dE"""""r/   c                &    t          | |           d S rS   )delattrr#  s     r0   __delitem__zConfig.__delitem__  s    dr/   r7   c                    || j         v S rS   r   r#  s     r0   __contains__zConfig.__contains__  s    t}$$r/   Iterator[ConfigValue]c              #     K   | j                                         D ]+\  }}t          |t          | |          |j                  V  ,d S rS   )r   rH   r%   r'  r)   )rU   r'   r  s      r0   __iter__zConfig.__iter__  s\      ,,.. 	F 	FID#dGD$$7$7EEEEEE	F 	Fr/   r)   r#   typestype | Collection[type] | ENUMrl   c                    || j         v rt          t          d          |z            t          |t                    r|rdnd}t          |          }t          ||||          | j         |<   d S )NzConfig value %r already presentr   r   )r   r   r   rC   r7   _validate_valid_typesrh   )rU   r'   rj   r)   r>  rl   rk   s          r0   addz
Config.add  s~     4=   $E!F!F!MNNN gt$$ 	/&.eeBG ,E22"7G[+NNdr/   Set[_ConfigRebuild]c                f    t          t                    rfd| D             S fd| D             S )Nc              3  2   K   | ]}|j         k    |V  d S rS   r)   r=   r(   r)   s     r0   r@   z Config.filter.<locals>.<genexpr>  s/      HHeu}/G/GE/G/G/G/GHHr/   c              3  .   K   | ]}|j         v |V  d S rS   rF  rG  s     r0   r@   z Config.filter.<locals>.<genexpr>  s/      DD%5=G+C+C+C+C+C+CDDr/   )rC   r&   )rU   r)   s    `r0   filterzConfig.filter  sJ    gs## 	IHHHHtHHHHDDDD4DDDDr/   c                   d | j                                         D             }i x|d<   }| j                                        D ]\  }}t          |t                    s;t          |t
                    r&t          |          dk    rt	          | x| j        |<   }t          | |          }t          |          s5|j	        r,t                              t          d          |ddd           d	}||j	        f||<   |S )
z'Obtains serializable data for pickling.c                b    i | ],\  }}|                     d           t          |          )||-S )r   )r/  r<   )r=   r>   r(   s      r0   
<dictcomp>z'Config.__getstate__.<locals>.<dictcomp>  sR     
 
 
U>>#&&
 ,;5+A+A

 
 
r/   r      zkcannot cache unpickleable configuration value: %r (because it contains a function, class, or module object)r   cacheT)r  subtypeonceN)r.  rH   r   rC   rh   rJ   r  r'  r<   r)   r  r  r   )rU   r.  r   r'   r  
real_values         r0   r   zConfig.__getstate__  s,   
 
"m1133
 
 
 +-,x,,.. 	5 	5ID#c4(( 7ZU-C-C 7CTU,0#J6d#c t,,J":.. ";  NNX  % '! # 	 	 	 "
'4HTNNr/   r   c                    i | _         d |                    d                                          D             | _        i | _        | j                            |           d S )Nc           	     V    i | ]&\  }\  }}|t          ||t                                'S r.   )rh   rL   )r=   r'   rQ  r)   s       r0   rL  z'Config.__setstate__.<locals>.<dictcomp>B  sC     
 
 
++z7 $z7IKK88
 
 
r/   r   )r   r   rH   r   r   r.  update)rU   r   s     r0   r   zConfig.__setstate__@  sg    
 
/4yy/D/D/J/J/L/L
 
 
 U#####r/   )NN)r   r   r   r   r6   rQ   )r6   r   )r6   r  )
r  r  r  r  r   r   r  r	  r6   r   )r'   r&   r(   r&   r6   r   )r6   rQ   rd   )r>   r&   r(   r4   r6   rQ   )r'   r&   r6   r   )r'   r&   r(   r   r6   rQ   )r'   r&   r6   rQ   )r'   r&   r6   r7   )r6   r;  r   )r'   r&   rj   r   r)   r#   r>  r?  rl   r&   r6   rQ   )r)   rC  r6   r;  )r   r  r6   rQ   )+r*   r+   r,   re   rh   rL   r&   rJ   rI   r7   rN   r   rF   r>  NoneTyperK   r|   r   r-   rV   propertyr  r   classmethodr  r  staticmethodr  r!  r   r_   rp   r1  r   r5  r8  r:  r=  rB  rI  r   r   r   r   s   @r0   r   r      s        	 	$R&44.yy#7H7HIIR& 	$$,eYYv5F5FGGR& 	TT"fiieT8J.K.KLL	R&
 	TT33IsE4())
 
R& 	44E99cV#4#455R& 	44E99cV#4#455R& 	b%C6!2!233R& 	TT$yy#'8'899R& 	DDuii&7&788R&  	ttYK		4-0H0HII!R&" 	#DD$eYYv->->%
 %
#R&( 	+DD	99dWCUCU,V,V)R&* 	'5$$tUL.II)
 )
+R&0 	dd7E99cV+<+<==1R&2 	DD995))SFBSBSTT3R&8 	v'9:E3GG9R&: 	44UIIsf4E4EFF;R& R&< 	DDUIIsf,=,=>>=R&> 	DD$		3&0A0ABB?R&@ 	T5))SF*;*;<<AR&B 	#DDuii6H6H$I$ICR&D 	DDuii.@.@AAER&F 	dd4		4'0B0BCCGR&H 	*44eTT(E6::,
 ,
IR&N 	(eUIItg<N<N)O)OOR&P 	UE99dW+=+=>>QR&R 	$$tVYYv->->??SR&T 	dd9eYYv5F5FGGUR&V 	TT"eYYw-?-?@@WR&X 	$$r699dW+=+=>>YR&Z 	44fii.?.?@@[R&\ 	eUIItg,>,>??]R&^ 	TT"eYYe}-E-EFF_R&` 	dd4		4'0B0BCCaR& R& R&b 	!$$r699dE]3K3K"L"LcR&d 	dd4		3&(9(9::eR&f 	dd4		3&(9(9::gR&h 	dd4		4'0B0BCCiR&j 	$$tUIIu~6G,H,HIIkR&l 	T2yy#'8'899mR&n 	DDRD7););<<oR&p 	T5))S%.4I*J*JKKqR&r 	DDIItg$6$677sR&t 	$$r2yy#tU1C'D'DEEuR&v 	RYYT57I-J-J K KwR&x 	$$ueYYw%7%788yR&z 	ttAuiien8M.N.NOO{R&~ 	b%D7););<<R&@ 	(%C#899*
 *
AR&F 	44uii.@.@AAGR&H 	TT$yy#/@/@AAIR& R&J tD%D7););<<tC		3&(9(9::d4		4'(:(:;;tD%Cu~3N)O)OPPd4		3&(9(9::tD%D7););<<"d5%C61B1BCC $222PPItg!
 !

 *.eUIItg<N<N)O)OcR& R& R&M R R R Rl )-+/F F F F F2    X    X  ,0 	) ) ) ) [)<.
 .
 .
 .
`    \) ) ) )   K K K K
( 
( 
( 
( 
( 
(" " " "@# # # ## # # #   % % % %F F F F O O O O O&E E E E
# # # #J$ $ $ $ $ $ $ $r/   r   r  r  r  r	  r  c                `   t          |           } t          |           |d}t          | j                  5  	 t	          |                                 | d          }t          ||           n# t          $ r'}t          d          }t          ||z            |d}~wt          $ r$}t          d          }t          |          |d}~wt          $ r  t          $ r8}t          d          }t          |t          j                    z            |d}~ww xY w	 ddd           n# 1 swxY w Y   |S )zEvaluate a config file.)__file__r  execz7There is a syntax error in your configuration file: %s
NzKThe configuration file (or one of the modules it imports) called sys.exit()z=There is a programmable error in your configuration file:

%s)r   r&   r   parentcompile
read_bytesr[  SyntaxErrorr   r   
SystemExitr(  	traceback
format_exc)r  r  r  codeerrr   r  s          r0   r  r  J  s    H~~H MM! !I
 
x		 E E	E8..00(FCCDy!!!! 	2 	2 	2OPPCcCi((c1 	, 	, 	,$ C c""+ 	 	 	 	E 	E 	EVWWCcI$8$:$::;;D	E "	E E E E E E E E E E E E E E E* sL   D#3A,+D#,
D6"BD%CD3DDD##D'*D'rk   r?  frozenset[type] | ENUMc                  | st                      S t          | t           t          z            r| S t          | t                    rt          | f          S | t          u rt          t          h          S t          | t
                    rt          |           S 	 t          |           S # t          $ r9 t                              t          d          |            t                      cY S w xY w)Nz#Failed to convert %r to a frozenset)
rL   rC   rN   r  r   rK   r   r  r  r   )rk   s    r0   rA  rA  m  s      {{+y4/00 +t$$ )+(((c#+s## &%%%%%%   r?@@+NNN{{s   B' 'A C*)C*appr   r   rQ   c                   |j         }t          |t                    r9|di|_         t                              t          d          ||j                    dS t          |t          t          z            rPt          	                    |d          |_         t                              t          d          ||j                    dS t          |t                    s0t          d          }t          ||t          |          fz            dS )zConvert old styled source_suffix to new styled one.

    * old style: str or list
    * new style: a dict which maps from fileext to filetype
    r   z8Converting `source_suffix = %r` to `source_suffix = %r`.zrThe config value `source_suffix' expects a dictionary, a string, or a list of strings. Got `%r' instead (type %s).N)r   rC   r&   r  infor   rI   rJ   rF   fromkeysr   r  )rg  r   r   r   s       r0   convert_source_suffixrk    s!    (M-%% F
 !./ABIJJ 	
 	
 	
 	
 	

 
M4%<	0	0 F#}}]<NOOIJJ 	
 	
 	
 	
 	

 t,, FJ
 
 #]0C0C DDEEEF Fr/   c                    |j         }|r;t          d |                                D                       s|j        |i|_         dS dS dS )zConvert old styled highlight_options to new styled one.

    * old style: options
    * new style: a dict which maps from language name to options
    c              3  @   K   | ]}t          |t                    V  d S rS   )rC   rF   )r=   vs     r0   r@   z,convert_highlight_options.<locals>.<genexpr>  s,      II1:a..IIIIIIr/   N)r   rG   r  r   )rg  r   optionss      r0   convert_highlight_optionsrp    sl     &G HsII8H8HIIIII H$*$=w#G   H H H Hr/   c                    t          d          t          d          t          d          t          d          d}|                    |j                   ||_        dS )z$Initialize :confval:`numfig_format`.z
Section %szFig. %szTable %sz
Listing %s)sectionfiguretablez
code-blockN)r   rT  r   )rg  r   r   s      r0   init_numfig_formatru    s[     \??I,,:oo	 M -...(Fr/   _appc                ^   t          t          j                    j                  dD ]}||v r}||         }t	          |t                     rd|v r|                    d          ||<   At          d |D                       r)fd|D             } t          |          |          ||<   dS )z?Replace copyright year placeholders (%Y) with the current year.r   epub_copyright%Yc              3     K   | ]}d |v V  	dS rz  Nr.   )r=   lines     r0   r@   z2evaluate_copyright_placeholders.<locals>.<genexpr>  s&      66tt|666666r/   c              3  D   K   | ]}|                     d           V  dS r|  )replace)r=   r}  
replace_yrs     r0   r@   z2evaluate_copyright_placeholders.<locals>.<genexpr>  s1      NNT\\$
;;NNNNNNr/   N)r&   time	localtimetm_yearrC   r  anyr  )rv  r   kr(   rH   r  s        @r0   evaluate_copyright_placeholdersr    s    T^%%-..J, 	3 	3;;)/E%%% 35== %dJ ? ?F1I6666666 3NNNNNNNE +UE 2 2F1I	3 	3r/   c                  	 t          t          dd                    x}rt          j        |          j        }ndS t          j                    j        }||k    rdS t          |          t          |          	dD ]b}||v r\||         }t          |t                    rt          |	          ||<   8	fd|D             } t          |          |          ||<   cdS )zCorrect values of copyright year that are not coherent with
    the SOURCE_DATE_EPOCH environment variable (if set)

    See https://reproducible-builds.org/specs/source-date-epoch/
    SOURCE_DATE_EPOCHr  Nrx  c              3  :   K   | ]}t          |          V  d S rS   )_substitute_copyright_year)r=   x
current_yrr  s     r0   r@   z)correct_copyright_year.<locals>.<genexpr>  sA        NO.q*jII     r/   )
r|   r   r  gmtimer  r  r&   rC   r  r  )
rv  r   source_date_epochsource_date_epoch_yearcurrent_yearr  r(   rH   r  r  s
           @@r0   correct_copyright_yearr    s     ':C @ @AAA !%->!?!?!G >##+L---\""J+,,J, 	/ 	/;;)/E%%% /6uj*UUq		    SX   (DKK..q		/ 	/r/   copyright_liner&   r  replace_yearc                r   t          |           dk     s| dd                                         s| S | dd         |k    r| dd         dv r|| dd         z   S | dd         dk    r| S | dd                                         r2| dd         |k    r$| dd         dv r| dd         |z   | dd         z   S | S )zReplace the year in a single copyright line.

    Legal formats are:

    * ``YYYY``
    * ``YYYY,``
    * ``YYYY ``
    * ``YYYY-YYYY``
    * ``YYYY-YYYY,``
    * ``YYYY-YYYY ``

    The final year in the string is replaced with ``replace_year``.
       N   >   r    r   -	   
   )r  isdigit)r  r  r  s      r0   r  r    s      >QnRaR&8&@&@&B&Bbqb\))nQqS.A^.S.SnQRR000acc!! 	qs##%%F1Q3<//1R4 N22bqb!L0>!""3EEEr/   Sphinx | Nonec                d   |j                                         D ]\  }}|j        }|j        }t	          ||          }t          |          r ||          }||sC|t          t          h          k    r]t          |t                    r\|
                    |          sFt          d          }t                              |                    |||j                  d           t!          |          }t!          |          }	||	u r||v rpt          |v r5|t"          t$          t&          hv rt)          ||t          |                     n0t$          |v r'|t"          u rt)          ||t%          |                     eh |j        |t'          |	j                  z  }
|
                    t.                     |
r|rt          d          }t1          d |D                       }t3          |          dk    r*d	                    |dd
                   d|d
          z   }nd                    |          }t                              |                    |||          d           St          d          }t                              |                    |||	          d           dS )zCheck all values for deviation from the default value's type, since
    that can result in TypeErrors all over the place NB.
    NzTThe config value `{name}` has to be a one of {candidates}, but `{current}` is given.)r'   currentrO   T)rP  zNThe config value `{name}' has type `{current.__name__}'; expected {permitted}.c              3  ,   K   | ]}d |j          dV  dS )`'N)r*   )r=   cs     r0   r@   z&check_confval_types.<locals>.<genexpr>D  s0      (P(Pq):QZ):):):(P(P(P(P(P(Pr/   r   rX   z, or z or )r'   r  	permittedzZThe config value `{name}' has type `{current.__name__}', defaults to `{default.__name__}'.)r'   r  rj   )r   rH   rj   rk   r'  r  rL   r   rC   rN   rc   r   r  r  formatrT   r  rI   rJ   rK   r4  	__bases__discardr4   r[   r  rZ   )rg  r   r'   r  rj   rk   r(   r   
type_valuetype_defaultcommon_baseswrapped_valid_typesr  s                r0   check_confval_typesr    s    _**,, F F	c+o%%G 	&gfooG?;?)SE****k4(( 	$$U++ 
0  JJ!5[=T    	     %[[
G}}%%$$K''J4:L,L,Li&6&67777+%%**<*<eEll333:-:z:SAW=X=XXV$$$ 	 	( C #)(P(PK(P(P(P"P"P&''!++II1#2#67771"5778 	
 #KK(;<<	NN

jI
NN     
 4 C NN

j,
OO     GF Fr/   c                    |j         }|rK| j                            |          s3t                              t          d          |           d |_         d S d S d S )Nz%primary_domain %r not found, ignored.)r   registry
has_domainr  r  r   )rg  r   r   s      r0   check_primary_domainr  [  sh    *N %cl55nEE %rABBNSSS $% % % %r/   r   r   addedSet[str]changedremovedIterable[str]c                    | j         j        }| j        j        dk    r;d|vr7d|v r3t                              t          d                     d| j        _        |S )z:Sphinx 2.0 changed the default from 'contents' to 'index'.r   contentsztSphinx now uses "index" as the master document by default. To keep pre-2.0 behaviour, set "master_doc = 'contents'".)r   docnamesr   r   r  r  r   )rg  r   r  r  r  r  s         r0   check_master_docr  b  sn     {#H
((8##(""N 	
 	
 	
 !+
Nr/   r   c                   |                      dt          d           |                      dt          d           |                      dt          d           |                      dt          d           |                      dt
          d           |                      dt          d           |                      dt          d           |                      dt                     ddddS )	Nzconfig-initedi   )priorityi  zenv-get-outdatedbuiltinT)r   parallel_read_safeparallel_write_safe)	connectrk  rp  ru  r  r  r  r  r  )rg  s    r0   r   r   {  s    KK!6KEEEKK!:SKIIIKK!3cKBBBKK!@3KOOOKK!7#KFFFKK!4sKCCCKK!5KDDDKK"$4555 "#  r/   )r3   r4   r2   r5   r6   r7   )r  r  r  r	  r6   r  )rk   r?  r6   re  )rg  r   r   r   r6   rQ   )rv  r   r   r   r6   rQ   )r  r&   r  r&   r  r&   r6   r&   )rg  r  r   r   r6   rQ   )rg  r   r   r   r  r  r  r  r  r  r6   r  )rg  r   r6   r   )Ire   
__future__r   r  ra  r>  r   
contextlibr   osr   pathlibr   typingr   r   r	   r
   sphinx.deprecationr   sphinx.errorsr   r   sphinx.localer   r   sphinx.utilr   collections.abcr   r   r   r   r   r   sphinx.applicationr   sphinx.environmentr   sphinx.util.tagsr   sphinx.util.typingr   r   	getLoggerr*   r  r#   r-   r  r  
ModuleTypeFunctionTyperD   r%   rL   r<   rN   rf   rh   r   r  rA  rk  rp  ru  r  r  r  r  r  r  r   r.   r/   r0   <module>r     s   ( ( ( " " " " " "                          : : : : : : : : : : : : 7 7 7 7 7 7 5 5 5 5 5 5 5 5               JIIIMMMMMMMMMMMMMM      ))))))333333%%%%%%IIIIIIII		8	$	$#
 
 
 
 
 e.0BC     *    =FIKK      2? ? ? ? ? ? ? ?& &dOd2 2 2 2 2iD iD iD iD iD iD iD iDXw$ w$ w$ w$ w$ w$ w$ w$t       F   (F F F FD	H 	H 	H 	H) ) ) )3 3 3 3/ / / />       FJ J J JZ% % % %   2     r/   