
    O&i}T                        d Z ddlZddlZddlZddlmZ ddlmZmZ ddl	m
Z
mZmZmZmZmZmZmZmZmZmZmZ ddlmZmZ ddlmZmZ ddlmZ dd	lmZ dd
l m!Z!m"Z" ddl#m$Z$ ddl%m&Z& e
rddl'm(Z( ddl)m*Z*  ej+        e,          Z-dZ.e/ej0        ej1        fZ2 ej3        d          Z4 G d de          Z5dede6fdZ7 G d d          Z8 G d d          Z9de:dee$         dee:ef         fdZ;ddde9ddfd Z<ddde9ddfd!Z=ddde9ddfd"Z>ddde9ddfd#Z?ded         de9ddfd$Z@ddde9ddfd%ZAddd&d'd(ee:         d)ee:         d*ee:         dee:         fd+ZBdddee:ef         fd,ZCdS )-z"Build configuration file handling.    N)OrderedDict)getenvpath)TYPE_CHECKINGAnyCallableDict	GeneratorIteratorList
NamedTupleOptionalSetTupleUnion)ConfigErrorExtensionError)___)logging)format_date)cdfs_encoding)Tags)NoneType)Sphinx)BuildEnvironmentzconf.pyz^((\d{4}-)?)(\d{4})(?=[ ,])c                   >    e Zd ZU eed<   eed<   eeef         ed<   dS )ConfigValuenamevaluerebuildN)__name__
__module____qualname__str__annotations__r   r   bool     Z/home/geonatureadmin/si_en_reseau/tutos/venv/lib/python3.11/site-packages/sphinx/config.pyr   r      s9         
IIIJJJ49r*   r   objreturnc                 L   t          | t                    rdS t          | t                    r<|                                 D ]&\  }}t	          |          rt	          |          s dS 'n;t          | t
          t          t          f          rt          d | D                       S dS )z'Check if object is serializable or not.Fc              3   4   K   | ]}t          |          V  d S N)is_serializable).0is     r+   	<genexpr>z"is_serializable.<locals>.<genexpr>-   s*      33!?1%%333333r*   T)	
isinstanceUNSERIALIZABLE_TYPESdictitemsr1   listtuplesetall)r,   keyr!   s      r+   r1   r1   $   s    #+,, 4u	C		 4))++ 	 	JC"3'' u/E/E uu	 
C$s+	,	, 433s3333334r*   c                   D    e Zd ZdZdeddfdZdeeeef         de	f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'))
    
candidatesr-   Nc                     || _         d S r0   r@   )selfr@   s     r+   __init__zENUM.__init__8   s    $r*   r!   c                      t          |t          t          f          rt           fd|D                       S | j        v S )Nc              3   *   K   | ]}|j         v V  d S r0   rB   )r2   itemrC   s     r+   r4   zENUM.match.<locals>.<genexpr>=   s*      AA4tt.AAAAAAr*   )r5   r9   r:   r<   r@   )rC   r!   s   ` r+   matchz
ENUM.match;   sI    edE]++ 	,AAAA5AAAAAADO++r*   )r#   r$   r%   __doc__r&   rD   r   r   r   r(   rH   r)   r*   r+   r?   r?   2   sn         
%C %D % % % %,5dE!12 ,t , , , , , ,r*   r?   c            
          e Zd ZU dZi dddg fdddg fddd	egfd
d d	egfdddg fdddg fdddg fdddegfdddegfddgdg fdddegfdddg fdddg fdd dg fddd idefd!d"dg fd#g degfi d$d%gdegfd&ddegfd'd(dg fd)d(dg fd*d(degfd+d,d ed,d-d.          fd/ddg fd0ddg fd1dd	egfd2d3dg fd4i dg fd5g d	g fd6dd	egfd7ddg fd8g dg fd9g d	g fd:ddegfi d;ddegfd<d(dg fd=d>degfd?ddegfd@i dg fdAddg fdBddg fdCg dg fdDg dg fdEddg fdFdGdg fdHi dg fdIddg fdJddegfdKd(dg fdLd(dg fdMddg fddegfd(dg fdNdg fdOgdPdQgdRdg fddg fdSZ	e
eef         edT<   i i fdUe
eef         dVe
eef         dWdfdXZe	 dodYedVee
         dZee         dWd fd[            Zd\ed]edWefd^Zdpd_Zdpd`ZdpdaZd\edWefdbZd\edWefdcZd\ed]edWdfddZd\edWdfdeZd\edWefdfZdWeeddf         fdgZd\ed3edheeef         diedWdf
