This is an automated email from the git hooks/post-receive script.

logari81 pushed a commit to branch master
in repository getfem.

The following commit(s) were added to refs/heads/master by this push:
     new f8076b95 Default to Python 3 function naming in the C extension 
implementation
f8076b95 is described below

commit f8076b953cbe6e1b4abe22b753427b7b2d6a51e6
Author: Konstantinos Poulios <logar...@gmail.com>
AuthorDate: Tue Oct 17 11:50:37 2023 +0200

    Default to Python 3 function naming in the C extension implementation
---
 interface/src/python/getfem_python.c | 71 ++++++++++++++++++++----------------
 1 file changed, 39 insertions(+), 32 deletions(-)

diff --git a/interface/src/python/getfem_python.c 
b/interface/src/python/getfem_python.c
index 2c67ae29..634eea1b 100644
--- a/interface/src/python/getfem_python.c
+++ b/interface/src/python/getfem_python.c
@@ -34,15 +34,13 @@
 #include "getfem_arch_config.h"
 #include <assert.h>
 
-#if PY_MAJOR_VERSION >= 3
-#define PyString_AsString(o) PyUnicode_AsUTF8(o)
-#define PyString_FromFormat(a,b,c) PyUnicode_FromFormat(a,b,c)
-#define PyString_Check(o) PyUnicode_Check(o)
-#define PyInt_Check(o) PyLong_Check(o)
-#define PyInt_AsLong(o) PyLong_AsLong(o)
-#define PyString_FromString(o) PyUnicode_FromString(o)
-#define PyString_FromStringAndSize(o,l) PyUnicode_FromStringAndSize(o,l)
-#define PyInt_FromLong(o) PyLong_FromLong(o)
+#if PY_MAJOR_VERSION < 3
+#define PyUnicode_AsUTF8(o) PyString_AsString(o)
+#define PyUnicode_FromFormat(a,b,c) PyString_FromFormat(a,b,c)
+#define PyUnicode_Check(o) PyString_Check(o)
+#define PyUnicode_FromString(o) PyString_FromString(o)
+#define PyUnicode_FromStringAndSize(o,l) PyString_FromStringAndSize(o,l)
+#define PyLong_FromLong(o) PyInt_FromLong(o)
 #endif
 
 static PyObject *call_getfem(PyObject *self, PyObject *args);
@@ -63,8 +61,8 @@ typedef struct PyGetfemObject {
 
 static PyObject *
 GetfemObject_name(PyGetfemObject *self) {
-  return PyString_FromFormat("getfem.GetfemObject(classid=%d,objid=%d)",
-                             self->classid, self->objid);
+  return PyUnicode_FromFormat("getfem.GetfemObject(classid=%d,objid=%d)",
+                              self->classid, self->objid);
 }
 
 static int
@@ -338,21 +336,29 @@ PyObject_to_gfi_array(gcollect *gc, PyObject *o)
 #define TGFISTORE1(T,field) data_##T##_##field
 #define TGFISTORE(T,field) TGFISTORE0(T).TGFISTORE1(T,field)
   PyErr_Clear();
-  if (PyString_Check(o)) {
+  if (PyUnicode_Check(o)) {
     //printf("String\n");
     /* for strings, the pointer is shared, no copy */
-    int L = (int)(strlen(PyString_AsString(o)));
-    char *s = PyString_AsString(o);
+    int L = (int)(strlen(PyUnicode_AsUTF8(o)));
+    char *s = PyUnicode_AsUTF8(o);
     gc_ref(gc, o, 0);
 
     t->storage.type = GFI_CHAR;
     t->dim.dim_len = 1; t->dim.dim_val = &TGFISTORE(char,len);
     TGFISTORE(char,len)=L;
     TGFISTORE(char,val)=s;
+#if PY_MAJOR_VERSION < 3
   } else if (PyInt_Check(o) || PyLong_Check(o)) {
+#else
+  } else if (PyLong_Check(o)) {
+#endif
     //printf("Int or Long\n");
     /* usual python integer */
+#if PY_MAJOR_VERSION < 3
     int d = (int)PyInt_AsLong(o);
+#else
+    int d = (int)PyLong_AsLong(o);
+#endif
     if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_OverflowError))
       return (gfi_array *)PyErr_Format(PyExc_OverflowError,
                                        "in getfem interface.");
@@ -464,7 +470,7 @@ PyObject_to_gfi_array(gcollect *gc, PyObject *o)
       default: {
         PyObject *sdtype 
=PyObject_Str((PyObject*)PyArray_DescrFromType(dtype));
         PyErr_Format(PyExc_RuntimeError, "invalid numeric dtype: %s",
-          PyString_AsString(sdtype));
+                     PyUnicode_AsUTF8(sdtype));
         Py_DECREF(sdtype);
         return NULL;
       }
