Bases: DataInfoField
Specifications for 'data_type' data_info field.
Source code in declearn/data_info/_fields.py
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95 | @register_data_info_field
class DataTypeField(DataInfoField):
"""Specifications for 'data_type' data_info field."""
field = "data_type"
types = (str,)
doc = "Type of dataset(s)."
@classmethod
def is_valid(
cls,
value: Any,
) -> bool:
if not isinstance(value, str):
return False
try:
np.dtype(value)
except TypeError:
return False
return True
@classmethod
def combine(
cls,
*values: Any,
) -> int:
unique = list(set(values))
if len(unique) != 1:
raise ValueError(
f"Cannot combine '{cls.field}': non-unique inputs."
)
if not cls.is_valid(unique[0]):
raise ValueError(
f"Cannot combine '{cls.field}': invalid unique value."
)
return unique[0]
|