# Buildsheet autogenerated by ravenadm tool -- Do not edit. NAMEBASE= python-fasteners VERSION= 0.19 KEYWORDS= python VARIANTS= v11 v12 SDESC[v11]= Python package that provides useful locks (3.11) SDESC[v12]= Python package that provides useful locks (3.12) HOMEPAGE= https://github.com/harlowja/fasteners CONTACT= Python_Automaton[python@ironwolf.systems] DOWNLOAD_GROUPS= main SITES[main]= PYPIWHL/61/bf/fd60001b3abc5222d8eaa4a204cd8c0ae78e75adc688f33ce4bf25b7fafa DISTFILE[1]= fasteners-0.19-py3-none-any.whl:main DF_INDEX= 1 SPKGS[v11]= single SPKGS[v12]= single OPTIONS_AVAILABLE= PY311 PY312 OPTIONS_STANDARD= none VOPTS[v11]= PY311=ON PY312=OFF VOPTS[v12]= PY311=OFF PY312=ON DISTNAME= fasteners-0.19.dist-info GENERATED= yes [PY311].USES_ON= python:v11,wheel [PY312].USES_ON= python:v12,wheel [FILE:2264:descriptions/desc.single] Fasteners ========= [Documentation status] [Downloads] [Latest version] Cross-platform locks for threads and processes. 🔩 Install ---------- ` pip install fasteners ` 🔩 Usage -------- Lock for processes has the same API as the [threading.Lock] for threads: ```python import fasteners import threading lock = threading.Lock() # for threads lock = fasteners.InterProcessLock('path/to/lock.file') # for processes with lock: ... # exclusive access # or alternatively lock.acquire() ... # exclusive access lock.release() ``` Reader Writer lock has a similar API, which is the same for threads or processes: ```python import fasteners rw_lock = fasteners.ReaderWriterLock() # for threads rw_lock = fasteners.InterProcessReaderWriterLock('path/to/lock.file') # for processes with rw_lock.write_lock(): ... # write access with rw_lock.read_lock(): ... # read access # or alternatively rw_lock.acquire_read_lock() ... # read access rw_lock.release_read_lock() rw_lock.acquire_write_lock() ... # write access rw_lock.release_write_lock() ``` 🔩 Overview ----------- Python standard library provides a lock for threads (both a reentrant one, and a non-reentrant one, see below). Fasteners extends this, and provides a lock for processes, as well as Reader Writer locks for both threads and processes. Definitions of terms used in this overview can be found in the [glossary]. The specifics of the locks are as follows: ### Process locks The `fasteners.InterProcessLock` uses [fcntl] on Unix-like systems and msvc [_locking] on Windows. As a result, if used cross-platform it guarantees an intersection of their features: | lock | reentrant | mandatory | |------|-----------|-----------| | fcntl | ✘ | ✘ | | _locking | ✔ | ✔ | | fasteners.InterProcessLock | ✘ | ✘ | The `fasteners.InterProcessReaderWriterLock` also uses fcntl on Unix-like systems and [LockFileEx] on Windows. Their features are as follows: | lock | reentrant | mandatory | upgradable | preference | |------|-----------|-----------|------------|------------| | fcntl | ✘ | ✘ | ✔ | reader | [FILE:110:distinfo] 758819cb5d94cdedf4e836988b74de396ceacb8e2794d21f82d131fd9ee77237 18679 fasteners-0.19-py3-none-any.whl