
    FeB                    (   d Z ddlmZ ddlZddlmZ ddlmZmZmZm	Z	m
Z
 ddlmZ ddlmZ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mZm Z  ddl!m"Z"m#Z# ddl$m%Z%m&Z& ddl'm(Z(m)Z)m*Z* ddl+m,Z, ddl-m.Z.m/Z/m0Z0 er"ddl1m2Z2m3Z3 ddl4m5Z5 ddl6m7Z7 ddl8m9Z9 ddl:m;Z;m<Z<  e)jz                  e>      Z? ej                  d      ZA ej                  dej                        ZC e%       ZD G d deeE         ZF G d deF      ZG G d de&      ZH G d  d!e,      ZI G d" d#eeE         ZJ G d$ d%e,      ZK G d& d'e&      ZLd5d(ZM	 	 	 	 	 	 	 	 	 	 d6d)ZN G d* d+e,      ZOd7d8d,ZP G d- d.e,      ZQ G d/ d0e&      ZR G d1 d2e      ZS	 	 d9d3ZTd:d4ZUy);zThe standard domain.    )annotationsN)copy)TYPE_CHECKINGAnyCallableFinalcast)nodes)ElementNodesystem_message)	Directive
directives)
StringList)addnodes)desc_signaturepending_xref)ObjectDescription)DomainObjTypeTitleGetter)___)EmphasizedLiteralXRefRole)docname_joinloggingws_re)SphinxDirective)clean_astextmake_idmake_refnode)IterableIterator)Sphinx)Builder)BuildEnvironment)
OptionSpecRoleFunctionz ((?:/|--|-|\+)?[^\s=]+)(=?\s*.*)z`((~?\w*:)?\w+)`c                  >    e Zd ZU dZdZded<   dZded<   d
dZdd	Zy)GenericObjectzM
    A generic x-ref directive registered with Sphinx.add_object_type().
     strindextemplateNz=Callable[[BuildEnvironment, str, desc_signature], str] | None
parse_nodec                    | j                   r| j                  | j                  ||      }|S |j                          |t        j                  ||      z  }t        j                  d|      }|S )N )r/   envclearr   	desc_namer   sub)selfsigsignodenames       4/usr/lib/python3/dist-packages/sphinx/domains/std.pyhandle_signaturezGenericObject.handle_signature1   s]    ????488S':D 	 MMOx))#s33G99S#&D    c                   t        | j                  | j                  j                  | j                  |      }|d   j                  |       | j                  j                  j                  |       | j                  r| j                  j                  d      }|dk7  rB| j                  d | j                         }| j                  |dz   d  j                         |fz  }nd}| j                  |fz  }| j                  d   j                  |||dd f       t        t        | j                  j                  d            }|j                  | j                  |||	       y )
Nids:   singleentriesr,   stdlocation)r!   r2   statedocumentobjtypeappendnote_explicit_targetr.   findstrip	indexnoder	   StandardDomain
get_domainnote_object)	r6   r9   r7   r8   node_idcolon	indextype
indexentryrD   s	            r:   add_target_and_indexz"GenericObject.add_target_and_index;   s"   $((DJJ$7$7tLg&

009&&++C0E{ ..v6<<>	!//	
;AACtgM
$	!//4'9
NN9%,,iWbRV-WX>488#6#6u#=>dGgFr<   r7   r-   r8   r   returnr-   )r9   r-   r7   r-   r8   r   rX   None)	__name__
__module____qualname____doc__r.   __annotations__r/   r;   rV    r<   r:   r+   r+   *   s)     M3PTJMTGr<   r+   c                      e Zd Z ed      Zy)EnvVarenvironment variable; %sN)rZ   r[   r\   r   r.   r_   r<   r:   ra   ra   N   s    01Mr<   ra   c                       e Zd ZdZ	 	 	 	 ddZy)EnvVarXRefRolezQ
    Cross-referencing role for environment variables (adds an index entry).
    c                   |s|gg fS |d   }d|j                  d      z  }t        j                         }d||dd fdt        d      |z  |dd fg|d<   t	        j
                  dd|g      }|j                  |       |||gg fS )	N	reftargetzindex-%sindexrB   r,   rb   rC   r>   )new_serialnor   rg   r   r
   targetrK   )	r6   rH   r2   nodeis_refvarnametgtidrN   
targetnodes	            r:   result_nodeszEnvVarXRefRole.result_nodesW   s    62:{#S--g66NN$	wr40q34w>r4P 
	) \\"bug6
%%j1:t,b00r<   N)
rH   nodes.documentr2   r'   rk   r   rl   boolrX   z'tuple[list[Node], list[system_message]])rZ   r[   r\   r]   rp   r_   r<   r:   rd   rd   R   s    1!1&M1r<   rd   c                  <    e Zd ZU dZdZdZdZdZdZi Z	de
d<   dd	Zy
)Targetz@
    Generic target for user-defined cross-reference types.
    r,   FrA   r   Tr(   option_specc                |   t        j                  d| j                  d   j                               }t	        | j
                  | j                  j                  | j                  |      }t        j                  dd|g      }| j                  |       | j                  j                  j                  |       |g}| j                  r| j                  |fz  }d}|j                  d      }|dk7  r)|d | j                         }||dz   d  j                         }t        j                   |||dd fg	      }|j#                  d|       | j                  }	d| j                  v r| j                  j%                  dd      \  }
}	t'        t(        | j
                  j+                  d
            }|j-                  |	|||       |S )Nr1   r   r,   rh   rB   r?   r@   rA   )rC   rD   rE   )r   r5   	argumentsrM   r!   r2   rG   rH   r9   r
   rj   set_source_inforK   r.   rL   r   rg   insertsplitr	   rO   rP   rQ   )r6   fullnamerR   rk   retrU   rT   rS   inoder9   r   rD   s               r:   runz
