
    O&iN*                        d Z ddlZddlmZmZ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mZ ddl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m Z  ddl!m"Z" ddl#m$Z$ ddl%m&Z&m'Z' ddl(m)Z)  e$j*        e+          Z, ej-        d          Z. G d dee/                   Z0de/dee/e/f         fdZ1 G d de0          Z2 G d de0          Z3 G d de0          Z4 G d de          Z5d edee/ef         fd!Z6dS )"zThe reStructuredText domain.    N)AnyDictIteratorListOptionalTuplecast)Element)
directives)addnodes)desc_signaturepending_xref)Sphinx)Builder)ObjectDescription)DomainObjType)BuildEnvironment)___)XRefRole)logging)make_idmake_refnode)
OptionSpecz\.\. (.+?)::(.*)$c                       e Zd ZU dZej        ej        ej        dZeed<   de	de	de
ddfd	Zd
e	de	de	fdZde	de	fdZde
dee	df         fdZde
de	fdZdS )
ReSTMarkupz-
    Description of generic reST markup.
    )noindexnoindexentrynocontentsentryoption_specnamesigsignodereturnNc                    t          | j        | j        j        | j        |          }|d                             |           | j        j                            |           t          t          | j        	                    d                    }|
                    | j        |||           d| j        vrD|                     | j        |          }|r)| j        d                             d||dd f           d S d S d S )Nidsrstlocationr   entriessingle )r   envstatedocumentobjtypeappendnote_explicit_targetr	   
ReSTDomain
get_domainnote_objectoptionsget_index_text	indexnode)selfr"   r#   r$   node_iddomain	indextexts          _/home/geonatureadmin/si_en_reseau/tutos/venv/lib/python3.11/site-packages/sphinx/domains/rst.pyadd_target_and_indexzReSTMarkup.add_target_and_index%   s    $(DJ$7tLLg&&&
00999j$("5"5e"<"<==4<wIII--++DL$??I [y)00(IwPRTX1YZZZZZ .-[ [    
objectnamec                     dS )Nr-    r:   rA   r"   s      r>   r8   zReSTMarkup.get_index_text2   s    rr@   c                     | j         dz   |z   S )zGenerate old styled node_id for reST markups.

        .. note:: Old Styled node_id was used until Sphinx-3.0.
                  This will be removed in Sphinx-5.0.
        -)r1   r:   r"   s     r>   make_old_idzReSTMarkup.make_old_id5   s     |c!D((r@   sig_node.c                     d|vrdS g }| j         j                            dd          D ]}||                    d          z  }|d         }t	          ||                    d          z             S )NfullnamerC   rst:directives:)r.   ref_contextgetsplittuple)r:   rI   directive_namesparentr"   s        r>   _object_hierarchy_partsz"ReSTMarkup._object_hierarchy_parts=   s{    X%%2h*../?DD 	1 	1Fv||C000OO
#_tzz#6777r@   c                 0   |                     d          sdS | j        j        j        }|j                             d          }|d         ^ }}|dk    rd| dS |j        dv rd                    |d                   }|dk    rd| dS |dk    rd	| d
S dS )N
_toc_partsr-   r1   directive:optionrM   >   allr<   role	directive.. ::)rO   r.   appconfigrS   toc_object_entries_show_parentsjoin)r:   rI   r^   r1   parentsr"   s         r>   _toc_entry_namezReSTMarkup._toc_entry_nameF   s    ||L)) 	2$/%%i00!,/$(((t;;;15FFF88H\233Dft;;;k!!!>>>!rr@   )__name__
__module____qualname____doc__r   flagr!   r   __annotations__strr   r?   r8   rH   r   rT   rb   rC   r@   r>   r   r      s          ?"%? K   [ [3 [ [TX [ [ [ [ C C    ) ) ) ) ) )8 85c? 8 8 8 8 3      r@   r   dr%   c                 t   |                                  }|                    d          s|dfS t                              |          }|s|dfS |                                \  }}|                                 r+|                                 d|                                 z   fS |                                 dfS )zParse a directive signature.

    Returns (directive, arguments) string tuple.  If no arguments are given,
    returns (directive, '').
    .r-    )strip
startswith
dir_sig_rematchgroups)rj   dirm
parsed_dirparsed_argss        r>   parse_directiverw   X   s     ''))C>># RyA RyhhjjJ (  ""C+*;*;*=*=$=>>  ""B''r@   c                   J    e Zd ZdZdededefdZdededefdZdd
ZddZ	d	S )ReSTDirectivez*
    Description of a reST directive.
    r#   r$   r%   c                     t          |          \  }}d| d}|                                |d<   |t          j        ||          z  }t	          |          dk    r|t          j        ||          z  }|S )Nr[   r\   rK   r   )rw   rn   r   	desc_namelendesc_addname)r:   r#   r$   r"   argsr{   s         r>   handle_signaturezReSTDirective.handle_signaturep   st    $S))
