File tree Expand file tree Collapse file tree 2 files changed +18
-1
lines changed Expand file tree Collapse file tree 2 files changed +18
-1
lines changed Original file line number Diff line number Diff line change @@ -1319,7 +1319,12 @@ def is_set(self, name: str) -> bool:
1319
1319
:class:`bool`
1320
1320
`True` if field has been set, otherwise `False`.
1321
1321
"""
1322
- return self .__raw_get (name ) is not PLACEHOLDER
1322
+ default = (
1323
+ PLACEHOLDER
1324
+ if not self ._betterproto .meta_by_field_name [name ].optional
1325
+ else None
1326
+ )
1327
+ return self .__raw_get (name ) is not default
1323
1328
1324
1329
1325
1330
def serialized_on_wire (message : Message ) -> bool :
Original file line number Diff line number Diff line change @@ -517,3 +517,15 @@ class Spam(betterproto.Message):
517
517
assert spam == deepcopied
518
518
assert spam is not deepcopied
519
519
assert spam .baz is not deepcopied .baz
520
+
521
+
522
+ def test_is_set ():
523
+ @dataclass
524
+ class Spam (betterproto .Message ):
525
+ foo : bool = betterproto .bool_field (1 )
526
+ bar : Optional [int ] = betterproto .int32_field (2 , optional = True )
527
+
528
+ assert not Spam ().is_set ("foo" )
529
+ assert not Spam ().is_set ("bar" )
530
+ assert Spam (foo = True ).is_set ("foo" )
531
+ assert Spam (foo = True , bar = 0 ).is_set ("bar" )
You can’t perform that action at this time.
0 commit comments