From 579c5e8b588628e55aaea8d1f4e3190cff80d74b Mon Sep 17 00:00:00 2001 From: Jack Q Date: Thu, 27 Jun 2024 14:04:27 +0800 Subject: [PATCH] fix missing intermediate events (#373) --- taskweaver/utils/json_parser.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/taskweaver/utils/json_parser.py b/taskweaver/utils/json_parser.py index 96a1c632..c9b6c0ea 100644 --- a/taskweaver/utils/json_parser.py +++ b/taskweaver/utils/json_parser.py @@ -358,6 +358,7 @@ def process_ev_queue() -> Iterable[ParserEvent]: for ev in result: if not ev.is_end: + yield ev continue evt = ev.event val = ev.value @@ -468,15 +469,20 @@ def parse_json(token_stream: Iterable[str], skip_after_root: bool = False) -> An skip_after_root=skip_after_root, include_all_values=True, ): - if ev.prefix == "" and ev.event in [ - # all value closing events - "end_map", - "end_array", - "number", - "string", - "boolean", - "null", - ]: + if ( + ev.prefix == "" + and ev.is_end + and ev.event + in [ + # all value closing events + "end_map", + "end_array", + "number", + "string", + "boolean", + "null", + ] + ): ev_queue.append(ev) assert len(ev_queue) == 1 return ev_queue[0].value