@ClassModifier
def with_resources(cls, *args, **kwargs):
    """
    This function attaches additional resources onto a class object.

    :param cls: a new class object
    :param args: no positional args are recognized
    :param kwargs: dict of names and associated components to provision; must
        all be derived from AbstractModelingEntity
    :return: None
    """
    components = getattr(cls, InfraModelMeta._COMPONENTS)
    if components is None:
        raise InfraException("FATAL ERROR: no components collection on the class object")
    for k, v in kwargs.items():
        if not isinstance(v, AbstractModelingEntity):
            raise InfraException(k % "Argument %s is not derived from AbstractModelingEntity")
        setattr(cls, k, v)
        components[k] = v
    return
dataset/ETHPy150Open haxsaw/actuator/src/actuator/infra.py/with_resources/swapped operands of `%`