Skip to content

Support datetime64 and timedelta64 #46

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Nov 27, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added fixture/blosc/array.05.npy
Binary file not shown.
Binary file added fixture/blosc/array.06.npy
Binary file not shown.
Binary file added fixture/blosc/array.07.npy
Binary file not shown.
Binary file added fixture/blosc/array.08.npy
Binary file not shown.
Binary file added fixture/blosc/codec.00/encoded.05.dat
Binary file not shown.
Binary file added fixture/blosc/codec.00/encoded.06.dat
Binary file not shown.
Binary file added fixture/blosc/codec.00/encoded.07.dat
Binary file not shown.
Binary file added fixture/blosc/codec.00/encoded.08.dat
Binary file not shown.
Binary file added fixture/blosc/codec.01/encoded.05.dat
Binary file not shown.
Binary file added fixture/blosc/codec.01/encoded.06.dat
Binary file not shown.
Binary file added fixture/blosc/codec.01/encoded.07.dat
Binary file not shown.
Binary file added fixture/blosc/codec.01/encoded.08.dat
Binary file not shown.
Binary file added fixture/blosc/codec.02/encoded.05.dat
Binary file not shown.
Binary file added fixture/blosc/codec.02/encoded.06.dat
Binary file not shown.
Binary file added fixture/blosc/codec.02/encoded.07.dat
Binary file not shown.
Binary file added fixture/blosc/codec.02/encoded.08.dat
Binary file not shown.
Binary file added fixture/blosc/codec.03/encoded.05.dat
Binary file not shown.
Binary file added fixture/blosc/codec.03/encoded.06.dat
Binary file not shown.
Binary file added fixture/blosc/codec.03/encoded.07.dat
Binary file not shown.
Binary file added fixture/blosc/codec.03/encoded.08.dat
Binary file not shown.
Binary file added fixture/blosc/codec.04/encoded.05.dat
Binary file not shown.
Binary file added fixture/blosc/codec.04/encoded.06.dat
Binary file not shown.
Binary file added fixture/blosc/codec.04/encoded.07.dat
Binary file not shown.
Binary file added fixture/blosc/codec.04/encoded.08.dat
Binary file not shown.
Binary file added fixture/blosc/codec.05/encoded.05.dat
Binary file not shown.
Binary file added fixture/blosc/codec.05/encoded.06.dat
Binary file not shown.
Binary file added fixture/blosc/codec.05/encoded.07.dat
Binary file not shown.
Binary file added fixture/blosc/codec.05/encoded.08.dat
Binary file not shown.
Binary file added fixture/blosc/codec.06/encoded.05.dat
Binary file not shown.
Binary file added fixture/blosc/codec.06/encoded.06.dat
Binary file not shown.
Binary file added fixture/blosc/codec.06/encoded.07.dat
Binary file not shown.
Binary file added fixture/blosc/codec.06/encoded.08.dat
Binary file not shown.
Binary file added fixture/blosc/codec.07/encoded.05.dat
Binary file not shown.
Binary file added fixture/blosc/codec.07/encoded.06.dat
Binary file not shown.
Binary file added fixture/blosc/codec.07/encoded.07.dat
Binary file not shown.
Binary file added fixture/blosc/codec.07/encoded.08.dat
Binary file not shown.
Binary file added fixture/blosc/codec.08/encoded.05.dat
Binary file not shown.
Binary file added fixture/blosc/codec.08/encoded.06.dat
Binary file not shown.
Binary file added fixture/blosc/codec.08/encoded.07.dat
Binary file not shown.
Binary file added fixture/blosc/codec.08/encoded.08.dat
Binary file not shown.
Binary file added fixture/blosc/codec.09/encoded.05.dat
Binary file not shown.
Binary file added fixture/blosc/codec.09/encoded.06.dat
Binary file not shown.
Binary file added fixture/blosc/codec.09/encoded.07.dat
Binary file not shown.
Binary file added fixture/blosc/codec.09/encoded.08.dat
Binary file not shown.
Binary file added fixture/blosc/codec.10/encoded.05.dat
Binary file not shown.
Binary file added fixture/blosc/codec.10/encoded.06.dat
Binary file not shown.
Binary file added fixture/blosc/codec.10/encoded.07.dat
Binary file not shown.
Binary file added fixture/blosc/codec.10/encoded.08.dat
Binary file not shown.
Binary file added fixture/blosc/codec.11/encoded.05.dat
Binary file not shown.
Binary file added fixture/blosc/codec.11/encoded.06.dat
Binary file not shown.
Binary file added fixture/blosc/codec.11/encoded.07.dat
Binary file not shown.
Binary file added fixture/blosc/codec.11/encoded.08.dat
Binary file not shown.
Binary file added fixture/blosc/codec.12/encoded.05.dat
Binary file not shown.
Binary file added fixture/blosc/codec.12/encoded.06.dat
Binary file not shown.
Binary file added fixture/blosc/codec.12/encoded.07.dat
Binary file not shown.
Binary file added fixture/blosc/codec.12/encoded.08.dat
Binary file not shown.
Binary file added fixture/bz2/array.05.npy
Binary file not shown.
Binary file added fixture/bz2/array.06.npy
Binary file not shown.
Binary file added fixture/bz2/array.07.npy
Binary file not shown.
Binary file added fixture/bz2/array.08.npy
Binary file not shown.
Binary file added fixture/bz2/codec.00/encoded.05.dat
Binary file not shown.
Binary file added fixture/bz2/codec.00/encoded.06.dat
Binary file not shown.
Binary file added fixture/bz2/codec.00/encoded.07.dat
Binary file not shown.
Binary file added fixture/bz2/codec.00/encoded.08.dat
Binary file not shown.
Binary file added fixture/bz2/codec.01/encoded.05.dat
Binary file not shown.
Binary file added fixture/bz2/codec.01/encoded.06.dat
Binary file not shown.
Binary file added fixture/bz2/codec.01/encoded.07.dat
Binary file not shown.
Binary file added fixture/bz2/codec.01/encoded.08.dat
Binary file not shown.
Binary file added fixture/bz2/codec.02/encoded.05.dat
Binary file not shown.
Binary file added fixture/bz2/codec.02/encoded.06.dat
Binary file not shown.
Binary file added fixture/bz2/codec.02/encoded.07.dat
Binary file not shown.
Binary file added fixture/bz2/codec.02/encoded.08.dat
Binary file not shown.
Binary file added fixture/bz2/codec.03/encoded.05.dat
Binary file not shown.
Binary file added fixture/bz2/codec.03/encoded.06.dat
Binary file not shown.
Binary file added fixture/bz2/codec.03/encoded.07.dat
Binary file not shown.
Binary file added fixture/bz2/codec.03/encoded.08.dat
Binary file not shown.
Binary file added fixture/lz4/array.05.npy
Binary file not shown.
Binary file added fixture/lz4/array.06.npy
Binary file not shown.
Binary file added fixture/lz4/array.07.npy
Binary file not shown.
Binary file added fixture/lz4/array.08.npy
Binary file not shown.
Binary file added fixture/lz4/codec.00/encoded.05.dat
Binary file not shown.
Binary file added fixture/lz4/codec.00/encoded.06.dat
Binary file not shown.
Binary file added fixture/lz4/codec.00/encoded.07.dat
Binary file not shown.
Binary file added fixture/lz4/codec.00/encoded.08.dat
Binary file not shown.
Binary file added fixture/lz4/codec.01/encoded.05.dat
Binary file not shown.
Binary file added fixture/lz4/codec.01/encoded.06.dat
Binary file not shown.
Binary file added fixture/lz4/codec.01/encoded.07.dat
Binary file not shown.
Binary file added fixture/lz4/codec.01/encoded.08.dat
Binary file not shown.
Binary file added fixture/lz4/codec.02/encoded.05.dat
Binary file not shown.
Binary file added fixture/lz4/codec.02/encoded.06.dat
Binary file not shown.
Binary file added fixture/lz4/codec.02/encoded.07.dat
Binary file not shown.
Binary file added fixture/lz4/codec.02/encoded.08.dat
Binary file not shown.
Binary file added fixture/lz4/codec.03/encoded.05.dat
Binary file not shown.
Binary file added fixture/lz4/codec.03/encoded.06.dat
Binary file not shown.
Binary file added fixture/lz4/codec.03/encoded.07.dat
Binary file not shown.
Binary file added fixture/lz4/codec.03/encoded.08.dat
Binary file not shown.
Binary file added fixture/lz4/codec.04/encoded.05.dat
Binary file not shown.
Binary file added fixture/lz4/codec.04/encoded.06.dat
Binary file not shown.
Binary file added fixture/lz4/codec.04/encoded.07.dat
Binary file not shown.
Binary file added fixture/lz4/codec.04/encoded.08.dat
Binary file not shown.
Binary file added fixture/lz4/codec.05/encoded.05.dat
Binary file not shown.
Binary file added fixture/lz4/codec.05/encoded.06.dat
Binary file not shown.
Binary file added fixture/lz4/codec.05/encoded.07.dat
Binary file not shown.
Binary file added fixture/lz4/codec.05/encoded.08.dat
Binary file not shown.
Binary file added fixture/lz4/codec.06/encoded.05.dat
Binary file not shown.
Binary file added fixture/lz4/codec.06/encoded.06.dat
Binary file not shown.
Binary file added fixture/lz4/codec.06/encoded.07.dat
Binary file not shown.
Binary file added fixture/lz4/codec.06/encoded.08.dat
Binary file not shown.
Binary file added fixture/lzma/array.05.npy
Binary file not shown.
Binary file added fixture/lzma/array.06.npy
Binary file not shown.
Binary file added fixture/lzma/array.07.npy
Binary file not shown.
Binary file added fixture/lzma/array.08.npy
Binary file not shown.
Binary file added fixture/lzma/codec.00/encoded.05.dat
Binary file not shown.
Binary file added fixture/lzma/codec.00/encoded.06.dat
Binary file not shown.
Binary file added fixture/lzma/codec.00/encoded.07.dat
Binary file not shown.
Binary file added fixture/lzma/codec.00/encoded.08.dat
Binary file not shown.
Binary file added fixture/lzma/codec.01/encoded.05.dat
Binary file not shown.
Binary file added fixture/lzma/codec.01/encoded.06.dat
Binary file not shown.
Binary file added fixture/lzma/codec.01/encoded.07.dat
Binary file not shown.
Binary file added fixture/lzma/codec.01/encoded.08.dat
Binary file not shown.
Binary file added fixture/lzma/codec.02/encoded.05.dat
Binary file not shown.
Binary file added fixture/lzma/codec.02/encoded.06.dat
Binary file not shown.
Binary file added fixture/lzma/codec.02/encoded.07.dat
Binary file not shown.
Binary file added fixture/lzma/codec.02/encoded.08.dat
Binary file not shown.
Binary file added fixture/lzma/codec.03/encoded.05.dat
Binary file not shown.
Binary file added fixture/lzma/codec.03/encoded.06.dat
Binary file not shown.
Binary file added fixture/lzma/codec.03/encoded.07.dat
Binary file not shown.
Binary file added fixture/lzma/codec.03/encoded.08.dat
Binary file not shown.
Binary file added fixture/lzma/codec.04/encoded.05.dat
Binary file not shown.
Binary file added fixture/lzma/codec.04/encoded.06.dat
Binary file not shown.
Binary file added fixture/lzma/codec.04/encoded.07.dat
Binary file not shown.
Binary file added fixture/lzma/codec.04/encoded.08.dat
Binary file not shown.
Binary file added fixture/zlib/array.05.npy
Binary file not shown.
Binary file added fixture/zlib/array.06.npy
Binary file not shown.
Binary file added fixture/zlib/array.07.npy
Binary file not shown.
Binary file added fixture/zlib/array.08.npy
Binary file not shown.
Binary file added fixture/zlib/codec.00/encoded.05.dat
Binary file not shown.
Binary file added fixture/zlib/codec.00/encoded.06.dat
Binary file not shown.
Binary file added fixture/zlib/codec.00/encoded.07.dat
Binary file not shown.
Binary file added fixture/zlib/codec.00/encoded.08.dat
Binary file not shown.
Binary file added fixture/zlib/codec.01/encoded.05.dat
Binary file not shown.
Binary file added fixture/zlib/codec.01/encoded.06.dat
Binary file not shown.
Binary file added fixture/zlib/codec.01/encoded.07.dat
Binary file not shown.
Binary file added fixture/zlib/codec.01/encoded.08.dat
Binary file not shown.
Binary file added fixture/zlib/codec.02/encoded.05.dat
Binary file not shown.
Binary file added fixture/zlib/codec.02/encoded.06.dat
Binary file not shown.
Binary file added fixture/zlib/codec.02/encoded.07.dat
Binary file not shown.
Binary file added fixture/zlib/codec.02/encoded.08.dat
Binary file not shown.
Binary file added fixture/zlib/codec.03/encoded.05.dat
Binary file not shown.
Binary file added fixture/zlib/codec.03/encoded.06.dat
Binary file not shown.
Binary file added fixture/zlib/codec.03/encoded.07.dat
Binary file not shown.
Binary file added fixture/zlib/codec.03/encoded.08.dat
Binary file not shown.
Binary file added fixture/zlib/codec.04/encoded.05.dat
Binary file not shown.
Binary file added fixture/zlib/codec.04/encoded.06.dat
Binary file not shown.
Binary file added fixture/zlib/codec.04/encoded.07.dat
Binary file not shown.
Binary file added fixture/zlib/codec.04/encoded.08.dat
Binary file not shown.
Binary file added fixture/zlib/codec.05/encoded.05.dat
Binary file not shown.
Binary file added fixture/zlib/codec.05/encoded.06.dat
Binary file not shown.
Binary file added fixture/zlib/codec.05/encoded.07.dat
Binary file not shown.
Binary file added fixture/zlib/codec.05/encoded.08.dat
Binary file not shown.
Binary file added fixture/zstd/array.05.npy
Binary file not shown.
Binary file added fixture/zstd/array.06.npy
Binary file not shown.
Binary file added fixture/zstd/array.07.npy
Binary file not shown.
Binary file added fixture/zstd/array.08.npy
Binary file not shown.
Binary file added fixture/zstd/codec.00/encoded.05.dat
Binary file not shown.
Binary file added fixture/zstd/codec.00/encoded.06.dat
Binary file not shown.
Binary file added fixture/zstd/codec.00/encoded.07.dat
Binary file not shown.
Binary file added fixture/zstd/codec.00/encoded.08.dat
Binary file not shown.
Binary file added fixture/zstd/codec.01/encoded.05.dat
Binary file not shown.
Binary file added fixture/zstd/codec.01/encoded.06.dat
Binary file not shown.
Binary file added fixture/zstd/codec.01/encoded.07.dat
Binary file not shown.
Binary file added fixture/zstd/codec.01/encoded.08.dat
Binary file not shown.
Binary file added fixture/zstd/codec.02/encoded.05.dat
Binary file not shown.
Binary file added fixture/zstd/codec.02/encoded.06.dat
Binary file not shown.
Binary file added fixture/zstd/codec.02/encoded.07.dat
Binary file not shown.
Binary file added fixture/zstd/codec.02/encoded.08.dat
Binary file not shown.
Binary file added fixture/zstd/codec.03/encoded.05.dat
Binary file not shown.
Binary file added fixture/zstd/codec.03/encoded.06.dat
Binary file not shown.
Binary file added fixture/zstd/codec.03/encoded.07.dat
Binary file not shown.
Binary file added fixture/zstd/codec.03/encoded.08.dat
Binary file not shown.
Binary file added fixture/zstd/codec.04/encoded.05.dat
Binary file not shown.
Binary file added fixture/zstd/codec.04/encoded.06.dat
Binary file not shown.
Binary file added fixture/zstd/codec.04/encoded.07.dat
Binary file not shown.
Binary file added fixture/zstd/codec.04/encoded.08.dat
Binary file not shown.
Binary file added fixture/zstd/codec.05/encoded.05.dat
Binary file not shown.
Binary file added fixture/zstd/codec.05/encoded.06.dat
Binary file not shown.
Binary file added fixture/zstd/codec.05/encoded.07.dat
Binary file not shown.
Binary file added fixture/zstd/codec.05/encoded.08.dat
Binary file not shown.
Binary file added fixture/zstd/codec.06/encoded.05.dat
Binary file not shown.
Binary file added fixture/zstd/codec.06/encoded.06.dat
Binary file not shown.
Binary file added fixture/zstd/codec.06/encoded.07.dat
Binary file not shown.
Binary file added fixture/zstd/codec.06/encoded.08.dat
Binary file not shown.
5 changes: 4 additions & 1 deletion numcodecs/bz2.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@