Target.runs   sv   99S$.."3"9"9";<$((DJJ$7$7HM||B	2T"

006&++xk9J IOOC(E{&v.446	'	
399;
NNY
GRQU,V+WXEJJq% yy$))iiooc1-GAt>488#6#6u#=>h$?
r<   NrX   
list[Node])rZ   r[   r\   r]   r.   has_contentrequired_argumentsoptional_argumentsfinal_argument_whitespaceru   r^   r~   r_   r<   r:   rt   rt   g   s4     MK $ K r<   rt   c                       e Zd ZdZddZddZy)	Cmdoptionz;
    Description of a command-line option (.. option).
    c                   d}d}|j                  d      D ]c  }|j                         }t        j                  |      }|s"t        j                  t        d      ||       M|j                         \  }}|d   dk(  r|d   dk(  r
|d	d }d|z   }|rj| j                  j                  j                  r1|t        j                  d
d
      z  }|t        j                         z  }n|t        j                  dd      z  }|t        j                  ||      z  }| j                  j                  j                  rd}	|r|d   dk(  r)|d   dk(  r!d}	|t        j                  dd      z  }|dd }nV|d   dk(  r(|t        j                         z  }|j                         }n&|d   dk(  r|t        j                  dd      z  }|dd	 }t         j#                  |      D ]H  }
t%        |
t&        j(                        r'|t'        j(                  |
j+                               z  }D||
z  }J |	r3|t        j                  dd      z  }n|t        j                  ||      z  }|s	|}|g|d<   n|d   j-                  |       |dz  }f |st.        |S )z/Transform an option description into RST nodes.r   r,   z, znMalformed option description %r, should look like "opt", "-opt args", "--opt args", "/opt args" or "+opt args"rE   r@   []N,FTrA   r1   =allnames)rz   rM   option_desc_rematchloggerwarningr   groupsr2   configoption_emphasise_placeholdersr   desc_sig_punctuationdesc_sig_spacedesc_addnamer4   	samp_roleparse
isinstancer
   TextastextrJ   
ValueError)r6   r7   r8   count	firstnamepotential_optionmoptnameargsadd_end_bracketparts              r:   r;   zCmdoption.handle_signature   s~   	 #		$ 1	/557$$%56Ar #?  @AQ(/  1 HHJMGTr{c!d2h#o!#2,Tz88??@@x<<S#FFGx6688Gx44T4@@Gx))'7;;Gxx<<"'Aw#~$r(c/*.8#@#@c#JJ#AbzaC8#:#:#<<#zz|aC8#@#@c#JJ#ABx ) 5 ,%dEJJ7#uzz$++-'@@G#tOG	,
 #x<<S#FFG800t<<#	'.i
#
#**73QJEc1	d r<   c                r   | j                   j                  j                  d      }|j                  dg       D ]  }dg}|r|j                  |       |j	                  d      s|j                  d       dj                  |      }t        | j                   | j                  j                  ||      }|d   j                  |        | j                  j                  j                  |       | j                   j                  d   }	|j                  dg       D ]0  }|	j                  ||| j                   j                  |d   d	          2 |rt        d
      |z  }
nt        d      }
|j                  dg       D ]>  }dj                  |
|g      }| j                  d   j                  d||d   d	   dd f       @ y )Nstd:programr   	cmdoption)-/argr   r>   rD   r   z%s command line optionzcommand line optionz; rC   pairr,   )r2   ref_contextgetrJ   
startswithjoinr!   rG   rH   rK   domainsadd_program_optiondocnamer   rN   )r6   r   r7   r8   currprogramr   prefixesprefixrR   domaindescroptionentrys                r:   rV   zCmdoption.add_target_and_index   s   hh**..}={{:r2 	+G#}H,%%j1&XXh'Fdhh

(;(;VWMGEN!!'*	+ 	

009!!%({{:r2 	KG%%k7&*hh&6&6q8IK	K
 ./+=E+,Ekk*b1 	[FIIufo.ENN9%,,feWU^A=NPRTX-YZ	[r<   NrW   )r   r-   r7   r-   r8   r   rX   rY   )rZ   r[   r\   r]   r;   rV   r_   r<   r:   r   r      s    8t[r<   r   c                  8    e Zd ZU dZdZdZdZdZi Zde	d<   d
dZ
y	)ProgramzI
    Directive to name the program for which options are documented.
    FrA   r   Tr(   ru   c                    t        j                  d| j                  d   j                               }|dk(  r(| j                  j
                  j                  dd        g S || j                  j
                  d<   g S )Nr   r   rY   r   )r   r5   rw   rM   r2   r   pop)r6   programs     r:   r~   zProgram.run   sh    ))C!2!8!8!:;fHH  $$]D9 	 3:DHH  /	r<   Nr   rZ   r[   r\   r]   r   r   r   r   ru   r^   r~   r_   r<   r:   r   r      s/     K $ K r<   r   c                       e Zd Z	 	 	 	 	 	 ddZy)OptionXRefRolec                F    |j                   j                  d      |d<   ||fS )Nr   )r   r   )r6   r2   refnodehas_explicit_titletitlerj   s         r:   process_linkzOptionXRefRole.process_link   s%    !$!4!4]!Cf}r<   Nr2   r'   r   r   r   rr   r   r-   rj   r-   rX   ztuple[str, str]rZ   r[   r\   r   r_   r<   r:   r   r      s    ),1@r<   r   c                :    t        j                  d|       d gz   }|S )Nz +: +)rerz   )linepartss     r:   split_term_classifiersr     s     hhw5>ELr<   c                   t        j                  ddg| }||_        ||_        |j	                         }|r|d   j                  |       n3t        | |d|      }|d   j                  |       |j                  |       t        t        | j                  d            }	|	j                  |||       t        j                         }
