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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file protomodel-0.0.13.tar.gz.

File metadata

  • Download URL: protomodel-0.0.13.tar.gz
  • Upload date:
  • Size: 6.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.11.3 Linux/5.15.90.1-microsoft-standard-WSL2

File hashes

Hashes for protomodel-0.0.13.tar.gz
Algorithm Hash digest
SHA256 789a82d6be23709faaf127f49f817663b2345e7891ecccd07cac9d741a8375f4
MD5 c1167d63d74e7cb592a168d5a602c3a0
BLAKE2b-256 de38de90a62fd4d237d167a76e419d13650c9fac0e12860756f43ed7cc90a46d

See more details on using hashes here.

File details

Details for the file protomodel-0.0.13-py3-none-any.whl.

File metadata

  • Download URL: protomodel-0.0.13-py3-none-any.whl
  • Upload date:
  • Size: 6.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.11.3 Linux/5.15.90.1-microsoft-standard-WSL2

File hashes

Hashes for protomodel-0.0.13-py3-none-any.whl
Algorithm Hash digest
SHA256 8ff7edc599e2281aaa175a3eaeb77c8552afae64cfcbcee83c269e028f78c1f8
MD5 70b72f674dc6f11e79a8572e39c0620f
BLAKE2b-256 22c1e6925ec97288d9884473f37d9a7f7280b10217d046a7558be8f0f84b571f

See more details on using hashes here.

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