__init__.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. """
  2. A platform independent file lock that supports the with-statement.
  3. .. autodata:: filelock.__version__
  4. :no-value:
  5. """
  6. from __future__ import annotations
  7. import sys
  8. import warnings
  9. from typing import TYPE_CHECKING
  10. from ._api import AcquireReturnProxy, BaseFileLock
  11. from ._error import Timeout
  12. from ._soft import SoftFileLock
  13. from ._unix import UnixFileLock, has_fcntl
  14. from ._windows import WindowsFileLock
  15. from .version import version
  16. #: version of the project as a string
  17. __version__: str = version
  18. if sys.platform == "win32": # pragma: win32 cover
  19. _FileLock: type[BaseFileLock] = WindowsFileLock
  20. else: # pragma: win32 no cover # noqa: PLR5501
  21. if has_fcntl:
  22. _FileLock: type[BaseFileLock] = UnixFileLock
  23. else:
  24. _FileLock = SoftFileLock
  25. if warnings is not None:
  26. warnings.warn("only soft file lock is available", stacklevel=2)
  27. if TYPE_CHECKING:
  28. FileLock = SoftFileLock
  29. else:
  30. #: Alias for the lock, which should be used for the current platform.
  31. FileLock = _FileLock
  32. __all__ = [
  33. "__version__",
  34. "FileLock",
  35. "SoftFileLock",
  36. "Timeout",
  37. "UnixFileLock",
  38. "WindowsFileLock",
  39. "BaseFileLock",
  40. "AcquireReturnProxy",
  41. ]