ó
Ý²k^c           @` sõ   d  d l  m Z m Z m Z m Z d  d l m Z m Z m Z m	 Z	 m
 Z
 m Z d  d l m Z d  d l Z d  d l m Z m Z m Z d  d l m Z d  d l Z d  d l m Z d d	 l m Z e e ƒ Z d
 Z d „  Z d „  Z d „  Z d S(   i    (   t   absolute_importt   divisiont   print_functiont   unicode_literals(   t   EACCESt   EEXISTt   ENOENTt	   ENOTEMPTYt   EPERMt	   errorcode(   t	   getLoggerN(   t   basenamet   isdirt   dirname(   t   CalledProcessError(   t   sleepi   (   t   on_wini   c         ` s&  | j  d t ƒ ‰ t s% ˆ  | | Ž  Sd d l ‰ ‡  ‡ ‡ f d †  } xÙ t ˆ ƒ D]Ë } y ˆ  | | Ž  } Wn« t t f k
 rú } t j t	 | ƒ ƒ | j
 t t f k r¼ | | | ƒ q| j
 t t f k r× ‚  qt j d t | j
 | j
 ƒ ‚  qS t k
 r} | | | ƒ qS X| SqS Wd S(   uN   Mostly for retrying file operations that fail on Windows due to virus scannersu	   max_triesi    Nc         ` sv   |  ˆ d k r ‚  n  d |  ˆ j  ƒ  d } t j d ƒ } t j d t | j j ƒ | j ˆ  j	 | ƒ t
 | ƒ d  S(   Ni   i   gš™™™™™¹?u   retrying %s/%s %s() in %g sec(   t   randomt   syst	   _getframet   logt   traceR   t   f_codet   co_filenamet   f_linenot   __name__R   (   t   nt   exct
   sleep_timet   caller_frame(   t   fnt	   max_triesR   (    s;   lib/python2.7/site-packages/conda/gateways/disk/__init__.pyt
   sleep_some   s    	u!   Uncaught backoff with errno %s %d(   t   popt	   MAX_TRIESR   R   t   ranget   OSErrort   IOErrorR   R   t   reprt   errnoR   R   R   R   t   warnR	   R   (   R   t   argst   kwargsR    R   t   resultt   e(    (   R   R   R   s;   lib/python2.7/site-packages/conda/gateways/disk/__init__.pyt   exp_backoff_fn   s&    c         C` ss   y7 t  j d |  ƒ |  r6 t j |  ƒ t |  ƒ o5 |  SWn5 t k
 rn } | j t k rh t |  ƒ rh |  S‚  n Xd  S(   Nu   making directory %s(   R   R   t   ost   makedirsR   t   EnvironmentErrorR'   R   (   t   pathR,   (    (    s;   lib/python2.7/site-packages/conda/gateways/disk/__init__.pyt   mkdir_p?   s    c         C` s¯   t  |  ƒ r d  St |  ƒ } t  | ƒ s5 t | ƒ n  t j d |  ƒ t j |  ƒ t s« y t j |  d ƒ Wq« t	 t
 f k
 r§ } t j d |  | j t | j ƒ q« Xn  d  S(   Nu   making directory %siý  u/   Failed to set permissions to 2775 on %s (%d %d)(   R   R   t   mkdir_p_sudo_safeR   R   R.   t   mkdirR   t   chmodR$   R%   R'   R	   (   R1   t   base_dirR,   (    (    s;   lib/python2.7/site-packages/conda/gateways/disk/__init__.pyR3   M   s    
	(    t
   __future__R    R   R   R   R'   R   R   R   R   R   R	   t   loggingR
   R.   t   os.pathR   R   R   t
   subprocessR   R   t   timeR   t   common.compatR   R   R   R"   R-   R2   R3   (    (    (    s;   lib/python2.7/site-packages/conda/gateways/disk/__init__.pyt   <module>   s   ".	*	