
    si                         S SK r S SKrS SKJrJrJrJrJrJr  S SK	J
r
  S SKJrJrJr  S SKJr  S SKJr  SSKJr  SS	KJr  \
" \5      rS
rS rS rS rg)    N)EACCESEEXISTENOENT	ENOTEMPTYEPERM	errorcode)	getLogger)basenamedirnameisdir)CalledProcessError)sleep   )on_win)TRACE   c                 :  ^ ^^ UR                  S[        5      m[        (       d  T " U0 UD6$ SSKmU UU4S jn[	        T5       H  n T " U0 UD6nUs  $    g! [
         a  n[        R                  [        [        U5      5        UR                  [        [        4;   a  U" XF5         SnAMh  UR                  [        [        4;   a  e [        R                  S[        UR                     UR                  5        e SnAf[          a  nU" XF5         SnAM  SnAff = f)zNMostly for retrying file operations that fail on Windows due to virus scanners	max_triesr   Nc                 ,  > U TS-
  :X  a  e SU -  TR                  5       -   S-  n[        R                  " S5      n[        R                  [        S[        UR                  R                  5      UR                  TR                  U5        [        U5        g )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.13/site-packages/conda/gateways/disk/__init__.py
sleep_some"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   warningr   r   )	r$   argskwargsr&   r    resulter   r   s	   `      @@r%   exp_backoff_fnr4      s    

;	2I64"6""
 9	((F" M'   	GGE47#ww5&/)1  VY// 71779KQWW ! 	q	s,   A
D!AC:,AC::DDDc                     [         R                  [        SU 5        U (       a*  [        R                  " U 5        [	        U 5      =(       a    U $ g ! [
         a1  nUR                  [        :X  a  [	        U 5      (       a  U s S nA$ e S nAff = f)Nmaking directory %s)r   r   osmakedirsr   r,   r.   r   )pathr3   s     r%   mkdir_pr:   C   si    	,d3KK;'4'   77ftK	s$   AA 
B
%B>B
BB
c           	      4   [        U 5      (       a  g [        U 5      n[        U5      (       d  [        U5        [        R                  [        SU 5         [
        R                  " U 5        [        (       d   [
        R                  " U S5        g g ! [         a/  nUR                  [        :X  a  [        U 5      (       d  e  S nANYS nAff = f! [         aB  n[        R                  [        SU UR                  [        UR                     5         S nAg S nAff = f)Nr6   i  z/Failed to set permissions to 2775 on %s (%d %d))r   r   mkdir_p_sudo_safer   r   r7   mkdirr,   r.   r   r   chmodr   )r9   base_dirr3   s      r%   r<   r<   Q   s    T{{t}H??(#GGE($/
 6
	HHT6"	   6!eDkk '2"  	GGA!''" 	s0   B 6C 
C%CC
D8DD)r7   r   r.   r   r   r   r   r   r   loggingr	   os.pathr
   r   r   
subprocessr   timer   common.compatr   common.constantsr   r   r   r*   r4   r:   r<    r(   r%   <module>rG      sG    
 
 E E  , , )  # %	-`"r(   