d||d|fg|
d<   |j                  |j                  c|
_        |
_        |j                  |
       |S )	Nr,   r>   termrD   rE   rB   mainrC   )r
   r   sourcer   r   rJ   r!   rK   r	   rO   rP   
_note_termr   rg   )r2   	textnodes	index_keyr   linenorR   rH   r   termtextrD   rN   s              r:   make_glossary_termr     s    
 ::b")y)DDKDI{{}HU7##x:U7#%%d+
~s~~e4
5CNN8WtN4  I%x&)LMIi'+{{DII$IinKK	Kr<   c                  P    e Zd ZU dZdZdZdZdZdej                  iZ
ded<   d
dZy	)Glossaryz[
    Directive to create a glossary with cross-reference targets for :term:
    roles.
    Tr   Fsortedr(   ru   c                   t        j                         }| j                  j                  |_        d| j                  v |d<   g }d}d}d}g }t        | j                  | j                  j                        D ]  \  }\  }}	|s |r|r|d   d   j                  d||	       d},|r1|d   j                         s|j                  d      rd}Wd}|re|s@|j                  | j                  j                  j                  t        d	      ||	
             |j                  |||	fgt               f       d}n+|r@|j                  | j                  j                  j                  t        d      ||	
             |r|d   d   j                  |||	f       n|j                  | j                  j                  j                  t        d      ||	
             n|rn|s'd}t        |      t        |j!                               z
  }
|r|d   d   j                  |
d  ||	       n@|j                  | j                  j                  j                  t        d      ||	
             d} g }|D ](  \  }}g }g }|D ]  \  }}}	t#        |      }| j                  j%                  |d   |	      \  }}t'        | j(                  ||d   ||	d | j                  j                        }||_        |j-                  |       |j                  |        |j-                  |       t/        j0                         }|r-| j                  j3                  ||j                  d   d   |       |j                  |       |j                  t/        j4                  dg|        + t/        j6                  dg| }|d   j                  d       ||z  }||gz   S )Nr   TFr@   rA   r,   r   z.. z,glossary term must be preceded by empty line)r   r   z3glossary terms must not be separated by empty linesz4glossary seems to be misformatted, check indentation)rR   rH   classesglossary)r   r   rG   rH   optionszipcontentitemsrJ   isspacer   reporterr   r   r   lenlstripr   inline_textr   r2   	rawsourceextendr
   
definitionnested_parsedefinition_list_itemdefinition_list)r6   rk   rC   in_definition
in_comment	was_emptymessagesr   r   r   
indent_lenr   termsr   	termnodessystem_messagesr   r   sysmsgr   defnodedlists                         r:   r~   zGlossary.run7  s     "

++"dll2X HJ
	!&)$,,8J8J&K 0	"D"66 WBKN))"ff= 	DGOO-??5)!%J"
 !$ 

(;(;(C(CLM#) )D )8 9 NNdFF%;$<jl#KL$)M ! 

(;(;(C(CST#) )D )8 9 A--tVV.DE 

(;(;(C(CTU#) )D )8 9 $$(M!$TS-?!?JBKN))$z{*;VVLOODJJ$7$7$?$?PQ%F %@ %4 5 Ia0	f 35!( 	EE:$&I*,O(- '$ff.t4 %)JJ$:$:58;A%C!	6 *$((I*/(FF26ATATV "&&&v.  &' _-&&(G

''
J4D4DQ4G4J(/1W%LL33BCCD3	E6 %%b151i
+4&  r<   Nr   )rZ   r[   r\   r]   r   r   r   r   r   flagru   r^   r~   r_   r<   r:   r   r   )  s=    
 K %*//K b!r<   r   c                   t        |      dk7  r|dz  }g }d}t        j                  |       D ]  }|j                         |kD  r7| ||j                          }|j	                  t        j                  |             |j                  d      }d|v r7|d   dk(  r|j                  d      \  }}|dd  }	n|d   dk(  r|dd  }|}	n|}|}	n|}||z   }	t        |dd|	      }
|
t        j                  ||dg	      z  }
|j	                  |
       |j                         } |t        |       k  r'|j	                  t        j                  | |d               |S )
Nr   r?   rA   ~tokenrD   )reftype	refdomainrf   xrefr   )r   token_refinditerstartrJ   r
   r   grouprz   r   literalend)textproductionGroupretnodesposr   txtr   r   r   rj   r   s              r:   token_xrefsr    sP   
?q 3H
Ct$ 779s?s1779%COOEJJsO,
%<Qx3 ;;s+5qrqSab	E$u,Fug)/15==x@@ eeg-. SY

4:./Or<   c                  8    e Zd ZU dZdZdZdZdZi Zde	d<   d
dZ
y	)ProductionListz0
    Directive to list grammar productions.
    FrA   r   Tr(   ru   c                   t        t        | j                  j                  d            }t	        j
                         }| j                  |       t        j                  d      }|j                  d| j                  d         j                  d      }d}d}|D ]%  }|sd|vr|j                         }d}	 |j                  dd	      \  }}	t	        j                  |      }
|j                         }||
d
<   |
d
   rd|z  }t        | j                  | j                   j"                  ||      }|
d   j%                  |       | j                   j"                  j'                  |
|
       t)        |      dk7  r| d| }n|}|j+                  d|||       |
