ó
îÈ°Vc           @  s”   d  d l  m Z d  d l m Z d  d l Z d  d l Z d  d l Z d  d l m Z	 d e	 f d „  ƒ  YZ d d d „  ƒ  YZ
 d	 d d
 „  ƒ  YZ d S(   iÿÿÿÿ(   t   print_function(   t
   cmp_to_keyN(   t	   LaunchpadR   c           B  s   e  Z e d d  „ ƒ Z RS(   c         C  s`   t  j | d | ƒ\ } } } } | d 7} t j j | ƒ sP t j | d ƒ n  | | | | f S(   Nt   launchpadlib_dirs   -sru-reportiÀ  (   t
   _Launchpadt
   _get_pathst   ost   patht   existst   makedirs(   t   clst   service_rootR   t
   cache_patht   service_root_dir(    (    s9   /srv/kernel/kteam-tools/adt-matrix/ktl/kernel_versions.pyR   "   s    
N(   t   __name__t
   __module__t   classmethodt   NoneR   (    (    (    s9   /srv/kernel/kteam-tools/adt-matrix/ktl/kernel_versions.pyR   !   s   t   PackagePocketsc           B  sD   e  Z d  „  Z d „  Z d „  Z d „  Z e d „ Z e d „ Z	 RS(   c         C  s:   | |  _  | |  _ | |  _ d  |  _ i  |  _ i  |  _ d  S(   N(   t   pvt   seriest
   sourcenameR   t   pocketst	   publishedt   published_infer(   t   sR   R   R   (    (    s9   /srv/kernel/kteam-tools/adt-matrix/ktl/kernel_versions.pyt   __init__-   s    					c         C  sŒ  |  j  j |  j } t j d | j |  j f ƒ |  j  j j d |  j d t	 d | ƒ } i  |  _
 i  |  _ x« | D]£ } t j d | j | j | j f ƒ | j } | j } | |  j
 k rÊ g  |  j
 | <n  | |  j
 | k rô |  j
 | j | ƒ n  | j d k rp | |  j | <qp qp W|  j |  _ d |  j k rˆxS t |  j
 j ƒ  d t t j ƒ ƒD]* } d	 |  j
 | k rW| |  j d <PqWqWWn  d  S(
   Ns%   Fetching publishing history for %s/%st   source_namet   exact_matcht   distro_seriess   publication: %s %s %st	   Publishedt   Releaset   keyt   Updates(   R   t   releasesR   t   loggingt   debugt   nameR   t   archivet   getPublishedSourcest   TrueR   R   t   source_package_versiont   pockett   statust   appendR   t   sortedt   keysR   t   apt_pkgt   version_compare(   R   R   t   pubst   pubt   versionR*   (    (    s9   /srv/kernel/kteam-tools/adt-matrix/ktl/kernel_versions.pyt   _cache_load6   s2    			#		+c         C  s   |  j  s |  j ƒ  n  |  j  S(   N(   R   R4   (   R   (    (    s9   /srv/kernel/kteam-tools/adt-matrix/ktl/kernel_versions.pyt   _pocketsZ   s    	c         C  s  | r  | |  j  k r  |  j  | S| |  j k r: |  j | S| d k rf | rf |  j ƒ  |  j  j | ƒ S|  j j |  j } t j d | j	 |  j
 | f ƒ |  j j j d |  j
 d t d | d | d d ƒ } x. | D]& } | j |  j | <| j |  j  | <qÓ W|  j j | ƒ S(	   NR   s'   Fetching publishing record for %s/%s %sR   R   R   R*   R+   R   (   R   R   R5   t   getR   R"   R   R#   R$   R%   R   R&   R'   R(   R)   (   R   R*   t   infer_releaseR   R1   R2   (    (    s9   /srv/kernel/kteam-tools/adt-matrix/ktl/kernel_versions.pyt   _pocket_lookupa   s(    
	c         C  s0   | j  ƒ  } t j d | f ƒ |  j | | ƒ S(   sI   Get the current version of this package published in the specified pockets   current_in_pocket: %s(   t
   capitalizeR#   R$   R8   (   R   R*   R7   (    (    s9   /srv/kernel/kteam-tools/adt-matrix/ktl/kernel_versions.pyt   current_in_pocket|   s    c         C  s¦   |  j  ƒ  } g  } d  } xO t |  j j ƒ  d t t j ƒ ƒD]) } | | d g k r= | j | ƒ q= q= W| r¢ | |  j k r¢ | | d g k r¢ | j | ƒ n  | S(   NR    t   Proposed(	   R5   R   R-   R   R.   R   R/   R0   R,   (   R   t   include_proposedR   t   resultR3   (    (    s9   /srv/kernel/kteam-tools/adt-matrix/ktl/kernel_versions.pyt
   all_viable‡   s    +((
   R   R   R   R4   R5   R8   t   FalseR:   R(   R>   (    (    (    s9   /srv/kernel/kteam-tools/adt-matrix/ktl/kernel_versions.pyR   ,   s   			$		t   KernelVersionsc           B  sY   e  Z d d d e d  „ Z d „  Z e d „ Z d „  Z d „  Z	 d d d e d „ Z
 RS(   c      	   C  si   d  |  _ d  |  _ d  |  _ i  |  _ t ƒ  |  _ g  |  _ |  j d | d | d | d | ƒ t	 j
 ƒ  d  S(   Nt	   launchpadt	   ppa_ownert   ppa_namet   active_only(   R   t   lpt   ubuntuR&   R"   t   sett   broken_bugst   ignored_commenterst   lpinitR/   t   init_system(   R   RA   RB   RC   RD   (    (    s9   /srv/kernel/kteam-tools/adt-matrix/ktl/kernel_versions.pyR   ˜   s    					"c         C  s   t  |  | | ƒ S(   N(   R   (   R   R   R   (    (    s9   /srv/kernel/kteam-tools/adt-matrix/ktl/kernel_versions.pyt   pocket_data¤   s    c         C  s"   |  j  | | ƒ } | j | | ƒ S(   sI   Get the current version of this package published in the specified pocket(   RL   R:   (   R   R*   R   R   R7   R   (    (    s9   /srv/kernel/kteam-tools/adt-matrix/ktl/kernel_versions.pyR:   ¨   s    c         C  s   |  j  | | ƒ } | j ƒ  S(   s]   Get all viable versions of this package published ever, only the last -proposed is considered(   RL   R>   (   R   R   R   R   (    (    s9   /srv/kernel/kteam-tools/adt-matrix/ktl/kernel_versions.pyR>   ¯   s    c      	   C  s%   t  d |  j d |  j d | d | ƒ S(   NRA   RD   RB   RC   (   R@   RE   RD   (   R   RB   RC   (    (    s9   /srv/kernel/kteam-tools/adt-matrix/ktl/kernel_versions.pyt   ppa¶   s    c         C  së   t  j d ƒ | s+ t j d d ƒ |  _ n	 | |  _ |  j j d |  _ | sh |  j j d d ƒ |  _ n |  j j	 | j
 d | ƒ |  _ | |  _ x7 |  j j D]) } | s³ | j r | |  j | j <q q Wt  j d d j |  j ƒ ƒ d	 S(
   s>   Init LP credentials, archive, distro list and sru-team memberss   Initializing LP Credentialss   kernel-versionst
   productionRF   R%   t   primarys   Active releases found: %st    N(   R#   R$   R   t   login_anonymouslyRE   t   distributionsRF   t
   getArchiveR&   t   peoplet   getPPAByNameRD   R   t   activeR"   R%   t   join(   R   RA   RB   RC   RD   R   (    (    s9   /srv/kernel/kteam-tools/adt-matrix/ktl/kernel_versions.pyRJ   »   s    		N(   R   R   R   R(   R   RL   R?   R:   R>   RM   RJ   (    (    (    s9   /srv/kernel/kteam-tools/adt-matrix/ktl/kernel_versions.pyR@   —   s   			(    (    (   t
   __future__R    t	   functoolsR   R#   R   R/   t   launchpadlib.launchpadR   R   R   R@   (    (    (    s9   /srv/kernel/kteam-tools/adt-matrix/ktl/kernel_versions.pyt   <module>   s   k