Steven Myint added the comment:
I think what you guys have brought up makes sense.
Now that you mention it, I see that pyflakes gives the wrong line number if an
escaped newline appears after the doctests. Though, it works fine if the
escaped newline appears before it.
Serhiy Storchaka added the comment:
Even if the line number of a docstring is known, it is not easy to determine
the line number corresponding to the particular line in a docstring if it
contains backslashes following by newline.
'''foo
bar
'''
and
'''\
foo
bar
'''
are equal strings, but
STINNER Victor added the comment:
> We use this feature in pyflakes (https://github.com/PyCQA/pyflakes/issues/271)
AST is not designed to be 1-to-1 .py source to AST mapping. If you need the
exact line number, you might use your own parser. I don't know what is using
pylint for example? There
Serhiy Storchaka added the comment:
It is not possible anymore. Why you need the line number of a docstring?
The closest approximation is between node.lineno and node.body[0].lineno (if
node.body is not empty).
--
nosy: +haypo, inada.naoki, serhiy.storchaka
New submission from Steven Myint:
Since #29463, it is no longer obvious how to get the line number of a docstring
in the AST:
import ast
x = ast.parse('''\
def foo():
"""This is a docstring."""
''')
# In Python 3.6, the docstring and line number would be: