
N_c           @   sG   d  d l  Z  d  d l Z d Z d Z d d d     YZ d d  Z d S(   iNt   TransactionWrapperc           B   s   e  Z d  d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d	   Z
 d
   Z d   Z d   Z d   Z i  d  Z e d  Z RS(   t   /c         C   s^   t  j |  |  _ d d d d d d d d d	 d
 d d d d d g |  _ g  |  _ t |  _ d  S(   Nt   checkt   ordert   addEraset
   addInstallt   runt   pgpImportPubkeyt
   pgpPrtPktst   problemst   setFlagst
   setVSFlagst   setProbFiltert   hdrFromFdnot   nextt   cleant   _verifySigs(   t   rpmt   TransactionSett   tst   _methodst   tsflagst   Truet   open(   t   selft   root(    (    s8   /usr/lib/python2.7/site-packages/rpmUtils/transaction.pyt   __init__   s$    	c         C   s   |  j    d  S(   N(   t   close(   R   (    (    s8   /usr/lib/python2.7/site-packages/rpmUtils/transaction.pyt   __del__+   s    c         C   s/   |  j  r+ |  j j   d  |  _ t |  _  n  d  S(   N(   R   R   t   closeDBt   Nonet   False(   R   (    (    s8   /usr/lib/python2.7/site-packages/rpmUtils/transaction.pyR   /   s    		c         O   sj   d | k r | j  d  } n g  } |  j j | |   } x* | D]" \ } } } | j | | |  q@ W| S(   Nt   patterns(   t   popR   t   dbMatcht   pattern(   R   t   argst   kwdsR    t   mit   tagt   tpt   pat(    (    s8   /usr/lib/python2.7/site-packages/rpmUtils/transaction.pyR"   5   s    c         C   s)   | |  j  k r |  j |  St |  d  S(   N(   R   t	   getMethodt   AttributeError(   R   t   attr(    (    s8   /usr/lib/python2.7/site-packages/rpmUtils/transaction.pyt   __getattr__@   s    c         C   s   |  j  S(   N(   R   (   R   (    (    s8   /usr/lib/python2.7/site-packages/rpmUtils/transaction.pyt   __iter__F   s    c         C   s   t  |  j |  S(   N(   t   getattrR   (   R   t   method(    (    s8   /usr/lib/python2.7/site-packages/rpmUtils/transaction.pyR*   I   s    c         C   s+   |  j  j |  |  j j |  j  d  d  S(   Ni(   R   t   appendR   R   (   R   t   flags(    (    s8   /usr/lib/python2.7/site-packages/rpmUtils/transaction.pyt   pushVSFlagsQ   s    c         C   s%   |  j  d =|  j j |  j  d  d  S(   Ni(   R   R   R   (   R   (    (    s8   /usr/lib/python2.7/site-packages/rpmUtils/transaction.pyt
   popVSFlagsU   s    
c         C   s*   |  j  j d  } |  j  j | | B d  S(   Ni    (   R   R
   (   R   t   flagt   curflags(    (    s8   /usr/lib/python2.7/site-packages/rpmUtils/transaction.pyt	   addTsFlagY   s    c         C   s&   |  j  j d  } |  j  j |  | S(   Ni    (   R   R
   (   R   R6   (    (    s8   /usr/lib/python2.7/site-packages/rpmUtils/transaction.pyt
   getTsFlags]   s    c         C   s   |  j    } t | | @ S(   N(   R8   t   bool(   R   R5   t   val(    (    s8   /usr/lib/python2.7/site-packages/rpmUtils/transaction.pyt   isTsFlagSetb   s    c         C   s   | j    |  j _ d  S(   N(   t   filenoR   t   scriptFd(   R   t   fd(    (    s8   /usr/lib/python2.7/site-packages/rpmUtils/transaction.pyt   setScriptFdf   s    c   
      C   s   |  j    } |  j t j  | j d  d k rN |  j j t j t j B n  |  j j	 | j
 d  } |  j j |  | d k r g  S| s d g Sg  } x* | D]" \ } \ } } }	 | j |  q W| S(   sf   tests the ts we've setup, takes a callback function and a conf dict 
           for flags and what nott   diskspacechecki    t    s,   Unknown error during transaction test in RPMN(   R8   R7   R   t   RPMTRANS_FLAG_TESTt   getR   R   t   RPMPROB_FILTER_DISKSPACEt   RPMPROB_FILTER_DISKNODESR   t   callbackR
   R   R1   (
   R   t   cbt   conft	   origflagst   tserrorst	   reserrorst   descrt   etypet   mountt   need(    (    s8   /usr/lib/python2.7/site-packages/rpmUtils/transaction.pyt   testm   s    c         C   s  i  } g  } |  j    } | d k r( | Sx | D] } | d d k rK q/ n  | t j s^ q/ n  t j |  } xB | t j D]3 } | | k r t   | | <n  | | j |  q{ Wq/ W|  j    } | d k r | Sd   } x | D] } | d d k r q n  d }	 t j |  } xY | |  D]K }
 |
 | k r | |
 } t |  d k sZ| | k rk|	 d }	 Pqkq q W|	 d k r | r| j	 | | j
   f  q| j	 |  q q W| S(   s   returns a list of package tuples (n,a,e,v,r) that are not required by
           any other package on the system
           If headers is True then it will return a list of (header, index) tuples
           t   names
   gpg-pubkeyc         s   s>   x |  t  j D] } | Vq Wx |  t  j D] } | Vq+ Wd S(   s%    Return all the provides, via yield. N(   R   t   RPMTAG_PROVIDESt   RPMTAG_FILENAMES(   t   hdrt   prov(    (    s8   /usr/lib/python2.7/site-packages/rpmUtils/transaction.pyt   _return_all_provides   s    	i    i   N(   R"   R   R   t   RPMTAG_REQUIRENAMEt	   miscutilst   pkgTupleFromHeadert   sett   addt   lenR1   t   instance(   R   t   headerst   reqt   orphanR&   t   ht   tupt   rRV   t   preqt   pt   s(    (    s8   /usr/lib/python2.7/site-packages/rpmUtils/transaction.pyt   returnLeafNodes   sF    	

(   t   __name__t
   __module__R   R   R   R"   R-   R.   R*   R3   R4   R7   R8   R;   R?   RP   R   Rg   (    (    (    s8   /usr/lib/python2.7/site-packages/rpmUtils/transaction.pyR       s   												R   c         C   s*   t  d |   } | j t j t j B | S(   NR   (   R    R3   R   t   _RPMVSF_NOSIGNATURESt   _RPMVSF_NODIGESTS(   R   t   read_ts(    (    s8   /usr/lib/python2.7/site-packages/rpmUtils/transaction.pyt   initReadOnlyTransaction   s    (    (   R   RX   R   Rl   R   R    Rm   (    (    (    s8   /usr/lib/python2.7/site-packages/rpmUtils/transaction.pyt   <module>   s
   