HEX
Server: Apache
System: Linux pdx1-shared-a1-38 6.6.104-grsec-jammy+ #3 SMP Tue Sep 16 00:28:11 UTC 2025 x86_64
User: mmickelson (3396398)
PHP: 8.1.31
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/sphinx/domains/__pycache__/std.cpython-310.pyc
o

�$�a$��@s�dZddlZddlZddlZddlmZddlmZmZmZm	Z	m
Z
mZmZm
Z
mZmZmZmZddlmZddlmZmZmZddlmZmZddlmZdd	lmZdd
lm Z m!Z!ddl"m#Z#ddl$m%Z%dd
l&m'Z'm(Z(ddl)m*Z*m+Z+ddl,m-Z-ddl.m/Z/m0Z0m1Z1ddl2m3Z3ddl4m5Z5m6Z6m7Z7ddl8m9Z9m:Z:er�ddl;m<Z<ddl=m>Z>ddl?m@Z@e0�AeB�ZCe�Dd�ZEe�DdejF�ZGGdd�de%eH�ZIGdd�deI�ZJGdd�de-�ZKGdd �d e3�ZLGd!d"�d"e%eH�ZMGd#d$�d$e3�ZNGd%d&�d&e-�ZOd'eHd(ee
eHfd)d*�ZPd+d,d-e
ed.eHd/eHd0eQd1eHd2ejRd(ejSfd3d4�ZTGd5d6�d6e3�ZUdJd8eHd9eHd(eefd:d;�ZVGd<d=�d=e3�ZWGd>d?�d?e-�ZXGd@dA�dAe'�ZYdBdCdDe'dEe!d(e
eZfdFdG�Z[dBdCd(e	eHeffdHdI�Z\dS)Kz�
    sphinx.domains.std
    ~~~~~~~~~~~~~~~~~~

    The standard domain.

    :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
�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)�RemovedInSphinx50Warning)�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@s|eZdZUdZdZeed<dZeddee	gefed<dede	d	efd
d�Z
dedede	d	dfd
d�Zded	efdd�ZdS)�
GenericObjectzM
    A generic x-ref directive registered with Sphinx.add_object_type().
    ��
indextemplateNr+�
parse_node�sig�signode�returncCsB|jr
|�|j||�}|S|��|t�||�7}t�d|�}|S)N� )r/�env�clearr�	desc_namer"�sub)�selfr0r1�name�r:�4/usr/lib/python3/dist-packages/sphinx/domains/std.py�handle_signature8s�zGenericObject.handle_signaturer9c
Cst|j|jj|j|�}|d�|�|�|�}||jjjvr+||dvr+|d�|�|jj�|�|j	rl|j	�
d�}|dkrW|j	d|���}|j	|dd���|f}nd}|j	|f}|jd�|||ddf�t
t|j�d��}	|	j|j|||d	�dS)
N�ids�:�����single�entriesr-�std��location)r%r4�state�document�objtype�append�make_old_idr=�note_explicit_targetr.�find�strip�	indexnoder�StandardDomain�
get_domain�note_object)
r8r9r0r1�node_id�old_node_id�colon�	indextype�
indexentryrCr:r:r;�add_target_and_indexBs 
z"GenericObject.add_target_and_indexcC�|jd|S)z�Generate 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.
        �-)rH�r8r9r:r:r;rJ[�zGenericObject.make_old_id)
�__name__�
__module__�__qualname__�__doc__r.�str�__annotations__r/rrr<rWrJr:r:r:r;r,1s

r,c@seZdZed�ZdS)�EnvVar�environment variable; %sN)r\r]r^rr.r:r:r:r;rbdsrbc
@s@eZdZdZdejdddededee	e
e	eff
dd	�Zd
S)�EnvVarXRefRolezQ
    Cross-referencing role for environment variables (adds an index entry).
    rGr4r+�node�is_refr2c	Cs~|s|ggfS|d}d|�d�}t��}d||ddfdtd�||ddfg|d<tjdd|gd�}|�|�|||ggfS)	N�	reftargetzindex-%s�indexrAr-rcrB�r=)�new_serialnorrhrr�targetrK)	r8rGr4rerf�varname�tgtidrN�
