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