Sourced from filelock's releases.
3.32.4
What's Changed
- 🐛 fix: retry transient denials on open and claim read by
@gaborbernatin tox-dev/filelock#705- 🧪 test: deflake six scheduled-run failures by
@gaborbernatin tox-dev/filelock#704- 🧪 test: cover a reclaimed private record for real by
@gaborbernatin tox-dev/filelock#706- 🧪 test(fork): fork once the event loop has closed by
@gaborbernatin tox-dev/filelock#714- 🔧 chore: batch dependency updates weekly on Tuesday by
@gaborbernatin tox-dev/filelock#713- escape the hostname every marker publishes by
@dxbjavidin tox-dev/filelock#709Full Changelog: https://github.com/tox-dev/filelock/compare/3.32.3...3.32.4
Sourced from filelock's changelog.
########### Changelog ###########
.. towncrier-draft-entries:: Unreleased
.. towncrier release notes start
3.32.4 (2026-08-23)
StrictSoftFileLockalways retries a claim read whose first attempt reports the claim as pending, so a first read that itself outlasts the retry grace no longer fails closed on a claim it could have read. :pr:705WindowsFileLockwaits out a transientSTATUS_ACCESS_DENIEDfromNtCreateFilefor up to half a second before raisingPermissionError, since a peer unlinking the lock file as it releases can answer that for a moment; a real denial still fails fast. :pr:705- Every lock class now escapes the hostname it publishes, so a host whose
socket.gethostname()carries a space, a newline or a byte outside UTF-8 no longer writes a marker it reads back as malformed. Such a host used to lose a heldSoftReadWriteLockread slot to a peer and could not take a write slot or aStrictSoftFileLockat all. :pr:709
3.32.3 (2026-08-13)
- The fork-safety audit hook no longer prints
Exception ignored in audit hookwith aTypeErrorwhen an audit event fires during interpreter shutdown, after CPython has already cleared the module globals. :pr:701
3.32.2 (2026-07-29)
- A
SoftReadWriteLockorSoftFileLeaseacquire whose heartbeat thread fails to start now unlinks its marker and hands the claim back, instead of leaving an unrefreshed marker a peer takes while the caller believes it still holds the lock. :pr:691
3.32.1 (2026-07-26)
- Canceling an
AsyncSoftReadWriteLockacquire now releases the claim instead of leaking a marker whose heartbeat wedges every contender. :pr:686
3.32.0 (2026-07-21)
SoftReadWriteLockcloses the directory handle it opens to scan for readers as soon as a scan stops early, rather than holding it until the generator is collected. :pr:685- Declare support for Python 3.15 and run the test suite against it and its free-threaded build, both currently in beta. :pr:
683
... (truncated)
cb493d6
Release 3.32.4fe07a11
escape the hostname every marker publishes (#709)232732f
🔧 chore: batch dependency updates weekly on Tuesday (#713)2966eb5
🧪 test(fork): fork once the event loop has closed (#714)61511eb
build(deps): bump astral-sh/setup-uv from 10.0.0 to 10.0.1 (#712)f12a52f
build(deps): bump astral-sh/setup-uv from 9.0.0 to 10.0.0 (#711)54c7b6c
[pre-commit.ci] pre-commit autoupdate (#710)49f8035
🧪 test: cover a reclaimed private record for real (#706)bb16d39
🧪 test: deflake six scheduled-run failures (#704)13b82a6
🐛 fix: retry transient denials on open and claim read (#705)