@@ -511,7 +517,7 @@ PyObject_to_gfi_array(gcollect *gc, PyObject *o)
     PyObject *sdtype = PyObject_Str((PyObject*)PyArray_DescrFromType(dtype));
     PyErr_Format(PyExc_RuntimeError,
                  "unhandled argument (type, dtype): (%s, %s)",
-                 PyString_AsString(stype), PyString_AsString(sdtype));
+                 PyUnicode_AsUTF8(stype), PyUnicode_AsUTF8(sdtype));
     Py_DECREF(stype);
     Py_DECREF(sdtype);
     return NULL;
@@ -547,11 +553,11 @@ build_gfi_array_list(gcollect *gc, PyObject *tuple, char 
**pfunction_name,
   if (PyTuple_GET_SIZE(tuple) == 0) {
     PyErr_SetString(PyExc_RuntimeError, "missing function name"); return NULL;
   }
-  if (!PyString_Check(PyTuple_GET_ITEM(tuple,0))) {
+  if (!PyUnicode_Check(PyTuple_GET_ITEM(tuple,0))) {
     PyErr_SetString(PyExc_RuntimeError, "expecting function name as a string");
     return NULL;
   }
-  *pfunction_name = PyString_AsString(PyTuple_GET_ITEM(tuple,0));
+  *pfunction_name = PyUnicode_AsUTF8(PyTuple_GET_ITEM(tuple,0));
   *nb = (int)(PyTuple_GET_SIZE(tuple) - 1);
   if (!(l = gc_alloc(gc, sizeof(gfi_array*) * *nb))) return NULL;
   for (i=0, j = 0; i < *nb; ++i) {
@@ -573,7 +579,8 @@ gfi_array_to_PyObject(gfi_array *t, int in__init__) {
   case GFI_UINT32:
   case GFI_INT32: {
     //printf("GFI_INT32\n");
-    if (t->dim.dim_len == 0) return PyInt_FromLong(TGFISTORE(int32,val)[0]);
+    if (t->dim.dim_len == 0)
+      return PyLong_FromLong(TGFISTORE(int32,val)[0]);
     else {
       npy_intp *dim = PyDimMem_NEW(t->dim.dim_len);
       int i;
@@ -623,7 +630,7 @@ gfi_array_to_PyObject(gfi_array *t, int in__init__) {
   } break;
   case GFI_CHAR: {
     //printf("GFI_CHAR\n");
-    o = PyString_FromStringAndSize(TGFISTORE(char,val),TGFISTORE(char,len));
+    o = PyUnicode_FromStringAndSize(TGFISTORE(char,val),TGFISTORE(char,len));
   } break;
   case GFI_CELL: {
     //printf("GFI_CELL\n");
@@ -775,32 +782,32 @@ getfem_env(PyObject *self, PyObject *args) {
   PyObject* word_out;
 
   if (strcmp(word_in,"project") == 0) {
-    word_out = PyString_FromString("GetFEM");
+    word_out = PyUnicode_FromString("GetFEM");
   } else if (strcmp(word_in,"copyright") == 0) {
-    word_out = PyString_FromString
+    word_out = PyUnicode_FromString
     ("2004-2022 GetFEM project");
   } else if (strcmp(word_in,"authors") == 0) {
-    word_out = PyString_FromString
+    word_out = PyUnicode_FromString
     ("Yves Renard, Julien Pommier, Konstantinos Poulios");
   } else if (strcmp(word_in,"url") == 0) {
-    word_out = PyString_FromString("http://home.gna.org/getfem/";);
+    word_out = PyUnicode_FromString("http://home.gna.org/getfem/";);
   } else if (strcmp(word_in,"license") == 0) {
-    word_out = PyString_FromString("GNU LGPL v3");
+    word_out = PyUnicode_FromString("GNU LGPL v3");
   } else if (strcmp(word_in,"package") == 0) {
-    word_out = PyString_FromString(GETFEM_PACKAGE);
+    word_out = PyUnicode_FromString(GETFEM_PACKAGE);
   } else if (strcmp(word_in,"package_name") == 0) {
-    word_out = PyString_FromString(GETFEM_PACKAGE_NAME);
+    word_out = PyUnicode_FromString(GETFEM_PACKAGE_NAME);
   } else if (strcmp(word_in,"package_string") == 0) {
-    word_out = PyString_FromString(GETFEM_PACKAGE_STRING);
+    word_out = PyUnicode_FromString(GETFEM_PACKAGE_STRING);
   } else if(strcmp(word_in,"package_tarname") == 0) {
-    word_out = PyString_FromString(GETFEM_PACKAGE_TARNAME);
+    word_out = PyUnicode_FromString(GETFEM_PACKAGE_TARNAME);
   } else if(strcmp(word_in,"package_version") == 0 ||
             strcmp(word_in,"release") == 0) {
-    word_out = PyString_FromString(GETFEM_PACKAGE_VERSION);
+    word_out = PyUnicode_FromString(GETFEM_PACKAGE_VERSION);
   } else if(strcmp(word_in,"version") == 0) {
-    word_out = PyString_FromString(GETFEM_VERSION);
+    word_out = PyUnicode_FromString(GETFEM_VERSION);
   } else {
-    word_out = PyString_FromString("");
+    word_out = PyUnicode_FromString("");
   }
 
   Py_INCREF(word_out);

Reply via email to