From 2a8d9d1ef447e9f9c5834bc69e4fd75c954ba62a Mon Sep 17 00:00:00 2001 From: Emmanuel Onwuegbusi <34986076+emmakodes@users.noreply.github.com> Date: Wed, 13 Mar 2024 23:39:49 +0100 Subject: [PATCH] added name of Var to error message (#2827) --- reflex/utils/format.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/reflex/utils/format.py b/reflex/utils/format.py index 38852d7ea..5d554fe55 100644 --- a/reflex/utils/format.py +++ b/reflex/utils/format.py @@ -6,7 +6,7 @@ import inspect import json import os import re -from typing import TYPE_CHECKING, Any, List, Union +from typing import TYPE_CHECKING, Any, List, Optional, Union from reflex import constants from reflex.utils import exceptions, serializers, types @@ -603,11 +603,12 @@ def format_query_params(router_data: dict[str, Any]) -> dict[str, str]: return {k.replace("-", "_"): v for k, v in params.items()} -def format_state(value: Any) -> Any: +def format_state(value: Any, key: Optional[str] = None) -> Any: """Recursively format values in the given state. Args: value: The state to format. + key: The key associated with the value (optional). Returns: The formatted state. @@ -617,7 +618,7 @@ def format_state(value: Any) -> Any: """ # Handle dicts. if isinstance(value, dict): - return {k: format_state(v) for k, v in value.items()} + return {k: format_state(v, k) for k, v in value.items()} # Handle lists, sets, typles. if isinstance(value, types.StateIterBases): @@ -632,7 +633,14 @@ def format_state(value: Any) -> Any: if serialized is not None: return serialized - raise TypeError(f"No JSON serializer found for var {value} of type {type(value)}.") + if key is None: + raise TypeError( + f"No JSON serializer found for var {value} of type {type(value)}." + ) + else: + raise TypeError( + f"No JSON serializer found for State Var '{key}' of value {value} of type {type(value)}." + ) def format_state_name(state_name: str) -> str: