From edbf0335f5d5dfd4d2e8e6619dc09ef60aba376f Mon Sep 17 00:00:00 2001
From: JM Etancelin <jean-matthieu.etancelin@univ-pau.fr>
Date: Thu, 18 Mar 2021 10:31:18 +0100
Subject: [PATCH] Fix ccode for sympy<1.7 compatibility

---
 hysop/backend/device/codegen/symbolic/expr.py | 15 ++++++++++-----
 hysop/backend/device/opencl/opencl_printer.py | 10 +++++++---
 hysop/tools/field_utils.py                    |  6 +++++-
 3 files changed, 22 insertions(+), 9 deletions(-)

diff --git a/hysop/backend/device/codegen/symbolic/expr.py b/hysop/backend/device/codegen/symbolic/expr.py
index acea3e347..ce7385f2f 100644
--- a/hysop/backend/device/codegen/symbolic/expr.py
+++ b/hysop/backend/device/codegen/symbolic/expr.py
@@ -1,14 +1,19 @@
+from hysop.backend.device.opencl.opencl_types import basetype as cl_basetype, \
+    components as cl_components, \
+    vtype as cl_vtype
+from hysop.backend.device.codegen.base.variables import ctype_to_dtype
 import sympy as sm
 from hysop.symbolic import Symbol, Expr
 from hysop.symbolic.array import OpenClSymbolicBuffer, OpenClSymbolicNdBuffer
 from hysop.tools.types import check_instance, first_not_None, to_tuple, to_list
 from hysop.tools.numerics import is_fp, is_signed, is_unsigned, is_integer, is_complex
-from sympy.printing.c import C99CodePrinter
 
-from hysop.backend.device.codegen.base.variables import ctype_to_dtype
-from hysop.backend.device.opencl.opencl_types import basetype as cl_basetype, \
-    components as cl_components, \
-    vtype as cl_vtype
+from packaging import version
+if version.parse(sp.__version__) > version.parse("1.7"):
+    from sympy.printing.c import C99CodePrinter
+else:
+    from sympy.printing.ccode import C99CodePrinter
+
 
 InstructionTermination = ''
 
diff --git a/hysop/backend/device/opencl/opencl_printer.py b/hysop/backend/device/opencl/opencl_printer.py
index 17e42a0fa..7624591e5 100644
--- a/hysop/backend/device/opencl/opencl_printer.py
+++ b/hysop/backend/device/opencl/opencl_printer.py
@@ -1,7 +1,11 @@
-import sympy as sm
-from sympy.printing.c import C99CodePrinter
-from hysop.tools.types import check_instance
 from hysop.backend.device.opencl.opencl_types import OpenClTypeGen
+from hysop.tools.types import check_instance
+import sympy as sm
+from packaging import version
+if version.parse(sp.__version__) > version.parse("1.7"):
+    from sympy.printing.c import C99CodePrinter
+else:
+    from sympy.printing.ccode import C99CodePrinter
 
 # /!\ TODO complete known_functions list with OpenCL builtins
 # - keys are sympy function names (beware to capital letters)
diff --git a/hysop/tools/field_utils.py b/hysop/tools/field_utils.py
index 7b7b008be..bc4c7c52a 100644
--- a/hysop/tools/field_utils.py
+++ b/hysop/tools/field_utils.py
@@ -5,8 +5,12 @@ from hysop.tools.sympy_utils import nabla, partial, subscript, subscripts, \
     exponent, exponents, xsymbol, get_derivative_variables
 
 from sympy.printing.str import StrPrinter, StrReprPrinter
-from sympy.printing.c import C99CodePrinter
 from sympy.printing.latex import LatexPrinter
+from packaging import version
+if version.parse(sp.__version__) > version.parse("1.7"):
+    from sympy.printing.c import C99CodePrinter
+else:
+    from sympy.printing.ccode import C99CodePrinter
 
 
 class BasePrinter(object):
-- 
GitLab