bgF<ddlmZddlZddlZddlZddlZddlmZddlmZddlm Z ddlm Z ddlm Z ddlm Z dd lm Z d d lmZd d lmZd d lmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZejdkrddlm Z!nddl!Z!e rddl"m#Z#d dlm$Z$m%Z%ee&e ee e&efgdfZ'eeee&e ee e&efgdfZ(d+d!Z)Gd"d#e*Z+Gd$d%Z,Gd&d'Z-d,d*Z.dS)-) annotationsN)Any)Callable)cast)Iterable)Mapping)Sequence) TYPE_CHECKING)_tracing) _multicall) _HookCaller)_HookImplFunction) _HookRelay) _Namespace)_Plugin)_SubsetHookCaller)HookImpl)HookSpec)normalize_hookimpl_opts)_Result)metadata)Final) _HookImplOpts _HookSpecOptswarningWarningfunctionCallable[..., object]returnNonecttj|}tj|t ||jj|jjdS)N)linenofilename) rtypes FunctionTypewarnings warn_explicittype__code__co_firstlineno co_filename)rr!funcs `/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib/python3.11/site-packages/pluggy/_manager.py_warn_for_functionr2*sT "H - -D  W }+* c$eZdZdZd fd ZxZS) PluginValidationErrorzVPlugin failed validation. :param plugin: The plugin which failed validation. pluginrmessagestrr#r$cXt|||_dSN)super__init__r6)selfr6r7 __class__s r1r<zPluginValidationError.__init__:s& !!! r3)r6rr7r8r#r$)__name__ __module__ __qualname____doc__r< __classcell__)r>s@r1r5r54sG r3r5cDeZdZdZddZeddZddd Zdd Zd S) DistFacadez$Emulate a pkg_resources Distributiondistimportlib_metadata.Distributionr#r$c||_dSr:)_dist)r=rFs r1r<zDistFacade.__init__Bs  r3r8c |jd}|S)Nnamerr=rKs r1 project_namezDistFacade.project_nameEsM&) r3Nattrc.t|j||Sr:)getattrrI)r=rNdefaults r1 __getattr__zDistFacade.__getattr__Jstz4111r3 list[str]cNtt|jddgzS)NrIrM)sorteddirrIr=s r1__dir__zDistFacade.__dir__Ms"c$*oo.(AABBBr3)rFrGr#r$)r#r8r:)rNr8)r#rS) r?r@rArBr<propertyrMrRrXr3r1rErE?s..X22222CCCCCCr3rEceZdZdZdBdZdCdZdDdEdZdFdZ dGdHdZdIdZ dJdZ dKdZ dLd Z dMd"Z dNd#ZdOd$ZdPd&ZdJd'ZdQd(ZdRd-ZdSd.ZdDdTd1ZdUd3ZdVd5ZdWd7ZdXd=ZdYd>ZdZdAZdS)[ PluginManageraCore class which manages registration of plugin objects and 1:N hook calling. You can register new hooks by calling :meth:`add_hookspecs(module_or_class) `. You can register plugin objects (which contain hook implementations) by calling :meth:`register(plugin) `. For debugging purposes you can call :meth:`PluginManager.enable_tracing` which will subsequently send debug information to the trace helper. rMr8r#r$c||_i|_g|_tjd|_t|_t|_ dS)N pluginmanage) rM _name2plugin_plugin_distinfor TagTracergettracerhookr _inner_hookexec)r=rMs r1r<zPluginManager.__init___sQ#/79IK$.0044^DD %<< )r3 hook_namemethodsSequence[HookImpl]kwargsMapping[str, object] firstresultboolobject | list[object]c2|||||Sr:re)r=rfrgrirks r1 _hookexeczPluginManager._hookexecgs##Iw LLLr3Nr6rrK str | NonecR|p||}||jvr:|j|ddStd|d|d|j||jvrtd|d|d|j||j|<t |D]}|||}|t|t||}t||||}|dp|}t|j |d}|,t||j }t|j ||n?|r+||||||||S)a"Register a plugin and return its name. If a name is not specified, a name is generated using :func:`get_canonical_name`. If the name is blocked from registering, returns ``None``. If the plugin is already registered, raises a :class:`ValueError`. Nz Plugin name already registered: = z2Plugin already registered under a different name: specname)get_canonical_namer_rb ValueErrorvaluesrVparse_hookimpl_optsrrPrrdrrpsetattrhas_spec _verify_hook_maybe_apply_history _add_hookimpl)r=r6rK plugin_name hookimpl_optsmethodhookimplrds r1registerzPluginManager.registerrs=d55f== $+ + + $$["55=t*;;(9(9;  T&--// / /*;;(9(9; *0+&KK - -D 44VTBBM(' 6664;FD4I4I#FKOO$((44<+249dD+I+I<&tT^<__T**F**622  2) 2 2 ))&1111    & & (###!$' r3cF||d|j|<dS)zHBlock registrations of the given name, unregister if already registered.rKN)rr_rLs r1 set_blockedzPluginManager.set_blockeds) T""""&$r3c2||jvo|j|duS)z0Return whether the given plugin name is blocked.N)r_rLs r1 is_blockedzPluginManager.is_blockeds"t((LT->t-D-LLr3module_or_classrcg}t|D]}|||}|t|j|d}|.t ||j||}t |j||nC||||D]}| ||| ||std|j d|dS)zAdd new hook specifications defined in the given ``module_or_class``. Functions are recognized as hook specifications if they have been decorated with a matching :class:`HookspecMarker`. Nzdid not find any z hooks in ) rVparse_hookspec_optsrPrdrrpr{set_specification get_hookimplsr}appendrxrM)r=rnamesrK spec_optshc hookfunctions r1 add_hookspecszPluginManager.add_hookspecss (( # #D00$GGI$)0D$)G)G:$T4>?IVVBDItR0000(()DDD(*(8(8(:(:<< ))"l;;;; T""" VD$5VV?VV   r3_HookSpecOpts | NonecXt||}t||jdzd}|S)N_spec)rPrM)r=rrKroptss r1rz!PluginManager.parse_hookspec_optss2#?D99%,VT5F5PRV%W%W r3set[Any]cNt|jS)z.Return a set of all registered plugin objects.)setr_ryrWs r1 get_pluginszPluginManager.get_pluginss4$++--...r3chtfd|jDS)z0Return whether the plugin is already registered.c3$K|] }|kV dSr:rZ).0valr6s r1 z.PluginManager.is_registered..s'GGS6S=GGGGGGr3)anyr_ry)r=r6s `r1 is_registeredzPluginManager.is_registereds5GGGGD,=,D,D,F,FGGGGGGr3c`t|dd}|ptt|S)a3Return a canonical name for a plugin object. Note that a plugin may be registered under a different name specified by the caller of :meth:`register(plugin, name) `. To obtain the name of n registered plugin use :meth:`get_name(plugin) ` instead. r?N)rPr8id)r=r6rKs r1rwz PluginManager.get_canonical_names,#6:t<<&s2f::&r3 Any | Nonec6|j|S)z:Return the plugin registered under the given name, if any.)r_rbrLs r1rzPluginManager.get_plugin s $$T***r3c0||duS)z:Return whether a plugin with the given name is registered.N)rrLs r1 has_pluginzPluginManager.has_pluginst$$D00r3cX|jD]\}}||kr|cSdS)zPReturn the name the plugin is registered under, or ``None`` if is isn't.N)r_items)r=r6rKrs r1rzPluginManager.get_namesB*0022  ID#}} tr3rdrrrc 4|r4|js|jr&t|jd|jd|jd|jJ|jjrt|jj|j t|j t|jj z }|r>t|jd|jd|jdt|j d|d |js|jrTtj|j s;t|jd|jd|jdt|j d|jrB|jr=t|jd|jd|jdt|j d dSdS) NzPlugin z hook z5 historic incompatible with yield/wrapper/hookwrapperz for hook z hookimpl definition: z Argument(s) zB are declared in the hookimpl but can not be found in the hookspeczV Declared as wrapper=True or hookwrapper=True but function is not a generator functionzE The wrapper=True and hookwrapper=True options are mutually exclusive) is_historic hookwrapperwrapperr5r6rrKspec warn_on_implr2r!rargnames _formatdefrisgeneratorfunction)r=rdr notinspecs r1r}zPluginManager._verify_hooks      8#7 8;K ''''4  y$$$ 9 ! J ty5x7H I I I)**S1C-D-DD  ' (((IIIx01111II       ( 4 -h.?@@ ('''Jx?P4Q4Q4Q4QS     4 ''''Jx?P4Q4Q4Q4QS     r3c  |jjD]u}|ddkrgt|j|}|s>|D])}|js t |jd|d|j*vdS)zVerify that all hooks which have not been verified against a hook specification are optional, otherwise raise :class:`PluginValidationError`.r_z unknown hook z in plugin N)rd__dict__rPr|r optionalhookr5r6)r=rKrdrs r1 check_pendingzPluginManager.check_pendingIsI&  DAw#~~$+DIt$<$<}}$($6$6$8$8'4"7 (#'44!:##  r3groupintcd}ttjD]}|jD]}|j|ksA| |j|ks4||js||jrO|}| ||j|j |t|f|dz }|S)a$Load modules from querying the specified setuptools ``group``. :param str group: Entry point group to load plugins. :param str name: If given, loads only plugins with the given ``name``. :rtype: int :return: The number of plugins loaded by this call. rNrr ) listimportlib_metadata distributions entry_pointsrrKrrloadrr`rrE)r=rrKcountrFepr6s r1load_setuptools_entrypointsz)PluginManager.load_setuptools_entrypointsYs+9;;<<  D'  H%%(RW__rw//.=rw//.=  f27 333%,,fj6F6F-GHHH   r3 list[tuple[_Plugin, DistFacade]]c*t|jS)zXReturn a list of (plugin, distinfo) pairs for all setuptools-registered plugins.)rr`rWs r1list_plugin_distinfoz"PluginManager.list_plugin_distinforsD)***r3list[tuple[str, _Plugin]]cNt|jS)zAReturn a list of (name, plugin) pairs for all registered plugins.)rr_rrWs r1list_name_pluginzPluginManager.list_name_pluginwsD%++--...r3list[_HookCaller] | Nonec||dSg}|jjD]7}|D] }|j|ur||!8|S)z.Get all hook callers for the specified plugin.N)rrdrryrr6r)r=r6rrrs r1rzPluginManager.get_hookcallers{s == (4 ),3355 3 3J&4466 3 3?f,,&&z222 3r3before _BeforeTraceafter _AfterTraceCallable[[], None]cHjdfd }|_dfd }|S)a0Add before/after tracing functions for all hooks. Returns an undo function which, when called, removes the added tracers. ``before(hook_name, hook_impls, kwargs)`` will be called ahead of all hook calls and receive a hookcaller instance, a list of HookImpl instances and the keyword arguments for the hook call. ``after(outcome, hook_name, hook_impls, kwargs)`` receives the same arguments as ``before`` but also a :class:`_Result` object which represents the result of the overall hook call. rfr8 hook_implsrh caller_kwargsrjrkrlr#rmctjfd}||S)Nc Sr:rZ)rrkrrfoldcallsr1zPPluginManager.add_hookcall_monitoring..traced_hookexec..s :}kRRr3)r from_call get_result)rfrrrkoutcomerrrs```` r1traced_hookexecz>PluginManager.add_hookcall_monitoring..traced_hookexecsq F9j- 8 8 8'RRRRRRRRG E'9j- @ @ @%%'' 'r3r$c_dSr:ro)rr=sr1undoz3PluginManager.add_hookcall_monitoring..undos#*D r3) rfr8rrhrrjrkrlr#rmr#r$ro)r=rrrrrs``` @r1add_hookcall_monitoringz%PluginManager.add_hookcall_monitoringsl& ( ( ( ( ( ( ( ( / + + + + + + + r3c|jjddfd }dfd }|||S)zwEnable tracing of hook calls. Returns an undo function which, when called, removes the added tracing. rdrfr8rgrhrirjr#r$cJjxjdz c_||dS)Nr )rootindent)rfrgri hooktraces r1rz,PluginManager.enable_tracing..befores3 N ! !Q & ! ! Ii ( ( ( ( (r3r_Result[object]c|j d|d|jxjdzc_dS)Nfinishz-->r ) exceptionrrr)rrfrgrirs r1rz+PluginManager.enable_tracing..aftersL  ( (Iug6H6H6J6JKKK N ! !Q & ! ! ! !r3)rfr8rgrhrirjr#r$) rrrfr8rgrhrirjr#r$)rcrrbr)r=rrrs @r1enable_tracingzPluginManager.enable_tracingsp JO''//  ) ) ) ) ) )  ' ' ' ' ' '++FE:::r3remove_pluginsIterable[_Plugin]crt|j}fd|D}|rt||S|S)zReturn a proxy :py:class:`._hooks._HookCaller` instance for the named method which manages calls to all registered plugins except the ones from remove_plugins.c4h|]}t||SrZ)hasattr)rplugrKs r1 z3PluginManager.subset_hook_caller..s(TTTdd@S@STTTTTr3)rPrdr)r=rKrorigplugins_to_removes ` r1subset_hook_callerz PluginManager.subset_hook_callersN $DIt44TTTTnTTT  >$T+<== = r3)rMr8r#r$) rfr8rgrhrirjrkrlr#rmr:)r6rrKrqr#rq)r6rrKr8r#r)NN)r6rrKrqr#r)rKr8r#r$)rKr8r#rl)rrr#r$)rrrKr8r#r)r#r)r6rr#rl)r6rr#r8)rKr8r#r)r6rr#rq)rdrrrr#r$r)rr8rKrqr#r)r#r)r#r)r6rr#r)rrrrr#r)r#r)rKr8rrr#r)r?r@rArBr<rprrzrrrrrrrrwrrrr}rrrrrrrrrZr3r1r\r\Qs#  **** M M M M.....`     AE8'''' MMMM4////HHHH ' ' ' '++++1111----^ 2++++ ////    ####J;;;;2      r3r\r0r8c<|jtj|Sr:)r?r signature)r0s r1rrs m 6W.t44 6 66r3)rr r!r"r#r$)r0r"r#r8)/ __future__rrsysr(r*typingrrrrrr r r _callersr _hooksrrrrrrrrr_resultr version_info importlibrrtyping_extensionsrrrr8rrr2rr5rEr\rrZr3r1rs""""""   %%%%%%%%%%%%++++++v88888885''''''44444444hx0'#s(2CDdJK  c8H+=wsCx?PQSWWX ICCCCCCCC$}}}}}}}}@ 777777r3