ó
»áˆYc           @  sy  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 d  d l Z d d „ Z e ƒ  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 „  Z d „  Z d d d d i d# d 6d „ Z d „  Z d „  Z d  „  Z d! „  Z e d" k rue ƒ  n  d S($   iÿÿÿÿ(   t   print_functionNt   Debianc         C  s  y
 t  } Wn t k
 r# t } n Xy t d |  j ƒ  ƒ } Wn | k
 r] t d ƒ } n Xt j | ƒ } d „  | Dƒ a t t j	 ƒ  ƒ a
 t
 j d d „  ƒ t t t t
 Œ  ƒ d ƒ a
 |  j ƒ  d k rø d a t
 j d	 d
 d d d d g ƒ n  | j ƒ  d  S(   Ns   /usr/share/distro-info/%s.csvs!   /usr/share/distro-info/debian.csvc         S  s+   i  |  ]! } | d  r | d | d  “ q S(   t   versiont   series(    (   t   .0t   r(    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pys
   <dictcomp>-   s   	 t   keyc         S  s   t  |  d ƒ S(   Ni    (   t   float(   t   n(    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   <lambda>/   t    i   t   debians   unknown.new.testingt   stables   proposed-updatest   testings   testing-proposed-updatest   unstablet   sid(   t   FileNotFoundErrort	   NameErrort   IOErrort   opent   lowert   csvt
   DictReadert   RELEASE_CODENAME_LOOKUPt   listt   itemst   RELEASES_ORDERt   sortt   zipt   TESTING_CODENAMEt   extendt   close(   t   origint   FileNotFoundExceptiont   csvfilet   reader(    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   get_distro_info   s"    

"c         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   groupR   t   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-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/   R0   (   R2   R3   R4   (   R2   R3   R4   (   R2   R3   R4   (    (   R   t   module(    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   valid_lsb_versionsK   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)sR6   (   t   ost   environt   copyt
   subprocesst   Popent   PACKAGESt   splitt   PIPEt   Truet   communicatet   decodet   sett   linesepR%   t	   modnameret   searcht	   groupdictR)   t   addR7   R   R   (   t   C_envt   outputt   modulest   lineR   t   providest   pkgt   mobt   mgroupsR6   t   v(    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   check_modules_installed‡   s>     
"			




R   RY   R    t   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   (   RF   t   lent	   longnames(   t   datat   retvalt   bitst   bitt   kvt   kRY   (    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   parse_policy_line²   s    c         C  sl   |  d j  d ƒ } | rh | t k rB t t t ƒ t j | ƒ ƒ Sy t | ƒ SWqh t k
 rd d SXn  d S(   Ni   R\   i    (   R)   R   R'   Rc   t   indexR   t
   ValueError(   t   xR\   (    (    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   DeprecationWarningRo   t	   TypeError(   Rn   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(   Ns   C.UTF-8R9   s	   apt-cachet   policyR:   R;   R<   R=   i    s   utf-8s   
s   (-?\d+)i   R*   R>   (   R@   RA   RB   RC   RD   RG   RH   RI   RJ   RF   t   stripR%   R&   R'   R(   t
   startswithRc   t   appendRk   (   Re   RQ   Ry   RT   R,   t   priorityRg   (    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   parse_apt_policyÓ   s$     
		't   maint   experimentals   ftp.ports.debian.orgs   ftp.debian-ports.orgs   Debian Portsc         C  sc  t  ƒ  } | s d  Sg  | D]Í } | d j d d ƒ |  k r | d j d d ƒ | k r | d j d d ƒ | k r | 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   R    R
   R\   R^   R`   R   c         S  s   |  d S(   Ni    (    (   t   tuple(    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyR	   þ   R
   t   reversei    (   R~   t   NoneR)   R   RH   Ro   (   R    R^   t   ignoresuitesR`   t   alternate_olabelst   releasesRn   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 |  d ƒ 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 ƒ  d k r–|
 j d ƒ a n  d  |  d <q°|
 |  d <n  |  j d ƒ s–t ƒ  } | r–| j d! ƒ }
 |
 d" k r0| j d# ƒ d$ k r0| j d% ƒ d/ k r0d  }
 | j i d( d) 6ƒ n  |
 rHt |
 d ƒ } n- | j d) d( ƒ }
 |
 d k ro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(0   NR   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.0R    s   Debian PortsR`   s   ftp.ports.debian.orgs   ftp.debian-ports.orgR   R\   R   s    %(RELEASE)ss    (%(CODENAME)s)(   RŽ   R   R   (   s	   GNU/Linuxs   GNU/kFreeBSD(   s   ftp.ports.debian.orgs   ftp.debian-ports.org(   R@   RA   R)   t   patht   existsR   RF   R   Rz   Rm   R   t   printt   strt   sysR<   R$   t   unamet   readt   isalphaR.   t   updatet   endswitht   rstripR   Rˆ   Rƒ   (   t   distinfot   etc_dpkg_origins_defaultt   dpkg_origins_fileRT   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	  s|    
+
$

	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-releaseRb   i   t   DISTRIB_i   t   "iÿÿÿÿs   Unable to open RŒ   R   (   R@   RA   R)   R˜   R™   R   Rz   RF   R{   R¡   R   Rš   R›   Rœ   R<   (   R£   t   etc_lsb_releaset   lsb_release_fileRT   t   vart   argR¨   (    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   get_lsb_informationg  s*    
$+c          C  sH   t  ƒ  }  x8 d D], } | |  k r t ƒ  } | j |  ƒ | Sq W|  Sd  S(   NR‰   R–   R—   R”   (   R‰   R–   R—   R”   (   R¶   R®   R    (   t   lsbinfoR   R£   (    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   get_distro_information€  s    		c           C  s   t  t ƒ  ƒ t  t ƒ  ƒ d  S(   N(   Rš   R¸   RZ   (    (    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   test‹  s    t   __main__(   s   ftp.ports.debian.orgs   ftp.debian-ports.org(   t
   __future__R    Rœ   RC   R@   R%   Rq   R   R$   Rƒ   R.   RE   t   compileRM   R7   RK   R   t   setst   SetRZ   Rd   Rk   Ro   Rx   R~   Rˆ   R®   R¶   R¸   R¹   t   __name__(    (    (    s/   /usr/lib/python2.7/dist-packages/lsb_release.pyt   <module>   sD   	5	(			
		^			