
    Fe)                       d Z ddlmZ ddlZddl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mZ dd
lmZ ddlmZ ddlmZmZ er,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)  ejT                  e+      Z, ejZ                  d      Z. G d dee/         Z0d!dZ1 G d de0      Z2 G d de0      Z3 G d de0      Z4 G d de      Z5d"d Z6y)#zThe reStructuredText domain.    )annotationsN)TYPE_CHECKINGAnycast)
directives)addnodes)ObjectDescription)DomainObjType)___)XRefRole)logging)make_idmake_refnode)Iterator)Element)desc_signaturepending_xref)Sphinx)Builder)BuildEnvironment)
OptionSpecz\.\. (.+?)::(.*)$c                      e Zd ZU dZej
                  ej
                  ej
                  ej
                  ej
                  ej
                  ej
                  dZded<   d
dZddZ	ddZ
ddZy	)
ReSTMarkupz-
    Description of generic reST markup.
    )zno-indexno-index-entryzno-contents-entryzno-typesettingnoindexnoindexentrynocontentsentryr   option_specc                   t        | j                  | j                  j                  | j                  |      }|d   j                  |       | j                  j                  j                  |       t        t        | j                  j                  d            }|j                  | j                  |||       d| j                  vrC| j                  | j                  |      }|r$| j                  d   j                  d||dd f       y y y )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)selfnamesigsignodenode_iddomain	indextexts          4/usr/lib/python3/dist-packages/sphinx/domains/rst.pyadd_target_and_indexzReSTMarkup.add_target_and_index0   s    $((DJJ$7$7tLg&

009j$(("5"5e"<=4<<wI4<</++DLL$?Iy)00(IwPRTX1YZ  0    c                     y)Nr(    r5   
objectnamer6   s      r<   r3   zReSTMarkup.get_index_text=   s    r>   c                    d|vryg }| j                   j                  j                  dd      D ]  }||j                  d      z  } |d   }t	        ||j                  d      z         S )Nfullnamer@   rst:directives:)r)   ref_contextgetsplittuple)r5   sig_nodedirective_namesparentr6   s        r<   _object_hierarchy_partsz"ReSTMarkup._object_hierarchy_parts@   sn    X%hh**../?D 	1Fv||C00O	1
#_tzz#677r>   c                4   |j                  d      sy| j                  j                  j                  }|j                  j                  d      }|d   ^ }}|dk(  rd| dS |j
                  dv rdj                  |d         }|dk(  rd| dS |dk(  rd	| d
S y)N
_toc_partsr(   r,   directive:optionrF   >   allr:   role	directive.. ::)rH   r)   appconfigrM   toc_object_entries_show_parentsjoin)r5   rK   rX   r,   parentsr6   s         r<   _toc_entry_namezReSTMarkup._toc_entry_nameI   s    ||L)$$//%%i0!,/$((tfA;115FF88H\23DftfA;k!b>!r>   Nr6   strr7   r^   r8   r   returnNonerB   r^   r6   r^   r_   r^   )rK   r   r_   ztuple[str, ...])rK   r   r_   r^   )__name__
__module____qualname____doc__r   flagr    __annotations__r=   r3   rN   r\   r@   r>   r<   r   r   "   s]     OO$//'__$//??"%??K [8r>   r   c                2   | j                         }|j                  d      s|dfS t        j                  |      }|s|dfS |j	                         \  }}|j                         r#|j                         d|j                         z   fS |j                         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)ddirm
parsed_dirparsed_argss        r<   parse_directiveru   [   s     '')C>>#RyARyhhjJ  "C+*;*;*=$=>>  "B''r>   c                  0    e Zd ZdZddZddZd	dZd	dZy)
ReSTDirectivez*
    Description of a reST directive.
    c                    t        |      \  }}d| d}|j                         |d<   |t        j                  ||      z  }t	        |      dkD  r|t        j
                  ||      z  }|S )NrU   rV   rD   r   )ru   rk   r   	desc_namelendesc_addname)r5   r7   r8   r6   argsry   s         r<   handle_signaturezReSTDirective.handle_signatures   sk    $S)
