-
Notifications
You must be signed in to change notification settings - Fork 17
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Summary
FieldMask json/dict serializes as list rather than comma separated string
Reproduction Steps
Attached tarball with simple project reproducing the issue,
but in short:
- Define a message with a google
FieldMaskfield
syntax = 'proto3';
package foo.v1;
import "google/protobuf/field_mask.proto";
message Bar {
google.protobuf.FieldMask mask = 1;
}
- construct an instance of said message and call
to_dict/to_jsonon it
Expected Results
the FieldMask portion serializes as a comma separate string per the doc string (and other langauge's implementations)
# JSON Encoding of Field Masks
In JSON, a field mask is encoded as a single string where paths are
separated by a comma. Fields name in each path are converted
to/from lower-camel naming conventions.
As an example, consider the following message declarations:
message Profile {
User user = 1;
Photo photo = 2;
}
message User {
string display_name = 1;
string address = 2;
}
In proto a field mask for `Profile` may look as such:
mask {
paths: "user.display_name"
paths: "photo"
}
In JSON, the same mask is represented as below:
{
mask: "user.displayName,photo"
}
Actual Results
it serializes as a list of strings
❯ uv run bar
Built bar @ file:///home/policyfly/tmp/field_mask_repro/bar
Built foo @ file:///home/policyfly/tmp/field_mask_repro/gen/python
Uninstalled 2 packages in 0.47ms
Installed 2 packages in 1ms
{'mask': {'paths': ['a.b', 'a.c']}}
{"mask": {"paths": ["a.b", "a.c"]}}
System Information
❯ uv run python --version
Python 3.12.7
not running with protoc, but running with buf & uv
❯ buf --version
1.50.0
❯ uv self version
uv 0.9.28
Checklist
- I have searched the issues for duplicates.
- I have shown the entire traceback, if possible.
- I have verified this issue occurs on the latest prelease of betterproto which can be installed using
pip install -U --pre betterproto, if possible.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working