Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/filelock/__init__.py: 71%

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

28 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 

17from ._soft import SoftFileLock 

18from ._unix import UnixFileLock, has_fcntl 

19from ._windows import WindowsFileLock 

20from .asyncio import ( 

21 AsyncAcquireReturnProxy, 

22 AsyncSoftFileLock, 

23 AsyncUnixFileLock, 

24 AsyncWindowsFileLock, 

25 BaseAsyncFileLock, 

26) 

27from .version import version 

28 

29#: version of the project as a string 

30__version__: str = version 

31 

32 

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

34 _FileLock: type[BaseFileLock] = WindowsFileLock 

35 _AsyncFileLock: type[BaseAsyncFileLock] = AsyncWindowsFileLock 

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

37 if has_fcntl: 

38 _FileLock: type[BaseFileLock] = UnixFileLock 

39 _AsyncFileLock: type[BaseAsyncFileLock] = AsyncUnixFileLock 

40 else: 

41 _FileLock = SoftFileLock 

42 _AsyncFileLock = AsyncSoftFileLock 

43 if warnings is not None: 

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

45 

46if TYPE_CHECKING: 

47 FileLock = SoftFileLock 

48 AsyncFileLock = AsyncSoftFileLock 

49else: 

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

51 FileLock = _FileLock 

52 AsyncFileLock = _AsyncFileLock 

53 

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]