targetnoder:r:r;�result_nodesms
�
zEnvVarXRefRole.result_nodesN)
r\r]r^r_rrGr�boolrr	rrror:r:r:r;rdhs��rdc@sVeZdZUdZdZdZdZdZdZiZ	e
ed<dee
fd	d
�Zdedefdd
�ZdS)�Targetz@
    Generic target for user-defined cross-reference types.
    r-Fr@rT�option_specr2c
CsHt�d|jd���}t|j|jj|j|�}t	j
dd|gd�}|�|�|�|�}||jjj
vr=||dvr=|d�|�|jj�|�|g}|jr|j|f}d}|�d�}|dkrm|d|���}||d	d���}tj|||ddfgd
�}	|�d|	�|j}
d|jvr�|j�dd	�\}}
tt|j�d��}|j|
|||d�|S)
Nr3rr-rir=rAr>r?r@)rBrCrD)r"r7�	argumentsrMr%r4rFrGr9rrk�set_source_inforJr=rIrKr.rLrrh�insert�splitrrOrPrQ)
r8�fullnamerRrerS�retrVrUrT�inoder9rrCr:r:r;�run�s0



z
Target.runr9cCrX)z�Generate 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.
        rY)r9rZr:r:r;rJ�r[zTarget.make_old_idN)r\r]r^r_r.�has_content�required_arguments�optional_arguments�final_argument_whitespacerrr'rar	rrzr`rJr:r:r:r;rq}s
!rqc@sVeZdZdZdededefdd�Zdedededdfd	d
�Zdededefd
d�ZdS)�	Cmdoptionz;
    Description of a command-line option (.. option).
    r0r1r2c	Cs�d}d}|�d�D]a}|��}t�|�}|s!tjtd�||d�q	|��\}}|�d�r;|�d�r;|dd	�}d|}|rE|t	�
dd�7}|t	�||�7}|t	�
||�7}|s_|}|g|d
<n|d
�|�|d7}q	|sot
�|S)z/Transform an option description into RST nodes.rr-�, znMalformed option description %r, should look like "opt", "-opt args", "--opt args", "/opt args" or "+opt args"rD�[�]Nr?�allnamesr@)rvrM�option_desc_re�match�logger�warningr�groups�endswithr�desc_addnamer6rI�
ValueError)	r8r0r1�count�	firstname�potential_option�m�optname�argsr:r:r;r<�s6

�
zCmdoption.handle_signaturer�NcCsT|jj�d�}|�dg�D]F}dg}|r|�|�|�d�s#|�d�d�|�}t|j|jj||�}|d�|�|�	||�}	|	|jjj
vrS|	|dvrS|d�|	�q
|jj�|�tt
|j�d��}
|�dg�D]}|
�|||jj|dd	�qj|r�td
�|}ntd�}|�d�D]}d
�||g�}
|jd�d|
|dd	ddf�q�dS)N�std:programr��	cmdoption)rY�/�argrYr=rCrz%s command line optionzcommand line optionr�z; rB�pairr-)r4�ref_context�getrI�
startswith�joinr%rFrGrJr=rKrrOrP�add_program_option�docnamerrvrN)r8r�r0r1�currprogramr��prefixes�prefixrRrS�domain�descr�option�entryr:r:r;rW�s8



