pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/devel/py-filelock



Module Name:    pkgsrc
Committed By:   wiz
Date:           Sun Nov  1 21:40:33 UTC 2026

Modified Files:
        pkgsrc/devel/py-filelock: Makefile distinfo

Log Message:
py-filelock: update to 4.2.6.

 4.2.6 (2026-10-31)

Fixed
=====

- Fix a race in :class:`~filelock.SoftFileLock`, :class:`~filelock.MarkerSoftFileLock` and
  :class:`~filelock.SoftFileLease` when three or more contenders reclaim a dead marker. The race could strand a live
  holder's marker under a break name, leaving the lock unusable or admitting a second holder. Contenders now recheck the
  marker before exchanging names and unwind nested exchanges in order. If the filesystem refuses a return exchange, the
  contender leaves its marker at the lock path for later recovery (:pr:`899`) by :user:`dxbjavid` and
  :user:`gaborbernat`.

 4.2.5 (2026-10-30)

Fixed
=====

- :meth:`~filelock.BaseFileLock.acquire` and :meth:`~filelock.BaseAsyncFileLock.acquire` raise :class:`TypeError` for a
  *blocking* that is not a :class:`bool`, as the constructor and the ``blocking`` setter already do. A truthy value such
  as the string ``"false"`` used to count as ``True``, so a call meant as a single attempt waited for the instance's
  ``timeout``, and without a limit at the default ``-1`` (:pr:`870`) by :user:`simpleqt` and :user:`gaborbernat`.
- A :class:`~filelock.SoftFileLock` acquisition whose first read of its new marker's identity failed reads it again
  before rolling back. On Windows the rollback could otherwise not recognize the marker it had created, and the empty
  marker it left blocked the path for every later acquisition, since no contender breaks an empty marker (:pr:`869`) by
  :user:`simpleqt` and :user:`gaborbernat`.
- A ``fork()`` child of a process holding a :class:`~filelock.SoftFileLease` starts from an unheld claim. It used to
  inherit the parent's token, last compromise and heartbeat, so :attr:`~filelock.SoftFileLease.token` and
  :attr:`~filelock.SoftFileLease.compromise` reported a claim the child never held while ``is_locked`` reported it
  unheld (:pr:`868`) by :user:`dxbjavid` and :user:`gaborbernat`.
- A nested acquire of a held :class:`~filelock.FileLock` or :class:`~filelock.SoftFileLock` no longer creates the lock
  file's parent directory. After a rename of that directory during the hold, the nested acquire recreated the old name,
  and when a file had taken the name it raised :class:`FileExistsError` and left the hold's recursion count incremented
  (:pr:`878`) by :user:`0x5t4l1n` and :user:`gaborbernat`.
- Fix :class:`ReadWriteLock <filelock.ReadWriteLock>` failing every acquire with "link directory ... was replaced while
  opening" in a group-writable directory whose inherited ACL, such as an NFSv4 one on ZFS, opens the link directory to
  the group. The lock now closes the empty link directory to its owner, and where the filesystem refuses that, such as
  ZFS with ``aclmode=restricted``, it names the directory to make writable by its owner only (:pr:`898`) by
  :user:`gaborbernat`.
- Fix :class:`~filelock.SoftFileLock`, :class:`~filelock.MarkerSoftFileLock` and :class:`~filelock.SoftFileLease`
  raising ``OverflowError`` out of ``acquire()``, or never reclaiming a dead holder's lock, when a stranded restore
  claim beside the lock names a process number outside ``1..2**31-1`` or spells it in non-ASCII digits. Such a claim is
  now ignored, as no filelock writes one (:pr:`871`) by :user:`dxbjavid` and :user:`gaborbernat`.
- Fix soft locks on Windows keeping the marker of a holder that has exited while another process still holds a handle to
  it, such as a parent's ``subprocess.Popen`` after ``wait()`` or ``multiprocessing.Process`` after ``join()``.
  Acquiring such a lock with the default ``timeout=-1`` waited forever (:pr:`874`) by :user:`nk-batman21`.
- Fix the read-only reopen of a lock file this account cannot write resolving a relative path against the working
  directory of the moment. A ``chdir`` between the refused ``O_RDWR`` open and the reopen made the acquisition wait on a
  file that is not there, or probe one in another directory. The reopen now uses the path the acquisition pinned
  (:pr:`889`) by :user:`dxbjavid` and :user:`gaborbernat`.
- Handle ``EMLINK``, the error FreeBSD reports when a no-follow open refuses a symlink, in a soft reader/writer lock's
  protocol tree, so heartbeat reports lost ownership there rather than a transient refresh error (:pr:`866`) by
  :user:`pacocartones` and :user:`gaborbernat`.