j-                  t/        |	|             |j%                  |
       ( |gS # t        $ r Y  |gS w xY w)NrD   z\\\nr,   r   
Fr?   TrA   	tokennamezgrammar-token-%sr>   r   rE   )r	   rO   r2   rP   r   productionlistrx   r   compiler5   rw   rz   rM   r   
productionr!   rG   rH   rJ   note_implicit_targetr   rQ   r   r  )r6   r   rk   nl_escape_relinesr  first_rule_seenruler9   tokenssubnoder   rR   objNames                 r:   r~   zProductionList.run  s   ndhh&9&9%&@A //1T"zz'*  T^^A%67==dC 	!D"s$"&**,"O#zz#q1f ))$/G::<D#'GK {#+o=!$((DJJ,?,?N%%g.

##88'J'1,!0 14&9G"G""7GWt"LNN;v?@KK 1	!2 v%  " v%s   6G	GGNr   r   r_   r<   r:   r  r    s/     K $ K #r<   r  c                       e Zd Z	 	 	 	 	 	 ddZy)TokenXRefRolec                    |j                  d      }| j                  s)|d   dk(  r!d|v r|j                  d      \  }}||fS |dd  }||fS )Nr   r   r?   rA   )r   r   rz   )r6   r2   r   r   r   rj   r   s          r:   r   zTokenXRefRole.process_link  s_    s#&&58s?e| ;;s+5 f} ab	f}r<   Nr   r   r_   r<   r:   r  r    s    ),1@r<   r  c                  0    e Zd ZU dZdZdZ e ed      dd       e ed      d	d       e ed
      ddd       e ed      d       e ed      d       e ed      dd      dZde	d<   e
eeeeedZde	d<    ed       e        e        eej*                  d       edej*                  d       edd       ed       edej*                        dZd e	d!<   i i d"d# ed$      fd%d# ed&      fd'd# ed(      fd)d*d+d,d)d-Zd.e	d/<   d" ed$      fd% ed&      fd' ed(      fd)Zd0e	d1<   d2d3d4d5d6d7Zej4                  d8ej6                  d9ej8                  d:iZd;e	d<<   d[ fd=Z	 d\	 	 	 d]d>Ze d^d?       Z!d_	 d`d@Z"e dadA       Z#d_dbdBZ$e dcdC       Z%e dddD       Z&e dadE       Z'dedFZ(dfdGZ)	 	 	 	 	 	 	 	 dgdHZ*	 	 	 	 	 	 dhdIZ+	 	 	 	 	 	 	 	 	 	 didJZ,	 	 	 	 	 	 	 	 	 	 djdKZ-	 	 	 	 	 	 	 	 	 	 	 	 djdLZ.	 	 	 	 	 	 	 	 	 	 	 	 djdMZ/	 	 	 	 	 	 	 	 	 	 	 	 djdNZ0	 	 	 	 	 	 	 	 	 	 	 	 djdOZ1	 	 	 	 	 	 	 	 	 	 	 	 djdPZ2	 	 	 	 	 	 	 	 	 	 	 	 djdQZ3	 	 	 	 	 	 	 	 	 	 	 	 djdRZ4	 	 	 	 	 	 	 	 	 	 dkdSZ5dldTZ6dmdndUZ7dodVZ8dpdWZ9dpdXZ:	 	 	 	 	 	 	 	 	 	 	 	 dqdYZ;drdZZ< xZ=S )srO   zs
    Domain for all objects that don't fit into another domain or are added
    via the application interface.
    rD   Defaultzglossary termr   r@   )
searchpriozgrammar tokenr   zreference labelrefkeywordzenvironment variableenvvarzprogram optionr   rH   doc)r   r   labelr$  r   r%  zdict[str, ObjType]object_types)r   r   r   r$  r   r  zdict[str, type[Directive]]r   T)warn_dangling)innernodeclassr(  )	lowercaser)  r(  )r*  r(  )r(  r)  )r   r$  r   r   r"  numrefr#  r%  z"dict[str, RoleFunction | XRefRole]rolesgenindexr,   Indexpy-modindexzModule IndexsearchzSearch Page)r-  modindexr0  )r-  r,   )r/  r,   )r0  r,   )progoptionsobjectslabels
anonlabelsr   initial_datadict[str, tuple[str, str]]_virtual_doc_namesz term not in glossary: %(target)rzundefined label: %(target)rzunknown keyword: %(target)rzunknown document: %(target)rzunknown option: %(target)r)r   r+  r#  r%  r   )figureN)tableN)
code-blockNz0dict[type[Node], tuple[str, TitleGetter | None]]enumerable_nodesc                    t         |   |       t        | j                        | _        |j                  j
                  j                  j                         D ]  \  }}|| j                  |<    y N)super__init__r   r<  appregistryr   )r6   r2   rk   settings	__class__s       r:   r@  zStandardDomain.__init__M  sa     !%T%:%: ;!gg..??EEG 	3ND(*2D!!$'	3r<   c                &   || j                   v r]| j                   |   ||fk7  rIt        j                  t        d      || j                  j                  | j                   |   d                ||f| j                   |<   |r|||f| j                  |<   yy)aU  Add a hyperlink target for cross reference.

        .. warning::

           This is only for internal use.  Please don't use this from your extension.
           ``document.note_explicit_target()`` or ``note_implicit_target()`` are recommended to
           add a hyperlink target to the document.

           This only adds a hyperlink target to the StandardDomain.  And this does not add a
           node_id to node.  Therefore, it is very fragile to calling this without
           understanding hyperlink target framework in both docutils and Sphinx.

        .. versionadded:: 3.0
        (duplicate label %s, other instance in %sr   N)r5  r   r   r   r2   doc2pathr4  )r6   r9   r   rR   r   s        r:   note_hyperlink_targetz$StandardDomain.note_hyperlink_targetU  s      4??"tt'<'@R'RNN2HI!2!24??43H3K!LN ")' 2!('5 9DKK r<   c                :    | j                   j                  di       S )Nr3  data
