MCPcopy Create free account
hub / github.com/catboost/catboost / _NixFileLock

Class _NixFileLock

library/python/filelock/__init__.py:36–63  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

34
35
36class _NixFileLock(AbstractFileLock):
37
38 def __init__(self, path):
39 super(_NixFileLock, self).__init__(path)
40 from fcntl import flock, LOCK_EX, LOCK_UN, LOCK_NB
41
42 self._locker = lambda lock, blocking: flock(lock, LOCK_EX if blocking else LOCK_EX | LOCK_NB)
43 self._unlocker = lambda lock: flock(lock, LOCK_UN)
44 # nonbuffered random access rw mode
45 self._lock = os.fdopen(os.open(self.path, os.O_RDWR | os.O_CREAT | os_O_CLOEXEC), 'r+b', 0)
46
47 def acquire(self, blocking=True):
48 import errno
49
50 try:
51 self._locker(self._lock, blocking)
52 except IOError as e:
53 if e.errno in (errno.EAGAIN, errno.EACCES) and not blocking:
54 return False
55 raise
56 return True
57
58 def release(self):
59 self._unlocker(self._lock)
60
61 def __del__(self):
62 if hasattr(self, "_lock"):
63 self._lock.close()
64
65
66class _WinFileLock(AbstractFileLock):

Callers 1

__init__Method · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected