ó
Ý²k^c           @` s³  d  d l  m Z m Z m Z m Z d  d l m Z d  d l Z d  d l m	 Z	 d  d l
 Z
 d  d l 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 m Z d d l m Z m Z m Z m Z m Z m Z d d l m  Z  m! Z! m" Z" d d l# 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 l0 m1 Z1 m2 Z2 m3 Z3 d „  Z4 d „  Z5 d „  Z6 d „  Z7 d „  Z8 d S(   i    (   t   absolute_importt   divisiont   print_functiont   unicode_literals(   t   OrderedDictN(   t	   getLogger(   t   isfilet   join(   t   wrapi   (   t
   CondaError(   t   EntityEncoder(   t   concatt   groupby(   t   ChannelPriorityt   DepsModifiert   PathConflictt   SafetyCheckst   UpdateModifiert   SatSolverChoice(   t   contextt   sys_rc_patht   user_rc_path(   t   Mappingt   Sequencet
   isiterablet	   iteritemst
   itervaluest   string_typest	   text_type(   t   pretty_listt
   pretty_map(   t   timeout(   t   yamlt	   yaml_dumpt	   yaml_loadc         C` sM   d d l  m } y t |  | ƒ Wn% | t f k
 rH } t | ƒ ‚ n Xd  S(   Ni   (   t   CouldntParseError(   t
   exceptionsR#   t   execute_configt   NotImplementedErrorR	   (   t   argst   parserR#   t   e(    (    s4   lib/python2.7/site-packages/conda/cli/main_config.pyt   execute   s
    c         C` sí   g  } xà t  |  ƒ D]Ò \ } } t | t ƒ ro | r[ | j d | ƒ | j t | ƒ ƒ qå | j d | ƒ q t | ƒ r¼ | r¨ | j d | ƒ | j t | ƒ ƒ qå | j d | ƒ q | j d | | d  k	 rÚ | n d f ƒ q W| S(   Nu   %s:u   %s: {}u   %s: []u   %s: %su   None(   R   t
   isinstanceR   t   appendR   R   R   t   None(   t   dt   linest   kt   v(    (    s4   lib/python2.7/site-packages/conda/cli/main_config.pyt   format_dict#   s    -c      	   C` sÂ  g  } t  j |  ƒ } | d } | j d ƒ } | d } t j | d d t ƒ} | d d k rš | j d |  d	 j t t	 d
 „  | Dƒ ƒ ƒ ƒ f ƒ n= | j d |  | d d	 j t t	 d „  | Dƒ ƒ ƒ ƒ f ƒ | rú | j d d	 j | ƒ ƒ n  | r| j d | ƒ n  | j
 d „  t | d d ƒ Dƒ ƒ | j d ƒ g  | D] } d | ^ qL} | j
 t i t j | ƒ |  6ƒ j ƒ  j d ƒ ƒ g  | D] } d | ^ q›} | j d ƒ | S(   Nu   aliasesu   string_delimiteru   element_typesu   default_valuet   clsu   parameter_typeu	   primitiveu   %s (%s)u   , c         s` s   |  ] } | Vq d  S(   N(    (   t   .0t   et(    (    s4   lib/python2.7/site-packages/conda/cli/main_config.pys	   <genexpr>@   s    u   %s (%s: %s)c         s` s   |  ] } | Vq d  S(   N(    (   R4   R5   (    (    s4   lib/python2.7/site-packages/conda/cli/main_config.pys	   <genexpr>C   s    u     aliases: %su      env var string delimiter: '%s'c         s` s   |  ] } d  | Vq d S(   u     N(    (   R4   t   line(    (    s4   lib/python2.7/site-packages/conda/cli/main_config.pys	   <genexpr>J   s    u   descriptioniF   u    u   # u   
(   R   t   describe_parametert   gett   jsont   dumpsR
   R,   R   t   sortedt   sett   extendR   R!   t   loadst   stript   split(   t   namet   buildert   detailst   aliasest   string_delimitert   element_typest   default_value_strR6   (    (    s4   lib/python2.7/site-packages/conda/cli/main_config.pyt   parameter_description_builder7   s*    

9*$2c          C` s²   g  }  d } x– t  t j ƒ D]… \ } } | | k r: q n  |  j d ƒ |  j d j | ƒ ƒ |  j d ƒ |  j d ƒ |  j t d „  | Dƒ ƒ ƒ |  j d ƒ q Wd j |  ƒ S(	   Nu   CLI-onlyu   Hidden and Undocumentedu8   # ######################################################u   # ## {:^48} ##u    c         s` s   |  ] } t  | ƒ Vq d  S(   N(   RH   (   R4   RA   (    (    s4   lib/python2.7/site-packages/conda/cli/main_config.pys	   <genexpr>`   s   u   
(   u   CLI-onlyu   Hidden and Undocumented(   R   R   t   category_mapR,   t   formatR=   R   R   (   RB   t   skip_categoriest   categoryt   parameter_names(    (    s4   lib/python2.7/site-packages/conda/cli/main_config.pyt   describe_all_parametersV   s    c   1      ` sò  t  d ƒ j } t  d ƒ j } g  } i  } |  j rÛ t j rj | t j t j ƒ  d t d d d dB ƒƒ nm g  } xQ t t j ƒ  ƒ D]= \ } } | j	 d	 | ƒ | j
 t | ƒ ƒ | j	 d
 ƒ qƒ W| d j | ƒ ƒ d  S|  j d  k	 rP|  j r`|  j }	 t j ƒ  }
 t |	 ƒ t |
 ƒ } | rld d l m } d d l m ‰  | d ˆ  | ƒ ƒ ‚ qln t j ƒ  }	 t d „  |	 Dƒ ƒ } t j r¹| t j | d t d d d dC d t ƒƒ n‰ d | k ræd „  t | d ƒ Dƒ | d <n  d | k r)d d l m ‰  ‡  f d †  t | d ƒ Dƒ | d <n  | d j t | ƒ ƒ ƒ t j ƒ  d  S|  j d  k	 ró|  j r^|  j }	 t j ƒ  }
 t |	 ƒ t |
 ƒ } | rÒd d l m } d d l m ‰  | d ˆ  | ƒ ƒ ‚ n  t j r%| t j g  |	 D] } t j | ƒ ^ qëd t d d d dD d t ƒƒ qïg  } | j
 t d „  |	 Dƒ ƒ ƒ | d j | ƒ ƒ n‘ t j râdE ‰ t t ‡ f d †  t j j ƒ  Dƒ ƒ ƒ }	 | t j g  |	 D] } t j | ƒ ^ q¨d t d d d dF d t ƒƒ n | t ƒ  ƒ d  S|  j  r
t j! ƒ  d  S|  j" rt# } nU |  j$ rVd t% j& k rMt t% j& d d ƒ } qqt' } n |  j( rk|  j( } n t' } |  j) rõt* | ƒ rÉt+ | ƒ  } | j, ƒ  j- ƒ  } Wd  QX| rÉt. d | ƒ ‚ qÉn  t+ | d ƒ  } | j/ t ƒ  ƒ Wd  QXd  St% j0 j1 | ƒ r4t+ | d ƒ  } t2 | ƒ p(i  } Wd  QXn i  } t3 d „  t j ƒ  ƒ } | d } | d  } | d! } |  j4 d  k	 r=t j! ƒ  |  j4 g  k r°t | j5 ƒ  ƒ |  _4 n  xŠ|  j4 D]|} | | | k rd" | } t j sð| | ƒ qº| j	 | ƒ qºn  | | k rqºn  t j r2| | | | <qºn  t6 | | t7 t8 t9 f ƒ rw| d# j d$ | t: | | ƒ f ƒ ƒ qº| j4 | g  ƒ } t; | ƒ } xž t< t= | ƒ ƒ D]Š \ } } | d% k r| d& | d' f k r| d# j d( | t> | ƒ | d& k r d) n d* f ƒ ƒ q¨| d# j d( | t> | ƒ f ƒ ƒ q¨WqºWn  |  j? r¹t@ d+ tA j? j, ƒ } | sed  Sy t2 | ƒ } | jB | ƒ Wq¹tC k
 rµd d, l mD }  |  d- | ƒ ‚ q¹Xn  x¿tE |  jF |  j	 f t tG f ƒ D]œ\ }! }" x|! D]…\ } } | d% k r"| | k r"d. g | | <n  | | k rQd d/ l mH }# |# d0 | ƒ ‚ n  t6 | j4 | g  ƒ tI ƒ o…t6 | j4 | g  ƒ t9 ƒ sÁd d1 l mJ }$ | | jK jL }% |$ d2 | |% f ƒ ‚ n  | jM | g  ƒ }& | |& k rQ	d3 | | |" rôd4 n d5 f } g  |& D] }' |' | k r	|' ^ q	}& | | <t j sA	| | ƒ qQ	| j	 | ƒ n  |& jN |" rc	d& n	 t; |& ƒ | ƒ qîWqÛWxÀ |  j D]µ \ } } d6 | k r¯	| jO d6 d' ƒ n	 | d  f \ } }( | | k rï	t jP | | d7 ƒ }) |) | | <q…	| | k r
