Fix: Exception creating geometry node group or node group socket

c951464b8a didn't update the uses of the API.
This commit is contained in:
Hans Goudey 2023-09-18 11:01:05 -04:00
parent e894e6a411
commit 1cfed92c84
3 changed files with 33 additions and 33 deletions

View File

@ -14,8 +14,8 @@ from bpy.props import (
def build_default_empty_geometry_node_group(name):
group = bpy.data.node_groups.new(name, 'GeometryNodeTree')
group.interface.new_socket(data_("Geometry"), in_out={'OUTPUT'}, socket_type='NodeSocketGeometry')
group.interface.new_socket(data_("Geometry"), in_out={'INPUT'}, socket_type='NodeSocketGeometry')
group.interface.new_socket(data_("Geometry"), in_out='OUTPUT', socket_type='NodeSocketGeometry')
group.interface.new_socket(data_("Geometry"), in_out='INPUT', socket_type='NodeSocketGeometry')
input_node = group.nodes.new('NodeGroupInput')
output_node = group.nodes.new('NodeGroupOutput')
output_node.is_active_output = True

View File

@ -299,9 +299,9 @@ class NODE_OT_interface_item_new(NodeInterfaceOperator, Operator):
active_pos = active_item.position if active_item else -1
if self.item_type == 'INPUT':
item = interface.new_socket("Socket", socket_type=self.socket_type, in_out={'INPUT'})
item = interface.new_socket("Socket", socket_type=self.socket_type, in_out='INPUT')
elif self.item_type == 'OUTPUT':
item = interface.new_socket("Socket", socket_type=self.socket_type, in_out={'OUTPUT'})
item = interface.new_socket("Socket", socket_type=self.socket_type, in_out='OUTPUT')
elif self.item_type == 'PANEL':
item = interface.new_panel("Panel")
else:

View File

@ -111,28 +111,28 @@ class NodeGroupInterfaceTests:
tree = self.make_group()
with self.assertRaises(TypeError):
in0 = tree.interface.new_socket("Input 0", socket_type=socket_type, in_out={'INPUT'})
in0 = tree.interface.new_socket("Input 0", socket_type=socket_type, in_out='INPUT')
self.assertIsNone(in0, f"Socket created for invalid type {socket_type}")
with self.assertRaises(TypeError):
out0 = tree.interface.new_socket("Output 0", socket_type=socket_type, in_out={'OUTPUT'})
out0 = tree.interface.new_socket("Output 0", socket_type=socket_type, in_out='OUTPUT')
self.assertIsNone(out0, f"Socket created for invalid type {socket_type}")
def do_test_sockets_in_out(self, socket_type):
tree, group_node = self.make_group_and_instance()
out0 = tree.interface.new_socket("Output 0", socket_type=socket_type, in_out={'OUTPUT'})
out0 = tree.interface.new_socket("Output 0", socket_type=socket_type, in_out='OUTPUT')
self.assertIsNotNone(out0, f"Could not create socket of type {socket_type}")
in0 = tree.interface.new_socket("Input 0", socket_type=socket_type, in_out={'INPUT'})
in0 = tree.interface.new_socket("Input 0", socket_type=socket_type, in_out='INPUT')
self.assertIsNotNone(in0, f"Could not create socket of type {socket_type}")
in1 = tree.interface.new_socket("Input 1", socket_type=socket_type, in_out={'INPUT'})
in1 = tree.interface.new_socket("Input 1", socket_type=socket_type, in_out='INPUT')
self.assertIsNotNone(in1, f"Could not create socket of type {socket_type}")
out1 = tree.interface.new_socket("Output 1", socket_type=socket_type, in_out={'OUTPUT'})
out1 = tree.interface.new_socket("Output 1", socket_type=socket_type, in_out='OUTPUT')
self.assertIsNotNone(out1, f"Could not create socket of type {socket_type}")
inout0 = tree.interface.new_socket("Input/Output 0", socket_type=socket_type, in_out={'OUTPUT', 'INPUT'})
inout0 = tree.interface.new_socket("Input/Output 0", socket_type=socket_type, in_out='BOTH')
self.assertIsNotNone(inout0, f"Could not create socket of type {socket_type}")
self.assertSequenceEqual([(s.name, s.bl_idname) for s in group_node.inputs], [
@ -161,10 +161,10 @@ class NodeGroupInterfaceTests:
# That way the new instance should reflect the expected default values.
tree = self.make_group()
in0 = tree.interface.new_socket("Input 0", socket_type=socket_type, in_out={'INPUT'})
in0 = tree.interface.new_socket("Input 0", socket_type=socket_type, in_out='INPUT')
if default_value is not None:
in0.default_value = default_value
out0 = tree.interface.new_socket("Output 0", socket_type=socket_type, in_out={'OUTPUT'})
out0 = tree.interface.new_socket("Output 0", socket_type=socket_type, in_out='OUTPUT')
self.assertIsNotNone(in0, f"Could not create socket of type {socket_type}")
self.assertIsNotNone(out0, f"Could not create socket of type {socket_type}")
@ -192,8 +192,8 @@ class NodeGroupInterfaceTests:
def do_test_items_order_classic(self, socket_type):
tree, group_node = self.make_group_and_instance()
tree.interface.new_socket("Output 0", socket_type=socket_type, in_out={'OUTPUT'})
tree.interface.new_socket("Input 0", socket_type=socket_type, in_out={'INPUT'})
tree.interface.new_socket("Output 0", socket_type=socket_type, in_out='OUTPUT')
tree.interface.new_socket("Input 0", socket_type=socket_type, in_out='INPUT')
self.assertSequenceEqual([(s.name, s.item_type) for s in tree.interface.ui_items], [
("Output 0", 'SOCKET'),
@ -213,12 +213,12 @@ class NodeGroupInterfaceTests:
tree, group_node = self.make_group_and_instance()
tree.interface.new_panel("Panel 0")
tree.interface.new_socket("Input 0", socket_type=socket_type, in_out={'INPUT'})
tree.interface.new_socket("Output 0", socket_type=socket_type, in_out={'OUTPUT'})
tree.interface.new_socket("Input 0", socket_type=socket_type, in_out='INPUT')
tree.interface.new_socket("Output 0", socket_type=socket_type, in_out='OUTPUT')
tree.interface.new_panel("Panel 1")
tree.interface.new_socket("Input 1", socket_type=socket_type, in_out={'INPUT'})
tree.interface.new_socket("Input 1", socket_type=socket_type, in_out='INPUT')
tree.interface.new_panel("Panel 2")
tree.interface.new_socket("Output 1", socket_type=socket_type, in_out={'OUTPUT'})
tree.interface.new_socket("Output 1", socket_type=socket_type, in_out='OUTPUT')
tree.interface.new_panel("Panel 3")
# Panels after sockets
@ -251,12 +251,12 @@ class NodeGroupInterfaceTests:
def do_test_add(self, socket_type):
tree, group_node = self.make_group_and_instance()
in0 = tree.interface.new_socket("Input 0", socket_type=socket_type, in_out={'INPUT'})
in0 = tree.interface.new_socket("Input 0", socket_type=socket_type, in_out='INPUT')
self.assertSequenceEqual(tree.interface.ui_items, [in0])
self.assertSequenceEqual([s.name for s in group_node.inputs], ["Input 0"])
self.assertSequenceEqual([s.name for s in group_node.outputs], [])
out0 = tree.interface.new_socket("Output 0", socket_type=socket_type, in_out={'OUTPUT'})
out0 = tree.interface.new_socket("Output 0", socket_type=socket_type, in_out='OUTPUT')
self.assertSequenceEqual(tree.interface.ui_items, [in0, out0])
self.assertSequenceEqual([s.name for s in group_node.inputs], ["Input 0"])
self.assertSequenceEqual([s.name for s in group_node.outputs], ["Output 0"])
@ -267,12 +267,12 @@ class NodeGroupInterfaceTests:
self.assertSequenceEqual([s.name for s in group_node.outputs], ["Output 0"])
# Add items to the panel.
in1 = tree.interface.new_socket("Input 1", socket_type=socket_type, in_out={'INPUT'}, parent=panel0)
in1 = tree.interface.new_socket("Input 1", socket_type=socket_type, in_out='INPUT', parent=panel0)
self.assertSequenceEqual(tree.interface.ui_items, [in0, out0, panel0, in1])
self.assertSequenceEqual([s.name for s in group_node.inputs], ["Input 0", "Input 1"])
self.assertSequenceEqual([s.name for s in group_node.outputs], ["Output 0"])
out1 = tree.interface.new_socket("Output 1", socket_type=socket_type, in_out={'OUTPUT'}, parent=panel0)
out1 = tree.interface.new_socket("Output 1", socket_type=socket_type, in_out='OUTPUT', parent=panel0)
self.assertSequenceEqual(tree.interface.ui_items, [in0, out0, panel0, in1, out1])
self.assertSequenceEqual([s.name for s in group_node.inputs], ["Input 0", "Input 1"])
self.assertSequenceEqual([s.name for s in group_node.outputs], ["Output 0", "Output 1"])
@ -287,14 +287,14 @@ class NodeGroupInterfaceTests:
def do_test_remove(self, socket_type):
tree, group_node = self.make_group_and_instance()
in0 = tree.interface.new_socket("Input 0", socket_type=socket_type, in_out={'INPUT'})
out0 = tree.interface.new_socket("Output 0", socket_type=socket_type, in_out={'OUTPUT'})
in0 = tree.interface.new_socket("Input 0", socket_type=socket_type, in_out='INPUT')
out0 = tree.interface.new_socket("Output 0", socket_type=socket_type, in_out='OUTPUT')
panel0 = tree.interface.new_panel("Panel 0")
in1 = tree.interface.new_socket("Input 1", socket_type=socket_type, in_out={'INPUT'}, parent=panel0)
out1 = tree.interface.new_socket("Output 1", socket_type=socket_type, in_out={'OUTPUT'}, parent=panel0)
in1 = tree.interface.new_socket("Input 1", socket_type=socket_type, in_out='INPUT', parent=panel0)
out1 = tree.interface.new_socket("Output 1", socket_type=socket_type, in_out='OUTPUT', parent=panel0)
panel1 = tree.interface.new_panel("Panel 1")
in2 = tree.interface.new_socket("Input 2", socket_type=socket_type, in_out={'INPUT'}, parent=panel1)
out2 = tree.interface.new_socket("Output 2", socket_type=socket_type, in_out={'OUTPUT'}, parent=panel1)
in2 = tree.interface.new_socket("Input 2", socket_type=socket_type, in_out='INPUT', parent=panel1)
out2 = tree.interface.new_socket("Output 2", socket_type=socket_type, in_out='OUTPUT', parent=panel1)
panel2 = tree.interface.new_panel("Panel 2")
self.assertSequenceEqual(tree.interface.ui_items, [in0, out0, panel0, in1, out1, panel1, in2, out2, panel2])
@ -339,10 +339,10 @@ class NodeGroupInterfaceTests:
def do_test_move(self, socket_type):
tree, group_node = self.make_group_and_instance()
in0 = tree.interface.new_socket("Input 0", socket_type=socket_type, in_out={'INPUT'})
in1 = tree.interface.new_socket("Input 1", socket_type=socket_type, in_out={'INPUT'}, parent=panel0)
out0 = tree.interface.new_socket("Output 0", socket_type=socket_type, in_out={'OUTPUT'})
out1 = tree.interface.new_socket("Output 1", socket_type=socket_type, in_out={'OUTPUT'}, parent=panel0)
in0 = tree.interface.new_socket("Input 0", socket_type=socket_type, in_out='INPUT')
in1 = tree.interface.new_socket("Input 1", socket_type=socket_type, in_out='INPUT', parent=panel0)
out0 = tree.interface.new_socket("Output 0", socket_type=socket_type, in_out='OUTPUT')
out1 = tree.interface.new_socket("Output 1", socket_type=socket_type, in_out='OUTPUT', parent=panel0)
panel0 = tree.interface.new_panel("Panel 0")
panel1 = tree.interface.new_panel("Panel 1")