Aluode/PerceptionLabPortable
0
1"""2A platform independent file lock that supports the with-statement.3 4.. autodata:: filelock.__version__5 :no-value:6 7"""8 9from __future__ import annotations10 11import sys12import warnings13from typing import TYPE_CHECKING14 15from ._api import AcquireReturnProxy, BaseFileLock16from ._error import Timeout17from ._soft import SoftFileLock18from ._unix import UnixFileLock, has_fcntl19from ._windows import WindowsFileLock20from .asyncio import (21 AsyncAcquireReturnProxy,22 AsyncSoftFileLock,23 AsyncUnixFileLock,24 AsyncWindowsFileLock,25 BaseAsyncFileLock,26)27from .version import version28 29#: version of the project as a string30__version__: str = version31 32 33if sys.platform == "win32": # pragma: win32 cover34 _FileLock: type[BaseFileLock] = WindowsFileLock35 _AsyncFileLock: type[BaseAsyncFileLock] = AsyncWindowsFileLock36else: # pragma: win32 no cover # noqa: PLR550137 if has_fcntl:38 _FileLock: type[BaseFileLock] = UnixFileLock39 _AsyncFileLock: type[BaseAsyncFileLock] = AsyncUnixFileLock40 else:41 _FileLock = SoftFileLock42 _AsyncFileLock = AsyncSoftFileLock43 if warnings is not None:44 warnings.warn("only soft file lock is available", stacklevel=2)45 46if TYPE_CHECKING:47 FileLock = SoftFileLock48 AsyncFileLock = AsyncSoftFileLock49else:50 #: Alias for the lock, which should be used for the current platform.51 FileLock = _FileLock52 AsyncFileLock = _AsyncFileLock53 54 55__all__ = [56 "AcquireReturnProxy",57 "AsyncAcquireReturnProxy",58 "AsyncFileLock",59 "AsyncSoftFileLock",60 "AsyncUnixFileLock",61 "AsyncWindowsFileLock",62 "BaseAsyncFileLock",63 "BaseFileLock",64 "FileLock",65 "SoftFileLock",66 "Timeout",67 "UnixFileLock",68 "WindowsFileLock",69 "__version__",70]71 