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

43 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, Final 

14 

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 

20 

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 

35 

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 

51 

52#: version of the project as a string 

53__version__: Final[str] = version 

54 

55 

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) 

67 

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 

75 

76 

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]