跳到主要内容

输入验证器

该模块定义了 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' 中存在意外的中心块配置(未实现)。