ó
ë¾[`c           @   sX   d  Z  d d l Z d d l m Z m Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(	   s^   
the Uses class -- a class for tracking product dependencies (used by the remove()
function).
iÿÿÿÿNi   (   t
   cmp_or_keyt   cmpt   Propsc           B   s   e  Z d  „  Z RS(   c         C   s   | |  _  | |  _ | |  _ d  S(   N(   t   versiont   optionalt   depth(   t   selfR   R   R   (    (    sc   /data1/kirg/hscpipe8/conda/miniconda3-py38_4.9.2/envs/lsst-scipipe-4d7b902/eups/python/eups/Uses.pyt   __init__   s    		(   t   __name__t
   __module__R   (    (    (    sc   /data1/kirg/hscpipe8/conda/miniconda3-py38_4.9.2/envs/lsst-scipipe-4d7b902/eups/python/eups/Uses.pyR      s   t   Usesc           B   sG   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d d „ Z	 RS(   sÊ   
    a class for tracking product dependencies.  Typically an instance of
    this class is created via a call to Eups.uses().  This class is used
    by Eups.remove() to figure out what to remove.
    c         C   s   i  |  _  i  |  _ d  S(   N(   t   _depends_ont	   _setup_by(   R   (    (    sc   /data1/kirg/hscpipe8/conda/miniconda3-py38_4.9.2/envs/lsst-scipipe-4d7b902/eups/python/eups/Uses.pyR      s    	c         C   s   d | | f S(   Ns   %s:%s(    (   R   t   pt   v(    (    sc   /data1/kirg/hscpipe8/conda/miniconda3-py38_4.9.2/envs/lsst-scipipe-4d7b902/eups/python/eups/Uses.pyt   _getKey   s    c         C   s   | j  d d ƒ S(   Nt   :i   (   t   split(   R   t   k(    (    sc   /data1/kirg/hscpipe8/conda/miniconda3-py38_4.9.2/envs/lsst-scipipe-4d7b902/eups/python/eups/Uses.pyt	   _splitKey   s    c         C   sK   |  j  | | ƒ } | |  j k r1 g  |  j | <n  |  j | c | g 7<d  S(   N(   R   R   (   R   R   R   t   infot   key(    (    sc   /data1/kirg/hscpipe8/conda/miniconda3-py38_4.9.2/envs/lsst-scipipe-4d7b902/eups/python/eups/Uses.pyt   remember"   s    c      	   C   so  i  |  _  xª |  j j ƒ  D]™ } |  j | ƒ \ } } x{ |  j | D]l \ } } } } |  j | | ƒ }	 |	 |  j  k r… g  |  j  |	 <n  |  j  |	 j | | t | | | ƒ f ƒ qB Wq Wx² |  j  j ƒ  D]¡ } i  }
 i  } xm |  j  | D]^ } | \ } } } d | | f }	 |	 | k s*| j | |	 k  ræ | j | |	 <| |
 |	 <qæ qæ Wt t	 |
 j
 ƒ  ƒ ƒ |  j  | <qÆ Wd S(   sJ    Invert the dependencies to tell us who uses what, not who depends on whats   %s-%sN(   R   R   t   keysR   R   t   appendR   R   t   listt   sett   values(   R   R   R   t   productNamet   versionNamet   dnamet   dvert	   doptionalt   ddepthR   t   vmint   dmint   valR   t   pvt   props(    (    sc   /data1/kirg/hscpipe8/conda/miniconda3-py38_4.9.2/envs/lsst-scipipe-4d7b902/eups/python/eups/Uses.pyt   invert*   s$    	 1c         C   s°   | r t  j | ƒ } n d } d | } t  j d |  j | | ƒ ƒ } g  } x@ |  j j ƒ  D]/ } | j | ƒ } | r] | |  j | 7} q] q] Wd „  } | j t | ƒ   | S(   s   Return a list of the users of productName/productVersion; each element of the list is:
        (user, userVersion, (productVersion, optional)s	   [\w.+\-]+s   (?P<version>%s)s   ^%s$c         S   sn   |  d | d k rU |  d | d k r= t  |  d | d ƒ St  |  d | d ƒ Sn t  |  d | d ƒ Sd S(   s-   Sort by product then version then informationi    i   i   N(   R   (   t   at   b(    (    sc   /data1/kirg/hscpipe8/conda/miniconda3-py38_4.9.2/envs/lsst-scipipe-4d7b902/eups/python/eups/Uses.pyt   pvsort[   s
    (	   t   ret   escapet   compileR   R   R   t   matcht   sortR    (   R   R   R   t   patternt   consumerListR   t   matR*   (    (    sc   /data1/kirg/hscpipe8/conda/miniconda3-py38_4.9.2/envs/lsst-scipipe-4d7b902/eups/python/eups/Uses.pyt   usersH   s    
	N(
   R   R	   t   __doc__R   R   R   R   R'   t   NoneR3   (    (    (    sc   /data1/kirg/hscpipe8/conda/miniconda3-py38_4.9.2/envs/lsst-scipipe-4d7b902/eups/python/eups/Uses.pyR
      s   					(   R4   R+   t   utilsR    R   t   objectR   R
   (    (    (    sc   /data1/kirg/hscpipe8/conda/miniconda3-py38_4.9.2/envs/lsst-scipipe-4d7b902/eups/python/eups/Uses.pyt   <module>   s   