
    O&i                     8   d Z ddl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*m+Z+ ddl,m-Z-m.Z.m/Z/ ddl0m1Z1 ddl2m3Z3m4Z4m5Z5 ddl6m7Z7m8Z8 erddl9m:Z: ddl;m<Z< ddl=m>Z>  e.j?        e@          ZAejB        dd         dk    rddlmCZC neZC ejD        d          ZE ejD        dejF                  ZG e*            ZH G d de"eI                   ZJ G d deJ          ZK G d d e+          ZL G d! d"e1          ZM G d# d$e"eI                   ZN G d% d&e1          ZO G d' d(e+          ZPd)eId*eeeI                  fd+ZQd,d-d.e	e         d/eId0eId1eRd2eId3ejS        d*ejT        fd4ZU G d5 d6e1          ZVdGd8eId9eId*ee         fd:ZW G d; d<e1          ZX G d= d>e+          ZY G d? d@e$          ZZdAdBdCe$dDe d*ee[         fdEZ\dAdBd*eeIef         fdFZ]dS )Hz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)___)EmphasizedLiteralXRefRole)docname_joinloggingws_re)SphinxDirective)clean_astextmake_idmake_refnode)
OptionSpecRoleFunction)Sphinx)Builder)BuildEnvironment   )      )Finalz ((?:/|--|-|\+)?[^\s=]+)(=?\s*.*)z`((~?\w*:)?\w+)`c                       e Zd ZU dZdZeed<   dZe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 )r5   envclearr   	desc_namer#   sub)selfr6   r7   names       _/home/geonatureadmin/si_en_reseau/tutos/venv/lib/python3.11/site-packages/sphinx/domains/std.pyhandle_signaturezGenericObject.handle_signature4   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entriesr3   stdlocation)r&   r;   statedocumentobjtypeappendnote_explicit_targetr4   findstrip	indexnoder   StandardDomain
get_domainnote_object)	r?   r@   r6   r7   node_idcolon	indextype
indexentryrK   s	            rA   add_target_and_indexz"GenericObject.add_target_and_index>   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FrC   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.
        -)rP   r?   r@   s     rA   make_old_idzGenericObject.make_old_idP   s     |c!D((rC   )__name__
__module____qualname____doc__r4   str__annotations__r5   r   r   rB   r]   ra    rC   rA   r2   r2   -   s           M3KOJ,c>BCGHOOOC . S    G G3 G GTX G G G G$) ) ) ) ) ) ) )rC   r2   c                   $    e Zd Z ed          ZdS )EnvVarenvironment variable; %sN)rb   rc   rd   r   r4   rh   rC   rA   rj   rj   Y   s        A011MMMrC   rj   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).
    rO   r;   r,   nodeis_refr8   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indexrI   r3   rk   rJ   rE   )new_serialnor   rr   r   r   targetrR   )	r?   rO   r;   rn   ro   varnametgtidrU   
targetnodes	            rA   result_nodeszEnvVarXRefRole.result_nodesb   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0rC   N)rb   rc   rd   re   r   rO   r   boolr   r
   r   r   ry   rh   rC   rA   rm   rm   ]   sn         1U^ 1:L 1T[ 1!1&+DJ^8L,L&M1 1 1 1 1 1rC   rm   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.
    r3   FrH   r   Toption_specr8   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 )Nr:   r   r3   rs   rI   rF   rG   rH   )rJ   rK   rL   )r#   r>   	argumentsrT   r&   r;   rN   rO   r@   r   ru   set_source_inforR   r4   rS   r   rr   insertsplitr   rV   rW   rX   )r?   fullnamerY   rn   retr\   r[   rZ   inoder@   r   rK   s               rA   runz
