我想在python中生成protobuf类的intellisense。但生成的protobuf类的实现是特殊的,代码如下:
class X(_message.Message):
__metaclass__ = _reflection.GeneratedProtocolMessageType
DESCRIPTOR = _X
大多数python IDE只能智能感知__metaclass__
和DESCRIPTOR
两个成员,而不是.proto文件中定义的成员。
如何制作?
答案 0 :(得分:0)
如果您正在使用最新的Python版本(3.7+),则可以尝试我的https://github.com/danielgtaylor/python-betterproto项目。它会生成具有适当类型的数据类,VSCode,PyCharm等可用于提供类型提示和智能感知。
例如,输入以下内容:
syntax = "proto3";
// Some documentation about the Test message.
message Test {
// Some documentation about the count.
int32 count = 1;
}
您将获得如下输出:
# Generated by the protocol buffer compiler. DO NOT EDIT!
# sources: int32.proto
# plugin: python-betterproto
from dataclasses import dataclass
import betterproto
@dataclass
class Test(betterproto.Message):
"""Some documentation about the Test message."""
# Some documentation about the count.
count: int = betterproto.int32_field(1)
比官方生成的描述符类容易得多。