o
    DDin                     @   sD   d dl mZ d dlmZ d dlZd dlmZmZ G dd deZ	dS )    )dedent)SetN)data_providerUnitTestc                   @   s&   e Zd ZeddeddfddZdS )DeepCloneTest))z
                foo = 'toplevel'
                fn1(foo)
                fn2(foo)
                def fn_def():
                    foo = 'shadow'
                    fn3(foo)
            codereturnNc                    sv   |  G dd dt j}G  fdddt j}t t|}| }|| | }| || |||j d S )Nc                   @   s*   e Zd ZdddZdejdefddZdS )	z8DeepCloneTest.test_deep_clone.<locals>.NodeGatherVisitorr   Nc                 S   s   t  | _d S N)setnodes)self r   U/var/www/Datamplify/venv/lib/python3.10/site-packages/libcst/tests/test_deep_clone.py__init__    s   zADeepCloneTest.test_deep_clone.<locals>.NodeGatherVisitor.__init__nodec                 S   s   | j t| dS )NT)r   addidr   r   r   r   r   on_visit#   s   zADeepCloneTest.test_deep_clone.<locals>.NodeGatherVisitor.on_visit)r   N)__name__
__module____qualname__r   cstCSTNodeboolr   r   r   r   r   NodeGatherVisitor   s    
r   c                       s:   e Zd Zdee ddfddZdejdef fddZ	dS )	z8DeepCloneTest.test_deep_clone.<locals>.NodeVerifyVisitorr   r   Nc                 S   s
   || _ d S r	   )r   )r   r   r   r   r   r   (   s   
zADeepCloneTest.test_deep_clone.<locals>.NodeVerifyVisitor.__init__r   c                    s"     t|| jv d| d dS )NzNode z was not cloned properly!T)assertFalser   r   r   	test_caser   r   r   +   s   zADeepCloneTest.test_deep_clone.<locals>.NodeVerifyVisitor.on_visit)
r   r   r   r   intr   r   r   r   r   r   r   r   r   NodeVerifyVisitor'   s    r    )	r   
CSTVisitorparse_moduler   visit
deep_clone
assertTruedeep_equalsr   )r   r   r   r    modulegatherer
new_moduler   r   r   test_deep_clone   s   

zDeepCloneTest.test_deep_clone)r   r   r   r   strr*   r   r   r   r   r      s
    r   )
textwrapr   typingr   libcstr   libcst.testing.utilsr   r   r   r   r   r   r   <module>   s
   