
    c                        U d Z ddlmZ ddlmZ ddlZddlmZ ddlmZ ddl	m
Z
mZmZ ddlmZ erdd	lmZ d
diZded<    G d de          ZddZdS )z+Check for new / old style related problems.    )annotations)TYPE_CHECKINGN)nodes)BaseChecker)has_known_basesnode_frame_classonly_required_for_messages)MessageDefinitionTuple)PyLinterE1003)z&Bad first argument %r given to super()bad-super-callzbUsed when another argument than the current class is given as first argument of the super builtin.z!dict[str, MessageDefinitionTuple]MSGSc                  L    e Zd ZdZdZeZdZ ed          dd	            Z	e	Z
d
S )NewStyleConflictCheckerzChecks for usage of new style capabilities on old style classes and
    other new/old styles conflicts problems.

    * use of property, __slots__, super
    * "super" usage
    newstyle r   nodenodes.FunctionDefreturnNonec                   |                                 sdS |j                            d          }|                    t          j                  D ]}t          |          t          |          k    r$|j        }t          |t          j	                  sF|j
        }t          |t          j                  r/t          |j        t          j                  r|j        j        dk    s|j        st          |          s|j        s|j        d         }t          |t          j                  rIt          |j        t          j                  r*|j        j        dk    r|                     d|d	           &t#          |j                  d
k    rzt          |j        d         t          j                  rU|j        d         j        dk    r?t          |t          j	                  r%|j        dk    r|                     d|d	           	 |j        o,t'          |j        d                                         d          n# t*          j        $ r Y  w xY w|urt/          fd|                                D                       r[d}rj        }n4|j        r-t3          |j        d         d          r|j        d         j        }|r|                     d||f	           dS )zCheck use of super.NT)futuresuperr   typer   )r   )r   args      self	__class__)zself.__class__c              3  $   K   | ]
}|k    V  d S Nr   ).0isupclss     8lib/python3.11/site-packages/pylint/checkers/newstyle.py	<genexpr>z<NewStyleConflictChecker.visit_functiondef.<locals>.<genexpr>q   s'      .V.VqqF{.V.V.V.V.V.V    name)	is_methodparentframenodes_of_classr   Callr   func
isinstance	AttributeexprNamer(   r   r   r   add_messagelenattrnamenextinferastroidInferenceErrorall	ancestorshasattr)	r   r   klassstmtr1   callarg0r(   r$   s	           @r%   visit_functiondefz)NewStyleConflictChecker.visit_functiondef2   s!    ~~ 	F!!!..''
33 B	T B	TD%%)9$)?)?? 9DdEO44 9D 4,,ty%*55 INg-
  ~ /T_U%;%; /Ty  y|tUZ00"49ej99 	&0
 $$%5Dy$QQQ
 	NNa'
"49Q<<<
 	!)V3
 #499	

 4
 $$(t:M %    !YK4	!0B0B0D0Dd+K+KFF-   H
 & 
T3.V.V.V.VEOODUDU.V.V.V+V+V 
TD  1%{ 1wty|V'D'D 1#y|0 T(()9D7(SSSEB	T B	Ts   4I  IIN)r   r   r   r   )__name__
__module____qualname____doc__r(   r   msgsoptionsr	   rA   visit_asyncfunctiondefr   r'   r%   r   r   #   sg          DDG 011HT HT HT 21HTT /r'   r   linterr   r   r   c                J    |                      t          |                      d S r!   )register_checkerr   )rI   s    r%   registerrL      s%    
3F;;<<<<<r'   )rI   r   r   r   )rE   
__future__r   typingr   r8   r   pylint.checkersr   pylint.checkers.utilsr   r   r	   pylint.typingr
   pylint.lintr   r   __annotations__r   rL   r   r'   r%   <module>rT      s7  
 2 1 1 " " " " " "                    ' ' ' ' ' '         
 1 0 0 0 0 0 %$$$$$$  +    Z/ Z/ Z/ Z/ Z/k Z/ Z/ Z/z= = = = = =r'   