d"$NNN	"jjll
8%i;;;t99q==x,T4888Gr@   rA   r"   c                 &    t          d          |z  S )N%s (directive)r   rD   s      r>   r8   zReSTDirective.get_index_texty   s    !""T))r@   Nc                     | j         r=| j        j                            dg           } |j        | j         d                    d S d S )NrL   r   )namesr.   rN   
setdefaultr2   r:   r   s     r>   before_contentzReSTDirective.before_content|   sP    : 	--889I2NNJJdjm,,,,,	- 	-r@   c                 l    | j         j                            dg           }|r |j                     d S d S )NrL   )r.   rN   r   popr   s     r>   after_contentzReSTDirective.after_content   sE    X)445ErJJ
 	JN	 	r@   )r%   N)
rc   rd   re   rf   ri   r   r   r8   r   r   rC   r@   r>   ry   ry   l   s         C . S    * *C *C * * * *- - - -
     r@   ry   c                       e Zd ZU dZej                                        Zeed<   e	                    de
j        i           dededefdZdedededd	fd
Zedefd            ZdedefdZd	S )ReSTDirectiveOptionz6
    Description of an option for reST directive.
    r!   typer#   r$   r%   c                    	 t          j        d|                                d          \  }}n# t          $ r |d }}Y nw xY wd| d}|                                |d<   |t	          j        ||          z  }|r|t	          j        d|z   d|z             z  }| j                            d          r(d| j        d         z  }|t	          j        ||          z  }|S )Nz\s*:\s+   rM   rK   rm   r   z (%s))	rerP   rn   
ValueErrorr   r{   desc_annotationr7   rO   )r:   r#   r$   r"   argumentr{   texts          r>   r   z$ReSTDirectiveOption.handle_signature   s    	'Xj#))++qAAND(( 	' 	' 	' $(DDD	'  KKK	"jjll
8%i;;; 	Px/hhOOOG<F## 	<T\&11Dx/d;;;Gs   +. ??r"   Nc                 t   t          t          | j                            d                    }| j        }|r4d                    | j        |g          }d                    ||g          }n	| j        }|}t          | j        | j        j	        ||          }|d         
                    |           | j        j	                            |           |                    | j        |||           |rx|d                                         }	t          d          |z  t          d          |z  g}
| j        d	         
                    d
