def _create_operation_expression(self, op, args): """ Create a model operation Args: op: Operation descriptor args: Operation arguments Returns: Model expression Raises: Cpo exception if error """ # Check interval operator if op is _OPER_INTERVAL: return tuple(args) # Check unary minus on constant value if (op is Oper_minus) and (len(args) == 1) and is_number(args[0]): return -args[0] if (op is Oper_plus) and (len(args) == 1) and is_number(args[0]): return args[0] try: return _create_operation(op, args) except Exception as e: lastex = Exception("No valid operation found for {}: {}".format(op.cpo_name, e)) self._raise_exception(str(lastex))
def _create_operation_expression(self, op, args): """ Create a model operation Args: op: Operation descriptor args: Operation arguments Returns: Model expression Raises: Cpo exception if error """ # # Check unary minus on constant value # if (op is Oper_minus) and (len(args) == 1) and is_number(args[0]): # return -args[0] # if (op is Oper_plus) and (len(args) == 1) and is_number(args[0]): # return args[0] # Check special operators if op is Oper_imply: return modeler.if_then(args[0], args[1]) if op is Oper_imply_back: return modeler.if_then(args[1], args[0]) if op is Oper_equiv: return modeler.equal(args[0], args[1]) try: return _create_operation(op, args) except Exception as e: lastex = Exception("No valid operation found for {}: {}".format( op.cpo_name, e)) self._raise_exception(str(lastex))