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