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