��$�zCmdoption.add_target_and_indexr�r�cCst�|d|�S)z�Generate 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.
        rY�rr%)r8r�r�r:r:r;rJ�szCmdoption.make_old_id)	r\r]r^r_r`rr<rWrJr:r:r:r;r�s
!!rc@s@eZdZUdZdZdZdZdZiZe	e
d<deefdd	�Z
d
S)�ProgramzI
    Directive to name the program for which options are documented.
    Fr@rTrrr2cCsBt�d|jd���}|dkr|jj�dd�gS||jjd<gS)NrYr�Noner�)r"r7rsrMr4r��pop)r8�programr:r:r;rzs�zProgram.runN)r\r]r^r_r{r|r}r~rrr'rar	rrzr:r:r:r;r�s
r�c@�6eZdZdddededededeeeffdd	�Zd
S)�OptionXRefRoler4r+�refnode�has_explicit_title�titlerkr2cCs|j�d�|d<||fS)Nr�)r�r�)r8r4r�r�r�rkr:r:r;�process_linkszOptionXRefRole.process_linkN�r\r]r^rrpr`rr�r:r:r:r;r����
�r��liner2cCst�d|�dg}|S)Nz +: +)�rerv)r��partsr:r:r;�split_term_classifierssr�r4r+�	textnodes�	index_key�source�linenorRrGcCs�tjddg|�R�}||_||_|��}|r|d�|�nt||d|�}|d�|�|�|�tt	|�
d��}	|	j|||d�t�
�}
d||d|fg|
d<|j|j|
_|
_|�|
�|S)	Nr-r=�termrCrDrA�mainrB)rr�r�r��astextrIr%rKrrOrP�
_note_termrrh)r4r�r�r�r�rRrGr��termtextrCrNr:r:r;�make_glossary_term$s 

r�c@sFeZdZUdZdZdZdZdZdej	iZ
eed<de
efdd	�Zd
S)�Glossaryz[
    Directive to create a glossary with cross-reference targets for :term:
    roles.
    TrF�sortedrrr2cCs�t��}|jj|_g}d}d}d}g}t|j|jj�D]�\}\}}	|s5|r2|r2|dd�d||	�d}q|r�|d��s�|�	d�rEd}qd}|ri|sZ|�|jj
jtd�||	d	��|�|||	fgt
�f�d}nb|rz|�|jj
jtd
�||	d	��|r�|dd�|||	f�nB|�|jj
jtd�||	d	��n2|r�n/|s�d}t|�t|���}
|r�|dd�||
d�||	�n|�|jj
jtd�||	d	��d}qg}|D]q\}}
g}g}g}|D]8\}}}	t|�}|j�|d|	�\}}t|j||d||	d|jjd�}||_|�|�|�|���|�|�q�|�|�t��}|
�r0|j�|
|
jdd|�|�|�|�|tjdg|�R�f�q�d
|jv�rR|jdd�d�t��}|d�d�|�dd�|D��||7}||gS)NTFr?r@r-rz.. 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)rRrGr�cSst�d|dd���S)N�NFDr)�unicodedata�	normalize�lower)�xr:r:r;�<lambda>�szGlossary.run.<locals>.<lambda>)�key�classes�glossarycss�|]}|dVqdS)r@Nr:)�.0�itemr:r:r;�	<genexpr>�s�zGlossary.run.<locals>.<genexpr>)rr�rFrG�zip�content�itemsrI�isspacer��reporterr�rr�len�lstripr��inline_textr�r4�	rawsource�extendr�r�
definition�nested_parse�definition_list_item�options�sort�definition_list)r8rerB�
in_definition�
in_comment�	was_empty�messagesr�r�r��
indent_lenr��termsr��	termtexts�	termnodes�system_messagesr�r��sysmsgr��defnode�dlistr:r:r;rzPs�

��
� ��

�
�
zGlossary.runN)r\r]r^r_r{r|r}r~r�flagrrr'rar	rrzr:r:r:r;r�Bs
�r�r-�text�productionGroupcCs2t|�dkr
|d7}g}d}t�|�D]l}|��|kr,|||���}|�t�||��|�d�}d|vr]|ddkrI|�d�\}}|dd�}	n|ddkrX|dd�}|}	n|}|}	n|}||}	t	|dd|	d�}
|
tj
||dgd	�7}
|�|
�|��}q|t|�kr�|�t�||d�||d���|S)
Nrr>r@�~�tokenrC)�reftype�	refdomainrg�xref�r�)r��token_re�finditer�startrIr�Text�grouprvr�literal�end)r�r��retnodes�posr��txtr�rr�rkr�r:r:r;�token_xrefs�s:
�

"r�c@sReZdZUdZdZdZdZdZiZe	e
d<deefdd	�Z
d
edefdd�Zd
S)�ProductionListz0
    Directive to list grammar productions.
    Fr@rTrrr2c	Cs�tt|j�d��}t��}|�|�t�d�}|�	d|j
d��d�}d}d}|D]�}|dkr8d|vr8|��}q)|d7}z
|�dd�\}}	Wnt
yRY|gSwt�|�}
|��}||
d<|
dr�d	|}t|j|jj||�}|
d
�|�|�|�}
|
|jjjvr�|
|
d
vr�|
d
�|
�|jj�|
|
�t|�dkr�d||f}n|}|jd|||d
�|
�t|	|��|�|
�q)|gS)NrCz\\\nr-r�
r>r@�	tokennamezgrammar-token-%sr=z%s:%sr�rD)rrOr4rPr�productionlistrtr��compiler7rsrvrMr��
productionr%rFrGrIrJr=�note_implicit_targetr�rQr�r�)r8r�re�nl_escape_re�linesr��i�ruler9�tokens�subnoder�rRrS�objNamer:r:r;rz�sJ

�

zProductionList.runr�cCst�d|�S)z�Generate 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.
        zgrammar-token-r�)r8r�r:r:r;rJr[zProductionList.make_old_idN)r\r]r^r_r{r|r}r~rrr'rar	rrzr`rJr:r:r:r;r��s
