
    c                       d Z ddlmZ ddlZddlmZ ddlmZmZ ddl	m
Z
 erddlmZ ddlmZ dd	lmZ d
Z G d de          Z edd          Z edd          Z edd          Z edd          Z edd          ZeeeeegZd eD             Z G d d          Zd+d Z G d! d"e          Z G d# d$e          Z G d% d&e          Z G d' d(e          Z G d) d*e          Z dS ),zInterfaces for Pylint objects.    )annotationsN)	TokenInfo)TYPE_CHECKING
NamedTuple)nodes)BaseChecker)Message)Section)IRawCheckerIAstroidCheckerITokenChecker	IReporterICheckerHIGHCONTROL_FLOW	INFERENCEINFERENCE_FAILURE	UNDEFINEDCONFIDENCE_LEVELSCONFIDENCE_LEVEL_NAMESc                  $    e Zd ZU ded<   ded<   dS )
ConfidencestrnamedescriptionN)__name__
__module____qualname____annotations__     1lib/python3.11/site-packages/pylint/interfaces.pyr   r   $   s'         IIIr!   r   r   z.Warning that is not based on inference result.r   z0Warning based on assumptions about control flow.r   z"Warning based on inference result.r   z)Warning based on inference with failures.r   z0Warning without any associated confidence level.c                    g | ]	}|j         
S r    )r   ).0is     r"   
<listcomp>r&   5   s    <<<Q!&<<<r!   c                  2    e Zd ZdZddZedd
            ZdS )	InterfacezBase class for interfaces.returnNonec                >    t          j        dt          d           d S )Nz[Interface and all of its subclasses have been deprecated and will be removed in pylint 3.0.   
stacklevel)warningswarnDeprecationWarningselfs    r"   __init__zInterface.__init__;   s0    1		
 	
 	
 	
 	
 	
r!   cls-type[Interface] | tuple[type[Interface], ...]instancer   boolc                    t          j                    5  t          j        dt                     t	          ||           cd d d            S # 1 swxY w Y   d S )Nignore)category)r/   catch_warningsfilterwarningsr1   
implements)r5   r7   s     r"   is_implemented_byzInterface.is_implemented_byC   s     $&& 	- 	-#H7IJJJJh,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   +AAANr)   r*   )r5   r6   r7   r   r)   r8   )r   r   r   __doc__r4   classmethodr?   r    r!   r"   r(   r(   8   sN        $$
 
 
 
 - - - [- - -r!   r(   objr   	interfacer6   r)   r8   c                    t          j        dt          d           t          | dd          }t	          |t
          t          f          s|f}t          fd|D                       S )zKDoes the given object (maybe an instance or class) implement the interface.zjimplements has been deprecated in favour of using basic inheritance patterns without using __implements__.r,   r-   __implements__r    c              3  8   K   | ]}t          |          V  d S )N)
issubclass)r$   r%   rD   s     r"   	<genexpr>zimplements.<locals>.<genexpr>[   s-      ==Az!Y''======r!   )r/   r0   r1   getattr
isinstancelisttupleany)rC   rD   implements_s    ` r"   r>   r>   L   s}     M	=	    #/44KkD%=11 %"n==========r!   c                  "    e Zd ZdZddZddZdS )r   z>Base interface, to be used only for sub interfaces definition.r)   r*   c                    dS )z5Called before visiting project (i.e. set of modules).Nr    r2   s    r"   openzIChecker.opena         r!   c                    dS )z4Called after visiting project (i.e. set of modules).Nr    r2   s    r"   closezIChecker.closed   rS   r!   Nr@   )r   r   r   rA   rR   rU   r    r!   r"   r   r   ^   sL        HHD D D DC C C C C Cr!   r   c                      e Zd ZdZddZdS )	r   z7Interface for checker which need to parse the raw file.nodenodes.Moduler)   r*   c                    dS )z]Process a module.

        The module's content is accessible via ``astroid.stream``
        Nr    )r3   rW   s     r"   process_modulezIRawChecker.process_modulek   rS   r!   N)rW   rX   r)   r*   )r   r   r   rA   rZ   r    r!   r"   r   r   h   s.        AA     r!   r   c                      e Zd ZdZddZdS )	r   z:Interface for checkers that need access to the token list.tokenslist[TokenInfo]r)   r*   c                    dS )z[Process a module.

        Tokens is a list of all source code tokens in the file.
        Nr    )r3   r\   s     r"   process_tokenszITokenChecker.process_tokensu   rS   r!   N)r\   r]   r)   r*   )r   r   r   rA   r_   r    r!   r"   r   r   r   s.        DD     r!   r   c                      e Zd ZdZdS )r   zXInterface for checker which prefers receive events according to
    statement type.
    N)r   r   r   rA   r    r!   r"   r   r   |   s           r!   r   c                  "    e Zd ZdZddZdd	Zd
S )r   zGReporter collect messages and display results encapsulated in a layout.msgr	   r)   r*   c                    dS )z Handle the given message object.Nr    )r3   rb   s     r"   handle_messagezIReporter.handle_message   rS   r!   layoutr
   c                    dS )z0Display results encapsulated in the layout tree.Nr    )r3   re   s     r"   display_reportszIReporter.display_reports   rS   r!   N)rb   r	   r)   r*   )re   r
   r)   r*   )r   r   r   rA   rd   rg   r    r!   r"   r   r      sB        QQ/ / / /? ? ? ? ? ?r!   r   )rC   r   rD   r6   r)   r8   )!rA   
__future__r   r/   tokenizer   typingr   r   astroidr   pylint.checkersr   pylint.messager	   pylint.reporters.ureports.nodesr
   __all__r   r   r   r   r   r   r   r   r(   r>   r   r   r   r   r   r    r!   r"   <module>rp      s  
 % $ " " " " " "        , , , , , , , ,       8++++++&&&&&&777777         z&JKKzF  J{$HII	JD   J{$VWW	<4EyQ <<*;<<< - - - - - - - -(> > > >$C C C C Cy C C C    (       H       h   ? ? ? ? ?	 ? ? ? ? ?r!   