IDE可以智能感知protobuf-python成员

时间:2014-05-10 09:19:12

标签: python protocol-buffers

我想在python中生成protobuf类的intellisense。但生成的protobuf类的实现是特殊的,代码如下:

class X(_message.Message):
  __metaclass__ = _reflection.GeneratedProtocolMessageType
  DESCRIPTOR = _X

大多数python IDE只能智能感知__metaclass__DESCRIPTOR两个成员,而不是.proto文件中定义的成员。

如何制作?

1 个答案:

答案 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)

比官方生成的描述符类容易得多。