
    bi                     H   d dl Z d dlZd dlmZ d dlZ	 d dlmZ dgZ	 d dl	Z	dZ
d Zd Zd	 Z ej:                         Z ej>                         Z d Z!d Z" G d de#      Z$d Z% G d de&      Z' G d de&      Z( G d de&      Z) G d de&      Z*y# e$ r	 d dlmZ Y w xY w# e$ r 	 d dlZd dlZd dlZ ej"                  d
d      Zej&                  Zej*                  j,                  e_        ej*                  j0                  gej*                  j2                  gdz  z   e_        ej6                  Zej*                  j,                  e_        ej*                  j0                  gej*                  j2                  gdz  z   e_        dZ
d Zd Zn# e$ r	  ed      w xY wY sw xY w)    N)sleep)	monotonic)time	lock_fileTc                 h    t        j                  | j                         t         j                         y N)fcntlflockfilenoLOCK_EXfile_s    J/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/locket/__init__.py_lock_file_blockingr   3       ELLNEMM2    c                    	 t        j                  | j                         t         j                  t         j                  z         y# t
        $ r7}|j                  t        j                  t        j                  fv rY d }~y d }~ww xY w)NTF)	r	   r
   r   r   LOCK_NBIOErrorerrnoEACCESEAGAIN)r   errors     r   _lock_file_non_blockingr   6   sZ    	KK(EF 	{{u||U\\::		s   AA 	B,B BBc                 h    t        j                  | j                         t         j                         y r   )r	   r
   r   LOCK_UNr   s    r   _unlock_filer   @   r   r   kernel32)use_last_error   Fc                     t        t        j                  | j                               dddd      }|ryt	        j
                         }|dk7  rt	        j                  |      y)Nr      T!   F)_WinAPI_LockFilemsvcrtget_osfhandler   ctypesget_last_errorWinError)r   reserrs      r   r   r   #   sS    "6#7#7#GAqRSTC++-"9 //#..r   c                 d    t        t        j                  | j                               dddd       y )Nr   r"   )_WinAPI_UnlockFiler%   r&   r   r   s    r   r   r   .   s#    v33ELLNCQ1aPr   z?Platform not supported (failed to import fcntl, ctypes, msvcrt)c                     t         j                          	 t        j                  |       }|t	        |       }|t        | <   t         j                          t        |fi |S # t         j                          w xY wr   )_locks_lockacquire_locksget_create_lock_filerelease_Locker)pathkwargslocks      r   r   r   H   se    zz$<$T*DF4L4"6"" 	s   +A! !A7c                 H    t        |       }t        |       }t        ||g      S r   )_ThreadLock	_LockFile_LockSet)r6   thread_lock	file_locks      r   r3   r3   T   s%    d#K$I[),--r   c                       e Zd Zy)	LockErrorN)__name__
__module____qualname__ r   r   r@   r@   Z   s    r   r@   c                     |d}t               }	  |        }|ry |*t               |z
  |kD  rt        dj                  |            t        |       B)Ng?zCouldn't lock {0})get_timer@   formatr   )r0   timeoutretry_periodr6   
start_timesuccesss         r   _acquire_non_blockingrL   ^   s]    J
)!
Z''1/66t<==, r   c                       e Zd Zd Zd Zd Zy)r<   c                     || _         y r   )r1   )selflockss     r   __init__z_LockSet.__init__o   s	    r   c                     g }	 | j                   D ]%  }|j                  ||       |j                  |       ' y #  t        |      D ]  }|j	                            xY wr   )r1   r0   appendreversedr4   )rO   rH   rI   acquired_locksr8   acquired_locks         r   r0   z_LockSet.acquirer   sg    	 ,Wl3%%d+,	!).!9 (%%'( s	   49 #Ac                 X    t        | j                        D ]  }|j                           y r   )rT   r1   r4   )rO   r8   s     r   r4   z_LockSet.release~   s#    T[[) 	DLLN	r   NrA   rB   rC   rQ   r0   r4   rD   r   r   r<   r<   n   s    
r   r<   c                        e Zd Zd ZddZd Zy)r:   c                 D    || _         t        j                         | _        y r   )_path	threadingLock_lockrO   r6   s     r   rQ   z_ThreadLock.__init__   s    
^^%
r   Nc                 x     | j                   j                          y t         fd|| j                         y )Nc                  :     j                   j                  d      S )NF)r^   r0   rO   s   r   <lambda>z%_ThreadLock.acquire.<locals>.<lambda>   s    

 2 25 9 r   r0   rH   rI   r6   )r^   r0   rL   r[   )rO   rH   rI   s   `  r   r0   z_ThreadLock.acquire   s0    ?JJ !9)ZZ	r   c                 8    | j                   j                          y r   r^   r4   rb   s    r   r4   z_ThreadLock.release       

r   NNrX   rD   r   r   r:   r:      s    &	r   r:   c                        e Zd Zd ZddZd Zy)r;   c                      || _         d | _        y r   )r[   _filer_   s     r   rQ   z_LockFile.__init__   s    

r   Nc                     t        | j                  d      	 |t        rt               nt	        fd||| j                         | _        y #  j                           xY w)Nwbc                      t               S r   )r   )fileobjs   r   rc   z#_LockFile.acquire.<locals>.<lambda>   s    $;G$D r   rd   )openr[   _lock_file_blocking_availabler   rL   rk   close)rO   rH   rI   ro   s      @r   r0   z_LockFile.acquire   s\    tzz4(	!#@#G,%D#!-	 !DJ	MMOs   0A A$c                     | j                   t        d      t        | j                          | j                   j                          d | _         y )Nzcannot release unlocked lock)rk   r@   r   rr   rb   s    r   r4   z_LockFile.release   s;    :::;;TZZ 


r   rh   rX   rD   r   r   r;   r;      s    !*r   r;   c                   0    e Zd ZdZddZd Zd Zd Zd Zy)	r5   zg
    A lock wrapper to always apply the given *timeout* and *retry_period*
    to acquire() calls.
    Nc                 .    || _         || _        || _        y r   )r^   _timeout_retry_period)rO   r8   rH   rI   s       r   rQ   z_Locker.__init__   s    
)r   c                 d    | j                   j                  | j                  | j                         y r   )r^   r0   rv   rw   rb   s    r   r0   z_Locker.acquire   s     

4==$*<*<=r   c                 8    | j                   j                          y r   rf   rb   s    r   r4   z_Locker.release   rg   r   c                 &    | j                          | S r   )r0   rb   s    r   	__enter__z_Locker.__enter__   s    r   c                 $    | j                          y r   )r4   )rO   argss     r   __exit__z_Locker.__exit__   s    r   rh   )	rA   rB   rC   __doc__rQ   r0   r4   r{   r~   rD   r   r   r5   r5      s     *
>r   r5   )+r   r\   r   r   weakrefr   rF   ImportError__all__r	   rq   r   r   r   r'   ctypes.wintypesr%   WinDLL	_kernel32LockFiler$   wintypesBOOLrestypeHANDLEDWORDargtypes
UnlockFiler-   r]   r/   WeakValueDictionaryr1   r   r3   	Exceptionr@   rL   objectr<   r:   r;   r5   rD   r   r   <module>r      s      &* -33F %)!33 inn	$	$	$	&	#.		 	  v ,& (   Ff g  &%&  QQ "FMM*TB	$--#)??#7#7 %+__%;%;$<@U@U?VYZ?Z$Z!&11%+__%9%9"'-'='=&>&//BWBWAX[\A\&\#(-%			Q3  ][\\]2	Q=Qs;   B B! BB!F!'F3CF!FF! F!