in pyignite/datatypes/internal.py [0:0]
def get_subtype(iterable, allow_none=False):
# arrays of these types can contain Null objects
object_array_python_types = [
str,
datetime,
timedelta,
decimal.Decimal,
uuid.UUID,
]
iterator = iter(iterable)
type_first = type(None)
try:
while isinstance(None, type_first):
type_first = type(next(iterator))
except StopIteration:
raise TypeError(
'Can not represent an empty iterable '
'or an iterable of `NoneType` in Ignite type.'
)
if type_first in object_array_python_types:
allow_none = True
# if an iterable contains items of more than one non-nullable type,
# return None
if all(isinstance(x, type_first) or ((x is None) and allow_none) for x in iterator):
return type_first