
    -PhX/                       d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	m
Z
 ddlmZmZ ddlmZ ddlmZ dd	lmZ erPdd
lmZmZmZmZ ddlmZ 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& ddl'm(Z( ddl)m*Z* ddl+m,Z, ddl-m.Z.  ej/        e0          Z1 G d de	          Z2i ddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d+d-d+d.d/d0d1d2d3d4d5d6d7Z3 G d8 d9          Z4d:S );zLSphinx core events.

Gracefully adapted from the TextPress system by Armin.
    )annotations)defaultdict)
attrgetter)TYPE_CHECKING
NamedTupleoverload)ExtensionErrorSphinxError)__)logging)safe_getattr)CallableIterableSequenceSet)Path)AnyLiteral)nodes)addnodes)Sphinx)Builder)Config)Domain)BuildEnvironment) _AutodocProcessDocstringListener)	todo_nodec                  .    e Zd ZU ded<   ded<   ded<   dS )EventListenerintidCallable[..., Any]handlerpriorityN)__name__
__module____qualname____annotations__     M/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sphinx/events.pyr   r   %   s.         GGGMMMMMr*   r   zconfig-initedconfigzbuilder-inited zenv-get-outdatedzenv, added, changed, removedzenv-before-read-docszenv, docnameszenv-purge-doczenv, docnamezsource-readzdocname, source textzinclude-readz*relative path, parent docname, source textzdoctree-readz the doctree before being pickledzenv-merge-infoz&env, read docnames, other env instancezenv-updatedenvzenv-get-updatedzenv-check-consistencyzwrite-startedbuilderzdoctree-resolvedzdoctree, docnamezmissing-referencezenv, node, contnodezwarn-missing-referencezdomain, nodezbuild-finished	exceptionc                     e Zd ZdZdsdZdtd	Zedud            Zedvd            Zedwd            Zedxd            Zedyd            Zedzd            Zed{d!            Zed|d$            Zed}d'            Zed~d*            Zedd-            Zedd0            Zedd3            Zedd6            Zedd9            Zedd<            Zedd?            ZeddB            ZeddE            ZeddH            ZeddK            ZeddN            ZeddQ            ZeddT            ZeddW            ZeddZ            Zedd]            Zedd`            Zeddc            Zedde            ZddfZddhZdidjddpZ	didjddqZ
drS )EventManagerzEvent manager for Sphinx.appr   returnNonec                    || _         t                                          | _        t	          t
                    | _        d| _        d S )Nr   )r3   core_eventscopyeventsr   list	listenersnext_listener_id)selfr3   s     r+   __init__zEventManager.__init__D   s9    !&&((9DT9J9J !r*   namestrc                j    || j         v rt          t          d          |z            d| j         |<   dS )zRegister a custom Sphinx event.zEvent %r already presentr-   N)r9   r	   r   )r=   r?   s     r+   addzEventManager.addJ   s=    4; $>!?!?$!FGGGDr*   Literal['config-inited']callback Callable[[Sphinx, Config], None]r$   r    c                    d S Nr)   r=   r?   rD   r$   s       r+   connectzEventManager.connectR   	     cr*   Literal['builder-inited']Callable[[Sphinx], None]c                    d S rG   r)   rH   s       r+   rI   zEventManager.connectZ   rJ   r*   Literal['env-get-outdated']QCallable[[Sphinx, BuildEnvironment, Set[str], Set[str], Set[str]], Sequence[str]]c                    d S rG   r)   rH   s       r+   rI   zEventManager.connectb   	     cr*   Literal['env-before-read-docs']5Callable[[Sphinx, BuildEnvironment, list[str]], None]c                    d S rG   r)   rH   s       r+   rI   zEventManager.connectl   rJ   r*   Literal['env-purge-doc']/Callable[[Sphinx, BuildEnvironment, str], None]c                    d S rG   r)   rH   s       r+   rI   zEventManager.connectt   rJ   r*   Literal['source-read'](Callable[[Sphinx, str, list[str]], None]c                    d S rG   r)   rH   s       r+   rI   zEventManager.connect|   rJ   r*   Literal['include-read'].Callable[[Sphinx, Path, str, list[str]], None]c                    d S rG   r)   rH   s       r+   rI   zEventManager.connect   rJ   r*   Literal['doctree-read'](Callable[[Sphinx, nodes.document], None]c                    d S rG   r)   rH   s       r+   rI   zEventManager.connect   rJ   r*   Literal['env-merge-info']FCallable[[Sphinx, BuildEnvironment, Set[str], BuildEnvironment], None]c                    d S rG   r)   rH   s       r+   rI   zEventManager.connect   rQ   r*   Literal['env-updated'])Callable[[Sphinx, BuildEnvironment], str]c                    d S rG   r)   rH   s       r+   rI   zEventManager.connect   rJ   r*   Literal['env-get-updated']3Callable[[Sphinx, BuildEnvironment], Iterable[str]]c                    d S rG   r)   rH   s       r+   rI   zEventManager.connect   rJ   r*    Literal['env-check-consistency']*Callable[[Sphinx, BuildEnvironment], None]c                    d S rG   r)   rH   s       r+   rI   zEventManager.connect   rJ   r*   Literal['write-started']!Callable[[Sphinx, Builder], None]c                    d S rG   r)   rH   s       r+   rI   zEventManager.connect   rJ   r*   Literal['doctree-resolved']-Callable[[Sphinx, nodes.document, str], None]c                    d S rG   r)   rH   s       r+   rI   zEventManager.connect   rJ   r*   Literal['missing-reference']fCallable[[Sphinx, BuildEnvironment, addnodes.pending_xref, nodes.TextElement], nodes.reference | None]c                    d S rG   r)   rH   s       r+   rI   zEventManager.connect   	     cr*   !Literal['warn-missing-reference']>Callable[[Sphinx, Domain, addnodes.pending_xref], bool | None]c                    d S rG   r)   rH   s       r+   rI   zEventManager.connect   rJ   r*   Literal['build-finished']*Callable[[Sphinx, Exception | None], None]c                    d S rG   r)   rH   s       r+   rI   zEventManager.connect   rJ   r*   Literal['html-collect-pages']=Callable[[Sphinx], Iterable[tuple[str, dict[str, Any], str]]]c                    d S rG   r)   rH   s       r+   rI   zEventManager.connect   rJ   r*   Literal['html-page-context']HCallable[[Sphinx, str, str, dict[str, Any], nodes.document], str | None]c                    d S rG   r)   rH   s       r+   rI   zEventManager.connect   rQ   r*    Literal['linkcheck-process-uri']#Callable[[Sphinx, str], str | None]c                    d S rG   r)   rH   s       r+   rI   zEventManager.connect   rJ   r*   'Literal['object-description-transform']9Callable[[Sphinx, str, str, addnodes.desc_content], None]c                    d S rG   r)   rH   s       r+   rI   zEventManager.connect   rJ   r*   $Literal['autodoc-process-docstring']r   c                    d S rG   r)   rH   s       r+   rI   zEventManager.connect	  rJ   r*   +Literal['autodoc-before-process-signature']#Callable[[Sphinx, Any, bool], None]c                    d S rG   r)   rH   s       r+   rI   zEventManager.connect  rJ   r*   $Literal['autodoc-process-signature']Callable[[Sphinx, Literal['module', 'class', 'exception', 'function', 'method', 'attribute'], str, Any, dict[str, bool], str | None, str | None], tuple[str | None, str | None] | None]c                    d S rG   r)   rH   s       r+   rI   zEventManager.connect  s	    & cr*    Literal['autodoc-process-bases']>Callable[[Sphinx, str, Any, dict[str, bool], list[str]], None]c                    d S rG   r)   rH   s       r+   rI   zEventManager.connect.  rJ   r*   Literal['autodoc-skip-member']Callable[[Sphinx, Literal['module', 'class', 'exception', 'function', 'method', 'attribute'], str, Any, bool, dict[str, bool]], bool]c                    d S rG   r)   rH   s       r+   rI   zEventManager.connect6  s	    $ cr*   Literal['todo-defined']#Callable[[Sphinx, todo_node], None]c                    d S rG   r)   rH   s       r+   rI   zEventManager.connectJ  rJ   r*   Literal['viewcode-find-source']aCallable[[Sphinx, str], tuple[str, dict[str, tuple[Literal['class', 'def', 'other'], int, int]]]]c                    d S rG   r)   rH   s       r+   rI   zEventManager.connectR  rv   r*   #Literal['viewcode-follow-imported'](Callable[[Sphinx, str, str], str | None]c                    d S rG   r)   rH   s       r+   rI   zEventManager.connect]  rJ   r*   r"   c                    d S rG   r)   rH   s       r+   rI   zEventManager.connectg  rJ   r*   c                    || j         vrt          t          d          |z            | j        }| xj        dz  c_        | j        |                             t          |||                     |S )z$Connect a handler to specific event.zUnknown event name: %s   )r9   r	   r   r<   r;   appendr   )r=   r?   rD   r$   listener_ids        r+   rI   zEventManager.connecto  st    t{"" $<!=!=!DEEE+"t##M+x$R$RSSSr*   r   c                    | j                                         D ]9}|                                D ]"}|j        |k    r|                    |           #:dS )zDisconnect a handler.N)r;   valuesr8   r!   remove)r=   r   r;   listeners       r+   
