Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-llfuse for openSUSE:Factory 
checked in at 2023-08-14 22:35:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-llfuse (Old)
 and      /work/SRC/openSUSE:Factory/.python-llfuse.new.11712 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-llfuse"

Mon Aug 14 22:35:32 2023 rev:3 rq:1103750 version:1.5.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-llfuse/python-llfuse.changes      
2022-07-26 19:44:26.567634620 +0200
+++ /work/SRC/openSUSE:Factory/.python-llfuse.new.11712/python-llfuse.changes   
2023-08-14 22:35:39.868379795 +0200
@@ -1,0 +2,15 @@
+Sun Aug 13 19:56:14 UTC 2023 - Dirk Müller <[email protected]>
+
+- update to 1.5.0:
+  * Note: this is first pyfuse3 release supporting the Cython
+    3.0.0 release.
+  * Cythonized using Cython 3.0.0 release.
+  * Drop Python 3.5, 3.6, 3.7 support, see #69.
+  * Minimum requirement is Python 3.8 now.
+  * Get rid of PyEval_InitThreads, #55.
+  * CI: also test on python 3.12 / cython 3.0 release
+  * Tell Cython that callbacks may raise exceptions, #90.
+  * Misc. CI, testing, build related fixes/improvements.
+- drop fix-test-for-fusermount.patch (upstream)
+
+-------------------------------------------------------------------

Old:
----
  fix-test-for-fusermount.patch
  python-llfuse-release-1.4.2.tar.gz

New:
----
  python-llfuse-release-1.5.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-llfuse.spec ++++++
--- /var/tmp/diff_new_pack.nzFivy/_old  2023-08-14 22:35:40.608384500 +0200
+++ /var/tmp/diff_new_pack.nzFivy/_new  2023-08-14 22:35:40.608384500 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-llfuse
 #
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -16,21 +16,20 @@
 #
 
 
-%{?!python_module:%define python_module() python-%{**} python3-%{**}}
-%define skip_python2 1
+%{?sle15_python_module_pythons}
 Name:           python-llfuse
-Version:        1.4.2
+Version:        1.5.0
 Release:        0
 Summary:        Python Bindings for the low-level FUSE API
 License:        LGPL-2.1-or-later
 Group:          Development/Libraries/Python
 URL:            https://github.com/python-llfuse/python-llfuse
 Source:         
https://github.com/python-llfuse/python-llfuse/archive/release-%{version}.tar.gz#/python-llfuse-release-%{version}.tar.gz
-Patch0:         fix-test-for-fusermount.patch
 BuildRequires:  %{python_module Cython}
-BuildRequires:  %{python_module devel}
+BuildRequires:  %{python_module devel >= 3.8}
 BuildRequires:  %{python_module pytest}
 BuildRequires:  %{python_module setuptools}
+BuildRequires:  %{python_module sqlite3}
 BuildRequires:  dos2unix
 BuildRequires:  fdupes
 BuildRequires:  fuse-devel >= 2.8.0
@@ -54,8 +53,7 @@
 used by other projects as well.
 
 %prep
-%setup -q -n python-llfuse-release-%{version}
-%patch0 -p1
+%autosetup -p1 -n python-llfuse-release-%{version}
 dos2unix README.rst
 
 %build

++++++ python-llfuse-release-1.4.2.tar.gz -> python-llfuse-release-1.5.0.tar.gz 
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-llfuse-release-1.4.2/.github/workflows/test.yml 
new/python-llfuse-release-1.5.0/.github/workflows/test.yml
--- old/python-llfuse-release-1.4.2/.github/workflows/test.yml  2022-05-31 
17:23:32.000000000 +0200
+++ new/python-llfuse-release-1.5.0/.github/workflows/test.yml  2023-08-07 
17:55:50.000000000 +0200
@@ -11,8 +11,9 @@
     strategy:
       fail-fast: false
       matrix:
-        python-version: ["3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11-dev"]
-        os: [ubuntu-latest]
+        python-version: ["3.8", "3.9", "3.10", "3.11", "3.12-dev"]
+        cython-version: ["0.29", "3.0"]
+        os: [ubuntu-20.04]
 
     steps:
       - uses: actions/checkout@v2
@@ -24,15 +25,26 @@
 
       - name: Install Linux dependencies
         run: |
-          sudo apt-get install -y libattr1-dev
-          sudo apt-get install -y pkg-config
-          sudo apt-get install -y gcc
-          sudo apt-get install -y libfuse-dev
+          sudo apt-get update
+          sudo apt-get install -y libattr1-dev libfuse-dev
+          sudo apt-get install -y pkg-config gcc
 
