Skip to content

Commit d9d67ca

Browse files
committed
fixes #378
1 parent d6338ef commit d9d67ca

File tree

2 files changed

+12
-5
lines changed

2 files changed

+12
-5
lines changed

deepdiff/diff.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1322,10 +1322,13 @@ def _diff_booleans(self, level, local_tree=None):
13221322
if level.t1 != level.t2:
13231323
self._report_result('values_changed', level, local_tree=local_tree)
13241324

1325-
def _diff_numbers(self, level, local_tree=None):
1325+
def _diff_numbers(self, level, local_tree=None, report_type_change=True):
13261326
"""Diff Numbers"""
1327-
t1_type = "number" if self.ignore_numeric_type_changes else level.t1.__class__.__name__
1328-
t2_type = "number" if self.ignore_numeric_type_changes else level.t2.__class__.__name__
1327+
if report_type_change:
1328+
t1_type = "number" if self.ignore_numeric_type_changes else level.t1.__class__.__name__
1329+
t2_type = "number" if self.ignore_numeric_type_changes else level.t2.__class__.__name__
1330+
else:
1331+
t1_type = t2_type = ''
13291332

13301333
if self.math_epsilon is not None:
13311334
if not is_close(level.t1, level.t2, abs_tol=self.math_epsilon):
@@ -1503,8 +1506,8 @@ def _diff(self, level, parents_ids=frozenset(), _original_type=None, local_tree=
15031506
if self._skip_this(level):
15041507
return
15051508

1509+
report_type_change = True
15061510
if get_type(level.t1) != get_type(level.t2):
1507-
report_type_change = True
15081511
for type_group in self.ignore_type_in_groups:
15091512
if self.type_check_func(level.t1, type_group) and self.type_check_func(level.t2, type_group):
15101513
report_type_change = False
@@ -1533,7 +1536,7 @@ def _diff(self, level, parents_ids=frozenset(), _original_type=None, local_tree=
15331536
self._diff_uuids(level, local_tree=local_tree)
15341537

15351538
elif isinstance(level.t1, numbers):
1536-
self._diff_numbers(level, local_tree=local_tree)
1539+
self._diff_numbers(level, local_tree=local_tree, report_type_change=report_type_change)
15371540

15381541
elif isinstance(level.t1, Mapping):
15391542
self._diff_dict(level, parents_ids, local_tree=local_tree)

tests/test_diff_text.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1196,6 +1196,10 @@ def test_ignore_type_in_groups_str_and_datetime(self):
11961196
result = {'values_changed': {'root[4]': {'new_value': 'now', 'old_value': now}}}
11971197
assert result == ddiff
11981198

1199+
def test_ignore_type_in_groups_float_vs_decimal(self):
1200+
diff = DeepDiff(float('0.1'), Decimal('0.1'), ignore_type_in_groups=[(float, Decimal)], significant_digits=2)
1201+
assert not diff
1202+
11991203
@pytest.mark.parametrize("t1, t2, significant_digits, result", [
12001204
([0.1], [Decimal('0.10')], 55,
12011205
{'values_changed': {'root[0]': {'new_value': Decimal('0.10'), 'old_value': 0.1}}}), # Due to floating point arithmetics with high significant digits.

0 commit comments

Comments
 (0)