@@ -299,16 +299,31 @@ def deferred_bindings_decode(binding: typing.Any,
299
299
If cache is empty or key doesn't exist, deferred_binding_type is None
300
300
"""
301
301
global deferred_bindings_cache
302
-
303
- cache_key = (pb .name , pytype , datum .value if datum .type == "collection_model_binding_data" else datum .value .content )
304
- if deferred_bindings_cache .get (cache_key , None ) is not None :
305
- return deferred_bindings_cache .get (cache_key )
302
+
303
+ if datum .type == "collection_model_binding_data" :
304
+ # Accumulates each model_binding_data content in collection_model_binding_data
305
+ content = b"" .join (mbd .content for mbd in datum .value .model_binding_data )
306
+ else :
307
+ content = datum .value .content
308
+
309
+ if deferred_bindings_cache .get ((pb .name ,
310
+ pytype ,
311
+ content ,
312
+ function_name ), None ) is not None :
313
+ return deferred_bindings_cache .get ((pb .name ,
314
+ pytype ,
315
+ content ,
316
+ function_name ))
306
317
else :
307
318
deferred_binding_type = binding .decode (datum ,
308
319
trigger_metadata = metadata ,
309
320
pytype = pytype )
310
- deferred_bindings_cache [cache_key ] = deferred_binding_type
311
- return deferred_binding_type
321
+
322
+ deferred_bindings_cache [(pb .name ,
323
+ pytype ,
324
+ content ,
325
+ function_name )] = deferred_binding_type
326
+ return deferred_binding_type
312
327
313
328
314
329
def check_deferred_bindings_enabled (param_anno : type ,
0 commit comments