ó
Ý²k^c           @` sœ  d  d l  m Z m Z m Z m Z d  d l m Z d  d l m Z d  d l	 Z	 d d l
 m Z d d l m Z d d l m Z d	 d
 l m Z d	 d l m Z m Z m Z m Z d	 d l m Z m Z m Z d	 d l m Z d	 d l m Z m Z m  Z  d	 d l! m" Z" d	 d l# m$ Z$ m% Z% m& Z& e e' ƒ Z( e d d ƒ Z) e Z* d e f d „  ƒ  YZ+ d „  Z, d „  Z- e  e+ ƒ d e f d „  ƒ  Yƒ Z. d „  Z/ d S(    i    (   t   absolute_importt   divisiont   print_functiont   unicode_literals(   t
   namedtuple(   t	   getLoggerNi   (   t   Channel(   t   PackageInfo(   t   PackageRecordi   (   t
   CondaError(   t   Entityt
   EntityTypet   IntegerFieldt   StringField(   t   CONDA_PACKAGE_EXTENSIONSt   DEFAULTS_CHANNEL_NAMEt   UNKNOWN_CHANNEL(   t   context(   t   ensure_text_typet	   text_typet   with_metaclass(   t   NULL(   t   has_platformt   is_urlt   join_urlu   DistDetailsu   nameu   versionu   build_stringu   build_numberu	   dist_nameu   fmtt   DistTypec           B` s   e  Z d  „  Z RS(   c         O` sI  t  | ƒ d k r,| r,| d } | t j k r= t j | St | t ƒ rU | } nÆ t | t ƒ r… t j | j d | j j ƒ} n– t	 | d ƒ r² t | j
 t ƒ r² | j
 } ni t | t ƒ rå t j | j j d | j j ƒ} n6 t | t ƒ rt j | j ƒ  ƒ } n t j | ƒ } | t j | <| St t |  ƒ j | | Ž  Sd  S(   Ni   i    t   channel_overrideu   dist(   t   lent   Distt   _cache_t
   isinstanceR   t   from_stringt   fnt   channelt   canonical_namet   hasattrt   distR   t   repodata_recordR   t   from_urlt   urlt   superR   t   __call__(   t   clst   argst   kwargst   valueR$   (    (    s0   lib/python2.7/site-packages/conda/models/dist.pyR)      s&    
	!!(   t   __name__t
   __module__R)   (    (    (    s0   lib/python2.7/site-packages/conda/models/dist.pyR      s   c         C` s8   x1 t  D]) } |  j | ƒ r |  t | ƒ  }  q q W|  S(   N(   R   t   endswithR   (   t   original_distt   ext(    (    s0   lib/python2.7/site-packages/conda/models/dist.pyt   strip_extension7   s    c         C` s    t  |  ƒ } | |  t | ƒ f S(   N(   R3   R   (   R1   t   stripped(    (    s0   lib/python2.7/site-packages/conda/models/dist.pyt   split_extension>   s    R   c        	   B` s9  e  Z i  Z e Z e d  e d e d e ƒ Z e d e ƒ Z e d e ƒ Z	 e d e ƒ Z
 e d e ƒ Z e d e ƒ Z e d e ƒ Z e d  e d e d e ƒ Z e d  e d e d e ƒ Z d# d# d# d# d# d# d# d d „ Z d „  Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d	 „  ƒ Z e d
 „  ƒ Z d „  Z e d „  ƒ Z e d „  ƒ Z d# d „ Z d „  Z d „  Z e  e! d „ ƒ Z" e# d „  ƒ Z$ e  d „  ƒ Z% d „  Z& d „  Z' d „  Z( d „  Z) d „  Z* d „  Z+ d „  Z, d „  Z- d „  Z. d# d d „ Z/ d# d d „ Z0 d  „  Z1 d! „  Z2 e d" „  ƒ Z3 RS($   t   requiredt   nullablet	   immutableu   .tar.bz2c
   
      C` sM   t  t |  ƒ j d | d | d | d | d | d | d | d | d	 |	 ƒ 	d  S(
   NR!   t	   dist_namet   namet   versiont   build_stringt   build_numbert   base_urlt   platformt   fmt(   R(   R   t   __init__(
   t   selfR!   R9   R:   R;   R<   R=   R>   R?   R@   (    (    s0   lib/python2.7/site-packages/conda/models/dist.pyRA   T   s    c         C` s=   t  d |  j d |  j d |  j d |  j d |  j d |  j ƒ S(   NR!   t   subdirR:   R;   t   buildR=   (   R   R!   R?   R:   R;   R<   R=   (   RB   (    (    s0   lib/python2.7/site-packages/conda/models/dist.pyt   to_package_ref`   s    					c         C` s
   |  j  ƒ  S(   N(   t   __str__(   RB   (    (    s0   lib/python2.7/site-packages/conda/models/dist.pyt	   full_namej   s    c         C` s   |  j  S(   N(   R<   (   RB   (    (    s0   lib/python2.7/site-packages/conda/models/dist.pyRD   n   s    c         C` s   |  j  S(   N(   R?   (   RB   (    (    s0   lib/python2.7/site-packages/conda/models/dist.pyRC   r   s    c         C` s   |  j  p t |  j f S(   N(   R!   R   R9   (   RB   (    (    s0   lib/python2.7/site-packages/conda/models/dist.pyt   pairv   s    c         C` sD   |  j  j d d ƒ d d g } | d | d | d |  j p@ t f S(   Nu   -i   u    i    i   (   R9   t   rsplitR!   R   (   RB   t   parts(    (    s0   lib/python2.7/site-packages/conda/models/dist.pyt   quadz   s    c         C` s$   |  j  r d |  j  |  j f S|  j S(   Nu   %s::%s(   R!   R9   (   RB   (    (    s0   lib/python2.7/site-packages/conda/models/dist.pyRF   €   s    c         C` s   |  j  j d ƒ S(   Nu   @(   R9   R0   (   RB   (    (    s0   lib/python2.7/site-packages/conda/models/dist.pyt   is_feature_packageƒ   s    c         C` s   t  |  j o |  j ƒ S(   N(   t   boolR>   R?   (   RB   (    (    s0   lib/python2.7/site-packages/conda/models/dist.pyt
   is_channel‡   s    c         C` s"   |  j  r |  j S|  j |  j Sd  S(   N(   RL   R9   R@   (   RB   t	   extension(    (    s0   lib/python2.7/site-packages/conda/models/dist.pyt   to_filename‹   s    	c         C` s   d j  |  j d  ƒ S(   Nu    i   (   t   joinRK   (   RB   (    (    s0   lib/python2.7/site-packages/conda/models/dist.pyt   to_matchspec‘   s    c         C` sL   d d l  m } d j |  j d  ƒ } | |  j rE d |  j | f n | ƒ S(   Ni   (   t	   MatchSpecu   =i   u   %s::%s(   t
   match_specRS   RQ   RK   R!   (   RB   RS   t   base(    (    s0   lib/python2.7/site-packages/conda/models/dist.pyt   to_match_spec”   s    c   	      C` s  t  | ƒ } t | ƒ r1 | t k r1 |  j | ƒ S| j d ƒ rk |  d d d | d d d d d d d	 | ƒ Sd
 } t j | | ƒ j ƒ  \ } } } t | ƒ \ } } | t k r¹ | } n  | sÈ t	 } n  |  j
 | ƒ } |  d | d | j d | j d | j d | j d	 | d | ƒ S(   Nu   @R!   R:   R;   u    R<   R=   i    R9   u8   (?:([^\s\[\]]+)::)?([^\s\[\]]+)(?:\[([a-zA-Z0-9_-]+)\])?R@   (   R   R   R   R&   R0   t   ret   searcht   groupsR5   R   t   parse_dist_nameR:   R;   R<   R=   (	   R*   t   stringR   t	   REGEX_STRR!   R1   t   w_f_dR@   t   dist_details(    (    s0   lib/python2.7/site-packages/conda/models/dist.pyR   ™   s2    !						c         C` s.  |  } y
t  |  ƒ }  t |  ƒ \ } } d | k rL | j d d ƒ d } n | j d d ƒ d } | j d d ƒ } | d } | d } t | ƒ d k r¤ | d n d	 } d	 j t d
 „  | rÒ | j d ƒ d n d ƒ ƒ }	 |	 rð t |	 ƒ n d }
 t | | | |
 | | ƒ SWn t d | ƒ ‚ n Xd  S(   Nu   ::i   iÿÿÿÿu   /u   -i   i    i   u    c         S` s
   |  j  ƒ  S(   N(   t   isdigit(   t   x(    (    s0   lib/python2.7/site-packages/conda/models/dist.pyt   <lambda>Ñ   s    u   _u   0u*   dist_name is not a valid conda package: %s(	   R   R5   RI   R   RQ   t   filtert   intt   DistDetailsR	   (   R[   t   original_stringt   no_fmt_stringR@   R9   RJ   R:   R;   R<   t   build_number_as_stringR=   (    (    s0   lib/python2.7/site-packages/conda/models/dist.pyRZ   ¿   s"    

"%c         ` sj  t  ˆ  ƒ s t ˆ  ƒ ‚ t ‡  f d †  t Dƒ ƒ rT d ˆ  k rT t d ˆ  ƒ ‚ n  |  j ˆ  ƒ } d ˆ  k r¶ ˆ  j d d ƒ d } t j } | j	 d ƒ d } t
 t | ƒ ƒ } ne ˆ  j d d ƒ d } t | t j ƒ } | rú | j d d ƒ d n | } | rt | ƒ j n t } |  d | d | j d	 | j d
 | j d | j d | j d | d | d | j ƒ 	S(   Nc         3` s   |  ] } ˆ  j  | ƒ Vq d  S(   N(   R0   (   t   .0R2   (   R'   (    s0   lib/python2.7/site-packages/conda/models/dist.pys	   <genexpr>Þ   s    u   ::u   url '%s' is not a conda packagei   i    u   /R!   R:   R;   R<   R=   R9   R>   R?   R@   (   R   t   AssertionErrort   anyR   R	   RZ   RI   R   RC   t   splitR   R   R   t   known_subdirsR"   R   R:   R;   R<   R=   R9   R@   (   R*   R'   R^   t   url_no_tarballR?   R>   R!   (    (   R'   s0   lib/python2.7/site-packages/conda/models/dist.pyR&   Û   s,    )	"					c         C` sL   |  j  s d  S|  j |  j } |  j r< t |  j  |  j | ƒ St |  j  | ƒ S(   N(   R>   t   NoneR9   R@   R?   R   (   RB   t   filename(    (    s0   lib/python2.7/site-packages/conda/models/dist.pyt   to_url÷   s
    	c         C` s   |  j  |  j f S(   N(   R!   R9   (   RB   (    (    s0   lib/python2.7/site-packages/conda/models/dist.pyt   __key__ÿ   s    c         C` s.   t  | |  j ƒ s t ‚ |  j ƒ  | j ƒ  k  S(   N(   R   t	   __class__Ri   Rq   (   RB   t   other(    (    s0   lib/python2.7/site-packages/conda/models/dist.pyt   __lt__  s    c         C` s.   t  | |  j ƒ s t ‚ |  j ƒ  | j ƒ  k S(   N(   R   Rr   Ri   Rq   (   RB   Rs   (    (    s0   lib/python2.7/site-packages/conda/models/dist.pyt   __gt__  s    c         C` s.   t  | |  j ƒ s t ‚ |  j ƒ  | j ƒ  k S(   N(   R   Rr   Ri   Rq   (   RB   Rs   (    (    s0   lib/python2.7/site-packages/conda/models/dist.pyt   __le__
  s    c         C` s.   t  | |  j ƒ s t ‚ |  j ƒ  | j ƒ  k S(   N(   R   Rr   Ri   Rq   (   RB   Rs   (    (    s0   lib/python2.7/site-packages/conda/models/dist.pyt   __ge__  s    c         C` s   t  |  j ƒ  |  j f ƒ S(   N(   t   hashRq   R@   (   RB   (    (    s0   lib/python2.7/site-packages/conda/models/dist.pyt   __hash__  s    c         C` s(   t  | |  j ƒ o' |  j ƒ  | j ƒ  k S(   N(   R   Rr   Rq   (   RB   Rs   (    (    s0   lib/python2.7/site-packages/conda/models/dist.pyt   __eq__  s    c         C` s   |  j  | ƒ S(   N(   Rz   (   RB   Rs   (    (    s0   lib/python2.7/site-packages/conda/models/dist.pyt   __ne__  s    iÿÿÿÿc         C` s5   | d k s t  ‚ |  j r+ |  j |  j g S|  j g S(   Nu   ::(   Ri   R!   R9   (   RB   t   sept   maxsplit(    (    s0   lib/python2.7/site-packages/conda/models/dist.pyRk     s    c         C` so   | d k s t  ‚ | d k s$ t  ‚ |  j rG d |  j |  j d f n
 |  j d } | |  j d |  j d f S(   Nu   -i   u   %s::%si    i   (   Ri   R!   RK   (   RB   R|   R}   R:   (    (    s0   lib/python2.7/site-packages/conda/models/dist.pyRI   #  s    0c         C` s   |  j  j | ƒ S(   N(   R9   t
   startswith(   RB   t   match(    (    s0   lib/python2.7/site-packages/conda/models/dist.pyR~   )  s    c         C` s"   t  t | ƒ ƒ } | |  j ƒ  k S(   N(   R3   R   RF   (   RB   t   item(    (    s0   lib/python2.7/site-packages/conda/models/dist.pyt   __contains__,  s    c         C` s
   |  j  ƒ  S(   N(   RP   (   RB   (    (    s0   lib/python2.7/site-packages/conda/models/dist.pyR    0  s    N(4   R.   R/   R   t   Truet   _lazy_validateR   t   FalseR!   R9   R:   R@   R;   R<   R   R=   R>   R?   Rn   RA   RE   t   propertyRG   RD   RC   RH   RK   RF   RL   RN   RP   RR   RV   t   classmethodR   R   t   staticmethodRZ   R&   Rp   Rq   Rt   Ru   Rv   Rw   Ry   Rz   R{   Rk   RI   R~   R   R    (    (    (    s0   lib/python2.7/site-packages/conda/models/dist.pyR   C   sV   	
			%											c         C` sd   t  |  ƒ }  d |  k r3 |  j d d ƒ \ } }  n t } |  j d d ƒ \ } } } | | | | f S(   Nu   ::i   u   -i   (   R3   Rk   R   RI   (   t   dist_strt   channel_strR:   R;   RD   (    (    s0   lib/python2.7/site-packages/conda/models/dist.pyt   dist_str_to_quad5  s    (   u   nameu   versionu   build_stringu   build_numberu	   dist_nameu   fmt(0   t
   __future__R    R   R   R   t   collectionsR   t   loggingR   RW   R!   R   t   package_infoR   t   recordsR   t    R	   t   _vendor.auxlib.entityR
   R   R   R   t   base.constantsR   R   R   t   base.contextR   t   common.compatR   R   R   t   common.constantsR   t
   common.urlR   R   R   R.   t   logRd   t   IndexRecordR   R3   R5   R   RŠ   (    (    (    s0   lib/python2.7/site-packages/conda/models/dist.pyt   <module>   s.   ""			ñ