Skip to content

Commit 551ae11

Browse files
committed
custom errors & clean up
1 parent 36845f5 commit 551ae11

File tree

10 files changed

+61
-63
lines changed

10 files changed

+61
-63
lines changed

NodeGraphQt/base/factory.py

Lines changed: 29 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,28 @@
11
#!/usr/bin/python
22

3+
from NodeGraphQt.errors import NodeRegistrationError
4+
35

46
class NodeFactory(object):
57
"""
68
Node factory that stores all the node types.
79
"""
810

9-
def __init__(self):
10-
self._aliases = {}
11-
self._names = {}
12-
self._nodes = {}
11+
__aliases = {}
12+
__names = {}
13+
__nodes = {}
1314

1415
@property
1516
def names(self):
16-
return self._names
17+
return self.__names
1718

1819
@property
1920
def aliases(self):
20-
return self._aliases
21+
return self.__aliases
2122

2223
@property
2324
def nodes(self):
24-
return self._nodes
25+
return self.__nodes
2526

2627
def create_node_instance(self, node_type=None, alias=None):
2728
"""
@@ -32,15 +33,15 @@ def create_node_instance(self, node_type=None, alias=None):
3233
alias (str): alias name (optional).
3334
3435
Returns:
35-
NodeGraphQt.Node: new node instance object.
36+
NodeGraphQt.Node: new node class object.
3637
"""
3738
if alias and self.aliases.get(alias):
3839
node_type = self.aliases[alias]
3940

40-
NodeInstance = self._nodes.get(node_type)
41-
if not NodeInstance:
41+
NodeClass = self.__nodes.get(node_type)
42+
if not NodeClass:
4243
print('can\'t find node type {}'.format(node_type))
43-
return NodeInstance
44+
return NodeClass
4445

4546
def register_node(self, node, alias=None):
4647
"""
@@ -56,30 +57,32 @@ def register_node(self, node, alias=None):
5657
name = node.NODE_NAME
5758
node_type = node.type_
5859

59-
if self._nodes.get(node_type):
60-
raise AssertionError(
61-
'Node: {} already exists! '
62-
'Please specify a new plugin class name or identifier.'
60+
if self.__nodes.get(node_type):
61+
raise NodeRegistrationError(
62+
'id "{}" already registered! '
63+
'Please specify a new plugin class name or __identifier__.'
6364
.format(node_type))
64-
self._nodes[node_type] = node
65+
self.__nodes[node_type] = node
6566

66-
if self._names.get(node_type):
67-
raise AssertionError(
67+
if self.__names.get(node_type):
68+
raise NodeRegistrationError(
6869
'Node Name: {} already exists!'
6970
'Please specify a new node name for node: {}'
7071
.format(name, node_type))
71-
self._names[name] = node_type
72+
self.__names[name] = node_type
7273

7374
if alias:
74-
if self._aliases.get(alias):
75-
raise AssertionError(
76-
'Node Alias: {} already taken!'.format(alias))
77-
self._aliases[alias] = node_type
75+
if self.__aliases.get(alias):
76+
raise NodeRegistrationError(
77+
'Alias: "{}" already registered to "{}"'
78+
.format(alias, self.__aliases.get(alias))
79+
)
80+
self.__aliases[alias] = node_type
7881

7982
def clear_registered_nodes(self):
8083
"""
8184
clear out registered nodes, to prevent conflicts on reset.
8285
"""
83-
self._nodes.clear()
84-
self._names.clear()
85-
self._aliases.clear()
86+
self.__nodes.clear()
87+
self.__names.clear()
88+
self.__aliases.clear()

NodeGraphQt/base/model.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
NODE_PROP_QLINEEDIT,
88
NODE_PROP_QCHECKBOX,
99
NODE_PROP_COLORPICKER)
10+
from NodeGraphQt.errors import NodePropertyError
1011

1112

1213
class PortModel(object):
@@ -104,9 +105,11 @@ def add_property(self, name, value, items=None, range=None,
104105
tab = tab or 'Properties'
105106

106107
if name in self.properties.keys():
107-
raise AssertionError('"{}" reserved for default property.'.format(name))
108+
raise NodePropertyError(
109+
'"{}" reserved for default property.'.format(name))
108110
if name in self._custom_prop.keys():
109-
raise AssertionError('"{}" property already exists.'.format(name))
111+
raise NodePropertyError(
112+
'"{}" property already exists.'.format(name))
110113

111114
self._custom_prop[name] = value
112115

@@ -134,7 +137,7 @@ def set_property(self, name, value):
134137
elif name in self._custom_prop.keys():
135138
self._custom_prop[name] = value
136139
else:
137-
raise KeyError('No property "{}"'.format(name))
140+
raise NodePropertyError('No property "{}"'.format(name))
138141

139142
def get_property(self, name):
140143
if name in self.properties.keys():

NodeGraphQt/base/node.py

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
NODE_PROP_QCOMBO,
88
NODE_PROP_QCHECKBOX,
99
IN_PORT, OUT_PORT)
10+
from NodeGraphQt.errors import PortRegistrationError
1011
from NodeGraphQt.widgets.node_backdrop import BackdropNodeItem
1112
from NodeGraphQt.widgets.node_base import NodeItem
1213

@@ -48,14 +49,6 @@ def __init__(self, node=None):
4849
def __repr__(self):
4950
return '{}(\'{}\')'.format(self.type_, self.NODE_NAME)
5051

51-
def __eq__(self, other):
52-
if isinstance(other, self.__class__):
53-
return self.id == other.id
54-
return False
55-
56-
def __ne__(self, other):
57-
return not self.__eq__(other)
58-
5952
@classproperty
6053
def type_(cls):
6154
"""
@@ -457,7 +450,8 @@ def add_input(self, name='input', multi_input=False, display_name=True):
457450
NodeGraphQt.Port: the created port object.
458451
"""
459452
if name in self.inputs().keys():
460-
raise AssertionError('port name "{}" already taken.'.format(name))
453+
raise PortRegistrationError(
454+
'port name "{}" already taken.'.format(name))
461455
view = self.view.add_input(name, multi_input, display_name)
462456
port = Port(self, view)
463457
port.model.type_ = IN_PORT
@@ -481,7 +475,8 @@ def add_output(self, name='output', multi_output=True, display_name=True):
481475
NodeGraphQt.Port: the created port object.
482476
"""
483477
if name in self.outputs().keys():
484-
raise AssertionError('port name "{}" already taken.'.format(name))
478+
raise PortRegistrationError(
479+
'port name "{}" already taken.'.format(name))
485480
view = self.view.add_output(name, multi_output, display_name)
486481
port = Port(self, view)
487482
port.model.type_ = OUT_PORT

