B
    '\                 @   s   d dl mZmZmZ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 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  d
dl!m"Z" ee#Z$dd Z%edd Z&edd Z'dd Z(dS )    )absolute_importdivisionprint_functionunicode_literals)	getLogger)W_OKaccess)basenamedirnameisdirisfilejoin)uuid4   )create_link)rm_rf)islinklexists   )memoize)PREFIX_MAGIC_FILE)	text_type)expand)LinkTypec          
   C   s   t | } td|  tt| rt| }yt| d}W n0 ttfk
rf } zt	| dS d }~X Y qX |
  |s|t|  dS n
t| tS d S )Nzchecking path is writable %sza+FT)r   logtracer   r
   r   openIOErrorOSErrordebugcloser   r   r   )pathZpath_existedZfhe r#   7lib/python3.7/site-packages/conda/gateways/disk/test.pyfile_path_is_writable   s    
r%   c          	   C   s   t |dt| tt d d f }t| s4t| t|sDt|t|rTt| t|rdt|znyBt	| |t
jdd t| }|rtd| | ntd| | |S  ttfk
r   td| | dS X W d t| X d S )Nz
.tmp.%s.%s   T)forcez hard link supported for %s => %sz'hard link IS NOT supported for %s => %sF)r   r	   r   r   r   AssertionErrorr   r   r   r   r   Zhardlinkr   r   r   r   r   )source_filedest_dirZ	test_fileZis_supportedr#   r#   r$   hardlink_supported+   s"    $

r+   c          	   C   s   t d| | t|dt|  }t| s0t| t|s@t|t|rPt|z8yt| |t	j
dd t|S  ttfk
r   dS X W d t| X d S )Nz*checking soft link capability for %s => %sz.tmp.T)r'   F)r   r   r   r	   r   r(   r   r   r   r   Zsoftlinkr   r   r   r   )r)   r*   Z	test_pathr#   r#   r$   softlink_supportedD   s    
r,   c             C   s   t t| tS )N)r   r   r   )prefixr#   r#   r$   is_conda_environmentV   s    r.   N))Z
__future__r   r   r   r   Zloggingr   osr   r   os.pathr	   r
   r   r   r   Zuuidr   Zcreater   deleter   linkr   r   Z_vendor.auxlib.decoratorsr   Zbase.constantsr   Zcommon.compatr   Zcommon.pathr   Zmodels.enumsr   __name__r   r%   r+   r,   r.   r#   r#   r#   r$   <module>   s"   