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

33 statements  

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 annotations 

10 

11import sys 

12import warnings 

13from typing import TYPE_CHECKING 

14 

15from ._api import AcquireReturnProxy, BaseFileLock 

16from ._error import Timeout 

17 

18try: 

19 from ._read_write import ReadWriteLock 

20except ImportError: # sqlite3 may be unavailable if Python was built without it or the C library is missing 

21 ReadWriteLock = None # type: ignore[assignment, misc] 

22 

23from ._soft import SoftFileLock 

24from ._unix import UnixFileLock, has_fcntl 

25from ._windows import WindowsFileLock 

26from .asyncio import ( 

27 AsyncAcquireReturnProxy, 

28 AsyncSoftFileLock, 

29 AsyncUnixFileLock, 

30 AsyncWindowsFileLock, 

31 BaseAsyncFileLock, 

32) 

33from .version import version 

34 

35#: version of the project as a string 

36__version__: str = version 

37 

38 

39if sys.platform == "win32": # pragma: win32 cover 

40 _FileLock: type[BaseFileLock] = WindowsFileLock 

41 _AsyncFileLock: type[BaseAsyncFileLock] = AsyncWindowsFileLock 

42else: # pragma: win32 no cover # noqa: PLR5501 

43 if has_fcntl: 

44 _FileLock: type[BaseFileLock] = UnixFileLock 

45 _AsyncFileLock: type[BaseAsyncFileLock] = AsyncUnixFileLock 

46 else: 

47 _FileLock = SoftFileLock 

48 _AsyncFileLock = AsyncSoftFileLock 

49 if warnings is not None: 

50 warnings.warn("only soft file lock is available", stacklevel=2) 

51 

52if TYPE_CHECKING: 

53 FileLock = SoftFileLock 

54 AsyncFileLock = AsyncSoftFileLock 

55else: 

56 #: Alias for the lock, which should be used for the current platform. 

57 FileLock = _FileLock 

58 AsyncFileLock = _AsyncFileLock 

59 

60 

61__all__ = [ 

62 "AcquireReturnProxy", 

63 "AsyncAcquireReturnProxy", 

64 "AsyncFileLock", 

65 "AsyncSoftFileLock", 

66 "AsyncUnixFileLock", 

67 "AsyncWindowsFileLock", 

68 "BaseAsyncFileLock", 

69 "BaseFileLock", 

70 "FileLock", 

71 "ReadWriteLock", 

72 "SoftFileLock", 

73 "Timeout", 

74 "UnixFileLock", 

75 "WindowsFileLock", 

76 "__version__", 

77]