diff options
author | Sam James <sam@gentoo.org> | 2023-07-30 13:43:50 +0100 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2023-07-30 13:43:50 +0100 |
commit | 0db7801fbdd8dfd542ecb65ff5070fd4a8f3ddcf (patch) | |
tree | 401e6a5b94f595ae9d91b9cb732d51dd7499c4c1 /dev-python/peewee | |
parent | sys-libs/libunwind: drop 1.7.0, 1.7.1 (diff) | |
download | gentoo-0db7801fbdd8dfd542ecb65ff5070fd4a8f3ddcf.tar.gz gentoo-0db7801fbdd8dfd542ecb65ff5070fd4a8f3ddcf.tar.bz2 gentoo-0db7801fbdd8dfd542ecb65ff5070fd4a8f3ddcf.zip |
dev-python/peewee: backport cython-3 fix
Closes: https://bugs.gentoo.org/911412
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'dev-python/peewee')
-rw-r--r-- | dev-python/peewee/files/peewee-3.16.2-cython3.patch | 102 | ||||
-rw-r--r-- | dev-python/peewee/peewee-3.16.2-r1.ebuild | 60 |
2 files changed, 162 insertions, 0 deletions
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 <coleifer@gmail.com> +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 +} |