Target.run~   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$???
rC   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.
        r_   )r@   r`   s     rA   ra   zTarget.make_old_id   s     y3%%rC   N)rb   rc   rd   re   r4   has_contentrequired_argumentsoptional_argumentsfinal_argument_whitespacer}   r(   rg   r
   r   r   rf   ra   rh   rC   rA   r|   r|   r   s           MK $ K   T$Z    4& & & & & & & &rC   r|   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).
    r6   r7   r8   c                 d   d}d}|                     d          D ]}|                                }t                              |          }|s+t                              t          d          ||           ^|                                \  }}|d         dk    r|d         dk    r|d	d         }d|z   }|rX| j        j	        j
        r/|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    r1|d         dk    r%d}	|t          j        dd          z  }|dd         }ne|d         dk    r+|t          j                    z  }|                                }n.|d         dk    r"|t          j        dd          z  }|dd	         }t                               |          D ]K}
t%          |
t&          j                  r*|t'          j        |
                                          z  }F||
z  }L|	r|t          j        dd          z  }n|t          j        ||          z  }|s	|}|g|d<   n|d                             |           |dz  }|st.          |S )z/Transform an option description into RST nodes.r   r3   z, znMalformed option description %r, should look like "opt", "-opt args", "--opt args", "/opt args" or "+opt args"rL   rG   []N,FTrH   r:   =allnames)r   rT   option_desc_rematchloggerwarningr   groupsr;   configoption_emphasise_placeholdersr   desc_sig_punctuationdesc_sig_spacedesc_addnamer=   	samp_roleparse
isinstancer   TextastextrQ   
ValueError)r?   r6   r7   count	firstnamepotential_optionmoptnameargsadd_end_bracketparts              rA   rB   zCmdoption.handle_signature   s   	 #		$ 1	 1	/5577$$%566A r #?  @  @AQ(/  1 1 1 HHJJMGTr{c!!d2h#oo!#2#,Tz A8?@ Ax<S#FFFGx6888GGx4T4@@@Gx)'7;;;Gx< ="' ,Aw#~~$r(c//*.8#@c#J#JJ#AbDzaC8#:#<#<<#zz||aC8#@c#J#JJ#ABBx ) 5 5 , ,%dEJ77 ,#uz$++--'@'@@GG#tOGG" Gx<S#FFFG80t<<< 4#	'.i
##
#**7333QJEE 	rC   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)r_   /argr_   rE   rK   r   z%s command line optionzcommand line optionz; rJ   pairr3   )r;   ref_contextgetrQ   
startswithjoinr&   rN   rO   ra   rE   rR   r   rV   rW   add_program_optiondocnamer   rU   )r?   r   r6   r7   currprogramr   prefixesprefixrY   old_node_iddomaindescroptionentrys                 rA   r]   zCmdoption.add_target_and_index   sC   h*..}=={{:r22 	3 	3G#}H -,,,%%j11 '&&&XXh''Fdh
(;VWMMGEN!!'*****67;;K$*"5"999'%.00%%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	[ 	[rC   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.
        r_   r   r&   )r?   r   r   s      rA   ra   zCmdoption.make_old_id  s     }Vc\G3444rC   )	rb   rc   rd   re   rf   r   rB   r]   ra   rh   rC   rA   r   r      s         8C 8. 8S 8 8 8 8t[c [ [n [Y] [ [ [ [B5# 5 5 5 5 5 5 5 5rC   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.
    FrH   r   Tr}   r8   c                     t          j        d| j        d                                                   }|dk    r!| j        j                            dd            n|| j        j        d<   g S )Nr_   r   Noner   )r#   r>   r   rT   r;   r   pop)r?   programs     rA   r   zProgram.run  sc    )C!2!8!8!:!:;;fH $$]D999929DH /	rC   N)rb   rc   rd   re   r   r   r   r   r}   r(   rg   r
   r   r   rh   rC   rA   r   r   
  sh           K $ K   T$Z      rC   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 )
OptionXRefRoler;   r,   refnodehas_explicit_titletitleru   r8   c                 D    |j                             d          |d<   ||fS )Nr   )r   r   )r?   r;   r   r   r   ru   s         rA   process_linkzOptionXRefRole.process_link  s&    !$!4!4]!C!Cf}rC   Nrb   rc   rd   r   rz   rf   r   r   rh   rC   rA   r   r     s_         2 W Z^ ),16sCx     rC   r   liner8   c                 8    t          j        d|           d gz   }|S )Nz +: +)rer   )r   partss     rA   split_term_classifiersr   %  s    !#'4!8!8D6!AELrC   r;   r,   	textnodes	index_keysourcelinenorY   rO   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 )	Nr3   rE   termrK   rL   rI   mainrJ   )r   r   r   r   r   rQ   r&   rR   r   rV   rW   
_note_termr   rr   )r;   r   r   r   r   rY   rO   r   termtextrK   rU   s              rA   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	KrC   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sortedr}   r8   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   TFrG   rH   r3   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)rY   rO   classesglossary)r   r   rN   rO   optionszipcontentitemsrQ   isspacer   reporterr   r   r   lenlstripr   inline_textr   r;   	rawsourceextendr   
definitionnested_parsedefinition_list_itemdefinition_list)r?   rn   rJ   in_definition
in_comment	was_emptymessagesr   r   r   
indent_lenr   termsr   	termnodessystem_messagesr   r   sysmsgr   defnodedlists                         rA   r   zGlossary.runW  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&  rC   N)rb   rc   rd   re   r   r   r   r   r   flagr}   r(   rg   r
   r   r   rh   rC   rA   r   r   I  s~          
 K %*/K   a!T$Z a! a! a! a! a! a!rC   r   r3   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   rF   rH   ~tokenrK   )reftype	refdomainrq   xrefr   )r   token_refinditerstartrQ   r   r   groupr   r   literalend)r   r  retnodesposr   txtr  r   r   ru   r   s              rA   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
4:..///OrC   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.
    FrH   r   Tr}   r8   c                    t          t          | j                            d                    }t	          j                    }|                     |           t          j        d          }|	                    d| j
        d                                       d          }d}d}|D ]Q}|sd|vr|                                }d}	 |                    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/          |	|                     |                    |
           S|gS )NrK   z\\\nr3   r   
FrF   TrH   	tokennamezgrammar-token-%srE   r  rL   )r   rV   r;   rW   r   productionlistr   r   compiler>   r   r   rT   r   
productionr&   rN   rO   rQ   note_implicit_targetr   rX   r   r  )r?   r   rn   nl_escape_relinesr  first_rule_seenruler@   tokenssubnoder   rY   objNames                 rA   r   zProductionList.run  s   ndh&9&9%&@&@AA /11T"""z'**  T^A%677==dCC 	! 	!D" s$"&**,,"O#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
C.-C.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     rA   ra   zProductionList.make_old_id  s     }-5666rC   N)rb   rc   rd   re   r   r   r   r   r}   r(   rg   r
   r   r   rf   ra   rh   rC   rA   r  r    s           K $ K   #T$Z # # # #J7 7 7 7 7 7 7 7rC   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 )
TokenXRefRoler;   r,   r   r   r   ru   r8   c                     |                     d          }| j        s3|d         dk    r'd|v r|                    d          \  }}n
|dd          }||fS )Nr  r   rF   rH   )r   r   r   )r?   r;   r   r   r   ru   r   s          rA   r   zTokenXRefRole.process_link  sa    s##& 	"58s??e|| ;;s++55abb	f}rC   Nr   rh   rC   rA   r%  r%    s_         2 W Z^ ),16sCx     rC   r%  c                   b    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eed+<   d,d-d.d/d0d1Zej         d2ej!        d3ej"        d4iZ#e	ee$         e%e
e&e'         f         f         ed5<   dr fd:Z(	 dsd;e
d<e
d=e
d>e
d8d9f
d?Z)e*d8e	e%e
e
f         e%e
e
f         f         fd@            Z+dtdAe
d;e
dBe
dCe,d8d9f
dDZ-e*d8e	e
e%e
e
f         f         fdE            Z.dtde
dBe
dCe,d8d9fdFZ/e*d8e	e%e
e
f         e%e
e
f         f         fdG            Z0e*d8e	e
e%e
e
e
f         f         fdH            Z1e*d8e	e
e%e
e
f         f         fdI            Z2d<e
d8d9fdJZ3dKe4e
         dLe	d8d9fdMZ5d6d7d<e
dej6        d8d9fdNZ7dOe
d;e
d<e
dBe
d8d9f
dPZ8dQe
dRdSd<e
dBe
dTe
dUe
dVe,d8e9fdWZ:d6d7dQe
dRdSdXe
dYe
dZe;d[e9d8e&e9         fd\Z<d6d7dQe
dRdSdXe
dYe
dZe;d[e9d8e&e9         fd]Z=d6d7dQe
dRdSdXe
dYe
dZe;d[e9d8e&e9         fd^Z>d6d7dQe
dRdSdXe
dYe
dZe;d[e9d8e&e9         fd_Z?d6d7dQe
dRdSdXe
dYe
dZe;d[e9d8e&e9         fd`Z@d6d7dQe
dRdSdXe
dYe
dZe;d[e9d8e&e9         fdaZAd6d7dQe
dRdSdXe
dYe
dZe;d[e9d8e9fdbZBd6d7dQe
dRdSdXe
dYe
dZe;d[e9d8e&e9         fdcZCd6d7dQe
dRdSdYe
dZe;d[e9d8e4e%e
e9f                  fddZDd8eEe%e
e
e
e
e
eFf                  fdeZGdudgedheHd8e
fdiZIdZe$d8eHfdjZJdZe$d8e&e
         fdkZKdZe$d8e&e
         fdlZLd6d7dRdSdme
d<e
dne9d8e%eFdof         fdpZMdZe9d8e&e
         fdqZN xZOS )vrV   zs
    Domain for all objects that don't fit into another domain or are added
    via the application interface.
    rK   Defaultzglossary termr   rG   )
searchpriozgrammar tokenr  zreference labelrefkeywordzenvironment variableenvvarzprogram optionr   rO   doc)r   r  labelr,  r   r-  object_types)r   r   r   r,  r   r  r   T)warn_dangling)innernodeclassr0  )	lowercaser1  r0  )r2  r0  )r0  r1  )r   r,  r  r   r*  numrefr+  r-  rolesgenindexr3   Indexpy-modindexzModule IndexsearchzSearch Page)r5  modindexr8  )r5  r3   )r7  r3   )r8  r3   )progoptionsobjectslabels
anonlabelsinitial_dataz term not in glossary: %(target)rzundefined label: %(target)rzunknown keyword: %(target)rzunknown document: %(target)rzunknown option: %(target)r)r   r3  r+  r-  r   )figureN)tableN)
code-blockNenumerable_nodesr;   r,   r8   Nc                     t                                          |           t          | j                  | _        |j        j        j                                        D ]\  }}|| j        |<   d S N)super__init__r   rB  appregistryr   )r?   r;   rn   settings	__class__s       rA   rF  zStandardDomain.__init__n  sq     !%T%: ; ;!g.?EEGG 	3 	3ND(*2D!$''	3 	3rC   r@   r   rY   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   r;   doc2pathr<  )r?   r@   r   rY   r   s        rA   note_hyperlink_targetz$StandardDomain.note_hyperlink_targetv  s      4?""tt'<'@R'R'RNN2HII!2!24?43H3K!L!LN N N ")' 2 	:!('5 9DK	: 	:rC   c                 8    | j                             di           S )Nr;  data
setdefaultr?   s    rA   r;  zStandardDomain.objects  s    y##Ir222rC   rP   labelidrM   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 %srL   N)r;  r   r   r   r;   r   )r?   rP   r@   rT  rM   r   s         rA   rX   zStandardDomain.note_object  s|     T?dl**l7D=1!4GNN2TUU"D'H  F F F'+x'7&AWd]###rC   c                 8    | j                             di           S )z2.. note:: Will be removed soon. internal use only.r   rP  rS  s    rA   _termszStandardDomain._terms  s     y##GR000rC   c                     |                      d|||           | j        j        |f| j        |                                <   dS )zeNote a term for cross reference.

        .. note:: Will be removed soon. internal use only.
        r   N)rX   r;   r   rW  lower)r?   r   rT  rM   s       rA   r   zStandardDomain._note_term  sB    
 	w999%)X%5w$?DJJLL!!!rC   c                 8    | j                             di           S )Nr:  rP  rS  s    rA   r:  zStandardDomain.progoptions  s    y##M2666rC   c                 8    | j                             di           S )Nr<  rP  rS  s    rA   r<  zStandardDomain.labels  s    y##Hb111rC   c                 8    | j                             di           S )Nr=  rP  rS  s    rA   r=  zStandardDomain.anonlabels  s    y##L"555rC   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 rD  )listr:  r   r;  rW  r<  r=  )r?   r   keyfn_ls        rA   	clear_doczStandardDomain.clear_doc  s[   !$"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(	) 	)rC   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;  rW  r<  r=  )r?   rc  rd  r_  rQ  s        rA   merge_domaindatazStandardDomain.merge_domaindata  sM   "=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(""'+$	, 	,rC   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    r1t!          t
          j        |d                   }t%          |          }	n{|j        d
k    rt%          |          }	n_|                     |          r|                     |          }	|	sn/t	          |t
          j        t
          j        f          r,|j        r%t!          t
          j        |j        d                   }t	          |t
          j        t
          j        f          r%t!          t
          j        |j        d                   }t	          |t
          j        t
          j        f          rt%          |          }	n\t;          |                    t>          j                   d           }
