
    }c                        d Z ddlZddlmZ ddlmZmZmZmZmZm	Z	m
Z
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$ 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/ ddl0m1Z1m2Z2m3Z3 ddl4m5Z5m6Z6 erddl7m8Z8 ddl9m:Z: ddl;m<Z<  e,j=        e>          Z? ej@        d          ZA ej@        dejB                  ZC G d de!eD                   ZE G d deE          ZF G d de)          ZG G d de/          ZH G d  d!e!eD                   ZI G d" d#e/          ZJ G d$ d%e)          ZKd&eDd'e
eeD                  fd(ZLd)d*d+ee         d,eDd-eDd.eMd/eDd0ejN        d'ejO        fd1ZP G d2 d3e/          ZQdDd5eDd6eDd'e
e         fd7ZR G d8 d9e/          ZS G d: d;e)          ZT G d< d=e#          ZUd>d?d@e#dAed'eeV         fdBZWd>d?d'eeDef         fdCZXdS )EzThe standard domain.    N)copy)TYPE_CHECKINGAnyCallableDictIterableIteratorListOptionalTupleTypeUnioncast)nodes)ElementNodesystem_message)	Directive
directives)
StringList)addnodes)desc_signaturepending_xref)ObjectDescription)DomainObjType)___)XRefRole)docname_joinloggingws_re)SphinxDirective)clean_astextmake_idmake_refnode)
OptionSpecRoleFunction)Sphinx)Builder)BuildEnvironmentz ((?:/|--|-|\+)?[^\s=]+)(=?\s*.*)z`((~?\w*:)?\w+)`c                       e Zd ZU dZdZeed<   dZed dee	gef         ed<   dede	d	efd
Z
dedede	d	dfdZded	efdZdS )GenericObjectzM
    A generic x-ref directive registered with Sphinx.add_object_type().
     indextemplateNr+   
parse_nodesigsignodereturnc                     | j         r|                      | j        ||          }nA|                                 |t          j        ||          z  }t          j        d|          }|S )N )r0   envclearr   	desc_namer"   sub)selfr1   r2   names       2lib/python3.11/site-packages/sphinx/domains/std.pyhandle_signaturezGenericObject.handle_signature-   s_    ? 	'??48S'::DDMMOOOx)#s333G9S#&&D    r;   c                    t          | j        | j        j        | j        |          }|d                             |           | j        j                            |           | j        r| j                            d          }|dk    rJ| j        d |         	                                }| j        |dz   d          	                                |fz  }nd}| j        |fz  }| j
        d                             |||dd f           t          t          | j                            d                    }|                    | j        |||	           d S )
Nids:   singleentriesr.   stdlocation)r%   r6   statedocumentobjtypeappendnote_explicit_targetr/   findstrip	indexnoder   StandardDomain
get_domainnote_object)	r:   r;   r1   r2   node_idcolon	indextype
indexentryrF   s	            r<   add_target_and_indexz"GenericObject.add_target_and_index7   s@   $(DJ$7tLLg&&&
00999 	Y&++C00E{ : .vv6<<>>	!/	

;AACCtgM

$	!/4'9
N9%,,iWbRV-WXXX>48#6#6u#=#=>>dGgFFFFFr>   c                     | j         dz   |z   S )zGenerate old styled node_id for generic objects.

        .. note:: Old Styled node_id was used until Sphinx-3.0.
                  This will be removed in Sphinx-5.0.
        -)rK   r:   r;   s     r<   make_old_idzGenericObject.make_old_idI   s     |c!D((r>   )__name__
__module____qualname____doc__r/   str__annotations__r0   r   r   r=   rX   r\    r>   r<   r-   r-   &   s           M3\`J/+=sNSUXXY```C . S    G G3 G GTX G G G G$) ) ) ) ) ) ) )r>   r-   c                   $    e Zd Z ed          ZdS )EnvVarenvironment variable; %sN)r]   r^   r_   r   r/   rc   r>   r<   re   re   R   s        A011MMMr>   re   c                   `    e Zd ZdZdej        dddededee	e
         e	e         f         f
dZd	S )
EnvVarXRefRolezQ
    Cross-referencing role for environment variables (adds an index entry).
    rJ   r6   r+   nodeis_refr3   c                     |s|gg fS |d         }d|                     d          z  }t          j                    }d||dd fdt          d          |z  |dd fg|d<   t	          j        dd|g          }|                    |           |||gg fS )	N	reftargetzindex-%sindexrD   r.   rf   rE   r@   )new_serialnor   rm   r   r   targetrM   )	r:   rJ   r6   ri   rj   varnametgtidrP   
targetnodes	            r<   result_nodeszEnvVarXRefRole.result_nodes[   s     	62:{#S--g666N$$	wr40q344w>r4P 
	) \"bug666
%%j111:t,b00r>   N)r]   r^   r_   r`   r   rJ   r   boolr   r
   r   r   rt   rc   r>   r<   rh   rh   V   sn         1U^ 1:L 1T[ 1!1&+DJ^8L,L&M1 1 1 1 1 1r>   rh   c                   ^    e Zd ZU dZdZdZdZdZdZi Z	e
ed<   dee         fd	Zd
edefdZdS )Targetz@
    Generic target for user-defined cross-reference types.
    r.   FrC   r   Toption_specr3   c                 r   t          j        d| j        d                                                   }t	          | j        | j        j        | j        |          }t          j
        dd|g          }|                     |           | j        j                            |           |g}| j        r| j        |fz  }d}|                    d          }|dk    r;|d |                                         }||dz   d                                          }t          j        |||dd fg	          }|                    d|           | j        }	d| j        v r| j                            dd          \  }
}	t'          t(          | j                            d
                    }|                    |	|||           |S )Nr5   r   r.   rn   rD   rA   rB   rC   )rE   rF   rG   )r"   r9   	argumentsrO   r%   r6   rI   rJ   r;   r   rp   set_source_inforM   r/   rN   r   rm   insertsplitr   rQ   rR   rS   )r:   fullnamerT   ri   retrW   rV   rU   inoder;   r   rF   s               r<   runz
