@@ -1215,56 +1215,50 @@ def from_dict(self: T, value: Dict[str, Any]) -> T:
1215
1215
v = getattr (self , field_name )
1216
1216
cls = self ._betterproto .cls_by_field [field_name ]
1217
1217
if isinstance (v , list ):
1218
- if cls is datetime :
1219
- v = [isoparse (item ) for item in value [ key ] ]
1220
- elif cls is timedelta :
1221
- v = [timedelta (seconds = float (item [:- 1 ])) for item in value [ key ] ]
1218
+ if cls == datetime :
1219
+ v = [isoparse (item ) for item in v ]
1220
+ elif cls == timedelta :
1221
+ v = [timedelta (seconds = float (item [:- 1 ])) for item in v ]
1222
1222
else :
1223
- v = [cls ().from_dict (item ) for item in value [ key ] ]
1224
- elif cls is datetime :
1225
- v = isoparse (value [ key ] )
1223
+ v = [cls ().from_dict (item ) for item in v ]
1224
+ elif cls == datetime :
1225
+ v = isoparse (v )
1226
1226
setattr (self , field_name , v )
1227
- elif cls is timedelta :
1228
- v = timedelta (seconds = float (value [ key ] [:- 1 ]))
1227
+ elif cls == timedelta :
1228
+ v = timedelta (seconds = float (v [:- 1 ]))
1229
1229
setattr (self , field_name , v )
1230
1230
elif meta .wraps :
1231
- setattr (self , field_name , value [ key ] )
1231
+ setattr (self , field_name , v )
1232
1232
elif v is None :
1233
- setattr (self , field_name , cls ().from_dict (value [ key ] ))
1233
+ setattr (self , field_name , cls ().from_dict (v ))
1234
1234
else :
1235
1235
# NOTE: `from_dict` mutates the underlying message, so no
1236
1236
# assignment here is necessary.
1237
- v .from_dict (value [ key ] )
1237
+ v .from_dict (v )
1238
1238
elif meta .map_types and meta .map_types [1 ] == TYPE_MESSAGE :
1239
1239
v = getattr (self , field_name )
1240
1240
cls = self ._betterproto .cls_by_field [f"{ field_name } .value" ]
1241
- for k in value [key ]:
1242
- v [k ] = cls ().from_dict (value [key ][k ])
1241
+ target = value [key ]
1242
+ for k in target :
1243
+ v [k ] = cls ().from_dict (target [k ])
1243
1244
elif meta .proto_type in INT_64_TYPES :
1244
- v = (
1245
- [int (n ) for n in value [key ]]
1246
- if isinstance (value [key ], list )
1247
- else int (value [key ])
1248
- )
1245
+ v = [int (n ) for n in v ] if isinstance (v , list ) else int (v )
1249
1246
1250
1247
elif meta .proto_type == TYPE_BYTES :
1251
- v = (
1252
- [b64decode (n ) for n in value [key ]]
1253
- if isinstance (value [key ], list )
1254
- else b64decode (value [key ])
1255
- )
1248
+ v = [b64decode (n ) for n in v ] if isinstance (v , list ) else b64decode (v )
1256
1249
1257
1250
elif meta .proto_type == TYPE_ENUM :
1258
- enum_cls = self ._betterproto .cls_by_field [field_name ]
1251
+ enum_cls : Enum = self ._betterproto .cls_by_field [field_name ]
1259
1252
if isinstance (v , list ):
1260
1253
v = [enum_cls .from_string (e ) for e in v ]
1261
1254
elif isinstance (v , str ):
1262
1255
v = enum_cls .from_string (v )
1263
1256
elif meta .proto_type in {TYPE_FLOAT , TYPE_DOUBLE }:
1264
- if isinstance (value [key ], list ):
1265
- v = [_parse_float (n ) for n in value [key ]]
1266
- else :
1267
- v = _parse_float (value [key ])
1257
+ v = (
1258
+ [_parse_float (n ) for n in v ]
1259
+ if isinstance (v , list )
1260
+ else _parse_float (v )
1261
+ )
1268
1262
1269
1263
setattr (self , field_name , v )
1270
1264
return self
0 commit comments