| jM | i  ƒ }* | |* |( <q…	d d/ l mH }# |# d8 | ƒ ‚ q…	Wxþ |  jQ D]ó \ } } d6 | k rr
| jO d6 d' ƒ n	 | d  f \ } }( | | k rÒ
| d% k rÂ
d d9 l mR }+ |+ | d: | ƒ ‚ n  d. g | | <n  | | | k rd d9 l mR }+ |+ | d; | | f ƒ ‚ n  g  | | D] }, |, | k r|, ^ q| | <qH
Wx} |  jS D]r \ } d6 | k rp| jO d6 d' ƒ n	 | d  f \ } }( | | k r´d d9 l mR }+ |+ | d: | ƒ ‚ n  | | =qIW|  j4 s¹d< „  }- tT jU jV jW tX |- ƒ tT jU jV jW tY |- ƒ tT jU jV jW tZ |- ƒ tT jU jV jW t[ |- ƒ tT jU jV jW t\ |- ƒ tT jU jV jW t] |- ƒ y/ t+ | d ƒ  }. |. j/ t^ | ƒ ƒ Wd  QXWq¹t_ t` f k
 rµ}/ t. d= | |/ f ƒ ‚ q¹Xn  t j rîd' d> la mb }0 |0 d? | d@ | dA | ƒ n  d  S(G   Nu   conda.stdoutu   conda.stderrt	   sort_keyst   indenti   t
   separatorsu   ,u   : u
   ==> %s <==u    u   
