diff --git a/dpctl/tensor/_ctors.py b/dpctl/tensor/_ctors.py index d0f459d1c5..5126f40837 100644 --- a/dpctl/tensor/_ctors.py +++ b/dpctl/tensor/_ctors.py @@ -32,6 +32,8 @@ def _array_info_dispatch(obj): return obj.shape, obj.dtype, _host_set elif isinstance(obj, range): return (len(obj),), int, _host_set + elif isinstance(obj, bool): + return _empty_tuple, bool, _host_set elif isinstance(obj, float): return _empty_tuple, float, _host_set elif isinstance(obj, int): @@ -63,6 +65,9 @@ def _array_info_sequence(li): raise ValueError( "Inconsistent dimensions, {} and {}".format(dim, el_dim) ) + if dim is None: + dim = tuple() + device = _host_set return (n,) + dim, dt, device diff --git a/dpctl/tests/test_tensor_asarray.py b/dpctl/tests/test_tensor_asarray.py index c7734b8194..8c61fc9f13 100644 --- a/dpctl/tests/test_tensor_asarray.py +++ b/dpctl/tests/test_tensor_asarray.py @@ -80,6 +80,17 @@ def test_asarray_from_sequence(): Y = dpt.asarray(X, usm_type="device") assert type(Y) is dpt.usm_ndarray assert Y.ndim == 2 + assert Y.shape == (len(X), 2) + + X = [] + Y = dpt.asarray(X, usm_type="device") + assert type(Y) is dpt.usm_ndarray + assert Y.shape == (0,) + + X = [True, False] + Y = dpt.asarray(X, usm_type="device") + assert type(Y) is dpt.usm_ndarray + assert Y.dtype.kind == "b" def test_asarray_from_object_with_suai():