如何解决libcst:插入新节点会添加内联代码和分号
我正在尝试在 Assign 节点之前引入一个新节点(作为新的代码行)。
使用 FlattenSentinel
引入新节点时会出现问题,因为我希望节点是独立的,但 libcst 使用分号 (;
) 将它们连接起来,例如:
a = 6
变成:
print('returning'); a = 6
重现示例的代码:
import libcst as cst
class MyTransformer(cst.CSTTransformer):
def leave_Assign(self,old_node,updated_node):
log_stmt = cst.Expr(cst.parse_expression("print('returning')"))
return cst.FlattenSentinel([log_stmt,updated_node])
source_tree = cst.parse_module("a = 6")
modified_tree = source_tree.visit(MyTransformer())
print(modified_tree.code)
def leave_Assign(self,updated_node):
log_stmt = cst.Expr(cst.parse_expression("print('returning')"))
return cst.FlattenSentinel([log_stmt,cst.Expr(cst.Newline()),updated_node])
我想要的结果是将新节点插入到现有节点之上(在同一级别),没有分号,如下所示:
print('returning')
a = 6
这在 libcst 中可行吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。