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__/todo.cpython-310.pyc
o

�$�a �@s�dZddlmZmZmZmZmZddlmZddl	m
Z
mZddlm
Z
ddlmZddlZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZmZddlmZmZddl m!Z!m"Z"ddl#m$Z$ddl%m&Z&ddl'm(Z(e�)e*�Z+Gdd�dej,ej
�Z-Gdd�dej.ej
�Z/Gdd�dee!�Z0Gdd�de�Z1Gdd�de!�Z2Gdd�d�Z3de&d e-d!dfd"d#�Z4de&d e-d!dfd$d%�Z5de(d e-d!dfd&d'�Z6de(d e-d!dfd(d)�Z7d*ed!ee8effd+d,�Z9dS)-a�
    sphinx.ext.todo
    ~~~~~~~~~~~~~~~

    Allow todos to be inserted into your documentation.  Inclusion of todos can
    be switched of by a configuration variable.  The todolist directive collects
    all todos of your project and lists them along with a backlink to the
    original location.

    :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
�)�Any�Dict�List�Tuple�cast)�nodes)�Element�Node)�
directives)�BaseAdmonitionN)�addnodes)�Sphinx)�Domain)�BuildEnvironment)�NoUri)�_�__)�logging�	texescape)�SphinxDirective�new_document)�
OptionSpec)�HTMLTranslator)�LaTeXTranslatorc@�eZdZdS)�	todo_nodeN��__name__�
__module__�__qualname__�r r �1/usr/lib/python3/dist-packages/sphinx/ext/todo.pyr%�rc@r)�todolistNrr r r r!r#)r"r#csVeZdZUdZeZdZdZdZdZ	e
je
jd�Z
eed<deef�fdd	�Z�ZS)
�TodozO
    A todo entry, displayed (if configured) in the form of an admonition.
    TrF)�class�name�option_spec�returncs�|j�d�sdg|jd<t���\}t|tj�r|gSt|t�rF|�dtj	t
d�d��|jj|d<|�
|�|�|�|jj�|�|gSt�)Nr%zadmonition-todorr$)�text�docname)�options�get�super�run�
isinstancer�system_messager�insert�titler�envr*�add_name�set_source_info�state�document�note_explicit_target�RuntimeError)�self�todo��	__class__r r!r.<s


zTodo.run)rrr�__doc__r�
node_class�has_content�required_arguments�optional_arguments�final_argument_whitespacer
�class_option�	unchangedr'r�__annotations__rr	r.�
__classcell__r r r<r!r$-s
�r$c@szeZdZdZdZedeeee	ffdd��Z
deddfdd�Zd	eed
eddfdd�Zd
e
dedejddfdd�ZdS)�
TodoDomainr;r(cCs|j�di�S�N�todos)�data�
setdefault�r:r r r!rJRszTodoDomain.todosr*NcCs|j�|d�dS�N)rJ�pop)r:r*r r r!�	clear_docVszTodoDomain.clear_doc�docnames�	otherdatacCs |D]}|d||j|<qdSrI)rJ)r:rQrRr*r r r!�merge_domaindataYs�zTodoDomain.merge_domaindatar3r7cCs^|j�|g�}|�t�D] }|j�d|�|�|�|jjr,t	j
td�|d��|d�qdS)N�todo-definedzTODO entry found: %s�)�location)
rJrL�traverser�app�emit�append�config�todo_emit_warnings�logger�warningr�astext)r:r3r*r7rJr;r r r!�process_doc]s
���zTodoDomain.process_doc)rrrr&�label�propertyr�strrrrJrPrSrrr7r`r r r r!rHNs
��rHc@s@eZdZUdZdZdZdZdZiZe	e
d<deefdd�Z
dS)	�TodoListz%
    A list of all todo entries.
    Frr'r(cCs
td�gS)N�)r#rMr r r!r.ts
zTodoList.runN)rrrr>r@rArBrCr'rrFrr	r.r r r r!rdis
rdc@sneZdZdedejdeddfdd�Zdejdeddfdd	�Zd
e	dedej
fdd�Zd
e	deddfd
d�ZdS)�TodoListProcessorrX�doctreer*r(NcCsF|j|_|j|_|j|_tt|j�d��|_td�|_|�	||�dS)Nr;re)
�builderr[r3rrH�
get_domain�domainrr7�process)r:rXrgr*r r r!�__init__{s
zTodoListProcessor.__init__c	Cs�t|jj��g�}t|�t��D]D}|jjs|j	�
|�q|�d�r(t�
�g}ng}|D]"}|��}|d��|�||�|�|�|�||�}|�|�q,|�|�qdS)N�ids)�sumrjrJ�values�listrWr#r[�todo_include_todos�parent�remover,r�target�deepcopy�clear�resolve_referencerZ�create_todo_reference�replace_self)	r:rgr*rJ�node�contentr;�new_todo�todo_refr r r!rk�s"

�zTodoListProcessor.processr;c	Cs�|jjr	td�}n
td�|j|jf}|d|�d��}||�d�dd�}tjdgd�}|t�||�7}t�	td�td��}tj
d	d	|d
d�}z|j�||d�|d
<|d
d|dd7<Wn	t
ymYnw||7}|t�||�7}|S)Nz<<original entry>>z3(The <<original entry>> is located in %s, line %d.)z<<z>>�ztodo-source)�classeszoriginal entryreT)�internalr*�refuri�#rmr)r[�todo_link_onlyr�source�line�findr�	paragraph�Text�emphasis�	referencerh�get_relative_urir)	r:r;r*�description�prefix�suffix�para�linktextr�r r r!rx�s(

� �z'TodoListProcessor.create_todo_referencecCsT|�tj�D]
}d|vr||d<q|j|7_|j�|j||j�|j�|�dS)z'Resolve references in the todo content.�refdocN)rWr�pending_xrefr7r3�resolve_referencesrhrs)r:r;r*rzr r r!rw�s�z#TodoListProcessor.resolve_reference)
rrrr
rr7rcrlrkrr�rxrwr r r r!rfzs
	rfr:rzr(cCs|jjr|�|�dStj�rN)r[rq�visit_admonitionr�SkipNode�r:rzr r r!�visit_todo_node�sr�cCs|�|�dSrN)�depart_admonitionr�r r r!�depart_todo_node�sr�cCsn|jjr4|j�d�|j�|�|��ttj|d�}t�	|�
�|jj�}|j�d|�|�d�dStj
�)Nz 
\begin{sphinxadmonition}{note}{rz%s:})r[rq�bodyrZ�hypertarget_torrr2r�escaper_�latex_enginerOr�)r:rz�
title_noder2r r r!�latex_visit_todo_node�sr�cCs|j�d�dS)Nz\end{sphinxadmonition}
)r�rZr�r r r!�latex_depart_todo_node�sr�rXcCs�|�d�|�ddd�|�ddd�|�ddd�|�t�|jtttfttfttfttfttfd�|�	dt
�|�	d	t�|�t
�|�d
t�tjddd
�S)NrTrqF�htmlr�r\)r��latexr)�man�texinfor;r#zdoctree-resolvedr~T)�version�env_version�parallel_read_safe)�	add_event�add_config_value�add_noder#rr�r�r�r��
add_directiver$rd�
add_domainrH�connectrf�sphinx�__display_version__)rXr r r!�setup�s(

�
�r�):r>�typingrrrrr�docutilsr�docutils.nodesrr	�docutils.parsers.rstr
�+docutils.parsers.rst.directives.admonitionsrr�r�sphinx.applicationr
�sphinx.domainsr�sphinx.environmentr�
sphinx.errorsr�
sphinx.localerr�sphinx.utilrr�sphinx.util.docutilsrr�sphinx.util.typingr�sphinx.writers.htmlr�sphinx.writers.latexr�	getLoggerrr]�
Admonitionr�Generalr#r$rHrdrfr�r�r�r�rcr�r r r r!�<module>s<

!K