HEX
Server: Apache
System: Linux insrv.serversdaddy.com 5.14.0-362.24.2.el9_3.x86_64 #1 SMP PREEMPT_DYNAMIC Sat Mar 30 14:11:54 EDT 2024 x86_64
User: jsaha (1066)
PHP: 8.3.6
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //proc/self/root/lib/python3.9/site-packages/tracer/__pycache__/hooks.cpython-39.pyc
a

�|
` �@sDddlZddlZddlmZiZGdd�de�Zdd�Zdd�ZdS)	�N)�
HOOKS_DIRSc@s eZdZdZdd�Zdd�ZdS)�
HooksObserverz�
	Provides interface for calling user hooks

	When initializing, loads all hooks located in HOOKS_DIRS. Then it can called
	with application name as argument. Observer ensures calling all hooks defined for the application.
	cCs
t�dS�N)�_register_hooks)�self�r�0/usr/lib/python3.9/site-packages/tracer/hooks.py�__init__!szHooksObserver.__init__cCs"|tvrdSdd�t|D�dS)NcSsg|]
}|��qSrr)�.0�frrr�
<listcomp>(�z*HooksObserver.__call__.<locals>.<listcomp>)�_hooks)r�apprrr�__call__$szHooksObserver.__call__N)�__name__�
__module__�__qualname__�__doc__r	rrrrrrsrcs�fdd�}|S)a
	Decorator for tracer hooks.

	Example::

		from tracer import hooks

		@hooks.match("foo")
		def hook_app():
		    print("Hey, application foo was found")

	.. note::
		You can match multiple applications by calling ``@hooks.match`` with list of them.

	cs>t��tkr�n�gD]"}|tvr*gt|<t|�|�q|Sr)�type�listr�append)rr��appsrr�	decorator;s
zmatch.<locals>.decoratorr)rrrrr�match+srcCsptD]f}t�|�D]V\}}}|D]F}tj�|�d}zt�|tj�||��}Wq tydYq Yq 0q qqdS)Nr)	r�os�walk�path�splitext�impZload_source�join�	Exception)Zhook_dir�root�dirs�files�fname�modname�modulerrrrDsr)	rr Ztracer.pathsrr�objectrrrrrrr�<module>s