o
    ¦®Øf{
  ã                   @   s&   d Z de fZdd„ ZG dd„ dƒZdS )Ú
no_replaceÚreplacec                 G   s   |D ]	}|| v r dS qdS )NTF© )ÚwhatÚkeysÚkr   r   ú:/usr/lib/python3/dist-packages/cloudinit/mergers/m_dict.pyÚ_has_any   s
   ÿr   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚMergerc                 C   sT   || _ t| _tD ]}||v r|| _ nqd|v | _t|ddƒ| _d|v | _d| _d S )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Úmr   r   r   Ú__init__   s   þ


zMerger.__init__c                 C   s$   d}|| j | j| j| j| jf }|S )NzWDictMerger: (method=%s,recurse_str=%s,recurse_dict=%s,recurse_array=%s,allow_delete=%s))r   r   r   r   r   )r   Úsr   r   r   Ú__str__%   s   ÿûzMerger.__str__c                    sb   ‡ ‡fdd„}|  ¡ D ]#\}}||v r*|d u r ˆjr | |¡ q||| |ƒ||< q|||< q|S )Nc                    sj   ˆ r|S t |ttfƒrˆjrˆj | |¡S t |tƒr$ˆjr$ˆj | |¡S t |tƒr3ˆj	r3ˆj | |¡S | S )N)
Ú
isinstanceÚlistÚtupler   r   ÚmergeÚstrr   Údictr   )Úold_vÚnew_v©Ú
do_replacer   r   r   Úmerge_same_key4   s   z/Merger._do_dict_replace.<locals>.merge_same_key)Úitemsr   Úpop)r   ÚvalueÚ
merge_withr&   r'   r   Úvr   r%   r   Ú_do_dict_replace3   s   
zMerger._do_dict_replacec                 C   s\   t |tƒs|S | jdkr|  t|ƒ|d¡}|S | jdkr'|  t|ƒ|d¡}|S td| j ƒ‚)Nr   Tr   FzUnknown merge type %s)r   r"   r   r-   ÚNotImplementedError)r   r*   r+   Úmergedr   r   r   Ú_on_dictJ   s   


üÿzMerger._on_dictN)Ú__name__Ú
__module__Ú__qualname__r   r   r-   r0   r   r   r   r   r	      s
    r	   N)r   r   r   r	   r   r   r   r   Ú<module>   s   þ