style: more robust code
All checks were successful
build / build (pull_request) Successful in 2m27s
build / build (push) Successful in 2m30s

This commit is contained in:
李衍志523370910113 2025-03-05 08:53:38 +08:00
parent dfe836109c
commit 55da1e8482

View File

@ -1,5 +1,6 @@
import re import re
import shlex import shlex
from pathlib import Path
from typing import Any, Callable, Dict, List, Tuple from typing import Any, Callable, Dict, List, Tuple
from joj3_config_generator.models import result, task from joj3_config_generator.models import result, task
@ -34,7 +35,10 @@ def get_conf_stage(
fn(parser_model, conf_stage.parsers[idx]) fn(parser_model, conf_stage.parsers[idx])
elif parser == "diff": elif parser == "diff":
fix_diff( fix_diff(
task_stage, task_conf, conf_stage.parsers[idx], conf_stage.executor task_stage,
conf_stage.parsers[idx],
conf_stage.executor,
JOJ3_CONFIG_ROOT / task_conf.path.parent,
) )
else: else:
continue continue
@ -154,9 +158,9 @@ def fix_file(file_parser_config: task.ParserFile, file_parser: result.Parser) ->
def fix_diff( def fix_diff(
task_stage: task.Stage, task_stage: task.Stage,
task_conf: task.Config,
diff_parser_config: result.Parser, diff_parser_config: result.Parser,
diff_executor: result.Executor, diff_executor: result.Executor,
base_dir: Path,
) -> None: ) -> None:
skip = task_stage.skip skip = task_stage.skip
cases = task_stage.cases cases = task_stage.cases
@ -180,7 +184,7 @@ def fix_diff(
stage_cases.append( stage_cases.append(
result.OptionalCmd( result.OptionalCmd(
stdin=result.LocalFile( stdin=result.LocalFile(
src=str(JOJ3_CONFIG_ROOT / task_conf.path.parent / stdin), src=str(base_dir / stdin),
), ),
args=shlex.split(command) if command else None, args=shlex.split(command) if command else None,
cpu_limit=cpu_limit, cpu_limit=cpu_limit,
@ -203,9 +207,7 @@ def fix_diff(
result.DiffOutputConfig( result.DiffOutputConfig(
score=diff_output.score, score=diff_output.score,
file_name="stdout", file_name="stdout",
answer_path=str( answer_path=str(base_dir / stdout),
JOJ3_CONFIG_ROOT / task_conf.path.parent / stdout
),
force_quit_on_diff=diff_output.force_quit, force_quit_on_diff=diff_output.force_quit,
always_hide=diff_output.hide, always_hide=diff_output.hide,
compare_space=not diff_output.ignore_spaces, compare_space=not diff_output.ignore_spaces,