@@ -185,6 +185,8 @@ class FieldMetadata:
185
185
wraps : Optional [str ] = None
186
186
# Is the field optional
187
187
optional : Optional [bool ] = False
188
+ # Is the field repeated
189
+ repeated : Optional [bool ] = False
188
190
189
191
@staticmethod
190
192
def get (field : dataclasses .Field ) -> "FieldMetadata" :
@@ -234,7 +236,7 @@ def field(
234
236
235
237
return dataclasses .field (
236
238
default_factory = default_factory ,
237
- metadata = {"betterproto" : FieldMetadata (number , proto_type , map_types , group , wraps , optional )},
239
+ metadata = {"betterproto" : FieldMetadata (number , proto_type , map_types , group , wraps , optional , repeated )},
238
240
)
239
241
240
242
@@ -962,9 +964,8 @@ def to_dict(self, casing: Casing = Casing.CAMEL, include_default_values: bool =
962
964
"""
963
965
output : Dict [str , Any ] = {}
964
966
field_types = self ._type_hints ()
965
- defaults = self ._betterproto .default_gen
966
967
for field_name , meta in self ._betterproto .meta_by_field_name .items ():
967
- field_is_repeated = defaults [ field_name ] is list
968
+ field_is_repeated = meta . repeated
968
969
value = getattr (self , field_name )
969
970
cased_name = casing (field_name ).rstrip ("_" ) # type: ignore
970
971
if meta .proto_type == TYPE_MESSAGE :
@@ -1204,9 +1205,8 @@ def to_pydict(self, casing: Casing = Casing.CAMEL, include_default_values: bool
1204
1205
The python dict representation of this object.
1205
1206
"""
1206
1207
output : Dict [str , Any ] = {}
1207
- defaults = self ._betterproto .default_gen
1208
1208
for field_name , meta in self ._betterproto .meta_by_field_name .items ():
1209
- field_is_repeated = defaults [ field_name ] is list
1209
+ field_is_repeated = meta . repeated
1210
1210
value = getattr (self , field_name )
1211
1211
cased_name = casing (field_name ).rstrip ("_" ) # type: ignore
1212
1212
if meta .proto_type == TYPE_MESSAGE :
0 commit comments