d$rN	"jjl
8%%i;;t9q=x,,T488Gr>   c                    t        d      |z  S )N%s (directive)r   rA   s      r<   r3   zReSTDirective.get_index_text|   s    !"T))r>   c                    | j                   rF| j                  j                  j                  dg       } |j                  | j                   d          y y )NrE   r   )namesr)   rG   
setdefaultr-   r5   r   s     r<   before_contentzReSTDirective.before_content   sC    ::--889I2NJJdjjm, r>   c                x    | j                   j                  j                  dg       }|r |j                          y y )NrE   )r)   rG   r   popr   s     r<   after_contentzReSTDirective.after_content   s3    XX))445ErJ
JNN r>   Nr7   r^   r8   r   r_   r^   ra   )r_   r`   )rb   rc   rd   re   r}   r3   r   r   r@   r>   r<   rw   rw   o   s    *-
r>   rw   c                      e Zd ZU dZej
                  j                         Zded<   ej                  de	j                  i       d	dZd
dZedd       Zy)ReSTDirectiveOptionz6
    Description of an option for reST directive.
    r   r    typec                   	 t        j                  d|j                         d      \  }}d| d}|j                         |d<   |t	        j
                  ||      z  }|r|t	        j                  d|z   d|z         z  }| j                  j                  d      r+d| j                  d   z  }|t	        j                  ||      z  }|S # t        $ r |d }}Y w xY w)	Nz\s*:\s+   )maxsplitrF   rD   rj   r   z (%s))	rerI   rk   
ValueErrorr   ry   desc_annotationr2   rH   )r5   r7   r8   r6   argumentry   texts          r<   r}   z$ReSTDirectiveOption.handle_signature   s    	'XXj#))+JND( vQK	"jjl
8%%i;;x//hhOOG<<F#T\\&11Dx//d;;G  	' $(D	's   )C CCc                H   t        t        | j                  j                  d            }| j                  }|r1dj                  | j                  |g      }dj                  ||g      }n| j                  }|}t        | j                  | j                  j                  ||      }|d   j                  |       | j                  j                  j                  |       |j                  | j                  |||       |rb|d   j                         }	t        d      |z  t        d      |z  g}
| j                  d	   j                  d
dj                  |
      |d|	f       y |d   j                         }	t        d      |z  }| j                  d	   j                  d||d|	f       y )Nr#   -rF   r"   r$   r   r   z:%s: (directive option)r&   pairz; r(   r'   )r   r/   r)   r0   current_directiverZ   r,   r   r*   r+   r-   r.   r1   upperr   r4   )r5   r6   r7   r8   r:   directive_nameprefixobjnamer9   keyr   r   s               r<   r=   z(ReSTDirectiveOption.add_target_and_index   sh   j$(("5"5e"<=//XXt||^<=Fhh56G\\FG$((DJJ$7$7Fg&

0094<<'GLq'--/C&'.8/0479DNN9%,,fdiiowPRTW-XYq'--/C./$6DNN9%,,hgr3-OPr>   c                \    | j                   j                  j                  d      }|r|d   S y)NrE   r(   )r)   rG   rH   r   s     r<   r   z%ReSTDirectiveOption.current_directive   s-    XX))--.>?
b>!r>   Nr   r]   )r_   r^   )rb   rc   rd   re   r   r    copyrg   updater   	unchangedr}   r=   propertyr   r@   r>   r<   r   r      s_     )4499;K;
$$  Q4  r>   r   c                       e Zd ZdZddZddZy)ReSTRolez%
    Description of a reST role.
    c                j    d| d}|j                         |d<   |t        j                  ||      z  }|S )NrF   rD   )rk   r   ry   )r5   r7   r8   ry   s       r<   r}   zReSTRole.handle_signature   s;    uAJ	!iik
8%%i;;
r>   c                    t        d      |z  S )Nz	%s (role)r   rA   s      r<   r3   zReSTRole.get_index_text   s    ~$$r>   Nr   ra   )rb   rc   rd   re   r}   r3   r@   r>   r<   r   r      s    %r>   r   c                     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ded<   edd       ZdddZddZddZ	 	 	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 	 ddZddZy)r/   zReStructuredText domain.r#   reStructuredTextrT   rq   zdirective-optionrS   )rT   rQ   rS   )rq   rS   objectsz%dict[str, dict[tuple[str, str], str]]initial_datac                :    | j                   j                  di       S Nr   )datar   )r5   s    r<   r   zReSTDomain.objects   s    yy##Ir22r>   Nc                    ||f| j                   v r:| j                   ||f   \  }}t        j                  t        d      |||fz  |       | j                  j
                  |f| j                   ||f<   y )Nz4duplicate description of %s %s, other instance in %sr$   )r   loggerwarningr   r)   docname)r5   r,   r6   r9   r%   r   s         r<   r1   zReSTDomain.note_object   sx    T?dll*#||GTM:GWNN2TU#T734>F  H (,xx'7'7&AWd]#r>   c                    t        | j                  j                               D ]   \  \  }}\  }}||k(  s| j                  ||f= " y N)listr   items)r5   r   typr6   doc_node_ids         r<   	clear_doczReSTDomain.clear_doc   sG    ,01C1C1E,F 	,(KS$#xg~LLd+	,r>   c                v    |d   j                         D ]#  \  \  }}\  }}||v s||f| j                  ||f<   % y r   )r   r   )r5   docnames	otherdatar   r6   r   r9   s          r<   merge_domaindatazReSTDomain.merge_domaindata   sI    +4Y+?+E+E+G 	9'KS$#wh+..S$Y'	9r>   c           
         | j                  |      }|sy |D ]>  }	| j                  j                  |	|f      }
|
s#|
\  }}t        ||||||dz   |	z         c S  y )Nrj   )objtypes_for_roler   rH   r   )r5   r)   fromdocnamebuilderr   targetnodecontnodeobjtypesr,   result	todocnamer9   s                r<   resolve_xrefzReSTDomain.resolve_xref  s{     ))#. 	FG\\%%w&78F%+"	7#G[)W$,fslW.DF F		F r>   c                    g }| j                   D ]`  }| j                  j                  ||f      }	|	s#|	\  }
}|j                  d| j	                  |      z   t        |||
|||dz   |z         f       b |S )Nzrst:rj   )object_typesr   rH   r-   role_for_objtyper   )r5   r)   r   r   r   r   r   resultsr,   r   r   r9   s               r<   resolve_any_xrefzReSTDomain.resolve_any_xref  s     .0(( 	FG\\%%w&78F%+"	7d33G<<!';	7"*FSL7,BDEF		F r>   c              #  v   K   | j                   d   j                         D ]  \  \  }}\  }}|||||df  y w)Nr   r   )r   r   )r5   r   r6   r   r9   s        r<   get_objectszReSTDomain.get_objects  sH     /3yy/C/I/I/K 	7+KS$+'7c7GQ66	7s   79)r_   z&dict[tuple[str, str], tuple[str, str]]r   )
r,   r^   r6   r^   r9   r^   r%   r   r_   r`   )r   r^   r_   r`   )r   z	list[str]r   dict[str, Any]r_   r`   )r)   r   r   r^   r   r   r   r^   r   r^   r   r   r   r   r_   zElement | None)r)   r   r   r^   r   r   r   r^   r   r   r   r   r_   zlist[tuple[str, Element]])r_   z-Iterator[tuple[str, str, str, str, str, int]])rb   rc   rd   re   r6   labelr   r   r   rw   r   r   r   r   rolesr   rg   r   r   r1   r   r   r   r   r   r@   r>   r<   r/   r/      s    "DE $AkN5A#A&8$95A#AfI6BL #/J 

E
 	2;L7  3 3B,
9'*2>JQ(!$,8DK77r>   r/   c                :    | j                  t               dddddS )Nbuiltin   T)versionenv_versionparallel_read_safeparallel_write_safe)
add_domainr/   )rW   s    r<   setupr   #  s&    NN: "#	 r>   )rp   r^   r_   ztuple[str, str])rW   r   r_   r   )7re   
__future__r   r   typingr   r   r   docutils.parsers.rstr   sphinxr   sphinx.directivesr	   sphinx.domainsr
   r   sphinx.localer   r   sphinx.rolesr   sphinx.utilr   sphinx.util.nodesr   r   collections.abcr   docutils.nodesr   sphinx.addnodesr   r   sphinx.applicationr   sphinx.buildersr   sphinx.environmentr   sphinx.util.typingr   	getLoggerrb   r   compilerm   r^   r   ru   rw   r   r   r/   r   r@   r>   r<   <module>r      s    " " 	 + + +  / *  !  3(&<)'3-			8	$RZZ,-
6"3' 6r((J 69* 9x%z %L7 L7^r>   