(   t   ArgumentError(   t   dashlistu$   Invalid configuration parameters: %sc         s` s$   |  ] } | t  t | ƒ f Vq d  S(   N(   t   getattrR   (   R4   t   key(    (    s4   lib/python2.7/site-packages/conda/cli/main_config.pys	   <genexpr>†   s    R3   u   custom_channelsc         S` s,   i  |  ]" } d  | j  | j f | j “ q S(   u   %s://%s(   t   schemet   locationRA   (   R4   t   channel(    (    s4   lib/python2.7/site-packages/conda/cli/main_config.pys
   <dictcomp>   s   	u   custom_multichannelsc         ` s+   i  |  ]! \ } } ˆ  | d  d ƒ| “ q S(   RP   i   (    (   R4   t   multichannel_namet   channels(   RS   (    s4   lib/python2.7/site-packages/conda/cli/main_config.pys
   <dictcomp>•   s   	c         s` s   |  ] } t  | ƒ Vq d  S(   N(   RH   (   R4   RA   (    (    s4   lib/python2.7/site-packages/conda/cli/main_config.pys	   <genexpr>­   s   u   CLI-onlyu   Hidden and Undocumentedc         3` s'   |  ] \ } } | ˆ  k r | Vq d  S(   N(    (   R4   RL   RM   (   RK   (    s4   lib/python2.7/site-packages/conda/cli/main_config.pys	   <genexpr>´   s    	u   CONDA_PREFIXu   .condarcu•   The file '%s' already contains configuration information.
Remove the file to proceed.
Use `conda config --describe` to display default configuration.u   wu   rc         S` s   t  j |  ƒ d S(   Nu   parameter_type(   R   R7   (   t   p(    (    s4   lib/python2.7/site-packages/conda/cli/main_config.pyt   <lambda>å   s    u	   primitiveu   sequenceu   mapu   unknown key %su    u   --setu   channelsi    i   u   --addu     # lowest priorityu     # highest priorityi   (   t
   ParseErroru   invalid yaml content:
%su   defaults(   t   CondaValueErroru+   Key '%s' is not a known sequence parameter.(   R#   u    key %r should be a list, not %s.u4   Warning: '%s' already in '%s' list, moving to the %su   topu   bottomu   .u   --set parameteru,   Key '%s' is not a known primitive parameter.(   t   CondaKeyErroru    key %r is not in the config fileu*   %r is not in the %r key of the config filec         S` s   |  j  t | ƒ ƒ S(   N(   t   represent_strt   str(   t   dumpert   data(    (    s4   lib/python2.7/site-packages/conda/cli/main_config.pyt   enum_representer`  s    u/   Cannot write to condarc file at %s
Caused by %r(   t   stdout_json_successt   rc_patht   warningsR8   (   u   ,u   : (   u   ,u   : (   u   ,u   : (   u   CLI-onlyu   Hidden and Undocumented(   u   ,u   : (c   R   t   infot   show_sourcesR   R9   R:   t   collect_allt   TrueR   R,   R=   R2   R   t   showR-   t   list_parametersR<   R$   RR   t	   common.ioRS   R   R
   R   t   validate_configurationt   describeR7   R   R;   RI   t   itemsRN   t   validatet   validate_allt   systemR   t   envt   ost   environR   t   filet   write_defaultR   t   opent   readR?   R	   t   writet   patht   existsR"   R   R8   t   keysR+   t   boolt   intR   R   t   lent	   enumeratet   reversedt   reprt   stdinR   t   syst   updatet	   ExceptionR]   t   zipt   prependt   FalseR^   R   R#   t	   __class__t   __name__t
   setdefaultt   insertR@   t   typify_parametert   removeR_   t
   remove_keyR    t   representert   RoundTripRepresentert   add_representerR   R   R   R   R   R   R!   t   IOErrort   OSErrort   commonRe   (1   R'   R(   t   stdout_writet   stderr_writet   json_warningst   json_getR/   t   sourcet   reprst   paramater_namest	   all_namest
   not_paramsRR   R.   RA   RB   Rf   t   fhRc   t	   rc_configt   grouped_paramaterst   primitive_parameterst   sequence_parameterst   map_parametersRU   t   messageRq   t   numitemst   qt   itemt   contentt   parsedR]   t   argR‹   R^   R#   t   badt   arglistR[   t   subkeyt   valuet   argmapR_   t   iRd   t   rcR)   Re   (    (   RS   RK   s4   lib/python2.7/site-packages/conda/cli/main_config.pyR%   f   s–   		+				%
				"	%	"	
							




		)"	"-	.-	*00	10				
(9   t
   __future__R    R   R   R   t   collectionsR   R9   t   loggingR   Rv   t   os.pathR   R   R‡   t   textwrapR   t    R	   t   _vendor.auxlib.entityR
   t   _vendor.toolzR   R   t   base.constantsR   R   R   R   R   R   t   base.contextR   R   R   t   common.compatR   R   R   R   R   R   R   t   common.configurationR   R   Rn   R   t   common.serializeR    R!   R"   R*   R2   RH   RN   R%   (    (    (    s4   lib/python2.7/site-packages/conda/cli/main_config.pyt   <module>   s*   ".4				