3 \¼me} ã@s&dZdefZdd„ZGdd„dƒZdS)Ú no_replaceÚreplacecGsx|D]}||krdSqWdS)NTF©)ZwhatÚkeysÚkrrú/usr/lib/python3.6/m_dict.pyÚ_has_anys rc@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ÚMergercCsV||_t|_xtD]}||kr||_PqWd|k|_t|ddƒ|_d|k|_d|_dS)NZ recurse_strZ recurse_arrayZ recurse_listZ allow_deleteT) Ú_mergerÚDEF_MERGE_TYPEÚ_methodÚ MERGE_TYPESÚ _recurse_strrÚ_recurse_arrayÚ _allow_deleteÚ _recurse_dict)ÚselfZmergerZoptsÚmrrrÚ__init__s   zMerger.__init__cCs$d}||j|j|j|j|jf}|S)NzWDictMerger: (method=%s,recurse_str=%s,recurse_dict=%s,recurse_array=%s,allow_delete=%s))r r rrr)rÚsrrrÚ__str__%s zMerger.__str__csf‡‡fdd„}xR|jƒD]F\}}||krV|dkrBˆjrB|j|ƒq^||||ƒ||<q|||<qW|S)Ncsjˆr|St|ttfƒr*ˆjr*ˆjj||ƒSt|tƒrHˆjrHˆjj||ƒSt|tƒrfˆj rfˆjj||ƒS|S)N) Ú isinstanceÚlistÚtuplerr ÚmergeÚstrr Údictr)Zold_vZnew_v)Ú do_replacerrrÚmerge_same_key4sz/Merger._do_dict_replace..merge_same_key)ÚitemsrÚpop)rÚvalueÚ merge_withrrrÚvr)rrrÚ_do_dict_replace3s   zMerger._do_dict_replacecCs\t|tƒs|S|jdkr,|jt|ƒ|dƒ}n,|jdkrJ|jt|ƒ|dƒ}ntd|jƒ‚|S)NrTrFzUnknown merge type %s)rrr r#ÚNotImplementedError)rr r!ZmergedrrrÚ_on_dictJs   zMerger._on_dictN)Ú__name__Ú __module__Ú __qualname__rrr#r%rrrrrsrN)r r rrrrrrÚs