From c36e710668cdd19db9cedf829e630eb661d3f157 Mon Sep 17 00:00:00 2001 From: Boming Zhang Date: Sun, 2 Mar 2025 22:44:53 -0500 Subject: [PATCH] refactor: better code style --- joj3_config_generator/convert.py | 23 +++---------- joj3_config_generator/processers/repo.py | 2 +- joj3_config_generator/processers/task.py | 42 +++++++++++------------- 3 files changed, 24 insertions(+), 43 deletions(-) diff --git a/joj3_config_generator/convert.py b/joj3_config_generator/convert.py index 6031218..419094e 100644 --- a/joj3_config_generator/convert.py +++ b/joj3_config_generator/convert.py @@ -4,18 +4,10 @@ from typing import Set from joj3_config_generator.models import joj1, repo, result, task from joj3_config_generator.models.const import CACHE_ROOT, JOJ3_CONFIG_ROOT from joj3_config_generator.processers.repo import ( - get_health_check_config, + get_health_check_stage, get_teapot_stage, ) -from joj3_config_generator.processers.task import ( - fix_diff, - fix_dummy, - fix_file, - fix_keyword, - fix_result_detail, - get_conf_stage, - get_executor_with_config, -) +from joj3_config_generator.processers.task import get_conf_stage def convert(repo_conf: repo.Config, task_conf: task.Config) -> result.Config: @@ -34,18 +26,11 @@ def convert(repo_conf: repo.Config, task_conf: task.Config) -> result.Config: current_test = os.environ.get("PYTEST_CURRENT_TEST") is not None # Construct health check stage if not repo_conf.force_skip_health_check_on_test or not current_test: - result_conf.stage.stages.append(get_health_check_config(repo_conf)) + result_conf.stage.stages.append(get_health_check_stage(repo_conf)) cached: Set[str] = set() # Convert each stage in the task configuration for task_stage in task_conf.stages: - executor_with_config = get_executor_with_config(task_stage, cached) - conf_stage = get_conf_stage(task_stage, executor_with_config) - conf_stage = fix_result_detail(task_stage, conf_stage) - conf_stage = fix_dummy(task_stage, conf_stage) - conf_stage = fix_keyword(task_stage, conf_stage) - conf_stage = fix_file(task_stage, conf_stage) - conf_stage = fix_diff(task_stage, conf_stage, task_conf) - result_conf.stage.stages.append(conf_stage) + result_conf.stage.stages.append(get_conf_stage(task_conf, task_stage, cached)) if not repo_conf.force_skip_teapot_on_test or not current_test: result_conf.stage.post_stages.append(get_teapot_stage(repo_conf)) diff --git a/joj3_config_generator/processers/repo.py b/joj3_config_generator/processers/repo.py index f8e9ddb..cf7ddbf 100644 --- a/joj3_config_generator/processers/repo.py +++ b/joj3_config_generator/processers/repo.py @@ -67,7 +67,7 @@ def get_teapot_check_args(repo_conf: repo.Config) -> List[str]: ] -def get_health_check_config(repo_conf: repo.Config) -> result.StageDetail: +def get_health_check_stage(repo_conf: repo.Config) -> result.StageDetail: health_check_stage = result.StageDetail( name="Health Check", group="", diff --git a/joj3_config_generator/processers/task.py b/joj3_config_generator/processers/task.py index 5ad6234..a57826c 100644 --- a/joj3_config_generator/processers/task.py +++ b/joj3_config_generator/processers/task.py @@ -7,7 +7,9 @@ from joj3_config_generator.models.const import JOJ3_CONFIG_ROOT def get_conf_stage( - task_stage: task.Stage, executor_with_config: result.ExecutorWith + task_conf: task.Config, + task_stage: task.Stage, + cached: Set[str], ) -> result.StageDetail: conf_stage = result.StageDetail( name=task_stage.name, @@ -20,7 +22,7 @@ def get_conf_stage( ), executor=result.Executor( name="sandbox", - with_=executor_with_config, + with_=get_executor_with(task_stage, cached), ), parsers=( [ @@ -29,12 +31,15 @@ def get_conf_stage( ] ), ) + fix_result_detail(task_stage, conf_stage) + fix_dummy(task_stage, conf_stage) + fix_keyword(task_stage, conf_stage) + fix_file(task_stage, conf_stage) + fix_diff(task_stage, task_conf, conf_stage) return conf_stage -def get_executor_with_config( - task_stage: task.Stage, cached: Set[str] -) -> result.ExecutorWith: +def get_executor_with(task_stage: task.Stage, cached: Set[str]) -> result.ExecutorWith: file_import = task_stage.files.import_ copy_in_files = [file for file in file_import if file not in cached] file_export = task_stage.files.export @@ -97,11 +102,9 @@ def fix_keyword( return conf_stage -def fix_result_detail( - task_stage: task.Stage, conf_stage: result.StageDetail -) -> result.StageDetail: +def fix_result_detail(task_stage: task.Stage, conf_stage: result.StageDetail) -> None: if "result-detail" not in task_stage.parsers: - return conf_stage + return result_detail_parser = next( p for p in conf_stage.parsers if p.name == "result-detail" ) @@ -121,12 +124,8 @@ def fix_result_detail( ).model_dump(by_alias=True) ) - return conf_stage - -def fix_dummy( - task_stage: task.Stage, conf_stage: result.StageDetail -) -> result.StageDetail: +def fix_dummy(task_stage: task.Stage, conf_stage: result.StageDetail) -> None: dummy_parser = [ "dummy", "result-status", @@ -146,28 +145,25 @@ def fix_dummy( force_quit_on_not_accepted=task_stage.result_status.force_quit, ).model_dump(by_alias=True) ) - return conf_stage + return -def fix_file( - task_stage: task.Stage, conf_stage: result.StageDetail -) -> result.StageDetail: +def fix_file(task_stage: task.Stage, conf_stage: result.StageDetail) -> None: file_parser = ["file"] for parser in task_stage.parsers: if parser not in file_parser: continue file_parser_ = next(p for p in conf_stage.parsers if p.name == parser) file_parser_.with_.update({"name": task_stage.file.name}) - return conf_stage def fix_diff( task_stage: task.Stage, - conf_stage: result.StageDetail, task_conf: task.Config, -) -> result.StageDetail: + conf_stage: result.StageDetail, +) -> None: if "diff" not in task_stage.parsers: - return conf_stage + return diff_parser = next((p for p in conf_stage.parsers if p.name == "diff"), None) skip = task_stage.skip cases = task_stage.cases @@ -229,4 +225,4 @@ def fix_diff( diff_parser.with_.update({"name": "diff", "cases": parser_cases}) conf_stage.executor.with_.cases = stage_cases - return conf_stage + return