_validator
Input Validator
该模块为 AlphaCube 应用定义了输入验证器。它包含一个 Pydantic Input
类,用于验证应用任务的输入数据。输入数据必须遵守特定的格式和验证规则。
验证规则:
format
属性必须是 'moves' 或 'stickers'。- 对于 'moves' 格式,
scramble
属性必须由有效的转动步骤组成。 - 对于 'stickers' 格式(未实现),可能会执行额外的验证。
beam_width
属性必须是正整数。extra_depths
属性必须是非负整数。
备注
顺手度偏好信息是可选的,不会进行严格验证。
使用示例
input_data = {
'format': 'moves',
'scramble': "R U R' U'",
'beam_width': 256,
'extra_depths': 2,
'ergonomic_bias': None
}
validated_input = Input(**input_data)
Input
class Input(BaseModel)
AlphaCube 的输入验证器(和预处理器)。
format
输入数据的格式。必须是 'moves' 或 'stickers'。
scramble
指定格式的打乱数据。
beam_width
任务的束宽(beam width)。必须是正整数。
extra_depths
任务的额外深度。必须是非负整数。
ergonomic_bias
可选的顺手度偏好信息(不进行严格验证)。
validate_format
@validator("format")
@classmethod
def validate_format(cls, value: str) -> str
验证输入格式。
参数:
value
str - 要验证的格式值。
返回:
str
- 验证后的格式值。
抛出:
ValueError
- 如果格式不是 'moves' 或 'stickers'。
validate_beam_width
@validator("beam_width")
@classmethod
def validate_beam_width(cls, value)
验证束宽。
参数:
value
- 要验证的束宽值。
返回:
int
- 验证后的束宽值。
抛出:
ValueError
- 如果束宽不是正整数。
validate_extra_depths
@validator("extra_depths")
@classmethod
def validate_extra_depths(cls, value)
验证额外深度。
参数:
value
- 要验证的额外深度值。
返回:
int
- 验证后的额外深度值。
抛出:
ValueError
- 如果额外深度值为负数。
validate_scramble
@model_validator(mode="before")
@classmethod
def validate_scramble(cls, values)
根据所选格式验证和预处理打乱数据。
参数:
values
dict - 输入值。
返回:
dict
- 包含已验证打乱数据的输入值。
抛出:
ValueError
- 如果 'moves' 格式的 'scramble' 中存在无效的转动步骤。ValueError
- 如果 'stickers' 格式(未实现)的 'scramble' 中存在意外的中心块配置。