Target.runw   s   9S$."3"9"9";";<<$(DJ$7HMM|B	222T"""
00666& 	!+xk9J IOOC((E{ <&vv.4466	'	

399;;
NY
GRQU,V+WXXXEJJq%   y$) 	.iooc1--GAt>48#6#6u#=#=>>h$???
r>   r;   c                     | j         dz   |z   S )zGenerate old styled node_id for targets.

        .. note:: Old Styled node_id was used until Sphinx-3.0.
                  This will be removed in Sphinx-5.0.
        rZ   )r;   r[   s     r<   r\   zTarget.make_old_id   s     y3%%r>   N)r]   r^   r_   r`   r/   has_contentrequired_argumentsoptional_argumentsfinal_argument_whitespacerx   r'   rb   r
   r   r   ra   r\   rc   r>   r<   rw   rw   k   s           MK $ K   T$Z    4& & & & & & & &r>   rw   c                   R    e Zd ZdZdededefdZdedededdfdZd	ed
edefdZdS )	Cmdoptionz;
    Description of a command-line option (.. option).
    r1   r2   r3   c                    d}d}|                     d          D ]#}|                                }t                              |          }|s+t                              t          d          ||           ^|                                \  }}|                    d          r$|                    d          r|dd	         }d|z   }|r|t          j
        dd          z  }|t          j        ||          z  }|t          j
        ||          z  }|s	|}|g|d
<   n|d
                             |           |dz  }%|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"rG   []NrB   allnamesrC   )r}   rO   option_desc_rematchloggerwarningr   groupsendswithr   desc_addnamer8   rL   
ValueError)	r:   r1   r2   count	firstnamepotential_optionmoptnameargss	            r<   r=   zCmdoption.handle_signature   s~   	 #		$ 	 	/5577$$%566A r #?  @  @AQ(/  1 1 1 HHJJMGT$$ "s);); "!#2#,Tz =80t<<<x)'7;;;Gx,T4888G 4#	'.i
##
#**7333QJEE 	r>   r   Nc                 l   | j         j                            d          }|                    dg           D ]}dg}|r|                    |           |                    d          s|                    d           d                    |          }t          | j         | j        j        ||          }|d                             |           | 	                    ||          }	|	| j        j        j
        vr%|	|d         vr|d                             |	           | j        j                            |           t          t          | j                             d                    }
|                    dg           D ]0}|
                    ||| j         j        |d         d	                    1|rt#          d
          |z  }nt#          d          }|                    dg           D ]J}d                    ||g          }| j        d                             d||d         d	         dd f           Kd S )Nstd:programr   	cmdoption)rZ   /argrZ   r@   rF   r   z%s command line optionzcommand line optionz; rE   pairr.   )r6   ref_contextgetrL   
startswithjoinr%   rI   rJ   r\   r@   rM   r   rQ   rR   add_program_optiondocnamer   rP   )r:   r   r1   r2   currprogramr   prefixesprefixrT   old_node_iddomaindescroptionentrys                 r<   rX   zCmdoption.add_target_and_index   sG   h*..}=={{:r22 	3 	3G#}H -,,,%%j11 '&&&XXh''Fdh
(;VWMMGEN!!'*****67;;K$*"5"99 3'%.03%%k222
00999ndh&9&9%&@&@AA{{:r22 	K 	KG%%k7&*h&6q8IK K K K  	-.//+=EE+,,Ekk*b11 	[ 	[FIIufo..EN9%,,feWU^A=NPRTX-YZZZZ	[ 	[r>   r   r   c                 6    t          j        |dz   |z             S )zGenerate old styled node_id for cmdoption.

        .. note:: Old Styled node_id was used until Sphinx-3.0.
                  This will be removed in Sphinx-5.0.
        rZ   r   r%   )r:   r   r   s      r<   r\   zCmdoption.make_old_id   s     }Vc\G3444r>   )	r]   r^   r_   r`   ra   r   r=   rX   r\   rc   r>   r<   r   r      s         C . S    B[c [ [n [Y] [ [ [ [B5# 5 5 5 5 5 5 5 5r>   r   c                   J    e Zd ZU dZdZdZdZdZi Ze	e
d<   dee         fdZd	S )
ProgramzI
    Directive to name the program for which options are documented.
    FrC   r   Trx   r3   c                     t          j        d| j        d                                                   }|dk    r!| j        j                            dd            n|| j        j        d<   g S )NrZ   r   Noner   )r"   r9   rz   rO   r6   r   pop)r:   programs     r<   r   zProgram.run   se    )C!2!8!8!:!:;;f 	:H $$]D999929DH /	r>   N)r]   r^   r_   r`   r   r   r   r   rx   r'   rb   r
   r   r   rc   r>   r<   r   r      sh           K $ K   T$Z      r>   r   c                   >    e Zd Zdddededededeeef         fdZd	S )
OptionXRefRoler6   r+   refnodehas_explicit_titletitlerp   r3   c                 D    |j                             d          |d<   ||fS )Nr   )r   r   )r:   r6   r   r   r   rp   s         r<   process_linkzOptionXRefRole.process_link   s&    !$!4!4]!C!Cf}r>   Nr]   r^   r_   r   ru   ra   r   r   rc   r>   r<   r   r      s_         2 W Z^ ),16sCx     r>   r   liner3   c                 8    t          j        d|           d gz   }|S )Nz +: +)rer}   )r   partss     r<   split_term_classifiersr     s    !#'4!8!8D6!AELr>   r6   r+   	textnodes	index_keysourcelinenorT   rJ   c                 H   t          j        ddg|R  }||_        ||_        |                                }|r|d                             |           nBt          | |d|          }|d                             |           |                    |           t          t          | 
                    d                    }	|	                    |||           t          j                    }
