From 2df13807cb8f1725225c092e3052cde7c452a58b Mon Sep 17 00:00:00 2001
From: cmoineau <cyril.moineau@cea.fr>
Date: Thu, 11 Jan 2024 13:35:48 +0000
Subject: [PATCH] Add support for int64 with Numpy interrop.

---
 python_binding/data/pybind_Tensor.cpp | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/python_binding/data/pybind_Tensor.cpp b/python_binding/data/pybind_Tensor.cpp
index fa109a9af..1b460868e 100644
--- a/python_binding/data/pybind_Tensor.cpp
+++ b/python_binding/data/pybind_Tensor.cpp
@@ -96,6 +96,8 @@ void init_Tensor(py::module& m){
                 return py::cast(b.get<float>(idx));
             case DataType::Int32:
                 return py::cast(b.get<int>(idx));
+            case DataType::Int64:
+                return py::cast(b.get<long>(idx));
             default:
                 return py::none();
         }
@@ -109,6 +111,8 @@ void init_Tensor(py::module& m){
                 return py::cast(b.get<float>(coordIdx));
             case DataType::Int32:
                 return py::cast(b.get<int>(coordIdx));
+            case DataType::Int64:
+                return py::cast(b.get<long>(coordIdx));
             default:
                 return py::none();
         }
@@ -139,6 +143,9 @@ void init_Tensor(py::module& m){
             case DataType::Int32:
                 dataFormatDescriptor = py::format_descriptor<int>::format();
                 break;
+            case DataType::Int64:
+                dataFormatDescriptor = py::format_descriptor<long>::format();
+                break;
             default:
                 throw py::value_error("Unsupported data format");
         }
@@ -156,6 +163,7 @@ void init_Tensor(py::module& m){
     // TODO : If the ctor with the right data type does not exist, pybind will always convert the data to INT !
     // Need to find a way to avoid this !
     addCtor<int>(pyClassTensor);
+    addCtor<long>(pyClassTensor);
     addCtor<float>(pyClassTensor);
 // #if SIZE_MAX != 0xFFFFFFFF
     addCtor<double>(pyClassTensor);
-- 
GitLab