from numcodecs.abc import Codec
from numcodecs.compat import buffer_copy
from numcodecs.compat import buffer_copy, handle_datetime


class BZ2(Codec):
Expand All @@ -28,6 +28,9 @@ def __init__(self, level=1):

def encode(self, buf):

# deal with lack of buffer support for datetime64 and timedelta64
buf = handle_datetime(buf)

# if numpy array, can only handle C contiguous directly
if isinstance(buf, np.ndarray) and not buf.flags.c_contiguous:
buf = buf.tobytes(order='A')
Expand Down
6 changes: 6 additions & 0 deletions numcodecs/compat.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,3 +114,9 @@ def ensure_text(l, encoding='utf-8'):
return l
else:
return text_type(l, encoding=encoding)


def handle_datetime(buf):
if hasattr(buf, 'dtype') and buf.dtype.kind in 'Mm':
return buf.view('u8')
return buf
360 changes: 241 additions & 119 deletions numcodecs/compat_ext.c

Large diffs are not rendered by default.

6 changes: 4 additions & 2 deletions numcodecs/compat_ext.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,12 @@ PY2 = sys.version_info[0] == 2


cdef class Buffer:
"""Compatibility class to work around fact that array.array does not support new-style buffer
interface in PY2."""
"""Compatibility class to work around fact that array.array does not support
new-style buffer interface in PY2."""

