Source code for morse.core.modifier
import logging; logger = logging.getLogger("morse." + __name__)
# Modules necessary to dynamically add methods to Middleware subclasses
from morse.modifiers import AbstractModifier
from morse.core.sensor import Sensor
from morse.core.actuator import Actuator
from morse.helpers.loading import create_instance
[docs]def register_modifier(classpath, component, direction, args):
modifier = create_instance(classpath, component, args)
if not modifier:
logger.error("INITIALIZATION ERROR: Modifier '%s' module could not be "
"found!\n\n Could not import modules necessary for the "
"selected modifier. Check that they can be found inside "
"your PYTHONPATH variable." % classpath)
return None
# Check that modifier implements AbstractDatastream
if not isinstance(modifier, AbstractModifier):
logger.error("%s should implement morse.middleware.AbstractModifier" %
classpath)
return None
# Determine weither to store the function in input or output list,
# what is the direction of our stream?
if direction is 'OUT':
component.output_modifiers.append(modifier.modify)
elif direction is 'IN':
component.input_modifiers.append(modifier.modify)
else:
logger.error("Direction '%s' for '%s'is not 'IN' or 'OUT'",
direction, component.__class__)
return None
return modifier