o
    ƒtÖh°
  ã                   @   s*   d Z dde dfZdd„ ZG dd„ dƒZdS )	ÚreplaceÚappendÚprependÚ
no_replacec                 G   s   |D ]	}|| v r dS qdS )NTF© )ÚwhatÚkeysÚkr   r   ú:/usr/lib/python3/dist-packages/cloudinit/mergers/m_list.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   sR   || _ t| _tD ]}||v r|| _ nqt|dƒ| _t|dƒ| _t|ddƒ| _d S )NÚrecurse_strÚrecurse_dictÚrecurse_arrayÚrecurse_list)Ú_mergerÚDEF_MERGE_TYPEÚ_methodÚMERGE_TYPESr
   Ú_recurse_strÚ_recurse_dictÚ_recurse_array)ÚselfÚmergerÚoptsÚmr   r   r	   Ú__init__   s   þzMerger.__init__c                 C   s   d| j | j| j| jf S )NzGListMerger: (method=%s,recurse_str=%s,recurse_dict=%s,recurse_array=%s))r   r   r   r   ©r   r   r   r	   Ú__str__    s   üþÿzMerger.__str__c                 C   s   t |  t|ƒ|¡ƒS )N)ÚtupleÚ_on_listÚlist)r   ÚvalueÚ
merge_withr   r   r	   Ú	_on_tuple,   s   zMerger._on_tuplec                    s´   ˆ j dkrt|ttfƒs|S g }ˆ j dkr!| |¡ | |¡ |S ˆ j dkr2| |¡ | |¡ |S ‡ fdd„}| |¡ tt|ƒt|ƒƒ}t|ƒD ]}||| || ƒ||< qJ|S )Nr   r   r   c                    sp   ˆ j dkr| S t|ttfƒrˆ jrˆ j | |¡S t|tƒr'ˆ jr'ˆ j | |¡S t|t	ƒr6ˆ j
r6ˆ j | |¡S |S )Nr   )r   Ú
isinstancer    r   r   r   ÚmergeÚstrr   Údictr   )Úold_vÚnew_vr   r   r	   Úmerge_same_index@   s   
z)Merger._on_list.<locals>.merge_same_index)r   r$   r   r    ÚextendÚminÚlenÚrange)r   r!   r"   Úmerged_listr*   Ú
common_lenÚir   r   r	   r   /   s&   ÿ






zMerger._on_listN)Ú__name__Ú
__module__Ú__qualname__r   r   r#   r   r   r   r   r	   r      s
    r   N)r   r   r
   r   r   r   r   r	   Ú<module>   s   