polaris.run.executor.StepOutcome

class polaris.run.executor.StepOutcome(step_path: str, returncode: int, seconds: float, signal_name: str | None, succeeded: bool, terminated: bool, work_seconds: float | None = None)[source]

How a step ended.

Variables:
  • step_path (str) – Which step this is about.

  • returncode (int) – What its process exited with. Negative means it was killed by a signal rather than exiting on its own.

  • seconds (float) – How long its process took, from forking it to reaping it.

  • work_seconds (float or None) – How long the step itself took, which is what a run should count as work. None where the child could not say, which is any failure before it started timing.

  • signal_name (str or None) – The signal that killed it, where one did.

  • succeeded (bool) – Whether it finished on its own with nothing to report.

  • terminated (bool) – Whether it was killed rather than failing. This is worth telling apart: memory is not enforced, so a step that uses more than it declared exhausts the node and the operating system kills whichever process it chooses, which need not be the step at fault.

__init__(step_path: str, returncode: int, seconds: float, signal_name: str | None, succeeded: bool, terminated: bool, work_seconds: float | None = None) → None

Methods

__init__(step_path, returncode, seconds, ...)

Attributes

work_seconds

step_path

returncode

seconds

signal_name

succeeded

terminated