Spaces:
Paused
Paused
| from dataclasses import dataclass | |
| from typing import Any, Callable, Mapping, TypeAlias | |
| from .float import ( | |
| FLOAT_UNARY_OPERATIONS, | |
| FLOAT_UNARY_CONDITIONS, | |
| FLOAT_BINARY_OPERATIONS, | |
| FLOAT_BINARY_CONDITIONS, | |
| ) | |
| DEFAULT_NUMBER = ("NUMBER", {"default": 0.0}) | |
| number: TypeAlias = int | float | |
| class NumberUnaryOperation: | |
| def INPUT_TYPES(cls) -> Mapping[str, Any]: | |
| return { | |
| "required": { | |
| "op": (list(FLOAT_UNARY_OPERATIONS.keys()),), | |
| "a": DEFAULT_NUMBER, | |
| } | |
| } | |
| RETURN_TYPES = ("NUMBER",) | |
| FUNCTION = "op" | |
| CATEGORY = "math/number" | |
| def op(self, op: str, a: number) -> tuple[float]: | |
| return (FLOAT_UNARY_OPERATIONS[op](float(a)),) | |
| class NumberUnaryCondition: | |
| def INPUT_TYPES(cls) -> Mapping[str, Any]: | |
| return { | |
| "required": { | |
| "op": (list(FLOAT_UNARY_CONDITIONS.keys()),), | |
| "a": DEFAULT_NUMBER, | |
| } | |
| } | |
| RETURN_TYPES = ("BOOL",) | |
| FUNCTION = "op" | |
| CATEGORY = "math/number" | |
| def op(self, op: str, a: number) -> tuple[bool]: | |
| return (FLOAT_UNARY_CONDITIONS[op](float(a)),) | |
| class NumberBinaryOperation: | |
| def INPUT_TYPES(cls) -> Mapping[str, Any]: | |
| return { | |
| "required": { | |
| "op": (list(FLOAT_BINARY_OPERATIONS.keys()),), | |
| "a": DEFAULT_NUMBER, | |
| "b": DEFAULT_NUMBER, | |
| } | |
| } | |
| RETURN_TYPES = ("NUMBER",) | |
| FUNCTION = "op" | |
| CATEGORY = "math/number" | |
| def op(self, op: str, a: number, b: number) -> tuple[float]: | |
| return (FLOAT_BINARY_OPERATIONS[op](float(a), float(b)),) | |
| class NumberBinaryCondition: | |
| def INPUT_TYPES(cls) -> Mapping[str, Any]: | |
| return { | |
| "required": { | |
| "op": (list(FLOAT_BINARY_CONDITIONS.keys()),), | |
| "a": DEFAULT_NUMBER, | |
| "b": DEFAULT_NUMBER, | |
| } | |
| } | |
| RETURN_TYPES = ("BOOL",) | |
| FUNCTION = "op" | |
| CATEGORY = "math/float" | |
| def op(self, op: str, a: number, b: number) -> tuple[bool]: | |
| return (FLOAT_BINARY_CONDITIONS[op](float(a), float(b)),) | |
| NODE_CLASS_MAPPINGS = { | |
| "CM_NumberUnaryOperation": NumberUnaryOperation, | |
| "CM_NumberUnaryCondition": NumberUnaryCondition, | |
| "CM_NumberBinaryOperation": NumberBinaryOperation, | |
| "CM_NumberBinaryCondition": NumberBinaryCondition, | |
| } | |