MCPcopy Create free account
hub / github.com/apache/arrow / TestPyBufferNumpyArray

Function TestPyBufferNumpyArray

python/pyarrow/src/arrow/python/python_test.cc:300–328  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

298// ("unresolved external symbol arrow_ARRAY_API referenced").
299#ifndef _WIN32
300Status TestPyBufferNumpyArray() {
301 npy_intp dims[1] = {10};
302
303 OwnedRef arr_ref(PyArray_SimpleNew(1, dims, NPY_FLOAT));
304 PyObject* arr = arr_ref.obj();
305 ASSERT_NE(arr, nullptr);
306 auto old_refcnt = Py_REFCNT(arr);
307 auto buf = std::move(PyBuffer::FromPyObject(arr)).ValueOrDie();
308
309 ASSERT_TRUE(buf->is_cpu());
310 ASSERT_EQ(buf->data(), PyArray_DATA(reinterpret_cast<PyArrayObject*>(arr)));
311 ASSERT_TRUE(buf->is_mutable());
312 ASSERT_EQ(buf->mutable_data(), buf->data());
313 ASSERT_EQ(old_refcnt + 1, Py_REFCNT(arr));
314 buf.reset();
315 ASSERT_EQ(old_refcnt, Py_REFCNT(arr));
316
317 // Read-only
318 PyArray_CLEARFLAGS(reinterpret_cast<PyArrayObject*>(arr), NPY_ARRAY_WRITEABLE);
319 buf = std::move(PyBuffer::FromPyObject(arr)).ValueOrDie();
320 ASSERT_TRUE(buf->is_cpu());
321 ASSERT_EQ(buf->data(), PyArray_DATA(reinterpret_cast<PyArrayObject*>(arr)));
322 ASSERT_FALSE(buf->is_mutable());
323 ASSERT_EQ(old_refcnt + 1, Py_REFCNT(arr));
324 buf.reset();
325 ASSERT_EQ(old_refcnt, Py_REFCNT(arr));
326
327 return Status::OK();
328}
329
330Status TestNumPyBufferNumpyArray() {
331 npy_intp dims[1] = {10};

Callers

nothing calls this directly

Calls 5

ValueOrDieMethod · 0.80
OKFunction · 0.50
dataMethod · 0.45
mutable_dataMethod · 0.45
resetMethod · 0.45

Tested by

no test coverage detected