все Python 3astфункция
ast.increment_lineno()
вспомогательные функции
Сдвигает номера строк (lineno и end_lineno) всех узлов дерева на n. Нужна, когда разобранный фрагмент вставляется в другое место файла.
Синтаксис
ast.increment_lineno(node, n=1)
Типичный случай — фрагмент разобран отдельно, а в файле начинается со строки 10: без сдвига ошибки и трассировки укажут на строки 1, 2, 3. Колонки не меняются, дерево правится на месте и возвращается. Если код компилируется из строки, проще дописать в начало пустые строки, но для готового дерева нужна именно эта функция.
Примеры
import ast
tree = ast.parse('a = 1\nb = 2')
ast.increment_lineno(tree, 9)
print([(s.lineno, s.end_lineno) for s in tree.body]) # → [(10, 10), (11, 11)]
import ast
tree = ast.parse('x = 1\n1 / 0')
ast.increment_lineno(tree, 9)
try:
exec(compile(tree, 'part.py', 'exec'))
except ZeroDivisionError as e:
print(e.__traceback__.tb_next.tb_lineno) # → 11
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности