o
    ýÑÐbü  ã                   @   sž   d Z ddlZddlZddlZddlmZ ddlmZ ddlmZ ddlm	Z	 ej
dd„ ƒZd	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )z"
 for the visitors.diadefs module
é    N)Únodes)Úbases)Ú	inspector)Úget_projectc                  C   s"   t ddƒ} t | ¡}| | ¡ | S )NÚdata)r   r   ZLinkerÚvisit)ÚprojectZlinker© r	   úg/var/www/secure340b-portal/env/lib/python3.10/site-packages/pylint/test/unittest_pyreverse_inspector.pyr      s   


r   c                 C   s\   |   d¡d }t|dƒsJ ‚t|jƒdksJ ‚t|jd tjƒs"J ‚|jd jdks,J ‚d S )Núdata.clientmodule_testZAncestorÚ
implementsé   r   Z	Interface)Ú
get_moduleÚhasattrÚlenr   Ú
isinstancer   ÚClassDefÚname©r   Úklassr	   r	   r
   Útest_class_implements   s
   r   c                 C   s2   |   d¡d }t|dƒsJ ‚t|jƒdksJ ‚d S )Nr   ÚSpecializationr   r   )r   r   r   r   r   r	   r	   r
   Ú$test_class_implements_specialization&   s   r   c                 C   s¦   |   d¡d }t|dƒsJ ‚|j}t|ƒdksJ ‚t| ¡ ƒ}|ddgks'J ‚t|d ƒdks1J ‚|d d jd	ks<J ‚t|d ƒdksFJ ‚|d d jd
ksQJ ‚d S )Nr   r   Úlocals_typeé   ZTYPEÚtopr   r   zfinal classÚclass)r   r   r   r   ÚsortedÚkeysÚvalue©r   r   Z	type_dictr   r	   r	   r
   Ú!test_locals_assignment_resolution,   s   r!   c                 C   sž   |   d¡d }t|dƒsJ ‚|j}t|ƒdksJ ‚t| ¡ ƒ}|ddgks'J ‚t|d d tjƒs7J |d ƒ‚|d d j	dksBJ ‚|d d t
ju sMJ ‚d S )	Nr   r   Úinstance_attrs_typer   Z_idZrelationr   Z	DoNothing)r   r   r"   r   r   r   r   r   ÚInstancer   ÚastroidZUninferabler    r	   r	   r
   Útest_instance_attrs_resolution9   s    r%   c                  C   s0   t  d¡} t | ¡}dd„ |D ƒdgksJ ‚d S )Nav  
        class IMachin: pass

        class Correct2:
            """docstring"""
            __implements__ = (IMachin,)

        class BadArgument:
            """docstring"""
            __implements__ = (IMachin,)

        class InterfaceCanNowBeFound: #@
            """docstring"""
            __implements__ = BadArgument.__implements__ + Correct2.__implements__
    c                 S   ó   g | ]}|j ‘qS r	   ©r   ©Ú.0Úir	   r	   r
   Ú
<listcomp>X   ó    z*test_concat_interfaces.<locals>.<listcomp>ZIMachin)r$   Zextract_noder   Ú
interfaces)Úclsr-   r	   r	   r
   Útest_concat_interfacesE   s
   ÿ
r/   c                  C   sf   t  d¡} ddgfdddgfdddgfdddgffD ]\}}| | }dd	„ t |¡D ƒ|ks0J ‚qd S )
Naw  
    class Interface(object): pass
    class MyIFace(Interface): pass
    class AnotherIFace(Interface): pass
    class Concrete0(object):
        __implements__ = MyIFace
    class Concrete1:                     
        __implements__ = (MyIFace, AnotherIFace)
    class Concrete2:
        __implements__ = (MyIFace, AnotherIFace)
    class Concrete23(Concrete1): pass
    Z	Concrete0ZMyIFaceZ	Concrete1ZAnotherIFaceZ	Concrete2Z
Concrete23c                 S   r&   r	   r'   r(   r	   r	   r
   r+   r   r,   z#test_interfaces.<locals>.<listcomp>)r$   Úparser   r-   )Úmoduler   r-   r	   r	   r
   Útest_interfaces[   s   ÿ


üùr2   c                 C   s4   t j dddd¡}| jdksJ ‚| j |¡sJ ‚d S )NZpylintÚtestr   z__init__.py)ÚosÚpathÚjoinr   Úendswith©r   Úexpectedr	   r	   r
   Útest_from_directoryu   s   r:   c                 C   s    g d¢}t |  ¡ ƒ|ksJ ‚d S )N)r   r   zdata.suppliermodule_test)r   r   r8   r	   r	   r
   Útest_project_node{   s   r;   )Ú__doc__r4   Zpytestr$   r   r   Zpylint.pyreverser   Zunittest_pyreverse_writerr   Zfixturer   r   r   r!   r%   r/   r2   r:   r;   r	   r	   r	   r
   Ú<module>   s$   
