;ò
>5¡@c           @   sb   d  k  Z  d f  d „  ƒ  YZ d e f d „  ƒ  YZ d f  d „  ƒ  YZ d e e f d „  ƒ  YZ d  S(	   Ns   PackageObjectc           B   sV   t  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(	   sZ   Base Package Object - sets up the default storage dicts and the
       most common returnsc         C   s   h  |  _ g  |  _ d  S(   N(   s   selfs   simples	   checksums(   s   self(    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys   __init__   s    	c         C   s   |  i ƒ  Sd  S(   N(   s   selfs   returnNevraPrintable(   s   self(    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys   __str__!   s    c         C   s   |  i | Sd  S(   N(   s   selfs   simples   varname(   s   selfs   varname(    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys   returnSimple$   s    c         C   s   |  i i ƒ  Sd  S(   N(   s   selfs   simples   keys(   s   self(    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys   simpleItems'   s    c         C   s   |  i d ƒ Sd  S(   Ns   id(   s   selfs   returnSimple(   s   self(    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys   returnID*   s    c         C   sD   |  i d ƒ |  i d ƒ |  i d ƒ |  i d ƒ |  i d ƒ f Sd  S(   Ns   names   epochs   versions   releases   arch(   s   selfs   returnSimple(   s   self(    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys   returnNevraTuple-   s    c         C   s¢   |  i d ƒ d j o> d |  i d ƒ |  i d ƒ |  i d ƒ |  i d ƒ f } nG d |  i d ƒ |  i d ƒ |  i d ƒ |  i d ƒ |  i d ƒ f } | Sd	 S(
   sS   return printable string for the pkgname/object
           name - epoch:ver-rel.archs   epochs   0s   %s - %s-%s.%ss   names   versions   releases   archs   %s - %s:%s-%s.%sN(   s   selfs   returnSimples   string(   s   selfs   string(    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys   returnNevraPrintable2   s
     >Fc         C   s0   |  i d ƒ |  i d ƒ |  i d ƒ f Sd Sd S(   s"   returns a tuple of epoch, ver, rels   epochs   versions   releaseN(   s   selfs   returnSimple(   s   self(    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys	   returnEVRB   s     ((   s   __name__s
   __module__s   __doc__s   __init__s   __str__s   returnSimples   simpleItemss   returnIDs   returnNevraTuples   returnNevraPrintables	   returnEVR(    (    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys   PackageObject   s    							s   XMLPackageObjectc           B   sV   t  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(	   sn   inherits from PackageObject, does the functions to parse an xml package format
       file to pull packages inc         C   s   t  i |  ƒ d  S(   N(   s   PackageObjects   __init__s   self(   s   self(    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys   __init__N   s    c         C   s>   | i d ƒ } | i d ƒ } | i d ƒ } | | | f Sd S(   s=   takes a version element, returns a tuple of (epoch, ver, rel)s   epochs   vers   relN(   s   nodes   GetAttributes   epochs   vers   rel(   s   selfs   nodes   vers   epochs   rel(    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys   parseVersionQ   s
     c         C   s—   | i d ƒ } | i d ƒ } | t j p | i ƒ  d j o
 d } n) | i ƒ  d j o
 d } n d GHd } | i ƒ  | i ƒ  } | | | f Sd S(	   s‚   takes a checksum element, returns a tuple of (type, checksum, 
           if it is the checksum to be used for the the package id)s   types   pkgids   NOi    s   YESi   s    broken csumid - invalid documentN(	   s   nodes   GetAttributes   csumtypes   csumids   Nones   uppers   Reads   Values   csum(   s   selfs   nodes   csumids   csums   csumtype(    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys   parseChecksumX   s      


c         C   s>   | i d ƒ } | i d ƒ } | i d ƒ } | | | f Sd S(   sN   takes a size element, returns  package, 
           installed and archive sizes   packages	   installeds   archiveN(   s   nodes   GetAttributes   pkgs	   installeds   archive(   s   selfs   nodes   pkgs   archives	   installed(    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys	   parseSizej   s
     c         C   s,   | i d ƒ } | i d ƒ } | | f Sd S(   s8   takes a time element, returns buildtime, filetime(mtime)s   builds   fileN(   s   nodes   GetAttributes   builds   mtime(   s   selfs   nodes   builds   mtime(    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys	   parseTimes   s     c         C   s,   | i d ƒ } | i d ƒ } | | f Sd S(   sH   takes a location element, returnsbase url path, relative path to packages   bases   hrefN(   s   nodes   GetAttributes   bases   relative(   s   selfs   nodes   relatives   base(    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys   parseLocationz   s     c         C   s   | i ƒ  | i ƒ  Sd S(   s?   takes a simple unattributed CDATA element and returns its valueN(   s   nodes   Reads   Value(   s   selfs   node(    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys   parseSimple   s     
c      	   C   s  | i ƒ  } | i ƒ  } xp| oh| i ƒ  d j o | i ƒ  } q n | i ƒ  d j o | i ƒ  | j o d Sn | i ƒ  d j oî| i ƒ  | j o d Sn | i ƒ  } | d d d d d	 d
 d d g j o |  i	 | ƒ |  i
 | <qw| d j o1 |  i | ƒ \ |  i
 d <|  i
 d <|  i
 d <qw| d j o1 |  i | ƒ \ |  i
 d <|  i
 d <|  i
 d <qw| d j o' |  i | ƒ \ |  i
 d <|  i
 d <qw| d j o' |  i | ƒ \ |  i
 d <|  i
 d <qw| d j oM |  i | ƒ \ } } } |  i i | | | f ƒ | o | |  i
 d <qsqw| d j o0 y |  i | ƒ Wqst j
 o d GHqsXqwd | GHn | i ƒ  } q q Wd S(   s(   primary package node reading and dumpingi   i   Ni   s   names   archs   summarys   descriptions   urls   packagers	   buildtimes   filetimes   versions   epochs   releases   sizes   packagesizes   installedsizes   archivesizes   times   locations   basepaths   relativepaths   checksums   ids   formats"   No method to handle format elements   unknown element in package: %s(   s   readers   Depths   mydepths   Reads   rets   NodeTypes	   LocalNames   nodeNames   selfs   parseSimples   simples   parseVersions	   parseSizes	   parseTimes   parseLocations   parseChecksums   sumtypes   sumdatas   sumids	   checksumss   appends   readFormatNodes   AttributeError(   s   selfs   readers   sumdatas   nodeNames   sumtypes   sumids   rets   mydepth(    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys   readPkgNode†   sL      &%11'' (   s   __name__s
   __module__s   __doc__s   __init__s   parseVersions   parseChecksums	   parseSizes	   parseTimes   parseLocations   parseSimples   readPkgNode(    (    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys   XMLPackageObjectJ   s    								s   RpmBasec           B   sG   t  Z d  Z d „  Z d „  Z d „  Z d „  Z d d „ Z d „  Z RS(   s2   return functions and storage for rpm-specific datac         C   sƒ   h  |  _ g  |  i d <g  |  i d <g  |  i d <g  |  i d <h  |  _ g  |  i d <g  |  i d <g  |  i d <g  |  _ g  |  _ d  S(   Ns	   obsoletess	   conflictss   requiress   providess   files   dirs   ghost(   s   selfs   prcos   filess	   changelogs   licenses(   s   self(    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys   __init__È   s    			c         C   s*   |  i i | ƒ o |  i | Sn g  Sd S(   s9   return list of provides, requires, conflicts or obsoletesN(   s   selfs   prcos   has_keys   prcotype(   s   selfs   prcotype(    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys
   returnPrcoÕ   s     c         C   sÉ   |  i i | ƒ o d Sn | |  i | j o d SnŠ | \ } } \ }
 } } | t
 j	 o# |  i | | ƒ o d SqÁ d SnB x> |  i | ƒ D]- \ } } \ } }	 } | | j o d Sq q Wd Sd S(   sB   returns 1 or 0 if the pkg contains the requested tuple/tuple rangei    i   N(   s   selfs   prcos   has_keys   prcotypes	   prcotuples   reqns   reqfs   reqes   reqvs   reqrs   Nones   inPrcoRanges
   returnPrcos   ns   fs   es   vs   r(   s   selfs   prcotypes	   prcotuples   es   fs   reqrs   ns   reqns   rs   vs   reqes   reqfs   reqv(    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys	   checkPrcoÜ   s      c         C   s{  | \ } } \ } } } xX|  i | ƒ D]G\ } } \ } }
 }	 | | j o"| d j o |  i ƒ  \ } }
 }	 n | t j o
 t }	 n | t j o | t j n | t j o |
 t j n t i | |
 |	 f | | | f ƒ } | d j o | d d g j o d Sqn | d j o" | d d d g j o d Sq?n | d j o | d d g j o d Sqkqoq( q( Wd Sd	 S(
   s˜   returns true if the package has a the prco that satisfies 
           the reqtuple range, assume false.
           Takes: prcotype, requested prco tuples   EQi   s   GTs   GEi    s   LEiÿÿÿÿs   LTN(   s   reqtuples   reqns   reqfs   reqes   reqvs   reqrs   selfs
   returnPrcos   prcotypes   ns   fs   es   vs   rs	   returnEVRs   Nones   mdUtilss
   compareEVRs   rc(   s   selfs   prcotypes   reqtuples   es   fs   rcs   reqrs   ns   reqns   rs   vs   reqes   reqfs   reqv(    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys   inPrcoRangeó   s0      
$s   filec         C   s*   |  i i | ƒ o |  i | Sn g  Sd S(   s"   return list of files based on typeN(   s   selfs   filess   has_keys   ftype(   s   selfs   ftype(    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys   returnFileEntries  s     c         C   s   |  i i ƒ  Sd S(   s,   return list of types of files in the packageN(   s   selfs   filess   keys(   s   self(    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys   returnFileTypes"  s     (	   s   __name__s
   __module__s   __doc__s   __init__s
   returnPrcos	   checkPrcos   inPrcoRanges   returnFileEntriess   returnFileTypes(    (    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys   RpmBaseÅ   s    				(s   RpmXMLPackageObjectc           B   sM   t  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 RS(   s‡   used class - inherits from XMLPackageObject, which inherits from 
       Package Object also inherits from RpmBase for return functionsc         C   s’   t  i |  ƒ t i |  ƒ | |  i d <|  i | ƒ |  i d ƒ |  _	 |  i d ƒ |  _
 |  i d ƒ |  _ |  i d ƒ |  _ |  i d ƒ |  _ d  S(   Ns   repoids   names   epochs   versions   releases   arch(   s   XMLPackageObjects   __init__s   selfs   RpmBases   repoids   simples   readPkgNodes   nodes   returnSimples   names   epochs   versions   releases   arch(   s   selfs   nodes   repoid(    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys   __init__,  s    c   
      C   s.  h  d d <d d <d d <d d <d	 d
 <}	 x, |  i ƒ  D] } d | |  i | ƒ f GHq@ Wx |  i D] } | GHql Wx¬ d d d d g D]˜ } t |  i	 | ƒ d j ox d | GHxc |  i	 | D]T \ } } \ } } } | t j o d | GHqÅ d G| G|	 | Gd | | | f GHqÅ Wd GHqŽ qŽ Wd  S(   Ns   EQs   =s   LTs   <s   LEs   <=s   GTs   >s   GEs   >=s   %s = %ss   requiress   providess	   obsoletess	   conflictsi    s   %s:s   	%s s   	s   %s:%s-%ss    (   s   fconvs   selfs   simpleItemss   items   returnSimples	   checksumss   csums   things   lens   prcos   ns   fs   es   vs   rs   None(
   s   selfs   es   things   fs   ns   items   rs   vs   csums   fconv(    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys   dumpPkg;  s(    3 
 	 	 c         C   sÄ  | i ƒ  } | i ƒ  } x¥| o| i ƒ  d j o | i ƒ  } q n | i ƒ  d j o | i ƒ  | j o d Sn | i ƒ  d j o#| i ƒ  | j o d Sn | i ƒ  } | d d d d g j o |  i	 | ƒ |  i
 | <q¬| d	 j o |  i i |  i	 | ƒ ƒ q¬| d
 j o' |  i | ƒ \ |  i
 d <|  i
 d <q¬| d d d d g j o' |  i | ƒ } |  i | i | ƒ q¬| d j o |  i | ƒ q¬d | GHn | i ƒ  } q q Wd S(   sX   reads the <format> element and hands off the elements to be 
           parsed elsewherei   i   Ni   s   vendors   groups	   buildhosts	   sourcerpms   licenses   header-ranges   hdrstarts   hdrends	   obsoletess   providess   requiress	   conflictss   files   unknown element in format: %s(   s   readers   Depths   mydepths   Reads   rets   NodeTypes	   LocalNames   nodeNames   selfs   parseSimples   simples   licensess   appends   parseHdrRanges	   parsePrcos   objlists   prcos   extends   loadFileEntry(   s   selfs   readers   nodeNames   objlists   rets   mydepth(    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys   readFormatNodeQ  s8      &'c         C   s,   | i d ƒ } | i d ƒ } | | f Sd S(   s.   parse header-range, returns (start, end) tuples   starts   endN(   s   nodes   GetAttributes   starts   end(   s   selfs   nodes   starts   end(    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys   parseHdrRange  s     c         C   s  g  } | i ƒ  }
 | i ƒ  } xX| oP| i ƒ  d j o | i ƒ  } q! n | i ƒ  d j o | i ƒ  |
 j o | Sn | i ƒ  d j oÖ | i ƒ  |
 j o | Sn | i ƒ  } | d j ož t	 } t	 } t	 }	 | i d ƒ } | i d ƒ } | i ƒ  o= | i ƒ  | i ƒ  d j o |  i | ƒ \ } } }	 q>n | i | | | | |	 f f ƒ qen | i ƒ  } q! q! W| Sd S(	   s5   parse a provides,requires,obsoletes,conflicts elementi   i   i   s   entrys   names   flagss   versionN(   s   objlists   readers   Depths   mydepths   Reads   rets   NodeTypes	   LocalNames   prcoNames   Nones   es   vs   rs   GetAttributes   names   flags   IsEmptyElements   Names   selfs   parseVersions   append(   s   selfs   readers   es   names   prcoNames   vs   objlists   rets   flags   rs   mydepth(    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys	   parsePrcoˆ  s:      &
 'c         C   s~   | i d ƒ } | i ƒ  | i ƒ  } | o
 d } n |  i i | ƒ o g  |  i | <n |  i | i	 | ƒ | | f Sd S(   s   load a file/dir entrys   types   fileN(
   s   nodes   GetAttributes   ftypes   Reads   Values   files   selfs   filess   has_keys   append(   s   selfs   nodes   ftypes   file(    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys   loadFileEntry­  s     

c         C   sQ   | i d ƒ } | i d ƒ } | i ƒ  | i ƒ  } |  i i	 | | | f ƒ d S(   s   load changelog datas   dates   authorN(
   s   nodes   GetAttributes   times   authors   Reads   Values   contents   selfs	   changelogs   append(   s   selfs   nodes   contents   authors   time(    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys   loadChangeLogEntry»  s     
(
   s   __name__s
   __module__s   __doc__s   __init__s   dumpPkgs   readFormatNodes   parseHdrRanges	   parsePrcos   loadFileEntrys   loadChangeLogEntry(    (    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys   RpmXMLPackageObject(  s    			0		%	(   s   mdUtilss   PackageObjects   XMLPackageObjects   RpmBases   RpmXMLPackageObject(   s   PackageObjects   mdUtilss   RpmXMLPackageObjects   XMLPackageObjects   RpmBase(    (    s;   /usr/share/rhn/up2date_client/repoBackends/packageObject.pys   ?   s   	1{c