ó
È”Mc           @   sò   d  d l  Z  d  d l Z y d  d l m Z WnI e k
 rw y d  d l m Z Wqx e k
 rs d  d l m Z qx Xn Xd Z d „  Z d d d „  ƒ  YZ	 d d d „  ƒ  YZ
 e d	 k rî d  d l Z e
 j e e j d
 ƒ ƒ j e j ƒ n  d S(   iÿÿÿÿN(   t   ElementTrees   http://www.metalinker.org/c         C   s   d |  | f S(   Ns   {%s}%s(    (   t   nst   tag(    (    s7   /usr/lib/python2.7/dist-packages/smart/util/metalink.pyt   nstag#   s    t   Metafilec           B   s>   e  Z d d d d  „ Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s¾   t  j d ƒ |  _ | r9 t  j |  j d ƒ } | | _ n  | r` t  j |  j d ƒ } | | _ n  | r t  j |  j d ƒ } | j d ƒ | _ n  t  j |  j d ƒ |  _ i  |  _ g  |  _ d  S(   Nt   filet   identityt   versiont   descriptions   utf-8t	   resources(	   R    t   Elementt   _filet
   SubElementt   textt   encodet
   _resourcest   _infot   _urls(   t   selft   nameR   t   summaryt   identityelemt   versionelemt   descelem(    (    s7   /usr/lib/python2.7/dist-packages/smart/util/metalink.pyt   __init__'   s    	c         K   s*  | |  _  d | k rJ | d rJ t j |  j d ƒ } t | d ƒ | _ n  t j |  j d ƒ } d | k r® | d r® t j d ƒ } d | j d <| d | _ | j | ƒ n  d | k rý | d rý t j d ƒ } d | j d <| d | _ | j | ƒ n  d | k rL| d rLt j d ƒ } d | j d <| d | _ | j | ƒ n  | |  _	 xÎ | D]Æ } | j
 d	 ƒ rzd
 } n t j | ƒ d } d  } d  }	 t j j | ƒ }
 t j d ƒ } | | j d <| rÝ| | j d <n  |	 rùt |	 ƒ | j d <n  | | _ |  j j | ƒ |
 |  j j d <q\Wd  S(   Nt   sizet   verificationt   md5t   hasht   typet   shat   sha1t   sha256t   /R   i    t   urlt   locationt
   preferenceR   (   R   R    R   R   t   strR   R
   t   attribt   appendR   t
   startswitht   urllibt	   splittypet   Nonet   ost   patht   basenameR   (   R   t   urlst   infot   sizeelemR   t   hashelemR"   t   schemet   countryt   priorityt   filenamet   urlelem(    (    s7   /usr/lib/python2.7/dist-packages/smart/util/metalink.pyR'   6   sJ    				c         C   s   |  j  S(   N(   R   (   R   (    (    s7   /usr/lib/python2.7/dist-packages/smart/util/metalink.pyt   element`   s    c         C   s   |  j  S(   N(   R   (   R   (    (    s7   /usr/lib/python2.7/dist-packages/smart/util/metalink.pyR0   c   s    c         C   s   |  j  S(   N(   R   (   R   (    (    s7   /usr/lib/python2.7/dist-packages/smart/util/metalink.pyR/   f   s    N(   t   __name__t
   __module__R+   R   R'   R8   R0   R/   (    (    (    s7   /usr/lib/python2.7/dist-packages/smart/util/metalink.pyR   &   s
   	*		t   Metalinkc           B   sD   e  Z d  d „ Z d „  Z e e ƒ Z d „  Z d „  Z d „  Z RS(   t   smartc         C   sg   t  j d ƒ |  _ d |  j j d <t |  j j d <| |  j j d <t  j |  j d ƒ |  _ g  |  _ d  S(   Nt   metalinks   3.0R   t   xmlnst	   generatort   files(   R    R
   t	   _metalinkR&   t   NS_METALINKERR   t   _filest
   _metafiles(   R   R?   (    (    s7   /usr/lib/python2.7/dist-packages/smart/util/metalink.pyR   j   s    c         C   sÙ  t  ƒ  } xÉt j | d ƒ D]µ\ } } | j } | d k rv | t t d ƒ k rÑd  } d  } d  } i  }	 g  }
 qÑq | d k r | t t d ƒ k rÉ t | | | ƒ } | j |
 |	  | j | ƒ qÑ| t t d ƒ k rê | j	 } qÑ| t t d ƒ k r| j	 } qÑ| t t d ƒ k r2t
 | j	 ƒ } qÑ| t t d ƒ k rZ|
 j | j	 ƒ qÑ| t t d ƒ k r…t | j	 ƒ |	 d <qÑ| t t d	 ƒ k rÑ| j d
 ƒ } | d k r¾d } n  | j	 |	 | <qÑq q W| S(   Nt   startt   endR   R   R   R   R"   R   R   R   R   R   (   s   starts   end(   R;   R    t	   iterparseR   R   RB   R+   R   R'   R   t   unicodet   longt   get(   R   t   inputR=   t   eventt   elemR   R   R   R   R0   R/   t   metafileR   (    (    s7   /usr/lib/python2.7/dist-packages/smart/util/metalink.pyt   parser   s>    			c         C   s*   |  j  j | j ƒ  ƒ |  j j | ƒ d  S(   N(   RC   R'   R8   RD   (   R   R   (    (    s7   /usr/lib/python2.7/dist-packages/smart/util/metalink.pyR'   •   s    c         C   s   |  j  S(   N(   RD   (   R   (    (    s7   /usr/lib/python2.7/dist-packages/smart/util/metalink.pyR@   ™   s    c         C   s9   | j  ƒ  s | j d ƒ n  t j |  j ƒ j | ƒ d  S(   Ns'   <?xml version="1.0" encoding="UTF-8"?>
(   t   isattyt   writeR    RA   (   R   t   output(    (    s7   /usr/lib/python2.7/dist-packages/smart/util/metalink.pyRQ   œ   s    (   R9   R:   R   RO   t   classmethodR'   R@   RQ   (    (    (    s7   /usr/lib/python2.7/dist-packages/smart/util/metalink.pyR;   i   s   	!		t   __main__i   (    (    (   R,   R)   t	   xml.etreeR    t   ImportErrort   elementtreet   smart.util.elementtreeRB   R   R   R;   R9   t   sysRO   t   opent   argvRQ   t   stdout(    (    (    s7   /usr/lib/python2.7/dist-packages/smart/util/metalink.pyt   <module>   s   	C8