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/ext/__pycache__/viewcode.cpython-310.pyc
o

�$�a�5�@sRdZddlZddlZddlZddlmZddlmZmZm	Z	m
Z
mZmZm
Z
mZddlmZddlmZmZddlZddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
l m!Z!m"Z"ddl#m$Z$ddl%m&Z&ddl'm(Z(m)Z)m*Z*ddl+m,Z,e)�-e.�Z/dZ0Gdd�de�Z1dede2de2dee2fdd�Z3dede4fdd�Z5dededdfdd �Z6ded!ed"e
e2d#eddf
d$d%�Z7ded!ed&e2ddfd'd(�Z8Gd)d*�d*e&�Z9ded!ed+ed,edeef
d-d.�Z:dede2dee2fd/d0�Z;dede2de4fd1d2�Z<dede	e
e2ee2efe2fddffd3d4�Z=dedee2effd5d6�Z>dS)7z�
    sphinx.ext.viewcode
    ~~~~~~~~~~~~~~~~~~~

    Add links to module code in Python object descriptions.

    :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
�N)�path)�Any�Dict�	Generator�Iterable�Optional�Set�Tuple�cast)�nodes)�Element�Node)�addnodes)�Sphinx)�Builder)�StandaloneHTMLBuilder)�RemovedInSphinx50Warning)�BuildEnvironment)�_�__)�ModuleAnalyzer)�SphinxPostTransform)�get_full_modname�logging�status_iterator)�make_refnode�_modulesc@seZdZdZdS)�viewcode_anchorz�Node for viewcode anchors.

    This node will be processed in the resolving phase.
    For viewcode supported builders, they will be all converted to the anchors.
    For not supported builders, they will be removed.
    N)�__name__�
__module__�__qualname__�__doc__�r"r"�5/usr/lib/python3/dist-packages/sphinx/ext/viewcode.pyr'sr�app�modname�	attribute�returnc
Cstzt||�WStyt�d||�YdSty9}zt�t�����t�d||�WYd}~dSd}~ww)NzDidn't find %s in %sz0viewcode can't import %s, failed with error "%s")r�AttributeError�logger�verbose�	Exception�	traceback�
format_exc�rstrip)r$r%r&�er"r"r#�_get_full_modname0s��r0�buildercCs8|jdkrdS|jdkrdS|j�d�r|jjsdSdS)N�htmlF�
singlehtml�epubT)�format�name�
startswith�config�viewcode_enable_epub)r1r"r"r#�is_supported_builderBs

r:�doctreec
s$�jj�t�d�si�_dtdtdtdtdtf
��fdd�}t|�tj	��D]i}|�
d	�d
kr0q&t�}|D]Y}t|tj
�s>q5|�
d�}|�
d�}|}�jjr_��d||�}	|	s]t�||�}	|	}|sbq5|�
d�}|||�j|�spq5||vruq5|�|�t�t|�d
d��}
|t|
|�jd�7}q5q&dS)N�_viewcode_modulesr%�fullname�docname�refnamer'cs��j�|d�}|dur
dS��d|�}|dur9zt�|�}|��Wnty1d�j|<YdSw|j}|j}n|\}}|dusG|d|krR||i|f}|�j|<|\}	}}
}	||vrb||
|<dSdS)NF�viewcode-find-sourcerT)	r<�get�emit_firstresultr�
for_module�	find_tagsr+�code�tags)r%r=r>r?�entry�	code_tags�analyzerrErFr�used�r$�envr"r#�has_tagRs.

�
zdoctree_read.<locals>.has_tag�domain�py�module�viewcode-follow-imported�.�/)�	reftarget�refid�refdoc)r1rL�hasattrr<�str�bool�list�traverser�descrA�set�
isinstance�desc_signaturer8� viewcode_follow_imported_membersrBr0r>�add�	posixpath�join�OUTPUT_DIRNAME�replacer)r$r;rM�objnode�names�signoder%r=r?�new_modname�pagenamer"rKr#�doctree_readMsB
$

�

��rkrL�docnames�otherc	Cs�t|d�sdSt|d�si|_|j��D].\}}||jvr#||j|<q|j|rB|j|d}|d��D]\}}||vrA|||<q5qdS)Nr<�)rWr<�items)	r$rLrlrmr%rGrJr=r>r"r"r#�env_merge_info�s



