@@ -154,6 +154,11 @@ def message_dict(message):
154154 value = message_list_list (field , value )
155155 else :
156156 value = message_dict (value )
157+ elif field .type in (field .TYPE_DOUBLE , field .TYPE_FLOAT ):
158+ if value .is_integer ():
159+ value = int (value )
160+ elif field .type == field .TYPE_BYTES :
161+ value = value .decode ()
157162 result [field .name ] = value
158163 return result
159164
@@ -173,6 +178,9 @@ def message_map_dict(descriptor, message):
173178 value = message_list_list (value )
174179 else :
175180 value = message_dict (value )
181+ elif descriptor .type in (descriptor .TYPE_DOUBLE , descriptor .TYPE_FLOAT ):
182+ if value .is_integer ():
183+ value = int (value )
176184 elif descriptor .type == descriptor .TYPE_BYTES :
177185 value = value .decode ()
178186 result [field ] = value
@@ -193,6 +201,9 @@ def message_list_list(descriptor, message):
193201 value = message_list_list (value )
194202 else :
195203 value = message_dict (value )
204+ elif descriptor .type in (descriptor .TYPE_DOUBLE , descriptor .TYPE_FLOAT ):
205+ if value .is_integer ():
206+ value = int (value )
196207 elif descriptor .type == descriptor .TYPE_BYTES :
197208 value = value .decode ()
198209 result .append (value )
@@ -205,6 +216,9 @@ def map_dict(message):
205216 value = map_dict (value )
206217 elif isinstance (value , ListValue ):
207218 value = list_list (value )
219+ elif isinstance (value , float ):
220+ if value .is_integer ():
221+ value = int (value )
208222 result [field ] = value
209223 return result
210224
@@ -215,5 +229,8 @@ def list_list(message):
215229 value = map_dict (value )
216230 elif isinstance (value , ListValue ):
217231 value = list_list (value )
232+ elif isinstance (value , float ):
233+ if value .is_integer ():
234+ value = int (value )
218235 result .append (value )
219236 return result
0 commit comments