o
    i*                  	   @   s   d Z ddlZddlZddlmZmZ ddlmZ ddlm	Z	 zddlm
Z
 W n ey:   ded	ed
dfddZ
Y nw edZdd Zdedef deded
efddZdefddZdd Zdd ZdS )z2Convenience layer on top of stdlib's shutil and os    N)CallableTypeVar   )py311)log)chmodargskwargsreturnc                  O   s   d S N )r   r	   r   r   O/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/setuptools/_shutil.pyr      s   r   _Tc              
   C   sR   t d| | zt| | W d S  ty( } zt d| W Y d }~d S d }~ww )Nzchanging mode of %s to %ozchmod failed: %s)r   debugr   OSError)pathmodeer   r   r   attempt_chmod_verbose   s   r   func.argexcc                 C   s2   | t jt jfv rt jdkrt|tj | |S |)zIshutils onexc callback to automatically call chmod for certain functions.nt)osunlinkremovenamer   statS_IWRITE)r   r   r   r   r   r   _auto_chmod    s   r   Fc                 C   s   t | ||S )zx
    Similar to ``shutil.rmtree`` but automatically executes ``chmod``
    for well know Windows failure scenarios.
    )r   shutil_rmtree)r   ignore_errorsonexcr   r   r   rmtree+   s   r#   c                 K   s$   t j| rt| fi | d S d S r   )r   r   isdirr#   )r   optsr   r   r   rmdir3   s   r&   c                  C   s   t d} t |  | S )N   )r   umask)tmpr   r   r   current_umask8   s   

r*   )__doc__r   r   typingr   r   compatr   	distutilsr   r   ImportErrorobjectr   r   strBaseExceptionr   r#   r&   r*   r   r   r   r   <module>   s2    	

