griptape-nodes 0.59.2__py3-none-any.whl → 0.60.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- griptape_nodes/common/macro_parser/__init__.py +28 -0
- griptape_nodes/common/macro_parser/core.py +230 -0
- griptape_nodes/common/macro_parser/exceptions.py +23 -0
- griptape_nodes/common/macro_parser/formats.py +170 -0
- griptape_nodes/common/macro_parser/matching.py +134 -0
- griptape_nodes/common/macro_parser/parsing.py +172 -0
- griptape_nodes/common/macro_parser/resolution.py +168 -0
- griptape_nodes/common/macro_parser/segments.py +42 -0
- griptape_nodes/exe_types/core_types.py +241 -4
- griptape_nodes/exe_types/node_types.py +7 -1
- griptape_nodes/exe_types/param_components/huggingface/__init__.py +1 -0
- griptape_nodes/exe_types/param_components/huggingface/huggingface_model_parameter.py +168 -0
- griptape_nodes/exe_types/param_components/huggingface/huggingface_repo_file_parameter.py +38 -0
- griptape_nodes/exe_types/param_components/huggingface/huggingface_repo_parameter.py +33 -0
- griptape_nodes/exe_types/param_components/huggingface/huggingface_utils.py +136 -0
- griptape_nodes/exe_types/param_components/log_parameter.py +136 -0
- griptape_nodes/exe_types/param_components/seed_parameter.py +59 -0
- griptape_nodes/exe_types/param_types/__init__.py +1 -0
- griptape_nodes/exe_types/param_types/parameter_bool.py +221 -0
- griptape_nodes/exe_types/param_types/parameter_float.py +179 -0
- griptape_nodes/exe_types/param_types/parameter_int.py +183 -0
- griptape_nodes/exe_types/param_types/parameter_number.py +380 -0
- griptape_nodes/exe_types/param_types/parameter_string.py +232 -0
- griptape_nodes/node_library/library_registry.py +2 -1
- griptape_nodes/retained_mode/events/app_events.py +21 -0
- griptape_nodes/retained_mode/events/os_events.py +142 -6
- griptape_nodes/retained_mode/events/parameter_events.py +2 -0
- griptape_nodes/retained_mode/griptape_nodes.py +14 -0
- griptape_nodes/retained_mode/managers/agent_manager.py +5 -3
- griptape_nodes/retained_mode/managers/arbitrary_code_exec_manager.py +19 -1
- griptape_nodes/retained_mode/managers/library_manager.py +27 -32
- griptape_nodes/retained_mode/managers/node_manager.py +14 -1
- griptape_nodes/retained_mode/managers/os_manager.py +403 -124
- griptape_nodes/retained_mode/managers/user_manager.py +120 -0
- griptape_nodes/retained_mode/managers/workflow_manager.py +44 -34
- griptape_nodes/traits/multi_options.py +26 -2
- griptape_nodes/utils/huggingface_utils.py +136 -0
- {griptape_nodes-0.59.2.dist-info → griptape_nodes-0.60.0.dist-info}/METADATA +1 -1
- {griptape_nodes-0.59.2.dist-info → griptape_nodes-0.60.0.dist-info}/RECORD +41 -18
- {griptape_nodes-0.59.2.dist-info → griptape_nodes-0.60.0.dist-info}/WHEEL +1 -1
- {griptape_nodes-0.59.2.dist-info → griptape_nodes-0.60.0.dist-info}/entry_points.txt +0 -0
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"""ParameterFloat component for float inputs with enhanced UI options."""
|
|
2
|
+
|
|
3
|
+
from collections.abc import Callable
|
|
4
|
+
from typing import Any
|
|
5
|
+
|
|
6
|
+
from griptape_nodes.exe_types.core_types import Parameter, ParameterMode, Trait
|
|
7
|
+
from griptape_nodes.exe_types.param_types.parameter_number import ParameterNumber
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class ParameterFloat(ParameterNumber):
|
|
11
|
+
"""A specialized Parameter class for float inputs with enhanced UI options.
|
|
12
|
+
|
|
13
|
+
This class provides a convenient way to create float parameters with common
|
|
14
|
+
UI customizations like step size for numeric input controls. It exposes these
|
|
15
|
+
UI options as direct properties for easy runtime modification.
|
|
16
|
+
|
|
17
|
+
Example:
|
|
18
|
+
param = ParameterFloat(
|
|
19
|
+
name="temperature",
|
|
20
|
+
tooltip="Enter temperature in Celsius",
|
|
21
|
+
step=0.1,
|
|
22
|
+
min=0.0,
|
|
23
|
+
max=100.0,
|
|
24
|
+
default_value=25.5
|
|
25
|
+
)
|
|
26
|
+
param.step = 0.01 # Change step size at runtime
|
|
27
|
+
param.min = 10.0 # Change minimum value at runtime
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
def __init__( # noqa: PLR0913
|
|
31
|
+
self,
|
|
32
|
+
name: str,
|
|
33
|
+
tooltip: str | None = None,
|
|
34
|
+
*,
|
|
35
|
+
default_value: Any = None,
|
|
36
|
+
tooltip_as_input: str | None = None,
|
|
37
|
+
tooltip_as_property: str | None = None,
|
|
38
|
+
tooltip_as_output: str | None = None,
|
|
39
|
+
allowed_modes: set[ParameterMode] | None = None,
|
|
40
|
+
traits: set[type[Trait] | Trait] | None = None,
|
|
41
|
+
converters: list[Callable[[Any], Any]] | None = None,
|
|
42
|
+
validators: list[Callable[[Parameter, Any], None]] | None = None,
|
|
43
|
+
ui_options: dict | None = None,
|
|
44
|
+
step: float | None = None,
|
|
45
|
+
slider: bool = False,
|
|
46
|
+
min_val: float = 0,
|
|
47
|
+
max_val: float = 100,
|
|
48
|
+
validate_min_max: bool = False,
|
|
49
|
+
accept_any: bool = True,
|
|
50
|
+
hide: bool = False,
|
|
51
|
+
hide_label: bool = False,
|
|
52
|
+
hide_property: bool = False,
|
|
53
|
+
allow_input: bool = True,
|
|
54
|
+
allow_property: bool = True,
|
|
55
|
+
allow_output: bool = True,
|
|
56
|
+
settable: bool = True,
|
|
57
|
+
serializable: bool = True,
|
|
58
|
+
user_defined: bool = False,
|
|
59
|
+
element_id: str | None = None,
|
|
60
|
+
element_type: str | None = None,
|
|
61
|
+
parent_container_name: str | None = None,
|
|
62
|
+
) -> None:
|
|
63
|
+
"""Initialize a float parameter with step validation.
|
|
64
|
+
|
|
65
|
+
Args:
|
|
66
|
+
name: Parameter name
|
|
67
|
+
tooltip: Parameter tooltip
|
|
68
|
+
default_value: Default parameter value
|
|
69
|
+
tooltip_as_input: Tooltip for input mode
|
|
70
|
+
tooltip_as_property: Tooltip for property mode
|
|
71
|
+
tooltip_as_output: Tooltip for output mode
|
|
72
|
+
allowed_modes: Allowed parameter modes
|
|
73
|
+
traits: Parameter traits
|
|
74
|
+
converters: Parameter converters
|
|
75
|
+
validators: Parameter validators
|
|
76
|
+
ui_options: Dictionary of UI options
|
|
77
|
+
step: Step size for numeric input controls
|
|
78
|
+
slider: Whether to use slider trait
|
|
79
|
+
min_val: Minimum value for constraints
|
|
80
|
+
max_val: Maximum value for constraints
|
|
81
|
+
validate_min_max: Whether to validate min/max with error
|
|
82
|
+
accept_any: Whether to accept any input type and convert to float (default: True)
|
|
83
|
+
hide: Whether to hide the entire parameter
|
|
84
|
+
hide_label: Whether to hide the parameter label
|
|
85
|
+
hide_property: Whether to hide the parameter in property mode
|
|
86
|
+
allow_input: Whether to allow input mode
|
|
87
|
+
allow_property: Whether to allow property mode
|
|
88
|
+
allow_output: Whether to allow output mode
|
|
89
|
+
settable: Whether the parameter is settable
|
|
90
|
+
serializable: Whether the parameter is serializable
|
|
91
|
+
user_defined: Whether the parameter is user-defined
|
|
92
|
+
element_id: Element ID
|
|
93
|
+
element_type: Element type
|
|
94
|
+
parent_container_name: Name of parent container
|
|
95
|
+
"""
|
|
96
|
+
# Call parent with float-specific settings
|
|
97
|
+
super().__init__(
|
|
98
|
+
name=name,
|
|
99
|
+
tooltip=tooltip,
|
|
100
|
+
type="float",
|
|
101
|
+
input_types=None, # Will be set by parent based on accept_any
|
|
102
|
+
output_type="float",
|
|
103
|
+
default_value=default_value,
|
|
104
|
+
tooltip_as_input=tooltip_as_input,
|
|
105
|
+
tooltip_as_property=tooltip_as_property,
|
|
106
|
+
tooltip_as_output=tooltip_as_output,
|
|
107
|
+
allowed_modes=allowed_modes,
|
|
108
|
+
traits=traits,
|
|
109
|
+
converters=converters,
|
|
110
|
+
validators=validators,
|
|
111
|
+
ui_options=ui_options,
|
|
112
|
+
step=step,
|
|
113
|
+
slider=slider,
|
|
114
|
+
min_val=min_val,
|
|
115
|
+
max_val=max_val,
|
|
116
|
+
validate_min_max=validate_min_max,
|
|
117
|
+
accept_any=accept_any,
|
|
118
|
+
hide=hide,
|
|
119
|
+
hide_label=hide_label,
|
|
120
|
+
hide_property=hide_property,
|
|
121
|
+
allow_input=allow_input,
|
|
122
|
+
allow_property=allow_property,
|
|
123
|
+
allow_output=allow_output,
|
|
124
|
+
settable=settable,
|
|
125
|
+
serializable=serializable,
|
|
126
|
+
user_defined=user_defined,
|
|
127
|
+
element_id=element_id,
|
|
128
|
+
element_type=element_type,
|
|
129
|
+
parent_container_name=parent_container_name,
|
|
130
|
+
)
|
|
131
|
+
|
|
132
|
+
def _convert_to_number(self, value: Any) -> float: # noqa: PLR0911
|
|
133
|
+
"""Safely convert any input value to a float.
|
|
134
|
+
|
|
135
|
+
Handles various input types including strings, integers, and other objects.
|
|
136
|
+
Uses Python's built-in float() conversion with proper error handling.
|
|
137
|
+
|
|
138
|
+
Args:
|
|
139
|
+
value: The value to convert to float
|
|
140
|
+
|
|
141
|
+
Returns:
|
|
142
|
+
Float representation of the value
|
|
143
|
+
|
|
144
|
+
Raises:
|
|
145
|
+
ValueError: If the value cannot be converted to a float
|
|
146
|
+
"""
|
|
147
|
+
# Handle None and empty string cases first
|
|
148
|
+
if value is None:
|
|
149
|
+
return 0.0
|
|
150
|
+
|
|
151
|
+
if isinstance(value, str):
|
|
152
|
+
value = value.strip()
|
|
153
|
+
if not value:
|
|
154
|
+
return 0.0
|
|
155
|
+
|
|
156
|
+
# Handle boolean inputs
|
|
157
|
+
if isinstance(value, bool):
|
|
158
|
+
if value:
|
|
159
|
+
return 1.0
|
|
160
|
+
return 0.0
|
|
161
|
+
|
|
162
|
+
# Handle numeric inputs
|
|
163
|
+
if isinstance(value, (int, float)):
|
|
164
|
+
return float(value)
|
|
165
|
+
|
|
166
|
+
# Handle string inputs
|
|
167
|
+
if isinstance(value, str):
|
|
168
|
+
try:
|
|
169
|
+
return float(value)
|
|
170
|
+
except ValueError as e:
|
|
171
|
+
msg = f"Cannot convert '{value}' to float"
|
|
172
|
+
raise ValueError(msg) from e
|
|
173
|
+
|
|
174
|
+
# For all other types, try direct conversion
|
|
175
|
+
try:
|
|
176
|
+
return float(value)
|
|
177
|
+
except (ValueError, TypeError) as e:
|
|
178
|
+
msg = f"Cannot convert {type(value).__name__} to float"
|
|
179
|
+
raise ValueError(msg) from e
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
"""ParameterInt component for integer inputs with enhanced UI options."""
|
|
2
|
+
|
|
3
|
+
from collections.abc import Callable
|
|
4
|
+
from typing import Any
|
|
5
|
+
|
|
6
|
+
from griptape_nodes.exe_types.core_types import Parameter, ParameterMode, Trait
|
|
7
|
+
from griptape_nodes.exe_types.param_types.parameter_number import ParameterNumber
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class ParameterInt(ParameterNumber):
|
|
11
|
+
"""A specialized Parameter class for integer inputs with enhanced UI options.
|
|
12
|
+
|
|
13
|
+
This class provides a convenient way to create integer parameters with common
|
|
14
|
+
UI customizations like step size for numeric input controls. It exposes these
|
|
15
|
+
UI options as direct properties for easy runtime modification.
|
|
16
|
+
|
|
17
|
+
Example:
|
|
18
|
+
param = ParameterInt(
|
|
19
|
+
name="count",
|
|
20
|
+
tooltip="Enter item count",
|
|
21
|
+
step=5,
|
|
22
|
+
min=0,
|
|
23
|
+
max=100,
|
|
24
|
+
default_value=10
|
|
25
|
+
)
|
|
26
|
+
param.step = 1 # Change step size at runtime
|
|
27
|
+
param.min = 10 # Change minimum value at runtime
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
def __init__( # noqa: PLR0913
|
|
31
|
+
self,
|
|
32
|
+
name: str,
|
|
33
|
+
tooltip: str | None = None,
|
|
34
|
+
*,
|
|
35
|
+
default_value: Any = None,
|
|
36
|
+
tooltip_as_input: str | None = None,
|
|
37
|
+
tooltip_as_property: str | None = None,
|
|
38
|
+
tooltip_as_output: str | None = None,
|
|
39
|
+
allowed_modes: set[ParameterMode] | None = None,
|
|
40
|
+
traits: set[type[Trait] | Trait] | None = None,
|
|
41
|
+
converters: list[Callable[[Any], Any]] | None = None,
|
|
42
|
+
validators: list[Callable[[Parameter, Any], None]] | None = None,
|
|
43
|
+
ui_options: dict | None = None,
|
|
44
|
+
step: int | None = None,
|
|
45
|
+
slider: bool = False,
|
|
46
|
+
min_val: float = 0,
|
|
47
|
+
max_val: float = 100,
|
|
48
|
+
validate_min_max: bool = False,
|
|
49
|
+
accept_any: bool = True,
|
|
50
|
+
hide: bool = False,
|
|
51
|
+
hide_label: bool = False,
|
|
52
|
+
hide_property: bool = False,
|
|
53
|
+
allow_input: bool = True,
|
|
54
|
+
allow_property: bool = True,
|
|
55
|
+
allow_output: bool = True,
|
|
56
|
+
settable: bool = True,
|
|
57
|
+
serializable: bool = True,
|
|
58
|
+
user_defined: bool = False,
|
|
59
|
+
element_id: str | None = None,
|
|
60
|
+
element_type: str | None = None,
|
|
61
|
+
parent_container_name: str | None = None,
|
|
62
|
+
) -> None:
|
|
63
|
+
"""Initialize an integer parameter with step validation.
|
|
64
|
+
|
|
65
|
+
Args:
|
|
66
|
+
name: Parameter name
|
|
67
|
+
tooltip: Parameter tooltip
|
|
68
|
+
default_value: Default parameter value
|
|
69
|
+
tooltip_as_input: Tooltip for input mode
|
|
70
|
+
tooltip_as_property: Tooltip for property mode
|
|
71
|
+
tooltip_as_output: Tooltip for output mode
|
|
72
|
+
allowed_modes: Allowed parameter modes
|
|
73
|
+
traits: Parameter traits
|
|
74
|
+
converters: Parameter converters
|
|
75
|
+
validators: Parameter validators
|
|
76
|
+
ui_options: Dictionary of UI options
|
|
77
|
+
step: Step size for numeric input controls
|
|
78
|
+
slider: Whether to use slider trait
|
|
79
|
+
min_val: Minimum value for constraints
|
|
80
|
+
max_val: Maximum value for constraints
|
|
81
|
+
validate_min_max: Whether to validate min/max with error
|
|
82
|
+
accept_any: Whether to accept any input type and convert to integer (default: True)
|
|
83
|
+
hide: Whether to hide the entire parameter
|
|
84
|
+
hide_label: Whether to hide the parameter label
|
|
85
|
+
hide_property: Whether to hide the parameter in property mode
|
|
86
|
+
allow_input: Whether to allow input mode
|
|
87
|
+
allow_property: Whether to allow property mode
|
|
88
|
+
allow_output: Whether to allow output mode
|
|
89
|
+
settable: Whether the parameter is settable
|
|
90
|
+
serializable: Whether the parameter is serializable
|
|
91
|
+
user_defined: Whether the parameter is user-defined
|
|
92
|
+
element_id: Element ID
|
|
93
|
+
element_type: Element type
|
|
94
|
+
parent_container_name: Name of parent container
|
|
95
|
+
"""
|
|
96
|
+
# Call parent with integer-specific settings
|
|
97
|
+
super().__init__(
|
|
98
|
+
name=name,
|
|
99
|
+
tooltip=tooltip,
|
|
100
|
+
type="int",
|
|
101
|
+
input_types=None, # Will be set by parent based on accept_any
|
|
102
|
+
output_type="int",
|
|
103
|
+
default_value=default_value,
|
|
104
|
+
tooltip_as_input=tooltip_as_input,
|
|
105
|
+
tooltip_as_property=tooltip_as_property,
|
|
106
|
+
tooltip_as_output=tooltip_as_output,
|
|
107
|
+
allowed_modes=allowed_modes,
|
|
108
|
+
traits=traits,
|
|
109
|
+
converters=converters,
|
|
110
|
+
validators=validators,
|
|
111
|
+
ui_options=ui_options,
|
|
112
|
+
step=step,
|
|
113
|
+
slider=slider,
|
|
114
|
+
min_val=min_val,
|
|
115
|
+
max_val=max_val,
|
|
116
|
+
validate_min_max=validate_min_max,
|
|
117
|
+
accept_any=accept_any,
|
|
118
|
+
hide=hide,
|
|
119
|
+
hide_label=hide_label,
|
|
120
|
+
hide_property=hide_property,
|
|
121
|
+
allow_input=allow_input,
|
|
122
|
+
allow_property=allow_property,
|
|
123
|
+
allow_output=allow_output,
|
|
124
|
+
settable=settable,
|
|
125
|
+
serializable=serializable,
|
|
126
|
+
user_defined=user_defined,
|
|
127
|
+
element_id=element_id,
|
|
128
|
+
element_type=element_type,
|
|
129
|
+
parent_container_name=parent_container_name,
|
|
130
|
+
)
|
|
131
|
+
|
|
132
|
+
def _convert_to_number(self, value: Any) -> int: # noqa: C901, PLR0911
|
|
133
|
+
"""Safely convert any input value to an integer.
|
|
134
|
+
|
|
135
|
+
Handles various input types including strings, floats, and other objects.
|
|
136
|
+
Uses Python's built-in int() conversion with proper error handling.
|
|
137
|
+
|
|
138
|
+
Args:
|
|
139
|
+
value: The value to convert to integer
|
|
140
|
+
|
|
141
|
+
Returns:
|
|
142
|
+
Integer representation of the value
|
|
143
|
+
|
|
144
|
+
Raises:
|
|
145
|
+
ValueError: If the value cannot be converted to an integer
|
|
146
|
+
"""
|
|
147
|
+
# Handle None and empty string cases first
|
|
148
|
+
if value is None:
|
|
149
|
+
return 0
|
|
150
|
+
|
|
151
|
+
if isinstance(value, str):
|
|
152
|
+
value = value.strip()
|
|
153
|
+
if not value:
|
|
154
|
+
return 0
|
|
155
|
+
|
|
156
|
+
# Handle boolean inputs
|
|
157
|
+
if isinstance(value, bool):
|
|
158
|
+
if value:
|
|
159
|
+
return 1
|
|
160
|
+
return 0
|
|
161
|
+
|
|
162
|
+
# Handle numeric inputs
|
|
163
|
+
if isinstance(value, (int, float)):
|
|
164
|
+
return int(value)
|
|
165
|
+
|
|
166
|
+
# Handle string inputs
|
|
167
|
+
if isinstance(value, str):
|
|
168
|
+
try:
|
|
169
|
+
return int(value)
|
|
170
|
+
except ValueError:
|
|
171
|
+
# Try converting float first, then to int
|
|
172
|
+
try:
|
|
173
|
+
return int(float(value))
|
|
174
|
+
except (ValueError, TypeError) as e:
|
|
175
|
+
msg = f"Cannot convert '{value}' to integer"
|
|
176
|
+
raise ValueError(msg) from e
|
|
177
|
+
|
|
178
|
+
# For all other types, try direct conversion
|
|
179
|
+
try:
|
|
180
|
+
return int(value)
|
|
181
|
+
except (ValueError, TypeError) as e:
|
|
182
|
+
msg = f"Cannot convert {type(value).__name__} to integer"
|
|
183
|
+
raise ValueError(msg) from e
|