diff --git a/betterproto-extras/src/merging.rs b/betterproto-extras/src/merging.rs index 7f4d86a..6f13084 100644 --- a/betterproto-extras/src/merging.rs +++ b/betterproto-extras/src/merging.rs @@ -14,6 +14,19 @@ pub fn merge_msg_into_pyobj(obj: &PyAny, mut msg: DynamicMessage) -> Result<()> map_field_value(field_name, field.1, proto_meta)?, )?; } + + let mut buf = vec![]; + for field in msg.unknown_fields() { + field.encode(&mut buf); + } + if !buf.is_empty() { + let mut unknown_fields = obj.getattr("_unknown_fields")?.extract::>()?; + unknown_fields.append(&mut buf); + obj.setattr("_unknown_fields", unknown_fields)?; + } + + obj.setattr("_serialized_on_wire", true)?; + Ok(()) }