A modern setuptools plugin to generate Python files from proto files using betterproto
Project description
Betterproto Setuptools plugin
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):
- Python: 3.11
- Operating System: Ubuntu Linux 20.04
- Architectures: amd64, arm64
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:
proto_path
: This is the root directory where the proto files are located. By default, it is set to.
.proto_glob
: This is the glob pattern to match the proto files. The search is done recursively. By default, it is set to*.proto
.include_paths
: This is a list of paths to be added to the protobuf compiler's include path. By default, it is set to[]
, but theproto_path
directory is always automatically added.out_path
: This is the directory where the generated Python files will be placed. By default, it is set to.
.
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
setuptools-proto
: We didn't use this project because it seems a bit inactive and not widely used. It also seems to need some configuration as code, which we wanted to avoid.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for setuptools-betterproto-0.3.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 167c5f246a1446de727c790eda0c28645433d0732cc51b5fdaec87f3f6da73b7 |
|
MD5 | d8144e787ab9ee3395835e9fdf279f1f |
|
BLAKE2b-256 | ed7183dcf9cba68e04573993914283c95486cad314416b229102cee3cee16edd |
Hashes for setuptools_betterproto-0.3.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c155f808a451ab15b1d6ea80b52adc276956a1989f5e89b2e54260d2e66e2a1c |
|
MD5 | 658e5b088b7093ebc8fbbc836e7f6ccb |
|
BLAKE2b-256 | 15cbb4fdc979fe0980ac7060662e8840bc21451f4340ceff4f02310a56f47627 |