U
    b@                     @   s8  d dl mZmZmZmZ d dlmZ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m Z  ddl!m"Z"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/ dd Z0dd Z1dd Z2dd Z3dd Z4dd Z5dS )    )absolute_importdivisionprint_functionunicode_literals)MappingSequenceN)	getLogger)isfilejoin)wrap   )
CondaError)EntityEncoder)concatgroupby)ChannelPriorityDepsModifierPathConflictSafetyChecksUpdateModifierSatSolverChoiceExperimentalSolverChoice)contextsys_rc_pathuser_rc_path)
isiterable)pretty_list
pretty_map)timeout)yamlyaml_round_trip_dumpyaml_round_trip_loadc              
   C   sN   ddl m} zt| | W n. |tfk
rH } zt|W 5 d }~X Y nX d S )Nr   CouldntParseError)
exceptionsr#   execute_configNotImplementedErrorr   )argsparserr#   e r*   4lib/python3.8/site-packages/conda/cli/main_config.pyexecute   s
    r,   c                 C   s   g }|   D ]\}}t|trP|r@|d|  |t| q|d|  qt|r|rz|d|  |t| q|d|  q|d||d k	r|ndf  q|S )Nz%s:z%s: {}z%s: []z%s: %sNone)items
isinstancer   appendr   r   r   )dlineskvr*   r*   r+   format_dict"   s    
 r5   c                 C   s@  g }t | }|d }|d}|d }tj|d td}|d dkrr|d| d	tt	d
d |D f  n0|d| |d d	tt	dd |D f  |r|dd	|  |r|d|  |
dd t|d dD  |d dd |D }|
t| t|i d dd |D }|d |S )Naliasesstring_delimiterelement_typesZdefault_value)clsparameter_type	primitivez%s (%s)z, c                 s   s   | ]
}|V  qd S Nr*   .0Zetr*   r*   r+   	<genexpr>?   s     z0parameter_description_builder.<locals>.<genexpr>z%s (%s: %s)c                 s   s   | ]
}|V  qd S r<   r*   r=   r*   r*   r+   r?   B   s     z  aliases: %sz   env var string delimiter: '%s'c                 s   s   | ]}d | V  qdS )z  Nr*   r>   liner*   r*   r+   r?   I   s     ZdescriptionF    c                 S   s   g | ]}d | qS z# r*   r@   r*   r*   r+   
<listcomp>L   s     z1parameter_description_builder.<locals>.<listcomp>
c                 S   s   g | ]}d | qS rD   r*   r@   r*   r*   r+   rE   P   s     )r   describe_parametergetjsondumpsr   r0   r
   sortedsetextendr   r    loadsstripsplit)namebuilderZdetailsr6   r7   r8   Zdefault_value_strr*   r*   r+   parameter_description_builder6   s,    

,
"
rS   c                  C   s   g } d}t j D ]b\}}||kr$q| d | d| | d | d | tdd |D  | d qd| S )NzCLI-onlyzHidden and Undocumentedz8# ######################################################z# ## {:^48} ##rC   c                 s   s   | ]}t |V  qd S r<   rS   r>   rQ   r*   r*   r+   r?   _   s   z*describe_all_parameters.<locals>.<genexpr>rF   )r   category_mapr.   r0   formatrM   r   r
   )rR   skip_categoriescategoryparameter_namesr*   r*   r+   describe_all_parametersU   s    



