o
    DDi                     @   s   U d dl Z d dlmZ d dlmZmZmZmZmZm	Z	 d dl
Zd dlmZmZ d dlmZ d dlmZmZ eejd Zeed< G d	d
 d
ejZG dd deZedkrdd dlZed ed dS dS )    N)Path)DictListMappingOptionalTupleUnion)MetadataWrapperPositionProvider)PyreData)data_providerUnitTestpyreTEST_SUITE_PATHc                       s  e Zd ZefZdeeeeeef ef de	ddf fddZ
dejdee fdd	Zd
ejddfddZdejdee fddZdejdee fddZd
ejddfddZdejdee fddZd
ejddfddZdejdee fddZd
ejddfddZ  ZS )TypeVerificationVisitorlookuptestreturnNc                    s,   || _ || _g | _g | _g | _t   d S N)r   r   
attributesimportsannotationssuper__init__)selfr   r   	__class__ [/var/www/Datamplify/venv/lib/python3.10/site-packages/libcst/tests/test_pyre_integration.pyr      s   z TypeVerificationVisitor.__init__nodec              	   C   s\   |  t|}|j}|j}| j| |j|j|j|jf}| j	|| j
d| d| d d S )NzAttribute node  at  found without inferred type.)get_metadatar
   startendr   appendlinecolumnr   assertInr   r   r   posr#   r$   tupr   r   r   visit_Attribute    s   z'TypeVerificationVisitor.visit_Attributeoriginal_nodec                 C      | j   d S r   )r   popr   r-   r   r   r   leave_Attribute.      z'TypeVerificationVisitor.leave_Attributec              	   C   s   t | jdkst | jdkst | jdkrd S | t|}|j}|j}|j|j	|j|j	f}|j
dvrE| j|| jd|j
 d| d d S d S )Nr   >   inz
Name node r    r!   )lenr   r   r   r"   r
   r#   r$   r&   r'   valuer   r(   r   r)   r   r   r   
visit_Name1   s   
z"TypeVerificationVisitor.visit_Namec                 C      | j | d S r   r   r%   r   r   r   r   r   visit_ImportD      z$TypeVerificationVisitor.visit_Importc                 C   r.   r   r   r/   r0   r   r   r   leave_ImportG   r2   z$TypeVerificationVisitor.leave_Importc                 C   r8   r   r9   r:   r   r   r   visit_ImportFromJ   r<   z(TypeVerificationVisitor.visit_ImportFromc                 C   r.   r   r=   r0   r   r   r   leave_ImportFromM   r2   z(TypeVerificationVisitor.leave_ImportFromc                 C   r8   r   )r   r%   r:   r   r   r   visit_AnnotationP   r<   z(TypeVerificationVisitor.visit_Annotationc                 C   r.   r   )r   r/   r0   r   r   r   leave_AnnotationS   r2   z(TypeVerificationVisitor.leave_Annotation)__name__
__module____qualname__r
   METADATA_DEPENDENCIESr   r   intstrr   r   cst	Attributer   boolr,   r1   Namer7   Importr;   r>   
ImportFromr?   r@   
AnnotationrA   rB   __classcell__r   r   r   r   r      s$    
r   c                   @   sF   e Zd Zedd eededD dededdfd	d
ZdS )PyreIntegrationTestc                 c   s    | ]	\}}||fV  qd S r   r   ).0source_path	data_pathr   r   r   	<genexpr>]   s
    
zPyreIntegrationTest.<genexpr>z*.pyz*.jsonrS   rT   r   Nc           
      C   s   t | }t| }i }|d D ] }|d }|d }|d }	|d ||d |d |	d |	d f< qt|t||  d S )Ntypeslocationr#   stop
annotationr&   r'   )rI   parse_module	read_textjsonloadsr	   visitr   )
r   rS   rT   moduledatar   tlocr#   rX   r   r   r   test_type_availability\   s   	"z*PyreIntegrationTest.test_type_availability)	rC   rD   rE   r   zipr   globr   rc   r   r   r   r   rQ   W   s    rQ   __main__z,run `scripts/regenerate-fixtures.py` instead   )r\   pathlibr   typingr   r   r   r   r   r   libcstrI   libcst.metadatar	   r
   'libcst.metadata.type_inference_providerr   libcst.testing.utilsr   r   __file__parentr   __annotations__
CSTVisitorr   rQ   rC   sysprintexitr   r   r   r   <module>   s   
 D