Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: tox-dev/filelock
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 3.24.1
Choose a base ref
...
head repository: tox-dev/filelock
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 3.24.2
Choose a head ref
  • 4 commits
  • 20 files changed
  • 2 contributors

Commits on Feb 16, 2026

  1. 📝 docs: restructure using Diataxis framework (#489)

    The monolithic documentation made it hard for users to find information
    relevant to their needs — beginners, experienced developers, and API
    consumers all landed on the same page with no clear path forward.
    
    Reorganizes docs into four Diataxis sections: Tutorials (learning),
    How-to (task-oriented), Concepts (design rationale), and API Reference.
    Adds comprehensive coverage for previously undocumented features
    including self-deadlock detection, cancel_check, force release,
    ReadWriteLock close/SQLite requirements, lifetime expiration, and
    thread-local behavior differences between sync and async locks. The
    release pipeline now generates docstrfmt-friendly RST changelog entries.
    Five Sphinx extensions enhance the reading experience with copy buttons,
    responsive cards, mermaid diagrams, sitemap, and OpenGraph metadata.
    gaborbernat authored Feb 16, 2026
    Configuration menu
    Copy the full SHA
    ef15f6b View commit details
    Browse the repository at this point in the history
  2. 🐛 fix(test): resolve flaky write non-starvation test (#490)

    The test only signaled the last reader's release event and relied on
    chain propagation, but the 3-second join timeout was too tight for
    PyPy on macOS where process spawn and SQLite operations are slower.
    
    Signal all reader release events explicitly and increase the join
    timeout to 10 seconds to accommodate slower runtimes.
    gaborbernat authored Feb 16, 2026
    Configuration menu
    Copy the full SHA
    98b4ee9 View commit details
    Browse the repository at this point in the history
  3. 🐛 fix(rw): close sqlite3 cursors and skip SoftFileLock Windows race (#…

    …491)
    
    ReadWriteLock._configure_and_begin creates cursors via
    Connection.execute() without closing them. On CPython refcounting
    destroys them immediately, but on PyPy cursors accumulate until
    non-deterministic GC collects them. If Connection.__del__ runs first
    and calls sqlite3_close, a later Statement.__del__ calls
    sqlite3_finalize on freed memory — segfault. Fix by chaining .close()
    on every execute() call.
    
    Skip test_threaded_shared_lock_obj for SoftFileLock on Windows.
    SoftFileLock uses file-existence locking where unlink can silently fail
    under heavy thread contention when an antivirus scanner or search
    indexer momentarily holds the handle after close(). This orphans the
    lock file with no recovery path since stale-lock detection is disabled
    on Windows and PID-based detection cannot distinguish same-process
    threads. This is the same known limitation already documented by the
    skip in test_threaded_lock_different_lock_obj.
    gaborbernat authored Feb 16, 2026
    Configuration menu
    Copy the full SHA
    ab6b90e View commit details
    Browse the repository at this point in the history
  4. Release 3.24.2

    gaborbernat committed Feb 16, 2026
    Configuration menu
    Copy the full SHA
    db3e05a View commit details
    Browse the repository at this point in the history
Loading