def __cinit__(self, obj, flags):
if hasattr(obj, 'dtype') and obj.dtype.kind in 'Mm':
obj = obj.view('u8')
if PY2 and isinstance(obj, array.array):
self.new_buffer = False
self.arr = obj
Expand Down
5 changes: 4 additions & 1 deletion numcodecs/lzma.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

import numpy as np
from numcodecs.abc import Codec
from numcodecs.compat import buffer_copy
from numcodecs.compat import buffer_copy, handle_datetime

# noinspection PyShadowingBuiltins
class LZMA(Codec):
Expand Down Expand Up @@ -48,6 +48,9 @@ def __init__(self, format=1, check=-1, preset=None, filters=None):

def encode(self, buf):

# deal with lack of buffer support for datetime64 and timedelta64
buf = handle_datetime(buf)

# if numpy array, can only handle C contiguous directly
if isinstance(buf, np.ndarray) and not buf.flags.c_contiguous:
buf = buf.tobytes(order='A')
Expand Down
6 changes: 5 additions & 1 deletion numcodecs/tests/test_blosc.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,11 @@
np.linspace(1000, 1001, 1000, dtype='f8'),
np.random.normal(loc=1000, scale=1, size=(100, 10)),
np.random.randint(0, 2, size=1000, dtype=bool).reshape(100, 10, order='F'),
np.random.choice([b'a', b'bb', b'ccc'], size=1000).reshape(10, 10, 10)
np.random.choice([b'a', b'bb', b'ccc'], size=1000).reshape(10, 10, 10),
np.random.randint(0, 2**60, size=1000, dtype='u8').view('M8[ns]'),
np.random.randint(0, 2**60, size=1000, dtype='u8').view('m8[ns]'),
np.random.randint(0, 2**25, size=1000, dtype='u8').view('M8[m]'),
np.random.randint(0, 2**25, size=1000, dtype='u8').view('m8[m]'),
]