r\   c              	   C   s   t dj}t|tfr<| D ]\}}t| d | | qnt|tttfrf|d	d| t|f nt|t
tfrt|}tt|D ]`\}}| dkr|d|d fkr|d	d| t||dkrd	nd
f q|d	d| t|f qd S )Nconda.stdout. z--setchannelsr      z--addz  # lowest priorityz  # highest priority)r   infor/   dictr.   print_config_itemboolintstrr
   listtuplelen	enumeratereversedrepr)keyvaluestdout_writer3   r4   Znumitemsqitemr*   r*   r+   rd   e   s"    
  
rd   c           0   
      s	  t dj}t dj}g }i }| jrtjrF|tjt dddtd nNg }t  D ].\}}|	d|  |
t| |	d qV|d	| d S | jd k	r| jr| j}	t }
t|	t|
 }|rdd
lm} ddlm  |d | nt }	dd |	D }tjr.|tj|dddtd njd|krRdd |d  D |d< d|krddlm   fdd|d  D |d< |d	t| t  d S | jd k	r| jr\| j}	t }
t|	t|
 }|rdd
lm} ddlm  |d | tjr0|tjdd |	D dddtd n*g }|
tdd |	D  |d	| nZtjrdttfddtj D }	|tjdd |	D dddtd n
|t  d S | jrt  d S | jrt}n@| jrdt j!krtt j!d d}nt"}n| j#r| j#}nt"}| j$rt%|r`t&|}|' ( }W 5 Q R X |r`t)d| t&|d}|*t  W 5 Q R X d S t j+,|rt&|d}t-|pi }W 5 Q R X n8t j+,trt&td}t-|pi }W 5 Q R X ni }t.dd  t }|d! }|d" }|d# }|| | }| j/d k	rt  | j/g krVt|0 | _/t1 }| j/D ]}|2d$}|d% |krd&|d%  }tjs|| n
|	| qb|}|D ]$}||kr|| }n
|} qؐq||krntjr|||< n
t3|| qb| j4rjt5d't6j4j'}|s$d S zt-|}|7| W n. t8k
rh   dd(lm9}  | d)| Y nX t:| j;| j	fd*D ]\}!}"|!D ]\}d$|kr|2d$d+n|d f\}}#|d,kr||krd-g||< ||kr|<|g }$n8||kr|<|i <|#g }$ndd.lm=}% |%d/| t>|$t?r<t>|$t@rddd0lmA}& || jBjC}'|&d1||'f |$kr |#d k	r|d$ |# n|}(d2|(|"rd3nd4f }|#d krƇfd5d|$D  }$||< nfd6d|$D  }$|| |#< tjs|| n
|	| |$D|"rd%ntE|$ qq|| jD ]\}d$|krF|2d$d+n|d f\}}#||krttF|d7})|)||< n8||kr|<|i }*|*|#< ndd.lm=}% |%d8| q(| jGD ]\}d$|kr|2d$d+n|d f\}}#||kr|d,krdd9lmH}+ |+|d:| d-g||< || krDdd9lmH}+ |+|d;|f fd<d|| D ||< q| jID ]T\}d$|kr|2d$d+n|d f\}}#||krdd9lmH}+ |+|d:| ||= qh| j/	sd=d> },tJjKjLMtN|, tJjKjLMtO|, tJjKjLMtP|, tJjKjLMtQ|, tJjKjLMtR|, tJjKjLMtS|, tJjKjLMtT|, z(t&|d}-|-*tU| W 5 Q R X W n8 tVtWfk
	r }. zt)d?||.f W 5 d }.~.X Y nX tj	rd+d@lXmY}/ |/|||dA d S )BNr]   zconda.stderrTr   ),z: )Z	sort_keysindentZ
