in torcharrow/dtypes.py [0:0]
def infer_dtype_from_value(value):
if value is None:
return Void()
if isinstance(value, (bool, np.bool8)):
return prt(value, boolean)
if isinstance(value, (np.int8)):
return prt(value, int8)
if isinstance(value, (np.int16)):
return prt(value, int16)
if isinstance(value, (np.int32)):
return prt(value, int32)
if isinstance(value, (int, np.integer)):
return prt(value, int64)
if isinstance(value, np.float64):
# please make sure this `if` check precedes the below one, since
# the `np.float64` is also the instance of `float`
return prt(value, float64)
if isinstance(value, (float, np.float32)):
return prt(value, float32)
if isinstance(value, (str, np.str_)):
return prt(value, string)
if isinstance(value, list):
dtype = infer_dtype_from_prefix(value[:PREFIX_LENGTH])
return prt(value, List(dtype))
if isinstance(value, dict):
key_dtype = infer_dtype_from_prefix(list(value.keys())[:PREFIX_LENGTH])
items_dtype = infer_dtype_from_prefix(list(value.values())[:PREFIX_LENGTH])
return prt(value, Map(key_dtype, items_dtype))
if isinstance(value, tuple):
dtypes = []
for t in value:
dtypes.append(infer_dtype_from_value(t))
return prt(value, Tuple(dtypes))
raise AssertionError(f"unexpected case {value} of type {type(value)}")