B
    ןEf                 @   s   d dl mZmZmZmZ d dlmZ edZedZeeegef eee	ef ddf dddZ
eed	d
dZeed	ddZedkreedddedddksteedddedddkstdS )    )CallableTypeVarTuple	Generator)ImmutableDictTKN)dcallbackreturnc             c   s>   x8|   D ],\}}t|tr,|||fV  q
||fV  q
W d S )N)items
isinstancedict)r	   r
   kv r   ./cmf/util/immutables.py	_gen_deep   s    
r   )r	   r   c             C   s   t t| tS )N)r   r   imutable_deep_copy)r	   r   r   r   r      s    r   c             C   s   t t| tS )N)r   r   mutable_deep_copy)r	   r   r   r   r      s    r   __main__      )ab)typingr   r   r   r   Zwerkzeug.datastructuresr   r   r   strr   r   r   r   __name__AssertionErrorr   r   r   r   <module>   s   . 