
    }c$                        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                   N    e Zd ZdZ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S )
ReSTMarkupz-
    Description of generic reST markup.
    namesigsignodereturnNc                    t          | j        | j        j        | j        |          }|d                             |           | j        j                            |           t          t          | j        	                    d                    }|
                    | j        |||           |                     | j        |          }|r'| j        d                             d||dd f           d S d S )Nidsrstlocationentriessingle )r   envstatedocumentobjtypeappendnote_explicit_targetr	   
ReSTDomain
get_domainnote_objectget_index_text	indexnode)selfr   r   r    node_iddomain	indextexts          2lib/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''d;;	 	WN9%,,h	7BPT-UVVVVV	W 	W    
objectnamec                     dS )Nr)    r5   r<   r   s      r9   r3   zReSTMarkup.get_index_text,   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.
        -)r-   r5   r   s     r9   make_old_idzReSTMarkup.make_old_id/   s     |c!D((r;   )	__name__
__module____qualname____doc__strr   r:   r3   rC   r>   r;   r9   r   r      s         
W 
W3 
W 
WTX 
W 
W 
W 
W C C    ) ) ) ) ) ) ) )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)rI   dirm
parsed_dirparsed_argss        r9   parse_directiverV   8   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|z  }|t          j        ||          z  }t          |          dk    r|t          j        ||          z  }|S )Nz.. %s::r   )rV   r   	desc_namelendesc_addname)r5   r   r    r   argsrZ   s         r9   handle_signaturezReSTDirective.handle_signatureP   sb    $S))
d$	8%i;;;t99q= 	9x,T4888Gr;   r<   r   c                 &    t          d          |z  S )N%s (directive)r   r?   s      r9   r3   zReSTDirective.get_index_textX   s    !""T))r;   Nc                     | j         r=| j        j                            dg           } |j        | j         d                    d S d S )Nrst:directivesr   )namesr*   ref_context
setdefaultr.   r5   r   s     r9   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 )Nrc   )r*   re   rf   poprg   s     r9   after_contentzReSTDirective.after_content`   sE    X)445ErJJ
 	JN	 	r;   )r!   N)
rD   rE   rF   rG   rH   r   r^   r3   rh   rk   r>   r;   r9   rX   rX   L   s         C . S    * *C *C * * * *- - - -
     r;   rX   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.
    option_spectyper   r    r!   c                    	 t          j        d|                                d          \  }}n# t          $ r |d }}Y nw xY w|t	          j        d|z  d|z            z  }|r|t	          j        d|z   d|z             z  }| j                            d          r(d| j        d         z  }|t	          j        ||          z  }|S )Nz\s*:\s+   :%s:rL   ro   z (%s))	resplitrM   
ValueErrorr   rZ   desc_annotationoptionsget)r5   r   r    r   argumenttexts         r9   r^   z$ReSTDirectiveOption.handle_signatureo   s    	'Xj#))++qAAND(( 	' 	' 	' $(DDD	' 	8%ftmVd]CCC 	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$   rA   :r#   r%   r   r`   z:%s: (directive option)r'   pairz; r)   r(   )r	   r0   r*   r1   current_directivejoinr-   r   r+   r,   r.   r/   r2   upperr   r4   )r5   r   r   r    r7   directive_nameprefixobjnamer6   keyr}   rz   s               r9   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 )Nrc   r)   )r*   re   rx   rg   s     r9   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.
        rA   )r   r-   r~   rB   s     r9   rC   zReSTDirectiveOption.make_old_id   s"     xxt'=tDEEEr;   )rD   rE   rF   rG   r   rn   copyr   __annotations__updater   	unchangedrH   r   r^   r:   propertyr~   rC   r>   r;   r9   rm   rm   f   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;   rm   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                 B    |t          j        d|z  d|z            z  }|S )Nrr   )r   rZ   )r5   r   r    s      r9   r^   zReSTRole.handle_signature   s&    8%fslFSLAAA
r;   r<   r   c                 &    t          d          |z  S )Nz	%s (role)ra   r?   s      r9   r3   zReSTRole.get_index_text   s    ~~$$r;   N)rD   rE   rF   rG   rH   r   r^   r3   r>   r;   r9   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 )$r0   zReStructuredText domain.r$   reStructuredText	directiverR   zdirective-optionrole)r   zdirective:optionr   )rR   r   objectsinitial_datar!   c                 8    | j                             di           S Nr   )datarf   )r5   s    r9   r   zReSTDomain.objects   s    y##Ir222r;   Nr-   r   r6   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)r5   r-   r   r6   r&   r   s         r9   r2   zReSTDomain.note_object   s    T?dl* 	H#|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)r5   r   typr   doc_node_ids         r9   	clear_doczReSTDomain.clear_doc   sY    ,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   )r5   r   r   r   r   r   r6   s          r9   merge_domaindatazReSTDomain.merge_domaindata   sZ    +4Y+?+E+E+G+G 	9 	9'KS$#wh 9+..S$Y'	9 	9r;   r*   fromdocnamebuilderr   targetnodecontnodec           
          |                      |          }|D ]@}	| j                            |	|fd          \  }
}|
rt          |||
|||dz   |	z             c S Ad S )NNNrL   )objtypes_for_roler   rx   r   )r5   r*   r   r   r   r   r   r   objtypesr-   	todocnamer6   s               r9   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:rL   )object_typesr   rx   r.   role_for_objtyper   )r5   r*   r   r   r   r   r   resultsr-   r   r6   s              r9   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   rq   )r   r   )r5   r   r   r   r6   s        r9   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   )%rD   rE   rF   rG   r   labelr   r   r   rX   rm   r   r   r   rolesr   r   rH   r   r   r   r   r   r2   r   r   r   r   r   r   r
   r   r   r   r   intr   r>   r;   r9   r0   r0      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;   r0   appc                 D    |                      t                     dddddS )Nbuiltin   T)versionenv_versionparallel_read_safeparallel_write_safe)
add_domainr0   )r   s    r9   setupr      s1    NN: "#	  r;   )7rG   rs   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   	getLoggerrD   r   compilerO   rH   r   rV   rX   rm   r   r0   r   r>   r;   r9   <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' ) ) ):(s (uS#X ( ( ( ((    J   4?F ?F ?F ?F ?F* ?F ?F ?FD	% 	% 	% 	% 	%z 	% 	% 	%G7 G7 G7 G7 G7 G7 G7 G7Tv $sCx.      r;   