ó ¾[/\c@sÔddlZddlZddlZddlZddlZddlmZddlm Z ddl m Z m Z m Z defd„ƒYZdefd „ƒYZd efd „ƒYZd efd „ƒYZdS(iÿÿÿÿN(tucd(tmisci(tGroupPersistortEnvironmentPersistortRPMTransactiontRPMTransactionItemWrappercBsdeZd„Zd„Zd„Zd„Zd„Zd„Zed„ƒZ ed„ƒZ ed„ƒZ ed „ƒZ ed „ƒZ ed „ƒZed „ƒZejd „ƒZed„ƒZed„ƒZed„ƒZed„ƒZejd„ƒZed„ƒZd„Zed„ƒZd„Zed„ƒZed„ƒZed„ƒZRS(cCs(|dk st‚||_||_dS(N(tNonetAssertionErrort_swdbt_item(tselftswdbtitem((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyt__init__"s cCs|jjƒjƒS(N(R tgetItemttoStr(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyt__str__'scCs|j|jkS(N(R (R tother((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyt__lt__*scCs|j|jkS(N(R (R R((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyt__eq__-scCs |jjƒS(N(R t__hash__(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyR0scCstS(N(tTrue(R tpattern((s2/usr/lib/python2.7/site-packages/dnf/db/history.pytmatch3scCs|jjƒjƒS(N(R t getRPMItemtgetName(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pytname6scCs|jjƒjƒS(N(R RtgetEpoch(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pytepoch:scCs|jjƒjƒS(N(R Rt getVersion(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pytversion>scCs|jjƒjƒS(N(R Rt getRelease(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pytreleaseBscCs|jjƒjƒS(N(R RtgetArch(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pytarchFscCs;|jr%dj|j|j|jƒSdj|j|jƒS(Ns{}:{}-{}s{}-{}(RtformatRR (R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pytevrJs cCs |jjƒS(N(R t getAction(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pytactionPscCs|jj|ƒdS(N(R t setAction(R tvalue((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyR&TscCs |jjƒS(N(R t getReason(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pytreasonXscCs*y|jjƒSWntk r%dSXdS(Nt(R t getActionNametAttributeError(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyt action_name\s cCs*y|jjƒSWntk r%dSXdS(NR+(R tgetActionShortR-(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyt action_shortcs cCs |jjƒS(N(R tgetState(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pytstatejscCs|jj|ƒdS(N(R tsetState(R R(((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyR2nscCs |jjƒS(N(R t getRepoid(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyt from_reporscCs$|jjƒsdSd|jjƒS(NR+t@(R R4(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyt ui_from_repovscCsdS(N(R(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyt obsoleting{scCs|jjj|ƒS(N(Rtrpmt get_reason(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyR:scCs|jjj|jS(N(RR9t _swdb_ti_pkgR (R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pytpkgƒscCs |jjS(N(R<tfiles(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyR=‡scCs|jS(N(R<(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyt_active‹s(t__name__t __module__R RRRRRtpropertyRRRR R"R$R&tsetterR*R.R0R2R5R7R8R:R<R=R>(((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyR!s4        tTransactionWrappercBsøeZeZeZd„Zed„ƒZed„ƒZed„ƒZ ed„ƒZ ed„ƒZ ed„ƒZ ed„ƒZ ed„ƒZed „ƒZed „ƒZed „ƒZd „Zd „Zd„Zd„Zd„Zd„ZRS(cCs ||_dS(N(t_trans(R ttrans((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyR •scCs |jjƒS(N(RDtgetId(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyttid˜scCs |jjƒS(N(RDt getCmdline(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pytcmdlineœscCs |jjƒS(N(RDt getReleasever(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyt releasever scCs |jjƒS(N(RDt getDtBegin(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyt beg_timestamp¤scCs |jjƒS(N(RDtgetDtEnd(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyt end_timestamp¨scCs |jjƒS(N(RDtgetRpmdbVersionBegin(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pytbeg_rpmdb_version¬scCs |jjƒS(N(RDtgetRpmdbVersionEnd(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pytend_rpmdb_version°scCst|jjƒtjjkƒS(N(tintRDR1tlibdnft transactiontTransactionItemState_DONE(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyt return_code´scCs |jjƒS(N(RDt getUserId(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pytloginuid¸scCs|jS(N(tpackages(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pytdata¼scCs|jjƒ}t|ƒS(N(RDtgetConsoleOutputtbool(R toutput((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyt is_outputÀscCs|jjƒgS(N(RDRF(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyttidsÅscCsgS(N((R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pytperformed_withÈscCs/|jjƒ}g|D]}t||ƒ^qS(N(RDtgetItemsR(R tresultti((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyR[ËscCs$g|jjƒD]}|d^qS(Ni(RDR](R Re((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyR_ÏscCsgS(N((R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyterrorÒscCs|jjƒ|k|_dS(N(RDRRtaltered_gt_rpmdb(R trpmdbv((s2/usr/lib/python2.7/site-packages/dnf/db/history.pytcompare_rpmdbvÕs(R?R@tFalsetaltered_lt_rpmdbRgR RARGRIRKRMRORQRSRXRZR\R`RaRbR[R_RfRi(((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyRCs(      tMergedTransactionWrappercBsheZd„Zd„Zed„ƒZd„Zed„ƒZed„ƒZed„ƒZ d„Z RS(cCstjj|jƒ|_dS(N(RURVtMergedTransactionRD(R RE((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyR ÛscCs|jj|jƒdS(N(RDtmerge(R RE((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyRnÞscCs |jjƒS(N(RDt listUserIds(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyRZáscCs |jjƒS(N(RDtlistIds(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyRaåscCs2g|jjƒD]}t|tjjkƒ^qS(N(RDt listStatesRTRURVRW(R Re((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyRXèscCs |jjƒS(N(RDt listCmdlines(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyRIìscCs |jjƒS(N(RDtlistReleasevers(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyRKðscCs$g|jjƒD]}|d^qS(Ni(RDR](R Re((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyR_ôs( R?R@R RnRARZRaRXRIRKR_(((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyRlÙs   t SwdbInterfacecBseZdd„Zd„Zed„ƒZed„ƒZed„ƒZed„ƒZed„ƒZ d„Z d „Z ed „ƒZ d „Z ed „Zdd ed„Zd„Zd„Zd„Zdd„Zd„Zd„Zdd dd„Zed„Zd„Zd„ZRS(R+cCsRt|ƒ|_d|_d|_d|_d|_d|_||_g|_ dS(N( tstrRKRt_rpmt_groupt_envt _addon_dataRt_db_dirt_output(R tdb_dirRK((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyR ùs      cCs|jƒdS(N(tclose(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyt__del__scCs(|jdkr!t|ƒ|_n|jS(N(RvRR(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyR9scCs(|jdkr!t|ƒ|_n|jS(N(RwRR(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pytgroupscCs(|jdkr!t|ƒ|_n|jS(N(RxRR(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pytenvscCstjj|jtjjjƒS(N(tostpathtjoinRzRURVtSwdbtdefaultDatabaseName(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pytdbpathscCs8|js1tjj|jƒ|_|jjƒn|jS(s Lazy initialize Swdb object (RRURVR„R†tinitTransaction(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyR s cCs&tjj||jƒ}|jƒdS(N(RURVt TransformerR†t transform(R t input_dirt transformer((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyR‰(scCsuy |`Wntk rnX|jjƒd|_d|_d|_|jr_|jj ƒnd|_g|_ dS(N( t_tidR-R tcloseTransactionRRvRwRxRt closeDatabaseR{(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyR},s        cCs |jjƒS(N(R tgetPath(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyR‚:scCs |jjƒS(N(R t resetDatabase(R ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pytreset_db>scCs#|jjƒ}|sdSt|ƒS(N(R tgetLastTransactionRRC(R tcomplete_transactions_onlytt((s2/usr/lib/python2.7/site-packages/dnf/db/history.pytlastBsicCs |p g}g|D]}t|ƒ^q}|jjƒ}g|D]}t|ƒ^qA}|rŠg|D]}|j|krf|^qf}nxmt|ƒD]_\}}|dkrµq—n||d}|jjƒ|jjƒkr—t |_ t |_ q—q—W|ddd…S(Niiiÿÿÿÿ( RTR tlistTransactionsRCRGt enumerateRDRPRRRRkRg(R RatlimitR“ReRdREt prev_trans((s2/usr/lib/python2.7/site-packages/dnf/db/history.pytoldJs +  cCsk|jj|ƒ}|j|ƒ}tjj}|}d}|jj||||ƒ}|j tjj ƒ|S(sSet reason for packageN( R9t_pkg_to_swdb_rpm_itemtrepoRURVt#TransactionItemAction_REASON_CHANGERR taddItemR3RW(R R<R*trpm_itemtrepoidR&t replaced_bytti((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyt set_reason]s cCs|jjt|ƒƒS(sGet repository of package(R t getRPMRepoRu(R R<((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyRœnscCs;|jjt|ƒƒ}|dkr(|St||ƒ}|S(sGet package data for packageN(R tgetRPMTransactionItemRuRR(R R<Rd((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyt package_datars  cCs}y|jjƒWnnX|jr˜xxt|jjjƒƒD]^\}}d}tjj}tjj } d} |jj |||| ƒ} | j tjj ƒq=Wxxt|jjjƒƒD]^\}}d}tjj}tjj } d} |jj |||| ƒ} | j tjj ƒq¸Wx{t|jjjƒƒD]^\}}d}tjj}tjj } d} |jj |||| ƒ} | j tjj ƒq3Wn|jrxxt|jjjƒƒD]^\} } d}tjj}tjj } d} |jj | ||| ƒ} | j tjj ƒqºWxxt|jjjƒƒD]^\} } d}tjj}tjj } d} |jj | ||| ƒ} | j tjj ƒq5Wx{t|jjjƒƒD]^\} } d}tjj}tjj } d} |jj | ||| ƒ} | j tjj ƒq°Wn|jjttjtjƒƒƒt|ƒ|pHdttjƒƒƒ}|jj|jƒ||_|S(NR+(R R‡Rtsortedt _installedtitemsRURVtTransactionItemAction_INSTALLtTransactionItemReason_USERRRžR3RWt _upgradedtTransactionItemAction_UPGRADEt_removedtTransactionItemAction_REMOVER€tbeginTransactionRTtcalendarttimegmttimetgmtimeRuRt getloginuidt setReleaseverRKRŒ(R t rpmdb_versiont using_pkgsttsisRItgroup_idt group_itemR R&R*R¡R¢tenv_idtenv_itemRG((s2/usr/lib/python2.7/site-packages/dnf/db/history.pytbegsp %  %  %   %  %  %      cCsi|jjƒ}|j|jƒ|j|jp1dƒ|j|jƒ|j|j ƒ|j |j ƒ|S(Ni( R t createRPMItemtsetNameRtsetEpochRt setVersionRt setReleaseR tsetArchR"(R tpoRŸ((s2/usr/lib/python2.7/site-packages/dnf/db/history.pytpkg_to_swdb_rpm_itemÏscCsZt|dƒsdS|sdSx6|jƒD](}t|ƒ}|jjd|fƒq*WdS(NRŒi(thasattrt splitlinesRR{tappend(R tmsgtline((s2/usr/lib/python2.7/site-packages/dnf/db/history.pytlog_scriptlet_outputØs cCs›|s| st‚t|ƒ }t|dƒs3dSx*|jD]\}}|jj||ƒq=Wg|_|jjttjƒƒt |ƒt|ƒƒdS(NRŒ( RR^RÇR{R taddConsoleOutputLinetendTransactionRTR³Ru(R RSRXterrorstfile_descriptorRË((s2/usr/lib/python2.7/site-packages/dnf/db/history.pytendês    cCs|jj|ƒS(s{ Search for history transactions which contain specified packages al. la. "yum list". Returns transaction ids. (R tsearchTransactionsByRPM(R tpatternst ignore_case((s2/usr/lib/python2.7/site-packages/dnf/db/history.pytsearchscCs8|jj|j|jdƒ}|tjjkr4tStS(s)Returns True if package is user installediÿÿÿÿ( R tresolveRPMTransactionItemReasonRR"RURVR«RRj(R R<R*((s2/usr/lib/python2.7/site-packages/dnf/db/history.pytuser_installedscCsj|r'|jj|j|j|ƒ}n|jj|j|jdƒ}|tjjkrftjj}n|S(s2Get reason of package before transaction being undone. If package is already installed in the system, keep his reason. :param pkg: package being installed :param first_trans: id of first transaction being undone :param rollback: True if transaction is performing a rollbackiÿÿÿÿ(R RÖRR"RURVtTransactionItemReason_UNKNOWNR«(R R<t first_transtrollbackRd((s2/usr/lib/python2.7/site-packages/dnf/db/history.pytget_erased_reason s !N(R?R@R R~RAR9RR€R†R R‰R}R‚R‘RR•RRjRšR£RœR¦R¾RÆRÌRÑRÕR×RÛ(((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyRt÷s.         N   (R±RR³tlibdnf.transactionRUt libdnf.utilstdnf.i18nRtdnf.yumRRRRRtobjectRRCRlRt(((s2/usr/lib/python2.7/site-packages/dnf/db/history.pyts     oI