ó
^†êWc           @@  sp   d  d l  m Z d  d l Z d  d l Z d d l m Z m Z m Z m Z m	 Z	 m
 Z
 d e f d „  ƒ  YZ d S(   i    (   t   absolute_importNi   (   t   LockBaset
   LockFailedt	   NotLockedt	   NotMyLockt   LockTimeoutt   AlreadyLockedt   LinkLockFilec           B@  s>   e  Z d  Z d d „ Z d „  Z d „  Z d „  Z d „  Z RS(   s   Lock access to a file using atomic property of link(2).

    >>> lock = LinkLockFile('somefile')
    >>> lock = LinkLockFile('somefile', threaded=False)
    c         C@  s~  y t  |  j d ƒ j ƒ  Wn$ t k
 r@ t d |  j ƒ ‚ n X| d  k	 rS | n |  j } t j ƒ  } | d  k	 r | d k r | | 7} n  xê t ryy t	 j
 |  j |  j ƒ Wn¿ t k
 rqt	 j |  j ƒ j } | d k rå d  S| d  k	 rKt j ƒ  | k rKt	 j |  j ƒ | d k r5t d |  j ƒ ‚ qKt d |  j ƒ ‚ n  t j | d  k	 rg| d pjd ƒ q Xd  Sq Wd  S(	   Nt   wbs   failed to create %si    i   s&   Timeout waiting to acquire lock for %ss   %s is already lockedi
   gš™™™™™¹?(   t   opent   unique_namet   closet   IOErrorR   t   Nonet   timeoutt   timet   Truet   ost   linkt	   lock_filet   OSErrort   statt   st_nlinkt   unlinkR   t   pathR   t   sleep(   t   selfR   t   end_timet   nlinks(    (    sr   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/lockfile/linklockfile.pyt   acquire   s0    	'c         C@  sq   |  j  ƒ  s" t d |  j ƒ ‚ n+ t j j |  j ƒ sM t d |  j ƒ ‚ n  t j |  j ƒ t j |  j ƒ d  S(   Ns   %s is not lockeds   %s is locked, but not by me(	   t	   is_lockedR   R   R   t   existsR
   R   R   R   (   R   (    (    sr   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/lockfile/linklockfile.pyt   release7   s    c         C@  s   t  j j |  j ƒ S(   N(   R   R   R   R   (   R   (    (    sr   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/lockfile/linklockfile.pyR   ?   s    c         C@  s:   |  j  ƒ  o9 t j j |  j ƒ o9 t j |  j ƒ j d k S(   Ni   (   R   R   R   R   R
   R   R   (   R   (    (    sr   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/lockfile/linklockfile.pyt   i_am_lockingB   s    c         C@  s,   t  j j |  j ƒ r( t  j |  j ƒ n  d  S(   N(   R   R   R   R   R   (   R   (    (    sr   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/lockfile/linklockfile.pyt
   break_lockG   s    N(	   t   __name__t
   __module__t   __doc__R   R   R    R   R!   R"   (    (    (    sr   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/lockfile/linklockfile.pyR   
   s   &			(   t
   __future__R    R   R   t    R   R   R   R   R   R   R   (    (    (    sr   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/lockfile/linklockfile.pyt   <module>   s   .