New submission from Gil Forcada <gil.gn...@gmail.com>:

Given the following code:

class MyClass(object):

    @property
    def my_function(self): pass

Parsing it with ast module, the lineno and col_offset of the ast.FunctionDef is 
reported to be where the decorator starts (i.e. line 3 column 4) rather than 
where the actual def statement is (i.e. line 4 column 4).

This is due to the decorator that is part of the ast.FunctionDef, but as  there 
can be multiple decorators (which they don't provide their own lineno and 
col_offset arguments) and they can span across multiple lines, there is no 
reliable way to actually know where the actual def statement starts physically.

See this bug report on flake8-builtins plugin (I'm the author) reported by 
@dhood user on github:

https://github.com/gforcada/flake8-builtins/issues/22#issuecomment-377961642

----------
components: Library (Lib)
messages: 314861
nosy: gforcada
priority: normal
severity: normal
status: open
title: lineno and col_offset are wrong on function definitions with decorators
type: behavior
versions: Python 2.7, Python 3.4, Python 3.5, Python 3.6, Python 3.7, Python 3.8

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue33211>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to