MultiOutput#

class maize.core.interface.MultiOutput(*args: Any, **kwargs: Any)[source]#

Bases: MultiPort[T]

Aggregation of multiple output ports into a single port.

Index into the port to access a normal Output instance with a send method.

Parameters:
  • timeout – Timeout used for continuously polling the connection for free space on a potentially blocking send call.

  • optional – Whether this port is required for the process to stay alive. If the connection to an optional port is closed by a neighbouring process, the current node will not shutdown.

  • n_ports – The number of ports to instantiate, if not given will allow dynamic creation of new ports when set_channel is called

  • mode – Whether to 'link', 'move' or 'copy' (default) files.

name#

Unique port name

parent#

Parent node instance this port is part of

Raises:

PortException – If the port is used without a connected channel

Examples

>>> class Example(Node):
...     out = MultiOutput[int](n_ports=2)
...
...     def run(self):
...         self.out[0].send(42)
...         self.out[1].send(69)
__init__(timeout: float = 0.5, optional: bool = False, n_ports: int | None = None, mode: Literal['copy', 'link', 'move'] = 'copy') None#

Methods

__init__([timeout, optional, n_ports, mode])

build(name, parent)

Instantiate an interface from the description.

check(value)

Checks if a value is valid using type annotations.

close()

Closes the port.

is_connected(port)

Specifies whether the port is connected.

set_channel(channel)

Set the channel associated with the port.

Attributes

active

Specifies whether the port is active or not.

connected

Specifies whether the port is connected.

path

Provides a unique path to the interface.

serialized

Provides a serialized summary of the parameter

size

Returns the approximate number of items waiting in the channel

name

parent

datatype

doc

property active: bool#

Specifies whether the port is active or not.

build(name: str, parent: Component) _TInter#

Instantiate an interface from the description.

Parameters:
  • name – Name of the interface, will typically be the attribute name of the parent object

  • parent – Parent component instance

Returns:

Copy of the current instance, with references to the name and the parent

Return type:

_TInter

check(value: T) bool#

Checks if a value is valid using type annotations.

Parameters:

value – Value to typecheck

Returns:

True if the value is valid, False otherwise

Return type:

bool

close() None#

Closes the port.

This can be detected by neighbouring nodes waiting on the port, and subsequently cause them to shut down.

Raises:

PortException – If the port is not connected

property connected: bool#

Specifies whether the port is connected.

static is_connected(port: _PortType) TypeGuard[_PortChannel[T]]#

Specifies whether the port is connected.

property path: tuple[str, ...]#

Provides a unique path to the interface.

property serialized: dict[str, Any]#

Provides a serialized summary of the parameter

set_channel(channel: Channel[T]) None#

Set the channel associated with the port. This needs to be called when connecting two ports together.

Parameters:

channel – An instantiated subclass of Channel

property size: int#

Returns the approximate number of items waiting in the channel