
    x[h{
                     *    d Z de fZd Z G d d      Zy)
no_replacereplacec                     |D ]  }|| v s y y)NTF )whatkeysks      :/usr/lib/python3/dist-packages/cloudinit/mergers/m_dict.py_has_anyr
      s      9     c                   $    e Zd Zd Zd Zd Zd Zy)Mergerc                     || _         t        | _        t        D ]  }||v s|| _         n d|v | _        t        |dd      | _        d|v | _        d| _        y )Nrecurse_strrecurse_arrayrecurse_listallow_deleteT)	_mergerDEF_MERGE_TYPE_methodMERGE_TYPES_recurse_strr
   _recurse_array_allow_delete_recurse_dict)selfmergeroptsms       r	   __init__zMerger.__init__   se    % 	ADy 	
 *T1&t_nM+t3!r   c                     d}|| j                   | j                  | j                  | j                  | j                  fz  }|S )NzWDictMerger: (method=%s,recurse_str=%s,recurse_dict=%s,recurse_array=%s,allow_delete=%s))r   r   r   r   r   )r   ss     r	   __str__zMerger.__str__%   sP    @ 	
 LL
 
 r   c                       fd}|j                         D ]>  \  }}||v r0| j                  r|j                  |       * |||   |      ||<   :|||<   @ |S )Nc                 l   r|S t        |t        t        f      r(j                  rj                  j                  | |      S t        |t              r(j                  rj                  j                  | |      S t        |t              r(j                  rj                  j                  | |      S | S )N)

isinstancelisttupler   r   mergestrr   dictr   )old_vnew_v
do_replacer   s     r	   merge_same_keyz/Merger._do_dict_replace.<locals>.merge_same_key4   s    %$/D4G4G||))%77%%$*;*;||))%77%$(T-?-?||))%77Lr   )itemsr   pop)r   value
merge_withr-   r.   r   vs   `  `   r	   _do_dict_replacezMerger._do_dict_replace3   si    
	 $$& 	DAqEz9!3!3IIaL-eAh:E!Ha	 r   c                 
   t        |t              s|S | j                  dk(  r| j                  t        |      |d      }|S | j                  dk(  r| j                  t        |      |d      }|S t	        d| j                  z        )Nr   Tr   FzUnknown merge type %s)r%   r*   r   r4   NotImplementedError)r   r1   r2   mergeds       r	   _on_dictzMerger._on_dictJ   s    *t-L<<9$**4;
DIF
 	 \\\)**4;
EJF  &&=&NOOr   N)__name__
__module____qualname__r   r"   r4   r8   r   r   r	   r   r      s    ".	r   r   N)r   r   r
   r   r   r   r	   <module>r<      s(    > >r   