frequenz-floss / setuptools-betterproto

A modern setuptools plugin to generate Python files from proto files using betterproto
https://frequenz-floss.github.io/setuptools-betterproto/
MIT License
0 stars 2 forks source link
betterproto code-generation frequenz grpc grpclib library plugin proto protobuf protocol-buffers python setuptools

Betterproto Setuptools plugin

Build Status PyPI Package Docs

Introduction

A modern setuptools plugin to generate Python files from proto files using betterproto.

This plugin is based on repo-config's grpc_tools plugin.

Supported Platforms

The following platforms are officially supported (tested):

Quick Start

To add automatic betterproto code generation to your project, you need to add this package to your build-dependencies in the pyproject.toml file, for example:

[build-system]
requires = [
  "setuptools == 68.1.0",
  "setuptools-betterproto == 0.1.0",
]
build-backend = "setuptools.build_meta"

This uses a default configuration as follows:

These defaults can be changed via the pypackage.toml file too. For example:

[tool.setuptools_betterproto]
proto_path = "proto"
include_paths = ["api-common-protos"]
out_path = "src"

You should add betterproto as a dependency too, for example:

dependencies = ["betterproto == 2.0.0b6"]

Once this is done, the conversion of the proto files to Python files should be automatic. Just try building the package with:

python -m pip install build
python -m build

A new command to generate the files will be also added to setuptools, you can run it manually with:

python -c 'import setuptools; setuptools.setup()' compile_betterproto

You can also pass the configuration options via command line for quick testing, try passing --help at the end of the command to see the available options.

Contributing

If you want to know how to build this project and contribute to it, please check out the Contributing Guide.

Similar projects