feat: implement StrEnum for parser
This commit is contained in:
parent
924325b933
commit
345f6daa32
|
@ -3,6 +3,7 @@ from typing import Union
|
|||
import humanfriendly
|
||||
|
||||
|
||||
# FIXME: we don't need to compact for int
|
||||
class Memory(int):
|
||||
def __new__(cls, value: Union[str, int]) -> "Memory":
|
||||
if isinstance(value, str):
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
from datetime import datetime, timedelta
|
||||
from enum import StrEnum
|
||||
from pathlib import Path
|
||||
from typing import Any, Dict, List, Type
|
||||
|
||||
|
@ -80,6 +81,18 @@ class Limit(BaseModel):
|
|||
raise ValueError("Must be a string")
|
||||
|
||||
|
||||
class Parser(StrEnum):
|
||||
CLANG_TIDY = "clangtidy"
|
||||
CPPCHECK = "cppcheck"
|
||||
CPPLINT = "cpplint"
|
||||
KEYWORD = "keyword"
|
||||
RESULT_STATUS = "result-status"
|
||||
RESULT_DETAIL = "result-detail"
|
||||
DUMMY = "dummy"
|
||||
FILE = "file"
|
||||
DIFF = "diff"
|
||||
|
||||
|
||||
class Stage(BaseModel):
|
||||
name: str = "" # Stage name
|
||||
env: List[str] = []
|
||||
|
@ -88,7 +101,7 @@ class Stage(BaseModel):
|
|||
in_: str = Field("", alias="in")
|
||||
out_: str = Field("", alias="out")
|
||||
score: int = 0
|
||||
parsers: List[str] = [] # list of parsers
|
||||
parsers: List[Parser] = [] # list of parsers
|
||||
limit: Limit = Limit()
|
||||
dummy: ParserDummy = ParserDummy()
|
||||
result_status: ParserDummy = Field(ParserDummy(), alias="result-status")
|
||||
|
|
|
@ -6,6 +6,7 @@ from typing import Any, Callable, Dict, List, Tuple
|
|||
from joj3_config_generator.models import result, task
|
||||
from joj3_config_generator.models.common import Memory, Time
|
||||
from joj3_config_generator.models.const import JOJ3_CONFIG_ROOT
|
||||
from joj3_config_generator.models.task import Parser as parser_enum
|
||||
|
||||
|
||||
def get_conf_stage(
|
||||
|
@ -32,7 +33,7 @@ def get_conf_stage(
|
|||
if parser in processed_dict:
|
||||
fn, parser_model = processed_dict[parser]
|
||||
fn(parser_model, conf_stage.parsers[idx])
|
||||
elif parser == "diff":
|
||||
elif parser == parser_enum.DIFF:
|
||||
fix_diff(
|
||||
task_stage,
|
||||
conf_stage.parsers[idx],
|
||||
|
@ -46,16 +47,18 @@ def get_conf_stage(
|
|||
|
||||
def get_processed_dict(
|
||||
task_stage: task.Stage,
|
||||
) -> Dict[str, Tuple[Callable[[Any, result.Parser], None], Any]]:
|
||||
processed_dict: Dict[str, Tuple[Callable[[Any, result.Parser], None], Any]] = {
|
||||
"clangtidy": (fix_keyword, task_stage.clangtidy),
|
||||
"keyword": (fix_keyword, task_stage.keyword),
|
||||
"cppcheck": (fix_keyword, task_stage.cppcheck),
|
||||
"cpplint": (fix_keyword, task_stage.cpplint),
|
||||
"result-detail": (fix_result_detail, task_stage.result_detail),
|
||||
"dummy": (fix_dummy, task_stage.dummy),
|
||||
"result-status": (fix_dummy, task_stage.result_status),
|
||||
"file": (fix_file, task_stage.file),
|
||||
) -> Dict[parser_enum, Tuple[Callable[[Any, result.Parser], None], Any]]:
|
||||
processed_dict: Dict[
|
||||
parser_enum, Tuple[Callable[[Any, result.Parser], None], Any]
|
||||
] = {
|
||||
parser_enum.CLANG_TIDY: (fix_keyword, task_stage.clangtidy),
|
||||
parser_enum.KEYWORD: (fix_keyword, task_stage.keyword),
|
||||
parser_enum.CPPCHECK: (fix_keyword, task_stage.cppcheck),
|
||||
parser_enum.CPPLINT: (fix_keyword, task_stage.cpplint),
|
||||
parser_enum.RESULT_DETAIL: (fix_result_detail, task_stage.result_detail),
|
||||
parser_enum.DUMMY: (fix_dummy, task_stage.dummy),
|
||||
parser_enum.RESULT_STATUS: (fix_dummy, task_stage.result_status),
|
||||
parser_enum.FILE: (fix_file, task_stage.file),
|
||||
}
|
||||
return processed_dict
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user