|
r+|
                    d          r|
                    d          }	n|||	f| j
        |<   d S )Nrefidnamesr   footnoterefuridesc_rL  rL   sectionrubriccaption)!	nametypesr   nameidsrE   r   r   ru   r   tagnamer   r<  r   r   r   rM  r=  r   r   r%   is_enumerable_nodeget_numfig_titler   
field_listchildrenr   fieldr   r   
field_namenextfindallr   toctree)r?   r;   r   rO   r@   explicitrT  rn   r   sectnamer{  s              rA   process_doczStandardDomain.process_doc  s   &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  te&;&+&6&8 9 9 AA  t}Q/?@@DdU[%2L$MNN At}Q/?@@DdUZ1A$BCC !+D11HH"4<<0@#A#A4HHG !7;;y#9#9 !#*;;y#9#9 ! '( :DK_/	; /	;rC   r   c                 <    ||f| j         vr||f| j         ||f<   d S d S rD  )r:  )r?   r   r@   r   rT  s        rA   r   z!StandardDomain.add_program_option  s8    T?$"222/6.@DWd]+++ 32rC   fromdocnamebuilderr+   r}  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	nodeclassr3   internalTr   rK   zstd-rh  
refdocnamerefsectnamerk  #r3   r3   )r   r   	referenceinliner   rQ   r   get_relative_uri)r?   r  r  r   rT  r}  r  r   r  newnode	innernodecontnodes               rA   build_reference_nodez#StandardDomain.build_reference_node  s&    KKU_==	)==T=W==L844	==##/i ''...i ''(9:::k!!&GG
 $B''H%,H\"&.H]# ' 8 8W!& !&GH 3!!!S7]2!!!y!!!rC   typru   rn   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*  r3  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?   r;   r  r  r  ru   rn   r  resolvers	            rA   resolve_xrefzStandardDomain.resolve_xref,  s     %<<-HHH__0HHI1HHE\\-HHH__0HHF]].HH-Hx['3hOOOrC   c                     |d         r3| j                             |d          \  }}	|                                }
