ó
1ý°Qc           @   st  d  d l  Z  d  d l Z d  d l Z d  d l Z i
 d d 6d d 6d d 6d d	 6d
 d 6d d 6d d 6d d 6d d 6d d 6Z d a d d „ Z d Z e j	 d ƒ Z
 d „  Z y e Wn& e k
 rÜ d  d l Z e j Z n Xd „  Z i d d 6d d 6d  d! 6d" d# 6d$ d% 6Z d& „  Z d' „  Z d( d) d* d( d+ „ Z d, „  Z d- „  Z d. „  Z d/ „  Z e d0 k rpe ƒ  n  d S(1   iÿÿÿÿNt   buzzs   1.1t   rexs   1.2t   bos   1.3t   hamms   2.0t   slinks   2.1t   potatos   2.2t   woodys   3.0t   sarges   3.1t   etchs   4.0t   lennys   5.0s   unknown.new.testingc         C   sB   t  j d |  ƒ } | s | Sd | j d d ƒ } t j | | ƒ S(   Ns   (\d+)\.(\d+)(r(\d+))?s   %s.%si   i   (   t   ret   matcht   groupt   RELEASE_CODENAME_LOOKUPt   get(   t   releaset   unknownt   mt   shortrelease(    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   lookup_codename+   s
    s[   lsb-core lsb-cxx lsb-graphics lsb-desktop lsb-qt4 lsb-languages lsb-multimedia lsb-printingsI   lsb-(?P<module>[a-z0-9]+)-(?P<arch>[^ ]+)(?: \(= (?P<version>[0-9.]+)\))?c         C   sS  |  d k r d d g S|  d k rE | d k r5 d g Sd d d g Sn|  d k r¹ | d k rg d d g S| d k rz d g S| d k r d g S| d
 k r¦ d d d g Sd d d d g Sn“ |  d k rL| d k rÞ d d d g S| d k rñ d g S| d k rd d g S| d k rd g S| d
 k r6d d d d g Sd d d d d g Sn  |  g S(   Ns   3.0s   2.0s   3.1t   desktopt   qt4s   3.2t   printingt	   languagest
   multimediat   cxxs   4.0t   security(   R   R   (   R   R   R   (   R   R   R   (    (   t   versiont   module(    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   valid_lsb_versions8   s:    


c       
   C   s   t  j j ƒ  }  d |  d <t j d d d d g t j ƒ  d |  d t j d	 t j d
 t ƒj	 ƒ  d j
 d ƒ } | sy g  St ƒ  } x| j t  j ƒ D]í } | s¥ Pn  | j d d ƒ \ } } | j d d ƒ d } x¬ | j d ƒ D]› } t j | ƒ } | sqã n  | j ƒ  } | j d ƒ r9d | }	 | j |	 ƒ qã | d }	 x8 t | |	 ƒ D]' }
 |
 | d <d | }	 | j |	 ƒ qSWqã Wq• Wt | ƒ } | j ƒ  | S(   Nt   Ct   LC_ALLs
   dpkg-querys   -fs   ${Version} ${Provides}
s   -Wt   envt   stdoutt   stderrt	   close_fdsi    s   utf-8t    i   t   -t   ,R   s   %(module)s-%(version)s-%(arch)sR   (   t   ost   environt   copyt
   subprocesst   Popent   PACKAGESt   splitt   PIPEt   Truet   communicatet   decodet   sett   linesept	   modnameret   searcht	   groupdictR   t   addR   t   listt   sort(   t   C_envt   outputt   modulest   lineR   t   providest   pkgt   mobt   mgroupsR   t   v(    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   check_modules_installedd   s>     
"			




R   RB   t   origint   ot   suitet   at	   componentt   ct   labelt   lc         C   s~   i  } |  j  d ƒ } xb | D]Z } | j  d d ƒ } t | ƒ d k r | d  \ } } | t k rv | | t | <qv q q W| S(   NR&   t   =i   i   (   R-   t   lent	   longnames(   t   datat   retvalt   bitst   bitt   kvt   kRB   (    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   parse_policy_lineŽ   s    c       
   C   s  g  }  t  j j ƒ  } d | d <t j d d g d | d t j d t j d t ƒj ƒ  d	 j d
 ƒ } x© | j	 d ƒ D]˜ } | j
 ƒ  } t j d | ƒ } | r· t | j d ƒ ƒ } n  | j d ƒ ru | j	 d d ƒ } t | ƒ d k r|  j | t | d ƒ f ƒ qqu qu W|  S(   NR   R   s	   apt-cachet   policyR    R!   R"   R#   i    s   utf-8s   
s   (\d+)i   R   R$   (   R'   R(   R)   R*   R+   R.   R/   R0   R1   R-   t   stripR
   R   t   intR   t
   startswithRM   t   appendRU   (   RO   R:   RV   R=   R   t   priorityRQ   (    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   parse_apt_policy™   s$     
		't   Debiant   maint   experimentalc         C   sª   t  ƒ  } | s d  Sg  | D]` } | d j d d ƒ |  k r | d j d d ƒ | k r | d j d d ƒ | k r | ^ q } | sŠ d  S| j ƒ  | j ƒ  | d d S(   Ni   RD   t    RH   RJ   i    (   R\   t   NoneR   R9   t   reverse(   RD   RH   t   ignoresuitesRJ   t   releasest   x(    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   guess_release_from_apt®   s    	(

c          C   s^  i d d 6}  t  j ƒ  d } | d k r: d | |  d <n' | d	 k rW d
 | |  d <n
 d |  d <d |  |  d <t  j j d ƒ r}y+ t d ƒ  } | j ƒ  j ƒ  } Wd  QXWn2 t k
 rà } t j	 d It
 | ƒ IJd } n X| d d !j ƒ  s!t | d ƒ } |  j i | d 6| d 6ƒ q}| j d ƒ rp| j d ƒ j ƒ  j ƒ  d k rc| j d ƒ a n  d |  d <q}| |  d <n  t ƒ  } | r|  j d ƒ r| j d ƒ } | rÃt | d ƒ } n- | j d d ƒ } | d k rêt } n d } |  j i | d 6| d 6ƒ n  |  j d ƒ r4|  d c d |  7<n  |  j d ƒ rZ|  d c d |  7<n  |  S(   NR]   t   IDi    t   Linuxt   Hurdt   NetBSDs   GNU/t   OSt   FreeBSDs   GNU/kt   GNUs   %(ID)s %(OS)st   DESCRIPTIONs   /etc/debian_versions#   Unable to open /etc/debian_version:R   i   s   n/at   RELEASEt   CODENAMEs   /sidt   testings   testing/unstableR   RF   t   unstablet   sids    %(RELEASE)ss    (%(CODENAME)s)(   Rh   Ri   Rj   (   R'   t   unamet   patht   existst   opent   readRW   t   IOErrort   sysR"   t   strt   isalphaR   t   updatet   endswitht   rstript   lowert   TESTING_CODENAMERf   R   (   t   distinfot   kernt   debian_versionR   t   msgt   codenamet   rinfo(    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   guess_debian_releaseÈ   sL    

