ó
N_c           @   sü   d  d l  Z  y d  d l m Z Wn e k
 r? d  d l Z n Xe j Z d  d l m Z d  d l Z d  d l Z d d d „  ƒ  YZ	 d d d „  ƒ  YZ
 d e
 f d	 „  ƒ  YZ d
 e
 f d „  ƒ  YZ d e
 f d „  ƒ  YZ d „  Z e d k rø e ƒ  n  d S(   iÿÿÿÿN(   t   cElementTree(   t   StringIOt   MDParserc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   sü   i t  d 6t d 6t d 6} d  |  _ d |  _ d  |  _ | d d k r[ t j | d ƒ } n t | d ƒ } t	 | d d ƒ} | j
 ƒ  |  _ |  j j ƒ  \ } } | j | j d  ƒ |  _ |  j sÝ t d | j | f ƒ ‚ n  t | j d d ƒ ƒ |  _ d  S(   Ns/   {http://linux.duke.edu/metadata/common}metadatas3   {http://linux.duke.edu/metadata/filelists}filelistss/   {http://linux.duke.edu/metadata/other}otherdatai    iýÿÿÿs   .gzt   rt   eventst   startt   ends    Unknown repodata type "%s" in %st   packages(   s   starts   end(   t   PrimaryEntryt   FilelistsEntryt
   OtherEntryt   Nonet   totalt   countt   _handlerclst   gzipt   opent	   iterparset   __iter__t   readert   nextt   gett   tagt
   ValueErrort   int(   t   selft   filenamet   handlerst   fht   parsert   eventt   elem(    (    s0   /usr/lib/python2.7/site-packages/yum/mdparser.pyt   __init__"   s$    
			 	c         C   s   |  S(   N(    (   R   (    (    s0   /usr/lib/python2.7/site-packages/yum/mdparser.pyR   =   s    c         C   s_   xR |  j  D]G \ } } | d k r
 | j d d k r
 |  j d 7_ |  j | ƒ Sq
 Wt ‚ d  S(   NR   iùÿÿÿt   packagei   (   R   R   R   R   t   StopIteration(   R   R   R   (    (    s0   /usr/lib/python2.7/site-packages/yum/mdparser.pyR   @   s
    (   t   __name__t
   __module__R    R   R   (    (    (    s0   /usr/lib/python2.7/site-packages/yum/mdparser.pyR       s   		t	   BaseEntryc           B   sY   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(	   c         C   s   i  |  _  d  S(   N(   t   _p(   R   R   (    (    s0   /usr/lib/python2.7/site-packages/yum/mdparser.pyR    I   s    c         C   s   |  j  | S(   N(   R&   (   R   t   k(    (    s0   /usr/lib/python2.7/site-packages/yum/mdparser.pyt   __getitem__L   s    c         C   s   |  j  j ƒ  S(   N(   R&   t   keys(   R   (    (    s0   /usr/lib/python2.7/site-packages/yum/mdparser.pyR)   O   s    c         C   s   |  j  j ƒ  S(   N(   R&   t   values(   R   (    (    s0   /usr/lib/python2.7/site-packages/yum/mdparser.pyR*   R   s    c         C   s&   t  j d t j d d ƒ| |  j k S(   Ns3   has_key() will go away in a future version of Yum.
t
   stackleveli   (   t   warningst   warnt   Errorst   YumFutureDeprecationWarningR&   (   R   R'   (    (    s0   /usr/lib/python2.7/site-packages/yum/mdparser.pyt   has_keyU   s    	c         C   s   t  |  j ƒ S(   N(   t   iterR&   (   R   (    (    s0   /usr/lib/python2.7/site-packages/yum/mdparser.pyR   Z   s    c         C   sd   t  ƒ  } |  j ƒ  } | j ƒ  x8 | D]0 } d | |  | f } | j | j d ƒ ƒ q& W| j ƒ  S(   Nu   %s=%s
t   utf8(   R   R)   t   sortt   writet   encodet   getvalue(   R   t   outR)   R'   t   line(    (    s0   /usr/lib/python2.7/site-packages/yum/mdparser.pyt   __str__]   s    	
c         C   s*   | j  d ƒ d k r | S| j d ƒ d S(   Nt   }iÿÿÿÿi   (   t   findt   split(   R   t   qn(    (    s0   /usr/lib/python2.7/site-packages/yum/mdparser.pyt   _bnf   s     c         C   s@   i  } x3 | j  D]( } | j  | | | d |  j | ƒ <q W| S(   Nt   _(   t   attribR>   (   R   R   t   prefixt   rett   key(    (    s0   /usr/lib/python2.7/site-packages/yum/mdparser.pyt   _prefixpropsj   s    &(   R#   R$   R    R(   R)   R*   R0   R   R9   R>   RD   (    (    (    s0   /usr/lib/python2.7/site-packages/yum/mdparser.pyR%   H   s   									R   c           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   sG  t  j |  | ƒ |  j } i  |  _ i  |  _ xý | D]õ } |  j | j ƒ } | d k rf | j | | <q2 | d k r… | j | j	 ƒ q2 | d k r­ | j |  j
 | | ƒ ƒ q2 | d k r| j |  j
 | | ƒ ƒ | j | | d <| d k r'd | k r'd  | d <q'q2 | d k r2 |  j | ƒ q2 q2 W| d | d <| j ƒ  d  S(   Nt   namet   archt   summaryt   descriptiont   urlt   packagert   versiont   timet   sizet   checksumt   locationt   _valuet   location_baset   formatt   checksum_valuet   pkgId(   s   nameRF   RG   RH   RI   RJ   (   RL   s   size(   RN   RO   (   R%   R    R&   t   prcot   filesR>   R   t   textt   updateR@   RD   R   t	   setFormatt   clear(   R   R   t   pt   childRE   (    (    s0   /usr/lib/python2.7/site-packages/yum/mdparser.pyR    q   s,    				c         C   sÐ   |  j  } xÀ | D]¸ } |  j | j ƒ } | d k rD | j | | <q | d k ri |  j | ƒ |  j | <q | d
 k r‘ | j |  j | d ƒ ƒ q | d k r | j d d ƒ } | j } | |  j	 | <q q Wd  S(   Nt   licenset   vendort   groupt	   buildhostt	   sourcerpmt   providest   requirest	   conflictst	   obsoletess   header-ranget
   rpm_headert   filet   type(   s   licenseR^   s   groupR`   Ra   (   Rb   Rc   Rd   Re   (
   R&   R>   R   RW   t   getPrcoRU   RX   RD   R   RV   (   R   R   R[   R\   RE   t	   file_typet   path(    (    s0   /usr/lib/python2.7/site-packages/yum/mdparser.pyRY   ‘   s    				c         C   s+   g  } x | D] } | j  | j ƒ q W| S(   N(   t   appendR@   (   R   R   t   membersR\   (    (    s0   /usr/lib/python2.7/site-packages/yum/mdparser.pyRi   ©   s    (   R#   R$   R    RY   Ri   (    (    (    s0   /usr/lib/python2.7/site-packages/yum/mdparser.pyR   p   s   	 	R	   c           B   s   e  Z d  „  Z RS(   c         C   s•   t  j |  | ƒ | j d |  j d <i  |  _ xW | D]O } |  j | j ƒ } | d k r4 | j d d ƒ } | j } | |  j | <q4 q4 W| j	 ƒ  d  S(   Nt   pkgidRT   Rg   Rh   (
   R%   R    R@   R&   RV   R>   R   R   RW   RZ   (   R   R   R\   RE   Rj   Rk   (    (    s0   /usr/lib/python2.7/site-packages/yum/mdparser.pyR    ±   s    		(   R#   R$   R    (    (    (    s0   /usr/lib/python2.7/site-packages/yum/mdparser.pyR	   °   s   R
   c           B   s   e  Z d  „  Z RS(   c         C   s›   t  j |  | ƒ | j d |  j d <g  |  j d <xY | D]Q } |  j | j ƒ } | d k r8 | j } | j | d <|  j d j | ƒ q8 q8 W| j ƒ  d  S(   NRn   RT   t	   changelogt   value(	   R%   R    R@   R&   R>   R   RW   Rl   RZ   (   R   R   R\   RE   t   entry(    (    s0   /usr/lib/python2.7/site-packages/yum/mdparser.pyR    ¾   s    	(   R#   R$   R    (    (    (    s0   /usr/lib/python2.7/site-packages/yum/mdparser.pyR
   ½   s   c          C   sW   d d  l  }  t |  j d ƒ } x | D] } d d GH| GHq& Wd | j | j f GHd  S(   Niÿÿÿÿi   t   -i(   s    read: %s packages (%s suggested)(   t   sysR   t   argvR   R   (   Rs   R   t   pkg(    (    s0   /usr/lib/python2.7/site-packages/yum/mdparser.pyt   testÌ   s    		t   __main__(    (    (   R   t	   xml.etreeR    t   ImportErrorR   t	   cStringIOR   R,   R.   R   R%   R   R	   R
   Rv   R#   (    (    (    s0   /usr/lib/python2.7/site-packages/yum/mdparser.pyt   <module>   s    	((@	