d||d|fg|
d<   |j        |j        c|
_        |
_        |                    |
           |S )	Nr.   r@   termrF   rG   rD   mainrE   )r   r   r   r   astextrL   r%   rM   r   rQ   rR   
_note_termr   rm   )r6   r   r   r   r   rT   rJ   r   termtextrF   rP   s              r<   make_glossary_termr     s    
 :b")y)))DDKDI{{}}H ,U7#####x::U7###%%d+++
~s~~e44
5
5CNN8WtN444   I%x&)LMIi'+{DI$IinKK	Kr>   c                   X    e Zd ZU dZdZdZdZdZdej	        iZ
eed<   dee         fdZd	S )
Glossaryz[
    Directive to create a glossary with cross-reference targets for :term:
    roles.
    Tr   Fsortedrx   r3   c                    t          j                    }| j        j        |_        d| j        v |d<   g }d}d}d}g }t          | j        | j        j                  D ]6\  }\  }}	|s*|r%|r#|d         d                             d||	           d}5|rT|d         	                                s9|
                    d          rd}kd}|ro|sB|                    | j        j                            t          d	          ||	
                     |                    |||	fgt                      f           d}nV|rB|                    | j        j                            t          d          ||	
                     |r%|d         d                             |||	f           n|                    | j        j                            t          d          ||	
                     n|rn|s3d}t          |          t          |                                          z
  }
|r,|d         d                             ||
d          ||	           nB|                    | j        j                            t          d          ||	
                     d}8g }|D ]3\  }}g }g }|D ]\  }}}	t#          |          }| j                            |d         |	          \  }}t'          | j        ||d         ||	d | j        j                  }||_        |                    |           |                    |           |                    |           t/          j                    }|r-| j                            ||j        d         d         |           |                    |           |                    t/          j        dg|R             5t/          j        dg|R  }|d                             d           ||z  }||gz   S )Nr   TFrB   rC   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)rT   rJ   classesglossary)r   r   rI   rJ   optionszipcontentitemsrL   isspacer   reporterr   r   r   lenlstripr   inline_textr   r6   	rawsourceextendr   
definitionnested_parsedefinition_list_itemdefinition_list)r:   ri   rE   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    ""
+"dl2X HJ
	!&)$,8J&K&K 1	 1	"D"66   >W >BKN))"ff=== 	 (5DGOO-- (5??5)) '!%J!&J ! 9$ 9 