-r�c@r�)�
TokenXRefRoler4r+r�r�r�rkr2cCsN|�d�}|js#|ddkr#d|vr|�d�\}}||fS|dd�}||fS)Nr�rr>r@)r�r�rv)r8r4r�r�r�rkrr:r:r;r�s
�zTokenXRefRole.process_linkNr�r:r:r:r;rr�rcs�eZdZUdZdZdZeed�ddd�eed�d	dd�eed
�dddd�eed
�d�eed�d�eed�ddd�d�Ze	e
efed<ee
e
eeed�Ze	e
eefed<edd�e�e�eejdd�edejdd�eddd�edd�edejd�d�Ze	e
eeeffed<iidd ed!�fd"d ed#�fd$d ed%�fd&�d'd(d)d&�d*�Zd+d,d-d.d/d0�Zejd1ej d2ej!d3iZ"e	ee#e$e
e%e&ffed4<d��fd9d:�Z'	 d�d;e
d<e
d=e
d>e
d7d8f
d?d@�Z(e)d7e	e$e
e
fe$e
e
fffdAdB��Z*d�dCe
d;e
dDe
dEe+d7d8f
dFdG�Z,dCe
d;e
d<e
dDe
d7d8f
dHdI�Z-e)d7e	e
e$e
e
fffdJdK��Z.d�de
dDe
dEe+d7d8fdLdM�Z/e)d7e	e$e
e
fe$e
e
fffdNdO��Z0e)d7e	e
e$e
e
e
fffdPdQ��Z1e)d7e	e
e$e
e
fffdRdS��Z2d<e
d7d8fdTdU�Z3dVe4e
dWe	d7d8fdXdY�Z5d5d6d<e
dej6d7d8fdZd[�Z7d\e
d;e
d<e
dDe
d7d8f
d]d^�Z8d_e
d`dad<e
dDe
dbe
dce
dde+d7e9fdedf�Z:d5d6d_e
d`dadge
dhe
die;dje9d7e%e9fdkdl�Z<d5d6d_e
d`dadge
dhe
die;dje9d7e%e9fdmdn�Z=d5d6d_e
d`dadge
dhe
die;dje9d7e%e9fdodp�Z>d5d6d_e
d`dadge
dhe
die;dje9d7e%e9fdqdr�Z?d5d6d_e
d`dadge
dhe
die;dje9d7e%e9fdsdt�Z@d5d6d_e
d`dadge
dhe
die;dje9d7e%e9fdudv�ZAd5d6d_e
d`dadge
dhe
die;dje9d7e9fdwdx�ZBd5d6d_e
d`dadge
dhe
die;dje9d7e%e9fdydz�ZCd5d6d_e
d`dadhe
die;dje9d7e4e$e
e9ffd{d|�ZDd7eEe$e
e
e
e
e
eFffd}d~�ZGd�d�ed�eHd7e
fd�d��ZIdie#d7eHfd�d��ZJdie#d7e%e
fd�d��ZKdie#d7e%e
fd�d��ZLd5d6d`dad�e
d<e
d�e9d7e$eFd�ffd�d��ZMdie9d7e%e
fd�d��ZN�ZOS)�rOzs
    Domain for all objects that don't fit into another domain or are added
    via the application interface.
    rC�Defaultz
glossary termr�r?)�
searchprioz
grammar tokenr�zreference label�ref�keywordzenvironment variable�envvarzprogram optionr�rG�doc)r�r��labelrr�r�object_types)r�r�r�rr�rrT)�
warn_dangling)�innernodeclassr)�	lowercaserr)rr)rr)r�rr�r�r�numrefrr�roles�genindexr-�Index�py-modindexzModule Index�searchzSearch Page)r�modindexr)rr-)rr-)rr-)�progoptions�objects�labels�
anonlabelsz term not in glossary: %(target)szundefined label: %(target)szunknown keyword: %(target)szunknown document: %(target)szunknown option: %(target)s)r�rrrr�)�figureN)�tableN)�
code-blockN�enumerable_nodesr4r+r2Ncs>t��|�t|j�|_|jjj��D]	\}}||j|<qdS�N)�super�__init__rr%�app�registryr�)r8r4re�settings��	__class__r:r;r(vs
�zStandardDomain.__init__r9r�rRr�cCsj||jvr |j|||fkr t�td�||j�|j|d��||f|j|<|r3|||f|j|<dSdS)aUAdd 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 %srN)r!r�r�rr4�doc2pathr )r8r9r�rRr�r:r:r;�note_hyperlink_target~s
��z$StandardDomain.note_hyperlink_targetcC�|j�di�S)Nr��data�
setdefault�r8r:r:r;r��zStandardDomain.objectsrH�labelidrEcCsR||f|jvr|j||fd}tjtd�||||d�|jj|f|j||f<dS)zRNote a generic object for cross reference.

        .. versionadded:: 3.0
        rz4duplicate %s description of %s, other instance in %srDN)rr�r�rr4r�)r8rHr9r7rEr�r:r:r;rQ�s
�zStandardDomain.note_objectcCs&tjdtdd�||f|j||f<dS)Nz*StandardDomain.add_object() is deprecated.�)�
stacklevel)�warnings�warnrr)r8rHr9r�r7r:r:r;�
add_object�s�zStandardDomain.add_objectcCr1)z2.. note:: Will be removed soon. internal use only.r�r2r5r:r:r;�_terms�szStandardDomain._termscCs*|�d|||�|jj|f|j|��<dS)zeNote a term for cross reference.

        .. note:: Will be removed soon. internal use only.
        r�N)rQr4r�r=r�)r8r�r7rEr:r:r;r��szStandardDomain._note_termcCr1)Nrr2r5r:r:r;r�r6zStandardDomain.progoptionscCr1)Nr r2r5r:r:r;r �r6zStandardDomain.labelscCr1)Nr!r2r5r:r:r;r!�r6zStandardDomain.anonlabelscCs�d}t|j���D]\}\}}||kr|j|=q	t|j���D]\}\}}||kr-|j|=qt|j���D]\}\}}||krC|j|=q5t|j���D]\}\}}}||krZ|j|=qKt|j���D]\}\}}||krp|j|=qbdSr&)�listrr�rr=r r!)r8r�r��fn�_lr:r:r;�	clear_doc�s,������zStandardDomain.clear_doc�docnames�	otherdatacCs�|d��D]\}}|d|vr||j|<q|d��D]\}}|d|vr+||j|<q|d��D]\}}|d|vrA||j|<q2|d��D]\}}|d|vrW||j|<qH|d��D]\}}|d|vrm||j|<q^dS)Nrrrr�r r!)r�rrr=r r!)r8rBrCr�r3r:r:r;�merge_domaindata�s*
�
�
�
�
��zStandardDomain.merge_domaindatacCs`|j��D]�\}}|sq|j|}|durq|j|}t|tj�r3d|vr3|j�|d�}|dd}|jdksBd|vsB|j�	d�rCq||j
vr[tjt
d�||�|j
|d�|d�||f|j|<|jd	krtttj|d�}t|�}	n1|jd
kr~t|�}	n'|�|�r�|�|�}	|	s�qntt|�tj��d�}
|
r�|
�d�r�|
�d�}	nq|||	f|j
|<qdS)N�refid�namesr�footnote�refuri�desc_r.rD�section�rubric�caption)�	nametypesr��nameidsr=�
isinstancerrkr��tagnamer�r r�r�rr/r!rr�r$�is_enumerable_node�get_numfig_title�next�iter�traverser�toctree)r8r4r�rGr9�explicitr7rer��sectnamerVr:r:r;�process_doc�sJ



