It's in the AST.
>>> tree.body[0].orelse[0].orelse[0].lineno
7
To see it with dump, use: ast.dump(tree, include_attributes=True)
Which, after some reformatting, gives:
Module(body=[If(test=Compare(left=Name(id='num', ctx=Load(), lineno=2, col_offset=3, end_lineno=2, end_col_offset=6),
ops=[Gt()], comparators=[Constant(value=0, kind=None, lineno=2, col_offset=9, end_lineno=2, end_col_offset=10)],
lineno=2, col_offset=3, end_lineno=2, end_col_offset=10),
body=[Expr(value=Call(func=Name(id='print', ctx=Load(), lineno=3, col_offset=4, end_lineno=3, end_col_offset=9),
args=[Constant(value='Positive number', kind=None, lineno=3, col_offset=10, end_lineno=3, end_col_offset=27)],
keywords=[], lineno=3, col_offset=4, end_lineno=3, end_col_offset=28),
lineno=3, col_offset=4, end_lineno=3, end_col_offset=28)],
orelse=[If(test=Compare(left=Name(id='num', ctx=Load(), lineno=4, col_offset=5, end_lineno=4, end_col_offset=8),
ops=[Eq()],
comparators=[Constant(value=0, kind=None, lineno=4, col_offset=12, end_lineno=4, end_col_offset=13)], lineno=4, col_offset=5, end_lineno=4, end_col_offset=13),
body=[Expr(value=Call(func=Name(id='print', ctx=Load(), lineno=5, col_offset=4, end_lineno=5, end_col_offset=9),
args=[Constant(value='Zero', kind=None, lineno=5, col_offset=10, end_lineno=5, end_col_offset=16)],
keywords=[], lineno=5, col_offset=4, end_lineno=5, end_col_offset=17),
lineno=5, col_offset=4, end_lineno=5, end_col_offset=17)],
orelse=[Expr(value=Call(func=Name(id='print', ctx=Load(), lineno=7, col_offset=4, end_lineno=7, end_col_offset=9),
args=[Constant(value='Negative number', kind=None, lineno=7, col_offset=10, end_lineno=7, end_col_offset=27)],
keywords=[], lineno=7, col_offset=4, end_lineno=7, end_col_offset=28),
lineno=7, col_offset=4, end_lineno=7, end_col_offset=28)], lineno=4, col_offset=0, end_lineno=7, end_col_offset=28)],
lineno=2, col_offset=0, end_lineno=7, end_col_offset=28)], type_ignores=[])"
I don't think there's any enhancement to be made here, so I'm going to close this issue. |