
    7 f                       d Z ddlmZ ddlmZmZmZ ddlmZ ddl	m
Z
 ddlmZ ddlZddlmZ dd	l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 er&ddlmZmZ ddlm Z  ddl!m"Z" ddl#m$Z$ ddl%m&Z& ddl'm(Z(  ej)        e*          Z+ G d dej,        ej                  Z- G d dej.        ej                  Z/ G d dee          Z0 G d de          Z1 G d de          Z2 G d d          Z3d.d%Z4d.d&Z5d/d(Z6d/d)Z7d0d-Z8dS )1zAllow 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.
    )annotations)TYPE_CHECKINGAnycast)nodes)
directives)BaseAdmonitionN)addnodes)Domain)NoUri)___)logging	texescape)SphinxDirectivenew_document)ElementNode)Sphinx)BuildEnvironment)
OptionSpec)HTML5Translator)LaTeXTranslatorc                      e Zd ZdS )	todo_nodeN__name__
__module____qualname__     E/var/www/equiseq/venv/lib/python3.11/site-packages/sphinx/ext/todo.pyr   r   $           Dr!   r   c                      e Zd ZdS )todolistNr   r    r!   r"   r%   r%   (   r#   r!   r%   c                  b     e Zd ZU dZeZdZdZdZdZ	e
j        e
j        dZded<   d fd
Z xZS )TodozO
    A todo entry, displayed (if configured) in the form of an admonition.
    Tr   F)classnamer   option_specreturn
list[Node]c                &   | j                             d          sdg| j         d<   t                                                      \  }t	          |t
          j                  r|gS t	          |t                    r|                    dt          j	        t          d                               | j        j        |d<   |                     |           |                     |           | j        j                            |           |gS t$          )Nr(   zadmonition-todor   r'   )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__s     r"   r3   zTodo.run;   s    |(( 	8%6$7DL!''++--dE011 
	6Mi(( 	KK5;AfII666777"h.DOMM$  &&&J44T:::6Mr!   r+   r,   )r   r   r   __doc__r   
node_classhas_contentrequired_argumentsoptional_argumentsfinal_argument_whitespacer   class_option	unchangedr*   __annotations__r3   __classcell__)rA   s   @r"   r'   r'   ,   s           JK %($ K    
         r!   r'   c                  F    e Zd ZdZdZedd            ZddZddZddZ	dS )
TodoDomainr@   r+   dict[str, list[todo_node]]c                8    | j                             di           S Ntodos)data
setdefaultr?   s    r"   rR   zTodoDomain.todosQ   s    y##GR000r!   r/   strNonec                <    | j                             |d            d S N)rR   pop)r?   r/   s     r"   	clear_doczTodoDomain.clear_docU   s    
w%%%%%r!   docnames	list[str]	otherdatadictc                <    |D ]}|d         |         | j         |<   d S rQ   )rR   )r?   r\   r^   r/   s       r"   merge_domaindatazTodoDomain.merge_domaindataX   s4     	> 	>G"+G"4W"=DJw	> 	>r!   r8   r   r<   nodes.documentc                r   | j                             |g           }|                    t                    D ]}|j                            d|           |                    |           |j        j        rBt          
                    t          d          |d                                         |           d S )Ntodo-definedzTODO entry found: %s   )location)rR   rT   findallr   appemitappendconfigtodo_emit_warningsloggerwarningr   astext)r?   r8   r/   r<   rR   r@   s         r"   process_doczTodoDomain.process_doc\   s    
%%gr22$$Y// 	. 	.DGLL...LLz, .r"89947>>;K;K(,  . . .	. 	.r!   N)r+   rO   )r/   rV   r+   rW   )r\   r]   r^   r_   r+   rW   )r8   r   r/   rV   r<   rb   r+   rW   )
r   r   r   r)   labelpropertyrR   r[   ra   rp   r    r!   r"   rN   rN   M   sx        DE1 1 1 X1& & & &> > > >	. 	. 	. 	. 	. 	.r!   rN   c                  :    e Zd ZU dZdZdZdZdZi Zde	d<   d
dZ
d	S )TodoListz%
    A list of all todo entries.
    Fr   r   r*   r+   r,   c                "    t          d          gS )N )r%   rU   s    r"   r3   zTodoList.runs   s     ~r!   NrB   )r   r   r   rC   rE   rF   rG   rH   r*   rK   r3   r    r!   r"   rt   rt   h   s^           K % K         r!   rt   c                  .    e Zd Zdd	Zdd
ZddZddZdS )TodoListProcessorrh   r   doctreerb   r/   rV   r+   rW   c                   |j         | _         |j        | _        |j        | _        t          t          |j                            d                    | _        t          d          | _        | 	                    ||           d S )Nr@   rv   )
builderrk   r8   r   rN   
get_domaindomainr   r<   process)r?   rh   ry   r/   s       r"   __init__zTodoListProcessor.__init__z   sg    {j7:sw'9'9&'A'ABB$R((Wg&&&&&r!   c                   t          | j        j                                        g           }t	          |                    t                              D ]}| j        j        s|j	        
                    |           )|                    d          rt          j                    g}ng }|D ]}|                                }|d                                          |                     ||           |                    |           |                     ||          }|                    |           |                    |           d S )Nids)sumr}   rR   valueslistrg   r%   rk   todo_include_todosparentremover1   r   targetdeepcopyclearresolve_referencerj   create_todo_referencereplace_self)	r?   ry   r/   rR   nodecontentr@   new_todotodo_refs	            r"   r~   zTodoListProcessor.process   s7   !$T[%6%=%=%?%?!D!D2233 	' 	'D;1 ""4(((xx */,..)9 	) 	)==??%%'''&&x999x(((55dGDDx((((g&&&&+	' 	'r!   r@   r   nodes.paragraphc                   | j         j        rt          d          }nt          d          |j        |j        fz  }|d |                    d                   }||                    d          dz   d          }t          j        dg          }|t          j        |          z  }t          j	        t          d          t          d                    }t          j
        d	d	|d
          }	 | j                            ||d                   |d<   |dxx         d|d         d         z   z  cc<   n# t          $ r Y nw xY w||z  }|t          j        |          z  }|S )Nz<<original entry>>z3(The <<original entry>> is located in %s, line %d.)z<<z>>   ztodo-source)classeszoriginal entryrv   T)internalr/   refuri#r   r   )rk   todo_link_onlyr   sourcelinefindr   	paragraphTextemphasis	referencer{   get_relative_urir   )	r?   r@   r/   descriptionprefixsuffixparalinktextr   s	            r"   r   z'TodoListProcessor.create_todo_reference   s|   ;% 	5011KKRSS K34K 4k..t4445[--d33a7889777
6""" >!$4"5"5q9I7J7JKKOBHtDDD		"&,"?"?i"Y"YIhh3eQ#77 	 	 	D	 		
6"""s   -AD1 1
D>=D>c                    |                     t          j                  D ]}d|v r||d<   | xj        |z  c_        | j                            | j        || j                   | j                            |           dS )z'Resolve references in the todo content.refdocN)rg   r
   pending_xrefr<   r8   resolve_referencesr{   r   )r?   r@   r/   r   s       r"   r   z#TodoListProcessor.resolve_reference   s    LL!677 	) 	)D4!(X 	##DM7DLIIIT"""""r!   N)rh   r   ry   rb   r/   rV   r+   rW   )ry   rb   r/   rV   r+   rW   )r@   r   r/   rV   r+   r   )r@   r   r/   rV   r+   rW   )r   r   r   r   r~   r   r   r    r!   r"   rx   rx   y   sd        ' ' ' '' ' ' '2   8	# 	# 	# 	# 	# 	#r!   rx   r?   r   r   r+   rW   c                `    | j         j        r|                     |           d S t          j        rY   )rk   r   visit_admonitionr   SkipNoder?   r   s     r"   visit_todo_noder      s1    {% d#####nr!   c                0    |                      |           d S rY   )depart_admonitionr   s     r"   depart_todo_noder      s    4     r!   r   c                   | j         j        r| j                            d           | j                            |                     |                     t          t          j        |d                   }t          j	        |
                                | j         j                  }| j                            d|z             |                    d           d S t          j        )Nz 
\begin{sphinxadmonition}{note}{r   z%s:})rk   r   bodyrj   hypertarget_tor   r   r7   r   escapero   latex_enginerZ   r   )r?   r   
title_noder7   s       r"   latex_visit_todo_noder      s    {% 		=>>>	,,T22333%+tAw//
 !2!2!4!4dk6NOO	%(((nr!   c                :    | j                             d           d S )Nz\end{sphinxadmonition}
)r   rj   r   s     r"   latex_depart_todo_noder      s    I011111r!   rh   r   dict[str, Any]c           	        |                      d           |                     ddd           |                     ddd           |                     ddd           |                     t                     |                     t          t
          t          ft          t          ft
          t          ft
          t          ft
          t          f           | 	                    dt                     | 	                    d	t                     |                     t                     |                     d
t                     t           j        dddS )Nrd   r   Fhtmlr   rl   )r   latexr.   mantexinfor@   r%   zdoctree-resolvedr   T)versionenv_versionparallel_read_safe)	add_eventadd_config_valueadd_noder%   r   r   r   r   r   add_directiver'   rt   
add_domainrN   connectrx   sphinx__display_version__)rh   s    r"   setupr      s,   MM.!!!-uf===)5&999-uf===LLLL&(89-/EF&(89%'78)+;<  > > > fd###j(+++NN:KK"$5666-"  r!   )r?   r   r   r   r+   rW   )r?   r   r   r   r+   rW   )rh   r   r+   r   )9rC   
__future__r   typingr   r   r   docutilsr   docutils.parsers.rstr   +docutils.parsers.rst.directives.admonitionsr	   r   r
   sphinx.domainsr   sphinx.errorsr   sphinx.localer   r   sphinx.utilr   r   sphinx.util.docutilsr   r   docutils.nodesr   r   sphinx.applicationr   sphinx.environmentr   sphinx.util.typingr   sphinx.writers.htmlr   sphinx.writers.latexr   	getLoggerr   rm   
Admonitionr   Generalr%   r'   rN   rt   rx   r   r   r   r   r   r    r!   r"   <module>r      s    # " " " " " + + + + + + + + + +       + + + + + + F F F F F F        ! ! ! ! ! !               * * * * * * * * > > > > > > > > 5,,,,,,,,))))))333333------333333444444		8	$	$	 	 	 	 	 %- 	 	 		 	 	 	 	u}em 	 	 	    >?   B. . . . . . . .6       "H# H# H# H# H# H# H# H#V   ! ! ! !
 
 
 
2 2 2 2     r!   