SubtaskResult
- class ska_csp_lmc_common.commands.aggregation.task_result.SubtaskResult(name: str, status: ska_control_model.TaskStatus, result: Tuple[ska_control_model.ResultCode, str] | str | ska_control_model.ResultCode | int, device_name: str | None = None, devices: List[str] | None = None, operation: str | None = None, obs_mode: str | None = None, failed_devices: List[str] | None = None, logger: Logger | None = None)
Bases:
objectRepresent the latest execution update for a subtask.
A
SubtaskResultstores:name: stable subtask identifierstatus:TaskStatusresult_code:ResultCodemessage: human-readable info (optionally prefixed with device name)
It can also store optional context fields and device lists used for aggregation and diagnostics (
device_name,devices,failed_devices,operation,obs_mode).The incoming
resultfield is parsed into(result_code, message)using_parse_result().- __init__(name: str, status: ska_control_model.TaskStatus, result: Tuple[ska_control_model.ResultCode, str] | str | ska_control_model.ResultCode | int, device_name: str | None = None, devices: List[str] | None = None, operation: str | None = None, obs_mode: str | None = None, failed_devices: List[str] | None = None, logger: Logger | None = None)
Create a new subtask result snapshot.
- Parameters:
name – Subtask identifier (stable key used by the Task Tracker).
status – Latest subtask status.
result –
Result in one of the supported formats:
(ResultCode, message)tuple/listJSON-encoded pair (string representation of a two-element list and tuple)
legacy strings (e.g.
"Completed")ResultCodeor int coercible toResultCode
device_name – Originating device name (e.g. subsystem device), used to prefix the message when present.
devices – Optional list of devices involved in this subtask. Values are de-duplicated while preserving order.
operation – Optional operation context (domain-specific).
obs_mode – Optional observation mode context (domain-specific).
failed_devices – Optional list of devices that failed for this subtask. Values are de-duplicated while preserving order.
logger – Optional logger instance. If not provided,
module_loggeris used.
- property devices: List[str]
Return the list of involved devices (deduplicated, stable order).
- Returns:
List of device names.
- property failed_devices: List[str]
Return the list of devices that failed for this subtask.
- Returns:
List of device names.
- property operation: str | None
Set the operation context, if any.
- Parameters:
value – Operation name or
None.
- property obs_mode: str | None
Return the observation mode context, if any.
- Returns:
Observation mode or
None.
- update(status: ska_control_model.TaskStatus | None, result: Tuple[ska_control_model.ResultCode, str] | str | ska_control_model.ResultCode | int | None, device_name: str | None, devices: List[str] | None = None, operation: str | None = None, obs_mode: str | None = None, failed_devices: List[str] | None = None) None
Update this
SubtaskResultwith a new status/result snapshot.Any parameter set to
Nonewill not override the current value, with the exception ofstatusandresultwhich are treated as “no update” whenNone.- Parameters:
status – New status or
None(no status update).result – New result or
None(no result update). Supported formats are the same as in__init__().device_name – Originating device name. If provided, it will be stored and used to prefix the message.
devices – Optional list of devices involved in this subtask.
operation – Optional operation context update.
obs_mode – Optional observation mode context update.
failed_devices – Optional list of failed devices for this subtask.
- Returns:
None.
- static _normalize_message(msg: str) str
Normalize message text for display.
Convert escaped newlines (
\n) into real newlines.
- _update_context_fields(*, device_name: str | None, devices: List[str] | None, operation: str | None, obs_mode: str | None, failed_devices: List[str] | None) None
Update contextual fields only when explicitly provided.
- Parameters:
device_name – Originating device name, or
Noneto leave unchanged.devices – Devices list, or
Noneto leave unchanged.operation – Operation, or
Noneto leave unchanged.obs_mode – Observation mode, or
Noneto leave unchanged.failed_devices – Failed devices list, or
Noneto leave unchanged.
- Returns:
None.
- _prefix_device(msg: str) str
Prefix a message with the originating device name when available.
- Parameters:
msg – Message text.
- Returns:
Prefixed message text if
device_nameis available, otherwise the original message.
- static _dedup_list(values: List[str]) List[str]
De-duplicate a list while preserving order.
Falsy entries are ignored.
- Parameters:
values – Input list.
- Returns:
De-duplicated list with stable ordering.
- _parse_result(result: Tuple[ska_control_model.ResultCode, str] | str | ska_control_model.ResultCode | int) Tuple[ska_control_model.ResultCode, str]
Parse an input result into
(ResultCode, message).Supported formats: -
(rcode, message)tuple/list - string: JSON pair or legacy strings -ResultCodeor int coercible toResultCode- Parameters:
result – Input result payload.
- Returns:
(result_code, message).
- _as_pair(result: Tuple[ska_control_model.ResultCode, str] | str | ska_control_model.ResultCode | int) Tuple[ska_control_model.ResultCode, str] | None
Return
(rcode, msg)ifresultalready looks like a pair.- Parameters:
result – Input result payload.
- Returns:
(rcode, msg)when detectable, otherwiseNone.
- _parse_result_string(result: str) Tuple[ska_control_model.ResultCode, str]
Parse a string result: JSON pair or legacy strings.
- Parameters:
result – Raw string result.
- Returns:
(result_code, message).
- _parse_result_codeish(result: ska_control_model.ResultCode | int) Tuple[ska_control_model.ResultCode, str]
Parse a ResultCode or int into
(rcode, message).- Parameters:
result – Result code value (enum or int).
- Returns:
(result_code, message).
- _coerce_resultcode(value: Any) ska_control_model.ResultCode
Coerce a value into
ResultCode.- Parameters:
value – Input value to coerce.
- Returns:
A valid
ResultCodewhen coercion succeeds, otherwiseResultCode.UNKNOWN.