6
6
7
7
8
8
def object_changed (superset , subset , ignore = None ):
9
+ def list_changed (lst2 , lst ):
10
+ if len (lst2 ) != len (lst ):
11
+ return True
12
+ for i in range (len (lst )):
13
+ if type (lst [i ]) == list :
14
+ if list_changed (lst2 [i ], lst [i ]):
15
+ return True
16
+ elif type (lst [i ]) == dict :
17
+ if len (lst2 [i ]) != len (lst [i ]) or object_changed (lst2 [i ], lst [i ]):
18
+ return True
19
+ else :
20
+ if lst [i ] != lst2 [i ]:
21
+ return True
22
+ return False
23
+
9
24
changed_keys = []
10
25
for key , value in subset .items ():
11
26
value2 = superset .get (key )
@@ -18,17 +33,10 @@ def object_changed(superset, subset, ignore=None):
18
33
elif ignore_value is None :
19
34
continue
20
35
if type (value ) == list :
21
- for i in range (len (value )):
22
- if not value2 :
23
- changed_keys .append ((key , superset .get (key ), subset [key ]))
24
- elif type (value [i ]) == list or type (value [i ]) == dict :
25
- if i >= len (value2 ) or object_changed (value2 [i ], value [i ]):
26
- changed_keys .append ((key , superset .get (key ), subset [key ]))
27
- else :
28
- if value [i ] != value2 [i ]:
29
- changed_keys .append ((key , superset .get (key ), subset [key ]))
36
+ if list_changed (value2 , value ):
37
+ changed_keys .append ((key , superset .get (key ), subset [key ]))
30
38
elif type (value ) == dict :
31
- if object_changed (value2 , value ):
39
+ if len ( value2 ) != len ( value ) or object_changed (value2 , value ):
32
40
changed_keys .append ((key , superset .get (key ), subset [key ]))
33
41
else :
34
42
if value != value2 :
0 commit comments