Open zbstof opened 2 months ago
Hey, to get around this, I did an extra step on top of buf.gen.yaml
with a poetry dependency that looked like this:
betterproto = {extras = ["compiler"], version = "^2.0.0b7", allow-prereleases = true}
You're likely also going to need grpcio
and grpcio-tools
installed.
Then, in my custom generate script, I did this:
# Find all .proto files
proto_files=$(find /schemas/proto -name "*.proto")
# Special case for Python to use betterproto so that we can use Pydantic Dataclasses
python3 -m grpc_tools.protoc \
-I /schemas/proto \
--python_betterproto_out=/schemas/output/python/proto/ \
--python_betterproto_opt=pydantic_dataclasses,typing.310 \
$proto_files
Hope that helps!
Thank you @JitPackJoyride. I do have similar workaround at hand. But if we are willing to call raw protoc, I don't see why we need buf at all
any take on this? Will Buf include pre-released commits? or make any exception on libraries like betterproto for beta releases?
:+1: here. I would also like to use betterproto with buf
but the 4 year old version available doesn't work for our protos.
Summary
Buf uses 1.2.5 of betterproto package, which cannot process
optional
keywordsWhat is the feature request for?
The core library
The Problem
In our company we have a standard to use buf to generate bindings to proto files. And we wanted to use betterproto plugin to generate idiomatic python code. Unfortunately, the only version of the plugin (v1.2.5) doesn't support some "newer" protobuf features, like "optional" keyword. This was fixed in v.2.0.0b4, but this release is not available in buf.
The Ideal Solution
Can I ask to release latest beta (v.2.0.0b7 as the time of writing) as another version of community plugin? https://github.com/danielgtaylor/python-betterproto/milestone/4 does not seem to be forthcoming. Thanks
The Current Solution
Rely on official buf python plugin https://buf.build/protocolbuffers/python?version=v28.0