
ݲk^c           @` s1  d  Z  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 m Z d d
 l m Z m Z d d l m Z m Z d d l m Z 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) m* Z* m+ Z+ m, Z, d d l- m. Z. m/ Z/ d d l0 m1 Z1 d d l2 m3 Z3 d d l4 m5 Z5 d d l6 m7 Z7 d d l8 m9 Z9 d d l: m; Z; d d l< m= Z= m> Z> d d l? m@ Z@ e	 eA  ZB d   ZC d d1 d2 d  ZE d   ZF eG d d  ZH d    ZI d! d d"  ZJ e d#  eG d$   ZK d%   ZL d&   ZM d'   ZN e d(  eG d eG eO eO eG d eG eG d) 	  ZP d*   ZQ e d+  d eG d,   ZR d eG d d-  ZS d.   ZT eA d/ k r-d d0 lU mU ZU eU eV eJ e
 jW eX e
 jY d     n  d S(3   u,  
Handle the planning of installs and their execution.

NOTE:
    conda.install uses canonical package names in its interface functions,
    whereas conda.resolve uses package filenames, as those are used as index
    keys.  We try to keep fixes to this "impedance mismatch" local to this
    module.
i    (   t   absolute_importt   divisiont   print_functiont   unicode_literals(   t   defaultdict(   t	   getLoggerNi   (   t
   IndexedSet(   t   concatv(   t   DEFAULTS_CHANNEL_NAMEt   UNKNOWN_CHANNEL(   t   contextt   stack_context_default(   t
   itervaluest	   text_type(   t   env_varst   time_recorder(   t   LAST_CHANNEL_URLSt   _supplement_index_with_prefix(   t   PrefixSetupt   UnlinkLinkTransaction(   t   diff_for_unlink_link_precs(   t   CondaIndexErrort   PackagesNotFoundError(   t   History(   t   FETCHt   LINKt   SYMLINK_CONDAt   UNLINK(   t   Channelt   prioritize_channels(   t   Dist(   t   LinkType(   t   ChannelMatch(   t   PrefixGraph(   t   PackageRecord(   t   normalized_version(   t	   MatchSpect   dashlist(   t   human_bytesc         C` s   d } t  | d  t  | d d d f  xR |  D]J \ } } | | j d | j | j f } | rs | | 7} n  t  |  q3 Wd  S(	   Nu       %-27s|%17su   packageu   buildu   -i   i   (   u   packageu   buildu   -----------------(   t   printt   namet   versiont   build(   t   dists_extrast   fmtt   prect   extrat   line(    (    s)   lib/python2.7/site-packages/conda/plan.pyt   print_dists-   s    !c   -      ` s
  |  j  d  } d d g } | rB | j d |  | j d  n  | r | j d t t d   | D  d d  | j d  n  | r | j d	 t t d
   | D  d d  | j d  n  t d j |    d  k r t j  n  d   }  f d     |  j  t	  rt d  g  } xw |  t	 D]k }	 t
 |	 t  sPt  d t |	 d  }
   |	 j j  } | r|
 d | 7}
 n  | j |	 |
 f  q5Wt |  | rt |  t	  d k rt d   |  t	 D  } t d> d d  t d d d t |   qn  t d     t d     t d     t d    } i  } x |  j  t g   D] }	 t
 |	 t  st  |	 d } | |	   | d <|	 d d |	 d  | d <|	 | | d <t j | | <d  j |	 j  d!  pd?   | d <qmWx |  j  t g   D] }	 t
 |	 t  s7t  |	 d } | |	   | d" <|	 d d |	 d  | d" <|	 | | d" <d  j |	 j  d!  pd@   | d" <qW f d#    D }  f d$    D } xF | D]> } x5    | f D]! } | | d  d  d%  | | <qWqWt   } t   } t   } i  } i  } t }  r9t } t d&    D  d } t d'    j   D  } t d(    j   D  } t d)    j   D  } t d*    j   D  } t   f d+    j   D  } t   f d,    j   D  } x D]} d- | | f | | <| re| | c d. | 7<n   | d" r| | c d/ | 7<n  t | j  | t j   }  |  t j k rd n d0 |  }  | | k s| | k r| | c |  7<q.n  d1 | | | <| r| | c d2 | 7<n   | d rB| | c d3 | 7<n  | | c |  7<| | d" }! | | d }" |! j  d4  }# |" j  d4  }$ |# d  k s|$ d  k rd }# }$ n  yn t |" j  d5 k rt |! j  d5 k }% |% }& n6 t |! j  }' t |" j  }( |' |( k  }% |' |( k }& Wn5 t  k
 rV|! j |" j k  }% |! j |" j k }& n X|! j! |" j! k }) |! j! |" j! k  }* t j" r|$ |# k  r|& s|% r|* r| j# |  q.|% r| j# |  q.|$ |# k  r|& s|% r|) r| j# |  q.|& r| j# |  q.|) s%| j# |  q.| j# |  q.Wn  d6 }+ dA        f d7   }, | rt d8  x. t |  D] } t |, | | |   q}Wn  | rt d9  x. t |  D] } t |, | | |   qWn  | r/	t d:  x: t |  D]) } t |, | | |+ | | |   qWn  | r|	t d;  x: t |  D]) } t |, | | |+ | | |   qL	Wn  | r	t d<  x: t |  D]) } t |, | | |+ | | |   q	Wn  | r	|  j  t$  r	t d=  t |  d  n  t d  d  S(B   Nu   PREFIXu    u   ## Package Plan ##
u     environment location: %su     removed specs: %sc         s` s   |  ] } t  |  Vq d  S(   N(   R   (   t   .0t   s(    (    s)   lib/python2.7/site-packages/conda/plan.pys	   <genexpr>@   s    t   indenti   u     added / updated specs: %sc         s` s   |  ] } t  |  Vq d  S(   N(   R   (   R1   R2   (    (    s)   lib/python2.7/site-packages/conda/plan.pys	   <genexpr>D   s    u   
c         S` s[   |  j  d  r |  d S|  j  d  r7 t |  d  j S|  j  d  rW t |  d  j St S(   Nu   schannelu   urlu   channel(   t   getR   t   canonical_nameR	   (   t   rec(    (    s)   lib/python2.7/site-packages/conda/plan.pyt   channel_strK   s    c         ` s0     t  k r d S  d  k r, |  t k r, d S|  S(   Nu    (   t   Falset   NoneR   (   R2   (   t   show_channel_urls(    s)   lib/python2.7/site-packages/conda/plan.pyt   channel_filtT   s
    u,   
The following packages will be downloaded:
u   %15su   sizeu     i   c         s` s   |  ] } | d  Vq d S(   u   sizeN(    (   R1   R-   (    (    s)   lib/python2.7/site-packages/conda/plan.pys	   <genexpr>i   s    u    u   -i<   i+   u   Total: %14sc           S` s
   t  d  S(   Nu    (   u    u    (   t   list(    (    (    s)   lib/python2.7/site-packages/conda/plan.pyt   <lambda>n   s    c           S` s
   t  d  S(   Nu    (   u    u    (   R<   (    (    (    s)   lib/python2.7/site-packages/conda/plan.pyR=   o   s    c           S` s
   t  d  S(   Nu    (   u    u    (   R<   (    (    (    s)   lib/python2.7/site-packages/conda/plan.pyR=   p   s    c           S` s
   t  d  S(   N(   NN(   R<   R9   (    (    (    s)   lib/python2.7/site-packages/conda/plan.pyR=   q   s    u   nameu   versionu   buildu   ,u   featuresi    c         ` s$   h  |  ] }   | d  s |  q S(   i    (    (   R1   t   p(   t   packages(    s)   lib/python2.7/site-packages/conda/plan.pys	   <setcomp>   s   	 c         ` s$   h  |  ] }   | d  s |  q S(   i   (    (   R1   R>   (   R?   (    s)   lib/python2.7/site-packages/conda/plan.pys	   <setcomp>   s   	 ic         s` s   |  ] } t  |  Vq d  S(   N(   t   len(   R1   R>   (    (    s)   lib/python2.7/site-packages/conda/plan.pys	   <genexpr>   s    c         s` s   |  ] } t  | d   Vq d S(   i    N(   R@   (   R1   R>   (    (    s)   lib/python2.7/site-packages/conda/plan.pys	   <genexpr>   s    c         s` s   |  ] } t  | d   Vq d S(   i   N(   R@   (   R1   R>   (    (    s)   lib/python2.7/site-packages/conda/plan.pys	   <genexpr>   s    c         s` s   |  ] } t  | d   Vq d S(   i    N(   R@   (   R1   R>   (    (    s)   lib/python2.7/site-packages/conda/plan.pys	   <genexpr>   s    c         s` s   |  ] } t  | d   Vq d S(   i   N(   R@   (   R1   R>   (    (    s)   lib/python2.7/site-packages/conda/plan.pys	   <genexpr>   s    c         3` s%   |  ] } t    | d    Vq d S(   i    N(   R@   (   R1   R>   (   R;   (    s)   lib/python2.7/site-packages/conda/plan.pys	   <genexpr>   s    c         3` s%   |  ] } t    | d    Vq d S(   i   N(   R@   (   R1   R>   (   R;   (    s)   lib/python2.7/site-packages/conda/plan.pys	   <genexpr>   s    u   {pkg:<%s} {vers[0]:<%s}u    {channels[0]:<%s}u    [{features[0]:<%s}]u    (%s)u   {vers[1]:<%s}u    {channels[1]:<%s}u    [{features[1]:<%s}]u   priorityu   customu    --> c         ` sU   g   | D] }   |  ^ q }  |  j  d | d d  | d | d  |  S(   Nt   pkgu   :t   verst   channelst   features(   t   format(   R2   RA   t   ct   chans(   R;   RC   RD   t   leadR?   (    s)   lib/python2.7/site-packages/conda/plan.pyRE      s    # u/   
The following NEW packages will be INSTALLED:
u)   
The following packages will be REMOVED:
u)   
The following packages will be UPDATED:
uI   
The following packages will be SUPERSEDED by a higher-priority channel:
u,   
The following packages will be DOWNGRADED:
u3   
The following empty environments will be CREATED:
u       (    (    u       (%   R4   t   appendR%   t   sortedR'   t   joinR9   R
   R:   R   t
   isinstanceR"   t   AssertionErrorR&   t   channelR5   R0   R@   t   sumR   R   R   t   hardlinkR   t   sett   TrueR8   t   maxt   valuest   strR)   R#   t	   TypeErrort   build_numbert   channel_priorityt   addR   (-   t   actionst   indexR:   t   specs_to_removet   specs_to_addt   prefixt   builderR7   t   disp_lstR-   R.   t   schannelt	   num_bytest   recordst	   linktypesRA   t   newt   removedt   vart   updatedt
   downgradedt	   channeledt   oldfmtt   newfmtt   emptyt   maxpkgt	   maxoldvert	   maxnewvert   maxoldfeaturest   maxnewfeaturest   maxoldchannelst   maxnewchannelst   ltt   P0t   P1t   pri0t   pri1t   newvert   oldvert   N0t   N1t   oldbldt   newbldt   arrowRE   (    (   R;   RC   RD   RH   R?   R:   s)   lib/python2.7/site-packages/conda/plan.pyt   display_actions8   s&   	$	$		

"
*
*#			""
)


*
*
*
c         C` sC   t  | t  s t  t |  k r. g  |  t <n  |  t j |  d  S(   N(   RL   R   RM   R   RI   (   RZ   t   dist(    (    s)   lib/python2.7/site-packages/conda/plan.pyt
   add_unlink   s    c         C` s   d  S(   N(    (   t   rt   linkedt   specst   updateR^   (    (    s)   lib/python2.7/site-packages/conda/plan.pyt   add_defaults_to_specs  s    c         ` sv   |  s t   xI t j D]8 } t |    t   f d   |  D  } | r Pq q W|  } t j d t |   | d S(   Nc         3` s*   |  ]  }   j  | j j  r | Vq d  S(   N(   t   matchRN   R(   (   R1   R-   (   t   channel_matcher(    s)   lib/python2.7/site-packages/conda/plan.pys	   <genexpr>  s    u   Multiple packages found:%si    (   RM   R
   RC   R    t   tuplet   logt   warnR%   (   t   precst   chnt   prec_matches(    (   R   s)   lib/python2.7/site-packages/conda/plan.pyt   _get_best_prec_match
  s    ic         ` sj  t  |   } t | j    } y d   | j |  D } Wn! t k
 r^ t d |   n Xt | |   t   } t   } x | D]w   t   f d   t |  D  } | s | j	    q t
 |  d k r | j	 t |   q | j	 | d  q W| rt |   n  t t |  j  }	 t |  |	  \ }
 } t |  |
 | d | d  } t |  } | S(   Nc         S` s   h  |  ] } t  j |   q S(    (   R$   t   from_dist_str(   R1   t   dist_str(    (    s)   lib/python2.7/site-packages/conda/plan.pys	   <setcomp>!  s   	 u   no such revision: %dc         3` s$   |  ] }   j  |  r | Vq d  S(   N(   R   (   R1   R-   (   t   spec(    s)   lib/python2.7/site-packages/conda/plan.pys	   <genexpr>*  s    i   i    (    (    (   R   R   t   get_requested_specs_mapt	   get_statet
   IndexErrorR   R   RQ   R   RY   R@   R   R   R   R!   t   graphR   R   R   (   R^   t   revisionR[   t   ht   user_requested_specst   target_statet   not_found_in_index_specst
   link_precsR   t   final_precst   unlink_precst   stpt   txn(    (   R   s)   lib/python2.7/site-packages/conda/plan.pyt   revert_actions  s.    		"u   execute_actionsc         C` s#   t  |  |  } t | | |  d  S(   N(   t   _plan_from_actionst   execute_instructions(   RZ   R[   t   verboset   plan(    (    s)   lib/python2.7/site-packages/conda/plan.pyt   execute_actions>  s    c         C` s3  d d l  m } m } m } m } m } d |  k rK |  d rK |  d } n | } | |  k rg |  | sm t  |  | } d d | f g }	 |  j d  }
 |
 r t    n  |  j d  p d  } |  j d g   } t
 j d	 j |   x,| D]$} | |  k rt
 j d
 j |   q n  |  | sCt
 j d j |   q n  d | k ro|	 j | d | j   f  n3 | j d  r|	 j | d | d j   f  n  | | k r|	 j | d t |  |  f  n  x> |  | D]2 } t
 j d j | |   |	 j | | f  qWq Wt |	 | | | |  }	 |	 S(   Ni   (   t   ACTION_CODESt   PREFIXt   PRINTt   PROGRESSt   PROGRESS_COMMANDSu   op_orderu   PREFIXu   %su   UNLINKLINKTRANSACTIONu   ACTIONu   SPECSu    Adding plans for operations: {0}u   action {0} not in actionsu   action {0} has None valueu   _u   %sing packages ...u   RM_u&   Pruning %s packages from the cache ...i   u   %du"   appending value {0} for action {1}(   t   instructionsR   R   R   R   R   RM   R4   t   RuntimeErrorR9   R   t   debugRE   t   traceRI   t
   capitalizet
   startswitht   lowerR@   t   _inject_UNLINKLINKTRANSACTION(   RZ   R[   R   R   R   R   R   t   op_orderR^   R   t   unlink_link_transactiont   axnR   t   opt   arg(    (    s)   lib/python2.7/site-packages/conda/plan.pyR   D  s>    (

 $$c         ` s  d d l  m } d d l m   d d l m } d d l m  m } m	  m
 } d d l m }	 d d l m }
 m } t   f d	   t |   D d
  } | d k r| d   |   } t   f d   | j  d  D  } t   f d   | j  d  D  } t | |  \ } } | |  rNt  f d   | D  } n d } t  f d   | D  } |	 |  } | j   |
 | | | d | d  } |  j | | | |  f  |  j | | | f  n4 | d k r
|  j d | | d d d | f f  n  |  S(   Ni    (   t   isdiri   (   R   (   t   groupby(   R   t   PROGRESSIVEFETCHEXTRACTR   t   UNLINKLINKTRANSACTION(   t   ProgressiveFetchExtract(   R   R   c         3` s1   |  ]' \ } } | d     f k r | Vq d S(   i    N(    (   R1   t   qR>   (   R   R   (    s)   lib/python2.7/site-packages/conda/plan.pys	   <genexpr>{  s    ic         S` s   |  d S(   Ni    (    (   t   x(    (    s)   lib/python2.7/site-packages/conda/plan.pyR=   }  s    c         3` s   |  ] }   | d   Vq d S(   i   N(    (   R1   t   d(   R   (    s)   lib/python2.7/site-packages/conda/plan.pys	   <genexpr>~  s    c         3` s   |  ] }   | d   Vq d S(   i   N(    (   R1   R   (   R   (    s)   lib/python2.7/site-packages/conda/plan.pys	   <genexpr>  s    c         3` s   |  ] }   | Vq d  S(   N(    (   R1   R   (   R[   (    s)   lib/python2.7/site-packages/conda/plan.pys	   <genexpr>  s    c         3` s   |  ] }   | Vq d  S(   N(    (   R1   R   (   R[   (    s)   lib/python2.7/site-packages/conda/plan.pys	   <genexpr>  s    u   INSTALLu   CREATE(    (    (    (    (    (   u   INSTALLu   CREATE(    (    (    (   t   os.pathR   t   models.distR   t   _vendor.toolz.itertoolzR   R   R   R   R   R   t   core.package_cache_dataR   t	   core.linkR   R   t   nextt	   enumerateR   R4   t   _handle_menuinstt   preparet   insert(   R   R[   R^   R   R   R   R   R   R   R   R   R   t   first_unlink_link_idxt   grouped_instructionst   unlink_distst
   link_distsR   R   t   pfeR   (    (   R   R   R   R[   s)   lib/python2.7/site-packages/conda/plan.pyR   s  s0    "(((
(c         C` s   d d l  m } | s  |  | f St d   t |   D d   } | d  k	 r} t t |  |  |  | d |  | | d !  }  n  t d   t |  D d   } | d  k	 r t t | | | d !| |  | | d   } n  |  | f S(   Ni   (   t   on_winc         s` s*   |  ]  \ } } | j  d  k r | Vq d S(   u   menuinstN(   R(   (   R1   R   R   (    (    s)   lib/python2.7/site-packages/conda/plan.pys	   <genexpr>  s    c         s` s*   |  ]  \ } } | j  d  k r | Vq d S(   u   menuinstN(   R(   (   R1   R   R   (    (    s)   lib/python2.7/site-packages/conda/plan.pys	   <genexpr>  s    (   t   common.compatR   R   R   R9   R   R   (   R   R   R   t   menuinst_idx(    (    s)   lib/python2.7/site-packages/conda/plan.pyR     s     
u   install_actionsc      
   ` s'  t  i d d 6d d 6d t d d l m  d d	 l m } d d
 l m } d d l m	   d d l
 m  |	 r |   f d   |	 D  } |   f d   | D  } |  f d   |	 D  } nd t r(t t  }	 |   f d   |	 D  } | d   d   | D D  p"t j } n
 d  } } t d   | D  } d d l m } | j j   | |  | | d | } | rd   t |  D | _ n  | j d | d |  } | j |  } t |   } | d j  f d   | j D  | d j  f d   | j D  | SWd  QXd  S(   Nu   trueu   CONDA_ALLOW_NON_CHANNEL_URLSu   falseu   CONDA_SOLVER_IGNORE_TIMESTAMPSt   stack_callbacki    (   t   basenamei   (   R   (   t   Solver(   R   (   R   c         3` s   |  ] }   |  j  Vq d  S(   N(   R5   (   R1   t   url(   R   (    s)   lib/python2.7/site-packages/conda/plan.pys	   <genexpr>  s    c         3` s   |  ] }   |  Vq d  S(   N(    (   R1   t   cn(   R   (    s)   lib/python2.7/site-packages/conda/plan.pys	   <genexpr>  s    c         3` s   |  ] }   |  Vq d  S(   N(    (   R1   R   (   R   (    s)   lib/python2.7/site-packages/conda/plan.pys	   <genexpr>  s    c         3` s   |  ] }   |  Vq d  S(   N(    (   R1   R   (   R   (    s)   lib/python2.7/site-packages/conda/plan.pys	   <genexpr>  s    c         s` s   |  ] } | r | Vq d  S(   N(    (   R1   t   subdir(    (    s)   lib/python2.7/site-packages/conda/plan.pys	   <genexpr>  s    c         s` s   |  ] } | j  Vq d  S(   N(   R   (   R1   RF   (    (    s)   lib/python2.7/site-packages/conda/plan.pys	   <genexpr>  s    c         s` s   |  ] } t  |  Vq d  S(   N(   R$   (   R1   R   (    (    s)   lib/python2.7/site-packages/conda/plan.pys	   <genexpr>  s    (   t
   PrefixDataR]   c         S` s   i  |  ] } | |  q S(    (    (   R1   R-   (    (    s)   lib/python2.7/site-packages/conda/plan.pys
   <dictcomp>  s   	 t   prunet   ignore_pinnedu   UNLINKc         3` s   |  ] }   |  Vq d  S(   N(    (   R1   R-   (   R   (    s)   lib/python2.7/site-packages/conda/plan.pys	   <genexpr>  s    u   LINKc         3` s   |  ] }   |  Vq d  S(   N(    (   R1   R-   (   R   (    s)   lib/python2.7/site-packages/conda/plan.pys	   <genexpr>  s    (   R   R   R   R   t   _vendor.boltons.setutilsR   t
   core.solveR   t   models.channelR   R   R   R   R   R
   t   subdirsR9   R   t   core.prefix_dataR   t   _cache_t   clearR   t   _indext   solve_for_transactiont   prefix_setupst   get_blank_actionst   extendR   R   (   R^   R[   R   t   forcet
   only_namest   always_copyt   pinnedt   update_depsR   t   channel_priority_mapt	   is_updatet   minimal_hintR   R   t   channel_namesRC   R   R   t   solverR   t   prefix_setupRZ   (    (   R   R   R   s)   lib/python2.7/site-packages/conda/plan.pyt   install_actions  s@    


$$c      	   C` s   d d l  m } d d l m } m } m } m } m } m } m	 } m
 }	 m }
 m } | t  } |  | | <| |	 | | | | | | |
 f	 | d <| S(   Ni    (   R   i   (
   t   CHECK_EXTRACTt   CHECK_FETCHt   EXTRACTR   R   R   t   RM_EXTRACTEDt
   RM_FETCHEDR   R   u   op_order(   t   collectionsR   R   R   R   R   R   R   R   R   R   R   R   R<   (   R^   R   R   R   R   R   R   R   R   R   R   R   RZ   (    (    s)   lib/python2.7/site-packages/conda/plan.pyR     s    F
u   execute_planc         C` s    t  |   } t | | |  d S(   uS   
    Deprecated: This should `conda.instructions.execute_instructions` instead
    N(   t   _update_old_planR   (   t   old_planR[   R   R   (    (    s)   lib/python2.7/site-packages/conda/plan.pyt   execute_plan  s    c         C` sv  d d l  m } m } d d l m } d d l m } | d k rK | } n  t j	 d |   i d d 6| j
 d 6| d 6} x |  D] \ }	 }
 t j	 d	 |	 |
  | d d k	 r |	 | k r | d c d 7<t d
  j | |
  j | d d f  n  | |	 } t |  r| | |
  n  | d d k	 r |	 | k r | d | d k r d | d <t d  j d  q q Wd S(   u.  Execute the instructions in the plan

    :param plan: A list of (instruction, arg) tuples
    :param index: The meta-data index
    :param verbose: verbose output
    :param _commands: (For testing only) dict mapping an instruction to executable if None
    then the default commands will be used
    i   (   t   commandsR   (   R
   (   R   u   executing plan %su   iu   prefixu   indexu    %s(%r)u   progress.updateu   maxvalu   progress.stopN(   R   R   R   t   base.contextR
   R   R   R9   R   R   t   root_prefixR   t   infot	   dist_namet   callable(   R   R[   R   t	   _commandsR   R   R
   R   t   statet   instructionR   t   cmd(    (    s)   lib/python2.7/site-packages/conda/plan.pyR     s(    		

c         C` s   g  } x} |  D]u } | j  d  r( q n  d | k rW d d l m } | d |   n  | j d d  \ } } | j | | f  q W| S(   u^   
    Update an old plan object to work with
    `conda.instructions.execute_instructions`
    u   #u    i   (   t   ArgumentErroru0   The instruction '%s' takes at least one argument(   R   t
   exceptionsR	  t   splitRI   (   R   R   R/   R	  R  R   (    (    s)   lib/python2.7/site-packages/conda/plan.pyR     s    u   __main__(   t   pprint(    (    (Z   t   __doc__t
   __future__R    R   R   R   R   R   t   loggingR   t   sysR   R   t   _vendor.toolzR   t   base.constantsR   R	   R   R
   R   R   R   R   t	   common.ioR   R   t
   core.indexR   R   R   R   R   R   R   R
  R   R   t   historyR   R   R   R   R   R   R   R   R   R   R   t   models.enumsR   t   models.match_specR    t   models.prefix_graphR!   t   models.recordsR"   t   models.versionR#   t   resolveR$   R%   t   utilsR&   t   __name__R   R0   R9   R   R   R8   R   R   R   R   R   R   R   RR   R   R   R   R   R   R  t   dictR^   t   intt   argv(    (    (    s)   lib/python2.7/site-packages/conda/plan.pyt   <module>   sd   ""		
	'		/	$				*		'	