ó
Ý²k^c        
   @` s$  d  d l  m Z m Z m Z 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 d	 d
 l m Z d	 d l m Z m Z d	 d l m Z d	 d l m Z d	 d l m Z m Z d	 d l m Z m Z d	 d l  m! Z! d	 d l" m# Z# m$ Z$ d	 d l% m& Z& d	 d l' m( Z( d	 d l) m* Z* m+ Z+ m, Z, m- Z- e	 e. ƒ Z/ d „  Z0 g  Z1 e d ƒ d" e2 d e4 e4 d d e j5 d d „ ƒ Z6 e4 d e j5 d d „ Z7 d „  Z8 d „  Z9 d „  Z: d d „ Z; d# d „ Z< d „  Z= d$ e2 d e4 d  „ Z> d! „  Z? d S(%   i    (   t   absolute_importt   divisiont   print_functiont   unicode_literalsN(   t   chain(   t	   getLoggeri   (   t   PackageCacheData(   t
   PrefixData(   t
   SubdirDatat   make_feature_recordi   (   t
   IndexedSet(   t   concatt   concatv(   t   context(   t
   itervalues(   t   ThreadLimitedThreadPoolExecutort   time_recorder(   t   ChannelNotAllowedt   InvalidSpec(   t   initialize_logging(   t   Channelt   all_channel_urls(   t   PackageType(   t	   MatchSpec(   t
   EMPTY_LINKt   PackageCacheRecordt   PackageRecordt   PrefixRecordc         ` s€   t  j r| t t d „  t  j Dƒ ƒ ƒ ‰  xQ |  D]F } t | ƒ j } t ‡  f d †  | Dƒ ƒ s/ t t | ƒ ƒ ‚ q/ q/ Wn  d  S(   Nc         s` s   |  ] } t  | ƒ j Vq d  S(   N(   R   t	   base_urls(   t   .0t   c(    (    s/   lib/python2.7/site-packages/conda/core/index.pys	   <genexpr>   s    c         3` s   |  ] } | ˆ  k Vq d  S(   N(    (   R   t   this_url(   t   whitelist_channel_urls(    s/   lib/python2.7/site-packages/conda/core/index.pys	   <genexpr>#   s    (   R   t   whitelist_channelst   tupleR   R   R   t   allR   (   t   channel_urlst   urlt
   these_urls(    (   R    s/   lib/python2.7/site-packages/conda/core/index.pyt   check_whitelist   s    	u	   get_indexiÿÿÿÿc   	      C` s°   t  ƒ  t j r% | d k r% t } n  t |  | | | ƒ }  t 2t j |  ƒ t |  ƒ t	 |  d | d | ƒ} | rƒ t
 | | ƒ n  | r– t | ƒ n  t j r¬ t | ƒ n  | S(   u  
    Return the index of packages available on the channels

    If prepend=False, only the channels passed in as arguments are used.
    If platform=None, then the current platform is used.
    If prefix is supplied, then the packages installed in that prefix are added.
    t	   use_cachet   repodata_fnN(   R   R   t   offlinet   Nonet   Truet   calculate_channel_urlst   LAST_CHANNEL_URLSt   extendR'   t   fetch_indext   _supplement_index_with_prefixt   _supplement_index_with_cachet   track_featurest   _supplement_index_with_features(	   R$   t   prependt   platformt	   use_localR(   t   unknownt   prefixR)   t   index(    (    s/   lib/python2.7/site-packages/conda/core/index.pyt	   get_index)   s    	
	c         ` s|   t  j d t |  ƒ ƒ i  } t ƒ  P } ‡  f d †  } x7 | j | |  ƒ D]# } | j d „  | j ƒ  Dƒ ƒ qK WWd  QX| S(   Nu   channel_urls=c         ` s   t  t |  ƒ d ˆ  ƒS(   NR)   (   R   R   (   R%   (   R)   (    s/   lib/python2.7/site-packages/conda/core/index.pyt   <lambda>N   s    c         s` s   |  ] } | | f Vq d  S(   N(    (   R   t   rec(    (    s/   lib/python2.7/site-packages/conda/core/index.pys	   <genexpr>P   s    (   t   logt   debugt   reprR   t   mapt   updatet   iter_records(   R$   R(   R:   R)   t   executort   subdir_instantiatort   f(    (   R)   s/   lib/python2.7/site-packages/conda/core/index.pyR0   J   s    'c         ` s/   t  j | ƒ ‰  t ‡  f d †  t |  ƒ Dƒ ƒ S(   Nc         3` s   |  ] } ˆ  j  | ƒ Vq d  S(   N(   t   match(   R   t   prec(   t
   match_spec(    s/   lib/python2.7/site-packages/conda/core/index.pys	   <genexpr>V   s    (   R   t   from_dist_strt   anyR   (   R:   t   dist_str(    (   RI   s/   lib/python2.7/site-packages/conda/core/index.pyt   dist_str_in_indexT   s    c         C` s¾   | s t  ‚ x« t | ƒ j ƒ  D]— } | |  k r¬ |  | } | j | j k r | j d ƒ p_ t } t j | | d | ƒ|  | <q¶ | j } | j ƒ  | _	 | `
 | |  | <q | |  | <q Wd  S(   Nu   linkt   link(   t   AssertionErrorR   RC   t   channelt   getR   R   t   from_objectsR%   t   _Channel__canonical_namet   _PackageRecord__pkey(   R:   R9   t   prefix_recordt   current_recordRN   t   prefix_channel(    (    s/   lib/python2.7/site-packages/conda/core/index.pyR1   Y   s    
			c         C` sT   xM t  j ƒ  D]? } | |  k rB |  | } t j | | ƒ |  | <q | |  | <q Wd  S(   N(   R   t   get_all_extracted_entriesR   RR   (   R:   t   pcrecRV   (    (    s/   lib/python2.7/site-packages/conda/core/index.pyR2   }   s
    
c         C` sI   t  d t j d |  d | p d d d d d d t j d	 d
 d d d |  ƒ 	S(   Nt   package_typet   namet   versionu   0t   buildRP   u   @t   subdirt   md5u    12345678901234567890123456789012t   build_numberi    t   fn(   R   R   t   VIRTUAL_SYSTEMR   R^   (   R[   R\   (    (    s/   lib/python2.7/site-packages/conda/core/index.pyt   _make_virtual_packageˆ   s    		c         C` s7   x0 t  t j | ƒ D] } t | ƒ } | |  | <q Wd  S(   N(   R   R   R3   R	   (   R:   t   featurest   featureR=   (    (    s/   lib/python2.7/site-packages/conda/core/index.pyR4   •   s    c         C` sò   t  j } | d  k	 r1 t d | ƒ } | |  | <n  t  j \ } } | d k r’ t j j d | ƒ } t | ƒ d k r’ t d | ƒ } | |  | <q’ n  t  j	 \ } } | rî | rî t j
 d j | j ƒ  ƒ | ƒ } t d | | ƒ } | |  | <n  d  S(   Nu   __cudau   OSXu   CONDA_OVERRIDE_OSXi    u   __osxu   CONDA_OVERRIDE_{}u   __(   R   t   cuda_versionR+   Rc   t   os_distribution_name_versiont   ost   environRQ   t   lent   libc_family_versiont   getenvt   formatt   upper(   R:   Rf   R=   t	   dist_namet   dist_versiont   libc_familyt   libc_version(    (    s/   lib/python2.7/site-packages/conda/core/index.pyt   _supplement_index_with_system›   s    	!c         C` sc   | r d g t  |  ƒ }  n  | r2 |  t j 7}  n  | d  k	 rJ | d f n t j } t |  d | ƒS(   Nu   localu   noarcht   subdirs(   t   listR   t   channelsR+   Rt   R   (   R$   R5   R6   R7   Rt   (    (    s/   lib/python2.7/site-packages/conda/core/index.pyR-   ¯   s    !c         ` s‰  t  ƒ  } t ƒ  ‰  t ƒ  ‰ t ƒ  ‰ t ƒ  ‰ ‡  ‡ ‡ ‡ f d †  ‰ ‡ f d †  } |  r„ x' t |  ƒ j ƒ  D] } | | ƒ qm Wn  x | D] } ˆ | ƒ q‹ Wx	ˆ s® ˆ rªxx ˆ r(ˆ j ƒ  }	 ˆ  j |	 ƒ t |	 ƒ } t j | d | d | d | ƒ}
 x |
 D] } | | ƒ qW| j	 |
 ƒ q± Wx{ ˆ r¦ˆ j ƒ  } ˆ j | ƒ t d | ƒ } t j | d | d | d | ƒ}
 x |
 D] } | | ƒ q‚W| j	 |
 ƒ q,Wq¢ Wd „  | Dƒ } |  d  k	 r×t | |  ƒ n  t j sûd t j k rt j j rt | ƒ n  t ƒ  } x0 t | ƒ D]" } | j	 t | j | j ƒ ƒ qW| j	 t j ƒ x$ | D] } t | ƒ } | | | <q[Wt | ƒ | S(	   Nc         ` sz   |  j  d ƒ } | r1 | ˆ  k r1 ˆ j | ƒ n  |  j  d ƒ } | rv x- | D]" } | ˆ k rM ˆ j | ƒ qM qM Wn  d  S(   Nu   nameu   track_features(   t   get_raw_valuet   add(   t   specR[   R3   t   ftr_name(   t   collected_namest   collected_track_featurest   pending_namest   pending_track_features(    s/   lib/python2.7/site-packages/conda/core/index.pyt	   push_specÀ   s    c         ` s©   y |  j  } Wn4 t k
 rC } t j d |  j ƒ  | j d ƒ d  SXˆ  t |  j ƒ ƒ x | D] } ˆ  | ƒ q^ W|  j r¥ x' |  j D] } ˆ  t d | ƒ ƒ q… Wn  d  S(   Nu"   Skipping %s due to InvalidSpec: %su   invalid_specR3   (	   t   combined_dependsR   R>   t   warningt	   record_idt   _kwargsR   R[   R3   (   t   recordR€   t   et   _specRz   (   R   (    s/   lib/python2.7/site-packages/conda/core/index.pyt   push_recordÊ   s    		Rv   Rt   R)   R3   c         S` s   i  |  ] } | | “ q S(    (    (   R   R=   (    (    s/   lib/python2.7/site-packages/conda/core/index.pys
   <dictcomp>ó   s   	 u   unknown(   R
   t   setR   RC   t   popRx   R   R   t	   query_allRB   R+   R1   R   R*   t   _argparse_argsR8   R2   R   R   R3   Rd   R	   Rs   (   R9   Rv   Rt   t   specsR)   t   recordsR‡   t
   prefix_recRy   R[   t   new_recordsR„   t   feature_namet   reduced_indext   known_featuresR=   t   ftr_str(    (   R{   R|   R}   R~   R   s/   lib/python2.7/site-packages/conda/core/index.pyt   get_reduced_index¹   s\    					
					 
(    (    (    (@   t
   __future__R    R   R   R   Rh   t	   itertoolsR   t   loggingR   t   package_cache_dataR   t   prefix_dataR   t   subdir_dataR   R	   t   _vendor.boltons.setutilsR
   t   _vendor.toolzR   R   t   base.contextR   t   common.compatR   t	   common.ioR   R   t
   exceptionsR   R   t   gateways.loggingR   t   models.channelR   R   t   models.enumsR   t   models.match_specR   t   models.recordsR   R   R   R   t   __name__R>   R'   R.   R,   R+   t   Falset   repodata_fnsR;   R0   RM   R1   R2   Rc   R4   Rs   R-   R”   (    (    (    s/   lib/python2.7/site-packages/conda/core/index.pyt   <module>   sB   ""			
		$		
