style: simplier logic
All checks were successful
build / build (push) Successful in 2m18s

This commit is contained in:
张泊明518370910136 2025-03-06 07:00:23 -05:00
parent a828716fd8
commit f7fad87307
GPG Key ID: D47306D7062CDA9D

View File

@ -152,55 +152,42 @@ 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,
diff_parser_config: result.Parser, diff_parser_config: result.Parser,
diff_executor: result.Executor, diff_executor_config: result.Executor,
base_dir: Path, base_dir: Path,
) -> None: ) -> None:
skip = task_stage.skip valid_cases = (
cases = task_stage.cases (case, task_stage.cases[case])
finalized_cases = [case for case in cases if case not in skip] for case in task_stage.cases
if case not in task_stage.skip and case in task_stage.cases
)
stage_cases = [] stage_cases = []
parser_cases = [] parser_cases = []
for case, case_stage in valid_cases:
for case in finalized_cases:
case_stage = task_stage.cases.get(case) if task_stage.cases else None
if not case_stage:
continue
cpu_limit = case_stage.limit.cpu
clock_limit = 2 * case_stage.limit.cpu
memory_limit = case_stage.limit.mem
command = case_stage.command
stdin = case_stage.in_ if case_stage.in_ != "" else f"{case}.in"
stdout = case_stage.out_ if case_stage.out_ != "" else f"{case}.out"
stage_cases.append( stage_cases.append(
result.OptionalCmd( result.OptionalCmd(
stdin=result.LocalFile( stdin=result.LocalFile(
src=str(base_dir / stdin), src=str(base_dir / (case_stage.in_ or f"{case}.in"))
), ),
args=shlex.split(command) if command else None, args=shlex.split(case_stage.command) if case_stage.command else None,
cpu_limit=cpu_limit, cpu_limit=case_stage.limit.cpu,
clock_limit=clock_limit, clock_limit=2 * case_stage.limit.cpu,
memory_limit=memory_limit, memory_limit=case_stage.limit.mem,
proc_limit=50, proc_limit=50,
) )
) )
diff_output = case_stage.diff.output
parser_cases.append( parser_cases.append(
result.DiffCasesConfig( result.DiffCasesConfig(
outputs=[ outputs=[
result.DiffOutputConfig( result.DiffOutputConfig(
score=diff_output.score, score=case_stage.diff.output.score,
file_name="stdout", file_name="stdout",
answer_path=str(base_dir / stdout), answer_path=str(base_dir / (case_stage.out_ or f"{case}.out")),
force_quit_on_diff=diff_output.force_quit, force_quit_on_diff=case_stage.diff.output.force_quit,
always_hide=diff_output.hide, always_hide=case_stage.diff.output.hide,
compare_space=not diff_output.ignore_spaces, compare_space=not case_stage.diff.output.ignore_spaces,
) )
] ]
) )
) )
diff_executor_config.with_.cases = stage_cases
diff_executor.with_.cases = stage_cases
diff_parser_config.with_ = result.DiffConfig(name="diff", cases=parser_cases) diff_parser_config.with_ = result.DiffConfig(name="diff", cases=parser_cases)