separatorsr9   z
==> %s <==rC   rF   )ArgumentErrordashlistz$Invalid configuration parameters: %sc                 S   s   i | ]}|t t|qS r*   )getattrr   )r>   rn   r*   r*   r+   
<dictcomp>   s      z"execute_config.<locals>.<dictcomp>Zcustom_channelsc                 S   s    i | ]}|j d |j|jf qS )z%s://%s)rQ   Zschemelocation)r>   Zchannelr*   r*   r+   ry      s    Zcustom_multichannelsc                    s   i | ]\}}| |d dqS )   )rt   r*   )r>   Zmultichannel_namer`   rv   r*   r+   ry      s    c                 S   s   g | ]}t |qS r*   r   rG   rV   r*   r*   r+   rE      s     z"execute_config.<locals>.<listcomp>c                 s   s   | ]}t |V  qd S r<   rU   rV   r*   r*   r+   r?      s   z!execute_config.<locals>.<genexpr>rT   c                 3   s   | ]\}}| kr|V  qd S r<   r*   )r>   rZ   r[   )rY   r*   r+   r?      s   c                 S   s   g | ]}t |qS r*   r|   rV   r*   r*   r+   rE      s     ZCONDA_PREFIXz.condarczThe file '%s' already contains configuration information.
Remove the file to proceed.
Use `conda config --describe` to display default configuration.wrc                 S   s   t | d S )Nr:   r|   )pr*   r*   r+   <lambda>       z execute_config.<locals>.<lambda>r;   Zsequencemapr^   r   zunknown key %s   )
ParseErrorzinvalid yaml content:
%s)TFra   r`   defaults)CondaValueErrorz+Key '%s' is not a known sequence parameter.r"   z key %r should be a list, not %s.z4Warning: '%s' already in '%s' list, moving to the %stopZbottomc                    s   g | ]}| kr|qS r*   r*   r>   r   rr   r*   r+   rE   L  s      c                    s   g | ]}| kr|qS r*   r*   r   r   r*   r+   rE   N  s      z--set parameterz,Key '%s' is not a known primitive parameter.)CondaKeyErrorz key %r is not in the config filez*%r is not in the %r key of the config filec                    s   g | ]}| kr|qS r*   r*   )r>   ir   r*   r+   rE   n  s      c                 S   s   |  t|S r<   )Zrepresent_strrg   )Zdumperdatar*   r*   r+   enum_representer  s    z(execute_config.<locals>.enum_representerz/Cannot write to condarc file at %s
Caused by %r)stdout_json_success)rc_pathwarningsrH   )Zr   rb   Zshow_sourcesr   rI   rJ   Zcollect_allr   r.   r0   rM   r5   r
   ZshowZlist_parametersrL   r$   ru   	common.iorw   valuesZvalidate_configurationZdescriber   rK   rW   r\   ZvalidateZvalidate_allsystemr   envosenvironr   fileZwrite_defaultr	   openreadrO   r   writepathexistsr!   r   rH   keysobjectrP   rd   stdinr   sysupdate	Exceptionr   zipprepend
setdefaultr   r/   r   rg   r#   	__class____name__insertrj   Ztypify_parameterremover   Z
remove_keyr   ZrepresenterZRoundTripRepresenterZadd_representerr   r   r   r   r   r   r   r    IOErrorOSErrorcommonr   )0r'   r(   rp   Zstderr_writeZjson_warningsZjson_getr2   sourceZreprsZparamater_namesZ	all_namesZ
not_paramsru   r1   rR   r   Zfhr   Z	rc_configZgrouped_paramatersZprimitive_parametersZsequence_parametersZmap_parametersZall_parametersZvalue_not_foundrn   Z	key_partsmessageZremaining_rc_configr3   ZcontentZparsedr   argr   ZsubkeyZarglistr   r#   ZbadZmessage_keyro   Zargmapr   r   Zrcr)   r   r*   )rw   rr   rY   r+   r%   {   s   

   
    







   


   












"



  


""



"


"

 r%   )6Z
__future__r   r   r   r   Zcollections.abcr   r   rI   Zloggingr   r   os.pathr	   r
   r   textwrapr   rC   r   Zauxlib.entityr   Z_vendor.toolzr   r   Zbase.constantsr   r   r   r   r   r   r   Zbase.contextr   r   r   Zcommon.compatr   Zcommon.configurationr   r   r   r   Zcommon.serializer   r    r!   r,   r5   rS   r\   rd   r%   r*   r*   r*   r+   <module>   s,   $