ó
¯Qc           @  s  d  d l  m Z d  d l Z 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 6d d 6d d 6d d 6Z d a e	 e j
 ƒ  ƒ Z e j ƒ  e	 e	 e e Œ  ƒ d ƒ Z e j d d  d! d" g ƒ 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/ 6d0 d1 6Z d2 „  Z d3 „  Z d4 „  Z d5 „  Z d6 d7 d8 d6 i d9 d: 6d; „ Z d< „  Z  d= „  Z! d> „  Z" d? „  Z# e$ d@ k re# ƒ  n  d S(A   iÿÿÿÿ(   t   print_functionNt   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.0t   squeezes   6.0t   wheezyt   7t   jessiet   8s   unknown.new.testingi   t   stablet   testingt   unstablet   sidc         C  ss   t  j d |  ƒ } | s | St | j d ƒ ƒ d k  rP d | j d d ƒ } n d | j d ƒ } t j | | ƒ S(   Ns   (\d+)\.(\d+)(r(\d+))?i   i   s   %s.%si   s   %s(   t   ret   matcht   intt   groupt   RELEASE_CODENAME_LOOKUPt   get(   t   releaset   unknownt   mt   shortrelease(    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   lookup_codename7   s    s`   lsb-core lsb-cxx lsb-graphics lsb-desktop lsb-languages lsb-multimedia lsb-printing lsb-securitysI   lsb-(?P<module>[a-z0-9]+)-(?P<arch>[^ ]+)(?: \(= (?P<version>[0-9.]+)\))?c         C  s  |  d k r d d g S|  d k r[ | d k r5 d g S| d k rK d d g Sd d d g Sn©|  d k rÏ | d k r} d d g S| d k r d g S| d k r£ d g S| d k r¼ d d d g Sd d d d g Sn5|  d k rb| d k rô d d d g S| d k rd g S| d k rd d g S| d k r0d g S| d k rLd d d d g Sd d d d d g Sn¢ |  d k r| d k rŠd d d d g S| d k rd g S| d k r¶d d d g S| d k rÌd d g S| d k rëd d d d d g Sd d d d d d g Sn  |  g S(   Ns   3.0s   2.0s   3.1t   desktopt   qt4t   cxxs   3.2t   printingt	   languagest
   multimedias   4.0t   securitys   4.1(   R   R    (   R"   R#   R$   (   R"   R#   R$   (   R"   R#   R$   (    (   t   versiont   module(    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   valid_lsb_versionsG   sV    




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 ƒ \ } } t j d | d ƒ d } x¬ | j d ƒ D]› } t j | ƒ } | sqæ n  | j ƒ  } | j d ƒ r<d | }	 | j |	 ƒ qæ | d }	 x8 t | |	 ƒ D]' }
 |
 | d <d | }	 | j |	 ƒ qV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   s   [-+~]t   ,R&   s   %(module)s-%(version)s-%(arch)sR'   (   t   ost   environt   copyt
   subprocesst   Popent   PACKAGESt   splitt   PIPEt   Truet   communicatet   decodet   sett   linesepR   t	   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_installedƒ   s>     
"			




