Skip to content

Commit 9e415c7

Browse files
committed
A way to make nested arrays in nano arrow but detouring through a buffer
1 parent c07fe6e commit 9e415c7

File tree

1 file changed

+7
-11
lines changed

1 file changed

+7
-11
lines changed

Tests/test_nanoarrow.py

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -190,9 +190,6 @@ class DataShape(NamedTuple):
190190
)
191191

192192

193-
@pytest.mark.xfail(
194-
reason="Support for nested array creation is not available in nanoarrow/python"
195-
)
196193
@pytest.mark.parametrize(
197194
"mode, data_tp, mask",
198195
(
@@ -218,13 +215,13 @@ def test_fromarray(mode: str, data_tp: DataShape, mask: list[int] | None) -> Non
218215

219216
ct_pixels = TEST_IMAGE_SIZE[0] * TEST_IMAGE_SIZE[1]
220217
if dtype == fl_uint8_4_type:
221-
# Apparently there's no good way to create this array from python using nanoarrow
222-
# https://github.com/apache/arrow-nanoarrow/issues/620
223-
# the following lines will fail.
224-
tmp_arr = nanoarrow.c_array(
218+
tmp_arr = nanoarrow.Array(
225219
elt * (ct_pixels * elts_per_pixel), schema=nanoarrow.uint8()
226220
)
227-
arr = nanoarrow.Array(tmp_arr, schema=dtype)
221+
c_array = nanoarrow.c_array_from_buffers(
222+
dtype, ct_pixels, buffers=[], children=[tmp_arr]
223+
)
224+
arr = nanoarrow.Array(c_array)
228225
else:
229226
arr = nanoarrow.Array(
230227
nanoarrow.c_array([elt] * (ct_pixels * elts_per_pixel), schema=dtype)
@@ -290,6 +287,7 @@ def test_image_nested_metadata(mode: str, metadata: list[str]) -> None:
290287
assert "bands" in parsed_metadata
291288
assert parsed_metadata["bands"] == metadata
292289

290+
293291
@pytest.mark.parametrize(
294292
"mode, metadata",
295293
(
@@ -306,9 +304,7 @@ def test_image_flat_metadata(mode: str, metadata: list[str]) -> None:
306304
assert arr.schema.metadata
307305
assert arr.schema.metadata[b"image"]
308306

309-
parsed_metadata = json.loads(
310-
arr.schema.metadata[b"image"].decode("utf8")
311-
)
307+
parsed_metadata = json.loads(arr.schema.metadata[b"image"].decode("utf8"))
312308

313309
assert "bands" in parsed_metadata
314310
assert parsed_metadata["bands"] == metadata

0 commit comments

Comments
 (0)