�

�





��zStandardDomain.process_docr�cCs||f|j||f<dSr&)r)r8r�r9r�r7r:r:r;r��z!StandardDomain.add_program_option�fromdocname�builderr*rX�rolenamer�cKs�|�dtj�}|d
ddi|��}	t�||�}
|
�d�dur-|
d�d�|
d�d|�||kr6||	d<n td�}||d	<||d
<|�||�|	d<|rV|	dd|7<|	�|
�|	S)N�	nodeclassr-�internalTr�rCzstd-rE�
refdocname�refsectnamerH�#�r-r-)r�r�	reference�inliner�rIr�get_relative_uri)r8r[r\r�r7rXr]r�r^�newnode�	innernode�contnoder:r:r;�build_reference_nodes$
�
z#StandardDomain.build_reference_node�typrkreric	Csz|dkr|j}n+|dkr|j}n#|dkr|j}n|dkr |j}n|dkr(|j}n|dkr0|j}n|j}||||||||�S)Nrrrrr�r�)�_resolve_ref_xref�_resolve_numref_xref�_resolve_keyword_xref�_resolve_doc_xref�_resolve_option_xref�_resolve_term_xref�_resolve_obj_xref)	r8r4r[r\rkrkreri�resolverr:r:r;�resolve_xref.szStandardDomain.resolve_xrefcCsT|dr|j�|d�\}}	|��}
n
|j�|d�\}}	}
|s dS|�||||	|
d�S)N�refexplicitrc�r-r-r-r)r!r�r�r rj)r8r4r[r\rkrkrerir�r7rXr:r:r;rlBs
�z StandardDomain._resolve_ref_xrefc
Cs�||jvr|j�|d�\}}	}
n|j�|d�\}}	d}
|sdS|�|�j�|	�}|�|�}|dur3dS|dkrH|jjdurHtj	t
d�|d�|Sz|�|||||�}
|
durY|WSWntyotj	t
d�|	|d�|YSwzM|drz|�
�}n|jj�|d	�}|
dur�d
|vr�tj	t
d�||d�|WSd�tt|
��}d
|vs�d
|vr�|
r�|j|
|d�}n|j|d�}n||}Wn3ty�}ztj	t
d�|||d�|WYd}~Sd}~wty�tj	t
d�||d�|YSw|j||||	|dtj|d�S)NrvrcrJFz(numfig is disabled. :numref: is ignored.rDzBFailed to create a cross reference. Any number is not assigned: %srur-z{name}zthe link has no caption: %s�.�number)r9rx)rxzinvalid numfig_format: %s (%r)zinvalid numfig_format: %sr)r^r�)r r�r!�get_doctreer=�get_enumerable_node_type�config�numfigr�r�r�
get_fignumberr�r��
numfig_formatr��mapr`�format�KeyError�	TypeErrorrjr�number_reference)r8r4r[r\rkrkrerir�r7�figname�target_node�figtype�	fignumberr��fignum�newtitle�excr:r:r;rmTsf

�
��
����z#StandardDomain._resolve_numref_xrefcCs,|j�|d�\}}	}
|sdSt||||	|�S)Nrv)r r�r&)r8r4r[r\rkrkrerir�r7rr:r:r;rn�s�z$StandardDomain._resolve_keyword_xrefcCsj|�d|�}t||d�}	|	|jvrdS|dr|��}
nt|j|	�}
tj|
|
dgd�}t|||	d|�S)N�refdocrgrurr�)	r�r �all_docsr�r$�titlesrrer&)r8r4r[r\rkrkrerir�r�rLrhr:r:r;ro�s

z StandardDomain._resolve_doc_xrefc
Cs�|�d�}|��}|j�||fd�\}	}
|	sDg}t�|�rBt�|d�\}}|�|�d�|�}|j�||fd�\}	}
|	r=nt�|�sdSt|||	|
|�S)Nr�rcr@rY)	r�rMrr"rrvrIr�r&)
r8r4r[r\rkrkreri�prognamer�r7�commands�
subcommandr:r:r;rp�s"




�	�z#StandardDomain._resolve_option_xrefc	CsR|�|||||||�}|r|S|��|jvr'|j|��\}	}
t|||	|
|�SdSr&)rrr�r=r&)r8r4r[r\rkrkreri�resultr�r7r:r:r;rq�s�z!StandardDomain._resolve_term_xrefcCs\|�|�pg}|D]}	|	|f|jvr|j|	|f\}
}nq	d\}
}|
s&dSt|||
||�S)Nrc)�objtypes_for_rolerr&)r8r4r[r\rkrkreri�objtypesrHr�r7r:r:r;rr�s��z StandardDomain._resolve_obj_xrefc
Cs�g}|��}dD]}	|�||||	|	dkr|n|||�}
|
r&|�d|	|
f�q|jD],}||f}|dkr8||f}||jvrV|j|\}
}|�d|�|�t|||
||�f�q*|S)N)rr�rzstd:r�)r�rtrIrr�role_for_objtyper&)r8r4r[r\rkreri�results�ltarget�role�resrHr�r�r7r:r:r;�resolve_any_xref�s.��

���zStandardDomain.resolve_any_xrefccs8�|jjD]}|t|jj|�d|ddfVq|j��D]*\\}}}|r9d�||g�}||d|d|ddfVq||d|d|ddfVq|j��D]\\}}}||||d|d|j|j	dfVqL|j
��D]\}\}}	}
||
d	||	dfVqkt|j
�}|j��D]\}\}}	||vr�||d	||	dfVq�dS)
Nrr-r?rwr�rr@r
r)
r4r�r$r�rr�r�rr�attrsr �setr!)r8r�progr��inforw�typer9r�r7�sectionname�non_anon_labelsr:r:r;�get_objects�s(� �
��zStandardDomain.get_objectsFr��primarycCs|jSr&)�lname)r8r�r�r:r:r;�
get_type_nameszStandardDomain.get_type_namecCs|j|jvSr&)r-r%)r8rer:r:r;rQsz!StandardDomain.is_enumerable_nodecCs`|�|�r.tt|�}|j�|jd�\}}|r||�S|D]}t|tjtj	f�r-t
|�SqdS)z?Get the title of enumerable nodes to refer them using its title�NNN)rQrrr%r�r-rOrrLr�r$)r8re�elemr�title_getterr	r:r:r;rRs

