问题标签 [libcst]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
213 浏览

python - LibCST:将任意节点转换为代码

是否可以将任意 LibCST 节点转储到 Python 代码中?我的用例是我想提取与特定命名方案匹配的函数的代码。我可以提取FunctionDef我需要的节点,但我似乎没有找到将它们转换为代码的方法。

0 投票
1 回答
518 浏览

python-3.x - Python Libcst:无法从访问者类中的节点生成代码

我正在寻找一种从访问者节点获取代码的方法。例子:

在上面的代码中,我想获取节点的代码(即阈值 = 1)。但似乎 libcs​​t 不提供这种支持。我进一步环顾四周,发现了一个属于 Module的函数名code_for_node(node: libcst._nodes.base.CSTNode) → str libcs​​t.Module.code_for_node。但是我找不到足够的帮助来在我的代码中使用它。

期待帮助。提前致谢!

0 投票
1 回答
130 浏览

python - libcs​​t:插入新节点会添加内联代码和分号

我正在尝试在分配节点之前引入一个新节点(作为新的代码行)。

使用FlattenSentinel引入新节点时会出现问题,因为我希望节点是分开的,但 libcs​​t 使用分号 ( ;) 将它们连接起来,例如:

变成:

重现示例的代码:

我也尝试引入一个新行,但看起来更糟,代码示例:

我想要的结果是将新节点插入现有节点上方(在同一级别),不带分号,如下所示:

这在 libcs​​t 中可能吗?

0 投票
0 回答
27 浏览

libcst - 在 Libcst 中向现有的 if elif else 添加额外的 If 节点时出现问题

我是 LibCST 的新手。我正在编写一个工具而不是修改代码。我想将一个 elif (orelse=If) 添加到现有的 If elif else 节点。简单的例子:

我的代码如下所示:

当我执行我得到的代码时:

我不确定是否感到惊讶,因为我没有正确更新。我觉得 Try 块是错误的地方。我做错了什么。我将不胜感激任何见解。

谢谢,安德鲁

0 投票
1 回答
166 浏览

python - 如何判断一行Python是否有注释,并将该行拆分为`[code, comment]`

我想知道如何

  1. 判断(True / False)一行Python代码是否有注释
  2. 将线分成code,comment

例如:

非常简单,但是例如:

不是那么直截了当。我一般不知道该怎么做,这样我就可以做到

来自评论:“你用 libcs​​t 标记了这个。你已经使用那个库给你一个 AST 了吗?”

我曾尝试使用它但失败了,例如:

来自评论:“您是在解析单行代码、函数或类的源代码,还是解析整个模块?

我正在解析单行 - 至少这是我的意图。我希望能够遍历文件中的行。我有一个预先存在的过程,它已经迭代了 python 文件的行,但我想扩展它以考虑引发这个问题的评论。

来自评论“您对解析结果的最终目标是什么,只需获取没有评论的源代码?”

不 - 我想要示例中给出的源代码和注释。

0 投票
1 回答
55 浏览

python - 用'pass'替换所有功能,将私有同步到公共github repo

我想为专有的 python 模块创建一个存储库,类似于这个 python 包mlfinlabs。他们已经清空了所有这样的功能:

我找到了解析源代码的libcs​​t模块,您可以对其进行操作。

这样做有更好的做法吗?例如:github 操作?我找不到任何其他好的解决方案。