djZdheee e         f         dWe!e         fdkZ"dWe
fdlZ#dme
dWdfdnZ$dS )qConfiga  Configuration file abstraction.

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

    It is exposed via the :py:attr:`sphinx.application.Application.config` and
    :py:attr:`sphinx.environment.Environment.config` attributes. For example,
    to get the value of :confval:`language`, use either ``app.config.language``
    or ``env.config.language``.
    projectPythonenvauthorunknownproject_copyright html	copyrightc                     | j         S r0   )rQ   )cs    r+   <lambda>zConfig.<lambda>X   s	     3 r*   versionreleasetoday	today_fmtNlanguageenlocale_dirslocalesfigure_language_filenamez{root}.{language}{ext} gettext_allow_fuzzy_translationsFgettext
master_docindexroot_docc                     | j         S r0   )rc   )configs    r+   rW   zConfig.<lambda>e   s	    F$5 r*   source_suffixz.rstrestructuredtextsource_encodingz	utf-8-sigexclude_patternsinclude_patternsz**default_roleadd_function_parenthesesTadd_module_namestoc_object_entriestoc_object_entries_show_parentsdomainr<   hidetrim_footnote_reference_spaceshow_authorspygments_stylehighlight_languagedefaulthighlight_optionstemplates_pathtemplate_bridgekeep_warningssuppress_warnings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math_number_allmath_eqref_formatmath_numfig
tls_verifytls_cacertsqDejamantext)	languagesbuilders)
user_agentsmartquotessmartquotes_actionsmartquotes_excludesoption_emphasise_placeholdersconfig_valuesrg   	overridesr-   c                    t          |          | _        t          j                                        | _        || _        |                    dd           | _        d| j        v rnt          | j        d         t                    r1| j                            d                              d          |d<   n| j                            d          |d<   |                    dg           | _        d S )Nsetup
extensions,)r7   r   rK   r   copyvalues_raw_configgetr   r5   r&   popsplitr   )rC   rg   r   s      r+   rD   zConfig.__init__   s    i*//11!)/GT)B)B
4>))$.6<< H'+~'9'9,'G'G'M'Mc'R'R|$$'+~'9'9,'G'G|$%+ZZb%A%Ar*   confdirtagsc                 \   t          j        |t                    }t          j        |          st	          t          d          |z            t          ||          }|                    dd          ,t          	                    t          d                     d|d<    | ||pi           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   joinCONFIG_FILENAMEisfiler   r   eval_config_filer   loggerwarning)clsr   r   r   filename	namespaces         r+   readzConfig.read   s    
 9Wo66{8$$ 	'b!WXX%& ' ' '$Xt44	 ==S))1NN2 @ A A B B B %)Ij!s9io2...r*   r    r!   c                    t          |t                    s|S | j        |         d         }| j        |         d         t          k    r|S | j        |         d         t          t          hk    r|dk    rdS |dk    rdS |S t          |          t          u s| j        |         d         t          gk    r|dk    rdS t	          |          S t          |t                    r$t          t          d          ||dz   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 |4t          |t                    st          t          d          |z            |S )Nr      0F1TzZcannot 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)r5   r&   r   r   r(   typer7   
ValueErrorr   r9   r   intcallable)rC   r    r!   defvalueexcs        r+   convert_overrideszConfig.convert_overrides   s   %%% &	L{4(+H{4 #s**T"1%$44C<< 5c\\4 Lh4''4;t+<Q+?D6+I+IC<< 5;;&Hd++   %S "T "T"&|(;!<"= > > > Hd++ {{3'''Hc** =u::%! = = =$R(Y%Z%Z&+T]&3 4 49<== (## %j3.G.G%  %5 "6 "68<"= > > > s   E 
F"E<<Fc                     g d}|D ]}	 || j         v r*|                     || j         |                   | j        |<   n|| j        v r| j        |         | j        |<   U# t          $ r%}t
                              d|           Y d}~d}~ww xY wdS )zs
        Initialize some limited config variables before initializing i18n and loading
        extensions.
        )r   r}   r\   r^   %sN)r   r   __dict__r   r   r   r   )rC   	variablesr    r   s       r+   pre_init_valueszConfig.pre_init_values   s    
 UTT	 	* 	*D*4>))*.*@*@t~VZG[*\*\DM$''T---*.*:4*@DM$' * * *tS))))))))*	* 	*s   AA
B&BBc                 .   | j         }| j                                        D ]\  }}	 d|v r3|                    dd          \  }}||                    |i           |<   =|| j        vr)t                              t          d          |           ot          |t                    r|                     ||          ||<   n|||<   # t          $ r%}t                              d|           Y d }~d }~ww xY w|D ]}|| j        v r||         | j        |<   d S )N.r   z-unknown config value %r in override, ignoringr   )r   r   r8   r   
setdefaultr   r   r   r   r5   r&   r   r   r   )rC   rg   valnamer!   realvalnamer=   r   r    s           r+   init_valueszConfig.init_values   sR   !"n2244 	* 	*NGU*'>>'.}}S!'<'<$K>CF%%k266s;DK//NN2&U#V#V#*, , ,eS)) ,&*&<&<We&L&LF7OO&+F7O * * *tS))))))))* 	3 	3Dt{""&,Tld#	3 	3s#   6C1C4C
C4C//C4c                     | j         }|D ]$}|| j        vr|| j        v r||         | j        |<   %t          d|            dS )zc
        Initialize additional config variables that are added after init_values() called.
        N)r   r   r   check_confval_types)rC   rg   r    s      r+   post_init_valueszConfig.post_init_values  s[     ! 	3 	3D4=((TT[-@-@&,Tld#D$'''''r*   c                     |                     d          rt          |          || j        vrt          t          d          |z            | j        |         d         }t	          |          r ||           S |S )Nr   zNo such config value: %sr   )
startswithAttributeErrorr   r   r   )rC   r    rx   s      r+   __getattr__zConfig.__getattr__  s    ??3 	' &&&t{"" $>!?!?$!FGGG+d#A&G 	!74== r*   c                 "    t          | |          S r0   )getattrrC   r    s     r+   __getitem__zConfig.__getitem__  s    tT"""r*   c                 (    t          | ||           d S r0   )setattrrC   r    r!   s      r+   __setitem__zConfig.__setitem__   s    dE"""""r*   c                 &    t          | |           d S r0   )delattrr   s     r+   __delitem__zConfig.__delitem__#  s    dr*   c                     || j         v S r0   )r   r   s     r+   __contains__zConfig.__contains__&  s    t{""r*   c              #      K   | j                                         D ],\  }}t          |t          | |          |d                   V  -d S )Nr   )r   r8   r   r   r   s      r+   __iter__zConfig.__iter__)  s^      ;,,.. 	C 	CKD%dGD$$7$7qBBBBBB	C 	Cr*   r"   typesc                 p    || j         v rt          t          d          |z            |||f| j         |<   d S )NzConfig value %r already present)r   r   r   )rC   r    rx   r"   r   s        r+   addz
Config.add-  sD    4; $E!F!F!MNNN!('5 9DKr*   c                 P    t          t                    rgfd| D             S )Nc              3   .   K   | ]}|j         v |V  d S r0   )r"   )r2   r!   r"   s     r+   r4   z Config.filter.<locals>.<genexpr>6  s/      DD%5=G+C+C+C+C+C+CDDr*   )r5   r&   )rC   r"   s    `r+   filterzConfig.filter3  s6    gs## 	 iGDDDD4DDDDr*   c                 N   i }| j                                         D ]/\  }}|                    d          st          |          s*|||<   0i |d<   | j                                        D ]:\  }}t          | |          }t          |          sd}||d         df|d         |<   ;|S )z'Obtains serializable data for pickling.r   r   Nr   )r   r8   r   r1   r   r   )rC   r   r=   r!   
real_values        r+   __getstate__zConfig.__getstate__8  s     ---// 	& 	&JC~~c"" &/%*@*@ & %  +++-- 	C 	CJC s++J":.. "!
 (258T&BHXs##r*   statec                 :    | j                             |           d S r0   )r   update)rC   r   s     r+   __setstate__zConfig.__setstate__O  s    U#####r*   )NN)r-   N)%r#   r$   r%   rI   r&   r   r(   r?   r   r   r	   r   r'   rD   classmethodr   r   r   r   r   r   r   r   r   r   r   r   r
   r   r   r   r   r   r   r   r   r   r)   r*   r+   rK   rK   B   s        	 	 A'HeR(A' 	9eR(A' 	b&3%0	A'
 	33VcUCA' 	Br?A' 	Br?A' 	"eRA' 	dEC5)A' 	T53%(A' 	UB/A' 	#%=use$LA' 	+UIr,BA'" 	wr*#A'$ 	55ubA%A'& 	6#56sC'A'( 	K3)A'* 	R.+A' A', 	dVUSE2-A'. 	use,/A'0 	#T5"$51A'2 	T5"-3A'4 	tUTF35A'6 	*He,0D5&,I,I,K7A': 	(%);;A'< 	r*=A'> 	4#/?A'@ 	y%4AA'B 	b%_CA'D 	2vr*EA'F 	D&3%0GA'H 	%+IA'J 	b%_KA'L 	!2vr"2MA'N 	tUSE*OA' A' A'P 	tUSE*QA'R 	tUB/SA'T 	4
3UA'V 	tcU+WA'X 	RrNYA'Z 	ub)[A'\ 	UD"%]A'^ 	2tR._A'` 	T2aA'b 	5%$cA'd 	5"~eA'f 	"eRgA'j 	E5"-kA'l 	dEC51mA'n 	eR(oA'p 	tUB'qA'r 	eR(sA' A't USE*eR($eR004v/4fo"? "?!&!, +0);AA' A' A'M4U
# A A AF 13PR B BtCH~ BtCH~ BW[ B B B B TX/ //&.tn/CKD>/	/ / / [/,'c '# '# ' ' ' 'R* * * *3 3 3 3,	( 	( 	( 	(     # # # # # ## #C #D # # # #     # # # # # #C)Kt$;< C C C C: :c :E$)4D :S :UY : : : :EeCcN3 E8M E E E E
d    .$$ $4 $ $ $ $ $ $r*   rK   r   r   c                    i }| |d<   ||d<   t          t          j        |                     5  	 t          | d          5 }t	          |                                |                     t                    d          }t          ||           ddd           n# 1 swxY w Y   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   rbexecNz7There is a syntax error in your configuration file: %s
zKThe 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   dirnameopencompiler   encoder   r   SyntaxErrorr   r   
SystemExit	Exception	traceback
format_exc)r   r   r   fcodeerrmsgr   s           r+   r   r   S  s    "I$IjIf	DL""	#	# E E	Eh%% &qvvxx)E)EvNNT9%%%& & & & & & & & & & & & & & &  	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( sq   EB$ ABB$B	B$B	 B$#E$
E."CEC<<E3EEEE!Eappr   rg   c                    |j         }t          |t                    rt          |di          |_         dS t          |t          t
          f          r t          d |D                       |_         dS t          |t                    rt          |j                   |_         dS t                              t          d|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
    Nc                     g | ]}|d fS r0   r)   )r2   ss     r+   
