diff --git a/src/codemodder/codetf/common.py b/src/codemodder/codetf/common.py index fa1086ec..7bfdee6d 100644 --- a/src/codemodder/codetf/common.py +++ b/src/codemodder/codetf/common.py @@ -84,3 +84,14 @@ def validate_description(self): if self.description is not None and not self.description: raise ValueError("description must not be empty") return self + + +class Rating(BaseModel): + score: int + description: Optional[str] = None + + +class FixQuality(BaseModel): + safetyRating: Rating + effectivenessRating: Rating + cleanlinessRating: Rating diff --git a/src/codemodder/codetf/v2/codetf.py b/src/codemodder/codetf/v2/codetf.py index c4920179..2528a747 100644 --- a/src/codemodder/codetf/v2/codetf.py +++ b/src/codemodder/codetf/v2/codetf.py @@ -21,6 +21,7 @@ from ..common import Change as CommonChange from ..common import ( CodeTFWriter, + FixQuality, Rule, ) @@ -104,17 +105,6 @@ class Strategy(Enum): deterministic = "deterministic" -class Rating(BaseModel): - score: int - description: Optional[str] = None - - -class FixQuality(BaseModel): - safetyRating: Rating - effectivenessRating: Rating - cleanlinessRating: Rating - - class ChangeSet(BaseModel): """A set of changes made to a file at `path`""" diff --git a/src/codemodder/codetf/v3/codetf.py b/src/codemodder/codetf/v3/codetf.py index 255b8cec..dc5ccff1 100644 --- a/src/codemodder/codetf/v3/codetf.py +++ b/src/codemodder/codetf/v3/codetf.py @@ -5,7 +5,7 @@ from pydantic import BaseModel, model_validator -from ..common import Change, CodeTFWriter, Finding +from ..common import Change, CodeTFWriter, Finding, FixQuality from ..v2.codetf import Finding as V2Finding @@ -41,14 +41,14 @@ class FixStatus(BaseModel): """Metadata describing fix outcome""" status: FixStatusType - reason: Optional[str] - details: Optional[str] + reason: Optional[str] = None + details: Optional[str] = None class ChangeSet(BaseModel): path: str diff: str - changes: list[Change] + changes: list[Change] = [] class Reference(BaseModel): @@ -88,27 +88,16 @@ class FixMetadata(BaseModel): summary: str # A detailed description of the fix description: str - references: list[Reference] + references: list[Reference] = [] generation: GenerationMetadata -class Rating(BaseModel): - score: int - description: Optional[str] = None - - -class FixQuality(BaseModel): - safetyRating: Rating - effectivenessRating: Rating - cleanlinessRating: Rating - - class FixResult(BaseModel): """Result corresponding to a single finding""" finding: Finding | V2Finding fixStatus: FixStatus - changeSets: list[ChangeSet] + changeSets: list[ChangeSet] = [] fixMetadata: Optional[FixMetadata] = None fixQuality: Optional[FixQuality] = None # A description of the reasoning process that led to the fix