From 71a54e369dfd86622c7fe040c3b1411b2f294694 Mon Sep 17 00:00:00 2001 From: Reto Zingg Date: Thu, 25 Jun 2020 15:52:59 +0300 Subject: [PATCH] Do not apply format to non numbers This addresses the issue https://github.com/seperman/deepdiff/issues/200 --- deepdiff/helper.py | 2 ++ tests/test_diff_other.py | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/deepdiff/helper.py b/deepdiff/helper.py index ff463fed..768c075a 100644 --- a/deepdiff/helper.py +++ b/deepdiff/helper.py @@ -340,6 +340,8 @@ def number_to_string(number, significant_digits, number_format_notation="f"): with localcontext() as ctx: ctx.prec = len(tup.digits) + tup.exponent + significant_digits number = number.quantize(Decimal('0.' + '0' * significant_digits)) + elif not isinstance(number, numbers): + return number result = (using % significant_digits).format(number) # Special case for 0: "-0.00" should compare equal to "0.00" if set(result) <= ZERO_DECIMAL_CHARACTERS: diff --git a/tests/test_diff_other.py b/tests/test_diff_other.py index 1589f76d..710c34f2 100644 --- a/tests/test_diff_other.py +++ b/tests/test_diff_other.py @@ -80,3 +80,15 @@ def test_path_cache(self): path1 = diff['values_changed'][0].path() path2 = diff['values_changed'][0].path() assert 'root[0]' == path1 == path2 + + def test_bool_str(self): + t1 = {'key1': True} + t2 = {'key1': 'Yes'} + diff = DeepDiff(t1, t2, ignore_type_in_groups=[(bool, str)], + ignore_numeric_type_changes=True) + expected = {'values_changed': + {"root['key1']": + {'new_value': 'Yes', 'old_value': True} + } + } + assert diff == expected