Skip to content

Commit 767c96c

Browse files
committed
Merge branch 'dev' of github.com:seperman/deepdiff into dev
2 parents 051c6d8 + 743c901 commit 767c96c

File tree

3 files changed

+25
-3
lines changed

3 files changed

+25
-3
lines changed

deepdiff/diff.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -562,7 +562,7 @@ def _get_clean_to_keys_mapping(self, keys, level):
562562
clean_key = KEY_TO_VAL_STR.format(type_, clean_key)
563563
else:
564564
clean_key = key
565-
if self.ignore_string_case:
565+
if self.ignore_string_case and isinstance(clean_key, str):
566566
clean_key = clean_key.lower()
567567
if clean_key in result:
568568
logger.warning(('{} and {} in {} become the same key when ignore_numeric_type_changes'

deepdiff/model.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ def remove_empty_keys(self):
4141
Remove empty keys from this object. Should always be called after the result is final.
4242
:return:
4343
"""
44-
empty_keys = [k for k, v in self.items() if not v]
44+
empty_keys = [k for k, v in self.items() if not isinstance(v, (int)) and not v]
4545

4646
for k in empty_keys:
4747
del self[k]
@@ -88,7 +88,7 @@ def __getitem__(self, item):
8888
return self.get(item)
8989

9090
def __len__(self):
91-
return sum([len(i) for i in self.values() if isinstance(i, SetOrdered)])
91+
return sum([len(i) for i in self.values() if isinstance(i, SetOrdered)]) + len([i for i in self.values() if isinstance(i, int)])
9292

9393

9494
class TextResult(ResultDict):

tests/test_diff_text.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2200,3 +2200,25 @@ class MyDataClass:
22002200

22012201
diff = DeepDiff(t1, t2, exclude_regex_paths=["any"])
22022202
assert {'values_changed': {'root[MyDataClass(val=2,val2=4)]': {'new_value': 10, 'old_value': 20}}} == diff
2203+
2204+
2205+
def test_group_by_with_none_key_and_ignore_case(self):
2206+
"""Test that group_by works with None keys when ignore_string_case is True"""
2207+
dict1 = [{'txt_field': 'FULL_NONE', 'group_id': None}, {'txt_field': 'FULL', 'group_id': 'a'}]
2208+
dict2 = [{'txt_field': 'PARTIAL_NONE', 'group_id': None}, {'txt_field': 'PARTIAL', 'group_id': 'a'}]
2209+
2210+
diff = DeepDiff(
2211+
dict1,
2212+
dict2,
2213+
ignore_order=True,
2214+
group_by='group_id',
2215+
ignore_string_case=True
2216+
)
2217+
2218+
expected = {'values_changed': {"root[None]['txt_field']":
2219+
{'new_value': 'partial_none', 'old_value': 'full_none'},
2220+
"root['a']['txt_field']":
2221+
{'new_value': 'partial', 'old_value': 'full'}
2222+
}
2223+
}
2224+
assert expected == diff

0 commit comments

Comments
 (0)