From 0b4940fb1e38e05f19345a1a870f7ba3d42a04ee Mon Sep 17 00:00:00 2001 From: Isaac Virshup Date: Tue, 12 Mar 2024 17:23:00 +0100 Subject: [PATCH 1/4] fix? --- numcodecs/vlen.pyx | 3 ++- pyproject.toml | 3 ++- setup.py | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/numcodecs/vlen.pyx b/numcodecs/vlen.pyx index a1ff0e26..e1e149ee 100644 --- a/numcodecs/vlen.pyx +++ b/numcodecs/vlen.pyx @@ -7,6 +7,7 @@ import cython cimport cython +from numpy cimport ndarray import numpy as np from .abc import Codec from .compat_ext cimport Buffer @@ -74,7 +75,7 @@ class VLenUTF8(Codec): def encode(self, buf): cdef: Py_ssize_t i, l, n_items, data_length, total_length - object[:] input_values + ndarray[object, ndim=1] input_values object[:] encoded_values int[:] encoded_lengths char* encv diff --git a/pyproject.toml b/pyproject.toml index eb620b92..ceed0289 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,8 @@ requires = [ "setuptools>=64", "setuptools-scm[toml]>=6.2", "Cython", - "py-cpuinfo" + "py-cpuinfo", + "numpy", ] build-backend = "setuptools.build_meta" diff --git a/setup.py b/setup.py index a3b07655..03f48370 100644 --- a/setup.py +++ b/setup.py @@ -199,12 +199,13 @@ def lz4_extension(): def vlen_extension(): info('setting up vlen extension') + import numpy extra_compile_args = base_compile_args.copy() define_macros = [] # setup sources - include_dirs = ['numcodecs'] + include_dirs = ['numcodecs', numpy.get_include()] # define_macros += [('CYTHON_TRACE', '1')] sources = ['numcodecs/vlen.pyx'] From 06a14246a79dfc57bcc18cd9a4d7a30d3b4d6a50 Mon Sep 17 00:00:00 2001 From: Isaac Virshup Date: Tue, 12 Mar 2024 17:25:37 +0100 Subject: [PATCH 2/4] test --- numcodecs/tests/test_vlen_utf8.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/numcodecs/tests/test_vlen_utf8.py b/numcodecs/tests/test_vlen_utf8.py index 2bc49cb2..b6b9ce4d 100644 --- a/numcodecs/tests/test_vlen_utf8.py +++ b/numcodecs/tests/test_vlen_utf8.py @@ -77,10 +77,13 @@ def test_decode_errors(): codec.decode(enc, out=np.zeros(10, dtype='i4')) -def test_encode_utf8(): +@pytest.mark.parametrize("writable", [True, False]) +def test_encode_utf8(writable): a = np.array(['foo', None, 'bar'], dtype=object) + if not writable: + a.setflags(write=False) codec = VLenUTF8() enc = codec.encode(a) dec = codec.decode(enc) expect = np.array(['foo', '', 'bar'], dtype=object) - assert_array_items_equal(expect, dec) + assert_array_items_equal(expect, dec) \ No newline at end of file From c822e48b55338589f8161b4a05bb81c4ecbba2f0 Mon Sep 17 00:00:00 2001 From: Isaac Virshup Date: Tue, 12 Mar 2024 21:26:42 +0100 Subject: [PATCH 3/4] format --- numcodecs/tests/test_vlen_utf8.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/numcodecs/tests/test_vlen_utf8.py b/numcodecs/tests/test_vlen_utf8.py index b6b9ce4d..e62afdc6 100644 --- a/numcodecs/tests/test_vlen_utf8.py +++ b/numcodecs/tests/test_vlen_utf8.py @@ -86,4 +86,4 @@ def test_encode_utf8(writable): enc = codec.encode(a) dec = codec.decode(enc) expect = np.array(['foo', '', 'bar'], dtype=object) - assert_array_items_equal(expect, dec) \ No newline at end of file + assert_array_items_equal(expect, dec) From 47f1afe1555fbe68caf0cfd105540806cdf39a21 Mon Sep 17 00:00:00 2001 From: Ryan Abernathey Date: Fri, 12 Jul 2024 10:13:48 -0400 Subject: [PATCH 4/4] add release notes --- docs/release.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/release.rst b/docs/release.rst index b569015c..17f146e9 100644 --- a/docs/release.rst +++ b/docs/release.rst @@ -26,7 +26,8 @@ Enhancements Fix ~~~ - +* Fix VLenUTF8 encoding for read-only buffers. + By :user:`Isaac Virshup `, :issue:`514`. * Fix skip of entry points backport tests By :user:`Elliott Sales de Andrade `, :issue:`487`. * Fix Upgrade to Zstd 1.5.5 due to potential corruption.