nodebpy 0.1.1__py3-none-any.whl → 0.2.1__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.
@@ -1,457 +1,219 @@
1
- """
2
- Auto-generated Blender Geometry Node classes.
1
+ from typing import Literal
3
2
 
4
- DO NOT EDIT THIS FILE MANUALLY.
5
- This file is generated by molecularnodes/nodes/generator.py
6
-
7
- To regenerate: Run generator.py from within Blender
8
-
9
- KNOWN LIMITATIONS:
10
- - Dynamic multi-input/output sockets are not yet supported
11
- (these are the unnamed sockets that appear in the UI for nodes like
12
- "Evaluate Closure", "Join Geometry", etc. that allow dragging in
13
- multiple connections)
14
- - TODO: Add support for dynamic socket creation
15
- """
16
-
17
- from __future__ import annotations
18
3
  import bpy
19
- from typing_extensions import Literal
20
- from ..builder import NodeBuilder, NodeSocket
21
- from .types import LINKABLE, TYPE_INPUT_BOOLEAN
22
-
23
-
24
- class DomainSize(NodeBuilder):
25
- """Retrieve the number of elements in a geometry for each attribute domain"""
26
-
27
- name = "GeometryNodeAttributeDomainSize"
28
- node: bpy.types.GeometryNodeAttributeDomainSize
29
-
30
- def __init__(
31
- self,
32
- geometry: LINKABLE = None,
33
- component: Literal[
34
- "MESH", "POINTCLOUD", "CURVE", "INSTANCES", "GREASEPENCIL"
35
- ] = "MESH",
36
- **kwargs,
37
- ):
38
- super().__init__()
39
- key_args = {"Geometry": geometry}
40
- key_args.update(kwargs)
41
- self.component = component
42
- self._establish_links(**key_args)
43
-
44
- @property
45
- def i_geometry(self) -> NodeSocket:
46
- """Input socket: Geometry"""
47
- return self._input("Geometry")
48
-
49
- @property
50
- def o_point_count(self) -> bpy.types.NodeSocketInt:
51
- """Output socket: Point Count"""
52
- return self._output("Point Count")
53
-
54
- @property
55
- def o_edge_count(self) -> bpy.types.NodeSocketInt:
56
- """Output socket: Edge Count"""
57
- return self._output("Edge Count")
58
-
59
- @property
60
- def o_face_count(self) -> bpy.types.NodeSocketInt:
61
- """Output socket: Face Count"""
62
- return self._output("Face Count")
63
-
64
- @property
65
- def o_face_corner_count(self) -> bpy.types.NodeSocketInt:
66
- """Output socket: Face Corner Count"""
67
- return self._output("Face Corner Count")
68
-
69
- @property
70
- def component(
71
- self,
72
- ) -> Literal["MESH", "POINTCLOUD", "CURVE", "INSTANCES", "GREASEPENCIL"]:
73
- return self.node.component
74
-
75
- @component.setter
76
- def component(
77
- self, value: Literal["MESH", "POINTCLOUD", "CURVE", "INSTANCES", "GREASEPENCIL"]
78
- ):
79
- self.node.component = value
80
-
81
-
82
- class AttributeStatistic(NodeBuilder):
83
- """Calculate statistics about a data set from a field evaluated on a geometry"""
84
-
85
- name = "GeometryNodeAttributeStatistic"
86
- node: bpy.types.GeometryNodeAttributeStatistic
87
-
88
- def __init__(
89
- self,
90
- geometry: LINKABLE = None,
91
- selection: TYPE_INPUT_BOOLEAN = True,
92
- attribute: float | LINKABLE | None = 0.0,
93
- data_type: Literal[
94
- "FLOAT",
95
- "INT",
96
- "BOOLEAN",
97
- "FLOAT_VECTOR",
98
- "FLOAT_COLOR",
99
- "QUATERNION",
100
- "FLOAT4X4",
101
- "STRING",
102
- "INT8",
103
- "INT16_2D",
104
- "INT32_2D",
105
- "FLOAT2",
106
- "BYTE_COLOR",
107
- ] = "FLOAT",
108
- domain: Literal[
109
- "POINT", "EDGE", "FACE", "CORNER", "CURVE", "INSTANCE", "LAYER"
110
- ] = "POINT",
111
- **kwargs,
112
- ):
113
- super().__init__()
114
- key_args = {
115
- "Geometry": geometry,
116
- "Selection": selection,
117
- "Attribute": attribute,
118
- }
119
- key_args.update(kwargs)
120
- self.data_type = data_type
121
- self.domain = domain
122
- self._establish_links(**key_args)
123
4
 
