
    yIf                        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                                        }|                    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.Nsuperr   typer   )r   )r   args      self	__class__)zself.__class__c              3  $   K   | ]
}|k    V  d S Nr   ).0isupclss     L/var/www/piapp/venv/lib/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stmtr0   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0$$%5Dy$QQQ
 	NNa''"49Q<<< (	!)V33"499 444$$(t:M %    !YK4	!0B0B0D0Dd+K+KFF-   H
 &&3.V.V.V.VEOODUDU.V.V.V+V+V&D  1%{ 1wty|V'D'D 1#y|0 T(()9D7(SSSEB	T B	Ts   	4H>>IIN)r   r   r   r   )__name__
__module____qualname____doc__r'   r   msgsoptionsr	   r@   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   )rH   s    r$   registerrK      s%    
3F;;<<<<<r&   )rH   r   r   r   )rD   
__future__r   typingr   r7   r   pylint.checkersr   pylint.checkers.utilsr   r   r	   pylint.typingr
   pylint.lintr   r   __annotations__r   rK   r   r&   r$   <module>rS      s7  
 2 1 1 " " " " " "                    ' ' ' ' ' '         
 1 0 0 0 0 0 %$$$$$$  +    Z/ Z/ Z/ Z/ Z/k Z/ Z/ Z/z= = = = = =r&   