diff --git a/betterproto/__init__.py b/betterproto/__init__.py index fc178b5..ee36708 100644 --- a/betterproto/__init__.py +++ b/betterproto/__init__.py @@ -595,6 +595,9 @@ class Message(ABC): elif meta.proto_type in [TYPE_SINT32, TYPE_SINT64]: # Undo zig-zag encoding value = (value >> 1) ^ (-(value & 1)) + elif meta.proto_type == TYPE_BOOL: + # Booleans use a varint encoding, so convert it to true/false. + value = value > 0 elif wire_type in [WIRE_FIXED_32, WIRE_FIXED_64]: fmt = _pack_fmt(meta.proto_type) value = struct.unpack(fmt, value)[0] diff --git a/betterproto/tests/bool.json b/betterproto/tests/bool.json new file mode 100644 index 0000000..348e031 --- /dev/null +++ b/betterproto/tests/bool.json @@ -0,0 +1,3 @@ +{ + "value": true +} diff --git a/betterproto/tests/bool.proto b/betterproto/tests/bool.proto new file mode 100644 index 0000000..237e7db --- /dev/null +++ b/betterproto/tests/bool.proto @@ -0,0 +1,5 @@ +syntax = "proto3"; + +message Test { + bool value = 1; +}