Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/filelock/__init__.py: 70%
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1"""
2A platform independent file lock that supports the with-statement.
4.. autodata:: filelock.__version__
5 :no-value:
7"""
9from __future__ import annotations
11import sys
12import warnings
13from typing import TYPE_CHECKING, Final
15from ._api import AcquireReturnProxy, BaseFileLock, CloseErrorPolicy, ContextErrorPolicy, LockOptions
16from ._descriptor import lock_descriptor, unlock_descriptor
17from ._error import LeaseSettingsMismatch, SoftFileLockLifetimeWarning, SoftFileLockProtocolError, Timeout
18from ._lease import LeaseCompromise, SoftFileLease
19from ._marker import MarkerSoftFileLock, OwnerRecord
21if TYPE_CHECKING:
22 from ._async_read_write import (
23 AsyncAcquireReadWriteReturnProxy,
24 AsyncReadWriteLock,
25 )
26 from ._read_write import ReadWriteLock
27else:
28 try:
29 from ._async_read_write import AsyncAcquireReadWriteReturnProxy, AsyncReadWriteLock
30 from ._read_write import ReadWriteLock
31 except ImportError: # pragma: lacks sqlite3
32 AsyncAcquireReadWriteReturnProxy = None
33 AsyncReadWriteLock = None
34 ReadWriteLock = None
36from ._soft import SoftFileLock
37from ._soft_rw import AsyncAcquireSoftReadWriteReturnProxy, AsyncSoftReadWriteLock, SoftReadWriteLock
38from ._strict import StrictSoftFileClaim, StrictSoftFileClaimState, StrictSoftFileLock
39from ._unix import UnixFileLock, has_fcntl
40from ._windows import WindowsFileLock
41from .asyncio import (
42 AsyncAcquireReturnProxy,
43 AsyncSoftFileLease,
44 AsyncSoftFileLock,
45 AsyncStrictSoftFileLock,
46 AsyncUnixFileLock,
47 AsyncWindowsFileLock,
48 BaseAsyncFileLock,
49)
50from .version import version
52#: version of the project as a string
53__version__: Final[str] = version
56if sys.platform == "win32": # pragma: win32 cover
57 _FileLock: type[BaseFileLock] = WindowsFileLock
58 _AsyncFileLock: type[BaseAsyncFileLock] = AsyncWindowsFileLock
59else: # pragma: win32 no cover # ruff:ignore[collapsible-else-if] # the else carries the win32 no-cover pragma
60 if has_fcntl:
61 _FileLock: type[BaseFileLock] = UnixFileLock
62 _AsyncFileLock: type[BaseAsyncFileLock] = AsyncUnixFileLock
63 else:
64 _FileLock = SoftFileLock
65 _AsyncFileLock = AsyncSoftFileLock
66 warnings.warn("only soft file lock is available", stacklevel=2)
68if TYPE_CHECKING:
69 FileLock = SoftFileLock
70 AsyncFileLock = AsyncSoftFileLock
71else:
72 #: Alias for the lock, which should be used for the current platform.
73 FileLock = _FileLock
74 AsyncFileLock = _AsyncFileLock
77__all__ = [
78 "AcquireReturnProxy",
79 "AsyncAcquireReadWriteReturnProxy",
80 "AsyncAcquireReturnProxy",
81 "AsyncAcquireSoftReadWriteReturnProxy",
82 "AsyncFileLock",
83 "AsyncReadWriteLock",
84 "AsyncSoftFileLease",
85 "AsyncSoftFileLock",
86 "AsyncSoftReadWriteLock",
87 "AsyncStrictSoftFileLock",
88 "AsyncUnixFileLock",
89 "AsyncWindowsFileLock",
90 "BaseAsyncFileLock",
91 "BaseFileLock",
92 "CloseErrorPolicy",
93 "ContextErrorPolicy",
94 "FileLock",
95 "LeaseCompromise",
96 "LeaseSettingsMismatch",
97 "LockOptions",
98 "MarkerSoftFileLock",
99 "OwnerRecord",
100 "ReadWriteLock",
101 "SoftFileLease",
102 "SoftFileLock",
103 "SoftFileLockLifetimeWarning",
104 "SoftFileLockProtocolError",
105 "SoftReadWriteLock",
106 "StrictSoftFileClaim",
107 "StrictSoftFileClaimState",
108 "StrictSoftFileLock",
109 "Timeout",
110 "UnixFileLock",
111 "WindowsFileLock",
112 "__version__",
113 "lock_descriptor",
114 "unlock_descriptor",
115]