ó
    ¼Rj  ã                   ó@  • S r SSKrSrS r\R                  S:X  aº  SSKrSSKJrJrJ	r	J
r
JrJrJrJrJr  SSKJrJrJr  SrSrS	r\" \5      \" \5      :w  a  \rO\r\r " S
 S\5      r " S S\	5      r " S S\5      r\" \5      r\
" S5      r\R<                  r\\l        \\\\\\/\l         \RB                  r!\\!l        \\\\\/\!l         S r"S r#g SSK$r$\$R(                  r\$R*                  r\$R,                  rS r"S r#g! \%\&4 a    S=r=rrS r"S r# gf = f)am  
Portable file locking utilities.

Based partially on an example by Jonathan Feignberg in the Python
Cookbook [1] (licensed under the Python Software License) and a ctypes port by
Anatoly Techtonik for Roundup [2] (license [3]).

[1] https://code.activestate.com/recipes/65203/
[2] https://sourceforge.net/p/roundup/code/ci/default/tree/roundup/backends/portalocker.py  # NOQA
[3] https://sourceforge.net/p/roundup/code/ci/default/tree/COPYING.txt

Example Usage::

    >>> from django.core.files import locks
    >>> with open('./file', 'wb') as f:
    ...     locks.lock(f, locks.LOCK_EX)
    ...     f.write('Django')
é    N)ÚLOCK_EXÚLOCK_SHÚLOCK_NBÚlockÚunlockc                 óH   • [        U S5      (       a  U R                  5       $ U $ )zCGet a filedescriptor from something which could be a file or an fd.Úfileno)Úhasattrr	   ©Úfs    ÚCD:\diplom_project\venv\Lib\site-packages\django/core/files/locks.pyÚ_fdr      s   € ä   H×-Ñ-ˆ1�8‰8‹:Ð4°1Ð4ó    Únt)	ÚPOINTERÚ	StructureÚUnionÚWinDLLÚbyrefÚc_int64Úc_ulongÚc_void_pÚsizeof)ÚBOOLÚDWORDÚHANDLEé   é   c                   ó$   • \ rS rSrS\4S\4/rSrg)Ú_OFFSETé9   ÚOffsetÚ
OffsetHigh© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Ú_fields_Ú__static_attributes__r$   r   r   r    r    9   s   † Ø˜uÐ%¨°eÐ'<Ð=‹r   r    c                   ó*   • \ rS rSrS/rS\4S\4/rSrg)Ú_OFFSET_UNIONé<   Ú_offsetÚPointerr$   N)	r%   r&   r'   r(   Ú_anonymous_r    ÚPVOIDr)   r*   r$   r   r   r,   r,   <   s   † Ø �kˆØ Ð(¨9°eÐ*<Ð=‹r   r,   c                   ó6   • \ rS rSrS/rS\4S\4S\4S\4/rSr	g)Ú
OVERLAPPEDé@   Ú_offset_unionÚInternalÚInternalHighÚhEventr$   N)
r%   r&   r'   r(   r0   Ú	ULONG_PTRr,   r   r)   r*   r$   r   r   r3   r3   @   s1   † Ø&Ð'ˆà˜Ð#Ø˜YÐ'Ø˜mÐ,Ø�vÐð	
‹r   r3   Úkernel32c           
      óš   • [         R                  " [        U 5      5      n[        5       n[	        X!SSS[        U5      5      n[        U5      $ ©Nr   l     þ )ÚmsvcrtÚget_osfhandler   r3   Ú
LockFileExr   Úbool)r   ÚflagsÚhfileÚ
overlappedÚrets        r   r   r   T   s>   € Ü×$Ò$¤S¨£VÓ,ˆÜ“\ˆ
Ü˜ q¨!¨Z¼¸zÓ9JÓKˆÜ�C‹yÐr   c           	      óš   • [         R                  " [        U 5      5      n[        5       n[	        USSS[        U5      5      n[        U5      $ r<   )r=   r>   r   r3   ÚUnlockFileExr   r@   )r   rB   rC   rD   s       r   r   r   Z   s>   € Ü×$Ò$¤S¨£VÓ,ˆÜ“\ˆ
Ü˜5 ! Q¨
´E¸*Ó4EÓFˆÜ�C‹yÐr   c                 óf   •  [         R                  " [        U 5      U5        g! [         a     gf = f)NTF)ÚfcntlÚflockr   ÚBlockingIOError©r   rA   s     r   r   r   v   s.   € ðÜ—’œC ›F EÔ*ØøÜ"ó Ùðús   ‚ # £
0¯0c                 ó`   • [         R                  " [        U 5      [         R                  5        g©NT)rH   rI   r   ÚLOCK_UNr   s    r   r   r   }   s   € Ü�KŠKœ˜A›¤§¡Ô.Ør   c                 ó   • g)NFr$   rK   s     r   r   r   l   s   € àr   c                 ó   • grM   r$   r   s    r   r   r   p   s   € àr   )'Ú__doc__ÚosÚ__all__r   Únamer=   Úctypesr   r   r   r   r   r   r   r   r   Úctypes.wintypesr   r   r   r   r   r   r9   r1   r    r,   r3   ÚLPOVERLAPPEDr:   r?   ÚrestypeÚargtypesrF   r   r   rH   ÚImportErrorÚAttributeErrorr$   r   r   Ú<module>r\      sa  ðñó$ 
à
=€ò5ð
 ‡7�7ˆdƒ?Û÷
÷ 
õ 
÷ 4Ñ3à€GØ€GØ€Gñ ˆgƒ™& Ó*Ó*Ø‰	àˆ	Ø€Eô>�)ô >ô>˜ô >ô
�Yô 
ñ ˜:Ó&€Lñ �jÓ!€HØ×$Ñ$€JØ€JÔØ! 5¨%°¸¸|ÐL€JÔØ×(Ñ(€LØ€LÔØ# U¨E°5¸,ÐG€LÔòóðÛà—-‘-ˆØ—-‘-ˆØ—-‘-ˆò 	ó	øð- ˜Ð(ó à&'Ð'ˆÐ'�'˜Gò	ô	ðús   Ã(D ÄDÄD