124
- @property
125
- def i_geometry(self) -> NodeSocket:
126
- """Input socket: Geometry"""
127
- return self._input("Geometry")
128
-
129
- @property
130
- def i_selection(self) -> bpy.types.NodeSocketBool:
131
- """Input socket: Selection"""
132
- return self._input("Selection")
133
-
134
- @property
135
- def i_attribute(self) -> bpy.types.NodeSocketFloat:
136
- """Input socket: Attribute"""
137
- return self._input("Attribute")
138
-
139
- @property
140
- def o_mean(self) -> bpy.types.NodeSocketFloat:
141
- """Output socket: Mean"""
142
- return self._output("Mean")
143
-
144
- @property
145
- def o_median(self) -> bpy.types.NodeSocketFloat:
146
- """Output socket: Median"""
147
- return self._output("Median")
148
-
149
- @property
150
- def o_sum(self) -> bpy.types.NodeSocketFloat:
151
- """Output socket: Sum"""
152
- return self._output("Sum")
153
-
154
- @property
155
- def o_min(self) -> bpy.types.NodeSocketFloat:
156
- """Output socket: Min"""
157
- return self._output("Min")
158
-
159
- @property
160
- def o_max(self) -> bpy.types.NodeSocketFloat:
161
- """Output socket: Max"""
162
- return self._output("Max")
163
-
164
- @property
165
- def o_range(self) -> bpy.types.NodeSocketFloat:
166
- """Output socket: Range"""
167
- return self._output("Range")
168
-
169
- @property
170
- def o_standard_deviation(self) -> bpy.types.NodeSocketFloat:
171
- """Output socket: Standard Deviation"""
172
- return self._output("Standard Deviation")
173
-
174
- @property
175
- def o_variance(self) -> bpy.types.NodeSocketFloat:
176
- """Output socket: Variance"""
177
- return self._output("Variance")
178
-
179
- @property
180
- def data_type(
181
- self,
182
- ) -> Literal[
183
- "FLOAT",
184
- "INT",
185
- "BOOLEAN",
186
- "FLOAT_VECTOR",
187
- "FLOAT_COLOR",
188
- "QUATERNION",
189
- "FLOAT4X4",
190
- "STRING",
191
- "INT8",
192
- "INT16_2D",
193
- "INT32_2D",
194
- "FLOAT2",
195
- "BYTE_COLOR",
196
- ]:
197
- return self.node.data_type
198
-
199
- @data_type.setter
200
- def data_type(
201
- self,
202
- value: Literal[
203
- "FLOAT",
204
- "INT",
205
- "BOOLEAN",
206
- "FLOAT_VECTOR",
207
- "FLOAT_COLOR",
208
- "QUATERNION",
209
- "FLOAT4X4",
210
- "STRING",
211
- "INT8",
212
- "INT16_2D",
213
- "INT32_2D",
214
- "FLOAT2",
215
- "BYTE_COLOR",
216
- ],
217
- ):
218
- self.node.data_type = value
219
-
220
- @property
221
- def domain(
222
- self,
223
- ) -> Literal["POINT", "EDGE", "FACE", "CORNER", "CURVE", "INSTANCE", "LAYER"]:
224
- return self.node.domain
225
-
226
- @domain.setter
227
- def domain(
228
- self,
229
- value: Literal["POINT", "EDGE", "FACE", "CORNER", "CURVE", "INSTANCE", "LAYER"],
230
- ):
231
- self.node.domain = value
5
+ from ..builder import NodeBuilder, SocketLinker
6
+ from ..types import (
7
+ TYPE_INPUT_BOOLEAN,
8
+ TYPE_INPUT_GEOMETRY,
9
+ TYPE_INPUT_INT,
10
+ TYPE_INPUT_MENU,
11
+ TYPE_INPUT_STRING,
12
+ TYPE_INPUT_ROTATION,
13
+ TYPE_INPUT_COLOR,
14
+ TYPE_INPUT_VALUE,
15
+ TYPE_INPUT_VECTOR,
16
+ )
232
17
 
