blob: c52ebdb3c84f4b22ebd6d1913483c23813b8c26d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
From 31f782aed3de56300886dd7350f1faff657e14dd Mon Sep 17 00:00:00 2001
From: Spencer Clark <spencerkclark@gmail.com>
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'
|