
    wBf                         d dl Z d dlZd dlmZmZmZmZmZmZ d dl	m
Z
 d dl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  e
e      Zd
Zd Zd Zd Zy)    N)EACCESEEXISTENOENT	ENOTEMPTYEPERM	errorcode)	getLogger)basenamedirnameisdir)CalledProcessError)sleep   )on_win)TRACE   c                 "    |j                  dt              t        s  |i |S ddl fd}t	              D ]  }	   |i |}|c S  y# t
        $ r}t        j                  t        t        |             |j                  t        t        fv r
 |||       nL|j                  t        t        fv r t        j                  dt        |j                     |j                          Y d}~d}~wt         $ r} |||       Y d}~d}~ww xY w)zNMostly for retrying file operations that fail on Windows due to virus scanners	max_triesr   Nc                 (   | dz
  k(  r d| z  j                         z   dz  }t        j                  d      }t        j                  t        dt        |j                  j                        |j                  j                  |       t        |       y )N      g?zretrying %s/%s %s() in %g sec)randomsys	_getframelogr   r
   f_codeco_filenamef_lineno__name__r   )nexc
sleep_timecaller_framefnr   r   s       <lib/python3.12/site-packages/conda/gateways/disk/__init__.py
sleep_somez"exp_backoff_fn.<locals>.sleep_some   s|    	A!tv}}.#5
}}Q'+\((445!!KK	
 	j    z!Uncaught backoff with errno %s %d)pop	MAX_TRIESr   r   rangeOSErrorr   r   reprerrnor   r   r   r   warnr   r   )	r$   argskwargsr&   r    resulter   r   s	   `      @@r%   exp_backoff_fnr3      s    

;	2I4"6""
 9 	((F" M'  	GGE47#ww5&/)1a VY// 71779KQWW  ! " 	q!	s%   A	DBC//D;	D		Dc                     	 t         j                  t        d|        | r$t        j                  |        t	        |       xr | S y # t
        $ r+}|j                  t        k(  rt	        |       r| cY d }~S  d }~ww xY w)Nmaking directory %s)r   r   osmakedirsr   r+   r-   r   )pathr2   s     r%   mkdir_pr9   C   sg    	,d3KK;'4'   77ftK	s$   A A 	A8A3,A82A33A8c           	         t        |       ry t        |       }t        |      st        |       t        j                  t        d|        	 t        j                  |        t        s	 t        j                  | d       y y # t        $ r)}|j                  t        k(  rt        |       s Y d }~Ld }~ww xY w# t        $ rB}t        j                  t        d| |j                  t        |j                            Y d }~y d }~ww xY w)Nr5   i  z/Failed to set permissions to 2775 on %s (%d %d))r   r   mkdir_p_sudo_safer   r   r6   mkdirr+   r-   r   r   chmodr   )r8   base_dirr2   s      r%   r;   r;   Q   s    T{t}H?(#GGE($/
 
	HHT6"	   6!eDk '2"  	GGA!''" 	s0   
A> &B3 >	B0B++B03	C><8C99C>)r6   r   r-   r   r   r   r   r   r   loggingr	   os.pathr
   r   r   
subprocessr   timer   common.compatr   common.constantsr   r   r   r)   r3   r9   r;    r'   r%   <module>rF      sG    
 
 E E  , , )  # %	-`"r'   