问题描述
我正在尝试在 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 (将#修改为@)