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.
Files changed (41) hide show
  1. griptape_nodes/common/macro_parser/__init__.py +28 -0
  2. griptape_nodes/common/macro_parser/core.py +230 -0
  3. griptape_nodes/common/macro_parser/exceptions.py +23 -0
  4. griptape_nodes/common/macro_parser/formats.py +170 -0
  5. griptape_nodes/common/macro_parser/matching.py +134 -0
  6. griptape_nodes/common/macro_parser/parsing.py +172 -0
  7. griptape_nodes/common/macro_parser/resolution.py +168 -0
  8. griptape_nodes/common/macro_parser/segments.py +42 -0
  9. griptape_nodes/exe_types/core_types.py +241 -4
  10. griptape_nodes/exe_types/node_types.py +7 -1
  11. griptape_nodes/exe_types/param_components/huggingface/__init__.py +1 -0
  12. griptape_nodes/exe_types/param_components/huggingface/huggingface_model_parameter.py +168 -0
  13. griptape_nodes/exe_types/param_components/huggingface/huggingface_repo_file_parameter.py +38 -0
  14. griptape_nodes/exe_types/param_components/huggingface/huggingface_repo_parameter.py +33 -0
  15. griptape_nodes/exe_types/param_components/huggingface/huggingface_utils.py +136 -0
  16. griptape_nodes/exe_types/param_components/log_parameter.py +136 -0
  17. griptape_nodes/exe_types/param_components/seed_parameter.py +59 -0
  18. griptape_nodes/exe_types/param_types/__init__.py +1 -0
  19. griptape_nodes/exe_types/param_types/parameter_bool.py +221 -0
  20. griptape_nodes/exe_types/param_types/parameter_float.py +179 -0
  21. griptape_nodes/exe_types/param_types/parameter_int.py +183 -0
  22. griptape_nodes/exe_types/param_types/parameter_number.py +380 -0
  23. griptape_nodes/exe_types/param_types/parameter_string.py +232 -0
  24. griptape_nodes/node_library/library_registry.py +2 -1
  25. griptape_nodes/retained_mode/events/app_events.py +21 -0
  26. griptape_nodes/retained_mode/events/os_events.py +142 -6
  27. griptape_nodes/retained_mode/events/parameter_events.py +2 -0
  28. griptape_nodes/retained_mode/griptape_nodes.py +14 -0
  29. griptape_nodes/retained_mode/managers/agent_manager.py +5 -3
  30. griptape_nodes/retained_mode/managers/arbitrary_code_exec_manager.py +19 -1
  31. griptape_nodes/retained_mode/managers/library_manager.py +27 -32
  32. griptape_nodes/retained_mode/managers/node_manager.py +14 -1
  33. griptape_nodes/retained_mode/managers/os_manager.py +403 -124
  34. griptape_nodes/retained_mode/managers/user_manager.py +120 -0
  35. griptape_nodes/retained_mode/managers/workflow_manager.py +44 -34
  36. griptape_nodes/traits/multi_options.py +26 -2
  37. griptape_nodes/utils/huggingface_utils.py +136 -0
  38. {griptape_nodes-0.59.2.dist-info → griptape_nodes-0.60.0.dist-info}/METADATA +1 -1
  39. {griptape_nodes-0.59.2.dist-info → griptape_nodes-0.60.0.dist-info}/RECORD +41 -18
  40. {griptape_nodes-0.59.2.dist-info → griptape_nodes-0.60.0.dist-info}/WHEEL +1 -1
  41. {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