Spaces:
Running
on
Zero
Running
on
Zero
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, | |
} | |