class Operation: def __init__(self, ): pass @classmethod def INPUT_TYPES(s): return { "required": { "A Type": (["Int", "Float"],), "B Type": (["Int", "Float"],), "Operation": (["A+B", "A-B", "A*B", "A/B"],) }, "optional": { "A - Int": ("INT", {"forceInput": True}), "A - Float": ("FLOAT", {"forceInput": True}), "B - Int": ("INT", {"forceInput": True}), "B - Float": ("FLOAT", {"forceInput": True}) } } RETURN_TYPES = ("INT", "FLOAT") FUNCTION = "do_operation" CATEGORY = "Literals" def _do_addition(self, a_val, b_val): return (int(a_val + b_val), float(a_val + b_val)) def _do_subtraction(self, a_val, b_val): return (int(a_val - b_val), float(a_val - b_val)) def _do_multiplication(self, a_val, b_val): return (int(a_val * b_val), float(a_val * b_val)) def _do_division(self, a_val, b_val): return (int(a_val / b_val), float(a_val / b_val)) def do_operation(self, **kwargs): print(f"PrintNode: {kwargs}") is_a_int = kwargs["A Type"] == "Int" is_b_int = kwargs["B Type"] == "Int" a_val = kwargs["A - Int"] if is_a_int else kwargs["A - Float"] b_val = kwargs["B - Int"] if is_b_int else kwargs["B - Float"] if kwargs["Operation"] == "A+B": return self._do_addition(a_val, b_val) elif kwargs["Operation"] == "A-B": return self._do_subtraction(a_val, b_val) elif kwargs["Operation"] == "A*B": return self._do_multiplication(a_val, b_val) elif kwargs["Operation"] == "A/B": return self._do_division(a_val, b_val) else: raise Exception("Invalid operation provided")