233
18
 
234
19
  class BlurAttribute(NodeBuilder):
235
20
  """Mix attribute values of neighboring elements"""
236
21
 
237
- name = "GeometryNodeBlurAttribute"
22
+ _bl_idname = "GeometryNodeBlurAttribute"
238
23
  node: bpy.types.GeometryNodeBlurAttribute
239
24
 
240
25
  def __init__(
241
26
  self,
242
- value: float | LINKABLE | None = 0.0,
243
- iterations: int | LINKABLE | None = 1,
244
- weight: LINKABLE | None = 1.0,
245
- data_type: Literal[
246
- "FLOAT",
247
- "INT",
248
- "BOOLEAN",
249
- "FLOAT_VECTOR",
250
- "FLOAT_COLOR",
251
- "QUATERNION",
252
- "FLOAT4X4",
253
- "STRING",
254
- "INT8",
255
- "INT16_2D",
256
- "INT32_2D",
257
- "FLOAT2",
258
- "BYTE_COLOR",
259
- ] = "FLOAT",
260
- **kwargs,
27
+ value: TYPE_INPUT_VALUE = 0.0,
28
+ iterations: TYPE_INPUT_INT = 1,
29
+ weight: TYPE_INPUT_VALUE = 1.0,
30
+ *,
31
+ data_type: Literal["FLOAT", "INT", "FLOAT_VECTOR", "FLOAT_COLOR"] = "FLOAT",
261
32
  ):
262
33
  super().__init__()
263
34
  key_args = {"Value": value, "Iterations": iterations, "Weight": weight}
264
- key_args.update(kwargs)
265
35
  self.data_type = data_type
266
36
  self._establish_links(**key_args)
267
37
 
268
- @property
269
- def i_value(self) -> bpy.types.NodeSocketFloat:
38
+ @classmethod
39
+ def float(
40
+ cls,
41
+ value: TYPE_INPUT_VALUE = 0.0,
42
+ iterations: TYPE_INPUT_INT = 1,
43
+ weight: TYPE_INPUT_VALUE = 1.0,
44
+ ) -> "BlurAttribute":
45
+ """Create Blur Attribute with operation 'Float'."""
46
+ return cls(data_type="FLOAT", value=value, iterations=iterations, weight=weight)
47
+
48
+ @classmethod
49
+ def integer(
50
+ cls,
51
+ value: TYPE_INPUT_INT = 0,
52
+ iterations: TYPE_INPUT_INT = 1,
53
+ weight: TYPE_INPUT_VALUE = 1.0,
54
+ ) -> "BlurAttribute":
55
+ """Create Blur Attribute with operation 'Integer'."""
56
+ return cls(data_type="INT", value=value, iterations=iterations, weight=weight)
57
+
58
+ @classmethod
59
+ def vector(
60
+ cls,
61
+ value: TYPE_INPUT_VECTOR = None,
62
+ iterations: TYPE_INPUT_INT = 1,
63
+ weight: TYPE_INPUT_VALUE = 1.0,
64
+ ) -> "BlurAttribute":
65
+ """Create Blur Attribute with operation 'Vector'."""
66
+ return cls(
67
+ data_type="FLOAT_VECTOR", value=value, iterations=iterations, weight=weight
68
+ )
69
+
70
+ @classmethod
71
+ def color(
72
+ cls,
73
+ value: TYPE_INPUT_COLOR = None,
74
+ iterations: TYPE_INPUT_INT = 1,
75
+ weight: TYPE_INPUT_VALUE = 1.0,
76
+ ) -> "BlurAttribute":
77
+ """Create Blur Attribute with operation 'Color'."""
78
+ return cls(
79
+ data_type="FLOAT_COLOR", value=value, iterations=iterations, weight=weight
80
+ )
81
+
82
+ @property
83
+ def i_value(self) -> SocketLinker:
270
84
  """Input socket: Value"""
271
85
  return self._input("Value")
272
86
 
273
87
  @property