setdefaultr6   s    r:   r3  zStandardDomain.objectsm  s    yy##Ir22r<   c                    ||f| j                   v r7| j                   ||f   d   }t        j                  t        d      ||||       | j                  j
                  |f| j                   ||f<   y)zRNote a generic object for cross reference.

        .. versionadded:: 3.0
        r   z4duplicate %s description of %s, other instance in %srE   N)r3  r   r   r   r2   r   )r6   rI   r9   labelidrF   r   s         r:   rQ   zStandardDomain.note_objectq  so     T?dll*ll7D=1!4GNN2TU"D'H  F'+xx'7'7&AWd]#r<   c                :    | j                   j                  di       S )z2.. note:: Will be removed soon. internal use only.r   rJ  rM  s    r:   _termszStandardDomain._terms}  s     yy##GR00r<   c                    | j                  d|||       | j                  j                  |f| j                  |j	                         <   y)zeNote a term for cross reference.

        .. note:: Will be removed soon. internal use only.
        r   N)rQ   r2   r   rQ  lower)r6   r   rO  rF   s       r:   r   zStandardDomain._note_term  s;    
 	w9%)XX%5%5w$?DJJL!r<   c                :    | j                   j                  di       S )Nr2  rJ  rM  s    r:   r2  zStandardDomain.progoptions  s    yy##M266r<   c                :    | j                   j                  di       S )Nr4  rJ  rM  s    r:   r4  zStandardDomain.labels  s    yy##Hb11r<   c                :    | j                   j                  di       S )Nr5  rJ  rM  s    r:   r5  zStandardDomain.anonlabels  s    yy##L"55r<   c                   d }t        | j                  j                               D ]  \  }\  }}||k(  s| j                  |=  t        | j                  j                               D ]  \  }\  }}||k(  s| j                  |=  t        | j                  j                               D ]  \  }\  }}||k(  s| j                  |=  t        | j
                  j                               D ]  \  }\  }}}||k(  s| j
                  |=  t        | j                  j                               D ]  \  }\  }}||k(  s| j                  |=  y r>  )listr2  r   r3  rQ  r4  r5  )r6   r   keyfn_ls        r:   	clear_doczStandardDomain.clear_doc  sB   !$"2"2"8"8":; 	*MC"bW}$$S)	* "$,,"4"4"67 	&MC"bW}LL%	& "$++"3"3"56 	%MC"bW}KK$	% "&dkk&7&7&9!: 	%C"b"W}KK$	% "$//"7"7"9: 	)MC"bW}OOC(	)r<   c                   |d   j                         D ]  \  }}|d   |v s|| j                  |<    |d   j                         D ]  \  }}|d   |v s|| j                  |<    |d   j                         D ]  \  }}|d   |v s|| j                  |<    |d   j                         D ]  \  }}|d   |v s|| j                  |<    |d   j                         D ]  \  }}|d   |v s|| j
                  |<    y )Nr2  r   r3  r   r4  r5  )r   r2  r3  rQ  r4  r5  )r6   docnames	otherdatarY  rK  s        r:   merge_domaindatazStandardDomain.merge_domaindata  s3   "=1779 	-ICAw("(,  %	- #9-335 	)ICAw("$(S!	) #7+113 	(ICAw("#'C 	( #8,224 	(ICAw("#'C 	( #<0668 	,ICAw("'+$	,r<   c           	        |j                   j                         D ]  \  }}|s
|j                  |   }||j                  |   }t	        |t
        j                        r*d|v r&|j                  j                  |d         }|d   d   }|j                  dk(  sd|v s|j                  j                  d      r|| j                  v rAt        j                  t        d      ||j                  | j                  |   d         |       ||f| j                  |<   |j                  d	k(  r*t!        t
        j"                  |d         }t%        |      }	no|j                  d
k(  rt%        |      }	nS| j'                  |      r| j)                  |      xs d}	|	s*~t	        |t
        j*                  t
        j,                  f      r3|j.                  r't!        t
        j0                  |j.                  d         }t	        |t
        j2                  t
        j4                  f      r't!        t
        j0                  |j.                  d         }t	        |t
        j6                  t
        j8                  f      rt%        |      }	nDt;        |j=                  t>        j@                        d       }
|
r|
j                  d      r|
d   }	n|||	f| j                  |<    y )Nrefidnamesr   footnoterefuridesc_rF  rE   sectionrubricr,   caption)!	nametypesr   nameidsr>   r   r
   rj   r   tagnamer   r4  r   r   r   rG  r5  r	   r   r    is_enumerable_nodeget_numfig_titler   
