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

40 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 

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 

32 

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 

45 

46#: version of the project as a string 

47__version__: str = version 

48 

49 

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) 

62 

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 

70 

71 

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]