From 733cc4eb01ee93ab378c2d4d8da8e0f1e7d545c4 Mon Sep 17 00:00:00 2001 From: Evan Roman Date: Mon, 17 Mar 2025 23:22:02 -0500 Subject: [PATCH 01/18] add cmbd --- azure_functions_worker/bindings/datumdef.py | 2 ++ azure_functions_worker/bindings/meta.py | 21 ++++++--------------- python/test/worker.config.json | 2 +- 3 files changed, 9 insertions(+), 16 deletions(-) diff --git a/azure_functions_worker/bindings/datumdef.py b/azure_functions_worker/bindings/datumdef.py index 34fb9b0af..0e2a9c538 100644 --- a/azure_functions_worker/bindings/datumdef.py +++ b/azure_functions_worker/bindings/datumdef.py @@ -102,6 +102,8 @@ def from_typed_data(cls, td: protos.TypedData): val = td.collection_sint64 elif tt == 'model_binding_data': val = td.model_binding_data + elif tt == 'collection_model_binding_data': + val = td.collection_model_binding_data elif tt is None: return None else: diff --git a/azure_functions_worker/bindings/meta.py b/azure_functions_worker/bindings/meta.py index ae40ce398..473de3ab7 100644 --- a/azure_functions_worker/bindings/meta.py +++ b/azure_functions_worker/bindings/meta.py @@ -299,25 +299,16 @@ def deferred_bindings_decode(binding: typing.Any, If cache is empty or key doesn't exist, deferred_binding_type is None """ global deferred_bindings_cache - - if deferred_bindings_cache.get((pb.name, - pytype, - datum.value.content, - function_name), None) is not None: - return deferred_bindings_cache.get((pb.name, - pytype, - datum.value.content, - function_name)) + + cache_key = (pb.name, pytype, datum.value if datum.type == "collection_model_binding_data" else datum.value.content) + if deferred_bindings_cache.get(cache_key, None) is not None: + return deferred_bindings_cache.get(cache_key) else: deferred_binding_type = binding.decode(datum, trigger_metadata=metadata, pytype=pytype) - - deferred_bindings_cache[(pb.name, - pytype, - datum.value.content, - function_name)] = deferred_binding_type - return deferred_binding_type + deferred_bindings_cache[cache_key] = deferred_binding_type + return deferred_binding_type def check_deferred_bindings_enabled(param_anno: type, diff --git a/python/test/worker.config.json b/python/test/worker.config.json index a0b0ad3fe..ee83d73ee 100644 --- a/python/test/worker.config.json +++ b/python/test/worker.config.json @@ -2,7 +2,7 @@ "description":{ "language":"python", "extensions":[".py"], - "defaultExecutablePath":"python", + "defaultExecutablePath":"C:\\Users\\evanroman\\source\\repos\\azure-functions-python-worker\\.env\\Scripts\\python.exe", "defaultWorkerPath":"worker.py", "workerIndexing": "true" }, From 07c8a49ec78eec53da5cb4a9c71b1666279945e3 Mon Sep 17 00:00:00 2001 From: Evan Roman Date: Mon, 17 Mar 2025 23:55:02 -0500 Subject: [PATCH 02/18] Add --- azure_functions_worker/bindings/meta.py | 27 +++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/azure_functions_worker/bindings/meta.py b/azure_functions_worker/bindings/meta.py index 473de3ab7..608aff21b 100644 --- a/azure_functions_worker/bindings/meta.py +++ b/azure_functions_worker/bindings/meta.py @@ -299,16 +299,31 @@ def deferred_bindings_decode(binding: typing.Any, If cache is empty or key doesn't exist, deferred_binding_type is None """ global deferred_bindings_cache - - cache_key = (pb.name, pytype, datum.value if datum.type == "collection_model_binding_data" else datum.value.content) - if deferred_bindings_cache.get(cache_key, None) is not None: - return deferred_bindings_cache.get(cache_key) + + if datum.type == "collection_model_binding_data": + # Accumulates each model_binding_data content in collection_model_binding_data + content = b"".join(mbd.content for mbd in datum.value.model_binding_data) + else: + content = datum.value.content + + if deferred_bindings_cache.get((pb.name, + pytype, + content, + function_name), None) is not None: + return deferred_bindings_cache.get((pb.name, + pytype, + content, + function_name)) else: deferred_binding_type = binding.decode(datum, trigger_metadata=metadata, pytype=pytype) - deferred_bindings_cache[cache_key] = deferred_binding_type - return deferred_binding_type + + deferred_bindings_cache[(pb.name, + pytype, + content, + function_name)] = deferred_binding_type + return deferred_binding_type def check_deferred_bindings_enabled(param_anno: type, From 2c758e315e2e512d1667e875d61bb2db19fc17d3 Mon Sep 17 00:00:00 2001 From: Evan Roman Date: Thu, 27 Mar 2025 14:37:45 -0500 Subject: [PATCH 03/18] Add --- azure_functions_worker/bindings/meta.py | 4 ++-- python/test/worker.config.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/azure_functions_worker/bindings/meta.py b/azure_functions_worker/bindings/meta.py index 608aff21b..9c313aff1 100644 --- a/azure_functions_worker/bindings/meta.py +++ b/azure_functions_worker/bindings/meta.py @@ -123,7 +123,6 @@ def check_input_type_annotation(bind_name: str, is_deferred_binding) binding = get_binding(bind_name, is_deferred_binding) - return binding.check_input_type_annotation(pytype) @@ -133,6 +132,7 @@ def check_output_type_annotation(bind_name: str, pytype: type) -> bool: return OUTPUT_TYPE_CHECK_OVERRIDE_MAP[bind_name](bind_name, pytype) binding = get_binding(bind_name) + return binding.check_output_type_annotation(pytype) @@ -302,7 +302,7 @@ def deferred_bindings_decode(binding: typing.Any, if datum.type == "collection_model_binding_data": # Accumulates each model_binding_data content in collection_model_binding_data - content = b"".join(mbd.content for mbd in datum.value.model_binding_data) + content = "".join(str(mbd.content) for mbd in datum.value.model_binding_data) else: content = datum.value.content diff --git a/python/test/worker.config.json b/python/test/worker.config.json index ee83d73ee..a0b0ad3fe 100644 --- a/python/test/worker.config.json +++ b/python/test/worker.config.json @@ -2,7 +2,7 @@ "description":{ "language":"python", "extensions":[".py"], - "defaultExecutablePath":"C:\\Users\\evanroman\\source\\repos\\azure-functions-python-worker\\.env\\Scripts\\python.exe", + "defaultExecutablePath":"python", "defaultWorkerPath":"worker.py", "workerIndexing": "true" }, From b913fec21871b6e631c38fe113d4d289cbf60527 Mon Sep 17 00:00:00 2001 From: Evan Roman Date: Thu, 27 Mar 2025 14:38:51 -0500 Subject: [PATCH 04/18] Rm newline --- azure_functions_worker/bindings/meta.py | 1 - 1 file changed, 1 deletion(-) diff --git a/azure_functions_worker/bindings/meta.py b/azure_functions_worker/bindings/meta.py index 9c313aff1..d7c998227 100644 --- a/azure_functions_worker/bindings/meta.py +++ b/azure_functions_worker/bindings/meta.py @@ -132,7 +132,6 @@ def check_output_type_annotation(bind_name: str, pytype: type) -> bool: return OUTPUT_TYPE_CHECK_OVERRIDE_MAP[bind_name](bind_name, pytype) binding = get_binding(bind_name) - return binding.check_output_type_annotation(pytype) From c5ca0feaa428127a8ac960557a558a1a703e3d4b Mon Sep 17 00:00:00 2001 From: Evan Roman Date: Thu, 27 Mar 2025 15:07:02 -0500 Subject: [PATCH 05/18] Add tests --- .../test_deferred_bindings.py | 37 ++++++++++++++++++- tests/unittests/test_types.py | 21 +++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/tests/extension_tests/deferred_bindings_tests/test_deferred_bindings.py b/tests/extension_tests/deferred_bindings_tests/test_deferred_bindings.py index 1899f9e75..75bce97f9 100644 --- a/tests/extension_tests/deferred_bindings_tests/test_deferred_bindings.py +++ b/tests/extension_tests/deferred_bindings_tests/test_deferred_bindings.py @@ -40,6 +40,19 @@ def __init__(self, version: str, source: str, self.content = content +class MockCMBD: + def __init__(self, model_binding_data_list=None): + if model_binding_data_list is None: + model_binding_data_list = [] + self.model_binding_data_list = model_binding_data_list + + def add_model_binding_data(self, model_binding_data): + if isinstance(model_binding_data, MockMBD): + self.model_binding_data_list.append(model_binding_data) + else: + raise TypeError("Expected an instance of MockMBD") + + @unittest.skipIf(sys.version_info.minor <= 8, "The base extension" "is only supported for 3.9+.") class TestDeferredBindingsEnabled(testutils.AsyncTestCase): @@ -137,7 +150,7 @@ async def test_deferred_bindings_dual_enabled_log(self): "is only supported for 3.9+.") class TestDeferredBindingsHelpers(testutils.AsyncTestCase): - def test_deferred_bindings_enabled_decode(self): + def test_mbd_deferred_bindings_enabled_decode(self): binding = BlobClientConverter pb = protos.ParameterBinding(name='test', data=protos.TypedData( @@ -158,6 +171,28 @@ def test_deferred_bindings_enabled_decode(self): self.assertIsNotNone(obj) + def test_cmbd_deferred_bindings_enabled_decode(self): + binding = BlobClientConverter + pb = protos.ParameterBinding(name='test', + data=protos.TypedData( + string='test')) + sample_mbd = MockMBD(version="1.0", + source="AzureStorageBlobs", + content_type="application/json", + content="{\"Connection\":\"AzureWebJobsStorage\"," + "\"ContainerName\":" + "\"python-worker-tests\"," + "\"BlobName\":" + "\"test-blobclient-trigger.txt\"}") + sample_cmbd = MockCMBD([sample_mbd, sample_mbd]) + datum = datumdef.Datum(value=sample_cmbd, type='collection_model_binding_data') + + obj = meta.deferred_bindings_decode(binding=binding, pb=pb, + pytype=BlobClient, datum=datum, metadata={}, + function_name="test_function") + + self.assertIsNotNone(obj) + async def test_check_deferred_bindings_enabled(self): """ check_deferred_bindings_enabled checks if deferred bindings is enabled at fx diff --git a/tests/unittests/test_types.py b/tests/unittests/test_types.py index 963f26914..0607aac51 100644 --- a/tests/unittests/test_types.py +++ b/tests/unittests/test_types.py @@ -194,3 +194,24 @@ def test_model_binding_data_td_ok(self): mbd_datum = datumdef.Datum.from_typed_data(mock_mbd) self.assertEqual(mbd_datum.type, 'model_binding_data') + + def test_collection_model_binding_data_datum_ok(self): + sample_mbd = MockMBD(version="1.0", + source="AzureStorageBlobs", + content_type="application/json", + content="{\"Connection\":\"python-worker-tests\"," + "\"ContainerName\":\"test-blob\"," + "\"BlobName\":\"test.txt\"}") + sample_cmbd = [sample_mbd, sample_mbd] + + datum: bind_meta.Datum = bind_meta.Datum(value=sample_cmbd, + type='collection_model_binding_data') + + self.assertEqual(datum.value, sample_mbd) + self.assertEqual(datum.type, "collection_model_binding_data") + + def test_collection_model_binding_data_td_ok(self): + mock_cmbd = protos.TypedData(collection_model_binding_data={'version': '1.0'}) + cmbd_datum = datumdef.Datum.from_typed_data(mock_cmbd) + + self.assertEqual(cmbd_datum.type, 'collection_model_binding_data') \ No newline at end of file From f4d859007fd63590d5723300f3d99c6a002ec9bd Mon Sep 17 00:00:00 2001 From: Evan Roman Date: Thu, 27 Mar 2025 16:24:00 -0500 Subject: [PATCH 06/18] Fix cmbd --- .../test_deferred_bindings.py | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/tests/extension_tests/deferred_bindings_tests/test_deferred_bindings.py b/tests/extension_tests/deferred_bindings_tests/test_deferred_bindings.py index 75bce97f9..bbb219d7d 100644 --- a/tests/extension_tests/deferred_bindings_tests/test_deferred_bindings.py +++ b/tests/extension_tests/deferred_bindings_tests/test_deferred_bindings.py @@ -5,6 +5,7 @@ import azure.functions as func from tests.utils import testutils +from typing import List from azure_functions_worker import protos from azure_functions_worker.bindings import datumdef, meta @@ -41,16 +42,9 @@ def __init__(self, version: str, source: str, class MockCMBD: - def __init__(self, model_binding_data_list=None): - if model_binding_data_list is None: - model_binding_data_list = [] - self.model_binding_data_list = model_binding_data_list - - def add_model_binding_data(self, model_binding_data): - if isinstance(model_binding_data, MockMBD): - self.model_binding_data_list.append(model_binding_data) - else: - raise TypeError("Expected an instance of MockMBD") + # Follow same format from host with dot notation + def __init__(self, model_binding_data_list: List[MockMBD]): + self.model_binding_data = model_binding_data_list @unittest.skipIf(sys.version_info.minor <= 8, "The base extension" From 0206ddde10ef0e602c5f37719843e3a487dcc9d8 Mon Sep 17 00:00:00 2001 From: Evan Roman Date: Thu, 27 Mar 2025 17:08:02 -0500 Subject: [PATCH 07/18] Fix test --- tests/unittests/test_types.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/unittests/test_types.py b/tests/unittests/test_types.py index 0607aac51..a0a52c02b 100644 --- a/tests/unittests/test_types.py +++ b/tests/unittests/test_types.py @@ -207,11 +207,13 @@ def test_collection_model_binding_data_datum_ok(self): datum: bind_meta.Datum = bind_meta.Datum(value=sample_cmbd, type='collection_model_binding_data') - self.assertEqual(datum.value, sample_mbd) + self.assertEqual(datum.value, sample_cmbd) self.assertEqual(datum.type, "collection_model_binding_data") def test_collection_model_binding_data_td_ok(self): - mock_cmbd = protos.TypedData(collection_model_binding_data={'version': '1.0'}) + mock_cmbd = protos.TypedData( + collection_model_binding_data={'model_binding_data': [{'version': '1.0'}]} + ) cmbd_datum = datumdef.Datum.from_typed_data(mock_cmbd) self.assertEqual(cmbd_datum.type, 'collection_model_binding_data') \ No newline at end of file From 9b881944517279c00ca750a60804c0f01fdbc29c Mon Sep 17 00:00:00 2001 From: Evan Roman Date: Thu, 27 Mar 2025 17:35:54 -0500 Subject: [PATCH 08/18] Lint --- tests/unittests/test_types.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unittests/test_types.py b/tests/unittests/test_types.py index a0a52c02b..406510c22 100644 --- a/tests/unittests/test_types.py +++ b/tests/unittests/test_types.py @@ -216,4 +216,4 @@ def test_collection_model_binding_data_td_ok(self): ) cmbd_datum = datumdef.Datum.from_typed_data(mock_cmbd) - self.assertEqual(cmbd_datum.type, 'collection_model_binding_data') \ No newline at end of file + self.assertEqual(cmbd_datum.type, 'collection_model_binding_data') From 5359b17cc27ff6477263216e8b52dfca88a1406c Mon Sep 17 00:00:00 2001 From: Evan Roman Date: Thu, 27 Mar 2025 19:27:57 -0500 Subject: [PATCH 09/18] Rm --- .../test_deferred_bindings.py | 22 ------------------- 1 file changed, 22 deletions(-) diff --git a/tests/extension_tests/deferred_bindings_tests/test_deferred_bindings.py b/tests/extension_tests/deferred_bindings_tests/test_deferred_bindings.py index bbb219d7d..2268d63e1 100644 --- a/tests/extension_tests/deferred_bindings_tests/test_deferred_bindings.py +++ b/tests/extension_tests/deferred_bindings_tests/test_deferred_bindings.py @@ -165,28 +165,6 @@ def test_mbd_deferred_bindings_enabled_decode(self): self.assertIsNotNone(obj) - def test_cmbd_deferred_bindings_enabled_decode(self): - binding = BlobClientConverter - pb = protos.ParameterBinding(name='test', - data=protos.TypedData( - string='test')) - sample_mbd = MockMBD(version="1.0", - source="AzureStorageBlobs", - content_type="application/json", - content="{\"Connection\":\"AzureWebJobsStorage\"," - "\"ContainerName\":" - "\"python-worker-tests\"," - "\"BlobName\":" - "\"test-blobclient-trigger.txt\"}") - sample_cmbd = MockCMBD([sample_mbd, sample_mbd]) - datum = datumdef.Datum(value=sample_cmbd, type='collection_model_binding_data') - - obj = meta.deferred_bindings_decode(binding=binding, pb=pb, - pytype=BlobClient, datum=datum, metadata={}, - function_name="test_function") - - self.assertIsNotNone(obj) - async def test_check_deferred_bindings_enabled(self): """ check_deferred_bindings_enabled checks if deferred bindings is enabled at fx From 1274e0364cc97bf156580094a8d6e6e9726f01a6 Mon Sep 17 00:00:00 2001 From: Evan Roman Date: Fri, 28 Mar 2025 09:57:28 -0500 Subject: [PATCH 10/18] Rm --- .../deferred_bindings_tests/test_deferred_bindings.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/tests/extension_tests/deferred_bindings_tests/test_deferred_bindings.py b/tests/extension_tests/deferred_bindings_tests/test_deferred_bindings.py index 2268d63e1..1ea1f4104 100644 --- a/tests/extension_tests/deferred_bindings_tests/test_deferred_bindings.py +++ b/tests/extension_tests/deferred_bindings_tests/test_deferred_bindings.py @@ -41,12 +41,6 @@ def __init__(self, version: str, source: str, self.content = content -class MockCMBD: - # Follow same format from host with dot notation - def __init__(self, model_binding_data_list: List[MockMBD]): - self.model_binding_data = model_binding_data_list - - @unittest.skipIf(sys.version_info.minor <= 8, "The base extension" "is only supported for 3.9+.") class TestDeferredBindingsEnabled(testutils.AsyncTestCase): From 6e5b6ca6954d1baee713d670bcc619ebd747d6b8 Mon Sep 17 00:00:00 2001 From: Evan Roman Date: Fri, 28 Mar 2025 10:33:36 -0500 Subject: [PATCH 11/18] Add back newline --- azure_functions_worker/bindings/meta.py | 1 + 1 file changed, 1 insertion(+) diff --git a/azure_functions_worker/bindings/meta.py b/azure_functions_worker/bindings/meta.py index d7c998227..d5781f9e1 100644 --- a/azure_functions_worker/bindings/meta.py +++ b/azure_functions_worker/bindings/meta.py @@ -123,6 +123,7 @@ def check_input_type_annotation(bind_name: str, is_deferred_binding) binding = get_binding(bind_name, is_deferred_binding) + return binding.check_input_type_annotation(pytype) From ab2a745cfdb4daaf67572390cdac135ee5dbd253 Mon Sep 17 00:00:00 2001 From: Evan Roman Date: Fri, 28 Mar 2025 10:34:17 -0500 Subject: [PATCH 12/18] rm ws --- azure_functions_worker/bindings/meta.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure_functions_worker/bindings/meta.py b/azure_functions_worker/bindings/meta.py index d5781f9e1..36bced4dd 100644 --- a/azure_functions_worker/bindings/meta.py +++ b/azure_functions_worker/bindings/meta.py @@ -123,7 +123,7 @@ def check_input_type_annotation(bind_name: str, is_deferred_binding) binding = get_binding(bind_name, is_deferred_binding) - + return binding.check_input_type_annotation(pytype) From f69539158cf009674ac7b6c8de525e40e3b7ccfc Mon Sep 17 00:00:00 2001 From: Evan Roman Date: Fri, 28 Mar 2025 10:38:12 -0500 Subject: [PATCH 13/18] Rm list --- .../deferred_bindings_tests/test_deferred_bindings.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/extension_tests/deferred_bindings_tests/test_deferred_bindings.py b/tests/extension_tests/deferred_bindings_tests/test_deferred_bindings.py index 1ea1f4104..c527cb680 100644 --- a/tests/extension_tests/deferred_bindings_tests/test_deferred_bindings.py +++ b/tests/extension_tests/deferred_bindings_tests/test_deferred_bindings.py @@ -5,7 +5,6 @@ import azure.functions as func from tests.utils import testutils -from typing import List from azure_functions_worker import protos from azure_functions_worker.bindings import datumdef, meta From 797534c802854cf7a5dd3f42325eabc2e275609b Mon Sep 17 00:00:00 2001 From: Evan Roman Date: Mon, 31 Mar 2025 00:03:37 -0500 Subject: [PATCH 14/18] Rm cmbd from cache --- azure_functions_worker/bindings/meta.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/azure_functions_worker/bindings/meta.py b/azure_functions_worker/bindings/meta.py index 36bced4dd..1231d86db 100644 --- a/azure_functions_worker/bindings/meta.py +++ b/azure_functions_worker/bindings/meta.py @@ -300,19 +300,19 @@ def deferred_bindings_decode(binding: typing.Any, """ global deferred_bindings_cache + # Only applies to Event Hub and Service Bus - cannot cache if datum.type == "collection_model_binding_data": - # Accumulates each model_binding_data content in collection_model_binding_data - content = "".join(str(mbd.content) for mbd in datum.value.model_binding_data) - else: - content = datum.value.content + return binding.decode(datum, + trigger_metadata=metadata, + pytype=pytype) if deferred_bindings_cache.get((pb.name, pytype, - content, + datum.value.content, function_name), None) is not None: return deferred_bindings_cache.get((pb.name, pytype, - content, + datum.value.content, function_name)) else: deferred_binding_type = binding.decode(datum, @@ -321,7 +321,7 @@ def deferred_bindings_decode(binding: typing.Any, deferred_bindings_cache[(pb.name, pytype, - content, + datum.value.content, function_name)] = deferred_binding_type return deferred_binding_type From 83fc793f454e299cfb6914922210b6233634c88d Mon Sep 17 00:00:00 2001 From: Evan Roman Date: Mon, 31 Mar 2025 10:28:57 -0500 Subject: [PATCH 15/18] Avoid caching --- azure_functions_worker/bindings/meta.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/azure_functions_worker/bindings/meta.py b/azure_functions_worker/bindings/meta.py index 1231d86db..7f7682b7a 100644 --- a/azure_functions_worker/bindings/meta.py +++ b/azure_functions_worker/bindings/meta.py @@ -301,7 +301,8 @@ def deferred_bindings_decode(binding: typing.Any, global deferred_bindings_cache # Only applies to Event Hub and Service Bus - cannot cache - if datum.type == "collection_model_binding_data": + if (datum.value.source == "AzureEventHubsEventData" + or datum.value.source == "AzureServiceBusReceivedMessage"): return binding.decode(datum, trigger_metadata=metadata, pytype=pytype) From e991156c9595071d8748f158cf7990d277f6a966 Mon Sep 17 00:00:00 2001 From: Evan Roman Date: Mon, 31 Mar 2025 10:31:01 -0500 Subject: [PATCH 16/18] Keep cmbd check --- azure_functions_worker/bindings/meta.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/azure_functions_worker/bindings/meta.py b/azure_functions_worker/bindings/meta.py index 7f7682b7a..9518a0678 100644 --- a/azure_functions_worker/bindings/meta.py +++ b/azure_functions_worker/bindings/meta.py @@ -301,7 +301,8 @@ def deferred_bindings_decode(binding: typing.Any, global deferred_bindings_cache # Only applies to Event Hub and Service Bus - cannot cache - if (datum.value.source == "AzureEventHubsEventData" + if (datum.type == "collection_model_binding_data" + or datum.value.source == "AzureEventHubsEventData" or datum.value.source == "AzureServiceBusReceivedMessage"): return binding.decode(datum, trigger_metadata=metadata, From 6ee6a9146b124e5af311aad67f7c07ec16de425d Mon Sep 17 00:00:00 2001 From: Evan Roman Date: Mon, 31 Mar 2025 10:33:28 -0500 Subject: [PATCH 17/18] Add comment --- azure_functions_worker/bindings/meta.py | 1 + 1 file changed, 1 insertion(+) diff --git a/azure_functions_worker/bindings/meta.py b/azure_functions_worker/bindings/meta.py index 9518a0678..68e22c55a 100644 --- a/azure_functions_worker/bindings/meta.py +++ b/azure_functions_worker/bindings/meta.py @@ -301,6 +301,7 @@ def deferred_bindings_decode(binding: typing.Any, global deferred_bindings_cache # Only applies to Event Hub and Service Bus - cannot cache + # These types will always produce different content and are not clients if (datum.type == "collection_model_binding_data" or datum.value.source == "AzureEventHubsEventData" or datum.value.source == "AzureServiceBusReceivedMessage"): From c0235e9db4265b5e6752b4bf82d988df953b1eef Mon Sep 17 00:00:00 2001 From: Evan Roman Date: Mon, 31 Mar 2025 10:38:10 -0500 Subject: [PATCH 18/18] Lint --- azure_functions_worker/bindings/meta.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure_functions_worker/bindings/meta.py b/azure_functions_worker/bindings/meta.py index 68e22c55a..5d84a06f5 100644 --- a/azure_functions_worker/bindings/meta.py +++ b/azure_functions_worker/bindings/meta.py @@ -303,7 +303,7 @@ def deferred_bindings_decode(binding: typing.Any, # Only applies to Event Hub and Service Bus - cannot cache # These types will always produce different content and are not clients if (datum.type == "collection_model_binding_data" - or datum.value.source == "AzureEventHubsEventData" + or datum.value.source == "AzureEventHubsEventData" or datum.value.source == "AzureServiceBusReceivedMessage"): return binding.decode(datum, trigger_metadata=metadata,