Skip to content

Commit c3103c7

Browse files
authored
fix(nimbus): fix absolute value being called on None (#14262)
Because - Some metric points do not contain the `point` field and are throwing errors b/c the current code assumes otherwise - The issue here is that `abs()` is attempting to be called on these values which throw errors when `point` is None This commit - Adds a guard to check if the accessed point is None before calling `abs` Fixes #14240
1 parent dc46688 commit c3103c7

File tree

3 files changed

+9
-1
lines changed

3 files changed

+9
-1
lines changed

experimenter/experimenter/experiments/models.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1538,7 +1538,9 @@ def format_relative_entries(self, metric_src, significance_map, reference_branch
15381538
for i, data_point in enumerate(relative_data_list):
15391539
lower = data_point.get("lower")
15401540
upper = data_point.get("upper")
1541-
avg_rel_change = abs(data_point.get("point"))
1541+
avg_rel_change = (
1542+
abs(data_point.get("point")) if data_point.get("point") else None
1543+
)
15421544
significance = significance_map.get(str(i + 1), "neutral")
15431545
rel_entries.append(
15441546
{

experimenter/experimenter/nimbus_ui/templatetags/nimbus_extras.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,8 @@ def format_string(value, arg):
335335

336336
@register.filter
337337
def to_percentage(value, precision=None):
338+
if value is None or type(value) not in (int, float):
339+
return "N/A"
338340
percentage_value = value * 100
339341

340342
if precision is None:

experimenter/experimenter/nimbus_ui/tests/test_filters.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,10 @@ def test_to_percentage_no_precision_specified(self):
160160
self.assertEqual(to_percentage(0.123), "12.3%")
161161
self.assertEqual(to_percentage(0.12), "12.0%")
162162

163+
def test_to_percentage_invalid(self):
164+
self.assertEqual(to_percentage("invalid"), "N/A")
165+
self.assertEqual(to_percentage(None), "N/A")
166+
163167
def test_dict_get(self):
164168
sample_dict = {"key1": "value1", "key2": "value2"}
165169
self.assertEqual(dict_get(sample_dict, "key1"), "value1")

0 commit comments

Comments
 (0)