Skip to content

evolvent-ai/dp-lint

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

dp-lint

数据生产平台验收规则 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

LintRule 类属性

属性 类型 说明
name str 规则名称(必填),显示在平台界面
dimension str 验收维度(必填),如"格式""内容""完整性"
description str 规则说明(必填)

LintResult 字段

字段 类型 说明
passed bool 是否通过(必填)
checker_id str 检查项标识(必填),英文,如 "problem-json-valid"
message str 说明文字(必填),如 "JSON 合法"
task_id str 自动填充,无需设置
score float 自动填充,通过=1.0 失败=0.0

check() 方法

  • 参数 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 展示所有规则
  • 在线编辑器可直接修改和测试
  • 提交数据时自动运行验收
  • 「验收视图」可手动触发全量验收

About

数据生产平台验收规则 SDK

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages