σ Ύ[/\c@@sEddlmZddlmZddlmZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlmZe jdƒZdZdefd „ƒYZd efd „ƒYZd „Zd „Zd„Zd„ZdS(i(tabsolute_import(tprint_function(tunicode_literalsN(t_udnfudnf.plugin.dynamictPlugincB@sheZdZdZd Zed„ƒZd„Zd„Z d„Z d„Z d„Z d„Z d „ZRS( u5The base class custom plugins must derive from. #:apiu cC@stjjƒ}|jr!|jn|j}g|jD]}d||f^q4}y|j|ƒWn5tjjk r˜}tj j t dƒ|ƒ‚nX|S(Nu %s/%s.confuParsing file failed: %s( tiniparsetcompatt ConfigParsert config_nametnametpluginconfpathtreadt ParsingErrortdnft exceptionst ConfigErrorR(tclstconftparserR tpathtfileste((s./usr/lib/python2.7/site-packages/dnf/plugin.pyt read_config4s& cC@s||_||_dS(N(tbasetcli(tselfRR((s./usr/lib/python2.7/site-packages/dnf/plugin.pyt__init__@s cC@sdS(N((R((s./usr/lib/python2.7/site-packages/dnf/plugin.pyt pre_configEscC@sdS(N((R((s./usr/lib/python2.7/site-packages/dnf/plugin.pytconfigIscC@sdS(N((R((s./usr/lib/python2.7/site-packages/dnf/plugin.pytresolvedMscC@sdS(N((R((s./usr/lib/python2.7/site-packages/dnf/plugin.pytsackQscC@sdS(N((R((s./usr/lib/python2.7/site-packages/dnf/plugin.pytpre_transactionUscC@sdS(N((R((s./usr/lib/python2.7/site-packages/dnf/plugin.pyt transactionYsN(t__name__t __module__t__doc__R tNoneRt classmethodRRRRRRRR (((s./usr/lib/python2.7/site-packages/dnf/plugin.pyR.s      tPluginscB@s€eZd„Zd„Zd„Zd„Zd„Zd„Zd d„Z d„Z d„Z d „Z d „Z d „Zd „ZRS(cC@sg|_g|_dS(N(t plugin_clstplugins(R((s./usr/lib/python2.7/site-packages/dnf/plugin.pyR_s cC@s€xy|jD]n}yt||ƒƒWq tk rwtjƒ\}}}tj|||ƒ}tjdj |ƒƒq Xq WdS(Nu( R(tgetattrt Exceptiontsystexc_infot tracebacktformat_exceptiontloggertcriticaltjoin(Rtmethodtplugintexc_typet exc_valuet exc_tracebackt except_list((s./usr/lib/python2.7/site-packages/dnf/plugin.pyt_callercs c@s x™|jD]}|j‰t‡fd†|Dƒƒr<q n|j|ƒ}|jdƒo||jddƒo||jddƒ }|r |jj|ƒq q WdS(uwChecks whether plugins are enabled or disabled in configuration files and removes disabled plugins from listc3@s!|]}tjˆ|ƒVqdS(N(tfnmatch(t.0tpattern(R (s./usr/lib/python2.7/site-packages/dnf/plugin.pys qsumainuenabledN(R'R tanyRt has_sectiont has_optiont getbooleantremove(RRtenable_pluginstplug_clsRtdisabled((R s./usr/lib/python2.7/site-packages/dnf/plugin.pyt_check_enabledls cC@sΧttjkrtdƒ‚ntjjtƒtjt<}g|_t|j ||ƒ}t ||ƒt ƒ|_ |j ||ƒt|j ƒdkrΣtd„|j Dƒƒ}tjtdƒdj|ƒƒndS(u)Dynamically load relevant plugin modules.uload_plugins() called twiceics@s|]}|jVqdS(N(R (R:R3((s./usr/lib/python2.7/site-packages/dnf/plugin.pys ˆsuLoaded plugins: %su, N(tDYNAMIC_PACKAGER+tmodulest RuntimeErrorR tpycompt ModuleTypet__path__t_iter_py_filest pluginpatht_import_modulest_plugin_classesR'RDtlentsortedR/tdebugRR1(RRtskipsRAtpackageRtnames((s./usr/lib/python2.7/site-packages/dnf/plugin.pyt_load{s   cC@s|jdƒdS(Nu pre_config(R8(R((s./usr/lib/python2.7/site-packages/dnf/plugin.pyt_run_pre_config‹scC@s|jdƒdS(Nuconfig(R8(R((s./usr/lib/python2.7/site-packages/dnf/plugin.pyt _run_configŽscC@s7x0|jD]%}|||ƒ}|jj|ƒq WdS(N(R'R(tappend(RRRtp_clsR3((s./usr/lib/python2.7/site-packages/dnf/plugin.pyt _run_init‘scC@s|jdƒdS(Nusack(R8(R((s./usr/lib/python2.7/site-packages/dnf/plugin.pytrun_sack–scC@s|jdƒdS(Nuresolved(R8(R((s./usr/lib/python2.7/site-packages/dnf/plugin.pyt run_resolved™scC@s|jdƒdS(Nupre_transaction(R8(R((s./usr/lib/python2.7/site-packages/dnf/plugin.pytrun_pre_transactionœscC@s|jdƒdS(Nu transaction(R8(R((s./usr/lib/python2.7/site-packages/dnf/plugin.pytrun_transactionŸscC@stjt=dS(N(R+RFRE(R((s./usr/lib/python2.7/site-packages/dnf/plugin.pyt_unload’sc C@sλtg|jD]}|j^q ƒ}|s/dStg|jD]}|j^q<ƒ}||}|shdStƒ}x3|jD](}|j|kr{|j|jƒq{q{Wx=|jD]1}tj|j ƒ|kr²|jj |ƒq²q²WdS(N( tsett remove_setR t install_settupdateRR(tinspecttgetfilet __class__R@( RR RSterasedt installedttransaction_difft files_erasedtpkgR3((s./usr/lib/python2.7/site-packages/dnf/plugin.pytunload_removed_plugins₯s%%  N(R!R"RR8RDRURVRWR$RZR[R\R]R^R_Rl(((s./usr/lib/python2.7/site-packages/dnf/plugin.pyR&^s           cC@s tjƒS(N(Rt__subclasses__(((s./usr/lib/python2.7/site-packages/dnf/plugin.pyRN΅scC@sΓxΌ|D]΄}tjj|ƒ\}}|jj|ƒtjj|ƒ\}}d|j|f}ytj|ƒ}Wqt k rΊ}t j t dƒ|ƒt j tjjddtƒqXqWdS(Nu%s.%suFailed loading plugin: %suR,(tosRtsplitRJRXtsplitextR!t importlibt import_moduleR*R/terrorRtlogR tloggingtSUBDEBUGtTrue(RStpy_filestfnRtmoduletextR R((s./usr/lib/python2.7/site-packages/dnf/plugin.pyRMΉs c#@sx–|D]Ž}x…tjd|ƒD]p}tjjtjj|ƒƒ\‰}t‡fd†|DƒƒrŒt‡fd†|DƒƒsŒq!qŒn|Vq!WqWdS(Nu%s/*.pyc3@s!|]}tjˆ|ƒVqdS(N(R9(R:R;(R (s./usr/lib/python2.7/site-packages/dnf/plugin.pys Κsc3@s!|]}tjˆ|ƒVqdS(N(R9(R:R;(R (s./usr/lib/python2.7/site-packages/dnf/plugin.pys Λs(tglobRnRRptbasenameR<(tpathsRRRAtpRyR((R s./usr/lib/python2.7/site-packages/dnf/plugin.pyRKΖs $ c@sV‡fd†}ttˆjdƒtjfi|d6ˆjdd6ƒ}|ˆ_ˆS(u5A class decorator for automatic command registration.c@s|r|jˆƒndS(N(tregister_command(RRR(t command_class(s./usr/lib/python2.7/site-packages/dnf/plugin.pyRΣsuPluginu__init__iuname(ttypetstrR!R Rtaliasest_plugin(RRt plugin_class((Rs./usr/lib/python2.7/site-packages/dnf/plugin.pyR€Πs   (t __future__RRRR9R|Rqtiniparse.compatRRdRutoperatorRnR+R-t dnf.loggingR t dnf.pycomptdnf.utiltdnf.i18nRt getLoggerR/REtobjectRR&RNRMRKR€(((s./usr/lib/python2.7/site-packages/dnf/plugin.pyts0             0W