(;(C(CLMM#) )D )8 )8 9 9 9 NNdFF%;$<jll#KLLL$)MM ! 9 
(;(C(CSTT#) )D )8 )8 9 9 9  9A--tVV.DEEEE 
(;(C(CTUU#) )D )8 )8 9 9 9 9  5$ @$(M!$TS-?-?!?J 5BKN))$z{{*;VVLLLLOODJ$7$?$?PQQ%F %@ %4 %4 5 5 5 II 35!( 	E 	EE:$&I*,O(- ' '$ff.t44 %)J$:$:58V$L$L!	6 *$(IuQxQW26ATV V V!%&&v...  &&&&_---&((G 1
''
J4DQ4G4J(/1 1 1W%%%LL3BCCCCDDDD%b15111i
+++4&  r>   N)r]   r^   r_   r`   r   r   r   r   r   flagrx   r'   rb   r
   r   r   rc   r>   r<   r   r   )  s~          
 K %*/K   a!T$Z a! a! a! a! a! a!r>   r   r.   textproductionGroupc                 >   t          |          dk    r|dz  }g }d}t                              |           D ]"}|                                |k    rC| ||                                         }|                    t          j        |                     |                    d          }d|v rM|d         dk    r#|                    d          \  }}|dd          }	n%|d         dk    r|dd          }|}	n|}|}	n|}||z   }	t          |dd|	          }
|
t          j
        ||dg	          z  }
|                    |
           |                                }$|t          |           k     r/|                    t          j        | |d                               |S )
Nr   rA   rC   ~tokenrF   )reftype	refdomainrl   xrefr   )r   token_refinditerstartrL   r   Textgroupr}   r   literalend)r   r   retnodesposr   txtr   r   r   rp   r   s              r<   token_xrefsr    s   
?q  3H
Ct$$  7799s? 	-s17799}%COOEJsOO,,,

%< 	-Qx3  ;;s++5qrrqS abb	E$u,Fug)/1 1 15=x@@@@   eegg
SYY 0
4:..///Or>   c                   Z    e Zd ZU dZdZdZdZdZi Ze	e
d<   dee         fdZd	edefd
ZdS )ProductionListz0
    Directive to list grammar productions.
    FrC   r   Trx   r3   c                    t          t          | j                            d                    }t	          j                    }|                     |           t          j        d          }|	                    d| j
        d                                       d          }d}d}|D ]X}|dk    rd|vr|                                }"|dz  }	 |                    dd          \  }}	n# t          $ r Y  n
w xY wt	          j        |          }
|                                }||
d<   |
d         rd	|z  }t          | j        | j        j        ||          }|
d
                             |           | j        j                            |
|
           t)          |          dk    r|d|}n|}|                    d|||           |
                    t/          |	|                     |                    |
           Z|gS )NrF   z\\\nr.   r   
rA   rC   	tokennamezgrammar-token-%sr@   r   rG   )r   rQ   r6   rR   r   productionlistr{   r   compiler9   rz   r}   rO   r   
productionr%   rI   rJ   rL   note_implicit_targetr   rS   r   r  )r:   r   ri   nl_escape_relinesr   iruler;   tokenssubnoder   rT   objNames                 r<   r   zProductionList.run  s   ndh&9&9%&@&@AA /11T"""z'**  T^A%677==dCC 	! 	!DAv #T/ "&**,,FA#zz#q11ff   )$//G::<<D#'GK {# 
M+o=!$(DJ,?NN%%g...
#88'JJJ''1, #)8$$?GG"G""7GWt"LLLNN;v??@@@KK    vs   C&&
C54C5r   c                 0    t          j        d|z             S )zGenerate old styled node_id for tokens.

        .. note:: Old Styled node_id was used until Sphinx-3.0.
                  This will be removed in Sphinx-5.0.
        zgrammar-token-r   )r:   r   s     r<   r\   zProductionList.make_old_id  s     }-5666r>   N)r]   r^   r_   r`   r   r   r   r   rx   r'   rb   r
   r   r   ra   r\   rc   r>   r<   r  r    s           K $ K   #T$Z # # # #J7 7 7 7 7 7 7 7r>   r  c                   >    e Zd Zdddededededeeef         fdZd	S )
TokenXRefRoler6   r+   r   r   r   rp   r3   c                     |                     d          }| j        s3|d         dk    r'd|v r|                    d          \  }}n
|dd          }||fS )Nr   r   rA   rC   )r   r   r}   )r:   r6   r   r   r   rp   r   s          r<   r   zTokenXRefRole.process_link  sg    s##& 	"58s? 	"e| " ;;s++55abb	f}r>   Nr   rc   r>   r<   r  r    s_         2 W Z^ ),16sCx     r>   r  c                   X    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e	e
ef         ed<   eeeeeedZe	e
ee         f         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e	e
eeef         f         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+d,d-d.d/d0Zej        d1ej         d2ej!        d3iZ"e	ee#         e$e
e%e&         f         f         ed4<   dq fd9Z'	 drd:e
d;e
d<e
d=e
d7d8f
d>Z(e)d7e	e$e
e
f         e$e
e
f         f         fd?            Z*dsd@e
d:e
dAe
dBe+d7d8f
dCZ,e)d7e	e
e$e
e
f         f         fdD            Z-dsde
dAe
dBe+d7d8fdEZ.e)d7e	e$e
e
f         e$e
e
f         f         fdF            Z/e)d7e	e
e$e
e
e
f         f         fdG            Z0e)d7e	e
e$e
e
f         f         fdH            Z1d;e
d7d8fdIZ2dJe3e
         dKe	d7d8fdLZ4d5d6d;e
