+
    ‘°³j¥  ã                  ó®   € R t ^ RIHt ^ RIt^ RIt^ RIHt ^ RIHt ]P                  R8X  d
   ^RI
HtHt M^RIHtHt RRR	R
/R R lltR R ltRR.tR# )znA minimal native lock over a caller-owned file descriptor, contending with :class:`FileLock` on the same file.)ÚannotationsN)Úisfinite)ÚFinalÚwin32)Ú_lock_fd_nonblockingÚ
_unlock_fdÚblockingTÚpoll_intervalgš™™™™™©?c               ó(   € V ^8„  d   QhRRRRRRRR/# )é   ÚfdÚintr   Úboolr	   ÚfloatÚreturn© )Úformats   "ÚU/home/luca/screen-checking/.venv/lib/python3.14/site-packages/filelock/_descriptor.pyÚ__annotate__r      s)   € ÷ "ñ "˜ð "¨$ð "Àeð "ÐW[ñ "ó    c               óÎ   € V'       g   \        V 4      # \        V4      '       d   V^ 8:  d   RV 2p\        V4      h\        V 4      '       g   \        P                  ! V4       K)  R# )a×  
Take the native OS lock on *fd*, a file descriptor the caller opened and owns.

This is the same one-byte exclusive lock :class:`FileLock` uses, so a descriptor lock and a path lock on the same
file contend with each other. Unlike :class:`FileLock` it adds no path handling: it never opens, truncates, closes,
unlinks, chmods, canonicalizes, or falls back. The caller owns *fd* before, during, and after the call, and must
close it. On Windows *fd* must be a synchronous descriptor (its handle not opened with ``FILE_FLAG_OVERLAPPED``).

For timeout, reentrancy, singleton, lifetime, or stale-break behavior, use :class:`FileLock`. There is no async
wrapper. Run this in an executor, or drive ``blocking=False`` from your own polling loop.

:param fd: an open file descriptor the caller owns.
:param blocking: when ``True`` (default), retry the nonblocking attempt every *poll_interval* seconds until it
    succeeds; when ``False``, make one attempt.
:param poll_interval: finite, positive seconds between attempts while blocking; ignored when *blocking* is
    ``False``.

:returns: ``True`` once the lock is held, or ``False`` on contention when ``blocking`` is ``False``.

:raises OSError: for a permanent native failure, such as an invalid descriptor, or with ``errno.ENOSYS`` when the
    Python build lacks the native locking primitive. The descriptor is left open.
:raises ValueError: if a blocking call receives a non-finite or non-positive *poll_interval*.

.. versionadded:: 3.30.0

z5poll_interval must be finite and greater than 0, got T)r   r   Ú
ValueErrorÚtimeÚsleep)r   r   r	   Úmsgs   &$$ r   Úlock_descriptorr      sV   € ÷6 Ü# BÓ'Ð'Ü�M×"Ò" m°qÔ&8ØQÐR_ÐQ`ÐaˆÜ˜‹oÐÜ" 2×&Ò&Ü�
Š
�=Ö!Ùr   c               ó    € V ^8„  d   QhRRRR/# )r   r   r   r   ÚNoner   )r   s   "r   r   r   5   s   € ÷ ñ ˜#ð  $ñ r   c                ó   € \        V 4       R# )a€  
Release the native OS lock on *fd* without touching the descriptor.

:param fd: the descriptor a prior :func:`lock_descriptor` locked; the caller still owns and must close it.

:raises OSError: if the native unlock fails, including ``errno.ENOSYS`` when the Python build lacks the native
    locking primitive; the caller may retry on the same descriptor.

.. versionadded:: 3.30.0

N)r   )r   s   &r   Úunlock_descriptorr   5   s   € ô ˆr†Nr   r   r   )Ú__doc__Ú
__future__r   Úsysr   Úmathr   Útypingr   ÚplatformÚ_windowsr   r   Ú_unixr   r   Ú__all__r   r   r   Ú<module>r)      sT   ðÙ tå "ã 
Û Ý Ý à‡<�<�7Ôß:Ð:ç7ð"°ð "Èd÷ "õJð  Øð‚r   