This repository was archived by the owner on Oct 23, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathutils.py
More file actions
64 lines (54 loc) · 1.69 KB
/
utils.py
File metadata and controls
64 lines (54 loc) · 1.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/usr/bin/env python3
from enum import Enum
from task_maker.task_maker_frontend import Result, Resources, ResultStatus
from typing import Optional, Dict
def enum_to_str(val: Enum) -> Optional[str]:
if val is None:
return None
return str(val).split(".")[-1]
def resources_to_dict(res: Optional[Resources]) -> Optional[dict]:
if res is None:
return None
return {
"cpu_time": res.cpu_time,
"sys_time": res.sys_time,
"wall_time": res.wall_time,
"memory": res.memory
}
def result_to_dict(res: Optional[Result]) -> Optional[dict]:
if res is None:
return None
return {
"status":
enum_to_str(res.status),
"signal":
res.signal if res.status == ResultStatus.SIGNAL else None,
"return_code":
res.return_code if res.status == ResultStatus.RETURN_CODE else None,
"error":
res.error if res.status == ResultStatus.INTERNAL_ERROR else None,
"resources":
resources_to_dict(res.resources),
"was_cached":
res.was_cached,
"was_killed":
res.was_killed
}
def get_compilations(files: Dict[str, "SourceFileCompilationResult"]):
return {
name: {
"status": enum_to_str(compilation.status),
"compilation": get_execution(compilation.execution)
}
for name, compilation in files.items()
}
def get_execution(ex: "Execution"):
if ex is None:
return None
res = {}
if ex.store_stdout:
res["stdout"] = ex.stdout_content
if ex.store_stderr:
res["stderr"] = ex.stderr_content
res["result"] = result_to_dict(ex.result)
return res