ó
'![c           @   se   d  d l  Z  d  d l m Z d  d l m Z d  d l m Z m Z d e f d „  ƒ  YZ d „  Z	 d S(   iÿÿÿÿN(   t   BaseTokenChecker(   t   check_messages(   t   ITokenCheckert   IAstroidCheckert   ElseifUsedCheckerc           B   s{   e  Z d  Z e e f Z d Z i d d 6Z d d „ Z	 d „  Z
 d „  Z d	 „  Z d
 „  Z d „  Z e d ƒ d „  ƒ Z RS(   s<   Checks for use of "else if" when a "elif" could be used
    t   else_if_useds*   Consider using "elif" instead of "else if"s   else-if-useds…   Used when an else statement is immediately followed by an if statement and does not contain statements that would be unrelated to it.t   R5501c         C   s   t  j |  | ƒ |  j ƒ  d  S(   N(   R    t   __init__t   _init(   t   selft   linter(    (    s;   lib/python2.7/site-packages/pylint/extensions/check_elif.pyR      s    c         C   s   g  |  _  d |  _ d  S(   Ni    (   t   _elifst   _if_counter(   R	   (    (    s;   lib/python2.7/site-packages/pylint/extensions/check_elif.pyR      s    	c         C   sb   x[ | D]S \ } } } } } | d k r; |  j  j t ƒ q | d k r |  j  j t ƒ q q Wd  S(   Nt   elift   if(   R   t   appendt   Truet   False(   R	   t   tokenst   _t   token(    (    s;   lib/python2.7/site-packages/pylint/extensions/check_elif.pyt   process_tokens#   s
    c         C   s   |  j  ƒ  d  S(   N(   R   (   R	   R   (    (    s;   lib/python2.7/site-packages/pylint/extensions/check_elif.pyt   leave_module+   s    c         C   s   |  j  d 7_  d  S(   Ni   (   R   (   R	   R   (    (    s;   lib/python2.7/site-packages/pylint/extensions/check_elif.pyt   visit_ifexp.   s    c         C   s   |  j  t | j ƒ 7_  d  S(   N(   R   t   lent   ifs(   R	   t   node(    (    s;   lib/python2.7/site-packages/pylint/extensions/check_elif.pyt   visit_comprehension1   s    c         C   su   t  | j t j ƒ rb | j j } | rb | | g k rb |  j |  j s_ |  j d d | ƒq_ qb n  |  j d 7_ d  S(   Ns   else-if-usedR   i   (   t
   isinstancet   parentt   astroidt   Ift   orelseR   R   t   add_message(   R	   R   R    (    (    s;   lib/python2.7/site-packages/pylint/extensions/check_elif.pyt   visit_if4   s    (   s*   Consider using "elif" instead of "else if"s   else-if-useds…   Used when an else statement is immediately followed by an if statement and does not contain statements that would be unrelated to it.N(   t   __name__t
   __module__t   __doc__R   R   t   __implements__t   namet   msgst   NoneR   R   R   R   R   R   R   R"   (    (    (    s;   lib/python2.7/site-packages/pylint/extensions/check_elif.pyR      s    
					c         C   s   |  j  t |  ƒ ƒ d S(   s   Required method to auto register this checker.

    :param linter: Main interface object for Pylint plugins
    :type linter: Pylint object
    N(   t   register_checkerR   (   R
   (    (    s;   lib/python2.7/site-packages/pylint/extensions/check_elif.pyt   register?   s    (
   R   t   pylint.checkersR    t   pylint.checkers.utilsR   t   pylint.interfacesR   R   R   R+   (    (    (    s;   lib/python2.7/site-packages/pylint/extensions/check_elif.pyt   <module>   s
   1