refactor: use partial to simplify parsers function maps
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				build / build (push) Successful in 2m2s
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	build / build (push) Successful in 2m2s
				
			This commit is contained in:
		
							parent
							
								
									df14ad801b
								
							
						
					
					
						commit
						75558700b4
					
				|  | @ -1,5 +1,6 @@ | ||||||
| import re | import re | ||||||
| import shlex | import shlex | ||||||
|  | from functools import partial | ||||||
| from pathlib import Path | from pathlib import Path | ||||||
| from typing import Any, Callable, Dict, List, Tuple | from typing import Any, Callable, Dict, List, Tuple | ||||||
| 
 | 
 | ||||||
|  | @ -28,29 +29,25 @@ def get_conf_stage( | ||||||
|         ), |         ), | ||||||
|         parsers=([result.Parser(name=parser) for parser in task_stage.parsers]), |         parsers=([result.Parser(name=parser) for parser in task_stage.parsers]), | ||||||
|     ) |     ) | ||||||
|     processed_dict = get_processed_dict(task_stage) |     parser_handler_map = get_parser_handler_map( | ||||||
|  |         task_stage, | ||||||
|  |         conf_stage.executor, | ||||||
|  |         JOJ3_CONFIG_ROOT / task_conf.path.parent, | ||||||
|  |     ) | ||||||
|     for idx, parser in enumerate(task_stage.parsers): |     for idx, parser in enumerate(task_stage.parsers): | ||||||
|         if parser in processed_dict: |         if parser not in parser_handler_map: | ||||||
|             fn, parser_model = processed_dict[parser] |             raise ValueError(f"Unknown parser {parser}") | ||||||
|             fn(parser_model, conf_stage.parsers[idx]) |         fn, parser_model = parser_handler_map[parser] | ||||||
|         elif parser == ParserEnum.DIFF: |         fn(parser_model, conf_stage.parsers[idx]) | ||||||
|             fix_diff( |  | ||||||
|                 task_stage, |  | ||||||
|                 conf_stage.parsers[idx], |  | ||||||
|                 conf_stage.executor, |  | ||||||
|                 JOJ3_CONFIG_ROOT / task_conf.path.parent, |  | ||||||
|             ) |  | ||||||
|         else: |  | ||||||
|             continue |  | ||||||
|     return conf_stage |     return conf_stage | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def get_processed_dict( | def get_parser_handler_map( | ||||||
|     task_stage: task.Stage, |     task_stage: task.Stage, | ||||||
|  |     diff_executor_config: result.Executor, | ||||||
|  |     base_dir: Path, | ||||||
| ) -> Dict[ParserEnum, Tuple[Callable[[Any, result.Parser], None], Any]]: | ) -> Dict[ParserEnum, Tuple[Callable[[Any, result.Parser], None], Any]]: | ||||||
|     processed_dict: Dict[ |     return { | ||||||
|         ParserEnum, Tuple[Callable[[Any, result.Parser], None], Any] |  | ||||||
|     ] = { |  | ||||||
|         ParserEnum.CLANG_TIDY: (fix_keyword, task_stage.clangtidy), |         ParserEnum.CLANG_TIDY: (fix_keyword, task_stage.clangtidy), | ||||||
|         ParserEnum.KEYWORD: (fix_keyword, task_stage.keyword), |         ParserEnum.KEYWORD: (fix_keyword, task_stage.keyword), | ||||||
|         ParserEnum.CPPCHECK: (fix_keyword, task_stage.cppcheck), |         ParserEnum.CPPCHECK: (fix_keyword, task_stage.cppcheck), | ||||||
|  | @ -59,8 +56,16 @@ def get_processed_dict( | ||||||
|         ParserEnum.DUMMY: (fix_dummy, task_stage.dummy), |         ParserEnum.DUMMY: (fix_dummy, task_stage.dummy), | ||||||
|         ParserEnum.RESULT_STATUS: (fix_dummy, task_stage.result_status), |         ParserEnum.RESULT_STATUS: (fix_dummy, task_stage.result_status), | ||||||
|         ParserEnum.FILE: (fix_file, task_stage.file), |         ParserEnum.FILE: (fix_file, task_stage.file), | ||||||
|  |         ParserEnum.DIFF: ( | ||||||
|  |             partial( | ||||||
|  |                 fix_diff, | ||||||
|  |                 task_stage=task_stage, | ||||||
|  |                 diff_executor_config=diff_executor_config, | ||||||
|  |                 base_dir=base_dir, | ||||||
|  |             ), | ||||||
|  |             task_stage.diff, | ||||||
|  |         ), | ||||||
|     } |     } | ||||||
|     return processed_dict |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def get_executor_with( | def get_executor_with( | ||||||
|  | @ -150,8 +155,9 @@ def fix_file(file_parser_config: task.ParserFile, file_parser: result.Parser) -> | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def fix_diff( | def fix_diff( | ||||||
|     task_stage: task.Stage, |     _: task.ParserDiff, | ||||||
|     diff_parser_config: result.Parser, |     diff_parser_config: result.Parser, | ||||||
|  |     task_stage: task.Stage, | ||||||
|     diff_executor_config: result.Executor, |     diff_executor_config: result.Executor, | ||||||
|     base_dir: Path, |     base_dir: Path, | ||||||
| ) -> None: | ) -> None: | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user