Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-apsw for openSUSE:Factory checked in at 2024-01-21 23:08:38 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-apsw (Old) and /work/SRC/openSUSE:Factory/.python-apsw.new.16006 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-apsw" Sun Jan 21 23:08:38 2024 rev:22 rq:1140101 version:3.45.0.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-apsw/python-apsw.changes 2024-01-10 21:53:16.194306633 +0100 +++ /work/SRC/openSUSE:Factory/.python-apsw.new.16006/python-apsw.changes 2024-01-21 23:08:57.702829592 +0100 @@ -1,0 +2,6 @@ +Sat Jan 20 12:28:34 UTC 2024 - Dirk Müller <dmuel...@suse.com> + +- update to 3.45.0.0: + * Correctly handle NULL/None VFS filenames (:issue:`506`) + +------------------------------------------------------------------- Old: ---- apsw-3.44.2.0.tar.gz New: ---- apsw-3.45.0.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-apsw.spec ++++++ --- /var/tmp/diff_new_pack.fT7rqs/_old 2024-01-21 23:08:58.306851610 +0100 +++ /var/tmp/diff_new_pack.fT7rqs/_new 2024-01-21 23:08:58.310851756 +0100 @@ -18,7 +18,7 @@ %{?sle15_python_module_pythons} Name: python-apsw -Version: 3.44.2.0 +Version: 3.45.0.0 Release: 0 Summary: Another Python SQLite Wrapper License: Zlib ++++++ apsw-3.44.2.0.tar.gz -> apsw-3.45.0.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apsw-3.44.2.0/.github/workflows/build-pypi.yml new/apsw-3.45.0.0/.github/workflows/build-pypi.yml --- old/apsw-3.44.2.0/.github/workflows/build-pypi.yml 2023-11-29 17:45:17.000000000 +0100 +++ new/apsw-3.45.0.0/.github/workflows/build-pypi.yml 2024-01-16 17:40:57.000000000 +0100 @@ -22,8 +22,9 @@ CIBW_TEST_COMMAND: python -m apsw.tests -v APSW_HEAVY_DURATION: 2 - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: + name: dist-${{ matrix.os }} path: ./wheelhouse/*.whl @@ -51,8 +52,9 @@ CIBW_TEST_COMMAND: python -m apsw.tests -v APSW_HEAVY_DURATION: 2 - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: + name: dist-qemu-${{ matrix.arch }} path: ./wheelhouse/*.whl @@ -65,8 +67,9 @@ - name: Create source dist run: python setup.py sdist --for-pypi - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: + name: dist-source path: ./dist/* pypi_publish: @@ -77,9 +80,10 @@ steps: - name: Stage wheels - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: - name: artifact + pattern: dist-* + merge-multiple: true path: dist - name: Publish package diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apsw-3.44.2.0/.github/workflows/build-testpypi.yml new/apsw-3.45.0.0/.github/workflows/build-testpypi.yml --- old/apsw-3.44.2.0/.github/workflows/build-testpypi.yml 2023-11-29 17:45:17.000000000 +0100 +++ new/apsw-3.45.0.0/.github/workflows/build-testpypi.yml 2024-01-16 17:40:57.000000000 +0100 @@ -22,8 +22,9 @@ CIBW_TEST_COMMAND: python -m apsw.tests -v APSW_HEAVY_DURATION: 2 - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: + name: dist-${{ matrix.os }} path: ./wheelhouse/*.whl @@ -51,8 +52,9 @@ CIBW_TEST_COMMAND: python -m apsw.tests -v APSW_HEAVY_DURATION: 2 - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: + name: dist-qemu-${{ matrix.arch }} path: ./wheelhouse/*.whl @@ -65,8 +67,9 @@ - name: Create source dist run: python setup.py sdist --for-pypi - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: + name: dist-source path: ./dist/* pypi_publish: @@ -77,9 +80,10 @@ steps: - name: Stage wheels - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: - name: artifact + pattern: dist-* + merge-multiple: true path: dist - name: Publish package diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apsw-3.44.2.0/LICENSE new/apsw-3.45.0.0/LICENSE --- old/apsw-3.44.2.0/LICENSE 2023-11-29 17:45:17.000000000 +0100 +++ new/apsw-3.45.0.0/LICENSE 2024-01-16 17:40:57.000000000 +0100 @@ -1,4 +1,4 @@ -Copyright (c) 2004-2023 Roger Binns <rog...@rogerbinns.com> +Copyright (c) 2004-2024 Roger Binns <rog...@rogerbinns.com> All code and documentation is provided under this license: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apsw-3.44.2.0/Makefile new/apsw-3.45.0.0/Makefile --- old/apsw-3.44.2.0/Makefile 2023-11-29 17:45:17.000000000 +0100 +++ new/apsw-3.45.0.0/Makefile 2024-01-16 17:40:57.000000000 +0100 @@ -1,8 +1,8 @@ -SQLITEVERSION=3.44.2 +SQLITEVERSION=3.45.0 APSWSUFFIX=.0 -RELEASEDATE="30 November 2023" +RELEASEDATE="17 January 2024" VERSION=$(SQLITEVERSION)$(APSWSUFFIX) VERDIR=apsw-$(VERSION) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apsw-3.44.2.0/apsw/__init__.pyi new/apsw-3.45.0.0/apsw/__init__.pyi --- old/apsw-3.44.2.0/apsw/__init__.pyi 2023-11-29 17:45:17.000000000 +0100 +++ new/apsw-3.45.0.0/apsw/__init__.pyi 2024-01-16 17:40:57.000000000 +0100 @@ -2290,7 +2290,7 @@ `PyErr_Display`.""" ... - def __init__(self, vfs: str, filename: str | URIFilename, flags: list[int]): + def __init__(self, vfs: str, filename: str | URIFilename | None, flags: list[int]): """:param vfs: The vfs you want to inherit behaviour from. You can use an empty string ``""`` to inherit from the default vfs. :param name: The name of the file being opened. May be an instance of :class:`URIFilename`. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apsw-3.44.2.0/apsw/tests.py new/apsw-3.45.0.0/apsw/tests.py --- old/apsw-3.44.2.0/apsw/tests.py 2023-11-29 17:45:17.000000000 +0100 +++ new/apsw-3.45.0.0/apsw/tests.py 2024-01-16 17:40:57.000000000 +0100 @@ -5016,6 +5016,39 @@ self.assertRaisesRegex(RuntimeError, "__init__ has already been called, and cannot be called again", o.__init__, "issue 488") + def testIssue506(self): + "VFS file with None/NULL filename" + vfs_saw_none = False + vfsfile_saw_none = False + class TVFS(apsw.VFS): + vfsname = "test" + def __init__(self): + super().__init__(self.vfsname, "") + + def xOpen(self, name, flags): + nonlocal vfs_saw_none + if name is None: + vfs_saw_none = True + return TVFSFile(name, flags) + + class TVFSFile(apsw.VFSFile): + def __init__(self, filename, flags): + nonlocal vfsfile_saw_none + if filename is None: + vfsfile_saw_none = True + super().__init__("", filename, flags) + + tvfs = TVFS() + con = apsw.Connection(self.db.filename, vfs=tvfs.vfsname) + # put enough stuff in temp table that it spills to disk + con.pragma("cache_size", 10) + con.execute("create temp table testissue506(x UNIQUE,y UNIQUE, PRIMARY KEY(x,y))") + con.executemany("insert into testissue506 values(?,?)", (("a"*i, "b"*i) for i in range(1000))) + + # verify we saw the Nones + self.assertTrue(vfs_saw_none) + self.assertTrue(vfsfile_saw_none) + def testCursorGet(self): "Cursor.get" for query, expected in (("select 3,4", (3, 4)), ("select 3; select 4", [3, 4]), ("select 3,4; select 4,5", [ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apsw-3.44.2.0/checksums new/apsw-3.45.0.0/checksums --- old/apsw-3.44.2.0/checksums 2023-11-29 17:45:17.000000000 +0100 +++ new/apsw-3.45.0.0/checksums 2024-01-16 17:40:57.000000000 +0100 @@ -8,6 +8,8 @@ # more peace of mind because the SQLite releases are not signed in any # way. +https://sqlite.org/2024/sqlite-autoconf-3450000.tar.gz 3231697 72887d57a1d8f89f52be38ef84a6353ce8c3ed55ada7864eb944abd9a495e436 9fc2a78088875ae7c112957d58ccc52b1a0a4afa34ac669290be42f352b1aa76 + https://sqlite.org/2023/sqlite-autoconf-3440200.tar.gz 3204841 1c6719a148bc41cf0f2bbbe3926d7ce3f5ca09d878f1246fcc20767b175bb407 6c427f0547e2f7babe636b748dd5d5a1f2f31601adadef7e2805e7d1f7171861 https://sqlite.org/2023/sqlite-autoconf-3440100.tar.gz 3204737 63c3181633844adb5e36187f75b8f31a51cd32487992a26b89bf26b22ecdcf48 c405017524ddad7957ede0fc471986a7125b977adbcd7c5b785f2108dbee992d https://sqlite.org/2023/sqlite-autoconf-3440000.tar.gz 3198005 b9cd386e7cd22af6e0d2a0f06d0404951e1bef109e42ea06cc0450e10cd15550 6869046465eae886f1a9f2c8debeeba44d34328693aa77a5bd4a3cfed93d6556 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apsw-3.44.2.0/doc/changes.rst new/apsw-3.45.0.0/doc/changes.rst --- old/apsw-3.44.2.0/doc/changes.rst 2023-11-29 17:45:17.000000000 +0100 +++ new/apsw-3.45.0.0/doc/changes.rst 2024-01-16 17:40:57.000000000 +0100 @@ -10,6 +10,11 @@ APSW changes by version ----------------------- +3.45.0.0 +======== + +Correctly handle NULL/None VFS filenames (:issue:`506`) + 3.44.2.0 ======== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apsw-3.44.2.0/doc/conf.py new/apsw-3.45.0.0/doc/conf.py --- old/apsw-3.44.2.0/doc/conf.py 2023-11-29 17:45:17.000000000 +0100 +++ new/apsw-3.45.0.0/doc/conf.py 2024-01-16 17:40:57.000000000 +0100 @@ -47,7 +47,7 @@ # General substitutions. project = 'APSW' author = "Roger Binns <rog...@rogerbinns.com>" -copyright = f'2004-2023, { author }' +copyright = f'2004-2024, { author }' html_logo = "apswlogo.png" # The default replacements for |version| and |release|, also used in various diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apsw-3.44.2.0/doc/install.rst new/apsw-3.45.0.0/doc/install.rst --- old/apsw-3.44.2.0/doc/install.rst 2023-11-29 17:45:17.000000000 +0100 +++ new/apsw-3.45.0.0/doc/install.rst 2024-01-16 17:40:57.000000000 +0100 @@ -74,12 +74,12 @@ .. downloads-begin -* `apsw-3.44.2.0.zip - <https://github.com/rogerbinns/apsw/releases/download/3.44.2.0/apsw-3.44.2.0.zip>`__ +* `apsw-3.45.0.0.zip + <https://github.com/rogerbinns/apsw/releases/download/3.45.0.0/apsw-3.45.0.0.zip>`__ (Source, includes this HTML Help) -* `apsw-3.44.2.0-sigs.zip - <https://github.com/rogerbinns/apsw/releases/download/3.44.2.0/apsw-3.44.2.0-sigs.zip>`__ +* `apsw-3.45.0.0-sigs.zip + <https://github.com/rogerbinns/apsw/releases/download/3.45.0.0/apsw-3.45.0.0-sigs.zip>`__ GPG signatures for all files .. downloads-end @@ -104,7 +104,7 @@ .. code-block:: console - $ gpg --verify apsw-3.44.2.0.zip.asc + $ gpg --verify apsw-3.45.0.0.zip.asc gpg: Signature made ... date ... using DSA key ID 0DFBD904 gpg: Good signature from "Roger Binns <rog...@rogerbinns.com>" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apsw-3.44.2.0/setup.py new/apsw-3.45.0.0/setup.py --- old/apsw-3.44.2.0/setup.py 2023-11-29 17:45:17.000000000 +0100 +++ new/apsw-3.45.0.0/setup.py 2024-01-16 17:40:57.000000000 +0100 @@ -116,7 +116,9 @@ ver = re.search("3[0-9]{6}", url) if ver: ver = int(ver.group(0)) - if ver >= 3410000: + if ver >= 3450000: + year = "2024" + elif ver >= 3410000: year = "2023" elif ver >= 3370200: year = "2022" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apsw-3.44.2.0/src/apsw.docstrings new/apsw-3.45.0.0/src/apsw.docstrings --- old/apsw-3.44.2.0/src/apsw.docstrings 2023-11-29 17:45:17.000000000 +0100 +++ new/apsw-3.45.0.0/src/apsw.docstrings 2024-01-16 17:40:57.000000000 +0100 @@ -2965,7 +2965,7 @@ ":func:`sys.unraisablehook` and :func:`sys.excepthook`, falling back to\n" \ "`PyErr_Display`.\n" -#define VFSFile_init_DOC "__init__($self,vfs,filename,flags)\n--\n\nVFSFile.__init__(vfs: str, filename: str | URIFilename, flags: list[int,int])\n\n" \ +#define VFSFile_init_DOC "__init__($self,vfs,filename,flags)\n--\n\nVFSFile.__init__(vfs: str, filename: str | URIFilename | None, flags: list[int,int])\n\n" \ ":param vfs: The vfs you want to inherit behaviour from. You can\n" \ " use an empty string ``\"\"`` to inherit from the default vfs.\n" \ ":param name: The name of the file being opened. May be an instance of :class:`URIFilename`.\n" \ @@ -2984,7 +2984,7 @@ " :meth:`VFS.xOpen`\n" #define VFSFile_init_KWNAMES "vfs", "filename", "flags" -#define VFSFile_init_USAGE "VFSFile.__init__(vfs: str, filename: str | URIFilename, flags: list[int,int])" +#define VFSFile_init_USAGE "VFSFile.__init__(vfs: str, filename: str | URIFilename | None, flags: list[int,int])" #define VFSFile_init_CHECK do { \ assert(__builtin_types_compatible_p(typeof(vfs), const char *)); \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apsw-3.44.2.0/src/apswversion.h new/apsw-3.45.0.0/src/apswversion.h --- old/apsw-3.44.2.0/src/apswversion.h 2023-11-29 17:45:17.000000000 +0100 +++ new/apsw-3.45.0.0/src/apswversion.h 2024-01-16 17:40:57.000000000 +0100 @@ -1 +1 @@ -#define APSW_VERSION "3.44.2.0" +#define APSW_VERSION "3.45.0.0" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apsw-3.44.2.0/src/vfs.c new/apsw-3.45.0.0/src/vfs.c --- old/apsw-3.44.2.0/src/vfs.c 2023-11-29 17:45:17.000000000 +0100 +++ new/apsw-3.45.0.0/src/vfs.c 2024-01-16 17:40:57.000000000 +0100 @@ -640,7 +640,7 @@ if (vargs[2] && vargs[3]) pyresult = PyObject_VectorcallMethod(apst.xOpen, vargs + 1, 3 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL); /* issue 501 */ - if (inflags & (SQLITE_OPEN_URI | SQLITE_OPEN_MAIN_DB)) + if (inflags & (SQLITE_OPEN_URI | SQLITE_OPEN_MAIN_DB) && nameobject) ((APSWURIFilename *)nameobject)->filename = 0; if (!pyresult) { @@ -2010,7 +2010,7 @@ return (PyObject *)self; } -/** .. method:: __init__(vfs: str, filename: str | URIFilename, flags: list[int,int]) +/** .. method:: __init__(vfs: str, filename: str | URIFilename | None, flags: list[int,int]) :param vfs: The vfs you want to inherit behaviour from. You can use an empty string ``""`` to inherit from the default vfs. @@ -2067,6 +2067,10 @@ if (!self->filename) return -1; } + else if (Py_IsNone(filename)) + { + self->filename = NULL; + } else { PyErr_Format(PyExc_TypeError, "filename should be a string"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apsw-3.44.2.0/tools/checksums.py new/apsw-3.45.0.0/tools/checksums.py --- old/apsw-3.44.2.0/tools/checksums.py 2023-11-29 17:45:17.000000000 +0100 +++ new/apsw-3.45.0.0/tools/checksums.py 2024-01-16 17:40:57.000000000 +0100 @@ -11,6 +11,7 @@ import setup sqlitevers = ( + '3450000', '3440200', '3440100', '3440000', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apsw-3.44.2.0/tools/megatest.py new/apsw-3.45.0.0/tools/megatest.py --- old/apsw-3.44.2.0/tools/megatest.py 2023-11-29 17:45:17.000000000 +0100 +++ new/apsw-3.45.0.0/tools/megatest.py 2024-01-16 17:40:57.000000000 +0100 @@ -202,15 +202,15 @@ # Default versions we support PYVERS = ( '3.13.0a2', - '3.12.0', - '3.11.6', + '3.12.1', + '3.11.7', '3.10.13', '3.9.18', '3.8.18', 'system', ) -SQLITEVERS = ('3.44.0', '3.44.1', '3.44.2',) +SQLITEVERS = ('3.44.0', '3.44.1', '3.44.2', '3.45.0') BITS = (64, 32)