field_listchildrenr   fieldr   r   
field_namenextfindallr   toctree)r6   r2   r   rH   r9   explicitrO  rk   r   sectnameru  s              r:   process_doczStandardDomain.process_doc  s\    '00668 /	;ND(&&t,G<<(D$-'T/||''W6w-*
*$LL++G4 t{{"r"LM#S\\$++d2CA2F%G(,  . %,W$4DOOD!||y(U[[$q'2'.)'-((.006<"te&;&;&+&6&6&8 9t}}Q/?@DdU[[%2L2L$MNt}}Q/?@DdUZZ1A1A$BC+D1H"4<<0@0@#A4HG7;;y#9#*9#5 ! '( :DKK_/	;r<   c                L    ||f| j                   vr||f| j                   ||f<   y y r>  )r2  )r6   r   r9   r   rO  s        r:   r   z!StandardDomain.add_program_option  s4     T?$"2"22/6.@DWd]+ 3r<   c                   |j                  dt        j                        } |dddi|}	t        j                  ||      }
|
j	                  d      +|
d   j                  d       |
d   j                  d|z          ||k(  r||	d<   n<t        d      }||d	<   ||d
<   |j                  ||      |	d<   |r|	dxx   d|z   z  cc<   |	j                  |
       |	S )N	nodeclassr,   internalTr   rD   zstd-rb  
refdocnamerefsectnamere  #r,   r,   )r   r
   	referenceinliner   rJ   r   get_relative_uri)r6   fromdocnamebuilderr   rO  rw  rolenamer   r{  newnode	innernodecontnodes               r:   build_reference_nodez#StandardDomain.build_reference_node  s     KKU__=	=T=W=LL84	==#/i ''.i ''(9:k!&GG
 $B'H%,H\"&.H]# ' 8 8W!&GH!S7]2!y!r<   c           	        |dk(  r| j                   }nf|dk(  r| j                  }nT|dk(  r| j                  }nB|dk(  r| j                  }n0|dk(  r| j                  }n|dk(  r| j
                  }n| j                  } ||||||||      S )Nr"  r+  r#  r%  r   r   )_resolve_ref_xref_resolve_numref_xref_resolve_keyword_xref_resolve_doc_xref_resolve_option_xref_resolve_term_xref_resolve_obj_xref)	r6   r2   r  r  typrj   rk   r  resolvers	            r:   resolve_xrefzStandardDomain.resolve_xref  s     %<--HH_00HI11HE\--HH_00HF]..H--H['3hOOr<   c                    |d   r0| j                   j                  |d      \  }}	|j                         }
n | j                  j                  |d      \  }}	}
|sy | j	                  ||||	|
d      S )Nrefexplicitr  r,   r,   r,   r"  )r5  r   r   r4  r  )r6   r2   r  r  r  rj   rk   r  r   rO  rw  s              r:   r  z StandardDomain._resolve_ref_xref"  sy       $2268DGW{{}H *.)N&GWh((g)0'8UL 	Lr<   c           
        || j                   v r!| j                   j                  |d      \  }}	}
n!| j                  j                  |d      \  }}	d }
|sy |j                  |      j                  j                  |	      }|J | j                  |      }|y |dk7  r:|j                  j                  du r"t        j                  t        d      |       |S 	 | j                  |||||      }||S 	 	 |d   r|j                         }n&|j                  j                  j                  |d	      }|
'd
|v r#t        j                  t        d      ||       |S dj                  t!        t"        |            }d
|v sd|v r)|
r|j%                  |
|      }n|j%                  |      }n||z  }| j+                  ||||	|dt,        j.                  |      S # t        $ r& t        j                  t        d      |	|       |cY S w xY w# t&        $ r.}t        j                  t        d      ||       |cY d }~S d }~wt(        $ r& t        j                  t        d      |       |cY S w xY w)Nr  r  rg  Fz(numfig is disabled. :numref: is ignored.rE   zBFailed to create a cross reference. Any number is not assigned: %sr  r,   z{name}zthe link has no caption: %s.number)r9   r  )r  zinvalid numfig_format: %s (%r)zinvalid numfig_format: %sr+  )r{  r   )r4  r   r5  get_doctreer>   get_enumerable_node_typer   numfigr   r   r   get_fignumberr   r   numfig_formatr   mapr-   formatKeyError	TypeErrorr  r   number_reference)r6   r2   r  r  r  rj   rk   r  r   rO  fignametarget_nodefigtype	fignumberr   fignumnewtitleexcs                     r:   r  z#StandardDomain._resolve_numref_xref4  sm    T[[ (,(M%GWg#2268DGWGoog.2266w?&&&//<?iCJJ$5$5$>NN2HITXNYO	**3';WI  !	M" )

0044WbA8u#4r"?@%RVW#c9"56u$E(9#(<<WV<#L#(<<v<#>  %v~H ((g)0'8X3;3L3L/4 ) 6 	6C  	NN2 - ."T  3 O		4  	NN2>?VZN[O 	NN29:EDNQO	s>   G 1A$H AH ,H H	I(#H60I(6/I('I(c                f    | j                   j                  |d      \  }}	}
|sy t        ||||	|      S )Nr  )r4  r   r"   )r6   r2   r  r  r  rj   rk   r  r   rO  r   s              r:   r  z$StandardDomain._resolve_keyword_xreft  s=     #kkooflC!G['#X/ 	/r<   c                   |j                  d|      }t        ||d         }	|	|j                  vry |d   r|j                         }
nt	        |j
                  |	         }
t        j                  |
|
dg      }t        |||	d |      S )Nrefdocrf   r  r%  r   )	r   r   all_docsr   r    titlesr
   r  r"   )r6   r2   r  r  r  rj   rk   r  r  r   ri  r  s               r:   r  z StandardDomain._resolve_doc_xref~  s     (K0vtK'89#,,&M"++-&szz'':;WgwGIgtYOOr<   c                R   |j                  d      }|j                         }| j                  j                  ||fd      \  }	}
|	sFdD ]A  }||v s|j                  |      \  }}}| j                  j                  ||fd      \  }	}
|	sA n |	sg }t	        j
                  |      rut	        j                  |d      \  }}|j                  |       dj                  |      }| j                  j                  ||fd      \  }	}
|	rnt	        j
                  |      ruy t        |||	|
