feat: support both new & old style for diff
All checks were successful
build / build (pull_request) Successful in 1m34s
build / trigger-build-image (pull_request) Has been skipped
build / build (push) Successful in 1m43s
build / trigger-build-image (push) Has been skipped

This commit is contained in:
张泊明518370910136 2025-06-21 13:55:59 -04:00
parent a79f36bc0e
commit f0c840f549
GPG Key ID: D47306D7062CDA9D

View File

@ -79,6 +79,24 @@ class ParserKeyword(BaseModel):
weight: List[int] = [] weight: List[int] = []
class ParserDiffOutputs(BaseModel):
score: int = 0
ignore_spaces: bool = Field(
True, validation_alias=AliasChoices("ignore-spaces", "ignore_spaces")
)
hide: bool = False
force_quit: bool = Field(
False, validation_alias=AliasChoices("force-quit", "force_quit")
)
max_length: int = Field(
2048, validation_alias=AliasChoices("max-length", "max_length")
)
max_lines: int = Field(50, validation_alias=AliasChoices("max-lines", "max_lines"))
hide_common_prefix: bool = Field(
False, validation_alias=AliasChoices("hide-common-prefix", "hide_common_prefix")
)
class ParserDiff(BaseModel): class ParserDiff(BaseModel):
score: int = DEFAULT_CASE_SCORE score: int = DEFAULT_CASE_SCORE
ignore_spaces: bool = Field( ignore_spaces: bool = Field(
@ -95,6 +113,23 @@ class ParserDiff(BaseModel):
hide_common_prefix: bool = Field( hide_common_prefix: bool = Field(
False, validation_alias=AliasChoices("hide-common-prefix", "hide_common_prefix") False, validation_alias=AliasChoices("hide-common-prefix", "hide_common_prefix")
) )
# remove below codes when migration is complete
output: ParserDiffOutputs = ParserDiffOutputs()
default_score: int = Field(
DEFAULT_CASE_SCORE,
validation_alias=AliasChoices("default-score", "default_score"),
)
@model_validator(mode="after")
def copy_output_fields(self) -> "ParserDiff":
if "default_score" in self.model_fields_set:
self.score = self.default_score
if not isinstance(self.output, ParserDiffOutputs):
return self
for field_name, field_value in self.output.model_dump().items():
if field_name in self.output.model_fields_set and hasattr(self, field_name):
setattr(self, field_name, field_value)
return self
class StageFiles(BaseModel): class StageFiles(BaseModel):