274
- def i_iterations(self) -> bpy.types.NodeSocketInt:
88
+ def i_iterations(self) -> SocketLinker:
275
89
  """Input socket: Iterations"""
276
90
  return self._input("Iterations")
277
91
 
278
92
  @property
279
- def i_weight(self) -> NodeSocket:
93
+ def i_weight(self) -> SocketLinker:
280
94
  """Input socket: Weight"""
281
95
  return self._input("Weight")
282
96
 
283
97
  @property
284
- def o_value(self) -> bpy.types.NodeSocketFloat:
98
+ def o_value(self) -> SocketLinker:
285
99
  """Output socket: Value"""
286
100
  return self._output("Value")
287
101
 
288
102
  @property
289
- def data_type(
290
- self,
291
- ) -> Literal[
292
- "FLOAT",
293
- "INT",
294
- "BOOLEAN",
295
- "FLOAT_VECTOR",
296
- "FLOAT_COLOR",
297
- "QUATERNION",
298
- "FLOAT4X4",
299
- "STRING",
300
- "INT8",
301
- "INT16_2D",
302
- "INT32_2D",
303
- "FLOAT2",
304
- "BYTE_COLOR",
305
- ]:
103
+ def data_type(self) -> Literal["FLOAT", "INT", "FLOAT_VECTOR", "FLOAT_COLOR"]:
306
104
  return self.node.data_type
307
105
 
308
106
  @data_type.setter
309
- def data_type(
310
- self,
311
- value: Literal[
312
- "FLOAT",
313
- "INT",
314
- "BOOLEAN",
315
- "FLOAT_VECTOR",
316
- "FLOAT_COLOR",
317
- "QUATERNION",
318
- "FLOAT4X4",
319
- "STRING",
320
- "INT8",
321
- "INT16_2D",
322
- "INT32_2D",
323
- "FLOAT2",
324
- "BYTE_COLOR",
325
- ],
326
- ):
107
+ def data_type(self, value: Literal["FLOAT", "INT", "FLOAT_VECTOR", "FLOAT_COLOR"]):
327
108
  self.node.data_type = value
328
109
 
329
110
 
330
- class NamedAttribute(NodeBuilder):
331
- """Retrieve the data of a specified attribute"""
111
+ class DomainSize(NodeBuilder):
112
+ """Retrieve the number of elements in a geometry for each attribute domain"""
332
113
 
333
- name = "GeometryNodeInputNamedAttribute"
334
- node: bpy.types.GeometryNodeInputNamedAttribute
114
+ _bl_idname = "GeometryNodeAttributeDomainSize"
115
+ node: bpy.types.GeometryNodeAttributeDomainSize
335
116
 
336
117
  def __init__(
337
118
  self,
338
- name: str | LINKABLE | None = "",
339
- data_type: Literal[
340
- "FLOAT",
341
- "INT",
342
- "BOOLEAN",
343
- "FLOAT_VECTOR",
344
- "FLOAT_COLOR",
345
- "QUATERNION",
346
- "FLOAT4X4",
347
- "STRING",
348
- "INT8",
349
- "INT16_2D",
350
- "INT32_2D",
351
- "FLOAT2",
352
- "BYTE_COLOR",
353
- ] = "FLOAT",
354
- **kwargs,
119
+ geometry: TYPE_INPUT_GEOMETRY = None,
120
+ *,
121
+ component: Literal[
122
+ "MESH", "POINTCLOUD", "CURVE", "INSTANCES", "GREASEPENCIL"
123
+ ] = "MESH",
355
124
  ):
356
125
  super().__init__()
357
- key_args = {"Name": name}
358
- key_args.update(kwargs)
359
- self.data_type = data_type
126
+ key_args = {"Geometry": geometry}
127
+ self.component = component
360
128
  self._establish_links(**key_args)
361
129
 
362
130
  @property
363
- def i_name(self) -> bpy.types.NodeSocketString:
364
- """Input socket: Name"""
365
- return self._input("Name")
131
+ def i_geometry(self) -> SocketLinker:
132
+ """Input socket: Geometry"""
133
+ return self._input("Geometry")
366
134
 
367
135
  @property