Expand Down
6 changes: 5 additions & 1 deletion numcodecs/tests/test_bz2.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,11 @@
np.linspace(1000, 1001, 1000, dtype='f8'),
np.random.normal(loc=1000, scale=1, size=(100, 10)),
np.random.randint(0, 2, size=1000, dtype=bool).reshape(100, 10, order='F'),
np.random.choice([b'a', b'bb', b'ccc'], size=1000).reshape(10, 10, 10)
np.random.choice([b'a', b'bb', b'ccc'], size=1000).reshape(10, 10, 10),
np.random.randint(0, 2**60, size=1000, dtype='u8').view('M8[ns]'),
np.random.randint(0, 2**60, size=1000, dtype='u8').view('m8[ns]'),
np.random.randint(0, 2**25, size=1000, dtype='u8').view('M8[m]'),
np.random.randint(0, 2**25, size=1000, dtype='u8').view('m8[m]'),
]


Expand Down
6 changes: 5 additions & 1 deletion numcodecs/tests/test_lz4.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,11 @@
np.linspace(1000, 1001, 1000, dtype='f8'),
np.random.normal(loc=1000, scale=1, size=(100, 10)),
np.random.randint(0, 2, size=1000, dtype=bool).reshape(100, 10, order='F'),
np.random.choice([b'a', b'bb', b'ccc'], size=1000).reshape(10, 10, 10)
np.random.choice([b'a', b'bb', b'ccc'], size=1000).reshape(10, 10, 10),
np.random.randint(0, 2**60, size=1000, dtype='u8').view('M8[ns]'),
np.random.randint(0, 2**60, size=1000, dtype='u8').view('m8[ns]'),
np.random.randint(0, 2**25, size=1000, dtype='u8').view('M8[m]'),
np.random.randint(0, 2**25, size=1000, dtype='u8').view('m8[m]'),
]


