Open
Description
Summary
Serializing a message with oneof fails by to_pydict
or from_pydict
.
Reproduction Steps
Define a message and compile:
message Foo {
oneof group1 {
int32 bar = 1;
int32 baz = 2;
}
}
then called Foo(bar=1).to_pydict
or Foo().from_pydict({"bar": 1})
Expected Results
The method called success like to_dict
and from_dict
Actual Results
There will raise AttributeError: 'group1' is set to 'xxxx', not 'baz'
/ 'group1' is set to None, not 'bar'
:
Traceback (most recent call last):
File "D:\Projects\adapter-kritor\exam.py", line 22, in <module>
res = foo1.to_pydict()
File "D:\Projects\adapter-kritor\.venv\lib\site-packages\betterproto\__init__.py", line 1717, in to_pydict
value = getattr(self, field_name)
File "D:\Projects\adapter-kritor\.venv\lib\site-packages\betterproto\__init__.py", line 836, in __getattribute__
raise AttributeError(
AttributeError: 'group1' is set to 'bar', not 'baz'
System Information
libprotoc 27.2
Python 3.9.13
2.0.0b7
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.