Skip to content

Commit 2b091fa

Browse files
Removed conversion to array in Buffer.
1 parent e4f9152 commit 2b091fa

File tree

8 files changed

+1206
-1075
lines changed

8 files changed

+1206
-1075
lines changed

numcodecs/blosc.c

Lines changed: 370 additions & 338 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

numcodecs/blosc.pyx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,8 @@ def decompress(source, dest=None):
366366
dest_ptr = PyBytes_AS_STRING(dest)
367367
dest_nbytes = nbytes
368368
else:
369-
dest_buffer = Buffer(dest, PyBUF_ANY_CONTIGUOUS | PyBUF_WRITEABLE)
369+
arr = ensure_contiguous_ndarray(dest)
370+
dest_buffer = Buffer(arr, PyBUF_ANY_CONTIGUOUS | PyBUF_WRITEABLE)
370371
dest_ptr = dest_buffer.ptr
371372
dest_nbytes = dest_buffer.nbytes
372373

numcodecs/compat_ext.c

Lines changed: 88 additions & 211 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

numcodecs/compat_ext.pyx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@ cdef class Buffer:
1616
new-style buffer interface in PY2."""
1717

1818
def __cinit__(self, obj, flags):
19-
arr = ensure_contiguous_ndarray(obj)
20-
PyObject_GetBuffer(arr, &(self.buffer), flags)
19+
PyObject_GetBuffer(obj, &(self.buffer), flags)
2120
self.acquired = True
2221
self.ptr = <char *> self.buffer.buf
2322
self.itemsize = self.buffer.itemsize

numcodecs/lz4.c

Lines changed: 243 additions & 179 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

numcodecs/lz4.pyx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,8 @@ def decompress(source, dest=None):
167167
dest = PyBytes_FromStringAndSize(NULL, dest_size)
168168
dest_ptr = PyBytes_AS_STRING(dest)
169169
else:
170-
dest_buffer = Buffer(dest, PyBUF_ANY_CONTIGUOUS | PyBUF_WRITEABLE)
170+
arr = ensure_contiguous_ndarray(dest)
171+
dest_buffer = Buffer(arr, PyBUF_ANY_CONTIGUOUS | PyBUF_WRITEABLE)
171172
dest_ptr = dest_buffer.ptr
172173
if dest_buffer.nbytes < dest_size:
173174
raise ValueError('destination buffer too small; expected at least %s, '

numcodecs/zstd.c

Lines changed: 491 additions & 342 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

numcodecs/zstd.pyx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ from cpython.bytes cimport PyBytes_FromStringAndSize, PyBytes_AS_STRING
1313

1414
from .compat_ext cimport Buffer
1515
from .compat_ext import Buffer
16+
from .compat import ensure_contiguous_ndarray
1617
from .abc import Codec
1718

1819

@@ -159,7 +160,8 @@ def decompress(source, dest=None):
159160
dest = PyBytes_FromStringAndSize(NULL, dest_size)
160161
dest_ptr = PyBytes_AS_STRING(dest)
161162
else:
162-
dest_buffer = Buffer(dest, PyBUF_ANY_CONTIGUOUS | PyBUF_WRITEABLE)
163+
arr = ensure_contiguous_ndarray(dest)
164+
dest_buffer = Buffer(arr, PyBUF_ANY_CONTIGUOUS | PyBUF_WRITEABLE)
163165
dest_ptr = dest_buffer.ptr
164166
if dest_buffer.nbytes < dest_size:
165167
raise ValueError('destination buffer too small; expected at least %s, '
@@ -202,14 +204,20 @@ class Zstd(Codec):
202204
"""
203205

204206
codec_id = 'zstd'
207+
208+
# Note: unlike the LZ4 and Blosc codecs, there does not appear to be a (currently)
209+
# practical limit on the size of buffers that Zstd can process and so we don't
210+
# enforce a max_buffer_size option here.
205211

206212
def __init__(self, level=DEFAULT_CLEVEL):
207213
self.level = level
208214

209215
def encode(self, buf):
216+
buf = ensure_contiguous_ndarray(buf)
210217
return compress(buf, self.level)
211218

212219
def decode(self, buf, out=None):
220+
buf = ensure_contiguous_ndarray(buf)
213221
return decompress(buf, out)
214222

215223
def __repr__(self):

0 commit comments

Comments
 (0)