From 8e7e2df32c88ba696c14eadb2633dc511d78d3eb Mon Sep 17 00:00:00 2001 From: Adrien Vannson Date: Thu, 4 Sep 2025 18:24:19 +0200 Subject: [PATCH] Fix is_set --- betterproto2/src/betterproto2/__init__.py | 2 +- betterproto2/tests/test_features.py | 2 ++ betterproto2_compiler/tests/inputs/features/features.proto | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) 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