Bases: DataInfoField
Specifications for 'n_features' data_info field.
Source code in declearn/data_info/_fields.py
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138 | @register_data_info_field
class NbFeaturesField(DataInfoField):
"""Specifications for 'n_features' data_info field."""
field: ClassVar[str] = "n_features"
types: ClassVar[Tuple[Type, ...]] = (int,)
doc: ClassVar[str] = "Number of input features, checked to be equal."
@classmethod
def is_valid(
cls,
value: Any,
) -> bool:
return isinstance(value, int) and (value > 0)
@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]
|