
    Ri,                       d Z ddlm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 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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( ddl)m*Z* ddl+m,Z,m-Z-  ej\                  e/      Z0 ejb                  d      Z2 G d dee3         Z4d#dZ5 G d de4      Z6 G d de4      Z7 G d de4      Z8 G d  d!e      Z9d$d"Z:y)%zThe reStructuredText domain.    )annotationsN)TYPE_CHECKING)
directives)addnodes)ObjectDescription)DomainObjType)___)XRefRole)logging)make_idmake_refnode)IteratorSet)AnyClassVar)nodes)Element)desc_signaturepending_xref)Sphinx)Builder)BuildEnvironment)ExtensionMetadata
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nocontentsentryClassVar[OptionSpec]option_specc                   t        | j                  | j                  j                  | j                  |      }|d   j                  |       | j                  j                  j                  |       | j                  j                  j                  }|j                  | j                  |||       d| j                  vrC| j                  | j                  |      x}r$| j                  d   j                  d||dd f       y y y )Nidslocationr   entriessingle )r   envstatedocumentobjtypeappendnote_explicit_targetdomainsrestructuredtext_domainnote_objectoptionsget_index_text	indexnode)selfnamesigsignodenode_iddomain
index_texts          J/home/agent/.friday_env/lib/python3.12/site-packages/sphinx/domains/rst.pyadd_target_and_indexzReSTMarkup.add_target_and_index1   s     $((DJJ$7$7tLg&

009!!994<<wI4<</!00tDDzDy)002  E 0    c                     y)Nr+    r8   
objectnamer9   s      r?   r6   zReSTMarkup.get_index_textE   s    rA   c                    d|vryg }| j                   j                  j                  dd      D ]  }||j                  d      z  } |d   }t	        ||j                  d      z         S )NfullnamerC   rst:directives:)r,   ref_contextgetsplittuple)r8   sig_nodedirective_namesparentr9   s        r?   _object_hierarchy_partsz"ReSTMarkup._object_hierarchy_partsH   sn    X%hh**../?D 	1Fv||C00O	1
#_tzz#677rA   c                   |j                  d      sy|j                  j                  d      }|d   ^ }}|dk(  rd| dS | j                  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:optionrI   >   allr=   role	directive.. ::)rK   rP   configtoc_object_entries_show_parentsjoin)r8   rN   r/   _parentsr9   s        r?   _toc_entry_namezReSTMarkup._toc_entry_nameQ   s    ||L)//%%i0"<04((tfA;;;66:KK88H\23DftfA;k!b>!rA   Nr9   strr:   r`   r;   r   returnNonerE   r`   r9   r`   ra   r`   )rN   r   ra   ztuple[str, ...])rN   r   ra   r`   )__name__
__module____qualname____doc__r   flagr$   __annotations__r@   r6   rQ   r^   rC   rA   r?   r   r   $   s{    - OO$//'__$//??"%??)K% !,:	(8rA   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_directiverw   b   s     '')C>>#BwABwhhjJ!3):):)<#<<<!2%%rA   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 )NrX   rY   rG   r   )rw   rm   r   	desc_namelendesc_addname)r8   r:   r;   r9   argsr{   s         r?   handle_signaturezReSTDirective.handle_signaturey   sk    $S)
d$rN	"jjl
8%%i;;t9q=x,,T488GrA   c                    t        d      |z  S )N%s (directive)r
   rD   s      r?   r6   zReSTDirective.get_index_text   s    !"T))rA   c                    | j                   rF| j                  j                  j                  dg       } |j                  | j                   d          y y )NrH   r   )namesr,   rJ   
setdefaultr0   r8   r   s     r?   before_contentzReSTDirective.before_content   sC    ::--889I2NJJdjjm, rA   c                x    | j                   j                  j                  dg       }|r |j                          y y )NrH   )r,   rJ   r   popr   s     r?   after_contentzReSTDirective.after_content   s3    XX))445ErJ
JNN rA   Nr:   r`   r;   r   ra   r`   rc   )ra   rb   )rd   re   rf   rg   r   r6   r   r   rC   rA   r?   ry   ry   v   s    **-
rA   ry   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)ReSTDirectiveOptionz,Description of an option for reST directive.r#   r$   typec                   	 t        j                  d|j                         d      \  }}d| d}|j                         |d<   |t	        j
                  ||      z  }|rd| }|t	        j                  ||      z  }| j                  j                  d      r+d| j                  d   z  }|t	        j                  ||      z  }|S # t        $ r |d }}Y w xY w)	Nz\s*:\s+   )maxsplitrI   rG   rl   r   z (%s))	rerL   rm   
