Skip to content

Commit fced607

Browse files
committed
dict key ignore case - fixes #341
1 parent 89c5cc2 commit fced607

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

deepdiff/diff.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -516,6 +516,8 @@ def _get_clean_to_keys_mapping(self, keys, level):
516516
clean_key = KEY_TO_VAL_STR.format(type_, clean_key)
517517
else:
518518
clean_key = key
519+
if self.ignore_string_case:
520+
clean_key = clean_key.lower()
519521
if clean_key in result:
520522
logger.warning(('{} and {} in {} become the same key when ignore_numeric_type_changes'
521523
'or ignore_numeric_type_changes are set to be true.').format(
@@ -559,7 +561,7 @@ def _diff_dict(
559561
else:
560562
t1_keys = OrderedSet(t1.keys())
561563
t2_keys = OrderedSet(t2.keys())
562-
if self.ignore_string_type_changes or self.ignore_numeric_type_changes:
564+
if self.ignore_string_type_changes or self.ignore_numeric_type_changes or self.ignore_string_case:
563565
t1_clean_to_keys = self._get_clean_to_keys_mapping(keys=t1_keys, level=level)
564566
t2_clean_to_keys = self._get_clean_to_keys_mapping(keys=t2_keys, level=level)
565567
t1_keys = OrderedSet(t1_clean_to_keys.keys())

tests/test_diff_text.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,17 @@ def test_string_difference_ignore_case(self):
297297
result = {}
298298
assert result == ddiff
299299

300+
def test_string_dict_key_ignore_case(self):
301+
t1 = {'User': {'AboutMe': 1, 'ALIAS': 1}}
302+
t2 = {'User': {'Alias': 1, 'AboutMe': 1}}
303+
ddiff = DeepDiff(t1, t2)
304+
result = {'dictionary_item_added': ["root['User']['Alias']"], 'dictionary_item_removed': ["root['User']['ALIAS']"]}
305+
assert result == ddiff
306+
307+
ddiff = DeepDiff(t1, t2, ignore_string_case=True)
308+
result = {}
309+
assert result == ddiff
310+
300311
def test_diff_quote_in_string(self):
301312
t1 = {
302313
"a']['b']['c": 1

0 commit comments

Comments
 (0)