NodeGraphQt/base/port.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,6 @@ def __repr__(self):
2222
port = str(self.__class__.__name__)
2323
return 'NodeGraphQt.{}(\'{}\')'.format(port, self.name())
2424

25-
def __eq__(self, other):
26-
if isinstance(other, self.__class__):
27-
return self.node().id == other.node().id
28-
return False
29-
30-
def __ne__(self, other):
31-
return not self.__eq__(other)
32-
3325
@property
3426
def view(self):
3527
"""

NodeGraphQt/errors.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#!/usr/bin/python
2+
3+
4+
class NodePropertyError(Exception):
5+
pass
6+
7+
8+
class NodeWidgetError(Exception):
9+
pass
10+
11+
12+
class NodeRegistrationError(Exception):
13+
pass
14+
15+
16+
class PortRegistrationError(Exception):
17+
pass

NodeGraphQt/widgets/node_abstract.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,6 @@ def __init__(self, name='node', parent=None):
2626
self._width = NODE_WIDTH
2727
self._height = NODE_HEIGHT
2828

29-
def __str__(self):
30-
return '{}.{}(\'{}\')'.format(
31-
self.__module__, self.__class__.__name__, self.name)
32-
3329
def __repr__(self):
3430
return '{}.{}(\'{}\')'.format(
3531
self.__module__, self.__class__.__name__, self.name)

NodeGraphQt/widgets/node_base.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
NODE_ICON_SIZE, ICON_NODE_BASE,
77
NODE_SEL_COLOR, NODE_SEL_BORDER_COLOR,
88
Z_VAL_NODE, Z_VAL_NODE_WIDGET)
9+
from NodeGraphQt.errors import NodeWidgetError
910
from NodeGraphQt.widgets.node_abstract import AbstractNodeItem
1011
from NodeGraphQt.widgets.node_widgets import (NodeBaseWidget,
1112
NodeComboBox,
@@ -689,13 +690,13 @@ def add_widget(self, widget):
689690
if isinstance(widget, NodeBaseWidget):
690691
self._widgets[widget.name] = widget
691692
else:
692-
raise TypeError('{} is not an instance of a node widget.')
693+
raise NodeWidgetError('{} is not an instance of a node widget.')
693694

694695
def get_widget(self, name):
695696
widget = self._widgets.get(name)
696697
if widget:
697698
return widget
698-
raise KeyError('node has no widget "{}"'.format(name))
699+
raise NodeWidgetError('node has no widget "{}"'.format(name))
699700

700701
def delete(self):
701702
for port, text in self._input_items.items():

NodeGraphQt/widgets/pipe.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,6 @@ def __init__(self, input_port=None, output_port=None):
3737
self._arrow.append(QtCore.QPointF(0.0, -size * 2))
3838
self._arrow.append(QtCore.QPointF(size, size))
3939

40-
def __str__(self):
41-
in_name = self._input_port.name if self._input_port else ''
42-
out_name = self._output_port.name if self._output_port else ''
43-
return '{}.Pipe(\'{}\', \'{}\')'.format(
44-
self.__module__, in_name, out_name)
45-
4640
def __repr__(self):
4741
in_name = self._input_port.name if self._input_port else ''
4842
out_name = self._output_port.name if self._output_port else ''

NodeGraphQt/widgets/properties.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
NODE_PROP_QSPINBOX,
1010
NODE_PROP_COLORPICKER,
1111
NODE_PROP_SLIDER)
12+
from NodeGraphQt.errors import NodePropertyError
1213

1314

1415
class BaseProperty(QtWidgets.QWidget):

NodeGraphQt/widgets/viewer.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,6 @@ def __init__(self, parent=None):
8181
self.RMB_state = False
8282
self.MMB_state = False
8383

84-
def __str__(self):
85-
return '{}.{}()'.format(
86-
self.__module__, self.__class__.__name__)
87-
8884
def __repr__(self):
8985
return '{}.{}()'.format(
9086
self.__module__, self.__class__.__name__)

0 commit comments

Comments
 (0)