U
    b1                  
   @   sd  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mZmZ d dlZd dlZddlmZmZ dd	lmZmZ dd
lmZmZmZmZ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+ e	e,Z-dd Z.ddddhZ/e/dddddddddh	B Z0d d! Z1d"d# Z2d$d% Z3d/d'd(Z4d)d* Z5d+d, Z6d-d. Z7dS )0    )absolute_importdivisionprint_functionunicode_literals)OrderedDictN)	getLogger)exists
expanduserisfilejoin   )print_envs_liststdout_json   )CONDA_PACKAGE_ROOT__version__)conda_in_private_envcontextenv_namesys_rc_pathuser_rc_path)on_winmask_anaconda_token)_supplement_index_with_system)all_channel_urlsoffline_keep)	MatchSpec)human_bytesc               
      s   g } zt sNttdrtd}ttdD ]}||r.| d|  q.nJdtj	kr^| W S tj	t
d  tt dr fddtt d	D } W n2 ttfk
r } ztd
| W 5 d }~X Y nX | S )Nz~/.local/libzpython\d\.\dz~/.local/lib/z~/.local/lib/%sAPPDATAPythonc                    s   g | ]}t  d |qS )r    )r   ).0ir    2lib/python3.8/site-packages/conda/cli/main_info.py
<listcomp>)   s     z!get_user_site.<locals>.<listcomp>PYTHONz'Error accessing user site directory.
%r)r   r   r	   recompileoslistdirmatchappendenvironstrr   IOErrorOSErrorlogdebug)	site_dirsZ	python_repather$   r#   r%   get_user_site   s$    




r7   filesZauthZpreferred_envZprioritynameversionbuildbuild_numberchannelZschannelsizefndependsc                 C   s   dd |    D S )Nc                 S   s   i | ]\}}|t kr||qS r$   )IGNORE_FIELDS)r!   kvr$   r$   r%   
<dictcomp>7   s       zdump_record.<locals>.<dictcomp>)dumpitems)pkgr$   r$   r%   dump_record6   s    rH   c                 C   s   t | }td| jfd|d fd|d fd|d fd|d fdt| jfd	t|d	 fg}tt| t	 D ]}|| ||< qnt
d
 d|d |d |d f }t
| t
dt|  |D ]}t
d||| f  qt
d |d D ]}t
d|  qd S )Nz	file namer9   r:   zbuild stringr;   zbuild numberr<   r=   r>    z%s %s %s-z	%-12s: %szdependencies:r@   z    %s)rH   r   r?   r/   r=   r   sortedsetkeysSKIP_FIELDSprintlen)precrG   dkeyheaderZdepr$   r$   r%   pretty_package:   s*    



	rU   c                    s   ddl m} i  | D ]}t|}t|| |< qtjrRt fdd| D  n   D ]}|D ]}t	| qbqZt
dtjd d S )Nr   )
SubdirDatac                    s   i | ]}| | qS r$   r$   )r!   packageZresultsr$   r%   rD   \   s      z&print_package_info.<locals>.<dictcomp>zcWARNING: 'conda info package_name' is deprecated.
          Use 'conda search package_name --info'.)file)Zcore.subdir_datarV   r   tupleZ	query_allr   jsonr   valuesrU   rO   sysstderr)packagesrV   rW   specresultrQ   r$   rX   r%   print_package_infoT   s    rb   Fc                 C   s  zddl m} W nx tk
