Execution Graph#
Directed acyclic graph (DAG) that composes pipeline modules, resolves dependencies, and drives execution in the correct order.
Execution graph node.
Each node wraps a module and tracks its position in the DAG: which nodes it depends on (must complete before this node runs) and which nodes depend on it (notified when this node completes).
- class adapt.execution.graph.node.Node(module)#
Bases:
objectA node in the execution graph.
- Parameters:
module (
BaseModule) – The processing module this node wraps.
- module#
- Type:
BaseModule
- inputs#
Data keys required by this module.
- Type:
list[str]
- outputs#
Data keys produced by this module.
- Type:
list[str]
- property name: str#
Module registry — discover and instantiate registered modules.
Modules register their class at import time by calling registry.register().
The controller calls registry.create_modules() to get instantiated modules
ready for graph construction.
Usage:
# In a module file (modules/detection/module.py):
from adapt.execution.module_registry import registry
class DetectModule(BaseModule):
name = "detection"
inputs = ["grid_volume"]
outputs = ["storm_cells"]
...
registry.register(DetectModule)
# In the controller:
modules = registry.create_modules()
nodes = GraphBuilder(modules).build()
GraphExecutor(nodes).run(context)
- class adapt.execution.module_registry.ModuleRegistry#
Bases:
objectCentral registry for Adapt modules and extensions.
Stores module classes. Instantiates them on demand via
create_modules(). This allows each module to be configured with constructor arguments at runtime while keeping registration declarative.- Raises:
RuntimeError – If the same module name is registered twice.
KeyError – If
get()is called with an unregistered name.
- clear()#
Remove all registered modules (primarily for testing).
- Return type:
None
- create_modules()#
Instantiate and return all registered modules.
- Returns:
One instance per registered module class, in registration order.
- Return type:
list[BaseModule]
- get(name)#
Return the module class registered under
name.- Raises:
KeyError – If no module with that name is registered.
- Return type:
type[BaseModule]- Parameters:
name (str)
- list_modules()#
Return names of all registered modules.
- Return type:
list[str]
- register(module_class)#
Register a module class by its
nameattribute.- Parameters:
module_class (
type[BaseModule]) – The module class to register. Must have a non-emptyname.- Raises:
RuntimeError – If a module with the same name is already registered.
ValueError – If
module_class.nameis empty.
- Return type:
None
- unregister(name)#
Remove a module from the registry (primarily for testing).
- Return type:
None- Parameters:
name (str)