commit:     0db7801fbdd8dfd542ecb65ff5070fd4a8f3ddcf
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sun Jul 30 12:43:50 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sun Jul 30 12:43:50 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0db7801f

dev-python/peewee: backport cython-3 fix

Closes: https://bugs.gentoo.org/911412
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../peewee/files/peewee-3.16.2-cython3.patch       | 102 +++++++++++++++++++++
 dev-python/peewee/peewee-3.16.2-r1.ebuild          |  60 ++++++++++++
 2 files changed, 162 insertions(+)

diff --git a/dev-python/peewee/files/peewee-3.16.2-cython3.patch 
b/dev-python/peewee/files/peewee-3.16.2-cython3.patch
new file mode 100644
index 000000000000..5ddbd7ae9377
--- /dev/null
+++ b/dev-python/peewee/files/peewee-3.16.2-cython3.patch
@@ -0,0 +1,102 @@
+https://github.com/coleifer/peewee/commit/83c6b78bd5df2c8c942f4fc32c4daedde01e8a63
+
+From 83c6b78bd5df2c8c942f4fc32c4daedde01e8a63 Mon Sep 17 00:00:00 2001
+From: Charles Leifer <[email protected]>
+Date: Tue, 18 Jul 2023 17:37:27 -0500
+Subject: [PATCH] Changes for Cython 3.0
+
+--- a/playhouse/_sqlite_ext.pyx
++++ b/playhouse/_sqlite_ext.pyx
+@@ -386,7 +386,7 @@ ctypedef struct peewee_cursor:
+ # We define an xConnect function, but leave xCreate NULL so that the
+ # table-function can be called eponymously.
+ cdef int pwConnect(sqlite3 *db, void *pAux, int argc, const char *const*argv,
+-                   sqlite3_vtab **ppVtab, char **pzErr) with gil:
++                   sqlite3_vtab **ppVtab, char **pzErr) noexcept with gil:
+     cdef:
+         int rc
+         object table_func_cls = <object>pAux
+@@ -407,7 +407,7 @@ cdef int pwConnect(sqlite3 *db, void *pAux, int argc, 
const char *const*argv,
+     return rc
+ 
+ 
+-cdef int pwDisconnect(sqlite3_vtab *pBase) with gil:
++cdef int pwDisconnect(sqlite3_vtab *pBase) noexcept with gil:
+     cdef:
+         peewee_vtab *pVtab = <peewee_vtab *>pBase
+         object table_func_cls = <object>(pVtab.table_func_cls)
+@@ -419,7 +419,8 @@ cdef int pwDisconnect(sqlite3_vtab *pBase) with gil:
+ 
+ # The xOpen method is used to initialize a cursor. In this method we
+ # instantiate the TableFunction class and zero out a new cursor for iteration.
+-cdef int pwOpen(sqlite3_vtab *pBase, sqlite3_vtab_cursor **ppCursor) with gil:
++cdef int pwOpen(sqlite3_vtab *pBase, sqlite3_vtab_cursor **ppCursor) \
++                noexcept with gil:
+     cdef:
+         peewee_vtab *pVtab = <peewee_vtab *>pBase
+         peewee_cursor *pCur = <peewee_cursor *>0
+@@ -443,7 +444,7 @@ cdef int pwOpen(sqlite3_vtab *pBase, sqlite3_vtab_cursor 
**ppCursor) with gil:
+     return SQLITE_OK
+ 
+ 
+-cdef int pwClose(sqlite3_vtab_cursor *pBase) with gil:
++cdef int pwClose(sqlite3_vtab_cursor *pBase) noexcept with gil:
+     cdef:
+         peewee_cursor *pCur = <peewee_cursor *>pBase
+         object table_func = <object>pCur.table_func
+@@ -454,7 +455,7 @@ cdef int pwClose(sqlite3_vtab_cursor *pBase) with gil:
+ 
+ # Iterate once, advancing the cursor's index and assigning the row data to the
+ # `row_data` field on the peewee_cursor struct.
+-cdef int pwNext(sqlite3_vtab_cursor *pBase) with gil:
++cdef int pwNext(sqlite3_vtab_cursor *pBase) noexcept with gil:
+     cdef:
+         peewee_cursor *pCur = <peewee_cursor *>pBase
+         object table_func = <object>pCur.table_func
+@@ -483,7 +484,7 @@ cdef int pwNext(sqlite3_vtab_cursor *pBase) with gil:
+ 
+ # Return the requested column from the current row.
+ cdef int pwColumn(sqlite3_vtab_cursor *pBase, sqlite3_context *ctx,
+-                  int iCol) with gil:
++                  int iCol) noexcept with gil:
+     cdef:
+         bytes bval
+         peewee_cursor *pCur = <peewee_cursor *>pBase
+@@ -502,7 +503,7 @@ cdef int pwColumn(sqlite3_vtab_cursor *pBase, 
sqlite3_context *ctx,
+     return python_to_sqlite(ctx, row_data[iCol])
+ 
+ 
+-cdef int pwRowid(sqlite3_vtab_cursor *pBase, sqlite3_int64 *pRowid):
++cdef int pwRowid(sqlite3_vtab_cursor *pBase, sqlite3_int64 *pRowid) noexcept:
+     cdef:
+         peewee_cursor *pCur = <peewee_cursor *>pBase
+     pRowid[0] = <sqlite3_int64>pCur.idx
+@@ -510,7 +511,7 @@ cdef int pwRowid(sqlite3_vtab_cursor *pBase, sqlite3_int64 
*pRowid):
+ 
+ 
+ # Return a boolean indicating whether the cursor has been consumed.
+-cdef int pwEof(sqlite3_vtab_cursor *pBase):
++cdef int pwEof(sqlite3_vtab_cursor *pBase) noexcept:
+     cdef:
+         peewee_cursor *pCur = <peewee_cursor *>pBase
+     return 1 if pCur.stopped else 0
+@@ -520,7 +521,8 @@ cdef int pwEof(sqlite3_vtab_cursor *pBase):
+ # get access to the parameters that the function was called with, and call the
+ # TableFunction's `initialize()` function.
+ cdef int pwFilter(sqlite3_vtab_cursor *pBase, int idxNum,
+-                  const char *idxStr, int argc, sqlite3_value **argv) with 
gil:
++                  const char *idxStr, int argc, sqlite3_value **argv) \
++                  noexcept with gil:
+     cdef:
+         peewee_cursor *pCur = <peewee_cursor *>pBase
+         object table_func = <object>pCur.table_func
+@@ -572,7 +574,7 @@ cdef int pwFilter(sqlite3_vtab_cursor *pBase, int idxNum,
+ # SQLite will (in some cases, repeatedly) call the xBestIndex method to try 
and
+ # find the best query plan.
+ cdef int pwBestIndex(sqlite3_vtab *pBase, sqlite3_index_info *pIdxInfo) \
+-        with gil:
++                     noexcept with gil:
+     cdef:
+         int i
+         int col_idx
+

diff --git a/dev-python/peewee/peewee-3.16.2-r1.ebuild 
b/dev-python/peewee/peewee-3.16.2-r1.ebuild
new file mode 100644
index 000000000000..19c8eaba77ed
--- /dev/null
+++ b/dev-python/peewee/peewee-3.16.2-r1.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9..11} )
+PYTHON_REQ_USE="sqlite"
+
+inherit distutils-r1
+
+DESCRIPTION="Small Python ORM"
+HOMEPAGE="
+       https://github.com/coleifer/peewee/
+       https://pypi.org/project/peewee/
+"
+SRC_URI="
+       https://github.com/coleifer/${PN}/archive/${PV}.tar.gz
+               -> ${P}.gh.tar.gz
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~riscv ~x86"
+IUSE="examples +native-extensions test"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+       native-extensions? ( dev-db/sqlite:3= )
+"
+RDEPEND="
+       ${DEPEND}
+"
+BDEPEND="
+       dev-python/cython[${PYTHON_USEDEP}]
+"
+
+PATCHES=(
+       "${FILESDIR}"/${P}-cython3.patch
+)
+
+distutils_enable_sphinx docs
+
+src_compile() {
+       if ! use native-extensions; then
+               local -x NO_SQLITE=1
+       fi
+
+       distutils-r1_src_compile
+}
+
+python_test() {
+       "${EPYTHON}" runtests.py -v 2 || die "tests failed under ${EPYTHON}"
+}
+
+python_install_all() {
+       use examples && DOCS=( examples/ )
+       distutils-r1_python_install_all
+}

Reply via email to