diff --git a/dev-python/fastbencode/fastbencode-0.3.1.ebuild b/dev-python/fastbencode/fastbencode-0.3.1.ebuild index 050e3c30fde51..a3f7ccbb53b9e 100644 --- a/dev-python/fastbencode/fastbencode-0.3.1.ebuild +++ b/dev-python/fastbencode/fastbencode-0.3.1.ebuild @@ -24,3 +24,8 @@ BDEPEND=" " distutils_enable_tests unittest + +PATCHES=( + # https://github.com/breezy-team/fastbencode/pull/97 + "${FILESDIR}/${P}-cython-3.1.patch" +) diff --git a/dev-python/fastbencode/files/fastbencode-0.3.1-cython-3.1.patch b/dev-python/fastbencode/files/fastbencode-0.3.1-cython-3.1.patch new file mode 100644 index 0000000000000..7c65e47dfee88 --- /dev/null +++ b/dev-python/fastbencode/files/fastbencode-0.3.1-cython-3.1.patch @@ -0,0 +1,49 @@ +From 287a8ae762fd3e6d532cda7b899d08ec9859f84a Mon Sep 17 00:00:00 2001 +From: Jelmer Vernooij +Date: Mon, 21 Apr 2025 12:33:50 +0000 +Subject: [PATCH] Fix compatibility with Cython 3.1. Fixes #96 + +--- + fastbencode/_bencode_pyx.pyx | 9 +++------ + 1 file changed, 3 insertions(+), 6 deletions(-) + +diff --git a/fastbencode/_bencode_pyx.pyx b/fastbencode/_bencode_pyx.pyx +index 651f09f..c526b19 100644 +--- a/fastbencode/_bencode_pyx.pyx ++++ b/fastbencode/_bencode_pyx.pyx +@@ -31,16 +31,13 @@ from cpython.bytes cimport ( + from cpython.dict cimport ( + PyDict_CheckExact, + ) +-from cpython.int cimport ( +- PyInt_CheckExact, +- PyInt_FromString, +- ) + from cpython.list cimport ( + PyList_CheckExact, + PyList_Append, + ) + from cpython.long cimport ( + PyLong_CheckExact, ++ PyLong_FromString, + ) + from cpython.mem cimport ( + PyMem_Free, +@@ -165,7 +162,7 @@ cdef class Decoder: + i = self._read_digits(c'e') + self.tail[i] = 0 + try: +- ret = PyInt_FromString(self.tail, NULL, 10) ++ ret = PyLong_FromString(self.tail, NULL, 10) + finally: + self.tail[i] = c'e' + D_UPDATE_TAIL(self, i+1) +@@ -414,7 +411,7 @@ cdef class Encoder: + try: + if PyBytes_CheckExact(x): + self._encode_bytes(x) +- elif PyInt_CheckExact(x) and x.bit_length() < 32: ++ elif PyLong_CheckExact(x) and x.bit_length() < 32: + self._encode_int(x) + elif PyLong_CheckExact(x): + self._encode_long(x)