mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-07-27 00:19:58 +03:00
A way to make nested arrays in nano arrow but detouring through a buffer
This commit is contained in:
parent
c07fe6e943
commit
9e415c7876
|
@ -190,9 +190,6 @@ INT32 = DataShape(
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.xfail(
|
|
||||||
reason="Support for nested array creation is not available in nanoarrow/python"
|
|
||||||
)
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
"mode, data_tp, mask",
|
"mode, data_tp, mask",
|
||||||
(
|
(
|
||||||
|
@ -218,13 +215,13 @@ def test_fromarray(mode: str, data_tp: DataShape, mask: list[int] | None) -> Non
|
||||||
|
|
||||||
ct_pixels = TEST_IMAGE_SIZE[0] * TEST_IMAGE_SIZE[1]
|
ct_pixels = TEST_IMAGE_SIZE[0] * TEST_IMAGE_SIZE[1]
|
||||||
if dtype == fl_uint8_4_type:
|
if dtype == fl_uint8_4_type:
|
||||||
# Apparently there's no good way to create this array from python using nanoarrow
|
tmp_arr = nanoarrow.Array(
|
||||||
# https://github.com/apache/arrow-nanoarrow/issues/620
|
|
||||||
# the following lines will fail.
|
|
||||||
tmp_arr = nanoarrow.c_array(
|
|
||||||
elt * (ct_pixels * elts_per_pixel), schema=nanoarrow.uint8()
|
elt * (ct_pixels * elts_per_pixel), schema=nanoarrow.uint8()
|
||||||
)
|
)
|
||||||
arr = nanoarrow.Array(tmp_arr, schema=dtype)
|
c_array = nanoarrow.c_array_from_buffers(
|
||||||
|
dtype, ct_pixels, buffers=[], children=[tmp_arr]
|
||||||
|
)
|
||||||
|
arr = nanoarrow.Array(c_array)
|
||||||
else:
|
else:
|
||||||
arr = nanoarrow.Array(
|
arr = nanoarrow.Array(
|
||||||
nanoarrow.c_array([elt] * (ct_pixels * elts_per_pixel), schema=dtype)
|
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:
|
||||||
assert "bands" in parsed_metadata
|
assert "bands" in parsed_metadata
|
||||||
assert parsed_metadata["bands"] == metadata
|
assert parsed_metadata["bands"] == metadata
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
"mode, metadata",
|
"mode, metadata",
|
||||||
(
|
(
|
||||||
|
@ -306,9 +304,7 @@ def test_image_flat_metadata(mode: str, metadata: list[str]) -> None:
|
||||||
assert arr.schema.metadata
|
assert arr.schema.metadata
|
||||||
assert arr.schema.metadata[b"image"]
|
assert arr.schema.metadata[b"image"]
|
||||||
|
|
||||||
parsed_metadata = json.loads(
|
parsed_metadata = json.loads(arr.schema.metadata[b"image"].decode("utf8"))
|
||||||
arr.schema.metadata[b"image"].decode("utf8")
|
|
||||||
)
|
|
||||||
|
|
||||||
assert "bands" in parsed_metadata
|
assert "bands" in parsed_metadata
|
||||||
assert parsed_metadata["bands"] == metadata
|
assert parsed_metadata["bands"] == metadata
|
||||||
|
|
Loading…
Reference in New Issue
Block a user