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

36 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 ._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] 

25 

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 

37 

38#: version of the project as a string 

39__version__: str = version 

40 

41 

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) 

54 

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 

62 

63 

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]