dej5        d7d8fdMZ6dNe
d:e
d;e
dAe
d7d8f
dOZ7dPe
dQdRd;e
dAe
dSe
dTe
dUe+d7e8fdVZ9d5d6dPe
dQdRdWe
dXe
dYe:dZe8d7e%e8         fd[Z;d5d6dPe
dQdRdWe
dXe
dYe:dZe8d7e%e8         fd\Z<d5d6dPe
dQdRdWe
dXe
dYe:dZe8d7e%e8         fd]Z=d5d6dPe
dQdRdWe
dXe
dYe:dZe8d7e%e8         fd^Z>d5d6dPe
dQdRdWe
dXe
dYe:dZe8d7e%e8         fd_Z?d5d6dPe
dQdRdWe
dXe
dYe:dZe8d7e%e8         fd`Z@d5d6dPe
dQdRdWe
dXe
dYe:dZe8d7e8fdaZAd5d6dPe
dQdRdWe
dXe
dYe:dZe8d7e%e8         fdbZBd5d6dPe
dQdRdXe
dYe:dZe8d7e3e$e
e8f                  fdcZCd7eDe$e
e
e
e
e
eEf                  fddZFdtdfedgeGd7e
fdhZHdYe#d7eGfdiZIdYe#d7e%e
         fdjZJdYe#d7e%e
         fdkZKd5d6dQdRdle
d;e
dme8d7e$eEdnf         fdoZLdYe8d7e%e
         fdpZM xZNS )urQ   zs
    Domain for all objects that don't fit into another domain or are added
    via the application interface.
    rF   Defaultzglossary termr   rB   )
searchpriozgrammar tokenr   zreference labelrefkeywordzenvironment variableenvvarzprogram optionr   rJ   doc)r   r   labelr  r   r  object_types)r   r   r   r  r   r	  r   T)warn_dangling)innernodeclassr!  )	lowercaser"  r!  )r#  r!  )r!  r"  )r   r  r   r   r  numrefr  r  rolesgenindexr.   Indexpy-modindexzModule IndexsearchzSearch Page)r&  modindexr)  )r&  r.   )r(  r.   )r)  r.   )progoptionsobjectslabels
anonlabelsz term not in glossary: %(target)szundefined label: %(target)szunknown keyword: %(target)szunknown document: %(target)szunknown option: %(target)s)r   r$  r  r  r   )figureN)tableN)
code-blockNenumerable_nodesr6   r+   r3   Nc                     t                                          |           t          | j                  | _        |j        j        j                                        D ]\  }}|| j        |<   d S N)super__init__r   r2  appregistryr   )r:   r6   ri   settings	__class__s       r<   r6  zStandardDomain.__init__N  sq     !%T%: ; ;!g.?EEGG 	3 	3ND(*2D!$''	3 	3r>   r;   r   rT   r   c                    || j         v re| j         |         ||fk    rRt                              t          d          || j                            | j         |         d                              ||f| j         |<   |r|||f| j        |<   dS dS )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)r.  r   r   r   r6   doc2pathr-  )r:   r;   r   rT   r   s        r<   note_hyperlink_targetz$StandardDomain.note_hyperlink_targetV  s      4?" 	Ntt'<'@R'R 	NNN2HII!2!24?43H3K!L!LN N N ")' 2 	:!('5 9DK	: 	:r>   c                 8    | j                             di           S )Nr,  data
setdefaultr:   s    r<   r,  zStandardDomain.objectsn  s    y##Ir222r>   rK   labelidrH   c                     ||f| j         v rA| j         ||f         d         }t                              t          d          ||||           | j        j        |f| j         ||f<   dS )zRNote a generic object for cross reference.

        .. versionadded:: 3.0
        r   z4duplicate %s description of %s, other instance in %srG   N)r,  r   r   r   r6   r   )r:   rK   r;   rD  rH   r   s         r<   rS   zStandardDomain.note_objectr  s     T?dl* 	Fl7D=1!4GNN2TUU"D'H  F F F'+x'7&AWd]###r>   c                 8    | j                             di           S )z2.. note:: Will be removed soon. internal use only.r   r@  rC  s    r<   _termszStandardDomain._terms~  s     y##GR000r>   c                     |                      d|||           | j        j        |f| j        |                                <   dS )zeNote a term for cross reference.

        .. note:: Will be removed soon. internal use only.
        r   N)rS   r6   r   rG  lower)r:   r   rD  rH   s       r<   r   zStandardDomain._note_term  sB    
 	w999%)X%5w$?DJJLL!!!r>   c                 8    | j                             di           S )Nr+  r@  rC  s    r<   r+  zStandardDomain.progoptions  s    y##M2666r>   c                 8    | j                             di           S )Nr-  r@  rC  s    r<   r-  zStandardDomain.labels  s    y##Hb111r>   c                 8    | j                             di           S )Nr.  r@  rC  s    r<   r.  zStandardDomain.anonlabels  s    y##L"555r>   c                 n   d }t          | j                                                  D ]\  }\  }}||k    r| j        |= t          | j                                                  D ]\  }\  }}||k    r| j        |= t          | j                                                  D ]\  }\  }}||k    r| j        |= t          | j                                                  D ]\  }\  }}}||k    r| j        |= t          | j                                                  D ]\  }\  }}||k    r| j        |= d S r4  )listr+  r   r,  rG  r-  r.  )r:   r   keyfn_ls        r<   	clear_doczStandardDomain.clear_doc  sj   !$"2"8"8":":;; 	* 	*MC"bW} *$S)!$,"4"4"6"677 	& 	&MC"bW} &L%!$+"3"3"5"566 	% 	%MC"bW} %K$!%dk&7&7&9&9!:!: 	% 	%C"b"W} %K$!$/"7"7"9"9:: 	) 	)MC"bW} )OC(	) 	)r>   docnames	otherdatac                    |d                                          D ]\  }}|d         |v r
|| j        |<   |d                                          D ]\  }}|d         |v r
|| j        |<   |d                                          D ]\  }}|d         |v r
|| j        |<   |d                                          D ]\  }}|d         |v r
|| j        |<   |d                                          D ]\  }}|d         |v r
|| j        |<   d S )Nr+  r   r,  r   r-  r.  )r   r+  r,  rG  r-  r.  )r:   rS  rT  rO  rA  s        r<   merge_domaindatazStandardDomain.merge_domaindata  sW   "=17799 	- 	-ICAw(" -(, %"9-3355 	) 	)ICAw(" )$(S!"7+1133 	( 	(ICAw(" (#'C "8,2244 	( 	(ICAw(" (#'C "<06688 	, 	,ICAw(" ,'+$	, 	,r>   c           	         |j                                         D ]\  }}|s	|j        |         }||j        |         }t	          |t
          j                  r2d|v r.|j                            |d                   }|d         d         }|j        dk    sd|v s|j        	                    d          r|| j
        v rOt                              t          d          ||                    | j
        |         d                   |           ||f| j        |<   |j        d	k    r0t!          t
          j        |d                   }t%          |          }	n|j        d
k    rt%          |          }	n|                     |          r|                     |          }	|	sn\t+          |                    t.          j                  d           }
|
r+|
                    d          r|
                    d          }	n|||	f| j
        |<   d S )Nrefidnamesr   footnoterefuridesc_r<  rG   sectionrubriccaption)	nametypesr   nameidsr@   
isinstancer   rp   r   tagnamer   r-  r   r   r   r=  r.  r   r   r$   is_enumerable_nodeget_numfig_titlenextfindallr   toctree)r:   r6   r   rJ   r;   explicitrD  ri   r   sectnamerh  s              r<   process_doczStandardDomain.process_doc  s8   &06688 &	; &	;ND( &t,G <(D$-- +'T/ +|''W66w-*
* $L++G44
 t{" .r"LMM#S\\$+d2CA2F%G%G(,  . . . %,W$4DOD!|y( U[$q'22'..) '--((.. 
0066  t||H,<==tDD w{{955 &{{955HH  '( :DKM&	; &	;r>   r   c                 "    ||f| j         ||f<   d S r4  )r+  )r:   r   r;   r   rD  s        r<   r   z!StandardDomain.add_program_option  s    +2G*<$'''r>   fromdocnamebuilderr*   rj  rolenamer   c                    |                     dt          j                  } |dddi|}	t          j        ||          }
|
                    d          9|
d                             d           |
d                             d|z              ||k    r||	d<   nGt          d          }||d	<   ||d
<   |                    ||          |	d<   |r|	dxx         d|z   z  cc<   |	                    |
           |	S )N	nodeclassr.   internalTr   rF   zstd-rX  
refdocnamerefsectnamer[  #r.   r.   )r   r   	referenceinliner   rL   r   get_relative_uri)r:   rm  rn  r   rD  rj  ro  r   rq  newnode	innernodecontnodes               r<   build_reference_nodez#StandardDomain.build_reference_node  s*    KKU_==	)==T=W==L844	==## 	;i ''...i ''(9:::k! 	3&GG
 $B''H%,H\"&.H]# ' 8 8W!& !&GH 3!!!S7]2!!!y!!!r>   typrp   ri   r|  c           	          |dk    r| j         }nM|dk    r| j        }n?|dk    r| j        }n1|dk    r| j        }n#|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)	r:   r6   rm  rn  r~  rp   ri   r|  resolvers	            r<   resolve_xrefzStandardDomain.resolve_xref  s     %< 	.-HHH_ 	.0HHI 		.1HHE\ 	.-HHH_ 	.0HHF] 	..HH-Hx['3hOOOr>   c                     |d         r3| j                             |d          \  }}	|                                }
n| j                            |d          \  }}	}
|sd S |                     ||||	|
d          S )Nrefexplicitrv  r.   r.   r.   r  )r.  r   r   r-  r}  )r:   r6   rm  rn  r~  rp   ri   r|  r   rD  rj  s              r<   r  z StandardDomain._resolve_ref_xref  s      	O  $2268DDGW{{}}HH *.)N)N&GWh 	4((g)0'8UL L 	Lr>   c           
      N   || j         v r | j                             |d          \  }}	}
n | j                            |d          \  }}	d }
|sd S |                    |          j                            |	          }|                     |          }|d S |dk    r9|j        j        du r+t          	                    t          d          |           |S 	 |                     |||||          }||S n<# t          $ r/ t          	                    t          d          |	|           |cY S w xY w	 |d         r|                                }n |j        j                            |d	          }|
0d
|v r,t          	                    t          d          ||           |S d                    t!          t"          |                    }d
|v sd|v r1|
r|                    |
|          }n|                    |          }n||z  }n{# t&          $ r7}t          	                    t          d          |||           |cY d }~S d }~wt(          $ r/ t          	                    t          d          ||           |cY S w xY w|                     ||||	|dt,          j        |          S )Nr  rv  r]  Fz(numfig is disabled. :numref: is ignored.rG   zBFailed to create a cross reference. Any number is not assigned: %sr  r.   z{name}zthe link has no caption: %s.number)r;   r  )r  zinvalid numfig_format: %s (%r)zinvalid numfig_format: %sr$  )rq  r   )r-  r   r.  get_doctreer@   get_enumerable_node_typeconfignumfigr   r   r   get_fignumberr   r   numfig_formatr   mapra   formatKeyError	TypeErrorr}  r   number_reference)r:   r6   rm  rn  r~  rp   ri   r|  r   rD  fignametarget_nodefigtype	fignumberr   fignumnewtitleexcs                     r<   r  z#StandardDomain._resolve_numref_xref'  s    T[  	(,(M(M%GWgg#2268DDGWG 	4oog..266w??//<< 	4i 	CJ$5$> 	NN2HIITXNYYYO	**3';WWI    	 	 	NN2 - . ."T  3 3 3 OOO			M" B ))
044WbAA .8u#4 .r"?@@%RVWWW#c9"5"566u$ .E(9 . ?#(<<WV<#L#L#(<<v<#>#>  %v~H 	 	 	NN2>??VZN[[[OOOOOO 	 	 	NN29::EDNQQQOOO	 ((g)0'8X3;3L/4 ) 6 6 	6s>   C2 26D+*D+/A.H A&H 
I=,I;I=9I=<I=c                 n    | j                             |d          \  }}	}
|sd S t          ||||	|          S )Nr  )r-  r   r&   )r:   r6   rm  rn  r~  rp   ri   r|  r   rD  r   s              r<   r  z$StandardDomain._resolve_keyword_xreff  sJ     #kooflCC! 	4G['#X/ / 	/r>   c                 4   |                     d|          }t          ||d                   }	|	|j        vrd S |d         r|                                }
nt	          |j        |	                   }
t          j        |
|
dg          }t          |||	d |          S )Nrefdocrl   r  r  r   )	r   r    all_docsr   r$   titlesr   rx  r&   )r:   r6   rm  rn  r~  rp   ri   r|  r  r   r_  r{  s               r<   r  z StandardDomain._resolve_doc_xrefp  s     (K00vtK'899#,& 		P4M" <++--&sz'':;;WgwGGGIgtYOOOr>   c                    |                     d          }|                                }| j                             ||fd          \  }	}
|	sg }t          j        |          ryt          j        |d          \  }}|                    |           d                    |          }| j                             ||fd          \  }	}
|	rnt          j        |          yd S t          |||	|
|          S )Nr   rv  rC   rZ   )	r   rO   r+  r"   r)  r}   rL   r   r&   )r:   r6   rm  rn  r~  rp   ri   r|  prognamer   rD  commands
subcommands                r<   r  z#StandardDomain._resolve_option_xref  s    88M**+//60BHMM 	H,v&& 	%*[%;%;"
F
+++88H--#'#3#7#768JH#U#U   ,v&& 	 tG['#X/ / 	/r>   c           	          |                      |||||||          }|r|S |                                | j        v r5| j        |                                         \  }	}
t          |||	|
|          S d S r4  )r  rI  rG  r&   )r:   r6   rm  rn  r~  rp   ri   r|  resultr   rD  s              r<   r  z!StandardDomain._resolve_term_xref  s     ''['3(.h@ @ 	M ||~~, #';v||~~#> #G['7HUUUtr>   c                     |                      |          pg }|D ]!}	|	|f| j        v r| j        |	|f         \  }
} n"d\  }
}|
sd S t          |||
||          S )Nrv  )objtypes_for_roler,  r&   )r:   r6   rm  rn  r~  rp   ri   r|  objtypesrK   r   rD  s               r<   r  z StandardDomain._resolve_obj_xref  s     ))#..4" 	& 	&G DL0 #'<#@   &GW 	4G['#X/ / 	/r>   c                    g }|                                 }dD ]A}	|                     ||||	|	dk    r|n|||          }
|
r|                    d|	z   |
f           B| j        D ]g}||f}|dk    r||f}|| j        v rN| j        |         \  }}|                    d|                     |          z   t          |||||          f           h|S )N)r  r   r  zstd:r   )rI  r  rL   r   r,  role_for_objtyper&   )r:   r6   rm  rn  rp   ri   r|  resultsltargetroleresrK   rO  r   rD  s                  r<   resolve_any_xrefzStandardDomain.resolve_any_xref  s)    .0,,..% 	5 	5D##Cgt/3u}$HGG&$((4 4C  5s3444( 	B 	BGF#C&  )(dl" B#'<#4 )>)>w)G)G G ,Wk7-4h!@ !@ A B B B r>   c              #     K   | j         j        D ])}|t          | j         j        |                   d|ddfV  *| j                                        D ]N\  \  }}}|r.d                    ||g          }||d|d         |d         dfV  8||d|d         |d         dfV  O| j                                        D ]4\  \  }}}||||d         |d         | j        |         j	        d         fV  5| j
                                        D ]\  }\  }}	}
||
d	||	dfV  t          | j
                  }| j                                        D ]\  }\  }}	||vr
||d	||	dfV  d S )
Nr  r.   rB   r  r   r   rC   r  r  )r6   r  r$   r  r+  r   r   r,  r   attrsr-  setr.  )r:   r  progr   infor~   typer;   r   rD  sectionnamenon_anon_labelss               r<   get_objectszStandardDomain.get_objects  s     8$ 	P 	PCTX_S%9::E3BOOOOO$($4$:$:$<$< 	I 	I NT6D I88T6N33;Qa!LLLLLv{DGT!WaHHHHH"&,"4"4"6"6 	@ 	@LT4$tT!Wd1g$T*0>@ @ @ @ @59[5F5F5H5H 	E 	E1D17G[gwDDDDDdk**(,(=(=(?(? 	B 	B$D$7G?* BT7GWbAAAA	B 	Br>   Fr  primaryc                     |j         S r4  )lname)r:   r  r  s      r<   get_type_namezStandardDomain.get_type_name  s
    zr>   c                     |j         | j        v S r4  )r:  r2  )r:   ri   s     r<   rd  z!StandardDomain.is_enumerable_node  s    ~!666r>   c                 2   |                      |          rt          t          |          }| j                            |j        d          \  }}|r ||          S |D ]9}t          |t          j        t          j	        f          rt          |          c S :dS )z?Get the title of enumerable nodes to refer them using its titleNNN)rd  r   r   r2  r   r:  rb  r   r_  r   r$   )r:   ri   elemr   title_getterr  s         r<   re  zStandardDomain.get_numfig_title  s    ""4(( 	5&&D"377UUOA| 5#|D)))# 5 5G!'EM5;+GHH 5+G444445 tr>   c                 "   dt           dt          dt          fd}t          |t          j                  rdS t          |t          j                  rd|v r ||t          j                  rdS | j        	                    |j
        d          \  }}|S )	zGet type of enumerable nodes.ri   clsr3   c                 :    t          fd| D                       S )Nc              3   8   K   | ]}t          |          V  d S r4  )rb  ).0childr  s     r<   	<genexpr>zMStandardDomain.get_enumerable_node_type.<locals>.has_child.<locals>.<genexpr>  s-      @@%z%--@@@@@@r>   )any)ri   r  s    `r<   	has_childz:StandardDomain.get_enumerable_node_type.<locals>.has_child  s&    @@@@4@@@@@@r>   r]  literal_blockr1  r  )r   r   ru   rb  r   r]  	containerr  r2  r   r:  )r:   ri   r  r  r   s        r<   r  z'StandardDomain.get_enumerable_node_type  s    	AG 	A$ 	A4 	A 	A 	A 	A dEM** 		9u// 	%	ie122	  <.224><PPJGQNr>   r  r  .c                    |dk    r|j         dk    rt                      S ||j        vrt          d|d         d         z   }||j        |         vr |j        |                             d          S |j        |                             |          S 	 |d         d         }|j        |         |         |         S # t          t          f$ r}t          |d }~ww xY w)Nr]  latexru  r@   r   r.   )r;   tupletoc_secnumbersr   r   toc_fignumbersr  
