From 69be852f37205cdb91f0563923fda60b4518fc17 Mon Sep 17 00:00:00 2001 From: Victoria Hall Date: Thu, 11 Sep 2025 14:02:38 -0500 Subject: [PATCH 1/2] settlement decorator changes --- azure/functions/decorators/function_app.py | 8 ++++ tests/decorators/test_servicebus.py | 52 ++++++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/azure/functions/decorators/function_app.py b/azure/functions/decorators/function_app.py index 20961621..516e9603 100644 --- a/azure/functions/decorators/function_app.py +++ b/azure/functions/decorators/function_app.py @@ -673,6 +673,7 @@ def service_bus_queue_trigger( access_rights: Optional[Union[AccessRights, str]] = None, is_sessions_enabled: Optional[bool] = None, cardinality: Optional[Union[Cardinality, str]] = None, + auto_complete_messages: Optional[bool] = None, **kwargs: Any) -> Callable[..., Any]: """ The `on_service_bus_queue_change` decorator adds :class:`ServiceBusQueueTrigger` to the @@ -697,6 +698,8 @@ def service_bus_queue_trigger( :param is_sessions_enabled: Set to True if connecting to a session-aware queue or subscription. :param cardinality: Set to "many" to enable batching. + :param auto_complete_messages: Indicates whether the message should be automatically + completed. :return: Decorator function. """ @@ -717,6 +720,7 @@ def decorator(): is_sessions_enabled=is_sessions_enabled, cardinality=parse_singular_param_to_enum(cardinality, Cardinality), + auto_complete_messages=auto_complete_messages, **kwargs)) return fb @@ -734,6 +738,7 @@ def service_bus_topic_trigger( access_rights: Optional[Union[AccessRights, str]] = None, is_sessions_enabled: Optional[bool] = None, cardinality: Optional[Union[Cardinality, str]] = None, + auto_complete_messages: Optional[bool] = None, **kwargs: Any) -> Callable[..., Any]: """ The `on_service_bus_topic_change` decorator adds :class:`ServiceBusTopicTrigger` to the @@ -759,6 +764,8 @@ def service_bus_topic_trigger( :param is_sessions_enabled: Set to True if connecting to a session-aware queue or subscription. :param cardinality: Set to "many" to enable batching. + :param auto_complete_messages: Indicates whether the message should be automatically + completed. :return: Decorator function. """ @@ -780,6 +787,7 @@ def decorator(): is_sessions_enabled=is_sessions_enabled, cardinality=parse_singular_param_to_enum(cardinality, Cardinality), + auto_complete_messages=auto_complete_messages, **kwargs)) return fb diff --git a/tests/decorators/test_servicebus.py b/tests/decorators/test_servicebus.py index 1f088f92..32afbc78 100644 --- a/tests/decorators/test_servicebus.py +++ b/tests/decorators/test_servicebus.py @@ -34,6 +34,31 @@ def test_service_bus_queue_trigger_valid_creation(self): "isSessionsEnabled": True, "cardinality": Cardinality.ONE }) + + def test_service_bus_queue_trigger_autocomplete_valid_creation(self): + trigger = ServiceBusQueueTrigger(name="req", connection="dummy_conn", + queue_name="dummy_queue", + data_type=DataType.UNDEFINED, + access_rights=AccessRights.MANAGE, + is_sessions_enabled=True, + cardinality=Cardinality.ONE, + auto_complete_messages=True, + dummy_field="dummy") + + self.assertEqual(trigger.get_binding_name(), "serviceBusTrigger") + self.assertEqual(trigger.get_dict_repr(), { + "type": SERVICE_BUS_TRIGGER, + "direction": BindingDirection.IN, + 'dummyField': 'dummy', + "name": "req", + "connection": "dummy_conn", + "queueName": "dummy_queue", + "dataType": DataType.UNDEFINED, + "accessRights": AccessRights.MANAGE, + "isSessionsEnabled": True, + "cardinality": Cardinality.ONE, + "autoCompleteMessages": True + }) def test_service_bus_queue_output_valid_creation(self): service_bus_queue_output = ServiceBusQueueOutput( @@ -82,6 +107,33 @@ def test_service_bus_topic_trigger_valid_creation(self): "cardinality": Cardinality.ONE }) + def test_service_bus_topic_trigger_autocomplete_valid_creation(self): + trigger = ServiceBusTopicTrigger(name="req", connection="dummy_conn", + topic_name="dummy_topic", + subscription_name="dummy_sub", + data_type=DataType.UNDEFINED, + access_rights=AccessRights.MANAGE, + is_sessions_enabled=True, + cardinality=Cardinality.ONE, + auto_complete_messages=True, + dummy_field="dummy") + + self.assertEqual(trigger.get_binding_name(), "serviceBusTrigger") + self.assertEqual(trigger.get_dict_repr(), { + "type": SERVICE_BUS_TRIGGER, + "direction": BindingDirection.IN, + 'dummyField': 'dummy', + "name": "req", + "connection": "dummy_conn", + "topicName": "dummy_topic", + "subscriptionName": "dummy_sub", + "dataType": DataType.UNDEFINED, + "accessRights": AccessRights.MANAGE, + "isSessionsEnabled": True, + "cardinality": Cardinality.ONE, + "autoCompleteMessages": True + }) + def test_service_bus_topic_output_valid_creation(self): output = ServiceBusTopicOutput(name="res", connection="dummy_conn", topic_name="dummy_topic", From b9ef15ada89858ab177c8e2576d0b0b624fab7fd Mon Sep 17 00:00:00 2001 From: Victoria Hall Date: Thu, 11 Sep 2025 14:36:49 -0500 Subject: [PATCH 2/2] lint --- tests/decorators/test_servicebus.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/decorators/test_servicebus.py b/tests/decorators/test_servicebus.py index 32afbc78..57fa41c8 100644 --- a/tests/decorators/test_servicebus.py +++ b/tests/decorators/test_servicebus.py @@ -34,7 +34,7 @@ def test_service_bus_queue_trigger_valid_creation(self): "isSessionsEnabled": True, "cardinality": Cardinality.ONE }) - + def test_service_bus_queue_trigger_autocomplete_valid_creation(self): trigger = ServiceBusQueueTrigger(name="req", connection="dummy_conn", queue_name="dummy_queue",