You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@arrow.apache.org by Cedric Yau <ce...@gmail.com> on 2022/05/29 20:44:43 UTC
[Python/Cython] Object of type 'CResult[shared_ptr[CScalar]]' has no attribute 'ValueOrDie'
I am trying to add a second function to the example at (
https://arrow.apache.org/docs/python/integration/extending.html), and am
getting a compilation error message. I can't tell if I'm trying to access
ValueOrDie() improperly or if I might be missing a modification to setup.py
from the example.
The function is as follows:
def print_array(obj):
# Just an example function accessing both the pyarrow Cython API
# and the Arrow C++ API
cdef shared_ptr[CArray] arr = pyarrow_unwrap_array(obj)
if arr.get() == NULL:
raise TypeError("not an array")
cdef arr_len = arr.get().length()
cdef int i
cdef CResult[shared_ptr[CScalar]] r
for i in range(arr_len):
r = arr.get().GetScalar(i)
if r.ok():
print(i, r.ValueOrDie())
And produces an error on compilation:
Error compiling Cython file:
------------------------------------------------------------
...
cdef int i
cdef CResult[shared_ptr[CScalar]] r
for i in range(arr_len):
r = arr.get().GetScalar(i)
if r.ok():
print(i, r.ValueOrDie())
^
------------------------------------------------------------
example.pyx:26:22: Object of type 'CResult[shared_ptr[CScalar]]' has no
attribute 'ValueOrDie'
Traceback (most recent call last):
File "/home/ubuntu/repos/LbdInternal/PyarrowCython/setup.py", line 12, in
<module>
ext_modules = cythonize("example.pyx")
File
"/home/ubuntu/miniconda3/envs/lbdenv/lib/python3.10/site-packages/Cython/Build/Dependencies.py",
line 1127, in cythonize
cythonize_one(*args)
File
"/home/ubuntu/miniconda3/envs/lbdenv/lib/python3.10/site-packages/Cython/Build/Dependencies.py",
line 1250, in cythonize_one
raise CompileError(None, pyx_file)
Cython.Compiler.Errors.CompileError: example.pyx
Environment is as follows:
Ubuntu 20.04/x86
Python 3.10.4
cython 0.29.30
pyarrow 8.0.0
Any help would be appreciated.
Thanks,
Cedric
Re: [Python/Cython] Object of type 'CResult[shared_ptr[CScalar]]' has no attribute 'ValueOrDie'
Posted by Cedric Yau <ce...@gmail.com>.
Cool. Thanks Niranda. That worked. :)
On Sun, May 29, 2022 at 3:25 PM Niranda Perera <ni...@gmail.com>
wrote:
> Hi Cedric,
>
> I think you can use this `GetResultValue(...)`
>
> https://github.com/apache/arrow/blob/master/python/pyarrow/includes/common.pxd#L131
>
>
>
>
> On Sun, May 29, 2022 at 4:45 PM Cedric Yau <ce...@gmail.com> wrote:
>
>> I am trying to add a second function to the example at (
>> https://arrow.apache.org/docs/python/integration/extending.html), and am
>> getting a compilation error message. I can't tell if I'm trying to access
>> ValueOrDie() improperly or if I might be missing a modification to setup.py
>> from the example.
>>
>> The function is as follows:
>>
>> def print_array(obj):
>> # Just an example function accessing both the pyarrow Cython API
>> # and the Arrow C++ API
>> cdef shared_ptr[CArray] arr = pyarrow_unwrap_array(obj)
>> if arr.get() == NULL:
>> raise TypeError("not an array")
>> cdef arr_len = arr.get().length()
>> cdef int i
>> cdef CResult[shared_ptr[CScalar]] r
>> for i in range(arr_len):
>> r = arr.get().GetScalar(i)
>> if r.ok():
>> print(i, r.ValueOrDie())
>>
>> And produces an error on compilation:
>>
>> Error compiling Cython file:
>> ------------------------------------------------------------
>> ...
>> cdef int i
>> cdef CResult[shared_ptr[CScalar]] r
>> for i in range(arr_len):
>> r = arr.get().GetScalar(i)
>> if r.ok():
>> print(i, r.ValueOrDie())
>> ^
>> ------------------------------------------------------------
>>
>> example.pyx:26:22: Object of type 'CResult[shared_ptr[CScalar]]' has no
>> attribute 'ValueOrDie'
>> Traceback (most recent call last):
>> File "/home/ubuntu/repos/LbdInternal/PyarrowCython/setup.py", line 12,
>> in <module>
>> ext_modules = cythonize("example.pyx")
>> File
>> "/home/ubuntu/miniconda3/envs/lbdenv/lib/python3.10/site-packages/Cython/Build/Dependencies.py",
>> line 1127, in cythonize
>> cythonize_one(*args)
>> File
>> "/home/ubuntu/miniconda3/envs/lbdenv/lib/python3.10/site-packages/Cython/Build/Dependencies.py",
>> line 1250, in cythonize_one
>> raise CompileError(None, pyx_file)
>> Cython.Compiler.Errors.CompileError: example.pyx
>>
>> Environment is as follows:
>>
>> Ubuntu 20.04/x86
>> Python 3.10.4
>> cython 0.29.30
>> pyarrow 8.0.0
>>
>> Any help would be appreciated.
>>
>> Thanks,
>> Cedric
>>
>>
>
> --
> Niranda Perera
> https://niranda.dev/
> @n1r44 <https://twitter.com/N1R44>
>
>
--
Cedric Yau
cedricyau@gmail.com
Re: [Python/Cython] Object of type 'CResult[shared_ptr[CScalar]]' has no attribute 'ValueOrDie'
Posted by Niranda Perera <ni...@gmail.com>.
Hi Cedric,
I think you can use this `GetResultValue(...)`
https://github.com/apache/arrow/blob/master/python/pyarrow/includes/common.pxd#L131
On Sun, May 29, 2022 at 4:45 PM Cedric Yau <ce...@gmail.com> wrote:
> I am trying to add a second function to the example at (
> https://arrow.apache.org/docs/python/integration/extending.html), and am
> getting a compilation error message. I can't tell if I'm trying to access
> ValueOrDie() improperly or if I might be missing a modification to setup.py
> from the example.
>
> The function is as follows:
>
> def print_array(obj):
> # Just an example function accessing both the pyarrow Cython API
> # and the Arrow C++ API
> cdef shared_ptr[CArray] arr = pyarrow_unwrap_array(obj)
> if arr.get() == NULL:
> raise TypeError("not an array")
> cdef arr_len = arr.get().length()
> cdef int i
> cdef CResult[shared_ptr[CScalar]] r
> for i in range(arr_len):
> r = arr.get().GetScalar(i)
> if r.ok():
> print(i, r.ValueOrDie())
>
> And produces an error on compilation:
>
> Error compiling Cython file:
> ------------------------------------------------------------
> ...
> cdef int i
> cdef CResult[shared_ptr[CScalar]] r
> for i in range(arr_len):
> r = arr.get().GetScalar(i)
> if r.ok():
> print(i, r.ValueOrDie())
> ^
> ------------------------------------------------------------
>
> example.pyx:26:22: Object of type 'CResult[shared_ptr[CScalar]]' has no
> attribute 'ValueOrDie'
> Traceback (most recent call last):
> File "/home/ubuntu/repos/LbdInternal/PyarrowCython/setup.py", line 12,
> in <module>
> ext_modules = cythonize("example.pyx")
> File
> "/home/ubuntu/miniconda3/envs/lbdenv/lib/python3.10/site-packages/Cython/Build/Dependencies.py",
> line 1127, in cythonize
> cythonize_one(*args)
> File
> "/home/ubuntu/miniconda3/envs/lbdenv/lib/python3.10/site-packages/Cython/Build/Dependencies.py",
> line 1250, in cythonize_one
> raise CompileError(None, pyx_file)
> Cython.Compiler.Errors.CompileError: example.pyx
>
> Environment is as follows:
>
> Ubuntu 20.04/x86
> Python 3.10.4
> cython 0.29.30
> pyarrow 8.0.0
>
> Any help would be appreciated.
>
> Thanks,
> Cedric
>
>
--
Niranda Perera
https://niranda.dev/
@n1r44 <https://twitter.com/N1R44>