
    +'h                     h   U d dl Z d dlZddlmZmZ ej
                  Z G d dej                        ZdZej                  ej                  ej                  eef   egej                  f      ed<   e j                  dk(  rWd dlZd dlZd dlZd dlZd dlZ ej*                         Zdej                  ej.                  ef   d	efd
Zdej.                  fdZye j                  dk(  rFd dlZd dlZej8                  Zdej                  ej.                  ef   d	efdZdej.                  fdZy ed      )    N   )	constants
exceptionsc                       e Zd ZdefdZy)	HasFilenoreturnc                      y )N )selfs    ^/home/kushmeetdev/Regenta/Chatbot/venv/lib/python3.12/site-packages/portalocker/portalocker.pyfilenozHasFileno.fileno   s        N)__name__
__module____qualname__intr   r
   r   r   r   r      s
      r   r   LOCKERntfile_flagsc                    t        j                  t         j                  |       } d}|t        j                  z  r|t
        j                  z  }|t        j                  z  r|t
        j                  z  }| j                         }|r| j                  d       t        j                  | j                               }	 t        j                  ||ddt                	 |r| j                  |       y y # t"        j$                  $ r^}|j&                  t&        j(                  k(  r;t+        j,                  t*        j.                  j0                  |j2                  |       | d }~ww xY w# |r| j                  |       w w xY wNr   i  fh)typingcastIO	LockFlagsNON_BLOCKINGwin32conLOCKFILE_FAIL_IMMEDIATELY	EXCLUSIVELOCKFILE_EXCLUSIVE_LOCKtellseekmsvcrtget_osfhandler   	win32file
LockFileEx__overlapped
pywintypeserrorwinerrorERROR_LOCK_VIOLATIONr   AlreadyLockedLockExceptionLOCK_FAILEDstrerror)r   r   modesaveposos_fh	exc_values         r   lockr7      s8    FIIu-9)))H666D9&&&H444D **,JJqM$$U\\^4	$  a<H 

7#   	 !!X%B%BB ..,,88&& !	! 	 

7# s%   :C- -E AEEE! !E7c                 :   	 | j                         }|r| j                  d       t        j                  | j	                               }	 t        j                  |ddt               |r| j                  |       y y # t        j                  $ r(}|j                  t        j                  k7  r Y d }~Kd }~ww xY w# |r| j                  |       w w xY w# t        $ r@}t        j                  t        j                  j                  |j                   |       |d }~ww xY wr   )r$   r%   r&   r'   r   r(   UnlockFileExr*   r+   r,   r-   ERROR_NOT_LOCKEDOSErrorr   r0   r1   r2   )r   r4   r5   excs       r   unlockr=   C   s    	jjlG

1((8E(&& 	 JJw'  ## <<8#<#<<  = JJw'  	**((44 		sN   AC 	A: %C :B5B0+B8 0B55B8 8CC 	D;DDposixc                    t         J d       |t        j                  z  r/|t        j                  t        j                  z  z  st        d      	 t        | |       y # t        $ ra}|j                  t        j                  t        j                  fv rt        j                  ||       |t        j                  ||       |d }~wt        $ r}t        j                  ||       |d }~ww xY w)N'We need a locking function in `LOCKER` zXWhen locking in non-blocking mode the SHARED or EXCLUSIVE flag must be specified as wellr   )r   r   r   SHAREDr"   RuntimeErrorr;   errnoEACCESEAGAINr   r/   r0   EOFError)r   r   r6   s      r   r7   r7   i   s    !L#LL! I***Ey2225
 > 
	5%  	! 5<<">> !.. !! !.. !!  	** 	s%   A 	C,'ACC,C''C,c                 n    t         J d       t        | j                         t        j                         y )Nr@   )r   r   r   UNBLOCK)r   s    r   r=   r=      s*    !L#LL!u||~y001r   z3PortaLocker only defined for nt and posix platforms)osr    r   r   r   Protocolr   r   OptionalCallableUnionr   Any__annotations__namer&   r+   r    r(   r-   
OVERLAPPEDr*   r   r7   r=   rC   fcntlflockrB   r
   r   r   <module>rU      s1   	  # 	! !
 9= \\#y.!3'35 	6 = 77d?(:((*L$$FLLC0 $$ $$Lfii : WW
 [[F*FLLC0 * *X2fii 2
 L
MMr   