Expand Down
6 changes: 5 additions & 1 deletion numcodecs/tests/test_lzma.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,11 @@
np.linspace(1000, 1001, 1000, dtype='f8'),
np.random.normal(loc=1000, scale=1, size=(100, 10)),
np.random.randint(0, 2, size=1000, dtype=bool).reshape(100, 10, order='F'),
np.random.choice([b'a', b'bb', b'ccc'], size=1000).reshape(10, 10, 10)
np.random.choice([b'a', b'bb', b'ccc'], size=1000).reshape(10, 10, 10),
np.random.randint(0, 2**60, size=1000, dtype='u8').view('M8[ns]'),
np.random.randint(0, 2**60, size=1000, dtype='u8').view('m8[ns]'),
np.random.randint(0, 2**25, size=1000, dtype='u8').view('M8[m]'),
np.random.randint(0, 2**25, size=1000, dtype='u8').view('m8[m]'),
]


Expand Down
6 changes: 5 additions & 1 deletion numcodecs/tests/test_zlib.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,11 @@
np.linspace(1000, 1001, 1000, dtype='f8'),
np.random.normal(loc=1000, scale=1, size=(100, 10)),
np.random.randint(0, 2, size=1000, dtype=bool).reshape(100, 10, order='F'),
np.random.choice([b'a', b'bb', b'ccc'], size=1000).reshape(10, 10, 10)
np.random.choice([b'a', b'bb', b'ccc'], size=1000).reshape(10, 10, 10),
np.random.randint(0, 2**60, size=1000, dtype='u8').view('M8[ns]'),
np.random.randint(0, 2**60, size=1000, dtype='u8').view('m8[ns]'),
np.random.randint(0, 2**25, size=1000, dtype='u8').view('M8[m]'),
np.random.randint(0, 2**25, size=1000, dtype='u8').view('m8[m]'),
]


