Skip to content

Commit 2c448e0

Browse files
committed
feat: use ValueError instead of TypeError for failed Operator.operation
1 parent b94a3a9 commit 2c448e0

File tree

4 files changed

+33
-4
lines changed

4 files changed

+33
-4
lines changed

news/use-valuerror.rst

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
**Added:**
2+
3+
* <news item>
4+
5+
**Changed:**
6+
7+
* Use ``ValueError`` instead of ``TypeError`` for failed ``Operator.operation``.
8+
9+
**Deprecated:**
10+
11+
* <news item>
12+
13+
**Removed:**
14+
15+
* <news item>
16+
17+
**Fixed:**
18+
19+
* <news item>
20+
21+
**Security:**
22+
23+
* <news item>

src/diffpy/srfit/equation/literals/operators.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,13 @@ def getValue(self):
123123
"""Get or evaluate the value of the operator."""
124124
if self._value is None:
125125
vals = [arg.value for arg in self.args]
126-
self._value = self.operation(*vals)
126+
try:
127+
self._value = self.operation(*vals)
128+
except Exception as e:
129+
raise ValueError(
130+
"Error evaluating operator '%s' with arguments %s : %s"
131+
% (self, vals, e)
132+
)
127133
return self._value
128134

129135
value = property(lambda self: self.getValue())

tests/test_literals.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ def testAddLiteral(self):
115115
"""Test adding a literal to an operator node."""
116116
op = self.op
117117

118-
self.assertRaises(TypeError, op.getValue)
118+
self.assertRaises(ValueError, op.getValue)
119119
op._value = 1
120120
self.assertEqual(op.getValue(), 1)
121121

@@ -124,7 +124,7 @@ def testAddLiteral(self):
124124
b = literals.Argument(name="b", value=0)
125125

126126
op.addLiteral(a)
127-
self.assertRaises(TypeError, op.getValue)
127+
self.assertRaises(ValueError, op.getValue)
128128

129129
op.addLiteral(b)
130130
self.assertAlmostEqual(0, op.value)

tests/test_visitors.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ def testSimpleFunction(self):
207207
assert plus2.hasObserver(mult._flush)
208208

209209
# plus2 has no arguments yet. Verify this.
210-
with pytest.raises(TypeError):
210+
with pytest.raises(ValueError):
211211
mult.getValue()
212212
# Add the arguments to plus2.
213213
plus2.addLiteral(v4)

0 commit comments

Comments
 (0)