!
		c       	   C   s  i  }  t  j j d ƒ ryÉ t d ƒ · } x­ | D]¥ } | j ƒ  } | sO q1 n  d | k ra q1 n  | j d d ƒ \ } } | j d ƒ r1 | d } | j d ƒ rÀ | j d ƒ rÀ | d d !} n  | rÖ | |  | <qÖ q1 q1 WWd  QXWqt k
 r} t	 j
 d It | ƒ IJqXn  |  S(	   Ns   /etc/lsb-releaseRL   i   t   DISTRIB_i   t   "iÿÿÿÿs    Unable to open /etc/lsb-release:(   R'   Ru   Rv   Rw   RW   R-   RY   R~   Ry   Rz   R"   R{   (   R‚   t   lsb_release_fileR=   t   vart   argR…   (    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   get_lsb_information  s(    
 c          C   sH   t  ƒ  }  x8 d D], } | |  k r t ƒ  } | j |  ƒ | Sq W|  Sd  S(   NRg   Ro   Rp   Rn   (   s   IDs   RELEASEs   CODENAMEs   DESCRIPTION(   RŽ   Rˆ   R}   (   t   lsbinfot   keyR‚   (    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   get_distro_information  s    		c           C   s   t  ƒ  GHt ƒ  GHd  S(   N(   R‘   RC   (    (    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   test*  s    t   __main__(   Rz   R'   R
   R*   R   R   Ra   R   R,   t   compileR4   R   R2   t	   NameErrort   setst   SetRC   RN   RU   R\   Rf   Rˆ   RŽ   R‘   R’   t   __name__(    (    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   <module>   sL   
		%	'			?			