VULN_CHECK_I913V6 (fy%ddlmZddlmZddlmZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlmZej*dZdZGdd eZGd d eZd Zd ZdZdZdZy))absolute_import)print_function)unicode_literalsN)_dnfzdnf.plugin.dynamiccReZdZdZdZdZedZdZdZ dZ dZ d Z d Z d Zy) Pluginz5The base class custom plugins must derive from. #:apiz Nctjj}|jr |jn |j}|j Dcgc] }|d|d }}|D]4}t jj|s# |j|6|Scc}w#t$r9}tjjtdt|zd}~wwxYw)N/z.confzParsing file failed: %s)libdnfconf ConfigParser config_namenamepluginconfpathospathisfileread Exceptionr exceptions ConfigErrorrstr)clsr parserrrfilesfilees //usr/lib/python3.12/site-packages/dnf/plugin.py read_configzPlugin.read_config5s))+"%//ssxx9=9L9LM9Lt,9LMDww~~d#\KK%  N !\..44Q7P5QTWXYTZ5Z[[\sBB"" C$+4CC$c ||_||_yN)basecli)selfr#r$s r__init__zPlugin.__init__Cs cyr"r%s r pre_configzPlugin.pre_configH r'cyr"r)r*s rconfigz Plugin.configLr,r'cyr"r)r*s rresolvedzPlugin.resolvedPr,r'cyr"r)r*s rsackz Plugin.sackTr,r'cyr"r)r*s rpre_transactionzPlugin.pre_transactionXr,r'cyr"r)r*s r transactionzPlugin.transaction\r,r')__name__ __module__ __qualname____doc__rr classmethodr r&r+r.r0r2r4r6r)r'rr r /sD? DK         r'r cbeZdZdZdZdZdZdZdZdZ dd Z d Z d Z d Z d ZdZdZy)Pluginsc g|_g|_yr") plugin_clspluginsr*s rr&zPlugins.__init__bs r'c$|jyr")_unloadr*s r__del__zPlugins.__del__fs  r'cH|jD]} t||y#tjj$rt $rVt j\}}}tj|||}tjdj|YwxYw)N) r@getattrrrErrorrsysexc_info tracebackformat_exceptionloggercriticaljoin)r%methodpluginexc_type exc_value exc_traceback except_lists r_callerzPlugins._callerisllF 6'')#>>''  658\\^2)]'889m\  45 6s%A9B! B!cB|jddD]}|jtfd|Dr$|j|}|j dxr'|j ddxr|j dd }|sr|jj|y)zwChecks whether plugins are enabled or disabled in configuration files and removes disabled plugins from listNc3JK|]}tj|ywr"fnmatch).0patternrs r z)Plugins._check_enabled..ysPg7??41 #mainenabled)r?ranyr has_section has_option getbooleanremove)r%r enable_pluginsplug_clsrdisabledrs @r_check_enabledzPlugins._check_enabledts*H==DPPP))$/F**62E"--fi@E & 1 1&) DD &&x0+r'cttjvr tdtj j txtjt<}g|_t|j||}t||tdd|_ |j||t|jdkDrKtd|jD}t j#t%ddj'|yy)z)Dynamically load relevant plugin modules.zload_plugins() called twiceNrc34K|]}|jywr")r)rZrPs rr\z Plugins._load..sE_66;;_szLoaded plugins: %s, )DYNAMIC_PACKAGErHmodules RuntimeErrorrpycomp ModuleType__path___get_plugins_files pluginpath_import_modules_plugin_classesr?rhlensortedrLdebugrrN)r%r skipsrepackagernamess r_loadz Plugins._loads ckk )<= =141F1F1WW O$w"4??E>J')+A. D.1 t ! #ET__EEE LL/0$))E2B C $r'c&|jdy)Nr+rUr*s r_run_pre_configzPlugins._run_pre_configs \"r'c&|jdy)Nr.r~r*s r _run_configzPlugins._run_configs Xr'Ncn|jD]&}|||}|jj|(yr")r?r@append)r%r#r$p_clsrPs r _run_initzPlugins._run_inits.__E4%F LL   '%r'c&|jdy)Nr2r~r*s rrun_sackzPlugins.run_sacks Vr'c&|jdy)Nr0r~r*s r run_resolvedzPlugins.run_resolveds Z r'c&|jdy)Nr4r~r*s rrun_pre_transactionzPlugins.run_pre_transactions &'r'c&|jdy)Nr6r~r*s rrun_transactionzPlugins.run_transactions ]#r'cttjvrDtj t j jdtjt=yy)NzPlugins were unloaded.)rlrHrmrLlogrloggingDDEBUGr*s rrBzPlugins._unloads8 ckk ) JJs{{))+C D O, *r'c|jsyt}|jD]$}||tj|j <&t |j}t }|jD],}|j|j|j.|sy|jD].}|j|jtj0|D] }|jj!||"y)zH Unload plugins that were removed in the `transaction`. N) remove_setdictr@inspectgetfile __class__setkeysupdate intersectionr install_setdifference_update_headerrpmRPMTAG_FILENAMESrd)r%r6r@rP plugin_fileserased_plugin_filespkg plugin_files runload_removed_pluginszPlugins.unload_removed_pluginss%% &llF9?GGOOF$4$45 6#7<<>* !e))C  & &|'@'@'K L*" **C  1 1#++c>R>R2S T+/K LL   4 5/r'r")r7r8r9r&rCrUrhr|rrrrrrrrBrr)r'rr=r=asI 6 1D #( !($- 6r'r=c*tjSr")r __subclasses__r)r'rrurus  ""r'c|D]}tjj|\}}|jj |tjj |\}}|j d|} tj|}y#t$rZ}tjtd||tjtjj ddYd}~d}~wwxYw)N.zFailed loading plugin "%s": %srET)rI)rrsplitrqrsplitextr7 importlib import_modulerrLerrorrrrrSUBDEBUG)rzpy_filesfnrmoduleextrrs rrtrtsww}}R( f%((0 !**F3 @,,T2F  @ LL;No matches found for the following disable plugin patterns: {})rglobrrrbasename_plugin_name_matches_patternaddr differencerLwarningrformatrNrw)pathsdisable_pluginsrer@pattern_enable_foundpattern_disable_foundpr plugin_namedummymatchedenable_pattern_tested pattern_skippattern_enableenable_not_founddisable_not_founds rrrrrsG/*O(N5E ))IM*B#%77#3#3BGG4D4DR4H#I [%G$) ! / / \J)--l;#G*87 ^T&*G044^D+9-1)!0)&4N3KP,00@'5r"%+(&001EFqXY`` IIf-. /1 2'223HIqYZaa IIf./ 02 3 Nr'cft||jddf}tfd|DS)z Checks plugin name matches the pattern. The alternative plugin name using dashes instead of underscores is tried in case of original name is not matched. (see https://bugzilla.redhat.com/show_bug.cgi?id=1980712) r-c3JK|]}tj|ywr"rX)rZrr[s rr\z/_plugin_name_matches_pattern.. sD)$wtW-)r])rreplacer`)rr[ try_namess ` rrrs2[+"5"5c3"?@AI D)D DDr'cfd}ttjdztjf|j dd}|_S)z5A class decorator for automatic command registration.c.|r|jyyr")register_command)r%r#r$ command_classs rr&z"register_command..__init__s    / r'r r)r&r)typerr7rr aliases_plugin)rr& plugin_classs` rrrsU0M22X=> %-!.!6!6q!9;rs*'%'      5 !&/ V/ dh6fh6V# @"J E r'