n| j                            |d          \  }}	}
|sd S |                     ||||	|
d          S )Nrefexplicitr  r3   r3   r3   r*  )r=  r   r   r<  r  )r?   r;   r  r  r  ru   rn   r  r   rT  r}  s              rA   r  z StandardDomain._resolve_ref_xref@  s      	O  $2268DDGW{{}}HH *.)N)N&GWh 	4((g)0'8UL L 	LrC   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  r  rm  Fz(numfig is disabled. :numref: is ignored.rL   zBFailed to create a cross reference. Any number is not assigned: %sr  r3   z{name}zthe link has no caption: %s.number)r@   r  )r  zinvalid numfig_format: %s (%r)zinvalid numfig_format: %sr3  )r  r   )r<  r   r=  get_doctreerE   get_enumerable_node_typer   numfigr   r   r   get_fignumberr   r   numfig_formatr   maprf   formatKeyError	TypeErrorr  r   number_reference)r?   r;   r  r  r  ru   rn   r  r   rT  fignametarget_nodefigtype	fignumberr   fignumnewtitleexcs                     rA   r  z#StandardDomain._resolve_numref_xrefR  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#4r"?@@%RVWWW#c9"5"566u$$E(9(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?   r;   r  r  r  ru   rn   r  r   rT  r   s              rA   r  z$StandardDomain._resolve_keyword_xref  sJ     #kooflCC! 	4G['#X/ / 	/rC   c                 4   |                     d|          }t          ||d                   }	|	|j        vrd S |d         r|                                }
nt	          |j        |	                   }
t          j        |
|
dg          }t          |||	d |          S )Nrefdocrq   r  r-  r  )	r   r!   all_docsr   r%   titlesr   r  r'   )r?   r;   r  r  r  ru   rn   r  r  r   ro  r  s               rA   r  z StandardDomain._resolve_doc_xref  s     (K00vtK'899#,&&4M" <++--&sz'':;;WgwGGGIgtYOOOrC   c                 p   |                     d          }|                                }| j                             ||fd          \  }	}
|	sFdD ]C}||v r=|                    |          \  }}}| j                             ||fd          \  }	}
|	r nD|	sg }t	          j        |          ryt	          j        |d          \  }}|                    |           d                    |          }| j                             ||fd          \  }	}
|	rnt	          j        |          yd S t          |||	|
|          S )Nr   r  >   [=r:   r   rH   r_   )
r   rT   r:  	partitionr#   r8  r   rQ   r   r'   )r?   r;   r  r  r  ru   rn   r  prognamer   rT  needlestemr   commands
subcommands                   rA   r  z#StandardDomain._resolve_option_xref  sn    88M**+//60BHMM 
	
 +  V##!'!1!1&!9!9JD!Q'+'7';';Xt<Lh'W'W$GW  	H,v&& 	%*[%;%;"