<listcomp>z)convert_source_suffix.<locals>.<listcomp>  s    +M+M+M!QI+M+M+Mr*   zeThe config value `source_suffix' expects a string, list of strings, or dictionary. But `%r' is given.)
rh   r5   r&   r   r9   r:   r7   r   r   r   )r  rg   rh   s      r+   convert_source_suffixr  p  s     (M-%% A
  +M4+@AA	MD%=	1	1 	A*+M+M}+M+M+MNN	M4	(	( A*6+?@@r /1>? @ @ 	A 	A 	A 	A 	A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 r0   )r5   r7   )r2   vs     r+   r4   z,convert_highlight_options.<locals>.<genexpr>  s,      II1:a..IIIIIIr*   N)ry   r<   r   rw   )r  rg   optionss      r+   convert_highlight_optionsr    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   r   r   )r  rg   r   s      r+   init_numfig_formatr    sY     !, ||
mm#$\??4 4M -...(Fr*   c                     t          d          AdD ]@}||v r8dt          dd          z  }t                              |||                   ||<   ?dS d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_EPOCHN)rT   epub_copyrightz\g<1>%sz%Yr]   )r\   )r   r   copyright_year_resub)r  rg   kreplaces       r+   correct_copyright_yearr    sv     !"".0 	F 	FAF{{${4$'G'G'GG-11'6!9EEq		 /.	F 	Fr*   c           
      Z   |D ]}|j         |j                 \  }}}t          |          r ||          }||s8|t          u rBt	          |t
                    rk|                    |j                  sPt          d          }t          
                    |                    |j        |j        |j                  d           t          |j                  t          |          u rt          |j                  |v rt          t          |j                  j        t          |j                  fz             t          t          |          j                  z  }|                    t"                     |ry|rt          d          }d |D             }t%          |          dk    r8d	                    d
                    |dd                   |d                   }	nd                    |          }	t          
                    |                    |j        t          |j                  |	          d           At          d          }t          
                    |                    |j        t          |j                  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    currentr@   T)oncezNThe config value `{name}' has type `{current.__name__}'; expected {permitted}.c                 B    g | ]}d                      |j                  S )z`{}')formatr#   )r2   rV   s     r+   r  z'check_confval_types.<locals>.<listcomp>  s&    &V&V&VQv}}QZ'@'@&V&V&Vr*   r   z	{}, or {}z, z or )r    r  	permittedzZThe config value `{name}' has type `{current.__name__}', defaults to `{default.__name__}'.)r    r  rx   )r   r    r   r   r5   r?   rH   r!   r   r   r   r  r@   r   r;   	__bases__discardobjectlenr   )
