From c057f2e3f35473c70759d55bb08eed0d847fd3b8 Mon Sep 17 00:00:00 2001 From: Benedikt Bartscher Date: Thu, 29 Feb 2024 01:17:34 +0100 Subject: [PATCH] minor pydantic fixups --- reflex/base.py | 2 +- reflex/components/component.py | 4 ++++ reflex/state.py | 1 + reflex/vars.py | 5 +++-- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/reflex/base.py b/reflex/base.py index c7694204c..1b282e83f 100644 --- a/reflex/base.py +++ b/reflex/base.py @@ -2,7 +2,7 @@ from __future__ import annotations import os -from typing import Any, List, Type, Dict, Optional +from typing import Any, List, Type import pydantic from pydantic import BaseModel diff --git a/reflex/components/component.py b/reflex/components/component.py index bdaed586c..ac4cdee0d 100644 --- a/reflex/components/component.py +++ b/reflex/components/component.py @@ -21,6 +21,8 @@ from typing import ( Union, ) +from pydantic.fields import ModelPrivateAttr + from reflex.base import Base from reflex.compiler.templates import STATEFUL_COMPONENT from reflex.components.tags import Tag @@ -226,6 +228,8 @@ class Component(BaseComponent, ABC): inherited_rename_props = {} for parent in reversed(cls.mro()): if issubclass(parent, Component) and parent._rename_props: + if isinstance(parent._rename_props, ModelPrivateAttr): + parent._rename_props = parent._rename_props.default inherited_rename_props.update(parent._rename_props) cls._rename_props = inherited_rename_props diff --git a/reflex/state.py b/reflex/state.py index 0b00f16fb..cb726f03f 100644 --- a/reflex/state.py +++ b/reflex/state.py @@ -2080,6 +2080,7 @@ class StateManagerMemory(StateManager): class Config: """The Pydantic config.""" + # TODO: pydantic v2 fields = { "_states_locks": {"exclude": True}, } diff --git a/reflex/vars.py b/reflex/vars.py index 725efdec8..e0b94da78 100644 --- a/reflex/vars.py +++ b/reflex/vars.py @@ -31,6 +31,7 @@ from typing import ( get_origin, get_type_hints, ) + import pydantic_core from reflex import constants @@ -248,8 +249,8 @@ def _decode_var(value: str) -> tuple[VarData | None, str]: def json_loads(s): try: return VarData.model_validate(s) - except pydantic_core.ValidationError: - raise ValueError(f"Invalid VarData: {s}") + except pydantic_core.ValidationError as e: + raise ValueError(f"Invalid VarData: {s}") from e # return VarData.model_validate(var_data_config.json_loads(f'"{s}"')) # Compile regex for finding reflex var tags.