Python Protobuf 编辑利器——Protoletariat
protoletariatProtocol Buffers for the rest of us项目地址:https://gitcode.com/gh_mirrors/pr/protoletariat
在Python中处理Protocol Buffers(protobuf)时,你是否曾经因为protoc
生成的绝对导入而烦恼?如果答案是肯定的,那么Protoletariat就是你需要的那个工具。
项目介绍
Protoletariat是一个专注于修复protoc
生成的Python代码中的导入问题的小型工具。它的目标是将那些困扰人的绝对导入转化为相对导入,使你的代码更简洁,更易于维护。这个项目源自对Protocol Buffers官方仓库的一个讨论(Issue #1491),旨在提供一种解决protobuf导入问题的简单方法。
技术分析
Protoletariat的工作原理相当直观:它首先通过读取protoc
或buf
产生的FileDescriptorSet
字节流来识别源文件的导入模式。然后,它会利用Python抽象语法树(AST)进行简化版的模式匹配,找出那些由.proto文件生成的导入,并将其转换为相对导入。
应用场景
无论是在大型的微服务架构中,还是在小型的个人项目里,只要涉及protobuf和Python的结合,Protoletariat都能大显身手。特别适合于有大量protobuf文件并希望保持代码整洁的项目。此外,对于持续集成/持续部署(CI/CD)流程, Protoletariat也可以作为一个post-build步骤,自动调整导入结构,确保代码的一致性。
项目特点
- 简便的安装:只需一行命令,即可通过
pip
或conda
轻松安装。 - 灵活的使用:支持
protoc
、buf
以及自定义输入方式,满足不同工作流需求。 - 智能的导入重写:只针对由.proto文件生成的导入做转换,避免错误修改其他代码。
- 配置选项丰富:可以创建
__init__.py
文件以支持包结构,还能排除特定的Google导入或自定义导入规则。 - 非侵入式:默认情况下,Protoletariat会在原地修改已生成的代码,但也可以选择不覆盖原有文件。
快速上手
- 创建一个protobuf文件结构。
- 使用
protoc
生成Python代码。 - 运行
protol
对生成的Python文件进行后处理,将绝对导入转换为相对导入。
以上述示例为例,只需几步操作,就能让你的protobuf导入变得井然有序。
Protoletariat是一个实用且强大的工具,能显著提升处理protobuf的体验。如果你正被protobuf的导入问题所困扰,不妨试试看Protoletariat,你会发现代码管理变得轻而易举。
protoletariatProtocol Buffers for the rest of us项目地址:https://gitcode.com/gh_mirrors/pr/protoletariat