commit:     e1505ba25edfd5dde254e3719460b56e60695261
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Mon Jul 31 07:17:38 2023 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon Jul 31 07:21:19 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e1505ba2

dev-python/cftime: Backport cython-3 fix

Bug: https://github.com/Unidata/cftime/issues/271
Closes: https://bugs.gentoo.org/898668
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 ...{cftime-1.6.2.ebuild => cftime-1.6.2-r1.ebuild} |  6 +++-
 .../cftime/files/cftime-1.6.2-cython-3.patch       | 34 ++++++++++++++++++++++
 2 files changed, 39 insertions(+), 1 deletion(-)

diff --git a/dev-python/cftime/cftime-1.6.2.ebuild 
b/dev-python/cftime/cftime-1.6.2-r1.ebuild
similarity index 86%
rename from dev-python/cftime/cftime-1.6.2.ebuild
rename to dev-python/cftime/cftime-1.6.2-r1.ebuild
index c1341db6add8..c7709831ca42 100644
--- a/dev-python/cftime/cftime-1.6.2.ebuild
+++ b/dev-python/cftime/cftime-1.6.2-r1.ebuild
@@ -26,12 +26,16 @@ RDEPEND="
        ${DEPEND}
 "
 BDEPEND="
-       <dev-python/cython-3[${PYTHON_USEDEP}]
+       >=dev-python/cython-0.29.20[${PYTHON_USEDEP}]
 "
 
 distutils_enable_tests pytest
 
 python_prepare_all() {
+       local PATCHES=(
+               "${FILESDIR}/${P}-cython-3.patch"
+       )
+
        # remove pytest-cov dep
        sed -e "/--cov/d" -i setup.cfg || die
 

diff --git a/dev-python/cftime/files/cftime-1.6.2-cython-3.patch 
b/dev-python/cftime/files/cftime-1.6.2-cython-3.patch
new file mode 100644
index 000000000000..c52ebdb3c84f
--- /dev/null
+++ b/dev-python/cftime/files/cftime-1.6.2-cython-3.patch
@@ -0,0 +1,34 @@
+From 31f782aed3de56300886dd7350f1faff657e14dd Mon Sep 17 00:00:00 2001
+From: Spencer Clark <[email protected]>
+Date: Sat, 29 Jul 2023 09:51:10 -0400
+Subject: [PATCH] Set c_api_binop_methods compiler directive to True
+
+This retains Cython 0.x behavior for arithmetic operators for
+Cython >= 3.0.0.
+---
+ Changelog            | 2 ++
+ pyproject.toml       | 2 +-
+ requirements-dev.txt | 2 +-
+ setup.py             | 9 ++++++++-
+ 4 files changed, 12 insertions(+), 3 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index 006f1a92..360396fa 100644
+--- a/setup.py
++++ b/setup.py
+@@ -16,7 +16,14 @@
+ BASEDIR = os.path.abspath(os.path.dirname(__file__))
+ SRCDIR = os.path.join(BASEDIR,'src')
+ CMDS_NOCYTHONIZE = ['clean','clean_cython','sdist']
+-COMPILER_DIRECTIVES = {}
++COMPILER_DIRECTIVES = {
++    # Cython 3.0.0 changes the default of the c_api_binop_methods directive to
++    # False, resulting in errors in datetime and timedelta arithmetic:
++    # https://github.com/Unidata/cftime/issues/271.  We explicitly set it to
++    # True to retain Cython 0.x behavior for future Cython versions.  This
++    # directive was added in Cython version 0.29.20.
++    "c_api_binop_methods": True
++}
+ DEFINE_MACROS = [("NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION")] 
+ FLAG_COVERAGE = '--cython-coverage'  # custom flag enabling Cython line 
tracing
+ NAME = 'cftime'

Reply via email to