The C++ py_func_new function assumes it's being passed a 1-dimensional array, but numpy generates 0-dimensional arrays for scalar inputs to array / asarray, e.g. when using Func.Sin.