mirror of
https://github.com/clearml/clearml
synced 2025-02-01 17:43:43 +00:00
42 lines
937 B
Python
42 lines
937 B
Python
|
"""
|
||
|
Locking constants
|
||
|
|
||
|
Lock types:
|
||
|
|
||
|
- `LOCK_EX` exclusive lock
|
||
|
- `LOCK_SH` shared lock
|
||
|
|
||
|
Lock flags:
|
||
|
|
||
|
- `LOCK_NB` non-blocking
|
||
|
|
||
|
Manually unlock, only needed internally
|
||
|
|
||
|
- `LOCK_UN` unlock
|
||
|
"""
|
||
|
import os
|
||
|
|
||
|
# The actual tests will execute the code anyhow so the following code can
|
||
|
# safely be ignored from the coverage tests
|
||
|
if os.name == 'nt': # pragma: no cover
|
||
|
import msvcrt
|
||
|
|
||
|
LOCK_EX = 0x1 #: exclusive lock
|
||
|
LOCK_SH = 0x2 #: shared lock
|
||
|
LOCK_NB = 0x4 #: non-blocking
|
||
|
LOCK_UN = msvcrt.LK_UNLCK #: unlock
|
||
|
|
||
|
LOCKFILE_FAIL_IMMEDIATELY = 1
|
||
|
LOCKFILE_EXCLUSIVE_LOCK = 2
|
||
|
|
||
|
elif os.name == 'posix': # pragma: no cover
|
||
|
import fcntl
|
||
|
|
||
|
LOCK_EX = fcntl.LOCK_EX #: exclusive lock
|
||
|
LOCK_SH = fcntl.LOCK_SH #: shared lock
|
||
|
LOCK_NB = fcntl.LOCK_NB #: non-blocking
|
||
|
LOCK_UN = fcntl.LOCK_UN #: unlock
|
||
|
|
||
|
else: # pragma: no cover
|
||
|
raise RuntimeError('PortaLocker only defined for nt and posix platforms')
|