Source code for genericroboticarm.sila_server.generated.intermediateactionplanning.intermediateactionplanning_client

# Generated by sila2.code_generator; sila2.__version__: 0.14.0
# -----
# This class does not do anything useful at runtime. Its only purpose is to provide type annotations.
# Since sphinx does not support .pyi files (yet?), this is a .py file.
# -----

from __future__ import annotations

from typing import TYPE_CHECKING

if TYPE_CHECKING:

    from typing import Any, List

    from sila2.client import ClientMetadata, ClientUnobservableProperty


[docs] class IntermediateActionPlanningClient: """ Feature to announce the intermediate actions of a labware transfer before the transfer commands that will carry them out are issued. The "Labware Transfer Manipulator Controller" feature accepts intermediate actions only as a parameter of the "Put Labware" and "Get Labware" commands, which are issued after both involved devices have finished their "Prepare For ..." commands. Intermediate actions that do not involve the other device, like fetching a lid from a lid storage, therefore cannot be executed while the other device is still preparing itself, although the manipulator is idle during that time. This feature provides the "Planned Intermediate Actions" metadata, which a client can send along with the "Prepare For Input" command to announce the intermediate actions of the following "Get Labware" command. The manipulator may then execute those parts of them that only concern itself while it prepares itself, and skip them when they are requested again by the following "Get Labware" command. The "Preparable Intermediate Actions" property tells which intermediate actions a manipulator handles that way. Announcing intermediate actions does not change what the transfer commands have to be given: clients pass the intermediate actions to the "Get Labware" command as usual, whether they announced them or not, and a manipulator is free to ignore an announcement. A manipulator that can act on announcements declares the "Prepare For Input" command of the "Labware Transfer Manipulator Controller" feature as affected by the "Planned Intermediate Actions" metadata. Since SiLA requires metadata to be sent with every call it affects, clients of such a manipulator have to send the metadata with every "Prepare For Input" call, announcing an empty list of actions if there is nothing to announce. A manipulator that cannot prepare any intermediate action declares no affected calls instead, so that its clients do not have to know this feature at all. The "Preparable Intermediate Actions" property tells which of the two a manipulator is. """ PreparableIntermediateActions: ClientUnobservableProperty[List[str]] """ The subset of the "Available Intermediate Actions" that this manipulator can already work on while it prepares itself, if they were announced via the "Planned Intermediate Actions" metadata. """ PlannedIntermediateActions: ClientMetadata[Any] """ The intermediate actions that will be passed to the transfer command following the call this metadata is sent with, in the same order. Sent with "Prepare For Input", it announces the intermediate actions of the following "Get Labware" command, and may be empty. They are wrapped in a structure because SiLA Client Metadata cannot be a plain list. """