IndexError)	r:   r6   rn  r  r   r  
anchorname	figure_idr  s	            r<   r  zStandardDomain.get_fignumber  s    i 	*|w& 
Gww 22 G   ;u#5a#88
S%7%@@ G-g6::2>>>-g6:::FFF*'.q1	)'27;IFFj) * * * !c)*s   &B8 8C	CCc                 d   |                     d          dk    r|                     d          }t          j        |                     d                    }|r|                    d|           |                                }|r*d                    d                    |          |g          S d S d S )Nr   r   r   rl   r   r  rZ   )r   r"   r}   r|   r   r   )r:   ri   r  commandr   s        r<   get_full_qualified_namez&StandardDomain.get_full_qualified_name  s    88I(* 	xx..Hk$((;"7"788G ,q(+++[[]]F xx'!2!2F ;<<<t4r>   )r6   r+   r3   Nr.   r4  )F)Or]   r^   r_   r`   r;   r  r   r   r   r   ra   rb   r   r   re   r   r  r   r   r   r   rh   r  r   r   rx  r%  r   r(   initial_datadangling_warningsr/  r0  r  r2  r   r   r   r   r6  r>  propertyr,  r   rS   rG  r   r+  r-  r.  rR  r
   rV  rJ   rk  r   r   r}  r   r  r  r  r  r  r  r  r  r  r	   intr  ru   r  rd  re  r  r  r  __classcell__)r:  s   @r<   rQ   rQ     s
         
 DE /**FrBBB?++WDDD,--ui$&( ( ('!!233X>>WQQ/00(;;wqq}}e;;;( (L$sG|$    (. .JS$y/)*    ">555!>## =??85<*.0 0 0 8d5<*.0 0 0 8d*.0 0 0 8$///8$u|LLL#7 7E4U<1223   * #R74&AAn,=,=>!2qq'7'78
 
 )+&
 
 L  300-.  	&_-Jd4:uS(82D-D'EEF   3 3 3 3 3 3 ,.: :# : :c :%(:26: : : :0 3eCHouS#X>? 3 3 3 X3
B 
B3 
Bc 
BC 
B3 
B
B 
B 
B 
B 1S%S/12 1 1 1 X1@ @s @S @C @4 @ @ @ @ 7T%S/5c?"BC 7 7 7 X7 2S%S#"667 2 2 2 X2 6DeCHo!56 6 6 6 X6) ) ) ) ) )$,c ,t , , , , ,$';1 ';C ';5> ';^b '; '; '; ';R=# =S =3 =QT =Y] = = = = i RU &)58DGTW")   2P 2 P Py PP'*P2>PJQP"7+P P P P(L%7 Lc L#,L36L@CLKWL$+L080AL L L L$=6(: =6 =6&/=669=6CF=6#/=6;B=6GOPWGX=6 =6 =6 =6~/); /# /'0/7:/DG/$0/<C/HPQXHY/ / / /P%7 Pc P#,P36P@CP ,P8?PDLWDUP P P P"/(: / /&//69/CF/#//;B/GOPWGX/ / / /,&8 s $-47AD!-9@EL   /%7 /c /#,/36/@C/ ,/8?/DLWDU/ / / /$6 S "+58@L#*/3E#w,4G/H   .BXeCc3S,H&IJ B B B B* ' D S    7t 7 7 7 7 7T hsm    T hsm     *!3 *i *"*-0*?F*KPQTVYQY?* * * *.G         r>   rQ   r7  r)   r   ri   c                     |r|j         dk    s|d         dk    rd S |d         }||j        vrt          d          }nt          d          }t                              ||z  |d|d                    dS )	NrF   r   r  rl   zundefined label: %szDFailed to create a cross reference. A title or caption not found: %s)rH   r  subtypeT)r;   r.  r   r   r   )r7  r   ri   rp   msgs        r<   warn_missing_referencer  ,  s     
6;%' 
DOu,D 
tk"** 	]*++CC[\\CsV|dYXXXtr>   c                 z    |                      t                     |                     dt                     dddddS )Nzwarn-missing-referencebuiltin   T)versionenv_versionparallel_read_safeparallel_write_safe)
add_domainrQ   connectr  )r7  s    r<   setupr  ;  sG    NN>"""KK(*@AAA "#	  r>   r  )Yr`   r   r   typingr   r   r   r   r   r	   r
   r   r   r   r   r   docutilsr   docutils.nodesr   r   r   docutils.parsers.rstr   r   docutils.statemachiner   sphinxr   sphinx.addnodesr   r   sphinx.directivesr   sphinx.domainsr   r   sphinx.localer   r   sphinx.rolesr   sphinx.utilr    r!   r"   sphinx.util.docutilsr#   sphinx.util.nodesr$   r%   r&   sphinx.util.typingr'   r(   sphinx.applicationr)   sphinx.buildersr*   sphinx.environmentr+   	getLoggerr]   r   r
  r   Ur   ra   r-   re   rh   rw   r   r   r   r   r  rJ   r   r   r   r  r  r  rQ   ru   r  r  rc   r>   r<   <module>r     s     				      . . . . . . . . . . . . . . . . . . . . . . . . . . . .       8 8 8 8 8 8 8 8 8 8 6 6 6 6 6 6 6 6 , , , , , ,       8 8 8 8 8 8 8 8 / / / / / / * * * * * * * *         ! ! ! ! ! ! 4 4 4 4 4 4 4 4 4 4 0 0 0 0 0 0 A A A A A A A A A A 7 7 7 7 7 7 7 7 4))))))''''''333333		8	$	$ ?@@2:)2400)) )) )) )) ))%c* )) )) ))X2 2 2 2 2] 2 2 21 1 1 1 1X 1 1 1*,& ,& ,& ,& ,&_ ,& ,& ,&^M5 M5 M5 M5 M5!#& M5 M5 M5`    o   (    X    hsm)<    . 8D> VY ",/:=IN!J   <o! o! o! o! o! o! o! o!d c C d    B67 67 67 67 67_ 67 67 67r	 	 	 	 	H 	 	 	h h h h hV h h hV &   (   	x 	DcN 	 	 	 	 	 	r>   