数据生产平台验收规则 SDK。用于编写和本地调试验收规则。
pip install -e /path/to/dp-lint在数据集工作目录的 lints/ 下创建 Python 文件:
# lints/format_check.py
from dp_lint import LintRule, LintResult
import os
import json
class FormatCheck(LintRule):
name = "格式校验"
dimension = "格式"
description = "检查 problem.json 完整性"
def check(self, task_dir: str) -> list[LintResult]:
results = []
pjson = os.path.join(task_dir, "problem.json")
if not os.path.isfile(pjson):
results.append(LintResult(
passed=False,
checker_id="problem-json",
message="problem.json 不存在"
))
return results
with open(pjson) as f:
data = json.load(f)
required = ["title", "difficulty", "tags", "statement"]
missing = [k for k in required if k not in data]
if missing:
results.append(LintResult(
passed=False,
checker_id="required-fields",
message=f"缺少字段: {', '.join(missing)}"
))
else:
results.append(LintResult(
passed=True,
checker_id="required-fields",
message="必填字段完整"
))
return results| 属性 | 类型 | 说明 |
|---|---|---|
name |
str | 规则名称(必填),显示在平台界面 |
dimension |
str | 验收维度(必填),如"格式""内容""完整性" |
description |
str | 规则说明(必填) |
| 字段 | 类型 | 说明 |
|---|---|---|
passed |
bool | 是否通过(必填) |
checker_id |
str | 检查项标识(必填),英文,如 "problem-json-valid" |
message |
str | 说明文字(必填),如 "JSON 合法" |
task_id |
str | 自动填充,无需设置 |
score |
float | 自动填充,通过=1.0 失败=0.0 |
- 参数
task_dir: 单个 task 目录的绝对路径 - 返回:
list[LintResult] - 对每个检查项返回一个 LintResult
- 可以 import 标准库:
os,json,glob,re,pathlib等
# 工作目录结构
workspace/
├── lints/ # 你的验收规则
│ └── format_check.py
├── example_tasks/ # 示例数据(用于调试)
│ └── 001题目名称/
│ └── problem.json
└── tasks/ # 正式数据
└── ...
# 对 example_tasks/ 跑所有规则
python -m dp_lint /path/to/workspace --example-tasks
# 对 tasks/ 跑所有规则
python -m dp_lint /path/to/workspace
# 只跑指定规则
python -m dp_lint /path/to/workspace format_check.py --example-tasks输出示例:
✓ [格式] 格式校验: 全部 10 项检查通过
✓ [001模糊记忆的斯诺克] required-fields: 必填字段完整
✓ [001模糊记忆的斯诺克] standard-cpp: 存在
...
✗ [完整性] 文件完整性检查: 3 项通过,1 项未通过
✓ [001模糊记忆的斯诺克] solution-md-exists: 存在
✗ [002追随箭头] solution-md-exists: solution.md 缺失
...
============================================================
总计: 20 项检查,19 通过,1 未通过
规则脚本放到数据集的 lints/ 目录后,平台会自动发现:
- 在「验收规则」Tab 展示所有规则
- 在线编辑器可直接修改和测试
- 提交数据时自动运行验收
- 「验收视图」可手动触发全量验收