d                    |
          |d|	f           d S |d                                         }	t          d          |z  }| j        d	         
                    d||d|	f           d S )Nr(   rF   rM   r'   r)   r   r   z:%s: (directive option)r+   pairz; r-   r,   )r	   r4   r.   r5   current_directiver`   r1   r   r/   r0   r2   r3   r6   upperr   r9   )r:   r"   r#   r$   r<   directive_nameprefixobjnamer;   keyr   r   s               r>   r?   z(ReSTDirectiveOption.add_target_and_index   s   j$("5"5e"<"<==/ 	XXt|^<==Fhh566GG\FG$(DJ$7FFg&&&
009994<'GLLL 	Qq'--//C&''.8/00479DN9%,,fdiioowPRTW-XYYYYYq'--//C.//$6DN9%,,hgr3-OPPPPPr@   c                 X    | j         j                            d          }|r|d         S dS )NrL   r-   )r.   rN   rO   r   s     r>   r   z%ReSTDirectiveOption.current_directive   s2    X)--.>??
 	b>!2r@   c                 F    d                     | j        | j        |g          S )zGenerate old styled node_id for directive options.

        .. note:: Old Styled node_id was used until Sphinx-3.0.
                  This will be removed in Sphinx-5.0.
        rF   )r`   r1   r   rG   s     r>   rH   zReSTDirectiveOption.make_old_id   s"     xxt'=tDEEEr@   )rc   rd   re   rf   r   r!   copyr   rh   updater   	unchangedri   r   r   r?   propertyr   rH   rC   r@   r>   r   r      s          )499;;K;;;
$   C . S     Q Q3 Q QTX Q Q Q Q4 3    XF F F F F F F Fr@   r   c                   :    e Zd ZdZdededefdZdededefdZd	S )
ReSTRolez%
    Description of a reST role.
    r#   r$   r%   c                 p    d| d}|                                 |d<   |t          j        ||          z  }|S )NrM   rK   )rn   r   r{   )r:   r#   r$   r{   s       r>   r   zReSTRole.handle_signature   s=    JJJ	!iikk
8%i;;;
r@   rA   r"   c                 &    t          d          |z  S )Nz	%s (role)r   rD   s      r>   r8   zReSTRole.get_index_text   s    ~~$$r@   N)rc   rd   re   rf   ri   r   r   r8   rC   r@   r>   r   r      sp         C . S    % %C %C % % % % % %r@   r   c                   P   e Zd ZU dZdZdZ e ed          d           e ed          d           e ed          d          dZe	e
edZ e             e            d	Zd
i iZeeeeeef         ef         f         ed<   edeeeef         eeef         f         fd            Zd#dededededdf
dZdeddfdZdee         deddfdZdedededededededee         fd Z dededededededeeeef                  fd!Z!de"eeeeeee#f                  fd"Z$dS )$r4   zReStructuredText domain.r(   reStructuredTextrZ   rs   zdirective-optionrY   )rZ   rW   rY   )rs   rY   objectsinitial_datar%   c                 8    | j                             di           S Nr   )datar   )r:   s    r>   r   zReSTDomain.objects   s    y##Ir222r@   Nr1   r"   r;   r*   c                     ||f| j         v rA| j         ||f         \  }}t                              t          d          |||fz  |           | j        j        |f| j         ||f<   d S )Nz4duplicate description of %s %s, other instance in %sr)   )r   loggerwarningr   r.   docname)r:   r1   r"   r;   r*   r   s         r>   r6   zReSTDomain.note_object   s    T?dl**#|GTM:GWNN2TUU#T734>F  H H H (,x'7&AWd]###r@   r   c                     t          | j                                                  D ]\  \  }}\  }}||k    r
| j        ||f= d S N)listr   items)r:   r   typr"   doc_node_ids         r>   	clear_doczReSTDomain.clear_doc   sV    ,01C1C1E1E,F,F 	, 	,(KS$#xg~~Ld+	, 	,r@   docnames	otherdatac                 v    |d                                          D ]\  \  }}\  }}||v r||f| j        ||f<   d S r   )r   r   )r:   r   r   r   r"   r   r;   s          r>   merge_domaindatazReSTDomain.merge_domaindata  sW    +4Y+?+E+E+G+G 	9 	9'KS$#wh+..S$Y'	9 	9r@   r.   fromdocnamebuilderr   targetnodecontnodec           
          |                      |          }|D ]@}	| j                            |	|fd          \  }
}|
rt          |||
|||dz   |	z             c S Ad S )NNNrm   )objtypes_for_roler   rO   r   )r:   r.   r   r   r   r   r   r   objtypesr1   	todocnamer;   s               r>   resolve_xrefzReSTDomain.resolve_xref  s     ))#.. 	F 	FG!%!1!17F2C\!R!RIw F#G[)W$,fslW.DF F F F FF tr@   c                     g }| j         D ]i}| j                            ||fd          \  }	}
|	rE|                    d|                     |          z   t          |||	|
||dz   |z             f           j|S )Nr   zrst:rm   )object_typesr   rO   r2   role_for_objtyper   )r:   r.   r   r   r   r   r   resultsr1   r   r;   s              r>   resolve_any_xrefzReSTDomain.resolve_any_xref  s     .0( 	Q 	QG!%!1!17F2C\!R!RIw Q)>)>w)G)G G ,Wk9g-5v|g7M!O !O P Q Q Q r@   c              #   t   K   | j         d                                         D ]\  \  }}\  }}|||||dfV  d S )Nr   r   )r   r   )r:   r   r"   r   r;   s        r>   get_objectszReSTDomain.get_objects  s\      /3y/C/I/I/K/K 	7 	7+KS$+'7c7GQ66666	7 	7r@   r   )%rc   rd   re   rf   r"   labelr   r   r   ry   r   r   r   r   rolesr   r   ri   r   rh   r   r   r   r6   r   r   r   r   r   r   r
   r   r   r   r   intr   rC   r@   r>   r4   r4      s        ""DE $GAAkNNE::#GAA&8$9$95AA#GAAfIIF;; L #/ J 



 E
 	2;L$sDsCx#!5667    3eCHouS#X>? 3 3 3 X3B B3 Bc BC B3 BZ^ B B B B, , , , , ,
9c 9t 9 9 9 9 9	 0 	s 	W 		'*	2>	JQ	"7+	 	 	 	
$4 
3 
QX 
!$
,8
DK
"5g#67
 
 
 
7XeCc3S,H&IJ 7 7 7 7 7 7r@   r4   r]   c                 D    |                      t                     dddddS )Nbuiltin   T)versionenv_versionparallel_read_safeparallel_write_safe)
add_domainr4   )r]   s    r>   setupr   #  s1    NN: "#	  r@   )7rf   r   typingr   r   r   r   r   r   r	   docutils.nodesr
   docutils.parsers.rstr   sphinxr   sphinx.addnodesr   r   sphinx.applicationr   sphinx.buildersr   sphinx.directivesr   sphinx.domainsr   r   sphinx.environmentr   sphinx.localer   r   sphinx.rolesr   sphinx.utilr   sphinx.util.nodesr   r   sphinx.util.typingr   	getLoggerrc   r   compilerp   ri   r   rw   ry   r   r   r4   r   rC   r@   r>   <module>r      s   " " 				 C C C C C C C C C C C C C C C C C C " " " " " " + + + + + +       8 8 8 8 8 8 8 8 % % % % % % # # # # # # / / / / / / * * * * * * * * / / / / / /         ! ! ! ! ! !       3 3 3 3 3 3 3 3 ) ) ) ) ) )		8	$	$RZ,--
: : : : :"3' : : :z(s (uS#X ( ( ( ((    J   6AF AF AF AF AF* AF AF AFH% % % % %z % % %G7 G7 G7 G7 G7 G7 G7 G7Tv $sCx.      r@   