disconnectzEventManager.disconnecty  si    ..00 	/ 	/I%NN,, / /;+--$$X.../	/ 	/r*   r)   )allowed_exceptionsargsr   r   tuple[type[Exception], ...]	list[Any]c               
   	 t          |          }t                              d||           n# t          $ r Y nw xY wg }t	          | j        |         t          d                    }|D ]}	 |                     |j        | j	        g|R             *# |$ r  t          $ r  t          $ rR}| j	        j        r t          |j        dd          }	t          t          d          |j        |fz  ||	          |d}~ww xY w|S )zEmit a Sphinx event.z[app] emitting event: %r%sr$   )keyr&   Nz*Handler %r for event %r threw an exception)modname)reprloggerdebug	Exceptionsortedr;   r   r   r#   r3   r
   pdbr   r	   r   )
r=   r?   r   r   	repr_argsresultsr;   r   excr   s
             r+   emitzEventManager.emit  sk   	HT

I LL5tYGGGG  	 	 	D	
 4>$/Z
5K5KLLL	! 	 	H/x/@4@@@AAAA%       
 
 
8< &x'7tLL$CDD'./#	  
 
 s%   . 
;;.&BD .AC;;D c               :     | j         |g|R d|iD ]}||c S 	dS )zEmit a Sphinx event and returns first result.

        This returns the result of the first handler that doesn't return ``None``.
        r   N)r   )r=   r?   r   r   results        r+   emit_firstresultzEventManager.emit_firstresult  sI      diStSSS@RSS 	 	F! "tr*   N)r3   r   r4   r5   )r?   r@   r4   r5   )r?   rC   rD   rE   r$   r    r4   r    )r?   rK   rD   rL   r$   r    r4   r    )r?   rN   rD   rO   r$   r    r4   r    )r?   rR   rD   rS   r$   r    r4   r    )r?   rU   rD   rV   r$   r    r4   r    )r?   rX   rD   rY   r$   r    r4   r    )r?   r[   rD   r\   r$   r    r4   r    )r?   r^   rD   r_   r$   r    r4   r    )r?   ra   rD   rb   r$   r    r4   r    )r?   rd   rD   re   r$   r    r4   r    )r?   rg   rD   rh   r$   r    r4   r    )r?   rj   rD   rk   r$   r    r4   r    )r?   rm   rD   rn   r$   r    r4   r    )r?   rp   rD   rq   r$   r    r4   r    )r?   rs   rD   rt   r$   r    r4   r    )r?   rw   rD   rx   r$   r    r4   r    )r?   rz   rD   r{   r$   r    r4   r    )r?   r}   rD   r~   r$   r    r4   r    )r?   r   rD   r   r$   r    r4   r    )r?   r   rD   r   r$   r    r4   r    )r?   r   rD   r   r$   r    r4   r    )r?   r   rD   r   r$   r    r4   r    )r?   r   rD   r   r$   r    r4   r    )r?   r   rD   r   r$   r    r4   r    )r?   r   rD   r   r$   r    r4   r    )r?   r   rD   r   r$   r    r4   r    )r?   r   rD   r   r$   r    r4   r    )r?   r   rD   r   r$   r    r4   r    )r?   r   rD   r   r$   r    r4   r    )r?   r@   rD   r"   r$   r    r4   r    )r   r    r4   r5   )r?   r@   r   r   r   r   r4   r   )r?   r@   r   r   r   r   r4   r   )r%   r&   r'   __doc__r>   rB   r   rI   r   r   r   r)   r*   r+   r2   r2   A   sq       ##" " " "       X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X    X(    X    X&    X    X    X    X   / / / / ;=	% % % % % %V ;=	       r*   r2   N)5r   
__future__r   collectionsr   operatorr   typingr   r   r   sphinx.errorsr	   r
   sphinx.localer   sphinx.utilr   sphinx.util.inspectr   collections.abcr   r   r   r   pathlibr   r   r   docutilsr   sphinxr   sphinx.applicationr   sphinx.buildersr   sphinx.configr   sphinx.domainsr   sphinx.environmentr   sphinx.ext.autodocr   sphinx.ext.todor   	getLoggerr%   r   r   r7   r2   r)   r*   r+   <module>r      s   
 # " " " " " # # # # # #       6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5             , , , , , , *AAAAAAAAAAAA########))))))''''''$$$$$$%%%%%%333333CCCCCC)))))) 
	8	$	$    J   Xb 6 O	
 ^ ) @ 6 > 5 u U Y * .  n!" k#*s s s s s s s s s sr*   