aboutsummaryrefslogtreecommitdiffstats
path: root/snekbox/process.py
diff options
context:
space:
mode:
Diffstat (limited to 'snekbox/process.py')
-rw-r--r--snekbox/process.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/snekbox/process.py b/snekbox/process.py
new file mode 100644
index 0000000..552b91a
--- /dev/null
+++ b/snekbox/process.py
@@ -0,0 +1,32 @@
+"""Utilities for process management."""
+from collections.abc import Sequence
+from os import PathLike
+from subprocess import CompletedProcess
+from typing import TypeVar
+
+from snekbox.snekio import FileAttachment
+
+_T = TypeVar("_T")
+ArgType = (
+ str
+ | bytes
+ | PathLike[str]
+ | PathLike[bytes]
+ | Sequence[str | bytes | PathLike[str] | PathLike[bytes]]
+)
+
+
+class EvalResult(CompletedProcess[_T]):
+ """An evaluation job that has finished running."""
+
+ def __init__(
+ self,
+ args: ArgType,
+ returncode: int | None,
+ stdout: _T | None = None,
+ stderr: _T | None = None,
+ files: list[FileAttachment] | None = None,
+ ) -> None:
+ """Create an evaluation result."""
+ super().__init__(args, returncode, stdout, stderr)
+ self.files: list[FileAttachment] = files or []