Source code for psij.job_status
import time as t
from typing import Optional, Dict
from psij.job_state import JobState
[docs]class JobStatus(object):
"""A class containing details about job transitions to new states."""
def __init__(self, state: JobState, time: Optional[float] = None,
message: Optional[str] = None, exit_code: Optional[int] = None,
metadata: Optional[Dict[str, object]] = None) -> None:
"""
:param state: The :class:`~psij.JobState` of this status.
:param time: The time, as would be returned by :func:`time.time()`, at which the
transition to the new state occurred. If not specified, the time when this `JobStatus`
was instantiated will be used.
:param message: An optional message associated with the transition.
:param exit_code: An optional exit code for the job, if the job has completed.
:param metadata: Optional metadata provided by the :class:`~psij.JobExecutor`.
All constructor parameters are accessible as properties.
"""
self.state = state
if time is not None:
self.time = time
else:
self.time = t.time()
self.message = message
self.exit_code = exit_code
self.metadata = metadata
@property
def final(self) -> bool:
"""
Returns the `final` property of the underlying state.
:return: `True` if the state is final and `False` otherwise.
"""
return self.state.final
def __str__(self) -> str:
"""Returns a string representation of this `JobStatus` instance."""
s = 'JobStatus[{!s}, time={}'.format(self.state, self.time)
if self.message is not None:
s = s + ', message={}'.format(self.message)
if self.exit_code is not None:
s = s + ', exit_code={}'.format(self.exit_code)
if self.metadata is not None:
s = s + ', meta={}'.format(self.metadata)
return s + ']'