r`   zddlm} W n* tk
rZ } zd| }W 5 d }~X Y nX Y n* tk
r } zd| }W 5 d }~X Y nX zddlm} W n tk
r   d}Y nX zdd l}W nB tk
r   d}Y n2 tk
r } zd| }W 5 d }~X Y nX |j}i }t| dd | D }t	t
tj}tjsLdd |D }d	d |D }tjd
}	|	std}
t|
r|
}	ttj}ttjt||tjtjt tjtjtjtjtjtj tj|tj!|t"t"t#tj$g d%t&t't(j)|tj*t+tj,|	|d}t-rddl.m/} | |d< nt0 |d< t1 |d< ddddh}|2dd tjD  |2dd tjD  |2dd tjD  |2dd tjD  dd |D }dd tjD }|2dd |D  |2t(j3t(j4t(j5t6 |d  |S )!Nr   )r   zError %rznot installedzError %sc                 S   s   g | ]}|j |j|jgqS r$   )r9   r:   r;   )r!   pr$   r$   r%   r&      s     z!get_info_dict.<locals>.<listcomp>c                 S   s    g | ]}|t |rd nd qS )rI   z  (offline))r   r!   cr$   r$   r%   r&      s   c                 S   s   g | ]}t |qS r$   r   rd   r$   r$   r%   r&      s     ZNETRCz~/.netrc.)platformconda_versionconda_env_versionconda_build_versionroot_prefixconda_prefixZconda_privateav_data_dirav_metadata_url_baseroot_writable	pkgs_dirs	envs_dirsdefault_prefixactive_prefixactive_prefix_nameconda_shlvlchannelsr   Zrc_pathr   offlineenvspython_versionrequests_version
user_agentconda_locationconfig_files
netrc_filevirtual_pkgsr   )is_admin_on_windowsis_windows_adminUIDGIDZCIO_TESTZCURL_CA_BUNDLEZREQUESTS_CA_BUNDLEZSSL_CERT_FILEc                 s   s    | ]}|  d r|V  qdS )ZCONDANupper
startswithr!   rC   r$   r$   r%   	<genexpr>   s      z get_info_dict.<locals>.<genexpr>c                 s   s    | ]}|  d r|V  qdS )r'   Nr   r   r$   r$   r%   r      s      c                 s   s    | ]}|  d r|V  qdS )PATHNr   endswithr   r$   r$   r%   r      s      c                 s   s    | ]}|  d r|V  qdS )ZSUDONr   r   r$   r$   r%   r      s      c              
   S   s&   i | ]}|t |t | d qS )z	<not set>)r*   getenvlowerr!   Zevr$   r$   r%   rD      s      z!get_info_dict.<locals>.<dictcomp>c                 s   s    | ]}|  d r|V  qdS )ZPROXYNr   r   r$   r$   r%   r      s      c                 S   s   i | ]
}|d qS )z<set>r$   r   r$   r$   r%   rD      s      )zsys.versionz
sys.prefixzsys.executabler4   env_vars)7Zrequestsr   ImportErrorZpip._vendor.requests	ExceptionZ	conda_envconda_buildr   r\   listr   r   rv   r[   r*   r.   getr	   r
   r   rs   dictZsubdirrh   rk   rl   r   rm   Zsigning_metadata_url_basero   rp   rq   rr   Zshlvlr   r   rw   r   mapr/   r]   version_infor{   r   r}   r   Zcommon._os.windowsr   geteuidgetegidupdater:   prefix
executabler7   )systemrz   r6   ri   r   rj   Zvirtual_pkg_indexr   rv   r~   Z
user_netrcrt   	info_dictr   Zenv_var_keysr   Z
proxy_keysr$   r$   r%   get_info_dictg   s    


 r   c           	      C   s   ddl m} g }|dd  | di }t|D ]j}||| }t|rR|d nd}t|dkrn|dd  nd}|d	||f  |D ]}|d
|  qq2d|S )Nr   )wrapz%23s:zenvironment variablesr   rI   r   r$   z%25s=%sz                          
)textwrapr   r-   r   rK   rP   r   )	r   r   builderr   rS   valueZ
first_lineZother_linesvalr$   r$   r%   get_env_vars_str   s    r   c                 C   s  dD ]}d | | | d| < qd dd | d D | d< | d rHd	nd
| d< dd }dg}| d r||d| d  ||d| d  n||d| d  | d dkr||d| d  ||d| d |d| d |d| d |d| d |d| d |d | d |d!d"| d# | d f |d$| d% |d&| d' |d(| d) |d*| d+ |d,| d- |d.| d. |d/| d0 f tr||d1| d2  n ||d3d4| d5 | d6 f  ||d7| d8 |d9| d: f |d d; |S )<N)rp   rq   rv   r}   z
                          _c                 S   s   g | ]}d t | qS )z%s=%s=%s)rZ   )r!   xr$   r$   r%   r&      s    z%get_main_info_str.<locals>.<listcomp>r   Z_virtual_pkgsro   writablez	read onlyZ_rtwroc                 S   s   d| |f S )Nz	%23s : %sr$   )Znmr   r$   r$   r%   <lambda>       z#get_main_info_str.<locals>.<lambda>rI   rt   zactive environmentzactive env locationrs   ru   r   zshell levelzuser config filer   zpopulated config filesZ_config_fileszconda versionrh   zconda-build versionrj   zpython versionry   zvirtual packageszbase environmentz%s  (%s)rk   zconda av data dirrm   zconda av metadata urlrn   zchannel URLsZ	_channelszpackage cacheZ
_pkgs_dirszenvs directoriesZ
_envs_dirsrg   z
user-agentr{   Zadministratorr   zUID:GIDz%s:%sr   r   z
netrc filer~   zoffline moderw   r   )r   r-   extendr   )r   rS   Zformat_paramr   r$   r$   r%   get_main_info_str   sR    
 
r   c              
      s   j r0tjrtdtji ntdtj d S  jrddlm	} zt
 j W d S  |k
r } zddlm} ||jW 5 d }~X Y nX  jrtjstdtj nttdtji dS d	} jstjr|D ]}t |d
 qt j} jst fdd|D r:tjs:td}|t| |d  jrjddlm}	 |	 |d< t|d tj   jrtjsddlm}
m} tdtj d d   tdtj!  tdtj"  td|d   t#t$|
 d D ]}td||d| f  qtddd |d }|r&t|d  ntd |dd  D ]}td|  q:td t#|d  % D ]\}}td!||f  qftd tjrt| d S )"Nrk   z{}r   )ResolvePackageNotFound)PackagesNotFoundErrorr   rv   r   )rx   r   Tc                 3   s   | ]}t  | V  qd S )N)getattr)r!   Zoptargsr$   r%   r   ?  s     zexecute.<locals>.<genexpr>zconda.stdoutlog)list_all_known_prefixesrx   r   )find_commandsfind_executablezsys.version: %s...(   zsys.prefix: %szsys.executable: %szconda location: %sr|   )r;   zconda-%s: %szconda-zuser site dirs: rI   )endr4   z                %sr   z%s: %s)&baser   r[   r   rk   rO   formatr_   Zresolver   rb   
exceptionsr   Zbad_depsZunsafe_channelsr   rv   dumpsallsetattrr   r   r   infor   rx   Zcore.envs_managerr   r   r   r   r]   r:   r   r   rK   rL   rF   )r   parserr   r6   r   ZoptionsZoptionr   Zstdout_loggerr   r   r   cmdr4   Zsite_dirr9   r   r$   r   r%   execute   sj    

(

r   )F)8Z
__future__r   r   r   r   collectionsr   r[   Zloggingr   r*   os.pathr   r	   r
   r   r(   r]   commonr   r   rI   r   r   rh   Zbase.contextr   r   r   r   r   Zcommon.compatr   Z
common.urlr   Z
core.indexr   Zmodels.channelr   r   Zmodels.match_specr   Zutilsr   __name__r2   r7   rA   rN   rH   rU   rb   r   r   r   r   r$   r$   r$   r%   <module>   sB   
    
u5