@@ -185,6 +185,8 @@ class FieldMetadata:
185185 wraps : Optional [str ] = None
186186 # Is the field optional
187187 optional : Optional [bool ] = False
188+ # Is the field repeated
189+ repeated : Optional [bool ] = False
188190
189191 @staticmethod
190192 def get (field : dataclasses .Field ) -> "FieldMetadata" :
@@ -234,7 +236,7 @@ def field(
234236
235237 return dataclasses .field (
236238 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 )},
238240 )
239241
240242
@@ -962,9 +964,8 @@ def to_dict(self, casing: Casing = Casing.CAMEL, include_default_values: bool =
962964 """
963965 output : Dict [str , Any ] = {}
964966 field_types = self ._type_hints ()
965- defaults = self ._betterproto .default_gen
966967 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
968969 value = getattr (self , field_name )
969970 cased_name = casing (field_name ).rstrip ("_" ) # type: ignore
970971 if meta .proto_type == TYPE_MESSAGE :
@@ -1204,9 +1205,8 @@ def to_pydict(self, casing: Casing = Casing.CAMEL, include_default_values: bool
12041205 The python dict representation of this object.
12051206 """
12061207 output : Dict [str , Any ] = {}
1207- defaults = self ._betterproto .default_gen
12081208 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
12101210 value = getattr (self , field_name )
12111211 cased_name = casing (field_name ).rstrip ("_" ) # type: ignore
12121212 if meta .proto_type == TYPE_MESSAGE :
0 commit comments