-      - name: Install Python dependencies
-        run: |
-          test/ci-install.sh
+      - 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.0)
+        if: ${{ matrix.cython-version == '3.0' }}
+        run: pip install "Cython>=3"
 
       - name: Test
         run: |
-          test/ci-test.sh
+          set -e
+          python setup.py build_cython
+          python setup.py build_ext --inplace
+          pytest -v -rs test/
+
+          sphinx-build -b html rst doc/html
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-llfuse-release-1.4.2/.gitignore 
new/python-llfuse-release-1.5.0/.gitignore
--- old/python-llfuse-release-1.4.2/.gitignore  2022-05-31 17:23:32.000000000 
+0200
+++ new/python-llfuse-release-1.5.0/.gitignore  2023-08-07 17:55:50.000000000 
+0200
@@ -7,3 +7,5 @@
 *.pyc
 src/llfuse.c
 src/llfuse*.so
+.idea
+.pytest_cache
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-llfuse-release-1.4.2/Changes.rst 
new/python-llfuse-release-1.5.0/Changes.rst
--- old/python-llfuse-release-1.4.2/Changes.rst 2022-05-31 17:23:32.000000000 
+0200
+++ new/python-llfuse-release-1.5.0/Changes.rst 2023-08-07 17:55:50.000000000 
+0200
@@ -6,6 +6,38 @@
 
 **WARNING**: Python-LLFUSE is no longer actively developed.
 
+Release 1.5.0 (2023-08-08)
+==========================
+
+- Note: this is first pyfuse3 release supporting the Cython 3.0.0 release.
+- Cythonized using Cython 3.0.0 release.
+- Drop Python 3.5, 3.6, 3.7 support, see #69.
+  Minimum requirement is Python 3.8 now.
+- Get rid of PyEval_InitThreads, #55.
+- CI: also test on python 3.12 / cython 3.0 release
+- Tell Cython that callbacks may raise exceptions, #90.
+- Misc. CI, testing, build related fixes/improvements.
+
+
+Release 1.4.4 (2023-05-21)
+==========================
+
+- CI: use the matrix for cy/py combinations, support and test on Cython 3 beta
+- cy3: cdef void* f(void* d) noexcept with gil, #78
+- cy3: cdef nogil -> noexcept nogil
+- tests: use shutil.which() instead of which(1) executable
+- tests/examples: fix tmpfs: backport fix from pyfuse3
+- tests/examples: fix lltest: add statfs implementation, remove -l from umount
+
+Release 1.4.3 (2023-05-09)
+==========================
+
+* cythonize with Cython 0.29.34 (brings python 3.12 support)
+* also test on python 3.12-dev
+* add a minimal pyproject.toml, #70
+* fix basedir in setup.py (malfunctioned with pip install -e .)
+* tests: fix integer overflow on 32-bit architectures
+
 Release 1.4.2 (2022-05-31)
 ==========================
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-llfuse-release-1.4.2/Include/fuse_lowlevel.pxd 
new/python-llfuse-release-1.5.0/Include/fuse_lowlevel.pxd
--- old/python-llfuse-release-1.4.2/Include/fuse_lowlevel.pxd   2022-05-31 
17:23:32.000000000 +0200
+++ new/python-llfuse-release-1.5.0/Include/fuse_lowlevel.pxd   2023-08-07 
17:55:50.000000000 +0200
@@ -54,66 +54,69 @@
     int FUSE_SET_ATTR_ATIME_NOW
     int FUSE_SET_ATTR_MTIME_NOW
 
+    # Request handlers
+    # We allow these functions to raise exceptions because we will catch them
+    # when checking exception status on return from fuse_session_process_buf().
     struct fuse_lowlevel_ops:
-        void (*init) (void *userdata, fuse_conn_info *conn)
-        void (*destroy) (void *userdata)
-        void (*lookup) (fuse_req_t req, fuse_ino_t parent, const_char *name)
-        void (*forget) (fuse_req_t req, fuse_ino_t ino, ulong_t nlookup)
+        void (*init) (void *userdata, fuse_conn_info *conn) except *
+        void (*destroy) (void *userdata) except *
+        void (*lookup) (fuse_req_t req, fuse_ino_t parent, const_char *name) 
except *
+        void (*forget) (fuse_req_t req, fuse_ino_t ino, ulong_t nlookup) 
except *
         void (*getattr) (fuse_req_t req, fuse_ino_t ino,
-                         fuse_file_info *fi)
+                         fuse_file_info *fi) except *
         void (*setattr) (fuse_req_t req, fuse_ino_t ino, struct_stat *attr,
-                         int to_set, fuse_file_info *fi)
-        void (*readlink) (fuse_req_t req, fuse_ino_t ino)
+                         int to_set, fuse_file_info *fi) except *
+        void (*readlink) (fuse_req_t req, fuse_ino_t ino) except *
         void (*mknod) (fuse_req_t req, fuse_ino_t parent, const_char *name,
-                       mode_t mode, dev_t rdev)
+                       mode_t mode, dev_t rdev) except *
         void (*mkdir) (fuse_req_t req, fuse_ino_t parent, const_char *name,
-                       mode_t mode)
-        void (*unlink) (fuse_req_t req, fuse_ino_t parent, const_char *name)
-        void (*rmdir) (fuse_req_t req, fuse_ino_t parent, const_char *name)
+                       mode_t mode) except *
+        void (*unlink) (fuse_req_t req, fuse_ino_t parent, const_char *name) 
except *
+        void (*rmdir) (fuse_req_t req, fuse_ino_t parent, const_char *name) 
except *
         void (*symlink) (fuse_req_t req, const_char *link, fuse_ino_t parent,
-                         const_char *name)
+                         const_char *name) except *
         void (*rename) (fuse_req_t req, fuse_ino_t parent, const_char *name,
-                        fuse_ino_t newparent, const_char *newname)
+                        fuse_ino_t newparent, const_char *newname) except *
         void (*link) (fuse_req_t req, fuse_ino_t ino, fuse_ino_t newparent,
-                      const_char *newname)
+                      const_char *newname) except *
         void (*open) (fuse_req_t req, fuse_ino_t ino,
-                      fuse_file_info *fi)
+                      fuse_file_info *fi) except *
         void (*read) (fuse_req_t req, fuse_ino_t ino, size_t size, off_t off,
-                      fuse_file_info *fi)
+                      fuse_file_info *fi) except *
         void (*write) (fuse_req_t req, fuse_ino_t ino, const_char *buf,
-                       size_t size, off_t off, fuse_file_info *fi)
+                       size_t size, off_t off, fuse_file_info *fi) except *
         void (*flush) (fuse_req_t req, fuse_ino_t ino,
-                       fuse_file_info *fi)
+                       fuse_file_info *fi) except *
         void (*release) (fuse_req_t req, fuse_ino_t ino,
-                         fuse_file_info *fi)
+                         fuse_file_info *fi) except *
         void (*fsync) (fuse_req_t req, fuse_ino_t ino, int datasync,
-                       fuse_file_info *fi)
+                       fuse_file_info *fi) except *
         void (*opendir) (fuse_req_t req, fuse_ino_t ino,
-                         fuse_file_info *fi)
+                         fuse_file_info *fi) except *
         void (*readdir) (fuse_req_t req, fuse_ino_t ino, size_t size, off_t 
off,
-                         fuse_file_info *fi)
+                         fuse_file_info *fi) except *
         void (*releasedir) (fuse_req_t req, fuse_ino_t ino,
-                            fuse_file_info *fi)
+                            fuse_file_info *fi) except *
         void (*fsyncdir) (fuse_req_t req, fuse_ino_t ino, int datasync,
-                          fuse_file_info *fi)
-        void (*statfs) (fuse_req_t req, fuse_ino_t ino)
+                          fuse_file_info *fi) except *
+        void (*statfs) (fuse_req_t req, fuse_ino_t ino) except *
         void (*setxattr) (fuse_req_t req, fuse_ino_t ino, const_char *name,
-                          const_char *value, size_t size, int flags)
+                          const_char *value, size_t size, int flags) except *
         void (*getxattr) (fuse_req_t req, fuse_ino_t ino, const_char *name,
-                          size_t size)
-        void (*listxattr) (fuse_req_t req, fuse_ino_t ino, size_t size)
-        void (*removexattr) (fuse_req_t req, fuse_ino_t ino, const_char *name)
-        void (*access) (fuse_req_t req, fuse_ino_t ino, int mask)
+                          size_t size) except *
+        void (*listxattr) (fuse_req_t req, fuse_ino_t ino, size_t size) except 
*
+        void (*removexattr) (fuse_req_t req, fuse_ino_t ino, const_char *name) 
except *
+        void (*access) (fuse_req_t req, fuse_ino_t ino, int mask) except *
         void (*create) (fuse_req_t req, fuse_ino_t parent, const_char *name,
-                        mode_t mode, fuse_file_info *fi)
+                        mode_t mode, fuse_file_info *fi) except *
         void (*write_buf) (fuse_req_t req, fuse_ino_t ino, fuse_bufvec *bufv,
-                           off_t off, fuse_file_info *fi)
+                           off_t off, fuse_file_info *fi) except *
         void (*retrieve_reply) (fuse_req_t req, void *cookie, fuse_ino_t ino,
-                                off_t offset, fuse_bufvec *bufv)
+                                off_t offset, fuse_bufvec *bufv) except *
         void (*forget_multi) (fuse_req_t req, size_t count,
-                              fuse_forget_data *forgets)
+                              fuse_forget_data *forgets) except *
         void (*fallocate) (fuse_req_t req, fuse_ino_t ino, int mode,
-                           off_t offset, off_t length, fuse_file_info *fi)
+                           off_t offset, off_t length, fuse_file_info *fi) 
except *
 
     int fuse_reply_err(fuse_req_t req, int err)
     void fuse_reply_none(fuse_req_t req)
