Skip to main content

Python Library to generate proto buffer code from python using type annotations

Project description

Protomodel

Python Library to generate proto buffer code from python using type annotations

Installation

Create a virtual enviroment (Optional)

python -m venv venv
source venv/bin/activate # venv/Scripts/activate on Windows

Install package (require python ^3.10 version)

pip install protomodel

Example

Create a python file and add the following code:

from protomodel import message, service, rpc


@message
class HelloRequest:
    name: str

@message
class HelloReply:
    message: str

@service
class Greeter:

    @rpc
    def say_hello(hello_request: HelloRequest) -> HelloReply:
        pass

Generate file

Run the following command to generate a proto buffer file:

python -m protomodel generate --python_file=hello.py --proto_name=hello.proto

And then you will get the following result:

syntax = "proto3";

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

Add a package name:

python -m protomodel generate --python_file=hello.py \
--proto_name=hello.proto --package_name=my_package_name
syntax = "proto3";

package my_package_name;

...

Adding another types

Python Code:

@message
class Item:
    id: int
    name: str
    description: str
    price: float
    enabled: bool

@message
class ItemsList:
    items: list[Item]

Result:

message Item {
  int32 id = 1;
  string name = 2;
  string description = 3;
  double price = 4;
  bool enabled = 5;
}

message ItemsList {
  repeated Item items = 1;
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

protomodel-0.0.13.tar.gz (6.1 kB view hashes)

Uploaded Source

Built Distribution

protomodel-0.0.13-py3-none-any.whl (6.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page