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.21.0
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.21.1
Choose a head ref
  • 3 commits
  • 7 files changed
  • 3 contributors

Commits on Feb 12, 2026

  1. 🐛 fix(ci): make release workflow robust

    Job-level permissions override top-level, so the build job needed
    explicit contents:read for the PyGitHub API calls in changelog
    generation.
    
    Changelog text contains RST backticks that bash interprets as command
    substitution when interpolated via ${{ }}. Pass through env vars
    instead.
    
    Push the tag before the branch so if tag push fails, main stays clean.
    All three release steps (commit/tag, PyPI, GitHub release) are now
    idempotent for safe retries.
    gaborbernat committed Feb 12, 2026
    Configuration menu
    Copy the full SHA
    3692417 View commit details
    Browse the repository at this point in the history
  2. 🐛 fix: gracefully handle missing sqlite3 when importing `ReadWriteL…

    …ock` (#473)
    
    * 🐛 fix: gracefully handle missing `sqlite3` when importing `ReadWriteLock`
    
    `filelock 3.21.0` added `ReadWriteLock` backed by SQLite and imported it
    unconditionally in `__init__.py`. This broke `import filelock` on Python
    installations where `_sqlite3` was not compiled (e.g. pyenv-built Python
    without `libsqlite3-dev`), even when `ReadWriteLock` was never used.
    
    Wrap the import in a try/except so that `ReadWriteLock` is set to `None`
    when `sqlite3` is unavailable, allowing all other lock types to work as
    before.
    
    * 📝 docs(ReadWriteLock): document sqlite3 requirement and skip tests when unavailable
    
    Version 3.21.0 introduced ReadWriteLock backed by SQLite, but the import would
    fail on Python installations built without sqlite3 support (e.g. pyenv-built
    Python without libsqlite3-dev). While the previous commit made the import
    graceful by setting ReadWriteLock to None when sqlite3 is missing, users and
    test infrastructure needed clear guidance on this limitation.
    
    Added documentation notes explaining that ReadWriteLock requires sqlite3 and
    will be None if unavailable. Updated ReadWriteLock tests to use
    pytest.importorskip() so they skip cleanly rather than fail when sqlite3 is
    missing. Made conftest.py handle the missing sqlite3 case to prevent test
    infrastructure breakage.
    
    ---------
    
    Co-authored-by: Bernát Gábor <[email protected]>
    bayandin and gaborbernat authored Feb 12, 2026
    Configuration menu
    Copy the full SHA
    eff3991 View commit details
    Browse the repository at this point in the history
  3. Release 3.21.1

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