[c @sdZddkTddklZlZddklZddklZddk Z ddk Z ddk Z defdYZ d fd YZ d e fd YZd e fdYZdfdYZdS(sK Classes and functions for manipulating a transaction to be passed to rpm. i(t*(t PackageSacktPackageSackVersion(tYumInstalledPackage(tYumAvailablePackageSqliteNtGetProvReqOnlyPackageSackcBsAeZedZdZdZdZdZdZRS(cCsti|||_dS(N(Rt__init__t_need_index_files(tselft need_files((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyR&s cCsWxP|idtD]<}x3|i|dtD]}|i|i||q/WqWdS(Nt primary_only(treturnFileTypestTruetreturnFileEntriest_addToDictAsListt filenames(Rtobjtftypetfile((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyt!__addPackageToIndex_primary_files*s cCsKxD|iD]6}x-|i|D]}|i|i||q#Wq WdS(N(R R RR(RRRR((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyt__addPackageToIndex_files.s  cCsx?|idD].\}}\}}}|i|i||qWx?|idD].\}}\}}}|i|i||qRW|io|i|n|i|dS(Ntprovidestrequires(t returnPrcoRRRRt3_GetProvReqOnlyPackageSack__addPackageToIndex_filest;_GetProvReqOnlyPackageSack__addPackageToIndex_primary_files(RRtntfltetvtr((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyt_addPackageToIndex2s cCs=x6|iD]+}x"|i|D]}|i|qWq WdS(N(t pkgsByRepoR(RtrepoidR((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyt__buildFileIndexes<s  cCsZ|i o?ti| o.t|_|ioh|_|iqJnti||S(N( Rtmisctre_primary_filenameR t indexesBuiltRt,_GetProvReqOnlyPackageSack__buildFileIndexesRt searchFiles(Rtname((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyR'@s    ( t__name__t __module__tFalseRRRRR&R'(((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyR%s     tTransactionDatac BseZdZdZdZdZdZeddddd d d d Zd Z d.d.dZ d.dZ dZ dZedZd.d.d.d.d.dZd.d.d.d.d.dZdZdZdZdZdZdZdZeedZdZdZdZd.d Zd!Zd"Z d#Z!d$Z"d.d%Z#d.d/d&Z$d.d0d'Z%d.d1d(Z&d.d2d)Z'd.d3d*Z(d.d4d+Z)d,Z*d-Z+RS(5sDData Structure designed to hold information on a yum Transaction SetcCsg|_g|_g|_d|_h|_h|_t|_d|_t |_ g|_ d|_ h|_ d|_d|_d|_d|_t|_t|_g|_g|_g|_g|_g|_g|_g|_g|_g|_g|_ g|_!dS(Nt/i("tflagstvsflagstprobFilterFlagstroottpkgdictt _namedicttsett_unresolvedMemberstdebugR+tchangedtinstallonlypkgst state_countert conditionalstNonetrpmdbt_pkgSackt _pkgSackCtortpkgSackPackagesRt localSackRt_inSackt instgroupst removedgroupstremovedt installedtupdatedt obsoletedt depremovedt depinstalledt depupdatedt reinstalledt downgraded(R((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyRKs:                            cCs t|iS(N(tlenR2(R((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyt__len__mscCs;t|ido|iiSt|iSdS(Nt__iter__(thasattrt getMembersROtiter(R((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyROpscCsB|idj o|iS|idj o|i|_n|iS(N(R=R;R>(R((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyt _getPkgSackvs tfgetcCs |iS((RS(R((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyt}stfsetcCst|d|S(R=(tsetattr(Rtvalue((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyRU~stfdelcCst|ddS(R=N(RWR;(R((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyRUstdocsPackage sack objectcCs|io |GHndS(N(R6(Rtmsg((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyt debugprints cstfd|i|S(Ncs |ijS((t output_state(tp(t output_states(s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyRUs(tfilterRQ(RtpkgtupR_((R_s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pytgetMembersWithStatescCsjg}|djo+xP|iiD]}|i|q#Wn)||ijo|i|i|n|S(stakes an optional package tuple and returns all transaction members matching, no pkgtup means it returns all transaction membersN(R;R2t itervaluestextend(RRat returnlisttmembers((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyRQs cCstt|iS(N(tlisttsortedR5(R((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pytgetUnresolvedMembersscCs|ii|dS(N(R5tdiscard(Rttxmbr((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pytmarkAsResolvedscCsO|pt|t|ijo(|ii|ii|itStS(N(RMR5tcleartupdateRQR R+(Rthard((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyt resetResolveds # c Cs|id|d|d|d|d|}t|pd Sg}x|D]}|i|iqIWd|jodSd|jodS|dSd S( sareturns the mode of the first match from the transaction set, otherwise, returns NoneR(tarchtepochtvertreltutiiN(t matchNaevrRMR;tappendtts_state( RR(RqRrRsRtttxmbrststatesRk((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pytgetModes*   cCs0|djo|i}nP|ii|g}|djo-|djo |djo|djo|Sg}x|D]}|i\} } } } } |dj o|| joqyn|dj o|| joqyn|dj o|| joqyn|dj o|| joqyn|i|qyW|S(s4returns the list of packages matching the args aboveN(R;RQR3tgetRaRx(RR(RqRrRsRtRztresultRkRtaRRR((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyRws& 4c Cs|i|}|pG|idd}t|djo|i|d|d}q]n|p|idj o|iid|g}n3|idjo g}n|iid|g}|p|iid|g}nxv|D]j}|i|i |i xH|i i D]7\}}||jo|i |||i |(RR<Rt pkgSackCtor((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyt setDatabases4s  cCsh}|ipn|idjoWx|ii|||iD]0\}}|i|ito||| list of matching provides } searches in packages to be installedN( R?RAR;Rt getProvidesRRbRaRRnR@(RR(tflagtversionR~Rthits((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pytgetNewProvides9s   cCs]h}xP|ii|||iD]0\}}|i|itp||| list of matching provides } searches in packages already installed and not going to be removed(R<RRRbRatTS_REMOVE_STATES(RR(RRR~RR((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pytgetOldProvidesIs  cCs5|i|||}|i|i||||S(s5return dict { packages -> list of matching provides }(RRnR(RR(RRR~((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyRRscCsh}|ipn|idjoWx|ii|||iD]0\}}|i|ito||| list of matching provides } searches in packages to be installedN( R?RAR;Rt getRequiresRRbRaRRnR@(RR(RRR~RR((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pytgetNewRequiresXs   cCs]h}xP|ii|||iD]0\}}|i|itp||| list of matching provides } searches in packages already installed and not going to be removed(R<RRRbRaR(RR(RRR~RR((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pytgetOldRequiresjs  cCs5|i|||}|i|i||||S(s5return dict { packages -> list of matching provides }(RRnR(RR(RRR~((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyRssc Cs|ii}h}xK|idtD]7}|io|i||iiaddObsoleted() pkgs for anything that this txmbr will obsoleteR(N( Rtobsoletes_namesR<t searchNevrat obsoletedByRRR]R(RRktobs_nR((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyRs  N(NNN(NNN(NNN(NNN(NNN(NNN(,R)R*t__doc__RRNRORStpropertyRR\R;RbRQRiRlR+RpR|RwRRRRRRRRRRRRRRRRRRRRRRRRR(((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyR,IsT "            #   &   O           -tConditionalTransactionDatacBseZdZdZRS(s<A transaction data implementing conditional package additioncCs$tidtiti|dS(NsCConditionalTransactionData will go away in a future version of Yum.(twarningstwarntErrorstYumFutureDeprecationWarningR,R(R((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyRs  (R)R*RR(((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyRstSortableTransactionDatacBsDeZdZdZdZdZdZdZdZRS(s@A transaction data implementing topological sort on it's memberscCs,g|_g|_g|_ti|dS(N(t_sortedtpathtloopsR,R(R((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyRs   cCs|ii|it|_xo|iD]d}|id|id}|itjo|i|in|it jo|i |q&q&Wt |_|i i d|idS(NRai(RRxR(tTX_GREYt sortColourt depends_onRQRat_doLooptTX_WHITEt_visittTX_BLACKRtinsert(RRkRtvertex((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyRs   cCs[|ii||i|ii|id}t|djo|ii|ndS(Nii(RRxtindexRMR(RR(tloop((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyRs cCs&t|_ti||g|_dS(N(RRR,RR(RR((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyRs cCsti||g|_dS(N(R,RR(RRa((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyRscCsp|io|iSg|_x>|iD]0}|itjog|_|i|q(q(W|ii|iS(N(RRQRRRRtreverse(RRk((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyRs     ( R)R*RRRRRRR(((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyRs   RcBsPeZdZdZddZdZdZdZdZ dZ RS( sVClass to describe a Transaction Member (a pkg to be installed/ updated/erased).cCs5||_d|_d|_d|_d|_d|_d|_g|_g|_ g|_ g|_ g|_ g|_ g|_g|_t|_g|_ddddddd g|_x3|iD](}t|i|}t|||qW|id jo4|iid |iid |iid ndS(NiRRaR!R(RqRrRtreleaseREt from_repot releasevert changed_by(RR;RRyR]RRtprocessRRRRRRRRR+RRt_poattrtgetattrRWR!RR}(RRtattrtval((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyRs6                   cCs>d|_|o*|ii|df|ii|ndS(slsets the transaction member as a dependency and maps the dep into the relationship list attributeit dependsonN(RRRxR(RR((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyRs cCst|i|iS(N(tcmpR(Rtother((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyt__cmp__scCs ti|S(N(tobjectt__hash__(R((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyRscCs,d|i|i|i|i|i|ifS(Ns%s.%s %s:%s-%s - %s(R(RqRrRRRy(R((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyt__str__ scCs)d|iit|tt|fS(Ns<%s : %s (%s)>(t __class__R)tstrthextid(R((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyt__repr__$sc Csd|i|i|i|i|i|if}|d|iii7}|d|i 7}|d|i 7}|dt |i 7}|d|i 7}|dt |i7}|io|d7}xi|iD]^\}}d }t|to d }n|d |i|i|i|i|i||f7}qW|d 7}nxd ddddddgD]}t||}|o||d|7}x]|D]U}d }t|to d }n|d|i|i|i|i|i|f7}qW|d 7}qPqPW|io|ddi|i7}n|S(Nsmbr: %s,%s,%s,%s,%s %s s repo: %s s ts_state: %s s output_state: %s s isDep: %s s reason: %s s reinstall: %s s relatedto:RRvs %s,%s,%s,%s,%s@%s:%ss RRRRRRRs %s:s %s,%s,%s,%s,%s@%ss groups: %s t (R(RqRrRRRRtrepoRRyR]tboolRRRRRRR Rtjoin(RR[RRtt pkgorigintlsttthislist((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyt_dump'sF       N( R)R*RRR;RRRRRR#(((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyRs "    (Rt constantst packageSackRRtpackagesRt sqlitesackRRRR#RR,RRR(((s7/usr/lib/python2.6/site-packages/yum/transactioninfo.pyts    $j3