From d02d92474c59c6b85b9ff7c1677bbfe9bf989d2a Mon Sep 17 00:00:00 2001 From: qinkaiwu Date: Fri, 25 Aug 2023 13:26:58 +0800 Subject: [PATCH] Use try-finally to ensure FILTER_RESULT callback is unregistered --- knack/query.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/knack/query.py b/knack/query.py index 3515804..a8e320a 100644 --- a/knack/query.py +++ b/knack/query.py @@ -42,9 +42,11 @@ def handle_query_parameter(cli_ctx, **kwargs): if query_expression: def filter_output(cli_ctx, **kwargs): from jmespath import Options - kwargs['event_data']['result'] = query_expression.search( - kwargs['event_data']['result'], Options(collections.OrderedDict)) - cli_ctx.unregister_event(EVENT_INVOKER_FILTER_RESULT, filter_output) + try: + kwargs['event_data']['result'] = query_expression.search( + kwargs['event_data']['result'], Options(collections.OrderedDict)) + finally: + cli_ctx.unregister_event(EVENT_INVOKER_FILTER_RESULT, filter_output) cli_ctx.register_event(EVENT_INVOKER_FILTER_RESULT, filter_output) cli_ctx.invocation.data['query_active'] = True