mirror of
https://github.com/csunny/DB-GPT.git
synced 2025-07-29 23:01:38 +00:00
187 lines
5.4 KiB
Python
187 lines
5.4 KiB
Python
"""Type Converter Operators."""
|
|
|
|
from dbgpt.core.awel import MapOperator
|
|
from dbgpt.core.awel.flow import (
|
|
TAGS_ORDER_HIGH,
|
|
IOField,
|
|
OperatorCategory,
|
|
Parameter,
|
|
ViewMetadata,
|
|
)
|
|
from dbgpt.util.i18n_utils import _
|
|
|
|
_INPUTS_STRING = IOField.build_from(
|
|
_("String"),
|
|
"string",
|
|
str,
|
|
description=_("The string to be converted to other types."),
|
|
)
|
|
_INPUTS_INTEGER = IOField.build_from(
|
|
_("Integer"),
|
|
"integer",
|
|
int,
|
|
description=_("The integer to be converted to other types."),
|
|
)
|
|
_INPUTS_FLOAT = IOField.build_from(
|
|
_("Float"),
|
|
"float",
|
|
float,
|
|
description=_("The float to be converted to other types."),
|
|
)
|
|
_INPUTS_BOOLEAN = IOField.build_from(
|
|
_("Boolean"),
|
|
"boolean",
|
|
bool,
|
|
description=_("The boolean to be converted to other types."),
|
|
)
|
|
|
|
_OUTPUTS_STRING = IOField.build_from(
|
|
_("String"),
|
|
"string",
|
|
str,
|
|
description=_("The string converted from other types."),
|
|
)
|
|
_OUTPUTS_INTEGER = IOField.build_from(
|
|
_("Integer"),
|
|
"integer",
|
|
int,
|
|
description=_("The integer converted from other types."),
|
|
)
|
|
_OUTPUTS_FLOAT = IOField.build_from(
|
|
_("Float"),
|
|
"float",
|
|
float,
|
|
description=_("The float converted from other types."),
|
|
)
|
|
_OUTPUTS_BOOLEAN = IOField.build_from(
|
|
_("Boolean"),
|
|
"boolean",
|
|
bool,
|
|
description=_("The boolean converted from other types."),
|
|
)
|
|
|
|
|
|
class StringToInteger(MapOperator[str, int]):
|
|
"""Converts a string to an integer."""
|
|
|
|
metadata = ViewMetadata(
|
|
label=_("String to Integer"),
|
|
name="default_converter_string_to_integer",
|
|
description=_("Converts a string to an integer."),
|
|
category=OperatorCategory.TYPE_CONVERTER,
|
|
parameters=[],
|
|
inputs=[_INPUTS_STRING],
|
|
outputs=[_OUTPUTS_INTEGER],
|
|
tags={"order": TAGS_ORDER_HIGH},
|
|
)
|
|
|
|
def __init__(self, **kwargs):
|
|
"""Create a new StringToInteger operator."""
|
|
super().__init__(map_function=lambda x: int(x), **kwargs)
|
|
|
|
|
|
class StringToFloat(MapOperator[str, float]):
|
|
"""Converts a string to a float."""
|
|
|
|
metadata = ViewMetadata(
|
|
label=_("String to Float"),
|
|
name="default_converter_string_to_float",
|
|
description=_("Converts a string to a float."),
|
|
category=OperatorCategory.TYPE_CONVERTER,
|
|
parameters=[],
|
|
inputs=[_INPUTS_STRING],
|
|
outputs=[_OUTPUTS_FLOAT],
|
|
tags={"order": TAGS_ORDER_HIGH},
|
|
)
|
|
|
|
def __init__(self, **kwargs):
|
|
"""Create a new StringToFloat operator."""
|
|
super().__init__(map_function=lambda x: float(x), **kwargs)
|
|
|
|
|
|
class StringToBoolean(MapOperator[str, bool]):
|
|
"""Converts a string to a boolean."""
|
|
|
|
metadata = ViewMetadata(
|
|
label=_("String to Boolean"),
|
|
name="default_converter_string_to_boolean",
|
|
description=_("Converts a string to a boolean, true: 'true', '1', 'y'"),
|
|
category=OperatorCategory.TYPE_CONVERTER,
|
|
parameters=[
|
|
Parameter.build_from(
|
|
_("True Values"),
|
|
"true_values",
|
|
str,
|
|
optional=True,
|
|
default="true,1,y",
|
|
description=_("Comma-separated values that should be treated as True."),
|
|
)
|
|
],
|
|
inputs=[_INPUTS_STRING],
|
|
outputs=[_OUTPUTS_BOOLEAN],
|
|
tags={"order": TAGS_ORDER_HIGH},
|
|
)
|
|
|
|
def __init__(self, true_values: str = "true,1,y", **kwargs):
|
|
"""Create a new StringToBoolean operator."""
|
|
true_values_list = true_values.split(",")
|
|
true_values_list = [x.strip().lower() for x in true_values_list]
|
|
super().__init__(map_function=lambda x: x.lower() in true_values_list, **kwargs)
|
|
|
|
|
|
class IntegerToString(MapOperator[int, str]):
|
|
"""Converts an integer to a string."""
|
|
|
|
metadata = ViewMetadata(
|
|
label=_("Integer to String"),
|
|
name="default_converter_integer_to_string",
|
|
description=_("Converts an integer to a string."),
|
|
category=OperatorCategory.TYPE_CONVERTER,
|
|
parameters=[],
|
|
inputs=[_INPUTS_INTEGER],
|
|
outputs=[_OUTPUTS_STRING],
|
|
tags={"order": TAGS_ORDER_HIGH},
|
|
)
|
|
|
|
def __init__(self, **kwargs):
|
|
"""Create a new IntegerToString operator."""
|
|
super().__init__(map_function=lambda x: str(x), **kwargs)
|
|
|
|
|
|
class FloatToString(MapOperator[float, str]):
|
|
"""Converts a float to a string."""
|
|
|
|
metadata = ViewMetadata(
|
|
label=_("Float to String"),
|
|
name="default_converter_float_to_string",
|
|
description=_("Converts a float to a string."),
|
|
category=OperatorCategory.TYPE_CONVERTER,
|
|
parameters=[],
|
|
inputs=[_INPUTS_FLOAT],
|
|
outputs=[_OUTPUTS_STRING],
|
|
tags={"order": TAGS_ORDER_HIGH},
|
|
)
|
|
|
|
def __init__(self, **kwargs):
|
|
"""Create a new FloatToString operator."""
|
|
super().__init__(map_function=lambda x: str(x), **kwargs)
|
|
|
|
|
|
class BooleanToString(MapOperator[bool, str]):
|
|
"""Converts a boolean to a string."""
|
|
|
|
metadata = ViewMetadata(
|
|
label=_("Boolean to String"),
|
|
name="default_converter_boolean_to_string",
|
|
description=_("Converts a boolean to a string."),
|
|
category=OperatorCategory.TYPE_CONVERTER,
|
|
parameters=[],
|
|
inputs=[_INPUTS_BOOLEAN],
|
|
outputs=[_OUTPUTS_STRING],
|
|
tags={"order": TAGS_ORDER_HIGH},
|
|
)
|
|
|
|
def __init__(self, **kwargs):
|
|
"""Create a new BooleanToString operator."""
|
|
super().__init__(map_function=lambda x: str(x), **kwargs)
|