eaiovnaovbqoebvqoeavibavo 3 "e;ã@sHddlZddlmZddlmZiZGdd„deƒZdd„Zdd „Z dS) éN)Ú HOOKS_DIRS)Ú load_sourcec@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ú/usr/lib/python3.6/hooks.pyÚ__init__!szHooksObserver.__init__cCs"|tkr dSdd„t|DƒdS)NcSsg|] }|ƒ‘qSrr)Ú.0Úfrrrú (sz*HooksObserver.__call__..)Ú_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. csBx.decoratorr)rrr)rrÚmatch+s rcCszxttD]l}xftj|ƒD]X\}}}xL|D]D}tjj|ƒd}yt|tjj||ƒƒWq&tk rhw&Yq&Xq&WqWqWdS)Nr)rÚosÚwalkÚpathÚsplitextrÚjoinÚ Exception)Zhook_dirÚrootÚdirsÚfilesZfnameÚmodnamerrrrDs  r) rZ tracer.pathsrZtracer.resources.pycomprr ÚobjectrrrrrrrÚs