B
    A!p\h  ã               @   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.7/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}x|D ]}t||ƒr&dS q&W 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   Úopen8   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   3   s   r   c               @   s   e Zd ZdZdd„ ZdS )ÚIRawCheckerz;interface for checker which need to parse the raw file
    c             C   s   dS )zY process a module

        the module's content is accessible via astroid.stream
        Nr   )r   Zastroidr   r   r   Úprocess_moduleC   s    zIRawChecker.process_moduleN)r   r   r   r   r    r   r   r   r   r   ?   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_tokensM   s    zITokenChecker.process_tokensN)r   r   r   r   r#   r   r   r   r   r!   J   s   r!   c               @   s   e Zd ZdZdS )ÚIAstroidCheckerzX interface for checker which prefers receive events according to
    statement type
    N)r   r   r   r   r   r   r   r   r$   T   s   r$   c               @   s    e Zd ZdZdd„ Zdd„ ZdS )Ú	IReporterzL reporter collect messages and display results encapsulated in a layout
    c             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 )z8display results encapsulated in the layout tree
        Nr   )r   Zlayoutr   r   r   Údisplay_reportsa   s    zIReporter.display_reportsN)r   r   r   r   r'   r(   r   r   r   r   r%   Z   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    



