[Python-projects] pylint: parse error on disable-msg commentin finally clause (retry)

Sylvain Thénault sylvain.thenault at logilab.fr
Thu Jul 31 14:12:19 CEST 2008


On Thu, Jul 31, 2008 at 01:35:11PM +0200, Maarten ter Huurne wrote:
> Our nightly regression test found a problem in the patch. It's supposed to
> test our code, but indirectly it tests pylint too :)

héhé, nice :)
 
> There is an improved patch:
> ===
> --- logilab-astng-0.17.2.org/nodes.py     2008-01-14 13:32:55.000000000
> +0100
> +++ logilab-astng-0.17.2/nodes.py   2008-07-31 13:22:15.000000000 +0200
> @@ -308,15 +308,16 @@
>  TryExcept.block_range = try_except_block_range
> 
>  def elsed_block_range(node, lineno, last=None):
> -    """handle block line numbers range for try/finally, for and while
> +    """handle block line numbers range for try/finally, if, for and while
>      statements
>      """
>      if lineno == node.source_line():
>          return lineno, lineno
> -    if node.else_:
> -        if lineno >= node.else_.source_line():
> -            return lineno, node.else_.last_source_line()
> -        return lineno, node.else_.source_line() - 1
> +    block = node.final if isinstance(node, TryFinally) else node.else_
> +    if block:
> +        if lineno >= block.fromlineno:
> +            return lineno, block.last_source_line()
> +        return lineno, block.source_line() - 1
>      return lineno, last or node.last_source_line()
> 
>  TryFinally.block_range = elsed_block_range
> ===
> 
> The problem was that elsed_block_range() can be called on "if" blocks too,
> and these do not have a "body" attribute. The fix is to get the actual
> first line of the "else/finally" block instead of the last line before it.
> The "fromlineno" attribute seems to provide this (unlike source_line(),
> which returns the line of the first statement inside the block).

new patch applied, thanks again!

Bye,
-- 
Sylvain Thénault                               LOGILAB, Paris (France)
Formations Python, Zope, Plone, Debian:  http://www.logilab.fr/formations
Développement logiciel sur mesure:       http://www.logilab.fr/services
Python et calcul scientifique:           http://www.logilab.fr/science



More information about the Python-Projects mailing list