a
    À=aK  ã                   @   sÀ   d Z ddlmZ edddgƒZeddƒZedd	ƒZed
dƒZeddƒZeeeegZG dd„ dƒZ	dd„ Z
G dd„ de	ƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ de	ƒZdZdS )zInterfaces for Pylint objectsé    )Ú
namedtupleÚ
ConfidenceÚnameZdescriptionÚHIGHzNo false positive possible.Ú	INFERENCEz"Warning based on inference result.ÚINFERENCE_FAILUREz)Warning based on inference with failures.Ú	UNDEFINEDz0Warning without any associated confidence level.c                   @   s   e Zd ZdZedd„ ƒZdS )Ú	InterfacezBase class for interfaces.c                 C   s
   t || ƒS )N)Ú
implements)ÚclsÚinstance© r   ú0lib/python3.9/site-packages/pylint/interfaces.pyÚis_implemented_by$   s    zInterface.is_implemented_byN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úclassmethodr   r   r   r   r   r	   !   s   r	   c                 C   s>   t | ddƒ}t|ttfƒs |f}|D ]}t||ƒr$ dS q$dS )z^Return true if the give object (maybe an instance or class) implements
    the interface.
    Z__implements__r   TF)ÚgetattrÚ
isinstanceÚlistÚtupleÚ
issubclass)ÚobjZ	interfaceZkimplementsZimplementedinterfacer   r   r   r
   )   s    
r
   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚICheckerzhThis is a base interface, not designed to be used elsewhere than for
    sub interfaces definition.
    c                 C   s   dS )z3called before visiting project (i.e set of modules)Nr   ©Úselfr   r   r   Úopen;   s    zIChecker.openc                 C   s   dS )z2called after visiting project (i.e set of modules)Nr   r   r   r   r   Úclose>   s    zIChecker.closeN)r   r   r   r   r   r   r   r   r   r   r   6   s   r   c                   @   s   e Zd ZdZdd„ ZdS )ÚIRawCheckerz6interface for checker which need to parse the raw filec                 C   s   dS )zXprocess a module

        the module's content is accessible via astroid.stream
        Nr   )r   Zastroidr   r   r   Úprocess_moduleE   s    zIRawChecker.process_moduleN)r   r   r   r   r!   r   r   r   r   r    B   s   r    c                   @   s   e Zd ZdZdd„ ZdS )ÚITokenCheckerz:Interface for checkers that need access to the token list.c                 C   s   dS )z[Process a module.

        tokens is a list of all source code tokens in the file.
        Nr   )r   Útokensr   r   r   Úprocess_tokensO   s    zITokenChecker.process_tokensN)r   r   r   r   r$   r   r   r   r   r"   L   s   r"   c                   @   s   e Zd ZdZdS )ÚIAstroidCheckerzWinterface for checker which prefers receive events according to
    statement type
    N)r   r   r   r   r   r   r   r   r%   V   s   r%   c                   @   s&   e Zd ZdZddœdd„Zdd„ ZdS )Ú	IReporterzFreporter collect messages and display results encapsulated in a layoutN)Úreturnc                 C   s   dS )z Handle the given message object.Nr   )r   Úmsgr   r   r   Úhandle_message_   s    zIReporter.handle_messagec                 C   s   dS )z/display results encapsulated in the layout treeNr   )r   Zlayoutr   r   r   Údisplay_reportsb   s    zIReporter.display_reports)r   r   r   r   r)   r*   r   r   r   r   r&   \   s   r&   )r    r%   r"   r&   N)r   Úcollectionsr   r   r   r   r   r   ZCONFIDENCE_LEVELSr	   r
   r   r    r"   r%   r&   Ú__all__r   r   r   r   Ú<module>   s"   

ÿ



