from enum import Enum
from dataclasses import dataclass
from typing import Dict, List, Union
[docs]@dataclass
class FunctionParameter:
    """
    Represents an input parameter to a segmenter function
    """
    name: str
    widget_type: WidgetType
    data_type: str
    min_value: Union[int, float] = None
    max_value: Union[int, float] = None
    increment: Union[int, float] = None
    options: List[str] = None 
[docs]@dataclass
class SegmenterFunction:
    """
    Represents an aicssegmentation function.
    Functions are the smallest executable entity in a workflow and directly map
    to a python callable
    """
    name: str
    display_name: str
    function: str
    module: str
    parameters: Dict[str, List[FunctionParameter]] = None