��rpr>cCsvt|di�}t|���D],\}}|durq|\}}}}	t|�D]
}
||
|kr,|�|
�qt|�dkr8|�|�qdS)Nr<Fr)�getattrrZro�pop�len)r$rLr>�modulesr%rGrErFrJr?r=r"r"r#�
env_purge_doc�s
�
��ruc@s:eZdZdZdZdeddfdd�Zddd	�Zdd
d�ZdS)
�ViewcodeAnchorTransformz;Convert or remove viewcode_anchor nodes depends on builder.�d�kwargsr'NcKs$t|jj�r|��dS|��dS�N)r:r$r1�convert_viewcode_anchors�remove_viewcode_anchors)�selfrxr"r"r#�run�szViewcodeAnchorTransform.runcCsV|j�t�D]"}tjdtd�dgd�}t|jj|d|d|d|�}|�	|�qdS)N�z[source]z
viewcode-link)�classesrVrTrU)
�documentr[rr�inlinerrr$r1�replace_self)r|�node�anchor�refnoder"r"r#rz�s��z0ViewcodeAnchorTransform.convert_viewcode_anchorscCs&t|j�t��D]}|j�|�qdSry)rZr�r[r�parent�remove)r|r�r"r"r#r{�s�z/ViewcodeAnchorTransform.remove_viewcode_anchors)r'N)	rrr r!�default_priorityrr}rzr{r"r"r"r#rv�s
rvr��contnodecCs:|ddkrt�dt�t|j|d|d|d|�SdS)N�reftype�viewcodezTviewcode extension is no longer use pending_xref node. Please update your extension.rVrTrU)�warnings�warnrrr1)r$rLr�r�r"r"r#�missing_reference�s��r�cCs>|�d|�}|r
dSz
t�|�\}}|WStyYdSw)z"Get module filename for *modname*.r@N)rBr�get_module_sourcer+)r$r%�source_info�filename�sourcer"r"r#�get_module_filename�s�r�cCszt||�}|durdStt|j�}|�dd�|j}t�|jd|�}zt�	|�t�	|�kr0WdSWdSt
y<YdSw)z*Check generation of module page is needed.NTrRrSz	_modules/F)r�r
rr1re�
out_suffixrrc�outdir�getmtime�IOError)r$r%�module_filenamer1�basename�
page_filenamer"r"r#�should_generate_module_page�s
���r�c
cs6�|jj}t|d�sdSt|j�sdS|jj}|jj}t|j�}tt	|j�
��td�dt|j�|j
dd��D]�\}}|s=q6t||�sCq6|\}}}	}
t�t|�dd��}|jjdvr^|jj}nd	}|j||d
d�}
|
��}|d�d
�\}}|d
|g|dd�<t|�d}|	�
�D]2\}}||\}}}|||�d|
d|}d||td�f||||<|t||�d7<q�g}|}d|vr�|�dd�d}||vr�|�||t�t|�dd���|d��d|vs�|�||t�td��td�d��|��||td�|d�|�d�}||dfVq6|�sdSdg}dg}t	|�D]T}|�|d��r8|�|d�|�d�n$|��|�|d��sU|��|�d�|�|d��rD|�|d�|�d|t�td�t�t|�dd���|f��q!|�dt|�d�td�td �d�|�d!�}t�td�|dfVdS)"Nr<zhighlighting module code... �bluecSs|dS)Nrr")�xr"r"r#�<lambda>szcollect_pages.<locals>.<lambda>rRrS)�python3�default�none�pythonF)�linenosrz<pre>��#zM<div class="viewcode-block" id="%s"><a class="viewcode-back" href="%s">%s</a>z[docs]z</div>)�link�title�indexzModule codez<h1>Source code for %s</h1>�
)�parentsr��bodyz	page.htmlr~���z<ul>z</ul>z<li><a href="%s">%s</a></li>
zOverview: module codez0<h1>All modules for which code is available</h1>)r�r�)r1rLrWr:�highlighter�get_relative_urir]r<r�sortedrorrs�	verbosityr�rbrcrdrer8�highlight_language�highlight_block�
splitlines�splitr�min�rsplit�append�reverser7rr)r$rLr��urito�modnamesr%rGrErFrJr?rj�lexer�highlighted�lines�before�after�maxindexr6r>�type�start�end�backlinkr�r��contextr2�stackr"r"r#�
collect_pages�s��



�

�������
��
�����r�cCs�|�ddd�|�ddd�|�ddd�|�dt�|�dt�|�dt�|�d	t�|�d
t�|�d�|�d�|�t	�t
jd
dd�S)N�viewcode_importFr9r`Tzdoctree-readzenv-merge-infoz
env-purge-doczhtml-collect-pageszmissing-referencer@rQr�)�version�env_version�parallel_read_safe)�add_config_value�connectrkrprur�r��	add_event�add_post_transformrv�sphinx�__display_version__)r$r"r"r#�setupXs


�r�)?r!rbr,r��osr�typingrrrrrrr	r
�docutilsr�docutils.nodesrr
r�r�sphinx.applicationr�sphinx.buildersr�sphinx.builders.htmlr�sphinx.deprecationr�sphinx.environmentr�
sphinx.localerr�
sphinx.pycoder�!sphinx.transforms.post_transformsr�sphinx.utilrrr�sphinx.util.nodesr�	getLoggerrr)rdrrXr0rYr:rkrprurvr�r�r�r�r�r"r"r"r#�<module>sP
(
	@�
�
�
.d