moreover's picture
first commit
acd4009
raw
history blame
1.45 kB
from dataclasses import dataclass, field
from unittest import ExtendedUnittest
from resource_limit import ResourceLimits
def fix_uts(uts):
uts_fx = []
for ut in uts:
uts_fx.append({
"input": ut["input"],
"output": ut["output"],
})
return uts_fx
@dataclass
class JobData:
language: str
source_code: str
unittests: list[ExtendedUnittest]
compile_cmd: str | None = None
compile_flags: str | None = None
execute_cmd: str | None = None
execute_flags: str | None = None
limits: ResourceLimits | None = None
block_network: bool = True
stop_on_first_fail: bool = True
use_sanitizer: bool = False
@classmethod
def json_parser(cls, form):
return cls(
language=form.get("language"),
source_code=form.get("source_code"),
unittests=[ExtendedUnittest(**t) for t in fix_uts(form.get("unittests"))],
compile_cmd=form.get("compile_cmd"),
compile_flags=form.get("compile_flags"),
execute_cmd=form.get("execute_cmd"),
execute_flags=form.get("execute_flags"),
limits=ResourceLimits(**form.get("limits")) if form.get("limits") is not None else None,
block_network=form.get("block_network", True),
stop_on_first_fail=form.get("stop_on_first_fail", True),
use_sanitizer=form.get("use_sanitizer", False),
)
@dataclass
class LanguageError:
msg: str