RedBaron:像操作 DOM 一样修改 Python 源码
RedBaron:像操作 DOM 一样修改 Python 源码
PyCQA 组织开源的 RedBaron 项目,目前收获了 725 个 Star:


RedBaron 是一款 Python 库,也可以作为独立工具使用。它的核心目标是降低编写修改源代码代码的门槛,让重构、代码生成和源码编辑等操作更加直接。与基于正则表达式或字符串替换的方案不同,RedBaron 在语法树层面工作,能够识别代码的结构关系。
设计与原理
RedBaron 的 API 风格参考了 BeautifulSoup。BeautifulSoup 在 HTML/XML 解析领域以直观著称,RedBaron 将类似的思路引入 Python 源码操作。用户在理解基本操作逻辑后,日常使用中大约八成任务不需要反复查阅文档。
RedBaron 构建在 Baron 之上。Baron 是一个无损 AST 实现,能够将 Python 源码解析为结构化数据,再完整还原为原始代码。这意味着 ast_to_code(code_to_ast(source_code)) 的结果与输入完全一致。Baron 的 AST 也被称为 FST,即 Full Syntax Tree。RedBaron 借助这一底层能力,确保修改操作只影响用户明确指定的位置,不会意外改动代码的其他部分。注释格式、空白字符等细节都会被完整保留。
使用场景
RedBaron 适用于多种需要操作源码的场景。开发者可以编写自定义的重构脚本,批量修改项目中的代码模式。也可以构建通用的重构工具,集成到开发工作流中。IDE 或编辑器插件的开发者,能够利用 RedBaron 实现代码分析和转换功能。在 IPython 等交互环境中,用户可以直接使用 RedBaron 对源码进行修改,操作层级高于文本编辑器提供的高级文本替换功能。
字符串替换在处理简单任务时可行,但面对嵌套结构、多行语句或包含特殊字符的代码时,容易引入错误。RedBaron 基于语法树进行操作,修改结果始终符合 Python 语法规则。
安装方法
RedBaron 的安装过程很简单,通过 pip 即可完成。如果需要终端语法高亮效果,建议安装完整版本:
pip install redbaron[pygments]
如果只需要核心功能,不需要高亮显示,可以安装精简版本:
pip install redbaron
测试运行
项目源码中包含测试用例,可以通过 pytest 运行验证:
pip install pytest
py.test tests
当前状态
RedBaron 目前处于 alpha 阶段。核心架构已经成型,API 接口趋于稳定,但项目整体还没有经过大规模生产环境的检验。维护者欢迎用户反馈问题和提交代码贡献。
项目公开的 API 文档所涵盖的接口,在 2.0 版本发布之前会保持向后兼容。只有直接调用特定节点构造函数并传入 FST 数据的操作,可能会在未来发生变动,但这种方式并未在文档中推荐,实际使用中也并不方便。
RedBaron 支持 Python 2 到 Python 3.7 的语法范围。
社区与文档
RedBaron 提供完整的在线文档和入门教程,项目由 PyCQA 组织维护,遵循该组织的代码规范。开发者可以通过 IRC 频道参与技术讨论。
浙公网安备 33010602011771号