예제 #1
0
 def _add_debug_rule(self, salience, preceding_rules):
     rule_names = ', '.join(rule.name or '->{}'.format(rule.target._name) for rule in preceding_rules)
     def debug_func(*args, **kwargs):
         self.logger.debug('Ran rule(s): {} at salience: {}.'.format(rule_names, salience))
     rule = Rule()
     rule.set_salience(salience-1)
     rule.add_python_action(debug_func)
     rule.build(self.engine)
예제 #2
0
    def _add_debug_rule(self, salience, preceding_rules):
        rule_names = ', '.join(rule.name or '->{}'.format(rule.target._name)
                               for rule in preceding_rules)

        def debug_func(*args, **kwargs):
            self.logger.debug('Ran rule(s): {} at salience: {}.'.format(
                rule_names, salience))

        rule = Rule()
        rule.set_salience(salience - 1)
        rule.add_python_action(debug_func)
        rule.build(self.engine)
예제 #3
0
파일: ruledef.py 프로젝트: ubarkai/rulu
class RuleDef(FactReference, ConvertibleToExpr):
    _all_instances = []
    def __init__(self, *modifiers):
        self._rule = Rule()
        for modifier in modifiers:
            modifier(self._rule)
        self._fields = dict(self._rule.get_target_fields() or {})
        self.__dict__.update(self._fields)
        self._all_instances.append(self)
        
    def _set_name(self, name):
        self._rule.set_name(name)
        
    def _build(self, engine):
        self._rule.build(engine)
        
    def _python_action(self, function):
        self._rule.add_python_action(function)
        
    def _aggregator(self, aggregator_cls):
        self._rule.add_aggregator_cls(aggregator_cls)
        
    def _groupby(self, *keys):
        return lambda func : self._rule.add_aggregator_cls(grouping_aggregator(keys, func))
    
    def __getitem__(self, key):
        return self._rule.target[key]
    
    def _to_expr(self):
        return self._rule.target._to_expr()
    
    @property
    def _name(self):
        return self._rule.get_target_name()
    
    def _update_python_param(self, params, value):
        return self._rule.target._update_python_param(params, value)

    def _from_python_params(self, params):
        return self._rule.target._from_python_params(params)