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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   a/var/www/html/eduruby.in/lip-sync/lip-sync-env/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   Zshutil_rmtree)r   ignore_errorsZ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$   )__doc__r   r   typingr   r   compatr   	distutilsr   r   ImportErrorobjectr   r   strBaseExceptionr   r!   r$   r   r   r   r   <module>   s0    	

