
N_c           @   s   d  Z  d d l Td d l m Z m Z d d l m Z d d l m Z d d l	 Z	 d d l
 Z
 d d l Z d d l Z d e f d     YZ d	 f  d
     YZ d e f d     YZ d e f d     YZ d f  d     YZ d S(   sK   
Classes and functions for manipulating a transaction to be passed
to rpm.
i(   t   *(   t   PackageSackt   PackageSackVersion(   t   YumInstalledPackage(   t   YumAvailablePackageSqliteNt   GetProvReqOnlyPackageSackc           B   sA   e  Z e d   Z d   Z d   Z d   Z d   Z d   Z RS(   c         C   s   t  j |   | |  _ d  S(   N(   R   t   __init__t   _need_index_files(   t   selft
   need_files(    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyR   (   s    c         C   sW   xP | j  d t  D]< } x3 | j | d t D] } |  j |  j | |  q/ Wq Wd  S(   Nt   primary_only(   t   returnFileTypest   Truet   returnFileEntriest   _addToDictAsListt	   filenames(   R   t   objt   ftypet   file(    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt!   __addPackageToIndex_primary_files,   s    c         C   sK   xD | j    D]6 } x- | j |  D] } |  j |  j | |  q# Wq Wd  S(   N(   R   R   R   R   (   R   R   R   R   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   __addPackageToIndex_files0   s    c         C   s   x? | j  d  D]. \ } } \ } } } |  j |  j | |  q Wx? | j  d  D]. \ } } \ } } } |  j |  j | |  qR W|  j r |  j |  n |  j |  d  S(   Nt   providest   requires(   t
   returnPrcoR   R   R   R   t3   _GetProvReqOnlyPackageSack__addPackageToIndex_filest;   _GetProvReqOnlyPackageSack__addPackageToIndex_primary_files(   R   R   t   nt   flt   et   vt   r(    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   _addPackageToIndex4   s    ((	c         C   s=   x6 |  j  D]+ } x" |  j  | D] } |  j |  q Wq
 Wd  S(   N(   t
   pkgsByRepoR   (   R   t   repoidR   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   __buildFileIndexes>   s    c         C   sU   |  j  rE t j |  rE t |  _  |  j rE i  |  _ |  j   qE n  t j |  |  S(   N(	   R   t   misct   re_primary_filenameR   t   indexesBuiltR   t,   _GetProvReqOnlyPackageSack__buildFileIndexesR   t   searchFiles(   R   t   name(    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyR'   B   s    			(	   t   __name__t
   __module__t   FalseR   R   R   R   R&   R'   (    (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyR   '   s   			
	t   TransactionDatac        	   B   s  e  Z d  Z d   Z d   Z d   Z d   Z d   Z e d d   d d	   d
 d   d d  Z	 d   Z
 d/ d/ d  Z d/ d  Z d   Z d   Z e d  Z d/ d/ d/ d/ d/ d  Z d/ d/ d/ d/ d/ d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z e e d  Z d   Z d   Z d    Z d/ d!  Z d"   Z  d#   Z! d$   Z" d%   Z# d/ d&  Z$ d/ d0 d'  Z% d/ d1 d(  Z& d/ d2 d)  Z' d/ d3 d*  Z( d/ d4 d+  Z) d/ d5 d,  Z* d-   Z+ d.   Z, RS(6   sD   Data Structure designed to hold information on a yum Transaction Setc         C   s]  g  |  _  g  |  _ g  |  _ d |  _ i  |  _ i  |  _ t   |  _ d |  _ t	 |  _
 g  |  _ d |  _ t j   |  _ t j   |  _ i  |  _ d  |  _ d  |  _ d  |  _ d |  _ t   |  _ t   |  _ g  |  _ g  |  _ g  |  _ g  |  _ g  |  _ g  |  _ g  |  _  g  |  _! g  |  _" g  |  _# g  |  _$ g  |  _% g  |  _& g  |  _' d  |  _( d  |  _) d  S(   Nt   /i    (*   t   flagst   vsflagst   probFilterFlagst   roott   pkgdictt	   _namedictt   sett   _unresolvedMemberst   debugR+   t   changedt   installonlypkgst   state_countert   timet
   tm_createdt
   tm_changedt   conditionalst   Nonet   rpmdbt   _pkgSackt   _pkgSackCtort   pkgSackPackagesR   t	   localSackR   t   _inSackt
   instgroupst   removedgroupst   instenvironmentst   removedenvironmentst   removedt	   installedt   updatedt	   obsoletedt
   depremovedt   depinstalledt
   depupdatedt   reinstalledt
   downgradedt   failedt   _future_rpmdbvt   _check_future_rpmdbv(   R   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyR   M   sH    																														c         C   s+   t  |  _ |  j d 7_ t j   |  _ d  S(   Ni   (   R   R7   R9   R:   R<   (   R   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   _changedw   s    	c         C   s   t  |  j  S(   N(   t   lenR2   (   R   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   __len__|   s    c         C   s9   t  |  j   d  r% |  j   j   St |  j    Sd  S(   Nt   __iter__(   t   hasattrt
   getMembersRX   t   iter(   R   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyRX      s    c         C   s>   |  j  d  k	 r |  j  S|  j d  k	 r7 |  j   |  _  n  |  j  S(   N(   R@   R>   RA   (   R   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   _getPkgSack   s
    t   fgetc         C   s
   |  j    S(   N(   R\   (   R   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   <lambda>   s    t   fsetc         C   s   t  |  d |  S(   NR@   (   t   setattr(   R   t   value(    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyR^      s    t   fdelc         C   s   t  |  d d   S(   NR@   (   R`   R>   (   R   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyR^      s    t   docs   Package sack objectc         C   s   |  j  r | GHn  d  S(   N(   R6   (   R   t   msg(    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt
   debugprint   s    	c            s   t    f d   |  j |   S(   Nc            s   |  j    k S(   N(   t   output_state(   t   p(   t   output_states(    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyR^      s    (   t   filterRZ   (   R   t   pkgtupRh   (    (   Rh   s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   getMembersWithState   s    c         C   sf   g  } | d k r< xM |  j j   D] } | j |  q" Wn& | |  j k rb | j |  j |  n  | S(   s   takes an optional package tuple and returns all transaction members 
           matching, no pkgtup means it returns all transaction membersN(   R>   R2   t
   itervaluest   extend(   R   Rj   t
   returnlistt   members(    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyRZ      s    c         C   s   t  t |  j   S(   N(   t   listt   sortedR5   (   R   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   getUnresolvedMembers   s    c         C   s   |  j  j |  d  S(   N(   R5   t   discard(   R   t   txmbr(    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   markAsResolved   s    c         C   sL   | s! t  |   t  |  j  k  rH |  j j   |  j j |  j    t St S(   N(   RV   R5   t   cleart   updateRZ   R   R+   (   R   t   hard(    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   resetResolved   s
    !c   	      C   s   |  j  d | d | d | d | d |  } t |  s: d	 Sg  } x | D] } | j | j  qG Wd | k rq d Sd | k r d S| d Sd	 S(
   sa   returns the mode of the first match from the transaction set, 
           otherwise, returns NoneR(   t   archt   epocht   vert   relt   ut   ii    N(   t
   matchNaevrRV   R>   t   appendt   ts_state(	   R   R(   Rz   R{   R|   R}   t   txmbrst   statesRt   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   getMode   s    *c      
   C   s  | d k r |  j   } nJ |  j j | g   } | d k re | d k re | d k re | d k re | Sg  } x | D] } | j \ }	 }
 } } } | d k	 r | |
 k r qr n  | d k	 r | | k r qr n  | d k	 r | | k r qr n  | d k	 r| | k rqr n  | j |  qr W| S(   s4   returns the list of packages matching the args aboveN(   R>   RZ   R3   t   getRj   R   (   R   R(   Rz   R{   R|   R}   R   t   resultRt   R   t   aR   R   R   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyR      s$    0c   	      C   s|  |  j  |  } | sY | j d d  } t |  d k rY |  j  | d | d  } qY n  | sWg  } |  j d k	 r |  j j d | g  } n  | r |  j d k	 r |  j j d | g  } n  | s |  j j d | g  } n  xs | D]h } | j |  j	 | j
   xF |  j j   D]5 \ } } | | k r| j |  | |  j | <qqWq Wn  x | D] } |  j | j
  q^W| S(   s    Remove these packages from the transaction. This is more user
            orientated than .remove(). Used from kickstart/install -blah. t   .i   i    i   t   patternsN(   R   t   rsplitRV   RD   R>   t   returnPackagest   pkgSackR?   Rm   RZ   Rj   R=   t	   iteritemst   remove(	   R   t   patternR   t   nat   pkgst   pkgt   reqt   cpkgsRt   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   deselect   s,     c         C   s&   | j  d k o% t | j t t f  S(   NR~   R   (   R~   R   (   R   t
   isinstancet   poR   R   (   R   t   txmember(    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   _isLocalPackage  s    c            s?   | j    j k r t S| j } t   f d   |  r; t St S(   s   takes a packageObject, returns 1 or 0 depending on if the package 
           should/can be installed multiple times with different vers
           like kernels and kernel modules, for examplec            s   |    j  k S(   N(   R8   (   t   prov(   R   (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyR^     s    (   R(   R8   R   t   provides_namesRi   R+   (   R   R   R   (    (   R   s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   _allowedMultipleInstalls  s    	c         C   s  x$ | j  D] } |  j | | j  q
 W| j |  j k rL g  |  j | j <nR |  j d | j  x; |  j | j D]) } | j | j k rq |  j d  d Sqq W|  j | j j |  |  j j	 | j
 g   j |  |  j   |  j |  r|  j j | j  n$ t | j t  r'|  j d 7_ n  |  j d k	 rv| j t k rv| j j   s`d |  _ qv|  j j | j  n  | j
 |  j k rxf |  j | j
 D]Q } |  j j d |  rqn  x- |  j d |  D] } | j d | j  qWqWn  |  j j |  d S(   s    add a package to the transactions'   Package: %s.%s - %s:%s-%s already in tss   Package in same mode, skipping.Ni   R   (   t   updatest
   addUpdatedR   Rj   R2   Re   R   R   R3   t
   setdefaultR(   RU   R   RC   t
   addPackageR   R   RB   RD   R>   Rf   t   TS_INSTALL_STATESt   have_fastReturnFileEntriesR=   R?   t   containst   install_methodt   setAsDepR5   t   add(   R   R   t   oldpot   memberR   t	   condtxmbr(    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyR     s6    
c         C   s)  | |  j  k r' |  j d | f  d Sx |  j  | D] } d | j _ |  j |  rl |  j j | j  n$ t | j t	  r |  j
 d 8_
 n  |  j d k	 r | j t k r |  j j | j  n  |  j | j j |  |  j j |  q5 W|  j  | =|  j | d s|  j | d =n  |  j   d S(   s%   remove a package from the transactions   Package: %s not in tsNi   i    (   R2   Re   R>   R   t   stateR   RC   t
   delPackageR   R   RB   RD   Rf   R   R3   R(   R   R5   R   RU   (   R   Rj   Rt   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyR   C  s"    
c         C   s3   | |  j  k r/ t |  j  |  d k r/ d Sn  d S(   s    tells if the pkg is in the classi    i   (   R2   RV   (   R   Rj   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   existsX  s    c         C   sF   |  j  |  rB x0 |  j d |  D] } | j t k r" t Sq" Wn  t S(   s,   true if the pkgtup is marked to be obsoletedRj   (   R   RZ   Rf   t   TS_OBSOLETEDR   R+   (   R   Rj   Rt   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   isObsoleted`  s
    c         C   s  g  |  _  g  |  _ g  |  _ g  |  _ g  |  _ g  |  _ g  |  _ g  |  _ g  |  _ g  |  _	 g  |  _
 g  |  _ g  |  _ g  |  _ x|  j   D]} | j t k r | j r |  j
 j |  q|  j j |  q | j t t f k r| r	| j r	|  j j |  q n  | r.| j r.|  j j |  q n  | j rpx6 | j D]( } | |  j  k rA|  j  j |  qAqAWn  | j rx6 | j D]( } | |  j k r|  j j |  qqWn  | j r| j d k r|  j	 j |  q|  j j |  q | j t k r| r| j rq n  x3 | j D]( } | |  j  k r|  j j |  qqWx3 | j D]( } | |  j k rT|  j j |  qTqTW| j r|  j j |  q|  j j |  q | j t k r|  j j |  q | j t k r|  j j |  q | j t k r |  j j |  q q W|  j j   |  j j   |  j j   |  j j   |  j
 j   |  j	 j   |  j j   |  j  j   |  j j   |  j j   |  j j   |  j j   |  j j   |  j j   d S(   s   returns lists of transaction Member objects based on mode:
           updated, installed, erased, obsoleted, depupdated, depinstalled
           deperasedt   userN(    RE   RF   RG   RH   RI   RJ   RK   RL   RM   RN   RO   RP   RQ   RR   RZ   Rf   t	   TS_UPDATEt   isDepR   t
   TS_INSTALLt   TS_TRUEINSTALLt	   reinstallt
   downgradest   groupst   environmentst   reasont   TS_ERASEt   downgraded_byR   t   TS_OBSOLETINGt	   TS_FAILEDt   sort(   R   t   include_reinstallt   include_downgradeRt   t   gt   evg(    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt	   makelistsi  s    																		c         C   s   |  j  |  r |  j |  St |  } t | _ t | _ t | j _ d | _	 |  j
 j d | j  rs t | _ n  |  j |  |  j |  | S(   s   adds a package as an install but in mode 'u' to the ts
           takes a packages object and returns a TransactionMember ObjectR~   R   (   R   t   addTrueInstallt   TransactionMembert   TS_AVAILABLEt   current_stateR   Rf   R   R   R   R?   R   R   R   t   findObsoletedByThisMemberR   (   R   R   Rt   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt
   addInstall  s    			c         C   sh   t  |  } t | _ t | _ t | j _ d | _ |  j	 j
 d | j  rW t | _ n  |  j |  | S(   sf   adds a package as an install
           takes a packages object and returns a TransactionMember ObjectR   R   (   R   R   R   R   Rf   R   R   R   R   R?   R   R   R   R   (   R   R   Rt   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyR     s    			c         C   sD   t  |  } t | _ t | _ t | j _ d | _ |  j |  | S(   sf   adds a package as an erasure
           takes a packages object and returns a TransactionMember ObjectR   (	   R   R   R   R   Rf   R   R   R   R   (   R   R   Rt   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   addErase  s    			c         C   s   |  j  |  r |  j |  St |  } t | _ t | _ t | j _ d | _	 | r~ | j
 j | d f  | j j |  n  |  j |  |  j |  | S(   se   adds a package as an update
           takes a packages object and returns a TransactionMember ObjectR~   R   (   R   R   R   R   R   R   Rf   R   R   R   t	   relatedtoR   R   R   R   (   R   R   R   Rt   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt	   addUpdate  s    			c         C   s   |  j  |  } | j j | d f  | j j |  |  j |  } | s^ |  j | j  d Sd | j k r | j j	 | _	 n  | j j | d f  | j
 j |  | | f S(   sq   adds a package as an downgrade takes a packages object and returns
           a pair of TransactionMember Objectst   downgradedbyR   R   N(   R   R   R   R   R   R   Rj   R>   t
   yumdb_infoR   R   (   R   R   R   t   itxmbrt   atxmbr(    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   addDowngrade
  s    c         C   s   t  |  } t | _ t | _ t | j _ d | _ | j j	 | d f  | j
 j	 |  d | j k rz | j j | _ n  |  j |  | S(   sx   adds a package as being updated by another pkg
           takes a packages object and returns a TransactionMember Objectt   udt	   updatedbyR   (   R   R   R   t
   TS_UPDATEDRf   R   R   R   R   R   t
   updated_byR   R   R   (   R   R   t   updating_poRt   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyR     s    			c         C   s   t  |  } t | _ t | _ t | j _ d | _ | j j	 | d f  | j
 j	 |  |  j j d | j  r} t | _ n  |  j |  | S(   sx   adds a package as an obsolete over another pkg
           takes a packages object and returns a TransactionMember ObjectR~   t	   obsoletesR   (   R   R   R   R   Rf   R   R   R   R   R   R   R?   R   R   R   R   (   R   R   R   Rt   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   addObsoleting1  s    			c         C   s   t  |  } t | _ t | _ t | j _ d | _ | j j	 | d f  | j
 j	 |  d | j k rz | j j | _ n  |  j |  x[ |  j | j t g  D]A } | | j k r q n  | j j	 | d f  | j j	 |  q W| S(   sz   adds a package as being obsoleted by another pkg
           takes a packages object and returns a TransactionMember Objectt   odt   obsoletedbyR   R   (   R   R   R   R   Rf   R   R   R   R   R   t   obsoleted_byR   R   R   Rk   Rj   R   R   (   R   R   t   obsoleting_poRt   t   otxmbr(    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   addObsoletedC  s"    			c         C   s   | |  _  | |  _ | |  _ d  S(   N(   R?   R@   RA   (   R   R?   R   t   pkgSackCtor(    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   setDatabases\  s    		c         C   s   i  } |  j  s n |  j d k ru x |  j j | | |  j   D]. \ } } |  j | j t  r@ | | | <q@ q@ Wn9 x6 |  j j | | |  j   D] \ } } | | | <q W| j	 |  j
 j | | |   | S(   sb   return dict { packages -> list of matching provides }
        searches in packages to be installedN(   RB   RD   R>   R   t   getProvidesR   Rk   Rj   R   Rw   RC   (   R   R(   t   flagt   versionR   R   t   hits(    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   getNewProvidesa  s    	++c         C   s[   i  } xN |  j  j | | |  j   D]. \ } } |  j | j t  s% | | | <q% q% W| S(   s   return dict { packages -> list of matching provides }
        searches in packages already installed and not going to be removed(   R?   R   R   Rk   Rj   t   TS_REMOVE_STATES(   R   R(   R   R   R   R   R   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   getOldProvidesq  s
    +c         C   s5   |  j  | | |  } | j |  j | | |   | S(   s5   return dict { packages -> list of matching provides }(   R   Rw   R   (   R   R(   R   R   R   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyR   z  s    c         C   s   i  } |  j  s n |  j d k ru x |  j j | | |  j   D]. \ } } |  j | j t  r@ | | | <q@ q@ Wn9 x6 |  j j | | |  j   D] \ } } | | | <q W| j	 |  j
 j | | |   | S(   sb   return dict { packages -> list of matching provides }
        searches in packages to be installedN(   RB   RD   R>   R   t   getRequiresR   Rk   Rj   R   Rw   RC   (   R   R(   R   R   R   R   R   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   getNewRequires  s    	++c         C   s[   i  } xN |  j  j | | |  j   D]. \ } } |  j | j t  s% | | | <q% q% W| S(   s   return dict { packages -> list of matching provides }
        searches in packages already installed and not going to be removed(   R?   R   R   Rk   Rj   R   (   R   R(   R   R   R   R   R   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   getOldRequires  s
    +c         C   s5   |  j  | | |  } | j |  j | | |   | S(   s5   return dict { packages -> list of matching provides }(   R   Rw   R   (   R   R(   R   R   R   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyR     s    c         C   s  |  j  d k	 r4 |  j  \ } } | |  j k r4 | Sn  |  j j   } i  } xI |  j d t  D]5 } | j r | j | | j j	 <n  | j
 | j  q\ W|  j j   t   } g  } x t |  D] } | j d k r| j   }	 | j | |	  | j
 | j	 |	 f  q n  |  j | j	 t  r&q n  | j	 | k r;q n  | j }
 d }	 d |
 k rwd |
 k rw|
 j |
 j f }	 n  | j
 | j	 |	 f  | j | |	  q W|  j j |  |  j | f |  _  | S(   s    Return a simple version for the future rpmdb. Works like
            rpmdb.simpleVersion(main_only=True)[0], but for the state the rpmdb
            will be in after the transaction. RJ   t   checksum_typet   checksum_dataN(   RS   R>   R9   R?   R   Rk   R   R   R   Rj   R   t   preloadPackageChecksumsR   Rq   R!   t   returnIdSumRw   R   R   R   R   t    transactionCachePackageChecksums(   R   t   sct   retR   t   _reinstalled_pkgtupsRt   t   maint   pkg_checksum_tupsR   t   csumt   ydbi(    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   futureRpmDBVersion  s@    			c         C   s{   xt | j  j D]f } x] |  j j d |  D]F } | j | j  g  r) |  j | | j   t | _ t | j  _ q) q) Wq Wd S(   s>   addObsoleted() pkgs for anything that this txmbr will obsoleteR(   N(	   R   t   obsoletes_namesR?   t   searchNevrat   obsoletedByR   R   Rf   R   (   R   Rt   t   obs_nR   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyR     s    	N(   NNN(   NNN(   NNN(   NNN(   NNN(   NNN(-   R)   R*   t   __doc__R   RU   RW   RX   R\   t   propertyR   Re   R>   Rk   RZ   Rr   Ru   R+   Ry   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   (    (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyR,   K   sV   	*											$	
		&				\										4t   ConditionalTransactionDatac           B   s   e  Z d  Z d   Z RS(   s<   A transaction data implementing conditional package additionc         C   s$   t  j d t j  t j |   d  S(   NsC   ConditionalTransactionData will go away in a future version of Yum.(   t   warningst   warnt   Errorst   YumFutureDeprecationWarningR,   R   (   R   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyR     s    	
(   R)   R*   R   R   (    (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyR     s   t   SortableTransactionDatac           B   sD   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   s@   A transaction data implementing topological sort on it's membersc         C   s,   g  |  _  g  |  _ g  |  _ t j |   d  S(   N(   t   _sortedt   patht   loopsR,   R   (   R   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyR     s    			c         C   s   |  j  j | j  t | _ xk | j D]` } |  j d | j  d } | j t k rg |  j | j  n  | j t	 k r& |  j
 |  q& q& Wt | _ |  j j d | j  d  S(   NRj   i    (   R  R   R(   t   TX_GREYt
   sortColourt
   depends_onRZ   Rj   t   _doLoopt   TX_WHITEt   _visitt   TX_BLACKR  t   insert(   R   Rt   R   t   vertex(    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyR    s    		c         C   sY   |  j  j |  |  j  |  j  j |  j  d  } t |  d k rU |  j j |  n  d  S(   Nii   (   R  R   t   indexRV   R  (   R   R(   t   loop(    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyR
    s     c         C   s&   t  | _ t j |  |  g  |  _ d  S(   N(   R  R  R,   R   R  (   R   R   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyR     s    	c         C   s   t  j |  |  g  |  _ d  S(   N(   R,   R   R  (   R   Rj   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyR   	  s    c         C   sl   |  j  r |  j  Sg  |  _  x< |  j   D]. } | j t k r& g  |  _ |  j |  q& q& W|  j  j   |  j  S(   N(   R  RZ   R  R  R  R  t   reverse(   R   Rt   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyR     s    			(	   R)   R*   R   R   R  R
  R   R   R   (    (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyR    s   						R   c           B   s\   e  Z d  Z d   Z d	 e d  Z d   Z d   Z d   Z	 d   Z
 d   Z d   Z RS(
   sV   Class to describe a Transaction Member (a pkg to be installed/
       updated/erased).c         C   sE  | |  _  d  |  _ d  |  _ d  |  _ d |  _ d |  _ d  |  _ g  |  _ g  |  _	 g  |  _
 g  |  _ g  |  _ g  |  _ g  |  _ g  |  _ t |  _ g  |  _ g  |  _ d  |  _ d d d d d d d	 g |  _ x3 |  j D]( } t |  j  |  } t |  | |  q W| j d
 k rA| j j d  | j j d  | j j d  n  d  S(   Ni    R   Rj   R!   R(   Rz   R{   R   t   releaseRJ   t	   from_repot
   releasevert
   changed_by(   R   R>   R   R   Rf   R   R   t   processR   R	  R   R   R   R   R   R   R+   R   R   R   t   repopkgt   _poattrt   getattrR`   R!   R   R   (   R   R   t   attrt   val(    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyR     s8    																			c         C   sE   | s d |  _  n  | rA |  j j | d f  |  j j |  n  d S(   sl   sets the transaction member as a dependency and maps the dep into the
           relationship list attributei   t	   dependsonN(   R   R   R   R	  (   R   R   t   relonly(    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyR   B  s
    c         C   s   g  } x4 |  j  D]) } | d | k r, q n  | j |  q W| |  _  g  } x0 |  j D]% } | | k rn qV n  | j |  qV W| |  _ d S(   sl   sets the transaction member as a dependency and maps the dep into the
           relationship list attributei    N(   R   R   R	  (   R   R   t   nreltot   datat   ndepon(    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt	   removeDepL  s    	c         C   s   t  |  j | j  S(   N(   t   cmpR   (   R   t   other(    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   __cmp__^  s    c         C   s   t  j |   S(   N(   t   objectt   __hash__(   R   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyR'  a  s    c         C   s,   d |  j  |  j |  j |  j |  j |  j f S(   Ns   %s.%s %s:%s-%s - %s(   R(   Rz   R{   R   R  R   (   R   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   __str__d  s    c         C   s)   d |  j  j t |   t t |    f S(   Ns   <%s : %s (%s)>(   t	   __class__R)   t   strt   hext   id(   R   (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   __repr__h  s    c      
   C   sN  d |  j  |  j |  j |  j |  j |  j f d |  j j j d |  j	 d |  j
 d t |  j  d |  j d t |  j  g } |  j r| d g 7} xj |  j D]_ \ } } d	 } t | t  r d
 } n  | d | j  | j | j | j | j | | f g 7} q W| d g 7} n  x d d d d d d d g D] } t |  |  } | r.| d | g 7} x^ | D]V } d	 } t | t  rd
 } n  | d | j  | j | j | j | j | f g 7} qaW| d g 7} q.q.W|  j r| d d j |  j  g 7} n  |  j r!| d d j |  j  g 7} n  |  j rA| d |  j g 7} n  d j |  S(   Ns   mbr: %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:R   R   s    %s,%s,%s,%s,%s@%s:%ss   
R	  R   R   R   R   R   R   s     %s:s    %s,%s,%s,%s,%s@%ss     groups: %s
t    s     environments: %s
s     repopkg: %s
t    (   R(   Rz   R{   R   R  R   R   t   repoR,  R   Rf   t   boolR   R   R   R   R   R   R  R   t   joinR   R  (   R   Rd   R   R}   t	   pkgorigint   lstt   thislist(    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   _dumpk  sN    



				 	 	N(   R)   R*   R   R   R>   R+   R   R"  R%  R'  R(  R-  R6  (    (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyR     s   	$
					(   R   t	   constantst   packageSackR   R   t   packagesR   t
   sqlitesackR   R  R   R#   R:   R   R,   R   R  R   (    (    (    s7   /usr/lib/python2.7/site-packages/yum/transactioninfo.pyt   <module>   s   
$  3