Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/filelock/__init__.py: 65%
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
15from ._api import AcquireReturnProxy, BaseFileLock
16from ._error import Timeout
18if TYPE_CHECKING:
19 from ._async_read_write import (
20 AsyncAcquireReadWriteReturnProxy,
21 AsyncReadWriteLock,
22 )
23 from ._read_write import ReadWriteLock
24else:
25 try:
26 from ._async_read_write import AsyncAcquireReadWriteReturnProxy, AsyncReadWriteLock
27 from ._read_write import ReadWriteLock
28 except ImportError: # sqlite3 may be unavailable if Python was built without it or the C library is missing
29 AsyncAcquireReadWriteReturnProxy = None
30 AsyncReadWriteLock = None
31 ReadWriteLock = None
33from ._soft import SoftFileLock
34from ._soft_rw import AsyncAcquireSoftReadWriteReturnProxy, AsyncSoftReadWriteLock, SoftReadWriteLock
35from ._unix import UnixFileLock, has_fcntl
36from ._windows import WindowsFileLock
37from .asyncio import (
38 AsyncAcquireReturnProxy,
39 AsyncSoftFileLock,
40 AsyncUnixFileLock,
41 AsyncWindowsFileLock,
42 BaseAsyncFileLock,
43)
44from .version import version
46#: version of the project as a string
47__version__: str = version
50if sys.platform == "win32": # pragma: win32 cover
51 _FileLock: type[BaseFileLock] = WindowsFileLock
52 _AsyncFileLock: type[BaseAsyncFileLock] = AsyncWindowsFileLock
53else: # pragma: win32 no cover # noqa: PLR5501
54 if has_fcntl:
55 _FileLock: type[BaseFileLock] = UnixFileLock
56 _AsyncFileLock: type[BaseAsyncFileLock] = AsyncUnixFileLock
57 else:
58 _FileLock = SoftFileLock
59 _AsyncFileLock = AsyncSoftFileLock
60 if warnings is not None:
61 warnings.warn("only soft file lock is available", stacklevel=2)
63if TYPE_CHECKING:
64 FileLock = SoftFileLock
65 AsyncFileLock = AsyncSoftFileLock
66else:
67 #: Alias for the lock, which should be used for the current platform.
68 FileLock = _FileLock
69 AsyncFileLock = _AsyncFileLock
72__all__ = [
73 "AcquireReturnProxy",
74 "AsyncAcquireReadWriteReturnProxy",
75 "AsyncAcquireReturnProxy",
76 "AsyncAcquireSoftReadWriteReturnProxy",
77 "AsyncFileLock",
78 "AsyncReadWriteLock",
79 "AsyncSoftFileLock",
80 "AsyncSoftReadWriteLock",
81 "AsyncUnixFileLock",
82 "AsyncWindowsFileLock",
83 "BaseAsyncFileLock",
84 "BaseFileLock",
85 "FileLock",
86 "ReadWriteLock",
87 "SoftFileLock",
88 "SoftReadWriteLock",
89 "Timeout",
90 "UnixFileLock",
91 "WindowsFileLock",
92 "__version__",
93]