o
    DDi                     @   sb   d dl Z d dlmZ d dlZd dlmZmZ d dlm	Z	m
Z
 G dd dejZG dd de
ZdS )	    N)dedent)AccessorProviderMetadataWrapper)data_providerUnitTestc                   @   s8   e Zd ZefZdeddfddZdejde	fddZ
dS )	DependentVisitortestreturnNc                C   s
   || _ d S )Nr   )selfr    r   e/var/www/Datamplify/venv/lib/python3.10/site-packages/libcst/metadata/tests/test_accessor_provider.py__init__   s   
zDependentVisitor.__init__nodec                 C   sJ   t |D ]}t||j}t|tju r"| t|}| j	
||j qdS )NT)dataclassesfieldsgetattrnametypecstCSTNodeget_metadatar   r   assertEqual)r   r   fchildaccessorr   r   r   on_visit   s   zDependentVisitor.on_visit)__name__
__module____qualname__r   METADATA_DEPENDENCIESr   r   r   r   boolr   r   r   r   r   r      s    r   c                   @   s&   e Zd ZeddeddfddZdS )AccessorProviderTest))z
                foo = 'toplevel'
                fn1(foo)
                fn2(foo)
                def fn_def():
                    foo = 'shadow'
                    fn3(foo)
                )z
                global_var = None
                @cls_attr
                class Cls(cls_attr, kwarg=cls_attr):
                    cls_attr = 5
                    def f():
                        pass
                )aB  
                iterator = None
                condition = None
                [elt for target in iterator if condition]
                {elt for target in iterator if condition}
                {elt: target for target in iterator if condition}
                (elt for target in iterator if condition)
                coder	   Nc                 C   s&   t tt|}|t| d d S )Nr
   )r   r   parse_moduler   visitr   )r   r#   wrapperr   r   r   test_accessor_provier    s   #z*AccessorProviderTest.test_accessor_provier)r   r   r   r   strr'   r   r   r   r   r"      s
    "r"   )r   textwrapr   libcstr   libcst.metadatar   r   libcst.testing.utilsr   r   
CSTVisitorr   r"   r   r   r   r   <module>   s   