o
    ýÑÐbh  ã                   @   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ÚnameÚ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   úP/var/www/secure340b-portal/env/lib/python3.10/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                   @   ó    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   ó   dS )z3called before visiting project (i.e set of modules)Nr   ©Úselfr   r   r   Úopen8   ó    zIChecker.openc                 C   r   )z2called after visiting project (i.e set of modules)Nr   r   r   r   r   Úclose;   r"   zIChecker.closeN)r   r   r   r   r!   r#   r   r   r   r   r   3   s    r   c                   @   ó   e Zd ZdZdd„ ZdS )ÚIRawCheckerz;interface for checker which need to parse the raw file
    c                 C   r   )zY process a module

        the module's content is accessible via astroid.stream
        Nr   )r    Zastroidr   r   r   Úprocess_moduleC   r"   zIRawChecker.process_moduleN)r   r   r   r   r&   r   r   r   r   r%   ?   s    r%   c                   @   r$   )ÚITokenCheckerz:Interface for checkers that need access to the token list.c                 C   r   )z[Process a module.

        tokens is a list of all source code tokens in the file.
        Nr   )r    Útokensr   r   r   Úprocess_tokensM   r"   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                   @   r   )Ú	IReporterzL reporter collect messages and display results encapsulated in a layout
    c                 C   r   )z Handle the given message object.Nr   )r    Úmsgr   r   r   Úhandle_message^   r"   zIReporter.handle_messagec                 C   r   )z8display results encapsulated in the layout tree
        Nr   )r    Zlayoutr   r   r   Údisplay_reportsa   r"   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$   

ÿ

