[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