Skip to content

core

Composable, transportable command-registry core for interactive CLIs.

This module has no third-party dependencies (no prompt_toolkit, no rich) so it can be imported, composed, and unit-tested without any optional extras installed. The interactive REPL driver lives in fluid_control.cli.compose.repl.

The core abstraction is the [CommandGroup][fluid_control.cli.compose.core.CommandGroup]: a named node that holds a set of leaf [Command][fluid_control.cli.compose.core.Command] objects and a set of child [CommandGroup][fluid_control.cli.compose.core.CommandGroup] nodes. Because a group can mount another group under a name, a super-CLI can consume the command groups exported by other packages and expose them hierarchically::

1
2
3
4
root = CommandGroup("lhs")
root.add_child(fluid_control_group, name="pipettor")
root.add_child(gantry_group, name="gantry")
# -> "pipettor dispense 1 50 water"  and  "gantry home"

The module is intentionally self-contained so it can later be extracted verbatim into a standalone festo-dev-cli-compose distribution shared across packages.