
    3ii	                        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j                  e      ZddZddZddZdd	Zdd
ZddZ G d d      Zg dZy)    )annotationsN)S_IWUSR)TYPE_CHECKING)Pathc                    | j                         s5t        j                  d|        t        j                  t        |              y y )Nzcreate folder %s)existsLOGGERdebugosmakedirsstr)paths    M/var/www/opsc/venv/lib/python3.12/site-packages/virtualenv/util/path/_sync.py
ensure_dirr      s/    ;;='.
CI     c                    | |k(  rd|  }t        |      |j                         sy |j                         r2|j                         s"t        j                  d|       t        |       y t        j                  d|       |j                          y )Nz#source and destination is the same zremove directory %szremove file %s)
ValueErrorr   is_dir
is_symlinkr	   r
   safe_deleteunlink)srcdestmsgs      r   ensure_safe_to_dor      sl    
d{3C59o;;={{}T__.*D1D%t,r   c                    t        | |       t        j                  dt        | |             |j	                  | | j                                y )Nz
symlink %s)target_is_directory)r   r	   r
   _Debug
symlink_tor   r   r   s     r   symlinkr!   $   s7    c4 
LLvc401OOCSZZ\O:r   c                    t        | |       | j                         }|rt        nt        j                  }t
        j                  dt        | |              |t        |       t        |             y )Nzcopy %s)	r   r   copytreeshutilcopyr	   r
   r   r   )r   r   r   methods       r   r%   r%   *   sK    c4 ZZ\FXV[[F
LLF3-.
3s8SYr   c                   t        j                  |       D ]  \  }}}t         j                  j                  |t         j                  j	                  ||             }t         j                  j                  |      st        j                  |       |D ]X  }t         j                  j                  ||      }t         j                  j                  ||      }t        j                  ||       Z  y N)	r   walkr   joinrelpathisdirr   r$   r%   )	r   r   root_filesdest_dirnamesrc_fdest_fs	            r   r#   r#   2   s    ''#, 'a77<<bggoodC&@Aww}}X&KK! 	'DGGLLt,EWW\\(D1FKKv&	'	'r   c                    dd}t         j                  dk\  r"t        j                  t	        |       d|       y t        j                  t	        |       d|       y )Nc                    t        j                  |t         j                        s#t        j                  |t                | |       y  r(   )r   accessW_OKchmodr   )funcr   exc_infos      r   onerrorzsafe_delete.<locals>.onerror>   s,    yyrww'HHT7#Jr   )      T)ignore_errorsonexc)r>   r;   )r9   objectr   r   r:   r@   returnNone)sysversion_infor$   rmtreer   )r   r;   s     r   r   r   =   s?     7"c$it7Cc$itWEr   c                      e Zd ZddZddZy)r   c                     || _         || _        y r(   r    )selfr   r   s      r   __init__z_Debug.__init__L   s    	r   c                t    | j                   j                         rdnd | j                   d| j                  S )Nz
directory  z to )r   r   r   )rH   s    r   __str__z_Debug.__str__P   s/    "&((//"3,<TXXLTYYMZZr   Nr   r   r   r   rA   rB   )rA   r   )__name__
__module____qualname__rI   rL    r   r   r   r   K   s    [r   r   )r%   r#   r   r   r!   )r   r   rA   rB   rM   )r   r   r   r   rA   rB   )r   r   rA   rB   )
__future__r   loggingr   r$   rC   statr   typingr   pathlibr   	getLoggerrN   r	   r   r   r!   r%   r#   r   r   __all__rQ   r   r   <module>rY      sd    "  	  
   			8	$; 'F[ [r   