feat: use default cmd in diff parser
Some checks failed
build / build (push) Failing after 2m1s

This commit is contained in:
张泊明518370910136 2025-03-18 03:27:58 -04:00
parent 75558700b4
commit dc8ae85cc8
GPG Key ID: D47306D7062CDA9D
3 changed files with 42 additions and 42 deletions

View File

@ -44,7 +44,7 @@ def get_conf_stage(
def get_parser_handler_map( def get_parser_handler_map(
task_stage: task.Stage, task_stage: task.Stage,
diff_executor_config: result.Executor, executor: result.Executor,
base_dir: Path, base_dir: Path,
) -> Dict[ParserEnum, Tuple[Callable[[Any, result.Parser], None], Any]]: ) -> Dict[ParserEnum, Tuple[Callable[[Any, result.Parser], None], Any]]:
return { return {
@ -60,7 +60,7 @@ def get_parser_handler_map(
partial( partial(
fix_diff, fix_diff,
task_stage=task_stage, task_stage=task_stage,
diff_executor_config=diff_executor_config, executor=executor,
base_dir=base_dir, base_dir=base_dir,
), ),
task_stage.diff, task_stage.diff,
@ -156,9 +156,9 @@ def fix_file(file_parser_config: task.ParserFile, file_parser: result.Parser) ->
def fix_diff( def fix_diff(
_: task.ParserDiff, _: task.ParserDiff,
diff_parser_config: result.Parser, diff_parser: result.Parser,
task_stage: task.Stage, task_stage: task.Stage,
diff_executor_config: result.Executor, executor: result.Executor,
base_dir: Path, base_dir: Path,
) -> None: ) -> None:
valid_cases = ( valid_cases = (
@ -169,31 +169,39 @@ def fix_diff(
stage_cases = [] stage_cases = []
parser_cases = [] parser_cases = []
for case, case_stage in valid_cases: for case, case_stage in valid_cases:
stage_cases.append( cmd = result.OptionalCmd(
result.OptionalCmd( stdin=result.LocalFile(
stdin=result.LocalFile( src=str(base_dir / (case_stage.in_ or f"{case}.in"))
src=str(base_dir / (case_stage.in_ or f"{case}.in")) ),
), args=shlex.split(case_stage.command) if case_stage.command else None,
args=shlex.split(case_stage.command) if case_stage.command else None, cpu_limit=case_stage.limit.cpu,
cpu_limit=case_stage.limit.cpu, clock_limit=2 * case_stage.limit.cpu,
clock_limit=2 * case_stage.limit.cpu, memory_limit=case_stage.limit.mem,
memory_limit=case_stage.limit.mem, proc_limit=50,
proc_limit=50,
)
) )
parser_cases.append( if cmd.args == executor.with_.default.args:
result.DiffCasesConfig( cmd.args = None
outputs=[ if cmd.cpu_limit == executor.with_.default.cpu_limit:
result.DiffOutputConfig( cmd.cpu_limit = None
score=case_stage.diff.output.score, if cmd.clock_limit == executor.with_.default.clock_limit:
file_name="stdout", cmd.clock_limit = None
answer_path=str(base_dir / (case_stage.out_ or f"{case}.out")), if cmd.memory_limit == executor.with_.default.memory_limit:
force_quit_on_diff=case_stage.diff.output.force_quit, cmd.memory_limit = None
always_hide=case_stage.diff.output.hide, if cmd.proc_limit == executor.with_.default.proc_limit:
compare_space=not case_stage.diff.output.ignore_spaces, cmd.proc_limit = None
) stage_cases.append(cmd)
] parser_case = result.DiffCasesConfig(
) outputs=[
result.DiffOutputConfig(
score=case_stage.diff.output.score,
file_name="stdout",
answer_path=str(base_dir / (case_stage.out_ or f"{case}.out")),
force_quit_on_diff=case_stage.diff.output.force_quit,
always_hide=case_stage.diff.output.hide,
compare_space=not case_stage.diff.output.ignore_spaces,
)
]
) )
diff_executor_config.with_.cases = stage_cases parser_cases.append(parser_case)
diff_parser_config.with_ = result.DiffConfig(name="diff", cases=parser_cases) executor.with_.cases = stage_cases
diff_parser.with_ = result.DiffConfig(name="diff", cases=parser_cases)

View File

@ -712,17 +712,13 @@
}, },
"cpuLimit": 500000000, "cpuLimit": 500000000,
"clockLimit": 1000000000, "clockLimit": 1000000000,
"memoryLimit": 5242880, "memoryLimit": 5242880
"procLimit": 50
}, },
{ {
"stdin": { "stdin": {
"src": "/home/tt/.config/joj/basic/case1.in" "src": "/home/tt/.config/joj/basic/case1.in"
}, },
"cpuLimit": 1000000000, "memoryLimit": 5242880
"clockLimit": 2000000000,
"memoryLimit": 5242880,
"procLimit": 50
} }
] ]
} }

View File

@ -66,10 +66,7 @@
"stdin": { "stdin": {
"src": "/home/tt/.config/joj/diff/case0.in" "src": "/home/tt/.config/joj/diff/case0.in"
}, },
"cpuLimit": 1000000000, "memoryLimit": 2097152
"clockLimit": 2000000000,
"memoryLimit": 2097152,
"procLimit": 50
}, },
{ {
"stdin": { "stdin": {
@ -77,8 +74,7 @@
}, },
"cpuLimit": 2000000000, "cpuLimit": 2000000000,
"clockLimit": 4000000000, "clockLimit": 4000000000,
"memoryLimit": 4194304, "memoryLimit": 4194304
"procLimit": 50
} }
] ]
} }