368
- def o_attribute(self) -> bpy.types.NodeSocketFloat:
369
- """Output socket: Attribute"""
370
- return self._output("Attribute")
136
+ def o_point_count(self) -> SocketLinker:
137
+ """Output socket: Point Count"""
138
+ return self._output("Point Count")
371
139
 
372
140
  @property
373
- def o_exists(self) -> bpy.types.NodeSocketBool:
374
- """Output socket: Exists"""
375
- return self._output("Exists")
141
+ def o_edge_count(self) -> SocketLinker:
142
+ """Output socket: Edge Count"""
143
+ return self._output("Edge Count")
376
144
 
377
145
  @property
378
- def data_type(
379
- self,
380
- ) -> Literal[
381
- "FLOAT",
382
- "INT",
383
- "BOOLEAN",
384
- "FLOAT_VECTOR",
385
- "FLOAT_COLOR",
386
- "QUATERNION",
387
- "FLOAT4X4",
388
- "STRING",
389
- "INT8",
390
- "INT16_2D",
391
- "INT32_2D",
392
- "FLOAT2",
393
- "BYTE_COLOR",
394
- ]:
395
- return self.node.data_type
146
+ def o_face_count(self) -> SocketLinker:
147
+ """Output socket: Face Count"""
148
+ return self._output("Face Count")
396
149
 