ValueErrorr   r{   desc_annotationr5   rK   )r8   r:   r;   r9   argumentr{   texts          r?   r   z$ReSTDirectiveOption.handle_signature   s    	'XXj#))+JND( vQK	"jjl
8%%i;;xj>Dx//d;;G<<F#T\\&11Dx//d;;G  	' $(D	's   )C CCc                   | j                   j                  j                  }| j                  }|r| j                   d| }| d| }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 )N-rI   r&   r'   r   r   z:%s: (directive option)r)   pairz; r+   r*   )r,   r2   r3   current_directiver/   r   r-   r.   r0   r1   r4   upperr
   r7   r\   )r8   r9   r:   r;   r=   directive_nameprefixobjnamer<   keyr   r   s               r?   r@   z(ReSTDirectiveOption.add_target_and_index   sk    !!99//~Q~&67F'($0G\\FG$((DJJ$7$7Fg&

0094<<'GLq'--/C"#n4+,t3D NN9%,,		$.  q'--/C./$6DNN9%,,hgr3-OPrA   c                \    | j                   j                  j                  d      }|r|d   S y)NrH   r+   )r,   rJ   rK   r   s     r?   r   z%ReSTDirectiveOption.current_directive   s-    XX))--.>?
b>!rA   Nr   r_   )ra   r`   )rd   re   rf   rg   r   r$   copyri   updater   	unchangedr   r@   propertyr   rC   rA   r?   r   r      s    6(2(>(>(C(C(EK%E
$$ ""Q"Q!"Q,:"Q	"QH  rA   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 )NrI   rG   )rm   r   r{   )r8   r:   r;   r{   s       r?   r   zReSTRole.handle_signature   s;    uAJ	!iik
8%%i;;
rA   c                    t        d      |z  S )Nz	%s (role)r   rD   s      r?   r6   zReSTRole.get_index_text   s    ~$$rA   Nr   rc   )rd   re   rf   rg   r   r6   rC   rA   r?   r   r      s    %%rA   r   c                  D   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)
ReSTDomainzReStructuredText domain.rstreStructuredTextrW   rs   zdirective-optionrV   )rW   rT   rV   )rs   rV   objectsz/ClassVar[dict[str, dict[tuple[str, str], str]]]initial_datac                :    | j                   j                  di       S Nr   )datar   )r8   s    r?   r   zReSTDomain.objects   s     yy##Ir22rA   Nc                    ||f| j                   v r7| j                   ||f   \  }}t        j                  t        d      ||||       | j                  j
                  j                  |f| j                   ||f<   y )Nz4duplicate description of %s %s, other instance in %sr'   )r   loggerwarningr   r,   current_documentdocname)r8   r/   r9   r<   r(   r   s         r?   r4   zReSTDomain.note_object   sz     T?dll*#||GTM:GWNNIJ!   (,xx'@'@'H'H'&RWd]#rA   c                    t        | j                  j                               D ]   \  \  }}\  }}||k(  s| j                  ||f= " y N)listr   items)r8   r   typr9   doc_node_ids         r?   	clear_doczReSTDomain.clear_doc  sG    ,01C1C1E,F 	,(KS$#xg~LLd+	,rA   c                v    |d   j                         D ]#  \  \  }}\  }}||v s||f| j                  ||f<   % y r   )r   r   )r8   docnames	otherdatar   r9   r   r<   s          r?   merge_domaindatazReSTDomain.merge_domaindata  sI    +4Y+?+E+E+G 	9'KS$#wh+..S$Y'	9rA   c                    | j                  |      }|sy |D ]=  }	| j                  j                  |	|f      }
|
s#|
\  }}t        |||||| d|	       c S  y )Nrl   )objtypes_for_roler   rK   r   )r8   r,   fromdocnamebuilderr   targetnodecontnodeobjtypesr/   result	todocnamer<   s                r?   resolve_xrefzReSTDomain.resolve_xref  s~     ))#. 	G\\%%w&78F%+"	7#hay) 		 rA   c                    g }| j                   D ]_  }| j                  j                  ||f      }	|	s#|	\  }
}|j                  d| j	                  |       t        |||
||| d|       f       a |S )Nzrst:rl   )object_typesr   rK   r0   role_for_objtyper   )r8   r,   r   r   r   r   r   resultsr/   r   r   r<   s               r?   resolve_any_xrefzReSTDomain.resolve_any_xref5  s     68(( 	G\\%%w&78F%+"	74009:; #! !(!G9-
  
		 rA   c              #  v   K   | j                   d   j                         D ]  \  \  }}\  }}|||||df  y w)Nr   r   )r   r   )r8   r   r9   r   r<   s        r?   get_objectszReSTDomain.get_objectsP  sH     /3yy/C/I/I/K 	7+KS$+'7c7GQ66	7s   79)ra   z&dict[tuple[str, str], tuple[str, str]]r   )
r/   r`   r9   r`   r<   r`   r(   r   ra   rb   )r   r`   ra   rb   )r   zSet[str]r   zdict[str, Any]ra   rb   )r,   r   r   r`   r   r   r   r`   r   r`   r   r   r   r   ra   znodes.reference | None)r,   r   r   r`   r   r   r   r`   r   r   r   r   ra   z!list[tuple[str, nodes.reference]])ra   z-Iterator[tuple[str, str, str, str, str, int]])rd   re   rf   rg   r9   labelr	   r
   r   ry   r   r   r   r   rolesr   ri   r   r   r4   r   r   r   r   r   rC   rA   r?   r   r      sy   "DE Q{^U3#A&8$95A&	6*L #/J z
E
 	2ELA  3 3
 FJSS"%S03S?BS	S,
9  	
     
 6  	
    
+67rA   r   c                :    | j                  t               dddddS )Nbuiltin   T)versionenv_versionparallel_read_safeparallel_write_safe)
add_domainr   )apps    r?   setupr   U  s&    NN: "#	 rA   )rr   r`   ra   ztuple[str, str])r   r   ra   r   );rg   
__future__r   r   typingr   docutils.parsers.rstr   sphinxr   sphinx.directivesr   sphinx.domainsr   r	   sphinx.localer
   r   sphinx.rolesr   sphinx.utilr   sphinx.util.nodesr   r   collections.abcr   r   r   r   docutilsr   docutils.nodesr   sphinx.addnodesr   r   sphinx.applicationr   sphinx.buildersr   sphinx.environmentr   sphinx.util.typingr   r   	getLoggerrd   r   compilero   r`   r   rw   ry   r   r   r   r   rC   rA   r?   <module>r      s    " " 	   +  / *  !  3-$&<)'3@			8	$RZZ,-
;"3' ;|&(J 4C* CL
%z 
%o7 o7drA   