From eb5020db2a0fc96d24a7dac96e1ffa2765df3f30 Mon Sep 17 00:00:00 2001 From: "Daniel G. Taylor" Date: Sun, 27 Oct 2019 14:59:38 -0700 Subject: [PATCH] Fix bool parsing bug --- betterproto/__init__.py | 3 +++ betterproto/tests/bool.json | 3 +++ betterproto/tests/bool.proto | 5 +++++ 3 files changed, 11 insertions(+) create mode 100644 betterproto/tests/bool.json create mode 100644 betterproto/tests/bool.proto 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; +}