@@ -164,7 +167,7 @@
     int fuse_session_receive_buf(fuse_session *se, fuse_buf *buf,
                                  fuse_chan **chp)
     void fuse_session_process_buf(fuse_session *se,
-                                  fuse_buf *buf, fuse_chan *ch)
+                                  fuse_buf *buf, fuse_chan *ch) except *
     void fuse_session_remove_chan(fuse_chan *ch)
     void fuse_session_reset(fuse_session *se)
     void fuse_session_exit(fuse_session *se)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-llfuse-release-1.4.2/MANIFEST.in 
new/python-llfuse-release-1.5.0/MANIFEST.in
--- old/python-llfuse-release-1.4.2/MANIFEST.in 2022-05-31 17:23:32.000000000 
+0200
+++ new/python-llfuse-release-1.5.0/MANIFEST.in 2023-08-07 17:55:50.000000000 
+0200
@@ -7,6 +7,7 @@
 graft util
 graft test
 prune test/.cache
+prune test/.pytest_cache
 exclude MANIFEST.in
 recursive-include src *.pyx *.pxi *.c *.h
 global-exclude *.pyc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-llfuse-release-1.4.2/developer-notes/release-process.md 
new/python-llfuse-release-1.5.0/developer-notes/release-process.md
--- old/python-llfuse-release-1.4.2/developer-notes/release-process.md  
2022-05-31 17:23:32.000000000 +0200
+++ new/python-llfuse-release-1.5.0/developer-notes/release-process.md  
2023-08-07 17:55:50.000000000 +0200
@@ -6,7 +6,7 @@
 
 # Releasing a new version #
  * `export DEVELOPER_MODE=0`  # or just not have it set
- * Bump version in `setup.py`
+ * Bump version in `setup.py` and version/release in `rst/conf.py`
  * Add release date to `Changes.rst`
  * Check `git status` to avoid undesired files in the tarball.
  * `./setup.py build_cython`
@@ -14,8 +14,7 @@
  * Extract tarball in temporary directory,
     * `./setup.py build_ext --inplace && python3 -m pytest test`
     * Run tests under valgrind. Build python `--with-valgrind --with-pydebug`, 
then `valgrind --trace-children=yes "--trace-children-skip=*mount*" python-dbg 
-m pytest test/`
-    * `./setup.py build_sphinx`
-    * `./setup.py upload_docs`
+    * `sphinx-build -b html rst doc/html`
  * `./util/sdist-sign 1.2.3`  # use real version number, have GPG ready
  * `./util/upload-pypi 1.2.3`  # use real version number, have twine installed
  * git commit, git tag -s
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-llfuse-release-1.4.2/examples/lltest.py 
new/python-llfuse-release-1.5.0/examples/lltest.py
--- old/python-llfuse-release-1.4.2/examples/lltest.py  2022-05-31 
17:23:32.000000000 +0200
+++ new/python-llfuse-release-1.5.0/examples/lltest.py  2023-08-07 
17:55:50.000000000 +0200
@@ -91,7 +91,25 @@
 
         # only one entry
         if off == 0:
-            yield (self.hello_name, self.getattr(self.hello_inode), 1)
+            yield (self.hello_name, self.getattr(self.hello_inode), 
self.hello_inode)
+
+    def statfs(self, ctx):
+        stat_ = llfuse.StatvfsData()
+
+        stat_.f_bsize = 512
+        stat_.f_frsize = 512
+
+        size = 1024 * stat_.f_frsize
+        stat_.f_blocks = size // stat_.f_frsize
+        stat_.f_bfree = max(size // stat_.f_frsize, 1024)
+        stat_.f_bavail = stat_.f_bfree
+
+        inodes = 100
+        stat_.f_files = inodes
+        stat_.f_ffree = max(inodes, 100)
+        stat_.f_favail = stat_.f_ffree
+
+        return stat_
 
     def open(self, inode, flags, ctx):
         if inode != self.hello_inode:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-llfuse-release-1.4.2/examples/tmpfs.py 
new/python-llfuse-release-1.5.0/examples/tmpfs.py
--- old/python-llfuse-release-1.4.2/examples/tmpfs.py   2022-05-31 
17:23:32.000000000 +0200
+++ new/python-llfuse-release-1.5.0/examples/tmpfs.py   2023-08-07 
17:55:50.000000000 +0200
@@ -146,7 +146,10 @@
 
 
     def getattr(self, inode, ctx=None):
-        row = self.get_row('SELECT * FROM inodes WHERE id=?', (inode,))
+        try:
+            row = self.get_row('SELECT * FROM inodes WHERE id=?', (inode,))
+        except NoSuchRowError:
+            raise(llfuse.FUSEError(errno.ENOENT))
 
         entry = llfuse.EntryAttributes()
         entry.st_ino = inode
@@ -258,8 +261,8 @@
     def link(self, inode, new_inode_p, new_name, ctx):
         entry_p = self.getattr(new_inode_p)
         if entry_p.st_nlink == 0:
-            log.warn('Attempted to create entry %s with unlinked parent %d',
-                     new_name, new_inode_p)
+            log.warning('Attempted to create entry %s with unlinked parent %d',
+                        new_name, new_inode_p)
             raise FUSEError(errno.EINVAL)
 
         self.cursor.execute("INSERT INTO contents (name, inode, parent_inode) 
VALUES(?,?,?)",
@@ -346,8 +349,8 @@
 
     def _create(self, inode_p, name, mode, ctx, rdev=0, target=None):
         if self.getattr(inode_p).st_nlink == 0:
-            log.warn('Attempted to create entry %s with unlinked parent %d',
-                     name, inode_p)
+            log.warning('Attempted to create entry %s with unlinked parent %d',
+                        name, inode_p)
             raise FUSEError(errno.EINVAL)
 
         now_ns = int(time() * 1e9)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-llfuse-release-1.4.2/pyproject.toml 
new/python-llfuse-release-1.5.0/pyproject.toml
--- old/python-llfuse-release-1.4.2/pyproject.toml      1970-01-01 
01:00:00.000000000 +0100
+++ new/python-llfuse-release-1.5.0/pyproject.toml      2023-08-07 
17:55:50.000000000 +0200
@@ -0,0 +1,3 @@
+[build-system]
+requires = ["setuptools"]
+build-backend = "setuptools.build_meta"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-llfuse-release-1.4.2/rst/conf.py 
new/python-llfuse-release-1.5.0/rst/conf.py
--- old/python-llfuse-release-1.4.2/rst/conf.py 2022-05-31 17:23:32.000000000 
+0200
+++ new/python-llfuse-release-1.5.0/rst/conf.py 2023-08-07 17:55:50.000000000 
+0200
@@ -52,16 +52,16 @@
 
 # General information about the project.
 project = 'Python-LLFUSE'
-copyright = '2010-2015, Nikolaus Rath'
+copyright = '2010-2023, 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.0'
+version = '1.5.0'
 # The full version, including alpha/beta/rc tags.
-release = '1.0'
+release = version + ''
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
@@ -74,7 +74,7 @@
 #today_fmt = '%B %d, %Y'
 
 # List of documents that shouldn't be included in the build.
-unused_docs = [ ]
+unused_docs = []
 
 # List of directories, relative to source directory, that shouldn't be searched
 # for source files.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-llfuse-release-1.4.2/rst/install.rst 
new/python-llfuse-release-1.5.0/rst/install.rst
--- old/python-llfuse-release-1.4.2/rst/install.rst     2022-05-31 
17:23:32.000000000 +0200
+++ new/python-llfuse-release-1.5.0/rst/install.rst     2023-08-07 
17:55:50.000000000 +0200
@@ -68,7 +68,7 @@
   python setup.py build_cython
   python setup.py build_ext --inplace
   python -m pytest test/
-  python setup.py build_sphinx
+  sphinx-build -b html rst doc/html
   python setup.py install
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-llfuse-release-1.4.2/setup.cfg 
new/python-llfuse-release-1.5.0/setup.cfg
--- old/python-llfuse-release-1.4.2/setup.cfg   2022-05-31 17:23:32.000000000 
+0200
+++ new/python-llfuse-release-1.5.0/setup.cfg   2023-08-07 17:55:50.000000000 
+0200
@@ -1,3 +0,0 @@
-[build_sphinx]
-source-dir = rst
-build-dir  = doc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-llfuse-release-1.4.2/setup.py 
new/python-llfuse-release-1.5.0/setup.py
--- old/python-llfuse-release-1.4.2/setup.py    2022-05-31 17:23:32.000000000 
+0200
+++ new/python-llfuse-release-1.5.0/setup.py    2023-08-07 17:55:50.000000000 
+0200
@@ -32,16 +32,10 @@
     module = sys.modules['Cython.Distutils.build_ext']
     del module.build_ext
 
-try:
-    import setuptools
-except ImportError:
-    raise SystemExit('Setuptools package not found. Please install from '
-                     'https://pypi.python.org/pypi/setuptools')
+import setuptools
 from setuptools import Extension
-from distutils.version import LooseVersion
 
-# Add util to load path
-basedir = os.path.abspath(os.path.dirname(sys.argv[0]))
+basedir = os.path.abspath(os.path.dirname(__file__))
 sys.path.insert(0, os.path.join(basedir, 'util'))
 
 # when running with DEVELOPER_MODE=1 in the environment:
@@ -50,25 +44,13 @@
 if DEVELOPER_MODE:
     print('running in developer mode')
     warnings.resetwarnings()
-    # We can't use `error`, because e.g. Sphinx triggers a
-    # DeprecationWarning.
     warnings.simplefilter('default')
 
-# Add src to load path, important for Sphinx autodoc
-# to work properly
-sys.path.insert(0, os.path.join(basedir, 'src'))
 
-LLFUSE_VERSION = '1.4.2'
+LLFUSE_VERSION = '1.5.0'
 
 def main():
 
-    try:
-        from sphinx.application import Sphinx #pylint: disable-msg=W0612
-    except ImportError:
-        pass
-    else:
-        fix_docutils()
-
     with open(os.path.join(basedir, 'README.rst')) as fh:
         long_desc = fh.read()
 
@@ -128,13 +110,11 @@
                        'Intended Audience :: Developers',
                        'Programming Language :: Python',
                        'Programming Language :: Python :: 3',
-                       'Programming Language :: Python :: 3.5',
-                       'Programming Language :: Python :: 3.6',
-                       'Programming Language :: Python :: 3.7',
                        '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',
                        'Topic :: Software Development :: Libraries :: Python 
Modules',
                        'Topic :: System :: Filesystems',
                        'License :: OSI Approved :: GNU Library or Lesser 
General Public License (LGPL)',
@@ -145,19 +125,13 @@
           keywords=['FUSE', 'python' ],
           package_dir={'': 'src'},
           packages=setuptools.find_packages('src'),
-          python_requires='>=3.5',
+          python_requires='>=3.8',
           tests_require=['pytest >= 3.4.0'],
           provides=['llfuse'],
           ext_modules=[Extension('llfuse', c_sources,
                                   extra_compile_args=compile_args,
                                   extra_link_args=link_args)],
-        cmdclass={'upload_docs': upload_docs,
-                  'build_cython': build_cython },
-          command_options={
-            'build_sphinx': {
-                'version': ('setup.py', LLFUSE_VERSION),
-                'release': ('setup.py', LLFUSE_VERSION),
-            }},
+          cmdclass={'build_cython': build_cython},
           )
 
 
@@ -192,21 +166,6 @@
     return cflags.decode('us-ascii').split()
 
 
-class upload_docs(setuptools.Command):
-    user_options = []
-    boolean_options = []
-    description = "Upload documentation"
-
-    def initialize_options(self):
-        pass
-
-    def finalize_options(self):
-        pass
-
-    def run(self):
-        subprocess.check_call(['rsync', '-aHv', '--del', os.path.join(basedir, 
'doc', 'html') + '/',
-                               'ebox.rath.org:/srv/www.rath.org/llfuse-docs/'])
-
 class build_cython(setuptools.Command):
     user_options = []
     boolean_options = []
@@ -225,11 +184,7 @@
                                               stderr=subprocess.STDOUT)
         except OSError:
             raise SystemExit('Cython needs to be installed for this command')
