
    zi                    L   d 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	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	rddlmZ  ej        e          Z G d de          Zi 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&d'd(d)dd*d+Z G d, d-          ZdS ).zLSphinx core events.

Gracefully adapted from the TextPress system by Armin.
    )annotationsN)defaultdict)
attrgetter)TYPE_CHECKINGAnyCallable
NamedTuple)ExtensionErrorSphinxError)__)logging)safe_getattr)Sphinxc                  .    e Zd ZU ded<   ded<   ded<   dS )EventListenerintidr   handlerpriorityN)__name__
__module____qualname____annotations__     X/var/www/tmov.alphamb/tmov_inventario/venv/lib/python3.11/site-packages/sphinx/events.pyr   r      s.         GGGMMMMMr   r   zbuilder-inited zconfig-initedconfigzenv-get-outdatedzenv, added, changed, removedzenv-get-updatedenvzenv-purge-doczenv, docnamezenv-before-read-docszenv, docnameszenv-check-consistencyz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missing-referencezenv, node, contnodezwarn-missing-referencezdomain, nodezdoctree-resolvedzdoctree, docnamezenv-updatedzbuild-finished	exceptionc                  N    e Zd ZdZddZdd	ZddZddZddddZddd dZ	dS )!EventManagerzEvent manager for Sphinx.appr   returnNonec                    || _         t                                          | _        t	          t
                    | _        d| _        d S )Nr   )r#   core_eventscopyeventsr   list	listenersnext_listener_id)selfr#   s     r   __init__zEventManager.__init__7   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)r)   r
   r   )r-   r/   s     r   addzEventManager.add=   s=    4; $>!?!?$!FGGGDr   callbackr   r   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   )r)   r
   r   r,   r+   appendr   )r-   r/   r3   r   listener_ids        r   connectzEventManager.connectC   st    t{"" $<!=!=!DEEE+"t##M+x$R$RSSSr   r7   c                    | j                                         D ]/}|dd         D ]"}|j        |k    r|                    |           #0dS )zDisconnect a handler.N)r+   valuesr   remove)r-   r7   r+   listeners       r   
disconnectzEventManager.disconnectM   sg    ..00 	/ 	/I%aaaL / /;+--$$X.../	/ 	/r   r   )allowed_exceptionsargsr   r>   tuple[type[Exception], ...]r*   c               T   t          j        t                    5  t                              d|t          |          dd                    ddd           n# 1 swxY w Y   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%sNd   r   )keyr   z*Handler %r for event %r threw an exception)modname)
contextlibsuppress	Exceptionloggerdebugreprsortedr+   r   r6   r   r#   r   pdbr   r
   r   )	r-   r/   r>   r?   resultsr+   r<   excrD   s	            r   emitzEventManager.emitT   s     ++ 	O 	OLL5tT$ZZ=MNNN	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 4>$/Z
5K5KLLL	! 	^ 	^H^/x/@4@@@AAAA%       ^ ^ ^8< &x'7tLL$R(T%U%U&.&6%=&>?BGU U UZ]^^ s*   2AAA&B::D%AD  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)rO   )r-   r/   r>   r?   results        r   emit_firstresultzEventManager.emit_firstresultp   sI      diStSSS@RSS 	 	F! "tr   N)r#   r   r$   r%   )r/   r0   r$   r%   )r/   r0   r3   r   r   r   r$   r   )r7   r   r$   r%   )r/   r0   r?   r   r>   r@   r$   r*   )r/   r0   r?   r   r>   r@   r$   r   )
r   r   r   __doc__r.   r2   r8   r=   rO   rR   r   r   r   r"   r"   4   s        ##" " " "      / / / / @B     : LN	 	 	 	 	 	 	 	r   r"   )rS   
__future__r   rE   collectionsr   operatorr   typingr   r   r   r	   sphinx.errorsr
   r   sphinx.localer   sphinx.utilr   sphinx.util.inspectr   sphinx.applicationr   	getLoggerr   rH   r   r'   r"   r   r   r   <module>r^      s#   
 # " " " " "     # # # # # #       ; ; ; ; ; ; ; ; ; ; ; ; 5 5 5 5 5 5 5 5             , , , , , , *)))))) 
	8	$	$    J   bX 6 u	
 ^ O U ) @ 6 > . n * 5  k!(E E E E E E E E E Er   