
    e                    f    d 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
)zGCheck for if / assign blocks that can be rewritten with if-expressions.    )annotations)TYPE_CHECKING)nodes)BaseChecker)PyLinterc                       e Zd ZdZddiZddZy) ConsiderTernaryExpressionCheckerconsider_ternary_expressionW0160)z*Consider rewriting as a ternary expressionconsider-ternary-expressionzxMultiple assign statements spread across if/else blocks can be rewritten with a single assignment and ternary expressionc                n   t        |j                  t        j                        ry t	        |j
                        dk7  st	        |j                        dk7  ry |j
                  d   }|j                  d   }t        |t        j                        rt        |t        j                        sy t        |j                  |j                        D ]V  \  }}t        |t        j                        rt        |t        j                        s y |j                  |j                  k7  sV y  | j                  d|       y )N   r   r   )node)
isinstanceparentr   IflenbodyorelseAssignziptargets
AssignNamenameadd_message)selfr   bstostbnameonames         O/usr/lib/python3/dist-packages/pylint/extensions/consider_ternary_expression.pyvisit_ifz)ConsiderTernaryExpressionChecker.visit_if   s    dkk588,tyy>Q#dkk"2a"7iilkk!n#u||,JsELL4QS[[9 	LE5eU%5%56ju''? zzUZZ'	 	6TB    N)r   znodes.IfreturnNone)__name__
__module____qualname__r   msgsr"    r#   r!   r	   r	      s    (D 
DCr#   r	   c                8    | j                  t        |              y )N)register_checkerr	   )linters    r!   registerr.   7   s    
<VDEr#   N)r-   r   r$   r%   )__doc__
__future__r   typingr   astroidr   pylint.checkersr   pylint.lintr   r	   r.   r*   r#   r!   <module>r5      s2   
 N "    '$!C{ !CHFr#   