�zStandardDomain.get_numfig_titlecCsbdtdtdtfdd�}t|tj�rdSt|tj�r%d|vr%||tj�r%dS|j�	|j
d	�\}}|S)
zGet type of enumerable nodes.re�clsr2cst�fdd�|D��S)Nc3s�|]}t|��VqdSr&)rO)r��child�r�r:r;r�&s�zMStandardDomain.get_enumerable_node_type.<locals>.has_child.<locals>.<genexpr>)�any)rer�r:r�r;�	has_child%rZz:StandardDomain.get_enumerable_node_type.<locals>.has_childrJ�
literal_blockr$r�)rrrprOrrJ�	containerr�r%r�r-)r8rer�r�rr:r:r;rz#s
�z'StandardDomain.get_enumerable_node_typer�r�.c	
Cs�|dkr2|jdkrt�S||jvrt�d|dd}||j|vr*|j|�d�S|j|�|�Sz|dd}|j|||WSttfyS}zt|�d}~ww)NrJ�latexrbr=rr-)r9�tuple�toc_secnumbersr�r��toc_fignumbersr��
IndexError)	r8r4r\r�r�r��
anchorname�	figure_idr�r:r:r;r}3s 

��zStandardDomain.get_fignumbercCs`|�d�dkr.|�d�}t�|�d��}|r|�d|�|��}|r,d�d�|�|g�SdSdS)Nr�r�r�rgrrwrY)r�r"rvrur�r�)r8rer��commandr�r:r:r;�get_full_qualified_nameJs
z&StandardDomain.get_full_qualified_name)r4r+r2N�r-r&)F)Pr\r]r^r_r9rrrrrr`rar�rrbr�r�rrrr�rdrrrrerr
r(�initial_data�dangling_warningsr"r#r�r%rrr
rr(r0�propertyrrrQr<r=r�rr r!rAr	rDrGrYr�rrjrrtrlrmrnrorprqrrr�r�intr�rpr�rQrRrzr}r��
__classcell__r:r:r,r;rO)s�
���	��������
$�	��
�(
� 	(" )����
�����
�
�����
�
�����
�
?�����
�

�����
�
�����
�
�����
�
�����
�
����
�"
���

�rOr)r)r�recCs`|r|jdks
|ddkrdS|d}||jvrtd�}ntd�}tj|||d|dd�dS)	NrCr�rrgzundefined label: %szDFailed to create a cross reference. A title or caption not found: %s)rEr��subtypeT)r9r!rr�r�)r)r�rerk�msgr:r:r;�warn_missing_referenceYs

r�cCs$|�t�|�dt�ddddd�S)Nzwarn-missing-reference�builtinr8T)�version�env_version�parallel_read_safe�parallel_write_safe)�
add_domainrO�connectr�)r)r:r:r;�setuphs
�r�r�)]r_r�r�r:r�typingrrrrrrr	r
rrr
r�docutilsr�docutils.nodesrrr�docutils.parsers.rstrr�docutils.statemachiner�sphinxr�sphinx.addnodesrr�sphinx.deprecationr�sphinx.directivesr�sphinx.domainsrr�
sphinx.localerr�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�rr��Ur�r`r,rbrdrqrr�r�r�r�rGr�r�r�r�r�rrOrpr�r�r:r:r:r;�<module>sx
8

36P����
�y!A4
