U
    b}                     @   s   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	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 ddlmZ d dlmZ eeZdd Zdd Z dd Z!dd Z"dd Z#dS )    )absolute_importdivisionprint_functionunicode_literalsN)abspath
expanduser
expandvars   )stdout_json   )context)
PrefixData)EnvironmentLocationNotFoundSpecNotFound)CONDA_SESSION_SCHEMES)is_conda_environment)	MatchSpec)specsc                 C   s0   t j| st| tt| dd dd dS )NT)Zpip_interop_enabledc                 S   s   | j S Nname)x r   5lib/python3.8/site-packages/conda/cli/main_compare.py<lambda>       zget_packages.<locals>.<lambda>)key)ospathisdirr   sortedr   Ziter_records)prefixr   r   r   get_packages   s
    r"   c                 C   s
   | j | fS r   r   pkgr   r   r   _get_name_tuple   s    r%   c                 C   s   d| j | j| jf S )Nz	%s==%s=%s)r   versionZbuildr#   r   r   r   _to_str   s    r'   c              
   C   s   g }d}d}|D ]^}t |}|j}|| krZ|| | snd}|d||t| |  qd}|d| q|r|d nd}||fS )Nr   TFz={} found but mismatch. Specification pkg: {}, Running pkg: {}z{} not foundzzSuccess. All the packages in the specification file are present in the environment with matching version and build string.r	   )r   r   matchappendformatr'   )active_pkgsspecification_pkgsoutputresokr$   Zpkg_specr   r   r   r   compare_packages"   s(      
r0   c                 C   s  t j}t|st|zp| jddd }|tkr:| j}nttt	| j}t
j| j|t d}|j}| jd kr| jd kr|j| _W n tk
r    Y nX tttt|}g }d|jkr||jd  }d|jkr||jd  }t||\}	}
t jrt|
 ntdtt|
 |	S )Nz://r	   r   )r   filenameZ	directoryZcondaZpip
)r   Ztarget_prefixr   r   filesplitr   r   r   r   r   Zdetectr   r   getcwdZenvironmentr!   r   dictmapr%   r"   Zdependenciesr0   Zjsonr
   printjoinstr)argsparserr!   Z
url_schemer1   specenvr+   r,   Zexitcoder-   r   r   r   execute9   s2    


r?   )$Z
__future__r   r   r   r   Zloggingr   os.pathr   r   r   commonr
   Zbase.contextr   Zcore.prefix_datar   
exceptionsr   r   Zgateways.connection.sessionr   Zgateways.disk.testr   Zmodels.match_specr   Z	conda_envr   Z	getLogger__name__logr"   r%   r'   r0   r?   r   r   r   r   <module>   s"   
