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
[X] I have searched the issues for duplicates.
[X] I have shown the entire traceback, if possible.
[X] I have verified this issue occurs on the latest prelease of betterproto which can be installed using pip install -U --pre betterproto, if possible.
Summary
Serializing a message with oneof fails by
to_pydict
orfrom_pydict
.Reproduction Steps
Define a message and compile:
then called
Foo(bar=1).to_pydict
orFoo().from_pydict({"bar": 1})
Expected Results
The method called success like
to_dict
andfrom_dict
Actual Results
There will raise AttributeError:
'group1' is set to 'xxxx', not 'baz'
/'group1' is set to None, not 'bar'
:System Information
libprotoc 27.2 Python 3.9.13 2.0.0b7
Checklist
pip install -U --pre betterproto
, if possible.