ó ¾[/\c@sddlZddlZddlZddlmZdefd„ƒYZdefd„ƒYZ defd„ƒYZ d efd „ƒYZ dS( iÿÿÿÿN(t_t PersistorBasecBsbeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z RS( cCsXt|tjjjƒs0ttt|ƒƒƒ‚||_i|_i|_ i|_ dS(N( t isinstancetdnftdbthistoryt SwdbInterfacetAssertionErrortstrttypet _installedt_removedt _upgraded(tselfR((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyt__init__s 0   cCs't|jƒt|jƒt|jƒS(N(tlenR R R (R ((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyt__len__$scCsi|_i|_i|_dS(N(R R R (R ((s0/usr/lib/python2.7/site-packages/dnf/db/group.pytclean's  cCs t‚dS(N(tNotImplementedError(R tobj((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyt _get_obj_id,scCs||j|j|ƒs( t__name__t __module__RRRRRRRRRR(((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyRs         tGroupPersistorcBsGeZd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(cCsA|jjjƒ}g|D]}|jƒr|^q}t|ƒS(N(RtswdbtgetItemstgetCompsGroupItemtiter(R titemsti((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyt__iter__Ds%cCs |jƒS(N(t getGroupId(R R((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyRIscCsJ|jjjƒ}|j|ƒ|j|ƒ|j|ƒ|j|ƒ|S(N(RR#tcreateCompsGroupItemt setGroupIdtsetNametsetTranslatedNametsetPackageTypes(R RRRRt swdb_group((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyRLs     cCs/|jjj|ƒ}|sdS|jƒ}|S(N(RR#R%tNone(R RR0((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyRTs  cCs|jjj|ƒS(N(RR#tgetCompsGroupItemsByPattern(R R((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyR[scCs|jjj|ƒS(N(RR#tgetPackageCompsGroups(R tpkg_name((s0/usr/lib/python2.7/site-packages/dnf/db/group.pytget_package_groups^scCs0|jjj|ddƒ}|tjjkr1tSt|j|ƒƒ}xk|j j ƒD]Z\}}xK|j ƒD]=}|j ƒ|krqon|j ƒsŸqon|j|ƒqoWqVWxk|jj ƒD]Z\}}xK|j ƒD]=}|j ƒ|krûqÝn|j ƒs qÝn|j|ƒqÝWqÄW|r,tStS(Ntiþÿÿÿ(RR#tresolveRPMTransactionItemReasontlibdnft transactiontTransactionItemReason_GROUPtFalsetsetR5R R't getPackagestgetNamet getInstalledRR taddtTrue(R R4treasontpackage_groupstgroup_idtgrouptpkg((s0/usr/lib/python2.7/site-packages/dnf/db/group.pytis_removable_pkgas*  ( R R!R)RRRRR5RG(((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyR"Bs      tEnvironmentPersistorcBsGeZd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(cCsA|jjjƒ}g|D]}|jƒr|^q}t|ƒS(N(RR#R$tgetCompsEnvironmentItemR&(R R'R(((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyR)~s%cCs |jƒS(N(tgetEnvironmentId(R R((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyRƒscCsJ|jjjƒ}|j|ƒ|j|ƒ|j|ƒ|j|ƒ|S(N(RR#tcreateCompsEnvironmentItemtsetEnvironmentIdR-R.R/(R RRRRtswdb_env((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyR†s     cCs/|jjj|ƒ}|sdS|jƒ}|S(N(RR#RIR1(R RRM((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyRŽs  cCs|jjj|ƒS(N(RR#t!getCompsEnvironmentItemsByPattern(R R((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyR•scCs|jjj|ƒS(N(RR#tgetCompsGroupEnvironments(R RD((s0/usr/lib/python2.7/site-packages/dnf/db/group.pytget_group_environments˜scCs|jjj|ƒ}|stSt|j|ƒƒ}xk|jjƒD]Z\}}xK|jƒD]=}|j ƒ|kr{q]n|j ƒsq]n|j |ƒq]WqDWxk|j jƒD]Z\}}xK|jƒD]=}|j ƒ|kréqËn|j ƒsûqËn|j |ƒqËWq²W|rtStS(N(RRERR;R<RPR R't getGroupsR*R?RR R@RA(R RDR0tgroup_environmentstenv_idtenvRE((s0/usr/lib/python2.7/site-packages/dnf/db/group.pytis_removable_group›s*  ( R R!R)RRRRRPRU(((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyRH|s      tRPMTransactioncBsàeZdd„Zd„Zd„Zd„Zddd„Zd„Zd„Z dd„Z dd„Z dd „Z ddd „Z dd „Zdd „Zdd „Zd„Zed„ƒZed„ƒZd„Zd„ZRS(cCsI||_||_|js<y|jjjƒWq<q<Xni|_dS(N(RR9R#tinitTransactiont _swdb_ti_pkg(R RR9((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyR·s   cCsq|jr|jjƒ}n|jjjƒ}g|D]-}|jƒr4tjjj|j|ƒ^q4}t|ƒS(N( R9R$RR#t getRPMItemRRtRPMTransactionItemWrapperR&(R R'R(((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyR)Ãs  :cCsq|jr|jjƒ}n|jjjƒ}g|D]-}|jƒr4tjjj|j|ƒ^q4}t|ƒS(N( R9R$RR#RYRRRZR(R R'R(((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyRÌs  :cCsl|jjjƒ}|j|jƒ|j|jp4dƒ|j|jƒ|j |j ƒ|j |j ƒ|S(Ni( RR#t createRPMItemR-RtsetEpochtepocht setVersiontversiont setReleasetreleasetsetArchtarch(R RFtrpm_item((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyt_pkg_to_swdb_rpm_itemÔscCs|j|ƒ}|j|ƒ}|dkr<|j|ƒ}n|jjj||||ƒ}|rp|j|ƒn||j|<|S(N( Ret get_repoidR1t get_reasonRR#taddItemt addReplacedByRX(R RFtactionRBt replaced_byRdtrepoidtresult((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyRÝs  cCs#t|ddƒ}|r|S|jS(Nt_force_swdb_repoid(tgetattrR1treponame(R RFRm((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyRfèscCs|jjj|j|jdƒS(sGet reason for packageiÿÿÿÿ(RR#R7RRc(R RF((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyRgîscCsO|p g}x<|D]4}|j|tjjƒ}|r|j|ƒqqWdS(N(RR8R9tTransactionItemAction_OBSOLETEDRi(R t obsoletedRktobstti((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyt_add_obsoletedòs   cCsM|j|tjjƒ}|j|tjjd|ƒ}|j|d|ƒdS(NRk(RR8R9tTransactionItemAction_DOWNGRADEt TransactionItemAction_DOWNGRADEDRu(R RtoldRrtti_newtti_old((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyt add_downgradeùscCs|j||ƒdS(N(t add_remove(R RxRB((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyt add_eraseþscCsD|ptjj}|j|tjj|ƒ}|j|d|ƒdS(NRk(R8R9tTransactionItemReason_USERRtTransactionItemAction_INSTALLRu(R RRrRBRy((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyt add_installscCsM|j|tjjƒ}|j|tjjd|ƒ}|j|d|ƒdS(NRk(RR8R9tTransactionItemAction_REINSTALLt!TransactionItemAction_REINSTALLEDRu(R RRxRrRyRz((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyt add_reinstallscCs1|ptjj}|j|tjj|ƒ}dS(N(R8R9R~RtTransactionItemAction_REMOVE(R RxRBRz((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyR| scCsM|j|tjjƒ}|j|tjjd|ƒ}|j|d|ƒdS(NRk(RR8R9tTransactionItemAction_UPGRADEtTransactionItemAction_UPGRADEDRu(R RRxRrRyRz((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyt add_upgradescCsx |D]}|jtjjkrD|jj}|j||dƒq|jtjjkro|j|jj ƒq|jtjj kr¦|jj}|j||dƒq|jtjj krÝ|jj}|j||dƒq|jtjj kr|j|jj ƒq|jtjj kr<|jj}|j||ƒq|jtjjkrTq|jtjjkr|j|jj ƒq|jtjjkr¶|jj}|j||dƒq|jtjjkrá|j|jj ƒq|jtjjkrùqtd|jƒ‚qW|S(s!Populate the RPM transaction set.tuR(s%TransactionItemAction not handled: %s(RjR8R9RvRFt_headert addInstallRwtaddErasetidxRtTransactionItemAction_OBSOLETERqRt addReinstallR‚R„R…R†t#TransactionItemAction_REASON_CHANGEt RuntimeError(R ttsttsithdr((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyt_populate_rpm_tss<      cCsntƒ}x^|D]V}|jtjjkry|j|jƒWqftk rbtd|ƒ‚qfXqqW|S(Ns*TransactionItem is has no RPM attached: %s( R<RjRR9tFORWARD_ACTIONSR@RFtKeyErrorR(R RmR’((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyt install_set:s   cCs{tƒ}xk|D]c}|jtjjtjjgkry|j|jƒWqst k rot d|ƒ‚qsXqqW|S(Ns*TransactionItem is has no RPM attached: %s( R<RjRR9tBACKWARD_ACTIONSR8R‚R@RFR–R(R RmR’((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyt remove_setFs  " cCsMg|jD]}|jdkr |^q }t|ƒrItdƒ|dSdS(sj Ensures all the members can be passed to rpm as they are to perform the transaction. tsrcs+Will not install a source rpm package (%s).iN(R—RcRRR1(R RFt src_installs((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyt_rpm_limitationsRs +   cCs&g|D]}|j|kr|^qS(N(Rj(R RjR’((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyt _get_items\sN(R R!R1RR)RReRRfRgRuR{R}R€RƒR|R‡R”tpropertyR—R™RœR(((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyRV¶s&           &  ( tlibdnf.transactionR8tdnf.db.historyRtdnf.transactiontdnf.i18nRtobjectRR"RHRV(((s0/usr/lib/python2.7/site-packages/dnf/db/group.pyts   &::