r  rg   confvalrx   r"   annotationsr  common_baseswrapped_annotationsr   s
             r+   r   r     s     0M 0M(.gl(C%+G 	&gfooG?;?#T** %	M$$W]33 Y 5 6 6szzw|29-5@5K  *  M  MSW  Y Y Y GM""d7mm33GM""k11W] 3 3 =gmATAT@V VWWW 7889L  (((  M 1 2 2&V&V+&V&V&V#*++a// + 2 2		"5crc":;;+B/!1 !1II !',? @ @Iszzw|26w}2E2E4=  *  ?  ?EI  K K K K  = > >szzw|26w}2E2E26w--  *  A  AGK  M M M M]0M 0M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   )r  rg   r   s      r+   check_primary_domainr,    sh    *N %cl55nEE %rABBNSSS $% % % %r*   rN   r   addedchangedremovedc                     | j         j        dk    rOd| j        j        vrAd| j        j        v r3t                              t          d                     d| j         _        |S )zjAdjust root_doc to 'contents' to support an old project which does not have
    any root_doc setting.
    rd   contentszkSince v2.0, Sphinx uses "index" as root_doc by default. Please add "root_doc = 'contents'" to your conf.py.)rg   re   rL   docnamesr   r   r   )r  rN   r-  r.  r/  s        r+   check_root_docr3    sp    
 	