Expand Down
6 changes: 5 additions & 1 deletion numcodecs/tests/test_zstd.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,11 @@
np.linspace(1000, 1001, 1000, dtype='f8'),
np.random.normal(loc=1000, scale=1, size=(100, 10)),
np.random.randint(0, 2, size=1000, dtype=bool).reshape(100, 10, order='F'),
np.random.choice([b'a', b'bb', b'ccc'], size=1000).reshape(10, 10, 10)
np.random.choice([b'a', b'bb', b'ccc'], size=1000).reshape(10, 10, 10),
np.random.randint(0, 2**60, size=1000, dtype='u8').view('M8[ns]'),
np.random.randint(0, 2**60, size=1000, dtype='u8').view('m8[ns]'),
np.random.randint(0, 2**25, size=1000, dtype='u8').view('M8[m]'),
np.random.randint(0, 2**25, size=1000, dtype='u8').view('m8[m]'),
]


Expand Down
5 changes: 4 additions & 1 deletion numcodecs/zlib.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@


from numcodecs.abc import Codec
from numcodecs.compat import buffer_copy
from numcodecs.compat import buffer_copy, handle_datetime


class Zlib(Codec):
Expand All @@ -27,6 +27,9 @@ def __init__(self, level=1):

def encode(self, buf):

# deal with lack of buffer support for datetime64 and timedelta64
buf = handle_datetime(buf)

# if numpy array, can only handle C contiguous directly
if isinstance(buf, np.ndarray) and not buf.flags.c_contiguous:
buf = buf.tobytes(order='A')
Expand Down