From bcfe3d62962a39601cd9d6e4279d48103328cd8e Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Mon, 28 Aug 2023 18:36:26 +0200 Subject: [PATCH 01/30] add .readthedocs.yaml --- .readthedocs.yaml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 .readthedocs.yaml diff --git a/.readthedocs.yaml b/.readthedocs.yaml new file mode 100644 index 0000000..1fef469 --- /dev/null +++ b/.readthedocs.yaml @@ -0,0 +1,27 @@ +# .readthedocs.yaml - Read the Docs configuration file. +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details. + +version: 2 + +build: + os: ubuntu-22.04 + tools: + python: "3.11" + jobs: + post_checkout: + - git fetch --unshallow + pre_install: + - python setup.py build_cython + - python setup.py build_ext --inplace + apt_packages: + - build-essential + - pkg-config + +python: + install: + - list: ["cython"] + - method: pip + path: . + +sphinx: + configuration: rst/conf.py From 710834a2476c9485bcdb37fb28b9029ac087f7a1 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Mon, 28 Aug 2023 18:54:07 +0200 Subject: [PATCH 02/30] fix .readthedocs.yaml --- .readthedocs.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 1fef469..fe29cb4 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -19,7 +19,8 @@ build: python: install: - - list: ["cython"] + - method: pip + path: "cython" - method: pip path: . From 848d81fa7517ce365d1f8d763629b04087551f35 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Mon, 28 Aug 2023 18:59:30 +0200 Subject: [PATCH 03/30] fix .readthedocs.yaml - require libfuse-dev --- .readthedocs.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index fe29cb4..4416faa 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -16,6 +16,7 @@ build: apt_packages: - build-essential - pkg-config + - libfuse-dev python: install: From d37aed1419adff8e99113a748aa91b6d1d23a57e Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Mon, 28 Aug 2023 19:04:13 +0200 Subject: [PATCH 04/30] fix .readthedocs.yaml - fix installation of requirements --- .readthedocs.yaml | 3 +-- requirements.d/rtd.txt | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 requirements.d/rtd.txt diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 4416faa..d725739 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -11,6 +11,7 @@ build: post_checkout: - git fetch --unshallow pre_install: + - pip install -r requirements.d/rtd.txt - python setup.py build_cython - python setup.py build_ext --inplace apt_packages: @@ -20,8 +21,6 @@ build: python: install: - - method: pip - path: "cython" - method: pip path: . diff --git a/requirements.d/rtd.txt b/requirements.d/rtd.txt new file mode 100644 index 0000000..f6629e0 --- /dev/null +++ b/requirements.d/rtd.txt @@ -0,0 +1 @@ +cython From 27f2dfc7975438fad98d16b9d590b7f5bb3f6730 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Sun, 3 Sep 2023 14:09:35 +0200 Subject: [PATCH 05/30] README: link to docs on readthedocs, fixes #59 --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index ef822d2..3dbcfb4 100644 --- a/README.rst +++ b/README.rst @@ -38,7 +38,7 @@ Contributing The Python-LLFUSE source code is available on GitHub_. -.. __: http://www.rath.org/llfuse-docs/ +.. __: https://llfuse.readthedocs.io/ .. _FUSE: http://github.com/libfuse/libfuse .. _FUSE mailing list: https://lists.sourceforge.net/lists/listinfo/fuse-devel .. _issue tracker: https://github.com/python-llfuse/python-llfuse/issues From ca976fa8b12397bb1a5d45146da0f89ed1fb2fa9 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Mon, 6 May 2024 15:35:14 +0200 Subject: [PATCH 06/30] github ci: test on py 3.12, 3.13-dev --- .github/workflows/test.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index bca015a..cf6075b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,9 +11,12 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.8", "3.9", "3.10", "3.11", "3.12-dev"] + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13-dev"] cython-version: ["0.29", "3.0"] os: [ubuntu-20.04] + exclude: + - python-version: "3.13-dev" + cython-version: "0.29" steps: - uses: actions/checkout@v2 From abfd77b2690a0dab7a62e7389ea073d5a886c08a Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Mon, 6 May 2024 15:42:10 +0200 Subject: [PATCH 07/30] github ci: run on ubuntu 22.04 --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index cf6075b..a2190c5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,7 +13,7 @@ jobs: matrix: python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13-dev"] cython-version: ["0.29", "3.0"] - os: [ubuntu-20.04] + os: [ubuntu-22.04] exclude: - python-version: "3.13-dev" cython-version: "0.29" From 8fa11a8e9b203bc7b74912bce9778ece9625661d Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Mon, 6 May 2024 15:46:51 +0200 Subject: [PATCH 08/30] github ci: update actions --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a2190c5..be9eb86 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -19,10 +19,10 @@ jobs: cython-version: "0.29" steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} From d21499eeb307091ee7162a7cb1156c21e758d426 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Thu, 29 Aug 2024 00:23:22 +0200 Subject: [PATCH 09/30] officially support Python 3.13 --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index 98136d0..7e40614 100755 --- a/setup.py +++ b/setup.py @@ -115,6 +115,7 @@ def main(): 'Programming Language :: Python :: 3.10', 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: 3.12', + 'Programming Language :: Python :: 3.13', 'Topic :: Software Development :: Libraries :: Python Modules', 'Topic :: System :: Filesystems', 'License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)', From 8813447895cdac30b75d88d156ef6df3d43d43e8 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Thu, 29 Aug 2024 00:23:35 +0200 Subject: [PATCH 10/30] update Changes.rst --- Changes.rst | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Changes.rst b/Changes.rst index 3ba1403..9af791f 100644 --- a/Changes.rst +++ b/Changes.rst @@ -6,6 +6,14 @@ **WARNING**: Python-LLFUSE is no longer actively developed. +Release 1.5.1 (2024-08-31) +========================== + +- Support and test on Python 3.13 also. +- Cythonized using Cython 3.0.11 to get Python 3.13 support. +- Misc. CI and readthedocs related changes. + + Release 1.5.0 (2023-08-08) ========================== From 92356bb4b91a4d1e290496c4a98b27d72540c523 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Thu, 29 Aug 2024 00:27:19 +0200 Subject: [PATCH 11/30] bump version to 1.5.1 also: update (c) year in docs --- rst/conf.py | 4 ++-- setup.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rst/conf.py b/rst/conf.py index d2b3a2c..13f7835 100644 --- a/rst/conf.py +++ b/rst/conf.py @@ -52,14 +52,14 @@ # General information about the project. project = 'Python-LLFUSE' -copyright = '2010-2023, Nikolaus Rath' +copyright = '2010-2024, Nikolaus Rath' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. -version = '1.5.0' +version = '1.5.1' # The full version, including alpha/beta/rc tags. release = version + '' diff --git a/setup.py b/setup.py index 7e40614..01bc715 100755 --- a/setup.py +++ b/setup.py @@ -47,7 +47,7 @@ warnings.simplefilter('default') -LLFUSE_VERSION = '1.5.0' +LLFUSE_VERSION = '1.5.1' def main(): From 2aaa530db6e6604dd5d4d9063094f65902351f1f Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Mon, 4 Aug 2025 15:09:41 +0200 Subject: [PATCH 12/30] test on Python 3.13 (release) also cosmetic change: cython "3", not "3.0". --- .github/workflows/test.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index be9eb86..4b78bf8 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,11 +11,11 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13-dev"] - cython-version: ["0.29", "3.0"] + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] + cython-version: ["0.29", "3"] os: [ubuntu-22.04] exclude: - - python-version: "3.13-dev" + - python-version: "3.13" cython-version: "0.29" steps: @@ -39,8 +39,8 @@ jobs: if: ${{ matrix.cython-version == '0.29' }} run: pip install "Cython<3" - - name: Install Python dependencies (Cython 3.0) - if: ${{ matrix.cython-version == '3.0' }} + - name: Install Python dependencies (Cython 3.x) + if: ${{ matrix.cython-version == '3' }} run: pip install "Cython>=3" - name: Test From 20eff8d1f4e4894daa9ae0bc8038151dfb326443 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Mon, 4 Aug 2025 15:09:59 +0200 Subject: [PATCH 13/30] test on ubuntu 24.04 --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4b78bf8..d7646a3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,7 +13,7 @@ jobs: matrix: python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] cython-version: ["0.29", "3"] - os: [ubuntu-22.04] + os: [ubuntu-24.04] exclude: - python-version: "3.13" cython-version: "0.29" From f677c4267731f722dc3d409ae4bff0a4de0223f4 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Mon, 4 Aug 2025 15:13:22 +0200 Subject: [PATCH 14/30] support and test on Python 3.14 --- .github/workflows/test.yml | 4 +++- setup.py | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d7646a3..2bf34a8 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,12 +11,14 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14-dev"] cython-version: ["0.29", "3"] os: [ubuntu-24.04] exclude: - python-version: "3.13" cython-version: "0.29" + - python-version: "3.14-dev" + cython-version: "0.29" steps: - uses: actions/checkout@v4 diff --git a/setup.py b/setup.py index 01bc715..9654af7 100755 --- a/setup.py +++ b/setup.py @@ -116,6 +116,7 @@ def main(): 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: 3.12', 'Programming Language :: Python :: 3.13', + 'Programming Language :: Python :: 3.14', 'Topic :: Software Development :: Libraries :: Python Modules', 'Topic :: System :: Filesystems', 'License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)', From 0eb7ae061e9daef9c9c33a5d1a502b5df30bdd0c Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Mon, 22 Dec 2025 15:32:23 +0100 Subject: [PATCH 15/30] use SPDX license metadata, fixes #104 --- pyproject.toml | 2 +- setup.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index fed528d..ef5db1b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,3 +1,3 @@ [build-system] -requires = ["setuptools"] +requires = ["setuptools >= 78.1.1"] build-backend = "setuptools.build_meta" diff --git a/setup.py b/setup.py index 9654af7..189be5d 100755 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ Copyright (c) 2010 Nikolaus Rath This file is part of Python-LLFUSE. This work may be distributed under -the terms of the GNU LGPL. +the terms of the GNU LGPL-2.0-or-later. ''' @@ -105,7 +105,8 @@ def main(): author='Nikolaus Rath', author_email='Nikolaus@rath.org', url='https://github.com/python-llfuse/python-llfuse/', - license='LGPL', + license='LGPL-2.0-or-later', + license_files=['LICENSE'], classifiers=['Development Status :: 4 - Beta', 'Intended Audience :: Developers', 'Programming Language :: Python', @@ -119,7 +120,6 @@ def main(): 'Programming Language :: Python :: 3.14', 'Topic :: Software Development :: Libraries :: Python Modules', 'Topic :: System :: Filesystems', - 'License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)', 'Operating System :: POSIX :: Linux', 'Operating System :: MacOS :: MacOS X', 'Operating System :: POSIX :: BSD :: FreeBSD'], From bd54371747a313b91c1372ad47163d042e3fa90a Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Mon, 22 Dec 2025 15:43:51 +0100 Subject: [PATCH 16/30] CI: test on Python 3.14 release --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2bf34a8..d95487b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,13 +11,13 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14-dev"] + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] cython-version: ["0.29", "3"] os: [ubuntu-24.04] exclude: - python-version: "3.13" cython-version: "0.29" - - python-version: "3.14-dev" + - python-version: "3.14" cython-version: "0.29" steps: From afabb4cdaeb0ea31007396ed54ee4d526da6b98a Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Mon, 22 Dec 2025 17:44:42 +0100 Subject: [PATCH 17/30] setup.py: remove tests_require python-llfuse-env/lib/python3.11/site-packages/setuptools/_distutils/dist.py:289: UserWarning: Unknown distribution option: 'tests_require' --- setup.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 189be5d..0d6f206 100755 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ Copyright (c) 2010 Nikolaus Rath This file is part of Python-LLFUSE. This work may be distributed under -the terms of the GNU LGPL-2.0-or-later. +the terms of the GNU LGPL. ''' @@ -128,7 +128,6 @@ def main(): package_dir={'': 'src'}, packages=setuptools.find_packages('src'), python_requires='>=3.8', - tests_require=['pytest >= 3.4.0'], provides=['llfuse'], ext_modules=[Extension('llfuse', c_sources, extra_compile_args=compile_args, From 9f3745c6d0667d9ae8733345b0674d8da09d6fa9 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Mon, 22 Dec 2025 18:01:27 +0100 Subject: [PATCH 18/30] get rid of sphinx build warnings, fixes #56 --- src/fuse_api.pxi | 2 +- src/misc.pxi | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/fuse_api.pxi b/src/fuse_api.pxi index a156f21..fa731a6 100644 --- a/src/fuse_api.pxi +++ b/src/fuse_api.pxi @@ -272,7 +272,7 @@ def main(workers=None, handle_signals=True): and the function to return. *SIGINT* (Ctrl-C) will thus *not* result in a `KeyboardInterrupt` exception while this function is runnning. Note setting *handle_signals* to `False` means you must handle the signals - by yourself and call `stop` to make the `main` returns. + by yourself and call ``stop`` to make the `main` returns. When the function returns because the file system has received an unmount request it will return `None`. If it returns because it has received a diff --git a/src/misc.pxi b/src/misc.pxi index d93667c..79a02ff 100644 --- a/src/misc.pxi +++ b/src/misc.pxi @@ -199,7 +199,7 @@ cdef class Lock: def yield_(self, count=1): '''Yield global lock to a different thread - A call to `~Lock.yield_` is roughly similar to:: + A call to ``~Lock.yield_`` is roughly similar to:: for i in range(count): if no_threads_waiting_for(lock): @@ -207,8 +207,8 @@ cdef class Lock: lock.release() lock.acquire() - However, when using `~Lock.yield_` it is guaranteed that the lock will - actually be passed to a different thread (the above pseude-code may + However, when using ``~Lock.yield_`` it is guaranteed that the lock will + actually be passed to a different thread (the above pseudocode may result in the same thread re-acquiring the lock *count* times). ''' From 39216b7c32dd9b0869b50a19ca3481e37a0b6264 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Mon, 22 Dec 2025 18:15:16 +0100 Subject: [PATCH 19/30] 2025 --- rst/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rst/conf.py b/rst/conf.py index 13f7835..69fe5ce 100644 --- a/rst/conf.py +++ b/rst/conf.py @@ -52,7 +52,7 @@ # General information about the project. project = 'Python-LLFUSE' -copyright = '2010-2024, Nikolaus Rath' +copyright = '2010-2025, Nikolaus Rath' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the From 6a29c4894eced676fe3a5e61f9d55e12f1193539 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Mon, 22 Dec 2025 18:28:20 +0100 Subject: [PATCH 20/30] README: link to mfusepy project --- README.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.rst b/README.rst index 3dbcfb4..46ec1cc 100644 --- a/README.rst +++ b/README.rst @@ -14,6 +14,8 @@ The Python-LLFUSE Module Python-LLFUSE is no longer actively developed and just receiving community-contributed maintenance to keep it alive for some time. +A good alternative for some use cases might be `mfusepy `_. + Python-LLFUSE is a set of Python bindings for the low level FUSE_ API. It requires at least FUSE 2.8.0 and supports both Python 2.x and 3.x. Like FUSE itself, Python-LLFUSE is developed for Linux systems, From 7466ec6eb8e5bd35fde243efa5eb5631d66ee7df Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Mon, 22 Dec 2025 18:47:34 +0100 Subject: [PATCH 21/30] remove empty setup.cfg --- setup.cfg | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 setup.cfg diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index e69de29..0000000 From d8a55514a03b7edaeece826d2111dbc536839b31 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Mon, 22 Dec 2025 19:21:33 +0100 Subject: [PATCH 22/30] macOS: work around compiler warning --- src/darwin_compat.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/darwin_compat.c b/src/darwin_compat.c index c9cbafe..4daf634 100644 --- a/src/darwin_compat.c +++ b/src/darwin_compat.c @@ -10,6 +10,11 @@ #include #include +static void _unlock_mutex(void *mutex) +{ + pthread_mutex_unlock((pthread_mutex_t *)mutex); +} + /* * Semaphore implementation based on: * @@ -152,7 +157,7 @@ darwin_sem_timedwait(darwin_sem_t *sem, const struct timespec *abs_timeout) return -1; } - pthread_cleanup_push((void(*)(void*))&pthread_mutex_unlock, + pthread_cleanup_push(&_unlock_mutex, &sem->__data.local.count_lock); pthread_mutex_lock(&sem->__data.local.count_lock); @@ -213,7 +218,7 @@ darwin_sem_wait(darwin_sem_t *sem) /* Must be volatile or will be clobbered by longjmp */ volatile int res = 0; - pthread_cleanup_push((void(*)(void*))&pthread_mutex_unlock, + pthread_cleanup_push(&_unlock_mutex, &sem->__data.local.count_lock); pthread_mutex_lock(&sem->__data.local.count_lock); From 7e01be2159135ef38aba2c71bf2b20b4691f416b Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Mon, 22 Dec 2025 19:37:22 +0100 Subject: [PATCH 23/30] improve upload-pypi script using TWINE_REPOSITORY makes it easier to have different sections in ones ~/.pypirc. --- util/upload-pypi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/util/upload-pypi b/util/upload-pypi index 300b53a..f3d3ff1 100755 --- a/util/upload-pypi +++ b/util/upload-pypi @@ -8,9 +8,9 @@ if [ "$R" = "" ]; then fi if [ "$2" = "test" ]; then - export TWINE_REPOSITORY_URL=https://test.pypi.org/legacy/ + export TWINE_REPOSITORY=testllfuse else - export TWINE_REPOSITORY_URL= + export TWINE_REPOSITORY=llfuse fi D=dist/llfuse-$R.tar.gz From 6809766f12b4a4401e240a9d827035986284af0e Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Mon, 22 Dec 2025 18:14:23 +0100 Subject: [PATCH 24/30] bump version to 1.5.2 --- rst/conf.py | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rst/conf.py b/rst/conf.py index 69fe5ce..7b2bf5d 100644 --- a/rst/conf.py +++ b/rst/conf.py @@ -59,7 +59,7 @@ # built documents. # # The short X.Y version. -version = '1.5.1' +version = '1.5.2' # The full version, including alpha/beta/rc tags. release = version + '' diff --git a/setup.py b/setup.py index 0d6f206..6e09f10 100755 --- a/setup.py +++ b/setup.py @@ -47,7 +47,7 @@ warnings.simplefilter('default') -LLFUSE_VERSION = '1.5.1' +LLFUSE_VERSION = '1.5.2' def main(): From 55ade6c5e925b8c43980c1f42231d84e40561115 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Mon, 22 Dec 2025 18:23:57 +0100 Subject: [PATCH 25/30] update CHANGES --- Changes.rst | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Changes.rst b/Changes.rst index 9af791f..b49f05f 100644 --- a/Changes.rst +++ b/Changes.rst @@ -6,6 +6,21 @@ **WARNING**: Python-LLFUSE is no longer actively developed. +Release 1.5.2 (2025-12-22) +========================== + +- Support and test on Python 3.14 also. +- CI: test on Ubuntu 24.04 +- Cythonized using Cython 3.2.3. +- setup.py: + + - use SPDX license metadata (the old style was deprecated), + also require setuptools >= 78.1.1, #104 + - remove tests_require (not supported anymore) +- get rid of sphinx build warnings, #56 +- README: link to mfusepy project + + Release 1.5.1 (2024-08-31) ========================== From ad099576bd32c24996699386af3aedd7e694f1a9 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Sun, 28 Dec 2025 21:50:16 +0100 Subject: [PATCH 26/30] drop Python 3.8 and 3.9 --- .github/workflows/test.yml | 2 +- setup.py | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d95487b..a288a2b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,7 +11,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] + python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] cython-version: ["0.29", "3"] os: [ubuntu-24.04] exclude: diff --git a/setup.py b/setup.py index 6e09f10..42f11e9 100755 --- a/setup.py +++ b/setup.py @@ -111,8 +111,6 @@ def main(): 'Intended Audience :: Developers', 'Programming Language :: Python', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.8', - 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: 3.12', @@ -127,7 +125,7 @@ def main(): keywords=['FUSE', 'python' ], package_dir={'': 'src'}, packages=setuptools.find_packages('src'), - python_requires='>=3.8', + python_requires='>=3.10', provides=['llfuse'], ext_modules=[Extension('llfuse', c_sources, extra_compile_args=compile_args, From 2ec21e6684a4109f9f778a1c68dd60d814786b68 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Sun, 28 Dec 2025 21:53:06 +0100 Subject: [PATCH 27/30] drop Cython 0.29 testing --- .github/workflows/test.yml | 13 +------------ rst/install.rst | 2 +- 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a288a2b..8b42f08 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,13 +12,7 @@ jobs: fail-fast: false matrix: python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] - cython-version: ["0.29", "3"] os: [ubuntu-24.04] - exclude: - - python-version: "3.13" - cython-version: "0.29" - - python-version: "3.14" - cython-version: "0.29" steps: - uses: actions/checkout@v4 @@ -37,12 +31,7 @@ jobs: - name: Install Python dependencies (misc) run: pip install setuptools pytest sphinx - - name: Install Python dependencies (Cython 0.29) - if: ${{ matrix.cython-version == '0.29' }} - run: pip install "Cython<3" - - - name: Install Python dependencies (Cython 3.x) - if: ${{ matrix.cython-version == '3' }} + - name: Install Python dependencies run: pip install "Cython>=3" - name: Test diff --git a/rst/install.rst b/rst/install.rst index 205fe5a..ad8220f 100644 --- a/rst/install.rst +++ b/rst/install.rst @@ -62,7 +62,7 @@ Development Version If you have checked out the unstable development version from the repository, a bit more effort is required. You need to also have -Cython_ (0.29.21 or newer) and Sphinx_ (1.1 or newer) installed, and the +Cython_ (Version >= 3) and Sphinx_ (1.1 or newer) installed, and the necessary commands are:: python setup.py build_cython From f6c4db96736653b4a9d5e097c838ffe2766842be Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Sun, 28 Dec 2025 22:01:50 +0100 Subject: [PATCH 28/30] update CHANGES, bump to 1.6.0 --- Changes.rst | 7 +++++++ rst/conf.py | 2 +- setup.py | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Changes.rst b/Changes.rst index b49f05f..39bfb8d 100644 --- a/Changes.rst +++ b/Changes.rst @@ -6,6 +6,13 @@ **WARNING**: Python-LLFUSE is no longer actively developed. +Release 1.6.0 (not yet released) +================================ + +- Drop Python 3.8 and 3.9 support. +- Drop testing on Cython 0.29.x + + Release 1.5.2 (2025-12-22) ========================== diff --git a/rst/conf.py b/rst/conf.py index 7b2bf5d..8c5b968 100644 --- a/rst/conf.py +++ b/rst/conf.py @@ -59,7 +59,7 @@ # built documents. # # The short X.Y version. -version = '1.5.2' +version = '1.6.0' # The full version, including alpha/beta/rc tags. release = version + '' diff --git a/setup.py b/setup.py index 42f11e9..46cc313 100755 --- a/setup.py +++ b/setup.py @@ -47,7 +47,7 @@ warnings.simplefilter('default') -LLFUSE_VERSION = '1.5.2' +LLFUSE_VERSION = '1.6.0' def main(): From 6716d815f2ca58d5cbccae7aefbc439048561a51 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Sun, 4 Jan 2026 04:43:05 +0100 Subject: [PATCH 29/30] test_api: fix wrong skip message --- test/test_api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_api.py b/test/test_api.py index 733111b..8ff84d4 100755 --- a/test/test_api.py +++ b/test/test_api.py @@ -76,7 +76,7 @@ def test_xattr(): llfuse.setxattr(fh.name, key, value) except OSError as exc: if exc.errno == errno.ENOTSUP: - pytest.skip('ACLs not supported for %s' % fh.name) + pytest.skip('xattrs not supported for %s' % fh.name) raise assert _getxattr_helper(fh.name, key) == value From 1f43833a33c75fe5e1054cdaa8c31c78e744d617 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Sun, 4 Jan 2026 04:45:12 +0100 Subject: [PATCH 30/30] cosmetic: fix spacing in llfuse.h --- src/llfuse.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/llfuse.h b/src/llfuse.h index 6e0b5e0..c6c2061 100644 --- a/src/llfuse.h +++ b/src/llfuse.h @@ -14,7 +14,7 @@ the terms of the GNU LGPL. #ifdef __linux__ #define PLATFORM PLATFORM_LINUX -#elif __FreeBSD_kernel__&&__GLIBC__ +#elif __FreeBSD_kernel__ && __GLIBC__ #define PLATFORM PLATFORM_LINUX #elif __FreeBSD__ #define PLATFORM PLATFORM_BSD