PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` 3 "e;@sHddlZddlmZddlmZiZGdddeZddZdd Z dS) N) HOOKS_DIRS) load_sourcec@s eZdZdZddZddZdS) 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 tdS)N)_register_hooks)selfr/usr/lib/python3.6/hooks.py__init__!szHooksObserver.__init__cCs"|tkr dSddt|DdS)NcSsg|] }|qSrr).0frrr (sz*HooksObserver.__call__..)_hooks)rapprrr__call__$szHooksObserver.__call__N)__name__ __module__ __qualname____doc__r rrrrrrsrcsfdd}|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)rrmatch+s rcCszxttD]l}xftj|D]X\}}}xL|D]D}tjj|d}yt|tjj||Wq&tk rhw&Yq&Xq&WqWqWdS)Nr)roswalkpathsplitextrjoin Exception)Zhook_dirrootdirsfilesZfnamemodnamerrrrDs  r) rZ tracer.pathsrZtracer.resources.pycomprr objectrrrrrrrs