397
- @data_type.setter
398
- def data_type(
150
+ @property
151
+ def o_face_corner_count(self) -> SocketLinker:
152
+ """Output socket: Face Corner Count"""
153
+ return self._output("Face Corner Count")
154
+
155
+ @property
156
+ def o_spline_count(self) -> SocketLinker:
157
+ """Output socket: Spline Count"""
158
+ return self._output("Spline Count")
159
+
160
+ @property
161
+ def o_instance_count(self) -> SocketLinker:
162
+ """Output socket: Instance Count"""
163
+ return self._output("Instance Count")
164
+
165
+ @property
166
+ def o_layer_count(self) -> SocketLinker:
167
+ """Output socket: Layer Count"""
168
+ return self._output("Layer Count")
169
+
170
+ @property
171
+ def component(
399
172
  self,
400
- value: Literal[
401
- "FLOAT",
402
- "INT",
403
- "BOOLEAN",
404
- "FLOAT_VECTOR",
405
- "FLOAT_COLOR",
406
- "QUATERNION",
407
- "FLOAT4X4",
408
- "STRING",
409
- "INT8",
410
- "INT16_2D",
411
- "INT32_2D",
412
- "FLOAT2",
413
- "BYTE_COLOR",
414
- ],
173
+ ) -> Literal["MESH", "POINTCLOUD", "CURVE", "INSTANCES", "GREASEPENCIL"]:
174
+ return self.node.component
175
+
176
+ @component.setter
177
+ def component(
178
+ self, value: Literal["MESH", "POINTCLOUD", "CURVE", "INSTANCES", "GREASEPENCIL"]
415
179
  ):
416
- self.node.data_type = value
180
+ self.node.component = value
417
181
 
418
182
 
419
183
  class RemoveNamedAttribute(NodeBuilder):
420
184
  """Delete an attribute with a specified name from a geometry. Typically used to optimize performance"""
421
185
 
422
- name = "GeometryNodeRemoveAttribute"
186
+ _bl_idname = "GeometryNodeRemoveAttribute"
423
187
  node: bpy.types.GeometryNodeRemoveAttribute
424
188
 
425
189
  def __init__(
426
190
  self,
427
- geometry: LINKABLE = None,
428
- pattern_mode: LINKABLE | None = "Exact",
429
- name: str | LINKABLE | None = "",
430
- **kwargs,
191
+ geometry: TYPE_INPUT_GEOMETRY = None,
192
+ pattern_mode: TYPE_INPUT_MENU = "Exact",
193
+ name: TYPE_INPUT_STRING = "",
431
194
  ):
432
195
  super().__init__()
433
196
  key_args = {"Geometry": geometry, "Pattern Mode": pattern_mode, "Name": name}
434
- key_args.update(kwargs)
435
197
 
436
198
  self._establish_links(**key_args)
437
199
 
438
200
  @property
439
- def i_geometry(self) -> NodeSocket:
201
+ def i_geometry(self) -> SocketLinker:
440
202
  """Input socket: Geometry"""
441
203
  return self._input("Geometry")
442
204
 
443
205
  @property
444
- def i_pattern_mode(self) -> NodeSocket:
206
+ def i_pattern_mode(self) -> SocketLinker:
445
207
  """Input socket: Pattern Mode"""
446
208
  return self._input("Pattern Mode")
447
209
 
448
210
  @property
449
- def i_name(self) -> bpy.types.NodeSocketString:
211
+ def i_name(self) -> SocketLinker:
450
212
  """Input socket: Name"""
451
213
  return self._input("Name")
452
214
 
453
215
  @property
454
- def o_geometry(self) -> NodeSocket:
216
+ def o_geometry(self) -> SocketLinker:
455
217
  """Output socket: Geometry"""
456
218
  return self._output("Geometry")
457
219
 
@@ -459,15 +221,16 @@ class RemoveNamedAttribute(NodeBuilder):
459
221
  class StoreNamedAttribute(NodeBuilder):
460
222
  """Store the result of a field on a geometry as an attribute with the specified name"""
461
223
 
462
- name = "GeometryNodeStoreNamedAttribute"
224
+ _bl_idname = "GeometryNodeStoreNamedAttribute"
463
225
  node: bpy.types.GeometryNodeStoreNamedAttribute
464
226
 
465
227
  def __init__(
466
228
  self,
467
- geometry: LINKABLE = None,
229
+ geometry: TYPE_INPUT_GEOMETRY = None,
468
230
  selection: TYPE_INPUT_BOOLEAN = True,
469
- name: str | LINKABLE | None = "",
470
- value: float | LINKABLE | None = 0.0,
231
+ name: TYPE_INPUT_STRING = "",
232
+ value: TYPE_INPUT_VALUE = 0.0,
233
+ *,
471
234
  data_type: Literal[
472
235
  "FLOAT",
473
236
  "INT",
@@ -476,17 +239,13 @@ class StoreNamedAttribute(NodeBuilder):
476
239
  "FLOAT_COLOR",
477
240
  "QUATERNION",
478
241
  "FLOAT4X4",
479
- "STRING",
480
242
  "INT8",
481
- "INT16_2D",
482
- "INT32_2D",
483
243
  "FLOAT2",
484
244
  "BYTE_COLOR",
485
245
  ] = "FLOAT",
486
246
  domain: Literal[
487
247
  "POINT", "EDGE", "FACE", "CORNER", "CURVE", "INSTANCE", "LAYER"
488
248
  ] = "POINT",
489
- **kwargs,
490
249
  ):
491
250
  super().__init__()
492
251
  key_args = {
@@ -495,33 +254,236 @@ class StoreNamedAttribute(NodeBuilder):
495
254
  "Name": name,
496
255
  "Value": value,
497
256
  }
498
- key_args.update(kwargs)
499
257
  self.data_type = data_type
500
258
  self.domain = domain
501
259
  self._establish_links(**key_args)
502
260
 
503
- @property
504
- def i_geometry(self) -> NodeSocket:
261
+ @classmethod
262
+ def float(
263
+ cls,
264
+ geometry: TYPE_INPUT_GEOMETRY = None,
265
+ selection: TYPE_INPUT_BOOLEAN = True,
266
+ name: TYPE_INPUT_STRING = "",
267
+ value: TYPE_INPUT_VALUE = 0.0,
268
+ ) -> "StoreNamedAttribute":
269
+ """Create Store Named Attribute with operation 'Float'."""
270
+ return cls(
271
+ data_type="FLOAT",
272
+ geometry=geometry,
273
+ selection=selection,
274
+ name=name,
275
+ value=value,
276
+ )
277
+
278
+ @classmethod
279
+ def integer(
280
+ cls,
281
+ geometry: TYPE_INPUT_GEOMETRY = None,
282
+ selection: TYPE_INPUT_BOOLEAN = True,
283
+ name: TYPE_INPUT_STRING = "",
284
+ value: TYPE_INPUT_INT = 0,
285
+ ) -> "StoreNamedAttribute":
286
+ """Create Store Named Attribute with operation 'Integer'."""
287
+ return cls(
288
+ data_type="INT",
289
+ geometry=geometry,
290
+ selection=selection,
291
+ name=name,
292
+ value=value,
293
+ )
294
+
295
+ @classmethod
296
+ def boolean(
297
+ cls,
298
+ geometry: TYPE_INPUT_GEOMETRY = None,
299
+ selection: TYPE_INPUT_BOOLEAN = True,
300
+ name: TYPE_INPUT_STRING = "",
301
+ value: TYPE_INPUT_BOOLEAN = False,
302
+ ) -> "StoreNamedAttribute":
303
+ """Create Store Named Attribute with operation 'Boolean'."""
304
+ return cls(
305
+ data_type="BOOLEAN",
306
+ geometry=geometry,
307
+ selection=selection,
308
+ name=name,
309
+ value=value,
310
+ )
311
+
312
+ @classmethod
313
+ def vector(
314
+ cls,
315
+ geometry: TYPE_INPUT_GEOMETRY = None,
316
+ selection: TYPE_INPUT_BOOLEAN = True,
317
+ name: TYPE_INPUT_STRING = "",
318
+ value: TYPE_INPUT_VECTOR = None,
319
+ ) -> "StoreNamedAttribute":
320
+ """Create Store Named Attribute with operation 'Vector'."""
321
+ return cls(
322
+ data_type="FLOAT_VECTOR",
323
+ geometry=geometry,
324
+ selection=selection,
325
+ name=name,
326
+ value=value,
327
+ )
328
+
329
+ @classmethod
330
+ def color(
331
+ cls,
332
+ geometry: TYPE_INPUT_GEOMETRY = None,
333
+ selection: TYPE_INPUT_BOOLEAN = True,
334
+ name: TYPE_INPUT_STRING = "",
335
+ value: TYPE_INPUT_COLOR = None,
336
+ ) -> "StoreNamedAttribute":
337
+ """Create Store Named Attribute with operation 'Color'."""
338
+ return cls(
339
+ data_type="FLOAT_COLOR",
340
+ geometry=geometry,
341
+ selection=selection,
342
+ name=name,
343
+ value=value,
344
+ )
345
+
346
+ @classmethod
347
+ def quaternion(
348
+ cls,
349
+ geometry: TYPE_INPUT_GEOMETRY = None,
350
+ selection: TYPE_INPUT_BOOLEAN = True,
351
+ name: TYPE_INPUT_STRING = "",
352
+ value: TYPE_INPUT_ROTATION = None,
353
+ ) -> "StoreNamedAttribute":
354
+ """Create Store Named Attribute with operation 'Quaternion'."""
355
+ return cls(
356
+ data_type="QUATERNION",
357
+ geometry=geometry,
358
+ selection=selection,
359
+ name=name,
360
+ value=value,
361
+ )
362
+
363
+ @classmethod
364
+ def point(
365
+ cls,
366
+ geometry: TYPE_INPUT_GEOMETRY = None,
367
+ selection: TYPE_INPUT_BOOLEAN = True,
368
+ name: TYPE_INPUT_STRING = "",
369
+ value: TYPE_INPUT_COLOR = None,
370
+ ) -> "StoreNamedAttribute":
371
+ """Create Store Named Attribute with operation 'Point'."""
372
+ return cls(
373
+ domain="POINT",
374
+ geometry=geometry,
375
+ selection=selection,
376
+ name=name,
377
+ value=value,
378
+ )
379
+
380
+ @classmethod
381
+ def edge(
382
+ cls,
383
+ geometry: TYPE_INPUT_GEOMETRY = None,
384
+ selection: TYPE_INPUT_BOOLEAN = True,
385
+ name: TYPE_INPUT_STRING = "",
386
+ value: TYPE_INPUT_COLOR = None,
387
+ ) -> "StoreNamedAttribute":
388
+ """Create Store Named Attribute with operation 'Edge'."""
389
+ return cls(
390
+ domain="EDGE",
391
+ geometry=geometry,
392
+ selection=selection,
393
+ name=name,
394
+ value=value,
395
+ )
396
+
397
+ @classmethod
398
+ def face(
399
+ cls,
400
+ geometry: TYPE_INPUT_GEOMETRY = None,
401
+ selection: TYPE_INPUT_BOOLEAN = True,
402
+ name: TYPE_INPUT_STRING = "",
403
+ value: TYPE_INPUT_COLOR = None,
404
+ ) -> "StoreNamedAttribute":
405
+ """Create Store Named Attribute with operation 'Face'."""
406
+ return cls(
407
+ domain="FACE",
408
+ geometry=geometry,
409
+ selection=selection,
410
+ name=name,
411
+ value=value,
412
+ )
413
+
414
+ @classmethod
415
+ def spline(
416
+ cls,
417
+ geometry: TYPE_INPUT_GEOMETRY = None,
418
+ selection: TYPE_INPUT_BOOLEAN = True,
419
+ name: TYPE_INPUT_STRING = "",
420
+ value: TYPE_INPUT_COLOR = None,
421
+ ) -> "StoreNamedAttribute":
422
+ """Create Store Named Attribute with operation 'Spline'."""
423
+ return cls(
424
+ domain="CURVE",
425
+ geometry=geometry,
426
+ selection=selection,
427
+ name=name,
428
+ value=value,
429
+ )
430
+
431
+ @classmethod
432
+ def instance(
433
+ cls,
434
+ geometry: TYPE_INPUT_GEOMETRY = None,
435
+ selection: TYPE_INPUT_BOOLEAN = True,
436
+ name: TYPE_INPUT_STRING = "",
437
+ value: TYPE_INPUT_COLOR = None,
438
+ ) -> "StoreNamedAttribute":
439
+ """Create Store Named Attribute with operation 'Instance'."""
440
+ return cls(
441
+ domain="INSTANCE",
442
+ geometry=geometry,
443
+ selection=selection,
444
+ name=name,
445
+ value=value,
446
+ )
447
+
448
+ @classmethod
449
+ def layer(
450
+ cls,
451
+ geometry: TYPE_INPUT_GEOMETRY = None,
452
+ selection: TYPE_INPUT_BOOLEAN = True,
453
+ name: TYPE_INPUT_STRING = "",
454
+ value: TYPE_INPUT_COLOR = None,
455
+ ) -> "StoreNamedAttribute":
456
+ """Create Store Named Attribute with operation 'Layer'."""
457
+ return cls(
458
+ domain="LAYER",
459
+ geometry=geometry,
460
+ selection=selection,
461
+ name=name,
462
+ value=value,
463
+ )
464
+
465
+ @property
466
+ def i_geometry(self) -> SocketLinker:
505
467
  """Input socket: Geometry"""
506
468
  return self._input("Geometry")
507
469
 
508
470
  @property
509
- def i_selection(self) -> bpy.types.NodeSocketBool:
471
+ def i_selection(self) -> SocketLinker:
510
472
  """Input socket: Selection"""
511
473
  return self._input("Selection")
512
474
 
513
475
  @property
514
- def i_name(self) -> bpy.types.NodeSocketString:
476
+ def i_name(self) -> SocketLinker:
515
477
  """Input socket: Name"""
516
478
  return self._input("Name")
517
479
 
518
480
  @property
519
- def i_value(self) -> bpy.types.NodeSocketFloat:
481
+ def i_value(self) -> SocketLinker:
520
482
  """Input socket: Value"""
521
483
  return self._input("Value")
522
484
 
523
485
  @property
524
- def o_geometry(self) -> NodeSocket:
486
+ def o_geometry(self) -> SocketLinker:
525
487
  """Output socket: Geometry"""
526
488
  return self._output("Geometry")
527
489
 
@@ -536,10 +498,7 @@ class StoreNamedAttribute(NodeBuilder):
536
498
  "FLOAT_COLOR",
537
499
  "QUATERNION",
538
500
  "FLOAT4X4",
539
- "STRING",
540
501
  "INT8",
541
- "INT16_2D",
542
- "INT32_2D",
543
502
  "FLOAT2",
544
503
  "BYTE_COLOR",
545
504
  ]:
@@ -556,10 +515,7 @@ class StoreNamedAttribute(NodeBuilder):
556
515
  "FLOAT_COLOR",
557
516
  "QUATERNION",
558
517
  "FLOAT4X4",
559
- "STRING",
560
518
  "INT8",
561
- "INT16_2D",
562
- "INT32_2D",
563
519
  "FLOAT2",
564
520
  "BYTE_COLOR",
565
521
  ],