@@ -86,8 +86,11 @@ def merge(base, mergee, debug_info=None):
86
86
elif isinstance (value , dict ) and isinstance (base [key ], dict ):
87
87
merge (base [key ], value , debug_info )
88
88
elif base [key ] != value :
89
- warn ('Conflict when merging {} in sheet {}: {} != {}' .format (
90
- key , debug_info .get ('sheet_name' ), base [key ], value ))
89
+ id_info = 'id "{}"' .format (debug_info .get ('id' ))
90
+ if debug_info .get ('root_id' ):
91
+ id_info = '{} "{}", ' .format (debug_info .get ('root_id' ), debug_info .get ('root_id_or_none' ))+ id_info
92
+ warn ('Conflict when merging field "{}" for {} in sheet {}: "{}" != "{}". If you were not expecting merging you may have a duplicate ID.' .format (
93
+ key , id_info , debug_info .get ('sheet_name' ), base [key ], value ))
91
94
else :
92
95
base [key ] = value
93
96
@@ -165,7 +168,16 @@ def unflatten(self):
165
168
if root_id_or_none not in main_sheet_by_ocid :
166
169
main_sheet_by_ocid [root_id_or_none ] = TemporaryDict ('id' )
167
170
if 'id' in unflattened and unflattened ['id' ] in main_sheet_by_ocid [root_id_or_none ]:
168
- merge (main_sheet_by_ocid [root_id_or_none ][unflattened .get ('id' )], unflattened , {'sheet_name' :sheet_name })
171
+ merge (
172
+ main_sheet_by_ocid [root_id_or_none ][unflattened .get ('id' )],
173
+ unflattened ,
174
+ {
175
+ 'sheet_name' : sheet_name ,
176
+ 'root_id' : self .root_id ,
177
+ 'root_id_or_none' : root_id_or_none ,
178
+ 'id' : unflattened .get ('id' )
179
+ }
180
+ )
169
181
else :
170
182
main_sheet_by_ocid [root_id_or_none ].append (unflattened )
171
183
0 commit comments