Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions src/bcbench/dataset/codereview.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from __future__ import annotations

from enum import StrEnum
from typing import Annotated

from pydantic import BaseModel, ConfigDict, Field, field_validator

Expand Down Expand Up @@ -46,11 +47,11 @@ def from_input(cls, value: str) -> Severity:
class ReviewComment(BaseModel):
model_config = ConfigDict(frozen=True)

file: str
line_start: int
line_end: int | None = None
file: Annotated[str, Field(pattern=r"^[A-Za-z0-9][A-Za-z0-9./_-]*\.(al|json)$")]
line_start: Annotated[int, Field(ge=1)]
line_end: Annotated[int, Field(ge=1)] | None = None
domain: str | None = None
body: str
body: Annotated[str, Field(min_length=1)]
severity: Severity | None = None

@field_validator("severity", mode="before")
Expand Down
14 changes: 7 additions & 7 deletions src/bcbench/dataset/dataset_entry.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,15 @@
class TestEntry(BaseModel):
model_config = ConfigDict(frozen=True)

codeunitID: int
codeunitID: Annotated[int, Field(gt=0)]
functionName: Annotated[frozenset[str], Field(min_length=1)]


class EntryMetadata(BaseModel):
model_config = ConfigDict(frozen=True)

area: str | None = None
image_count: int | None = None
image_count: Annotated[int, Field(ge=0)] | None = None
persona: str | None = None


Expand All @@ -44,8 +44,8 @@ class BaseDatasetEntry(BaseModel):
base_commit: str = Field(pattern=r"^[a-fA-F0-9]{40}$")
created_at: Annotated[str, Field(min_length=1)]
environment_setup_version: str = Field(pattern=r"^[0-9]{2}\.[0-9]{1}$")
project_paths: list[str] = []
patch: Annotated[str, Field(min_length=1)]
project_paths: list[Annotated[str, Field(pattern=r"^[A-Za-z0-9][A-Za-z0-9 \\/-]*$")]] = []
patch: Annotated[str, Field(min_length=1, pattern=r"^[^\x00]*$")]

@classmethod
def load(cls, dataset_path: Path, entry_id: str | None = None, random: int | None = None) -> list[Self]:
Expand Down Expand Up @@ -112,7 +112,7 @@ class _BugFixTestGenBase(BaseDatasetEntry):

fail_to_pass: Annotated[list[TestEntry], Field(alias="FAIL_TO_PASS", min_length=1)]
pass_to_pass: Annotated[list[TestEntry], Field(alias="PASS_TO_PASS")] = []
test_patch: Annotated[str, Field(min_length=1)]
test_patch: Annotated[str, Field(min_length=1, pattern=r"^[^\x00]*$")]

@property
def problem_statement_dir(self) -> Path:
Expand Down Expand Up @@ -158,9 +158,9 @@ class NL2ALEntry(BaseDatasetEntry):
"""Dataset entry for NL2AL category — generate AL code from natural language."""

base_commit: str | None = None
nl_prompt: Annotated[str, Field(min_length=1)]
nl_prompt: Annotated[str, Field(min_length=1, pattern=r"^[^\x00]*$")]
expected: Annotated[list[ChecklistAssertion], Field(min_length=1)]
page: str
page: Annotated[str, Field(pattern=r"^[A-Za-z0-9][A-Za-z0-9 ./]*$")]
audience: Literal["Business", "Technical", "Both"]

def get_task(self) -> str:
Expand Down
Loading