From 5e52300a0b91dbac71f667777ec68af5c916395f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fred=20Lef=C3=A9v=C3=A8re-Laoide?= <90181748+FredLL-Avaiga@users.noreply.github.com> Date: Wed, 28 Feb 2024 13:01:49 +0100 Subject: [PATCH] Improve error message readability (#895) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Improve error message readability resolves #560 * aurtaugraf --------- Co-authored-by: Fred Lefévère-Laoide --- taipy/gui/gui.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/taipy/gui/gui.py b/taipy/gui/gui.py index 9c91489c21..64832e2d61 100644 --- a/taipy/gui/gui.py +++ b/taipy/gui/gui.py @@ -623,7 +623,23 @@ def _manage_message(self, msg_type: _WsType, message: dict) -> None: self.__handle_ws_app_id(message) self.__send_ack(message.get("ack_id")) except Exception as e: # pragma: no cover - _warn(f"Decoding Message has failed: {message}", e) + if isinstance(e, AttributeError) and (name := message.get("name")): + try: + names = self._get_real_var_name(name) + var_name = names[0] if isinstance(names, tuple) else names + var_context = names[1] if isinstance(names, tuple) else None + if var_name.startswith("tpec_"): + var_name = var_name[5:] + if var_name.startswith("TpExPr_"): + var_name = var_name[7:] + _warn( + f"A problem occurred while resolving variable '{var_name}'" + + (f" in module '{var_context}'." if var_context else ".") + ) + except Exception as e1: + _warn(f"Resolving name '{name}' failed", e1) + else: + _warn(f"Decoding Message has failed: {message}", e) def __front_end_update( self, @@ -2017,7 +2033,7 @@ def _get_page(self, page_name: str): def _bind_custom_page_variables(self, page: CustomPage, client_id: t.Optional[str]): """Handle the bindings of custom page variables""" - with self.get_flask_app().app_context() if has_app_context() else contextlib.nullcontext(): # type: ignore[attr-defined] + with self.get_flask_app().app_context() if has_app_context() else contextlib.nullcontext(): # type: ignore[attr-defined] self.__set_client_id_in_context(client_id) with self._set_locals_context(page._get_module_name()): for k in self._get_locals_bind().keys():