JOJ3-config-generator/joj3_config_generator/processers/joj1.py
李衍志523370910113 d1b718a30c
Some checks failed
build / build (push) Failing after 0s
build / build (pull_request) Failing after 2m22s
ci: only use runs-on
2025-02-24 10:09:28 +08:00

51 lines
1.7 KiB
Python

import humanfriendly
from pytimeparse.timeparse import timeparse
from joj3_config_generator.models import joj1, task
def get_joj1_run_stage(joj1_config: joj1.Config) -> task.Stage:
default_cpu = timeparse("1s")
default_mem = humanfriendly.parse_size("32m")
cases_conf = []
for i, case in enumerate(joj1_config.cases):
cases_conf.append(
task.Stage(
score=case.score,
command=case.execute_args if case.execute_args else None,
limit=task.Limit(
cpu=timeparse(case.time) if case.time else default_cpu,
mem=(
humanfriendly.parse_size(case.memory)
if case.memory
else default_mem
),
),
)
)
for i, case in enumerate(joj1_config.cases):
cases_conf[i].in_ = case.input
cases_conf[i].out_ = case.output
run_config = task.Stage(
name="This is the converted joj1 run stage",
parsers=["diff", "result-status"],
score=100,
limit=task.Limit(
cpu=(
timeparse(joj1_config.cases[0].time)
if joj1_config.cases[0].time is not None
else default_cpu
),
mem=(
humanfriendly.parse_size(joj1_config.cases[0].memory)
if joj1_config.cases[0].memory is not None
else default_mem
),
),
cases={f"case{i}": cases_conf[i] for i, _ in enumerate(joj1_config.cases)},
)
return run_config
# TODO: get formatted joj1 config, match the criterion in the doc