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: //lib/python3/dist-packages/sphinx/environment/adapters/__pycache__/toctree.cpython-310.pyc
o

�$�a�>�@s�dZddlmZmZmZmZmZmZddlm	Z	ddl
mZmZddl
mZddlmZddlmZmZddlmZdd	lmZmZerPdd
lmZddlmZe�e�ZGdd
�d
�Z dS)z�
    sphinx.environment.adapters.toctree
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Toctree adapter for sphinx.environment.

    :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
�)�
TYPE_CHECKING�Any�Iterable�List�Optional�cast)�nodes)�Element�Node)�addnodes)�__)�logging�url_re)�Matcher)�clean_astext�process_only_nodes)�Builder)�BuildEnvironmentc@s�eZdZd#dd�Zdedejddfd	d
�Z	
	
d$dedddejdede	dededede
efdd�Zdede
efdd�Zd%dede	de	deddf
dd�Zdedddefdd�Zdeddded ede
ef
d!d"�ZdS)&�TocTree�envr�returnNcCs
||_dS�N)r)�selfr�r�E/usr/lib/python3/dist-packages/sphinx/environment/adapters/toctree.py�__init__s
zTocTree.__init__�docname�toctreenodecCsr|dr|jj�|�|�d�r|jj�|�|d}|D]}|jj�|t���|�q|jj�|g��	|�dS)zmNote a TOC tree directive in a document and gather information about
        file relations from it.
        �glob�numbered�includefilesN)
r�
glob_toctrees�add�get�numbered_toctrees�files_to_rebuild�
setdefault�set�toctree_includes�extend)rrrr �includefilerrr�note"s
zTocTree.noteTrF�builderr�toctree�prune�maxdepth�titles_only�collapse�
includehiddenc	s�|�dd�r
�s
dS�����
t�jjj��dtdtddf��fdd��	dd	tj	d
t
tdtdtdt
tf
��������	�
f	d
d�
�|pK|�dd�}�	sV|�dd�rVd�	�s`|�dd�r`d��|gdd�}	|	skdSt�
dd�}
|j�d�}|r�tj|dgt�|�g�R�}|j|_|j|_|d|_t|d�r�|j|_|`|
|7}
|
�|	�d|
d<�|
d���|
d�r�|nd��t|
dtj�r�t|
d�dkr�dS|
�tj�D]}
t�|
d�s���|
d�|
d|
d<q�|
S)aResolve a *toctree* node into individual bullet lists with titles
        as items, returning None (if no containing titles are found) or
        a new node.

        If *prune* is True, the tree is pruned to *maxdepth*, or if that is 0,
        to the value of the *maxdepth* option on the *toctree* node.
        If *titles_only* is True, only toplevel document titles will be in the
        resulting tree.
        If *collapse* is True, all branches not containing docname will
        be collapsed.
        �hiddenFN�node�depthrcs�|jD]_}t|tjtjf�r|d�d|d��||�qt|tj�r-�||d�qt|tj�rb|d�krb|dsM|}|rM|d�d�|j	}|sA|j	j	�
d�rWdS|rbd	|d<|j	}|sYqdS)
z7Add 'toctree-l%d' and 'current' classes to the toctree.�classesztoctree-l%d��refuri�
anchorname�current�	iscurrentNT)�children�
isinstancer�compact_paragraphr�	list_item�append�bullet_list�	reference�parentr#)r4r5�subnode�
branchnode)�_toctree_add_classesrrrrFWs0
�����z-TocTree.resolve.<locals>._toctree_add_classesr�parents�separate�subtreec	stdd�|dD�}g}|D�]�\}}z�d}t�|�rG|dur |}tjddgt�|�g�Rd|dd��}	t�dd|	�}
t�d|
�}t�d|�}n�|dkr�|d	}|sYt	�j
j|�}tjddgt�|�g�Rd
|dd��}	t�dd|	�}
t�d|
�}t�d|�}nm||vr�tj
td�|d�|�|d
dd�Wq
|}�j
j|��}�j
j|�dd�}
|�vs��r�|
dkr���|d|
��t|�j�|r�|jr�t|j�dkr�|jd}|�tj�D]}|d|kr�|ds�t�|�g|_q�|js�tj
td�||d�Wn%t�y ��j
�|d���rtd�}ntd�}tj
|||d�Yq
w��rStttj|�}|D]$}t|�dk�rQt|�tj ��}|�rL||ddd�<�q.|�!d��q.t|�tj ��D]4}|�dd��rg��r�|j"�#|�d}�||g|d
d�D]}|j"�$||�|d7}�qy|j"�%|��q[|�r�|�&|�q
tttj|�}|�'|�q
|�s�|�s�t��}||7}|gS|S)z&Return TOC entries for a toctree node.cSsg|]
}|d|df�qS)rr7r)�.0�errr�
<listcomp>yszBTocTree.resolve.<locals>._entries_from_toctree.<locals>.<listcomp>�entriesN�F)�internalr8r9rrCTz8circular toctree references detected, ignoring: %s <- %sz <- �toc�circular)�location�type�subtype�tocdepthr�r7r8r9z^toctree contains reference to document %r that doesn't have a title: no link will be generated)rRz2toctree contains reference to excluded document %rz5toctree contains reference to nonexisting document %rr3)rI)(r�matchrrB�Textrr>r?rArr�titles�logger�warningr�join�tocs�deepcopy�metadatar#�_toctree_pruner�tagsr<�len�traverse�KeyError�doc2pathrrr	�listr-�poprC�index�insert�remover@r))rrGrHrI�refsrM�title�ref�refdocrB�para�itemrPr/�child�refnode�messager<�toplevel�subtrees�
subtocnode�i�entry�ret)	�_entries_from_toctreer,r1�excludedr2r.rr0�toctree_ancestorsrrrzus�


��

��

�
��
��
�
��

��z.TocTree.resolve.<locals>._entries_from_toctreer/����
titlesonlyTr2)rHrN�caption�
rawcaption�uidr-r7rr8r9)FF) r#�get_toctree_ancestorsrr�config�exclude_patternsr	�intrr-r�str�boolr>�
attributesrrlrX�line�source�	rawsource�hasattrr�r)r`r=rbrcrBrrW�get_relative_uri)rrr,r-r.r/r0r1r2�
tocentries�newnoder�caption_noderrr)rzrFr,r1rr{r2r.rr0r|r�resolve1s^
����j



 ���zTocTree.resolvecCsji}|jj��D]
\}}|D]}|||<qqg}|}||vr3||vr3|�|�||}||vr3||vs"|Sr)rr(�itemsr@)rrrC�pr<rq�	ancestors�drrrr�
s
�
�zTocTree.get_toctree_ancestorsr4r5cCs�|jdd�D]F}t|tjtjf�r|�||||�qt|tj�rM|dkr1||kr1|j�	|g�q|rC|dkrCd|jvrC|j�
|�q|�||d||�qdS)z(Utility: Cut a TOC at a specified depth.Nrr7r;)r<r=rr>rr?r`rArC�replacerj)rr4r5r/r1rDrrrr`s�
��zTocTree._toctree_prunecCs�|jj|�dd�}z|jj|��}|�|d|�Wn
ty(t��YSwt	||j
�|�tj�D]
}|dp<d|d<q5|S)z7Return a TOC nodetree -- for use on the same page only!rUrrVr9�#r8)
rr_r#r]r^r`rdr�	paragraphrrarcrB)rrr,rUrPr4rrr�get_toc_for,s�zTocTree.get_toc_for�kwargsc
Ks�|j�|jjj�}g}d|vrd|d<d|vs|ds d|d<nt|d�|d<||d<|�tj�D]}|j|||fddi|��}|rH|�	|�q2|sMdS|d}	|dd�D]}|	�
|j�qW|	S)	zReturn the global TOC nodetree.r2Tr/rr1r.Nr7)r�get_doctreer��root_docr�rcrr-r�r@r)r<)
rrr,r1r��doctree�toctreesrr-�resultrrr�get_toctree_for;s&

�zTocTree.get_toctree_for)rrrN)TrFFF)F)�__name__�
__module__�__qualname__rr�rr-r+r�r�rr	r�rr�r`r
r�rr�rrrrrs:
������
�Z
���rN)!�__doc__�typingrrrrrr�docutilsr�docutils.nodesr	r
�sphinxr�
sphinx.localer�sphinx.utilr
r�sphinx.util.matchingr�sphinx.util.nodesrr�sphinx.buildersr�sphinx.environmentr�	getLoggerr�rZrrrrr�<module>s