
    e                    n    d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 erd dl
mZ  G d de      Zdd	Zy
)    )annotations)TYPE_CHECKING)nodes)BaseChecker)only_required_for_messages)PyLinterc                  R     e Zd ZdZddiZd fdZ ed      d	d       Zd
dZ xZ	S )SetMembershipCheckerset_membershipR6201)z&Consider using set for membership testuse-set-for-membershipz`Membership tests are more efficient when performed on a lookup optimized datatype like ``sets``.c                &    t         |   |       y)zInitialize checker instance.linterN)super__init__)selfr   	__class__s     B/usr/lib/python3/dist-packages/pylint/extensions/set_membership.pyr   zSetMembershipChecker.__init__   s    '    r   c                Z    |j                   D ]  \  }}|dk(  s| j                  |        y )Nin)ops_check_in_comparison)r   nodeop
comparators       r   visit_comparez"SetMembershipChecker.visit_compare!   s.    "hh 	6NB
Tz))*5	6r   c                    t        |t        j                        rt        |t        j                        ryt	        d |j
                  D              r| j                  d|       yy)zBChecks for membership comparisons with in-place container objects.Nc              3  P   K   | ]  }t        |t        j                           y wN)
isinstancer   Const).0items     r   	<genexpr>z<SetMembershipChecker._check_in_comparison.<locals>.<genexpr>/   s     Iz$,Is   $&r   )r   )r"   r   BaseContainerSetalleltsadd_message)r   r   s     r   r   z)SetMembershipChecker._check_in_comparison'   sU    *e&9&9:j		?
  III5JG Jr   r   r   returnNone)r   znodes.Comparer-   r.   )r   znodes.NodeNGr-   r.   )
__name__
__module____qualname__namemsgsr   r   r   r   __classcell__)r   s   @r   r
   r
      s<    D 
D(   896 :6
	Hr   r
   c                8    | j                  t        |              y r!   )register_checkerr
   r   s    r   registerr7   3   s    
089r   Nr,   )
__future__r   typingr   astroidr   pylint.checkersr   pylint.checkers.utilsr   pylint.lintr   r
   r7    r   r   <module>r?      s0   
 #    ' <$H; HB:r   