U
    b                     @   s   d dl 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 d dlmZ d d	lmZ d d
lmZmZ ddlmZ dd Zdd Zdd ZdS )    )absolute_importNbasename)
IndexedSet)UpdateModifier)context)NULL)_get_solver_class)UnsatisfiableError)Channelprioritize_channels   )Environmentc                 O   sh   dd |j D }d|j kr&|tj  t|}tdd |D }tdd |D }	t | ||	|d}
|
S )Nc                 S   s   g | ]}|d kr|qS )
nodefaults ).0Zchanr   r   9lib/python3.8/site-packages/conda_env/installers/conda.py
<listcomp>   s      z_solve.<locals>.<listcomp>r   c                 s   s   | ]}t |V  qd S N)r   r   Zurlr   r   r   	<genexpr>   s     z_solve.<locals>.<genexpr>c                 s   s   | ]}t |V  qd S r   r   r   r   r   r   r      s     )Zspecs_to_add)channelsextendr   r   r   r	   )prefixspecsargsenv_kwargsZchannel_urlsZ_channel_priority_mapr   Zsubdirssolverr   r   r   _solve   s    
r    c                 O   sB   t t | ||f||}| }t|jdd |D |jd}|S )Nc                 S   s   g | ]}t |qS r   )str)r   pr   r   r   r   (   s     zdry_run.<locals>.<listcomp>)nameZdependenciesr   )r    tempfileZmkdtempZsolve_final_stater   r#   r   )r   r   r   r   r   r   ZpkgsZ
solved_envr   r   r   dry_run#   s    r%   c              	   O   s   t | |||f||}z|jt|ddtjd}W n. ttfk
r`   |jt|ddtd}Y nX |jrld S |	  |
  | d S )NpruneF)r&   Zupdate_modifierr   )r    Zsolve_for_transactiongetattrr   ZFREEZE_INSTALLEDr
   
SystemExitr   Znothing_to_doZdownload_and_extractZexecuteZ_make_legacy_action_groups)r   r   r   r   r   r   r   Zunlink_link_transactionr   r   r   install.   s     
 

 r)   )Z
__future__r   r$   os.pathr   Zconda._vendor.boltons.setutilsr   Zconda.base.constantsr   Zconda.base.contextr   Zconda.common.constantsr   Zconda.core.solver	   Zconda.exceptionsr
   Zconda.models.channelr   r   r   r   r    r%   r)   r   r   r   r   <module>   s   