ó
Ý²k^c           @` s  d  Z  d d l m Z m Z m Z m Z d d l m Z m Z d d l	 m
 Z
 d d l m Z m Z m Z m Z m Z m Z d d l m Z d d	 l m Z m Z m Z m Z m Z m Z m Z m Z m Z d d
 l m Z m  Z  d d l! m" Z" d d l# m$ Z$ m% Z% m& Z& m' Z' d d l( m) Z) d e f d „  ƒ  YZ* d e f d „  ƒ  YZ+ d e f d „  ƒ  YZ, d e e f d „  ƒ  YZ- e- d d ƒ Z. d e f d „  ƒ  YZ/ d e f d „  ƒ  YZ0 d e f d „  ƒ  YZ1 d e f d „  ƒ  YZ2 d  e f d! „  ƒ  YZ3 d" e f d# „  ƒ  YZ4 d$ e4 f d% „  ƒ  YZ5 d& e f d' „  ƒ  YZ6 d( e e f d) „  ƒ  YZ7 d* e f d+ „  ƒ  YZ8 d, e7 f d- „  ƒ  YZ9 d. e7 f d/ „  ƒ  YZ: d0 S(1   u>  
                         +---------------+
                         | PackageRecord |
                         +--+---------+--+
+--------------------+      |         |      +--------------+
| PackageCacheRecord <------+         +------> PrefixRecord |
+--------------------+                       +--------------+


i    (   t   absolute_importt   divisiont   print_functiont   unicode_literals(   t   basenamet   joini   (   t   Channel(   t   FileModet   LinkTypet
   NoarchTypet   PackageTypet   PathTypet   Platform(   t	   MatchSpeci   (	   t   BooleanFieldt   ComposableFieldt   DictSafeMixint   Entityt	   EnumFieldt   IntegerFieldt	   ListFieldt   NumberFieldt   StringField(   t   dt_to_timestampt   isoparse(   t   context(   t
   isiterablet
   itervaluest   string_typest	   text_type(   t   PathNotFoundErrort   LinkTypeFieldc           B` s   e  Z d  „  Z RS(   c         C` s‚   t  | t ƒ rf | j d d ƒ j d d ƒ j ƒ  } | d k rK t j } qf | d k rf t j } qf n  t t |  ƒ j	 | | | ƒ S(   Nu   -u    u   _u   hardu   soft(
   t
   isinstanceR   t   replacet   lowerR   t   hardlinkt   softlinkt   superR   t   box(   t   selft   instancet   instance_typet   val(    (    s3   lib/python2.7/site-packages/conda/models/records.pyR&      s    $(   t   __name__t
   __module__R&   (    (    (    s3   lib/python2.7/site-packages/conda/models/records.pyR      s   t   NoarchFieldc           B` s   e  Z d  „  Z RS(   c         C` s%   t  t |  ƒ j | | t j | ƒ ƒ S(   N(   R%   R-   R&   R	   t   coerce(   R'   R(   R)   R*   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyR&   *   s    (   R+   R,   R&   (    (    (    s3   lib/python2.7/site-packages/conda/models/records.pyR-   )   s   t   TimestampFieldc           B` sJ   e  Z d  „  Z e d „  ƒ Z e d „  ƒ Z d „  Z d „  Z d „  Z RS(   c         C` s)   t  t |  ƒ j d d d t d t ƒ d  S(   Nt   defaulti    t   requiredt   default_in_dump(   R%   R/   t   __init__t   False(   R'   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyR3   0   s    c         C` s,   |  r( |  }  |  d k r( |  d }  q( n  |  S(   NIAôÿ:   iè  (    (   R*   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyt   _make_seconds3   s
    c         C` s,   |  r( |  d k  r |  d 9}  n  |  }  n  |  S(   NIAôÿ:   iè  (    (   R*   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyt   _make_milliseconds;   s
    	c         C` s%   |  j  t t |  ƒ j | | | ƒ ƒ S(   N(   R5   R%   R/   R&   (   R'   R(   R)   R*   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyR&   C   s    c         C` s+   t  |  j t t |  ƒ j | | | ƒ ƒ ƒ S(   N(   t   intR6   R%   R/   t   dump(   R'   R(   R)   R*   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyR8   H   s    	c         C` sm   y t  t |  ƒ j | | ƒ SWnI t k
 rh y t t t | j ƒ ƒ ƒ SWqi t t f k
 rd d SXn Xd  S(   Ni    (	   R%   R/   t   __get__t   AttributeErrorR7   R   R   t   datet
   ValueError(   R'   R(   R)   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyR9   M   s    (	   R+   R,   R3   t   staticmethodR5   R6   R&   R8   R9   (    (    (    s3   lib/python2.7/site-packages/conda/models/records.pyR/   .   s   			t   Linkc           B` s#   e  Z e ƒ  Z e e d  e ƒZ RS(   R1   (   R+   R,   R   t   sourceR   R   R4   t   type(    (    (    s3   lib/python2.7/site-packages/conda/models/records.pyR>   W   s   	R?   u    t   _FeaturesFieldc           B` s#   e  Z d  „  Z d „  Z d „  Z RS(   c         K` s   t  t |  ƒ j t |  d  S(   N(   R%   RA   R3   R   (   R'   t   kwargs(    (    s3   lib/python2.7/site-packages/conda/models/records.pyR3   a   s    c         C` si   t  | t ƒ r- | j d d ƒ j d ƒ } n  t d „  d „  | Dƒ Dƒ ƒ } t t |  ƒ j | | | ƒ S(   Nu    u   ,c         s` s   |  ] } | r | Vq d  S(   N(    (   t   .0t   f(    (    s3   lib/python2.7/site-packages/conda/models/records.pys	   <genexpr>g   s    c         s` s   |  ] } | j  ƒ  Vq d  S(   N(   t   strip(   RC   t   ff(    (    s3   lib/python2.7/site-packages/conda/models/records.pys	   <genexpr>g   s    (   R    R   R!   t   splitt   tupleR%   RA   R&   (   R'   R(   R)   R*   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyR&   d   s     c         C` s'   t  | ƒ r d j | ƒ S| p" d Sd  S(   Nu    (    (   R   R   (   R'   R(   R)   R*   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyR8   j   s    (   R+   R,   R3   R&   R8   (    (    (    s3   lib/python2.7/site-packages/conda/models/records.pyRA   _   s   		t   ChannelFieldc           B` s&   e  Z d d  „ Z d „  Z d „  Z RS(   c         C` s&   t  t |  ƒ j t d t d | ƒd  S(   NR1   t   aliases(   R%   RI   R3   R   R4   (   R'   RJ   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyR3   s   s    c         C` s'   | r t  | ƒ S| j } t  | ƒ Sd  S(   N(   R   t   channel(   R'   R(   R)   R*   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyR8   v   s    
	c         C` sT   y t  t |  ƒ j | | ƒ SWn0 t k
 rO | j } |  j | | t | ƒ ƒ SXd  S(   N(   R%   RI   R9   R:   t   urlt   unboxR   (   R'   R(   R)   RL   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyR9   }   s
    	(    (   R+   R,   R3   R8   R9   (    (    (    s3   lib/python2.7/site-packages/conda/models/records.pyRI   q   s   	t   SubdirFieldc           B` s   e  Z d  „  Z d „  Z RS(   c         C` s   t  t |  ƒ j d t ƒ d  S(   NR1   (   R%   RN   R3   R4   (   R'   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyR3   ‡   s    c         C` s8  y t  t |  ƒ j | | ƒ SWnt k
 r3y | j } Wn t k
 rS d  } n X| rv |  j | | t | ƒ j ƒ Sy | j	 j
 | j } } Wn t k
 r¯ d \ } } n X| rÐ | rÐ |  j | | d ƒ S| rd | k rý d | k rô d n d } n  |  j | | d | | f ƒ S|  j | | t j ƒ Sn Xd  S(   Nu   noarchu   x86u   64u   32u   %s-%s(   NN(   R%   RN   R9   R:   RL   t   NoneRM   R   t   subdirt   platformt   namet   archR   (   R'   R(   R)   RL   RQ   RS   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyR9   Š   s(    
(   R+   R,   R3   R9   (    (    (    s3   lib/python2.7/site-packages/conda/models/records.pyRN   …   s   	t   FilenameFieldc           B` s   e  Z d d  „ Z d „  Z RS(   c         C` s#   t  t |  ƒ j d t d | ƒ d  S(   NR1   RJ   (   R%   RT   R3   R4   (   R'   RJ   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyR3   ¥   s    c         C` s¯   y t  t |  ƒ j | | ƒ SWn‹ t k
 rª y. | j } t | ƒ j } | sZ t ƒ  ‚ n  Wn- t k
 rŠ d | j | j | j	 f } n X| s— t
 ‚ |  j | | | ƒ SXd  S(   Nu   %s-%s-%s(   R%   RT   R9   R:   RL   R   t   package_filenameRR   t   versiont   buildt   AssertionErrorRM   (   R'   R(   R)   RL   t   fn(    (    s3   lib/python2.7/site-packages/conda/models/records.pyR9   ¨   s    	 (    (   R+   R,   R3   R9   (    (    (    s3   lib/python2.7/site-packages/conda/models/records.pyRT   £   s   t   PackageTypeFieldc           B` s   e  Z d  „  Z d „  Z RS(   c      
   C` s2   t  t |  ƒ j t d t d t d d  d t ƒd  S(   NR1   t   nullableR0   R2   (   R%   RZ   R3   R
   R4   t   TrueRO   (   R'   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyR3   ¹   s    !c         C` sˆ   t  t |  ƒ j | | ƒ } | d  k r„ | j } | r„ i t j t j 6t j	 t j
 6} | t j | ƒ } |  j | | | ƒ } q„ n  | S(   N(   R%   RZ   R9   RO   t   noarchR
   t   NOARCH_GENERICR	   t   generict   NOARCH_PYTHONt   pythonR.   RM   (   R'   R(   R)   R*   t
   noarch_valt   type_map(    (    s3   lib/python2.7/site-packages/conda/models/records.pyR9   ½   s    	(   R+   R,   R3   R9   (    (    (    s3   lib/python2.7/site-packages/conda/models/records.pyRZ   ·   s   	t   PathDatac        	   B` s†   e  Z e ƒ  Z e d  e d e d d d e ƒ Z e e	 d  e d e ƒZ
 e d  e d e d d d e ƒ Z e e ƒ Z e d „  ƒ Z RS(   R1   R[   R0   R2   c         C` s   |  j  S(   N(   t   _path(   R'   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyt   pathÔ   s    N(   R+   R,   R   Re   R4   R\   RO   t   prefix_placeholderR   R   t	   file_modeR   t   no_linkR   t	   path_typet   propertyRf   (    (    (    s3   lib/python2.7/site-packages/conda/models/records.pyRd   Ì   s   		!t
   PathDataV1c           B` s_   e  Z e d  e d e ƒ Z e d  e d e ƒ Z e e	 d  e d e ƒZ
 e d  e d e ƒ Z RS(   R1   R[   (   R+   R,   R   R4   R\   t   sha256R   t   size_in_bytesR   R   t   inode_pathst   sha256_in_prefix(    (    (    s3   lib/python2.7/site-packages/conda/models/records.pyRl   Ú   s   t	   PathsDatac           B` s   e  Z e ƒ  Z e e ƒ Z RS(    (   R+   R,   R   t   paths_versionR   Rd   t   paths(    (    (    s3   lib/python2.7/site-packages/conda/models/records.pyRq   ã   s   	t   PackageRecordc        
   B` sÉ  e  Z e ƒ  Z e ƒ  Z e d  d ƒ Z e ƒ  Z e d  d ƒ Z	 e
 ƒ  Z e d  d ƒ Z e d d d e d e d e ƒ Z e d d d e d e d e ƒ Z e d e d e d e ƒ Z e d d d e d e d e ƒ Z e d d d e d e d e ƒ Z e d „  ƒ Z e d	 „  ƒ Z d
 „  Z d „  Z d „  Z d „  Z e d e d e ƒ Z e e d e d e ƒZ  e! e" d d ƒZ# e! e" d d ƒZ$ e% d e d d d e ƒ Z& e% d e d d d e ƒ Z' e( e) d e d e d d d e ƒZ* e d e d e d d d e ƒ Z+ e d e d e d d d e ƒ Z, e d e d e d d d e ƒ Z- e. ƒ  Z/ e d „  ƒ Z0 e1 ƒ  Z2 e d „  ƒ Z3 e d e ƒ Z4 e d e ƒ Z5 d „  Z6 d „  Z7 d „  Z8 e d „  ƒ Z9 d „  Z: RS(   RJ   u   build_stringu   schannelu   filenameR0   R1   R[   R2   c         C` s
   |  j  j S(   N(   RK   t   canonical_name(   R'   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyt   schannelý   s    c         C` s†   y |  j  SWnt t k
 r |  j j |  j |  j |  j |  j |  j g } |  _  t	 j
 rk | j |  j ƒ n  t | ƒ |  _  |  j  SXd  S(   N(   t   _PackageRecord__pkeyR:   RK   Ru   RP   RR   RV   t   build_numberRW   R   t   separate_format_cachet   appendRY   RH   (   R'   Rw   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyt   _pkey  s    	c         C` s8   y |  j  SWn# t k
 r0 t |  j ƒ |  _  n X|  j  S(   N(   t   _hashR:   t   hashR{   (   R'   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyt   __hash__  s
    c         C` s   |  j  | j  k S(   N(   R{   (   R'   t   other(    (    s3   lib/python2.7/site-packages/conda/models/records.pyt   __eq__  s    c         C` s<   d |  j  j |  j r" d |  j n d |  j |  j |  j f S(   Nu   %s%s::%s-%s-%su   /u    (   RK   Ru   RP   RR   RV   RW   (   R'   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyt   dist_str  s    	c         C` sj   i |  j  j d 6|  j d 6|  j d 6|  j  j d 6|  j ƒ  j d ƒ d d 6|  j d 6|  j d	 6|  j d
 6S(   Nu   base_urlu   build_numberu   build_stringu   channelu   :iÿÿÿÿu	   dist_nameu   nameu   platformu   version(	   RK   t   base_urlRx   RW   RR   R   RG   RP   RV   (   R'   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyt   dist_fields_dump"  s    



c         C` s   |  j  t j ƒ  k S(   N(   t   package_typeR
   t   unmanageable_package_types(   R'   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyt   is_unmanageable@  s    c         C` s„   d d l  m } d „  | j |  j ƒ Dƒ } xE |  j p; d D]4 } | | ƒ } | | d | j | k ƒ| | j <q< Wt t | ƒ ƒ S(   Ni   (   R   c         S` s   i  |  ] } | | j  “ q S(    (   RR   (   RC   t   ms(    (    s3   lib/python2.7/site-packages/conda/models/records.pys
   <dictcomp>I  s   	 t   optional(    (   t
   match_specR   t   merget   dependst
   constrainsRR   RH   R   (   R'   R   t   resultt   specR‡   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyt   combined_dependsF  s    &c         C` s)   d |  j  j |  j |  j |  j |  j f S(   Nu   %s/%s::%s==%s=%s(   RK   Ru   RP   RR   RV   RW   (   R'   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyt   __str__[  s    c         C` s4   t  d |  j d |  j d |  j d |  j d |  j ƒ S(   NRK   RP   RR   RV   RW   (   R   RK   RP   RR   RV   RW   (   R'   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyt   to_match_spec_  s    				c         C` s   t  d |  j d |  j ƒ S(   NRR   RV   (   R   RR   RV   (   R'   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyt   to_simple_match_spech  s    	c         C` s   d |  j  S(   Nu   global:(   RR   (   R'   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyt   namekeyn  s    c         C` s)   d |  j  j |  j |  j |  j |  j f S(   Nu   %s/%s::%s-%s-%s(   RK   RR   RP   RV   RW   (   R'   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyt	   record_idr  s    (   u   build_string(   u   schannel(   u   filenameN(    (    (    (    (;   R+   R,   R   RR   RV   RW   R   Rx   RI   RK   RN   RP   RT   RY   RO   R4   R\   t   md5t   legacy_bz2_md5t   legacy_bz2_sizeRL   Rm   Rk   Rv   R{   R~   R€   R   Rƒ   RS   R   R   RQ   R   R   R‹   RŒ   RA   t   track_featurest   featuresR-   R	   R]   t   preferred_envt   licenset   license_familyRZ   R„   R†   R/   t	   timestampR   R;   t   sizeR   R‘   R’   R“   R”   (    (    (    s3   lib/python2.7/site-packages/conda/models/records.pyRt   é   sT   				!	!!					!!							t   Md5Fieldc           B` s   e  Z d  „  Z d „  Z RS(   c         C` s#   t  t |  ƒ j d t d t ƒ d  S(   NR1   R[   (   R%   RŸ   R3   R4   R\   (   R'   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyR3   }  s    c         C` s_   y t  t |  ƒ j | | ƒ SWn; t k
 rZ } y | j ƒ  SWq[ t k
 rV | ‚ q[ Xn Xd  S(   N(   R%   RŸ   R9   R:   t   _calculate_md5sumR   (   R'   R(   R)   t   e(    (    s3   lib/python2.7/site-packages/conda/models/records.pyR9   €  s    (   R+   R,   R3   R9   (    (    (    s3   lib/python2.7/site-packages/conda/models/records.pyRŸ   {  s   	t   PackageCacheRecordc           B` sY   e  Z e ƒ  Z e ƒ  Z e ƒ  Z e d  „  ƒ Z e d „  ƒ Z	 e d „  ƒ Z
 d „  Z RS(   c         C` s   d d l  m } | |  j ƒ S(   Ni   (   t   isfile(   t   gateways.disk.readR£   t   package_tarball_full_path(   R'   R£   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyt
   is_fetched‘  s    c         C` sA   d d l  m } m } |  j } | | ƒ o@ | t | d d ƒ ƒ S(   Ni   (   t   isdirR£   u   infou
   index.json(   R¤   R§   R£   t   extracted_package_dirR   (   R'   R§   R£   t   epd(    (    s3   lib/python2.7/site-packages/conda/models/records.pyt   is_extracted–  s    	c         C` s   t  |  j ƒ S(   N(   R   R¥   (   R'   (    (    s3   lib/python2.7/site-packages/conda/models/records.pyt   tarball_basenameœ  s    c         C` sr   t  |  d d  ƒ } | r | Sd d l m } | |  j ƒ rn d d l m } | |  j ƒ } t |  d | ƒ | Sd  S(   Nu   _memoized_md5i    (   R£   i   (   t   compute_md5sum(   t   getattrRO   t   os.pathR£   R¥   R¤   R¬   t   setattr(   R'   t   memoized_md5R£   R¬   t   md5sum(    (    s3   lib/python2.7/site-packages/conda/models/records.pyR       s    (   R+   R,   R   R¥   R¨   RŸ   R•   Rk   R¦   Rª   R«   R    (    (    (    s3   lib/python2.7/site-packages/conda/models/records.pyR¢   Š  s   			t   PrefixRecordc           B` s’   e  Z e d  e ƒ Z e d  e ƒ Z e e d d d  e ƒZ e	 e
 d  e d e d e ƒZ e	 e d  e ƒZ e d  e ƒ Z e d  e d e ƒ Z RS(   R1   R0   R[   R2   (    (   R+   R,   R   R4   R¥   R¨   R   R   t   filesR   Rq   R\   t
   paths_dataR>   t   linkt   requested_spect   auth(    (    (    s3   lib/python2.7/site-packages/conda/models/records.pyR²   ­  s   N(;   t   __doc__t
   __future__R    R   R   R   R®   R   R   RK   R   t   enumsR   R   R	   R
   R   R   R‰   R   t   _vendor.auxlib.entityR   R   R   R   R   R   R   R   R   t   _vendor.boltons.timeutilsR   R   t   base.contextR   t   common.compatR   R   R   R   t
   exceptionsR   R   R-   R/   R>   t
   EMPTY_LINKRA   RI   RN   RT   RZ   Rd   Rl   Rq   Rt   RŸ   R¢   R²   (    (    (    s3   lib/python2.7/site-packages/conda/models/records.pyt   <module>   s6   ".@")	’#