-
-        hit = re.match('^Cython version (.+)$', version)
-        if not hit or LooseVersion(hit.group(1)) < "0.29":
-            # in fact, we need a very recent Cython version (like 0.29.21) to 
support py39
-            raise SystemExit('Need Cython 0.29 or newer, found ' + version)
+        print(f"Using {version.strip()}.")
 
         cmd = ['cython', '-Wextra', '--force', '-3', '--fast-fail',
                '--directive', 'embedsignature=True', '--include-dir',
@@ -250,30 +205,6 @@
                     if subprocess.call(cmd + [path + '.pyx']) != 0:
                         raise SystemExit('Cython compilation failed')
 
-def fix_docutils():
-    '''Work around https://bitbucket.org/birkenfeld/sphinx/issue/1154/'''
-
-    import docutils.parsers
-    from docutils.parsers import rst
-    old_getclass = docutils.parsers.get_parser_class
-
-    # Check if bug is there
-    try:
-        old_getclass('rst')
-    except AttributeError:
-        pass
-    else:
-        return
-
-    def get_parser_class(parser_name):
-        """Return the Parser class from the `parser_name` module."""
-        if parser_name in ('rst', 'restructuredtext'):
-            return rst.Parser
-        else:
-            return old_getclass(parser_name)
-    docutils.parsers.get_parser_class = get_parser_class
-
-    assert docutils.parsers.get_parser_class('rst') is rst.Parser
 
 if __name__ == '__main__':
     main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-llfuse-release-1.4.2/src/fuse_api.pxi 
new/python-llfuse-release-1.5.0/src/fuse_api.pxi
--- old/python-llfuse-release-1.4.2/src/fuse_api.pxi    2022-05-31 
17:23:32.000000000 +0200
+++ new/python-llfuse-release-1.5.0/src/fuse_api.pxi    2023-08-07 
17:55:50.000000000 +0200
@@ -372,7 +372,7 @@
     void* buf
     size_t bufsize
 
-cdef void* worker_start(void* data) with gil:
+cdef void* worker_start(void* data) noexcept with gil:
     cdef worker_data_t *wd
     cdef int res
     cdef uintptr_t tid
@@ -387,7 +387,7 @@
         session_loop(wd.buf, wd.bufsize)
     except:
         fuse_session_exit(session)
-        tid = wd.thread_id
+        tid = <uintptr_t> wd.thread_id
         log.error('FUSE worker thread %d terminated with exception, '
                   'aborting processing', tid)
         res = pthread_mutex_lock(&exc_info_mutex)
@@ -424,7 +424,6 @@
     sigaddset(&newset, signal.SIGHUP);
     sigaddset(&newset, signal.SIGQUIT);
 
-    PyEval_InitThreads()
     bufsize = fuse_chan_bufsize(channel)
     wd = <worker_data_t*> calloc_or_raise(workers, sizeof(worker_data_t))
     try:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-llfuse-release-1.4.2/src/llfuse.pyx 
new/python-llfuse-release-1.5.0/src/llfuse.pyx
--- old/python-llfuse-release-1.4.2/src/llfuse.pyx      2022-05-31 
17:23:32.000000000 +0200
+++ new/python-llfuse-release-1.5.0/src/llfuse.pyx      2023-08-07 
17:55:50.000000000 +0200
@@ -95,7 +95,6 @@
         EDEADLK
 
 cdef extern from "Python.h" nogil:
-    void PyEval_InitThreads()
     int PY_SSIZE_T_MAX
 
 # Actually passed as -D to cc (and defined in setup.py)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-llfuse-release-1.4.2/src/misc.pxi 
new/python-llfuse-release-1.5.0/src/misc.pxi
--- old/python-llfuse-release-1.4.2/src/misc.pxi        2022-05-31 
17:23:32.000000000 +0200
+++ new/python-llfuse-release-1.5.0/src/misc.pxi        2023-08-07 
17:55:50.000000000 +0200
@@ -685,13 +685,13 @@
     cap.ptr = ptr
     return cap
 
-cdef void signal_handler(int sig, siginfo_t *si, void* ctx) nogil:
+cdef void signal_handler(int sig, siginfo_t *si, void* ctx) noexcept nogil:
     global exit_reason
     if session != NULL:
         fuse_session_exit(session)
     exit_reason = sig
 
-cdef void do_nothing(int sig, siginfo_t *si, void* ctx) nogil:
+cdef void do_nothing(int sig, siginfo_t *si, void* ctx) noexcept nogil:
     pass
 
 cdef int sigaction_p(int sig, sigaction_t *sa,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-llfuse-release-1.4.2/test/ci-install.sh 
new/python-llfuse-release-1.5.0/test/ci-install.sh
--- old/python-llfuse-release-1.4.2/test/ci-install.sh  2022-05-31 
17:23:32.000000000 +0200
+++ new/python-llfuse-release-1.5.0/test/ci-install.sh  1970-01-01 
01:00:00.000000000 +0100
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-set -e
-
-pip install pytest cython sphinx
-cython --version
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-llfuse-release-1.4.2/test/ci-test.sh 
new/python-llfuse-release-1.5.0/test/ci-test.sh
--- old/python-llfuse-release-1.4.2/test/ci-test.sh     2022-05-31 
17:23:32.000000000 +0200
+++ new/python-llfuse-release-1.5.0/test/ci-test.sh     1970-01-01 
01:00:00.000000000 +0100
@@ -1,9 +0,0 @@
-#!/bin/bash
-
-set -e
-
-python setup.py build_cython
-python setup.py build_ext --inplace
-python -m pytest test/
-
-python setup.py build_sphinx
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-llfuse-release-1.4.2/test/conftest.py 
new/python-llfuse-release-1.5.0/test/conftest.py
--- old/python-llfuse-release-1.4.2/test/conftest.py    2022-05-31 
17:23:32.000000000 +0200
+++ new/python-llfuse-release-1.5.0/test/conftest.py    2023-08-07 
17:55:50.000000000 +0200
@@ -38,7 +38,7 @@
 # example, if a request handler raises an exception, the server first signals 
an
 # error to FUSE (causing the test to fail), and then logs the exception. 
Without
 # the extra delay, the exception will go into nowhere.
[email protected]
[email protected](hookwrapper=True)
 def pytest_pyfunc_call(pyfuncitem):
     outcome = yield
     failed = outcome.excinfo is not None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-llfuse-release-1.4.2/test/test_examples.py 
new/python-llfuse-release-1.5.0/test/test_examples.py
--- old/python-llfuse-release-1.4.2/test/test_examples.py       2022-05-31 
17:23:32.000000000 +0200
+++ new/python-llfuse-release-1.5.0/test/test_examples.py       2023-08-07 
17:55:50.000000000 +0200
@@ -340,8 +340,10 @@
     os.mkdir(filename)
     fstat = os.lstat(filename)
 
-    # Approximately 100 years
-    secs = 100 * 365 * 24 * 3600 + 999
+    # Approximately 67 years, ending in 999.
+    # Note: 67 years were chosen to avoid y2038 issues (1970 + 67 = 2037).
+    #       Testing these is **not** in scope of this test.
+    secs = 67 * 365 * 24 * 3600 + 999
     # Max nanos
     nanos = _NANOS_PER_SEC - 1
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-llfuse-release-1.4.2/test/util.py 
new/python-llfuse-release-1.5.0/test/util.py
--- old/python-llfuse-release-1.4.2/test/util.py        2022-05-31 
17:23:32.000000000 +0200
+++ new/python-llfuse-release-1.5.0/test/util.py        2023-08-07 
17:55:50.000000000 +0200
@@ -10,6 +10,7 @@
 
 
 import platform
+import shutil
 import subprocess
 import pytest
 import os
@@ -30,15 +31,9 @@
         return pytest.mark.uses_fuse()
     skip = lambda x: pytest.mark.skip(reason=x)
 
-    # Python 2.x: Popen is not a context manager...
-    which = subprocess.Popen(['which', 'fusermount'], stdout=subprocess.PIPE,
-                             universal_newlines=True)
-    try:
-        fusermount_path = which.communicate()[0].strip()
-    finally:
-        which.wait()
+    fusermount_path = shutil.which("fusermount")
 
-    if not fusermount_path or which.returncode != 0:
+    if fusermount_path is None:
         return skip("Can't find fusermount executable")
 
     if not os.path.exists('/dev/fuse'):
@@ -106,7 +101,7 @@
 
 def umount(mount_process, mnt_dir):
     if platform.system() == 'Darwin':
-        subprocess.check_call(['umount', '-l', mnt_dir])
+        subprocess.check_call(['umount', mnt_dir])
     else:
         subprocess.check_call(['fusermount', '-z', '-u', mnt_dir])
     assert not os.path.ismount(mnt_dir)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-llfuse-release-1.4.2/util/upload-pypi 
new/python-llfuse-release-1.5.0/util/upload-pypi
--- old/python-llfuse-release-1.4.2/util/upload-pypi    2022-05-31 
17:23:32.000000000 +0200
+++ new/python-llfuse-release-1.5.0/util/upload-pypi    2023-08-07 
17:55:50.000000000 +0200
@@ -15,4 +15,4 @@
 
 D=dist/llfuse-$R.tar.gz
 
-twine upload $D.asc $D
+twine upload $D

Reply via email to