- Resolving :class:`~filelock.ReadWriteLock` or :class:`~filelock.AsyncReadWriteLock` raises the :exc:`ImportError` when
  a module other than Python's :mod:`sqlite3` is missing, as in a frozen application that left out a filelock submodule.
  The names are ``None`` only without SQLite (:pr:`880`) by :user:`pintu544` and :user:`gaborbernat`.

Documentation
=============

- The lock-probing recipe in the how-to guide probes with ``blocking=False`` instead of a tiny ``timeout`` (:pr:`873`)
  by :user:`tongwentao` and :user:`gaborbernat`.

Packaging
=========

- Releases now run on the shared tox-dev/github-workflows pipeline, with a locked release toolchain and generated GitHub
  Release notes (:pr:`885`) by :user:`gaborbernat`.


To generate a diff of this commit:
cvs rdiff -u -r1.67 -r1.68 pkgsrc/devel/py-filelock/Makefile
cvs rdiff -u -r1.66 -r1.67 pkgsrc/devel/py-filelock/distinfo

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/devel/py-filelock/Makefile
diff -u pkgsrc/devel/py-filelock/Makefile:1.67 pkgsrc/devel/py-filelock/Makefile:1.68
--- pkgsrc/devel/py-filelock/Makefile:1.67      Mon Oct 26 18:20:26 2026
+++ pkgsrc/devel/py-filelock/Makefile   Sun Nov  1 21:40:33 2026
@@ -1,6 +1,6 @@
-# $NetBSD: Makefile,v 1.67 2026/10/26 18:20:26 wiz Exp $
+# $NetBSD: Makefile,v 1.68 2026/11/01 21:40:33 wiz Exp $
 
-DISTNAME=      filelock-4.2.4
+DISTNAME=      filelock-4.2.6
 PKGNAME=       ${PYPKGPREFIX}-${DISTNAME}
 CATEGORIES=    devel python
 MASTER_SITES=  ${MASTER_SITE_PYPI:=f/filelock/}
@@ -11,6 +11,7 @@ COMMENT=      Platform independent file lock
 LICENSE=       unlicense
 
 TOOL_DEPENDS+= ${PYPKGPREFIX}-hatch-vcs>=0.5:../../devel/py-hatch-vcs
+TOOL_DEPENDS+= ${PYPKGPREFIX}-hatch-fancy-pypi-readme>=0.5:../../devel/py-hatch-fancy-pypi-readme
 TOOL_DEPENDS+= ${PYPKGPREFIX}-hatchling>=1.29:../../devel/py-hatchling
 TEST_DEPENDS+= ${PYPKGPREFIX}-covdefaults>=2.3:../../devel/py-covdefaults
 TEST_DEPENDS+= ${PYPKGPREFIX}-diff-cover>=10.2:../../misc/py-diff-cover
@@ -23,8 +24,8 @@ TEST_DEPENDS+=        ${PYPKGPREFIX}-virtualenv
 
 USE_LANGUAGES= # none
 
-# as of 4.2.4
-# 2694 passed, 258 skipped
+# as of 4.2.6
+# 2731 passed, 286 skipped
 
 .include "../../lang/python/wheel.mk"
 .include "../../mk/bsd.pkg.mk"

Index: pkgsrc/devel/py-filelock/distinfo
diff -u pkgsrc/devel/py-filelock/distinfo:1.66 pkgsrc/devel/py-filelock/distinfo:1.67
--- pkgsrc/devel/py-filelock/distinfo:1.66      Mon Oct 26 18:20:26 2026
+++ pkgsrc/devel/py-filelock/distinfo   Sun Nov  1 21:40:33 2026
@@ -1,5 +1,5 @@
-$NetBSD: distinfo,v 1.66 2026/10/26 18:20:26 wiz Exp $
+$NetBSD: distinfo,v 1.67 2026/11/01 21:40:33 wiz Exp $
 
-BLAKE2s (filelock-4.2.4.tar.gz) = bbc73027b85a572e4acef284fd4bbcd869164bc70aed7d36471aaaf1369b18cc
-SHA512 (filelock-4.2.4.tar.gz) = f2075ff0d0ace0f91e867d157eef5fca605eb8989c11f44d09617a7e26bdbadf318e6f0a255721cd5700a291a082a96b0f8ed49a67abf891124f19a53c10da33
-Size (filelock-4.2.4.tar.gz) = 652444 bytes
+BLAKE2s (filelock-4.2.6.tar.gz) = fb7ee354a72aa0d079f98c55bf3c528c343328de7f997ed40dab3f5e8b35af49
+SHA512 (filelock-4.2.6.tar.gz) = 6e769888224075e03584cc4555bb3a97052fef6f2607792dbac5203a949217b896568368b8d53a9800f8d97fe1a198c79b605d424235f81d9dbac30162707a36
+Size (filelock-4.2.6.tar.gz) = 661339 bytes



Home | Main Index | Thread Index | Old Index