o
    Wii	                     @  s   d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 e	r*d dl
mZ eeZdd
dZdddZdddZdddZdddZdddZG dd dZg dZdS )     )annotationsN)S_IWUSR)TYPE_CHECKING)Pathpathr   returnNonec                 C  s*   |   std|  tt|  d S d S )Nzcreate folder %s)existsLOGGERdebugosmakedirsstr)r    r   N/home/ubuntu/.local/lib/python3.10/site-packages/virtualenv/util/path/_sync.py
ensure_dir   s   r   srcdestc                 C  sf   | |krd|  }t || sd S | r'| s'td| t| d S td| |  d S )Nz#source and destination is the same zremove directory %szremove file %s)
ValueErrorr	   is_dir
is_symlinkr
   r   safe_deleteunlink)r   r   msgr   r   r   ensure_safe_to_do   s   
r   c                 C  s2   t | | tdt| | |j| |  d d S )Nz
symlink %s)target_is_directory)r   r
   r   _Debug
symlink_tor   r   r   r   r   r   symlink$   s   
r   c                 C  sH   t | | |  }|rtntj}tdt| | |t| t| d S )Nzcopy %s)	r   r   copytreeshutilcopyr
   r   r   r   )r   r   r   methodr   r   r   r"   *   s
   
r"   r   c           	      C  sz   t | D ]5\}}}t j|t j|| }t j|s!t | |D ]}t j||}t j||}t|| q#qd S N)	r   walkr   joinrelpathisdirr   r!   r"   )	r   r   root_filesdest_dirnamesrc_fdest_fr   r   r   r    2   s   
r    c                 C  sD   ddd	}t jd
krtjt| d|d d S tjt| d|d d S )Nfuncobjectr   r   exc_infor   r   c                 S  s(   t |t jst |t | | d S  r$   )r   accessW_OKchmodr   )r0   r   r2   r   r   r   onerror>   s   zsafe_delete.<locals>.onerror)      T)ignore_errorsonexc)r9   r6   )r0   r1   r   r   r2   r1   r   r   )sysversion_infor!   rmtreer   )r   r6   r   r   r   r   =   s   

r   c                   @  s    e Zd ZdddZdd	d
ZdS )r   r   r   r   r   r   c                 C  s   || _ || _d S r$   r   )selfr   r   r   r   r   __init__L   s   
z_Debug.__init__r   c                 C  s$   | j  rdnd | j d| jS )Nz
directory  z to )r   r   r   )r>   r   r   r   __str__P   s   $z_Debug.__str__Nr   r   r   r   r   r   )r   r   )__name__
__module____qualname__r?   rA   r   r   r   r   r   K   s    
r   )r"   r    r   r   r   )r   r   r   r   rB   )r   r   r   r   r   r   )r   r   r   r   )
__future__r   loggingr   r!   r;   statr   typingr   pathlibr   	getLoggerrC   r
   r   r   r   r"   r    r   r   __all__r   r   r   r   <module>   s$    






	