|      S )Nr   r  >   [=r1   r   rA   r   )
r   rM   r2  	partitionr   r0  rz   rJ   r   r"   )r6   r2   r  r  r  rj   rk   r  prognamer   rO  needlestemr   commands
subcommands                   r:   r  z#StandardDomain._resolve_option_xref  s1    88M*++//60BHM
 + V#!'!1!1&!9JD!Q'+'7'7';';Xt<Lh'W$GW H,,v&%*[[%;"
F
+88H-#'#3#3#7#768JH#U  ,,v& G['#X/ 	/r<   c           	         | j                  |||||||      }|r|S |j                         | j                  v r/| j                  |j                            \  }	}
t        |||	|
|      S y r>  )r  rS  rQ  r"   )r6   r2   r  r  r  rj   rk   r  resultr   rO  s              r:   r  z!StandardDomain._resolve_term_xref  so     ''['3(.h@M ||~,#';;v||~#> #G['7HUUr<   c                    | j                  |      xs g }|D ](  }	|	|f| j                  v s| j                  |	|f   \  }
} n d\  }
}|
sy t        |||
||      S )Nr  )objtypes_for_roler3  r"   )r6   r2   r  r  r  rj   rk   r  objtypesrI   r   rO  s               r:   r  z StandardDomain._resolve_obj_xref  s}     ))#.4" 	&G DLL0#'<<#@ 	&
  &GWG['#X/ 	/r<   c                   g }|j                         }dD ]9  }	| j                  ||||	|	dk(  r|n|||      }
|
s$|j                  d|	z   |
f       ; | j                  D ]d  }||f}|dk(  r||f}|| j                  v s| j                  |   \  }}d| j                  |      z   }	|j                  |	t        |||||      f       f |S )N)r"  r   r"  zstd:r   )rS  r  rJ   r'  r3  role_for_objtyper"   )r6   r2   r  r  rj   rk   r  resultsltargetroleresrI   rY  r   rO  s                  r:   resolve_any_xrefzStandardDomain.resolve_any_xref  s     .0,,.% 	5D##Cgt/3u}G&$((4C s34	5 (( 	HGF#C& (dll"#'<<#4  5 5g >>l7K3:H'F  G H	H r<   c              #    K   | j                   j                  D ],  }|t        | j                   j                  |         d|ddf . | j                  j                         D ]>  \  \  }}}|r$dj                  ||g      }||d|d   |d   df /||d|d   |d   df @ | j                  j                         D ]2  \  \  }}}||||d   |d   | j                  |   j                  d   f 4 | j                  j                         D ]  \  }\  }}	}
||
d	||	df  t        | j                        }| j                  j                         D ]  \  }\  }}	||vs||d	||	df  y w)
Nr%  r,   r@   r  r   r   rA   r!  r&  )r2   r  r    r  r2  r   r   r3  r'  attrsr4  setr5  )r6   r%  progr   infor{   typer9   r   rO  sectionnamenon_anon_labelss               r:   get_objectszStandardDomain.get_objects  s    88$$ 	PCTXX__S%9:E3BOO	P$($4$4$:$:$< 	I NT6D88T6N3;Qa!LLv{DGT!WaHH	I #',,"4"4"6 	@LT4$tT!Wd1g$$T*00>@ @	@ 6:[[5F5F5H 	E1D17G[gwDD	E dkk*(,(=(=(? 	B$D$7G?*T7GWbAA	Bs   EE,E,c                    |j                   S r>  )lname)r6   r  primarys      r:   get_type_namezStandardDomain.get_type_name  s    zzr<   c                2    |j                   | j                  v S r>  )rD  r<  )r6   rk   s     r:   rm  z!StandardDomain.is_enumerable_node  s    ~~!6!666r<   c                (   | j                  |      rt        t        |      }| j                  j	                  |j
                  d      \  }}|r ||      S |D ]9  }t        |t        j                  t        j                  f      s.t        |      c S  y)z?Get the title of enumerable nodes to refer them using its titleNNN)rm  r	   r   r<  r   rD  r   r
   ri  r   r    )r6   rk   elemr   title_getterr  s         r:   rn  zStandardDomain.get_numfig_title  s    ""4(&D"3377UOA|#D))# 5G!'EMM5;;+GH+G445 r<   c                   dd}t        |t        j                        ryt        |t        j                        rd|v r ||t        j                        ry| j
                  j                  |j                  d      \  }}|S )zGet type of enumerable nodes.c                ,    t        fd| D              S )Nc              3  6   K   | ]  }t        |        y wr>  )r   ).0childclss     r:   	<genexpr>zMStandardDomain.get_enumerable_node_type.<locals>.has_child.<locals>.<genexpr>  s     @%z%-@s   )any)rk   r  s    `r:   	has_childz:StandardDomain.get_enumerable_node_type.<locals>.has_child  s    @4@@@r<   rg  literal_blockr;  r  )rk   r   r  r  rX   rr   )r   r
   rg  	containerr  r<  r   rD  )r6   rk   r  r  r   s        r:   r  z'StandardDomain.get_enumerable_node_type  si    	A dEMM*u/%e112..224>><PJGQNr<   c                |   |dk(  r||j                   dk(  ry||j                  vrt        d|d   d   z   }||j                  |   vr|j                  |   j                  d      S |j                  |   j                  |      S 	 |d   d   }|j                  |   |   |   S # t
        t        f$ r}t        |d }~ww xY w)Nrg  latexr_   r  r>   r   r,   )r9   toc_secnumbersr   r   toc_fignumbersr  
IndexError)	r6   r2   r  r  r   r  
anchorname	figure_idr  s	            r:   r  zStandardDomain.get_fignumber  s     i||w& 2 22   ;u#5a#88
S%7%7%@@--g6::2>>--g6:::FF*'.q1	))'27;IFFj) * !c)*s   B   B;/B66B;c                (   |j                  d      dk(  r~|j                  d      }t        j                  |j                  d            }|r|j                  d|       |j	                         }|r"dj                  dj                  |      |g      S y y )Nr   r   r   rf   r   r  r   )r   r   rz   ry   r   r   )r6   rk   r  commandr   s        r:   get_full_qualified_namez&StandardDomain.get_full_qualified_name<  sz    88I(*xx.Hkk$((;"78Gq(+[[]Fxx'!2F ;<<r<   )r2   r'   rX   rY   r,   )
r9   r-   r   r-   rR   r-   r   r-   rX   rY   )rX   z&dict[tuple[str, str], tuple[str, str]]r>  )
rI   r-   r9   r-   rO  r-   rF   r   rX   rY   )rX   r7  )r   r-   rO  r-   rF   r   rX   rY   )rX   z-dict[tuple[str | None, str], tuple[str, str]])rX   zdict[str, tuple[str, str, str]])r   r-   rX   rY   )r^  z	list[str]r_  dict[str, Any]rX   rY   )r2   r'   r   r-   rH   rq   rX   rY   )
r   
str | Noner9   r-   r   r-   rO  r-   rX   rY   )r  r-   r  r&   r   r-   rO  r-   rw  r-   r  r-   r   r   rX   r   )r2   r'   r  r-   r  r&   r  r-   rj   r-   rk   r   r  r   rX   zElement | None)r2   r'   r  r-   r  r&   rj   r-   rk   r   r  r   rX   zlist[tuple[str, Element]])rX   z-Iterator[tuple[str, str, str, str, str, int]])F)r  r   r  rr   rX   r-   )rk   r   rX   rr   )rk   r   rX   r  )r2   r'   r  r&   r  r-   r   r-   r  r   rX   ztuple[int, ...] | None)rk   r   rX   r  )>rZ   r[   r\   r]   r9   r&  r   r   r'  r^   r   r   ra   r   r  r   r   rd   r  r   r
   r  r,  r6  r8  dangling_warningsr9  r:  r  r<  r@  rH  propertyr3  rQ   rQ  r   r2  r4  r5  r\  r`  rx  r   r  r  r  r  r  r  r  r  r  r  r  r  rm  rn  r  r  r  __classcell__)rD  s   @r:   rO   rO     sQ   
 DE /*FrB?+WD,-ui$&(!23X>Q/0(;q}e;(L$  (.J*  "5!# ?5<<*.0 d5<<*.0 d*.0 $/$u||L#1E- * #R74&An,=>!2q'78
 )+&
L%    7,"An$56Q}-.62  300-. 	&_-JF 3 ,.:%(:26:0 3 3
B
B 1 1@ 7 7 2 2 6 6)$,$2;#2;.12;=K2;	2;hA$'A25A:>A&)58DGTW")2PP'*P2>PJQP(P(L#*L14L>ALIUL$+L0>L$>6&->647>6AD>6#/>6;B>6GU>6@/'./58/BE/$0/<C/HV/P#*P14P>AP ,P8?PDRP"/&-/47/AD/#//;B/GU/B$+25?B!-9@ES/#*/14/>A/ ,/8?/DR/")36>J#*/H.B*7 ** * 	*
 * * 
 *:r<   rO   c                    |r|j                   dk7  s|d   dk7  ry |d   }||j                  vrt        d      }nt        d      }t        j	                  ||z  |d|d          y)	NrD   r   r"  rf   zundefined label: %rzDFailed to create a cross reference. A title or caption not found: %r)rF   r  subtypeT)r9   r5  r   r   r   )rA  r   rk   rj   msgs        r:   warn_missing_referencer  K  sk    6;;%'DOu,Dk"****+C[\CsV|dYXr<   c                f    | j                  t               | j                  dt               dddddS )Nzwarn-missing-referencebuiltin   T)versionenv_versionparallel_read_safeparallel_write_safe)
