Re: PyArrow on PyPy: PyDateTime_CAPI question (getting cpyext to work) in c++

Matti Picus <[email protected]>
Newsgroups gmane.comp.python.pypy
Message-ID <[email protected]>
I implemented the easy part (without allocating and copying
non-contiguous data to a new contiguous buffer) of
PyMemoryView_GetContiguous, which will make it into the upcoming
release. You can try it out from tonight's nightlies

Matti

On 9/9/20 3:08 PM, Niklas B wrote:

Thank you, I managed to get it built using an older version
(instructions and whl file for those who are interested is
available at https://github.com/bivald/pyarrow-on-pypy3 )

I have setup a monthly 50USD recurring donation
(under “Enplore”)

On 9 Sep 2020, at 00:06, Matti Picus <[email protected] >
wrote:

Have you tried the documented interface https://docs.python.org/3.6/c-api/datetime.html

which is to dispense with all that code and use

#import <datetime.h>

|PyDateTime_IMPORT|

which does the right thing on each implementation
(CPython - does the PyCapsule_Import; PyPy - calls
_PyDateTime_Import() )

A donation to https://opencollective.com/pypy
is always appreciated.

Matti

On 9/9/20 12:12 AM, Niklas B wrote:

Hi,

I’ve been trying to build data science library pyarrow
(the arrow library, for parquet files mainly in my
case) for PyPy. I’ve gotten it working for pypy2 a few
years ago, and is now trying for PyPy3. Overall I get
it to build and produce a pyarrow wheel file by
following the arrow instructions. So far so good. I
expect a massive part of pyarrow not to work, but for
my case I really only need `pandas.read_parquet`.
However I am stuck trying to figure out how to use the
pyppy cpyext for Datetime.

The code I’m trying to build is:

https://github.com/apache/arrow/blob/maint-0.15.x/cpp/src/arrow/python/datetime.cc#L37 (older
branch, better luck in building it)

Which is basically:

PyDateTime_CAPI* datetime_api = nullptr;

void
InitDatetime() {

PyAcquireGIL
lock;

datetime_api
=

reinterpret_cast<PyDateTime_CAPI*>(PyCapsule_Import(PyDateTime_CAPSULE_NAME,
0));

if
(datetime_api == nullptr) {

Py_FatalError("Could
not import datetime C API");

}

}

I’ve tried about a million different ways, but I’m way
outside my comfort zone :) I can get it to build by
doing:

datetime_api = PyDateTimeAPI;

And also:

datetime_api =
reinterpret_cast<PyDateTime_CAPI*>(PyCapsule_Import("datetime",
0));

And:

datetime_api =
reinterpret_cast<PyDateTime_CAPI*>(PyCapsule_Import("datetime.datetime_CAPI",
0));

But both of these trigger the fatal error in the code
after (“could not import date time C API” or
"PyCapsule_Import "datetime" is not valid” or module
'datetime' has no attribute 'datetime_CAPI')

I will be posting reproducible builds once I get them
working.

I am more than happy to pay 300USD to anyone (or to
PyPy) who can help me getting this to run:

Import pandas
d = pandas.read_parquet(‘file.parq’)

Obviously that’s not enough money to cover things but
at least it’s something :) obviously all results and
builds will be public

Regards,
Niklas

_______________________________________________
pypy-dev mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-dev

_______________________________________________
pypy-dev mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-dev

_______________________________________________
pypy-dev mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-dev
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.