w&&3;///#+...r R S S 	T 	T 	T(
Nr*   c                    |                      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   )priorityzenv-get-outdatedbuiltinT)rX   parallel_read_safeparallel_write_safe)connectr  r  r  r  r   r,  r3  )r  s    r+   r   r     s    KK!6KEEEKK!:SKIIIKK!3cKBBBKK!7#KFFFKK!4sKCCCKK!5KDDDKK"N333 "#  r*   )DrI   rer   r   collectionsr   osr   r   typingr   r   r   r	   r
   r   r   r   r   r   r   r   sphinx.errorsr   r   sphinx.localer   r   sphinx.utilr   sphinx.util.i18nr   sphinx.util.osutilr   r   sphinx.util.tagsr   sphinx.util.typingr   sphinx.applicationr   sphinx.environmentr   	getLoggerr#   r   r   r   
ModuleTypeFunctionTyper6   r   r  r   r(   r1   r?   rK   r&   r   r  r  r  r  r   r,  r3  r   r)   r*   r+   <module>rJ     sR   ( ( 				      # # # # # #        1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 6 5 5 5 5 5 5 5               ( ( ( ( ( ( . . . . . . . . ! ! ! ! ! ! ' ' ' ' ' ' 4))))))333333		8	$	$e.0BC BJ=>>     *        , , , , , , , , N$ N$ N$ N$ N$ N$ N$ N$bs (4. T#s(^    :Ax A AD A A A A2	H8 	HV 	H 	H 	H 	H 	H	)H 	)f 	) 	) 	) 	) 	)
F 
F& 
FT 
F 
F 
F 
F4MXh/ 4M 4MD 4M 4M 4M 4Mn%h % %4 % % % % '9 #c( H/23x<?H   x DcN      r*   