add_domainrO   connectr  )rA  s    r:   setupr   Z  s6    NN>"KK(*@A "#	 r<   )r   r-   rX   zlist[str | None])r2   r'   r   zIterable[Node]r   r-   r   r-   r   intrR   r  rH   rq   rX   z
nodes.termr  )r  r-   r  r-   rX   r   )rA  r%   r   r   rk   r   rX   zbool | None)rA  r%   rX   r  )Vr]   
__future__r   r   r   typingr   r   r   r   r	   docutilsr
   docutils.nodesr   r   r   docutils.parsers.rstr   r   docutils.statemachiner   sphinxr   sphinx.addnodesr   r   sphinx.directivesr   sphinx.domainsr   r   r   sphinx.localer   r   sphinx.rolesr   r   sphinx.utilr   r   r   sphinx.util.docutilsr   sphinx.util.nodesr    r!   r"   collections.abcr#   r$   sphinx.applicationr%   sphinx.buildersr&   sphinx.environmentr'   sphinx.util.typingr(   r)   	getLoggerrZ   r   r  r   Ur   r   r-   r+   ra   rd   rt   r   r   r   r   r   r   r  r  r  rO   r  r   r_   r<   r:   <module>r     s    " 	  < <  8 8 6 ,  8 / 7 7  4 4 4 0 A A2)'3;			8	$ ?@2::)2440	!G%c* !GH2] 21X 1*$_ $NY[!#& Y[xo (X ",/:DP^&<p! p!fB._ .b	H 	N	V N	b +	r<   