输入验证器
该模块定义了 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
任务的搜索宽度。必须是正整数。
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' 中存在意外的中心块配置(未实现)。