F
+++88H--#'#3#7#768JH#U#U   ,v&& 	 tG['#X/ / 	/rC   c           	          |                      |||||||          }|r|S |                                | j        v r5| j        |                                         \  }	}
t          |||	|
|          S d S rD  )r  rY  rW  r'   )r?   r;   r  r  r  ru   rn   r  resultr   rT  s              rA   r  z!StandardDomain._resolve_term_xref  s     ''['3(.h@ @ 	M ||~~,,#';v||~~#> #G['7HUUUtrC   c                     |                      |          pg }|D ]!}	|	|f| j        v r| j        |	|f         \  }
} n"d\  }
}|
sd S t          |||
||          S )Nr  )objtypes_for_roler;  r'   )r?   r;   r  r  r  ru   rn   r  objtypesrP   r   rT  s               rA   r  z StandardDomain._resolve_obj_xref  s     ))#..4" 	& 	&G DL00#'<#@  1  &GW 	4G['#X/ / 	/rC   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   )rY  r  rQ   r/  r;  role_for_objtyper'   )r?   r;   r  r  ru   rn   r  resultsltargetroleresrP   r_  r   rT  s                  rA   resolve_any_xrefzStandardDomain.resolve_any_xref  s#    .0,,..% 	5 	5D##Cgt/3u}}GG&$((4 4C  5s3444( 	B 	BGF#C&  (dl""#'<#4 )>)>w)G)G G ,Wk7-4h!@ !@ A B B B rC   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-  r3   rG   r  r   r   rH   r)  r.  )r;   r  r%   r  r:  r   r   r;  r/  attrsr<  setr=  )r?   r-  progr   infor   typer@   r   rT  sectionnamenon_anon_labelss               rA   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?**T7GWbAAAA	B 	BrC   Fr  primaryc                     |j         S rD  )lname)r?   r  r  s      rA   get_type_namezStandardDomain.get_type_name  s
    zrC   c                     |j         | j        v S rD  )rJ  rB  )r?   rn   s     rA   rs  z!StandardDomain.is_enumerable_node  s    ~!666rC   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)rs  r   r   rB  r   rJ  r   r   ro  r   r%   )r?   rn   elemr   title_getterr!  s         rA   rt  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 trC   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.rn   clsr8   c                 :    t          fd| D                       S )Nc              3   8   K   | ]}t          |          V  d S rD  )r   ).0childr  s     rA   	<genexpr>zMStandardDomain.get_enumerable_node_type.<locals>.has_child.<locals>.<genexpr>/  s-      @@%z%--@@@@@@rC   )any)rn   r  s    `rA   	has_childz:StandardDomain.get_enumerable_node_type.<locals>.has_child.  s&    @@@@4@@@@@@rC   rm  literal_blockrA  r  )r   r   rz   r   r   rm  	containerr  rB  r   rJ  )r?   rn   r  r  r   s        rA   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NrC   r  r  .c                    |dk    r}|j         dk    rd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)Nrm  latexrh   r  rE   r   r3   )r@   toc_secnumbersr   r   toc_fignumbersr  
IndexError)	r?   r;   r  r  r   r  
anchorname	figure_idr  s	            rA   r  zStandardDomain.get_fignumber<  s    i|w&&r 222   ;u#5a#88
S%7%@@@-g6::2>>>-g6:::FFF*'.q1	)'27;IFFj) * * * !c)*s   &B, ,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   rq   r   r  r_   )r   r#   r   r   r   r   )r?   rn   r  commandr   s        rA   get_full_qualified_namez&StandardDomain.get_full_qualified_nameS  s    88I(**xx..Hk$((;"7"788G ,q(+++[[]]F xx'!2!2F ;<<<t4rC   )r;   r,   r8   Nr3   rD  )F)Prb   rc   rd   re   r@   r.  r   r   r/  r   rf   rg   r   r   rj   r   r  r   r   r   r   rm   r%  r    r   r  r4  r   r)   r>  r0   dangling_warningsr?  r@  r  rB  r   r   r   r   rF  rN  propertyr;  r   rX   rW  r   r:  r<  r=  rb  r
   rf  rO   r~  r   r   r  r   r  r  r  r  r  r  r  r  r  r	   intr  rz   r  rs  rt  r  r  r  __classcell__)rJ  s   @rA   rV   rV   !  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 , , , , ,$0;1 0;C 0;5> 0;^b 0; 0; 0; 0;dA# AS A3 AQT AY] A A A A
 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/ / / /B&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         rC   rV   rG  r*   r   rn   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 )	NrK   r  r*  rq   zundefined label: %rzDFailed to create a cross reference. A title or caption not found: %r)rM   r  subtypeT)r@   r=  r   r   r   )rG  r   rn   ru   msgs        rA   warn_missing_referencer  b  s     
6;%''DOu,D,Dtk"****++CC[\\CsV|dYXXXtrC   c                 z    |                      t                     |                     dt                     dddddS )Nzwarn-missing-referencebuiltinr-   T)versionenv_versionparallel_read_safeparallel_write_safe)
add_domainrV   connectr  )rG  s    rA   setupr  q  sG    NN>"""KK(*@AAA "#	  rC   r  )^re   r   sysr   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   r    sphinx.utilr!   r"   r#   sphinx.util.docutilsr$   sphinx.util.nodesr%   r&   r'   sphinx.util.typingr(   r)   sphinx.applicationr*   sphinx.buildersr+   sphinx.environmentr,   	getLoggerrb   r   version_infor0   r  r   Ur	  r   rf   r2   rj   rm   r|   r   r   r   r   r  rO   r   r   r   r  r  r%  rV   rz   r  r  rh   rC   rA   <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 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	$	$BQB6!!E ?@@2:)2400	)) )) )) )) ))%c* )) )) ))X2 2 2 2 2] 2 2 21 1 1 1 1X 1 1 1*,& ,& ,& ,& ,&_ ,& ,& ,&^f5 f5 f5 f5 f5!#& f5 f5 f5R    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 	 	 	~ ~ ~ ~ ~V ~ ~ ~B &   (   	x 	DcN 	 	 	 	 	 	rC   