R&   RL   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(   NR0   t   =i   i   (   R7   t   lent	   longnames(   t   datat   retvalt   bitst   bitt   kvt   kRL   (    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   parse_policy_line®   s    c         C  sM   |  d j  d ƒ } | rI | t k rB t t t ƒ t j | ƒ ƒ S| Sn  d S(   Ni   RP   i    (   R   t   RELEASES_ORDERR   RW   t   index(   t   xRP   (    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   release_index¹   s    c         C  sc   t  j d t d d ƒt |  ƒ } t | ƒ } y | | SWn" t k
 r^ | | k | | k  SXd  S(   Ns^   compare_release(x,y) is deprecated; please use the release_index(x) as key for sort() instead.t
   stackleveli   (   t   warningst   warnt   DeprecationWarningRc   t	   TypeError(   Rb   t   yt	   suite_x_it	   suite_y_i(    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   compare_releaseÂ   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/   (   R1   R2   R3   R4   R5   R8   R9   R:   R;   R7   t   stripR   R   R   R   t
   startswithRW   t   appendR_   (   RY   RD   Rm   RG   R   t   priorityR[   (    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   parse_apt_policyÌ   s$     
		't   Debiant   maint   experimentals   ftp.debian-ports.orgs   Debian Portsc         C  sG  t  ƒ  } | s d  Sg  | D]± } | d j d d ƒ |  k rt | d j d d ƒ | k rt | d j d d ƒ | k sÅ | d j d d ƒ | k r | d j d d ƒ | j | d j d d ƒ ƒ k r | ^ q } | sÛ d  S| j d d „  d t ƒ | d	 d	 } g  | D] } | d	 | k r	| ^ q	} | j d t ƒ | d	 d S(
   Ni   RN   t    RR   RT   t   keyc         S  s   |  d S(   Ni    (    (   t   tuple(    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   <lambda>ö   s    t   reversei    (   Rr   t   NoneR   RC   R9   Rc   (   RN   RR   t   ignoresuitesRT   t   alternate_olabelst   releasesRb   t   max_priority(    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   guess_release_from_aptá   s     	A)c          C  sì  i d d 6}  t  j ƒ  d } | d( k r: d | |  d <n@ | d	 k rW d
 | |  d <n# | d) k rp | |  d <n
 d |  d <d |  |  d <t  j j d d ƒ } t  j j | ƒ r¶y+ t | ƒ  } | j ƒ  j ƒ  } Wd  QXWn= t	 k
 r} t
 d | d t | ƒ d t j ƒd } n X| d d !j ƒ  sZt | d ƒ } |  j i | d 6| d 6ƒ q¶| j d ƒ r©| j d ƒ j ƒ  j ƒ  d k rœ| j d ƒ a n  d |  d <q¶| |  d <n  |  j d ƒ sœt ƒ  } | rœ| j d ƒ } | d k r6| j d ƒ d  k r6| j d! ƒ d" k r6d  } | j i d# d$ 6ƒ n  | rNt | d ƒ } n- | j d$ d# ƒ } | d k rut } n d% } |  j i | d 6| d 6ƒ qœn  |  j d ƒ rÂ|  d c d& |  7<n  |  j d ƒ rè|  d c d' |  7<n  |  S(*   NRs   t   IDi    t   Linuxt   Hurdt   NetBSDs   GNU/t   OSt   FreeBSDs   GNU/ks	   GNU/Linuxs   GNU/kFreeBSDt   GNUs   %(ID)s %(OS)st   DESCRIPTIONt   LSB_ETC_DEBIAN_VERSIONs   /etc/debian_versions   Unable to open t   :t   fileR   i   s   n/at   RELEASEt   CODENAMEs   /sidR   s   testing/unstableR&   s   1.0RN   s   Debian PortsRT   s   ftp.debian-ports.orgR   RP   R   s    %(RELEASE)ss    (%(CODENAME)s)(   R‚   Rƒ   R„   (   s	   GNU/Linuxs   GNU/kFreeBSD(   R1   t   unameR2   R   t   patht   existst   opent   readRn   t   IOErrort   printt   strt   sysR-   t   isalphaR   t   updatet   endswitht   rstript   lowert   TESTING_CODENAMER€   R{   (   t   distinfot   kernt   etc_debian_versiont   debian_versionR   t   msgt   codenamet   rinfo(    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   guess_debian_release  sZ    
$
!
	6	!c       	   C  s=  i  }  t  j j d d ƒ } t  j j | ƒ r9yÏ t | ƒ ½ } x³ | D]« } | j ƒ  } | sd qF n  d | k rv qF n  | j d d ƒ \ } } | j d ƒ rF | d } | j d ƒ rÕ | j	 d ƒ rÕ | d d !} n  | rñ | j ƒ  |  | <qñ qF qF WWd  QXWq9t
 k
 r5} t d	 | d
 t | ƒ d t j ƒq9Xn  |  S(   Nt   LSB_ETC_LSB_RELEASEs   /etc/lsb-releaseRV   i   t   DISTRIB_i   t   "iÿÿÿÿs   Unable to open RŠ   R‹   (   R1   R2   R   R   R   R‘   Rn   R7   Ro   R™   R“   R”   R•   R–   R-   (   R   t   etc_lsb_releaset   lsb_release_fileRG   t   vart   argR¡   (    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   get_lsb_informationJ  s*    
$+c          C  sH   t  ƒ  }  x8 d D], } | |  k r t ƒ  } | j |  ƒ | Sq W|  Sd  S(   NR   RŒ   R   Rˆ   (   s   IDs   RELEASEs   CODENAMEs   DESCRIPTION(   R¬   R¤   R˜   (   t   lsbinfoRw   R   (    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   get_distro_informationc  s    		c           C  s   t  t ƒ  ƒ t  t ƒ  ƒ d  S(   N(   R”   R®   RM   (    (    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   testn  s    t   __main__(%   t
   __future__R    R–   R4   R1   R   Re   R   Rœ   RB   t   itemsR`   RC   t   zipt   extendR{   R   R6   t   compileR>   R(   R<   t	   NameErrort   setst   SetRM   RX   R_   Rc   Rl   Rr   R€   R¤   R¬   R®   R¯   t   __name__(    (    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   <module>   sd   

	5	(				
		I			