ó
g/˜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   wheezys   7.0t   jessies   8.0s   unknown.new.testingi   t   stablet   testingt   unstablet   sidc         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_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_versionsD   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#   RI   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   (   R4   t   lent	   longnames(   t   datat   retvalt   bitst   bitt   kvt   kRI   (    (    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   RM   i    (   R   t   RELEASES_ORDERt   intRT   t   index(   t   xRM   (    (    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   DeprecationWarningRa   t	   TypeError(   R`   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,   (   R.   R/   R0   R1   R2   R5   R6   R7   R8   R4   t   stripR   R   R^   R   t
   startswithRT   t   appendR\   (   RV   RA   Rk   RD   R   t   priorityRX   (    (    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   RK   t    RO   RQ   t   keyc         S  s   |  d S(   Ni    (    (   t   tuple(    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   <lambda>ó   s    t   reversei    (   Rp   t   NoneR   R@   R6   Ra   (   RK   RO   t   ignoresuitesRQ   t   alternate_olabelst   releasesR`   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 <t  j j d d ƒ } t  j j | ƒ rÿ y‹ t | ƒ y } xo | D]g } yM | j d d ƒ \ } } | j ƒ  } | j ƒ  } | d k r¢ | |  d <n  WqP t	 k
 r¶ qP XqP WWd  QXWqÿ t
 k
 rû } t d | d	 t | ƒ d
 t j ƒqÿ Xn  t  j ƒ  d } | d, k r,d | |  d <n@ | d k rId | |  d <n# | d- k rb| |  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 ƒ  sL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 r(| j d# ƒ d$ k r(| j d% ƒ d& k r(d  }
 | j i d' d( 6ƒ n  |
 r@t |
 d ƒ } n- | j d( d' ƒ }
 |
 d k rg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(.   NRq   t   IDt   LSB_ETC_DPKG_ORIGINS_DEFAULTs   /etc/dpkg/origins/defaults   : i   t   vendors   Unable to open t   :t   filei    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_versionR   s   n/at   RELEASEt   CODENAMEs   /sidR   s   testing/unstableR#   s   1.0RK   s   Debian PortsRQ   s   ftp.debian-ports.orgR   RM   R   s    %(RELEASE)ss    (%(CODENAME)s)(   R„   R…   R†   (   s	   GNU/Linuxs   GNU/kFreeBSD(   R.   R/   R   t   patht   existst   openR4   t   lowerRl   t
   ValueErrort   IOErrort   printt   strt   sysR*   t   unamet   readt   isalphaR   t   updatet   endswitht   rstript   TESTING_CODENAMER~   Ry   (   t   distinfot   etc_dpkg_origins_defaultt   dpkg_origins_fileRD   t   headert   contentt   msgt   kernt   etc_debian_versiont   debian_versionR   t   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-releaseRS   i   t   DISTRIB_i   t   "iÿÿÿÿs   Unable to open R‚   Rƒ   (   R.   R/   R   RŽ   R   R   Rl   R4   Rm   R›   R“   R”   R•   R–   R*   (   Rž   t   etc_lsb_releaset   lsb_release_fileRD   t   vart   argR£   (    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   get_lsb_informationY  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   lsbinfoRu   Rž   (    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   get_distro_informationr  s    		c           C  s   t  t ƒ  ƒ t  t ƒ  ƒ d  S(   N(   R”   R³   RJ   (    (    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   test}  s    t   __main__(%   t
   __future__R    R–   R1   R.   R   Rc   R   R   R?   t   itemsR]   R@   t   zipt   extendRy   R   R3   t   compileR;   R%   R9   t	   NameErrort   setst   SetRJ   RU   R\   Ra   Rj   Rp   R~   R©   R±   R³   R´   t   __name__(    (    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   <module>   sd   

		5	(				
		[			