diff --git a/betterproto2/src/betterproto2/__init__.py b/betterproto2/src/betterproto2/__init__.py index d881ff53..d7174c1a 100644 --- a/betterproto2/src/betterproto2/__init__.py +++ b/betterproto2/src/betterproto2/__init__.py @@ -1270,7 +1270,7 @@ def is_set(self, name: str) -> bool: :class:`bool` `True` if field has been set, otherwise `False`. """ - return self.__getattribute__(name) is not self._get_field_default(name) + return self.__getattribute__(name) != self._get_field_default(name) @classmethod def _validate_field_groups(cls, values): diff --git a/betterproto2/tests/test_features.py b/betterproto2/tests/test_features.py index 0c5a4e16..bbb37844 100644 --- a/betterproto2/tests/test_features.py +++ b/betterproto2/tests/test_features.py @@ -430,8 +430,10 @@ def test_is_set(): assert not MsgE().is_set("bool_field") assert not MsgE().is_set("int_field") + assert not MsgE().is_set("str_field") assert MsgE(bool_field=True).is_set("bool_field") assert MsgE(bool_field=True, int_field=0).is_set("int_field") + assert MsgE(str_field=["a", "b", "c"]).is_set("str_field") def test_equality_comparison(): diff --git a/betterproto2_compiler/tests/inputs/features/features.proto b/betterproto2_compiler/tests/inputs/features/features.proto index 65048850..760abca8 100644 --- a/betterproto2_compiler/tests/inputs/features/features.proto +++ b/betterproto2_compiler/tests/inputs/features/features.proto @@ -104,4 +104,5 @@ message MsgD { message MsgE { bool bool_field = 1; optional int32 int_field = 2; + repeated string str_field = 3; } \ No newline at end of file