Yep, I can confirm your patch builds and works for parquet the very least (https://github.com/bivald/pyarrow-on-pypy3/tree/feature/latest-pypy-latest-pyarrow <https://github.com/bivald/pyarrow-on-pypy3/tree/feature/latest-pypy-latest-pyarrow>)
I would say it works surprisingly well for parquet: ======================================================================================= test session starts ======================================================================================== platform linux -- Python 3.6.9[pypy-7.3.3-alpha], pytest-6.0.2, py-1.9.0, pluggy-0.13.1 rootdir: /arrow/python, configfile: setup.cfg plugins: hypothesis-5.35.1 collected 286 items pyarrow2/tests/test_parquet.py .s.s.s.s..s.s.s.s.ss.s.s.s.s.s.s..s.s.s.s.s.s.s.s.s.s..s.s..s.s.................................s.s...........s..s.s.sxs.s.s.sxs.sxsss....s.s.s.s....s.s.s.s. [ 54%] s.sxsxs.s...s.s.s.s.s.s..s.ssssssss.s.s.s.s.s.s.s.sx.s.s.s....s..s.s..s.s.s..s.s.s.s..s.s...ss..s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.sss [100%] =========================================================================== 164 passed, 116 skipped, 6 xfailed in 43.69s =========================================================================== Overall the entire test suite: ====================================================================================================== short test summary info ====================================================================================================== FAILED pyarrow2/tests/test_array.py::test_to_pandas_zero_copy - AttributeError: module 'sys' has no attribute 'getrefcount' FAILED pyarrow2/tests/test_array.py::test_array_slice - SystemError: Function returned an error result without setting an exception FAILED pyarrow2/tests/test_array.py::test_array_ref_to_ndarray_base - AttributeError: module 'sys' has no attribute 'getrefcount' FAILED pyarrow2/tests/test_array.py::test_array_conversions_no_sentinel_values - AttributeError: module 'sys' has no attribute 'getrefcount' FAILED pyarrow2/tests/test_array.py::test_nbytes_sizeof - TypeError: getsizeof(...) FAILED pyarrow2/tests/test_cffi.py::test_export_import_array - assert 1528 == 896 FAILED pyarrow2/tests/test_cffi.py::test_export_import_batch - assert 1048 == 128 FAILED pyarrow2/tests/test_convert_builtin.py::test_garbage_collection - assert 128 == 766912 FAILED pyarrow2/tests/test_convert_builtin.py::test_sequence_bytes - NotImplementedError: creating contiguous readonly buffer from non-contiguous not implemented yet FAILED pyarrow2/tests/test_convert_builtin.py::test_map_from_dicts - AssertionError: Regex pattern 'integer is required' does not match 'expected integer, got str object'. FAILED pyarrow2/tests/test_csv.py::test_read_options - Failed: DID NOT RAISE <class 'AttributeError'> FAILED pyarrow2/tests/test_csv.py::test_parse_options - Failed: DID NOT RAISE <class 'AttributeError'> FAILED pyarrow2/tests/test_csv.py::test_convert_options - Failed: DID NOT RAISE <class 'AttributeError'> FAILED pyarrow2/tests/test_csv.py::TestSerialStreamingCSVRead::test_batch_lifetime - AssertionError: assert 1464704 == 1464576 FAILED pyarrow2/tests/test_cython.py::test_cython_api - subprocess.CalledProcessError: Command '['/pyarrow/bin/pypy3', 'setup.py', 'build_ext', '--inplace']' returned non-zero exit status 1. FAILED pyarrow2/tests/test_extension_type.py::test_ext_type__lifetime - AssertionError: assert UuidType(extension<arrow.py_extension_type>) is None FAILED pyarrow2/tests/test_extension_type.py::test_uuid_type_pickle - AssertionError: assert UuidType(extension<arrow.py_extension_type>) is None FAILED pyarrow2/tests/test_extension_type.py::test_ext_array_lifetime - AssertionError: assert ParamExtType(extension<arrow.py_extension_type>) is None FAILED pyarrow2/tests/test_fs.py::test_py_filesystem_lifetime - AssertionError: assert <pyarrow2.tests.test_fs.DummyHandler object at 0x0000000003e696a8> is None FAILED pyarrow2/tests/test_pandas.py::test_to_pandas_deduplicate_integers_as_objects - assert 100 == 991 FAILED pyarrow2/tests/test_pandas.py::test_array_uses_memory_pool - assert 103552 == 465152 FAILED pyarrow2/tests/test_pandas.py::test_to_pandas_self_destruct - assert 6112064 == 4112064 FAILED pyarrow2/tests/test_pandas.py::test_table_uses_memory_pool - assert 6249408 == 6112064 FAILED pyarrow2/tests/test_pandas.py::test_object_leak_in_numpy_array - AttributeError: module 'sys' has no attribute 'getrefcount' FAILED pyarrow2/tests/test_pandas.py::test_object_leak_in_dataframe - AttributeError: module 'sys' has no attribute 'getrefcount' FAILED pyarrow2/tests/test_schema.py::test_schema_sizeof - TypeError: getsizeof(...) FAILED pyarrow2/tests/test_sparse_tensor.py::test_sparse_coo_tensor_base_object - AttributeError: module 'sys' has no attribute 'getrefcount' FAILED pyarrow2/tests/test_sparse_tensor.py::test_sparse_csr_matrix_base_object - AttributeError: module 'sys' has no attribute 'getrefcount' FAILED pyarrow2/tests/test_sparse_tensor.py::test_sparse_csf_tensor_base_object - AttributeError: module 'sys' has no attribute 'getrefcount' FAILED pyarrow2/tests/test_table.py::test_chunked_array_basics - TypeError: getsizeof(...) FAILED pyarrow2/tests/test_table.py::test_recordbatch_basics - TypeError: getsizeof(...) FAILED pyarrow2/tests/test_table.py::test_table_basics - TypeError: getsizeof(...) FAILED pyarrow2/tests/test_tensor.py::test_tensor_base_object - AttributeError: module 'sys' has no attribute 'getrefcount' ========================================================================= 33 failed, 2620 passed, 532 skipped, 13 xfailed, 10 warnings in 104.02s (0:01:44) ========================================================================= Segfaults on a couple of the tests, but a lot passes as well > On 11 Sep 2020, at 14:18, Matti Picus <matti.pi...@gmail.com> wrote: > > Thse changes seems to compile for me, but I did not run the tests. > > https://gist.github.com/mattip/c9c8398b58721ae5893dc8134c353f28 > > Matti > > > On 9/11/20 1:01 PM, Niklas B wrote: >> The PyMemoryView_GetContiguous errors are all gone - good work! >> >> It didn’t really like my butchering of datetime.cc <http://datetime.cc> >> https://github.com/apache/arrow/blob/apache-arrow-1.0.1/cpp/src/arrow/python/datetime.cc#L37 >> >> Added: >> #include <datetime.h> >> >> And >> PyDateTime_IMPORT >> >> >> >> Then changed: >> datetime_api = >> >> >> reinterpret_cast<PyDateTime_CAPI*>(PyCapsule_Import(PyDateTime_CAPSULE_NAME, >> 0)); >> >> >> To: >> >> datetime_api = PyDateTimeAPI; >> >> They do some PyDateTimeAPI voodoo at >> https://github.com/apache/arrow/blob/apache-arrow-1.0.1/cpp/src/arrow/python/datetime.h#L29 >> which might be a culprit as well. >> >> >> >> >> >> >> >> >> >> Gives the following outputs: >> /arrow/cpp/src/arrow/python/datetime.h:34: warning: "PyDateTimeAPI" redefined >> #define PyDateTimeAPI ::arrow::py::internal::datetime_api >> >> In file included from /opt/pypy/include/Python.h:144, >> from /arrow/cpp/src/arrow/python/platform.h:23, >> from /arrow/cpp/src/arrow/python/pyarrow.h:20, >> from /arrow/cpp/src/arrow/python/common.h:24, >> from /arrow/cpp/src/arrow/python/datetime.cc:24 >> <http://datetime.cc:24>: >> /opt/pypy/include/pypy_decl.h:1121: note: this is the location of the >> previous definition >> #define PyDateTimeAPI PyPyDateTimeAPI >> >> In file included from /opt/pypy/include/datetime.h:7, >> from /arrow/cpp/src/arrow/python/datetime.cc:22 >> <http://datetime.cc:22>: >> /opt/pypy/include/cpyext_datetime.h:4:5: error: ‘PyTypeObject’ does not name >> a type; did you mean ‘PyType_Check’? >> PyTypeObject *DateType; >> ^~~~~~~~~~~~ >> PyType_Check >> /opt/pypy/include/cpyext_datetime.h:5:5: error: ‘PyTypeObject’ does not name >> a type; did you mean ‘PyType_Check’? >> PyTypeObject *DateTimeType; >> ^~~~~~~~~~~~ >> PyType_Check >> /opt/pypy/include/cpyext_datetime.h:6:5: error: ‘PyTypeObject’ does not name >> a type; did you mean ‘PyType_Check’? >> PyTypeObject *TimeType; >> ^~~~~~~~~~~~ >> PyType_Check >> /opt/pypy/include/cpyext_datetime.h:7:5: error: ‘PyTypeObject’ does not name >> a type; did you mean ‘PyType_Check’? >> PyTypeObject *DeltaType; >> ^~~~~~~~~~~~ >> PyType_Check >> /opt/pypy/include/cpyext_datetime.h:8:5: error: ‘PyTypeObject’ does not name >> a type; did you mean ‘PyType_Check’? >> PyTypeObject *TZInfoType; >> ^~~~~~~~~~~~ >> PyType_Check >> /opt/pypy/include/cpyext_datetime.h:11:5: error: ‘PyObject’ does not name a >> type; did you mean ‘PyObject_New’? >> PyObject *(*Date_FromDate)(int, int, int, PyTypeObject*); >> ^~~~~~~~ >> PyObject_New >> /opt/pypy/include/cpyext_datetime.h:12:5: error: ‘PyObject’ does not name a >> type; did you mean ‘PyObject_New’? >> PyObject *(*DateTime_FromDateAndTime)(int, int, int, int, int, int, int, >> ^~~~~~~~ >> PyObject_New >> /opt/pypy/include/cpyext_datetime.h:14:5: error: ‘PyObject’ does not name a >> type; did you mean ‘PyObject_New’? >> PyObject *(*Time_FromTime)(int, int, int, int, PyObject*, >> PyTypeObject*); >> ^~~~~~~~ >> PyObject_New >> /opt/pypy/include/cpyext_datetime.h:15:5: error: ‘PyObject’ does not name a >> type; did you mean ‘PyObject_New’? >> PyObject *(*Delta_FromDelta)(int, int, int, int, PyTypeObject*); >> ^~~~~~~~ >> PyObject_New >> /opt/pypy/include/cpyext_datetime.h:18:5: error: ‘PyObject’ does not name a >> type; did you mean ‘PyObject_New’? >> PyObject *(*DateTime_FromTimestamp)(PyObject*, PyObject*, PyObject*); >> ^~~~~~~~ >> PyObject_New >> /opt/pypy/include/cpyext_datetime.h:19:5: error: ‘PyObject’ does not name a >> type; did you mean ‘PyObject_New’? >> PyObject *(*Date_FromTimestamp)(PyObject*, PyObject*); >> ^~~~~~~~ >> PyObject_New >> /opt/pypy/include/cpyext_datetime.h:24:5: error: ‘PyObject_HEAD’ does not >> name a type >> PyObject_HEAD >> ^~~~~~~~~~~~~ >> /opt/pypy/include/cpyext_datetime.h:24:5: note: the macro ‘PyObject_HEAD’ >> had not yet been defined >> In file included from /opt/pypy/include/object.h:10, >> from /opt/pypy/include/Python.h:79, >> from /arrow/cpp/src/arrow/python/platform.h:23, >> from /arrow/cpp/src/arrow/python/pyarrow.h:20, >> from /arrow/cpp/src/arrow/python/common.h:24, >> from /arrow/cpp/src/arrow/python/datetime.cc:24 >> <http://datetime.cc:24>: >> /opt/pypy/include/cpyext_object.h:5: note: it was later defined here >> #define PyObject_HEAD \ >> >> In file included from /opt/pypy/include/datetime.h:7, >> from /arrow/cpp/src/arrow/python/datetime.cc:22 >> <http://datetime.cc:22>: >> /opt/pypy/include/cpyext_datetime.h:35:5: error: ‘PyObject_HEAD’ does not >> name a type >> PyObject_HEAD >> ^~~~~~~~~~~~~ >> /opt/pypy/include/cpyext_datetime.h:35:5: note: the macro ‘PyObject_HEAD’ >> had not yet been defined >> In file included from /opt/pypy/include/object.h:10, >> from /opt/pypy/include/Python.h:79, >> from /arrow/cpp/src/arrow/python/platform.h:23, >> from /arrow/cpp/src/arrow/python/pyarrow.h:20, >> from /arrow/cpp/src/arrow/python/common.h:24, >> from /arrow/cpp/src/arrow/python/datetime.cc:24 >> <http://datetime.cc:24>: >> /opt/pypy/include/cpyext_object.h:5: note: it was later defined here >> #define PyObject_HEAD \ >> >> In file included from /opt/pypy/include/datetime.h:7, >> from /arrow/cpp/src/arrow/python/datetime.cc:22 >> <http://datetime.cc:22>: >> /opt/pypy/include/cpyext_datetime.h:37:5: error: ‘PyObject’ does not name a >> type; did you mean ‘PyObject_New’? >> PyObject *tzinfo; >> ^~~~~~~~ >> PyObject_New >> /opt/pypy/include/cpyext_datetime.h:42:5: error: ‘PyObject_HEAD’ does not >> name a type >> PyObject_HEAD >> ^~~~~~~~~~~~~ >> /opt/pypy/include/cpyext_datetime.h:42:5: note: the macro ‘PyObject_HEAD’ >> had not yet been defined >> In file included from /opt/pypy/include/object.h:10, >> from /opt/pypy/include/Python.h:79, >> from /arrow/cpp/src/arrow/python/platform.h:23, >> from /arrow/cpp/src/arrow/python/pyarrow.h:20, >> from /arrow/cpp/src/arrow/python/common.h:24, >> from /arrow/cpp/src/arrow/python/datetime.cc:24 >> <http://datetime.cc:24>: >> /opt/pypy/include/cpyext_object.h:5: note: it was later defined here >> #define PyObject_HEAD \ >> >> In file included from /opt/pypy/include/datetime.h:7, >> from /arrow/cpp/src/arrow/python/datetime.cc:22 >> <http://datetime.cc:22>: >> /opt/pypy/include/cpyext_datetime.h:44:5: error: ‘PyObject’ does not name a >> type; did you mean ‘PyObject_New’? >> PyObject *tzinfo; >> ^~~~~~~~ >> PyObject_New >> /opt/pypy/include/cpyext_datetime.h:49:5: error: ‘PyObject_HEAD’ does not >> name a type >> PyObject_HEAD >> ^~~~~~~~~~~~~ >> /opt/pypy/include/cpyext_datetime.h:49:5: note: the macro ‘PyObject_HEAD’ >> had not yet been defined >> In file included from /opt/pypy/include/object.h:10, >> from /opt/pypy/include/Python.h:79, >> from /arrow/cpp/src/arrow/python/platform.h:23, >> from /arrow/cpp/src/arrow/python/pyarrow.h:20, >> from /arrow/cpp/src/arrow/python/common.h:24, >> from /arrow/cpp/src/arrow/python/datetime.cc:24 >> <http://datetime.cc:24>: >> /opt/pypy/include/cpyext_object.h:5: note: it was later defined here >> #define PyObject_HEAD \ >> >> In file included from /opt/pypy/include/datetime.h:7, >> from /arrow/cpp/src/arrow/python/datetime.cc:22 >> <http://datetime.cc:22>: >> /opt/pypy/include/cpyext_datetime.h:54:5: error: ‘PyObject_HEAD’ does not >> name a type >> PyObject_HEAD >> ^~~~~~~~~~~~~ >> /opt/pypy/include/cpyext_datetime.h:54:5: note: the macro ‘PyObject_HEAD’ >> had not yet been defined >> In file included from /opt/pypy/include/object.h:10, >> from /opt/pypy/include/Python.h:79, >> from /arrow/cpp/src/arrow/python/platform.h:23, >> from /arrow/cpp/src/arrow/python/pyarrow.h:20, >> from /arrow/cpp/src/arrow/python/common.h:24, >> from /arrow/cpp/src/arrow/python/datetime.cc:24 >> <http://datetime.cc:24>: >> /opt/pypy/include/cpyext_object.h:5: note: it was later defined here >> #define PyObject_HEAD \ >> >> In file included from /arrow/cpp/src/arrow/python/datetime.cc:22 >> <http://datetime.cc:22>: >> /opt/pypy/include/datetime.h:9:30: error: expected constructor, destructor, >> or type conversion before ‘PyDateTimeAPI’ >> PyAPI_DATA(PyDateTime_CAPI*) PyDateTimeAPI; >> ^~~~~~~~~~~~~ >> /arrow/cpp/src/arrow/python/datetime.cc:37 <http://datetime.cc:37>:1: error: >> expected ‘)’ before ‘=’ token >> PyDateTime_IMPORT >> ^~~~~~~~~~~~~~~~~ >> /arrow/cpp/src/arrow/python/datetime.cc <http://datetime.cc>: In function >> ‘arrow::Status arrow::py::internal::PyTime_from_int(int64_t, >> arrow::TimeUnit::type, PyObject**)’: >> /arrow/cpp/src/arrow/python/datetime.cc:237 <http://datetime.cc:237>:10: >> error: ‘struct PyDateTime_CAPI’ has no member named ‘Time_FromTime’ >> *out = PyTime_FromTime(static_cast<int32_t>(hour), >> static_cast<int32_t>(minute), >> ^~~~~~~~~~~~~~~ >> /arrow/cpp/src/arrow/python/datetime.cc:237 <http://datetime.cc:237>:10: >> error: ‘struct PyDateTime_CAPI’ has no member named ‘TimeType’ >> *out = PyTime_FromTime(static_cast<int32_t>(hour), >> static_cast<int32_t>(minute), >> ^~~~~~~~~~~~~~~ >> /arrow/cpp/src/arrow/python/datetime.cc <http://datetime.cc>: In function >> ‘arrow::Status arrow::py::internal::PyDate_from_int(int64_t, >> arrow::DateUnit, PyObject**)’: >> /arrow/cpp/src/arrow/python/datetime.cc:245 <http://datetime.cc:245>:10: >> error: ‘struct PyDateTime_CAPI’ has no member named ‘Date_FromDate’ >> *out = PyDate_FromDate(static_cast<int32_t>(year), >> static_cast<int32_t>(month), >> ^~~~~~~~~~~~~~~ >> /arrow/cpp/src/arrow/python/datetime.cc:245 <http://datetime.cc:245>:10: >> error: ‘struct PyDateTime_CAPI’ has no member named ‘DateType’ >> *out = PyDate_FromDate(static_cast<int32_t>(year), >> static_cast<int32_t>(month), >> ^~~~~~~~~~~~~~~ >> /arrow/cpp/src/arrow/python/datetime.cc <http://datetime.cc>: In function >> ‘arrow::Status arrow::py::internal::PyDateTime_from_int(int64_t, >> arrow::TimeUnit::type, PyObject**)’: >> /arrow/cpp/src/arrow/python/datetime.cc:257 <http://datetime.cc:257>:10: >> error: ‘struct PyDateTime_CAPI’ has no member named >> ‘DateTime_FromDateAndTime’ >> *out = PyDateTime_FromDateAndTime( >> ^~~~~~~~~~~~~~~~~~~~~~~~~~ >> /arrow/cpp/src/arrow/python/datetime.cc:257 <http://datetime.cc:257>:10: >> error: ‘struct PyDateTime_CAPI’ has no member named ‘DateTimeType’ >> *out = PyDateTime_FromDateAndTime( >> ^~~~~~~~~~~~~~~~~~~~~~~~~~ >> make[2]: *** >> [src/arrow/python/CMakeFiles/arrow_python_objlib.dir/build.make:121: >> src/arrow/python/CMakeFiles/arrow_python_objlib.dir/datetime.cc.o] Error 1 >> make[1]: *** [CMakeFiles/Makefile2:1628: >> src/arrow/python/CMakeFiles/arrow_python_objlib.dir/all] Error >> >> >> >>> On 10 Sep 2020, at 13:30, Niklas B <niklas.biv...@enplore.com >>> <mailto:niklas.biv...@enplore.com>> wrote: >>> >>> That’s what I figured, cool, I will try it! >>> >>>> On 10 Sep 2020, at 13:28, Matti Picus <matti.pi...@gmail.com >>>> <mailto:matti.pi...@gmail.com>> wrote: >>>> >>>> >>> >>
_______________________________________________ pypy-dev mailing list pypy-dev@python.org https://mail.python.org/mailman/listinfo/pypy-dev