From f4aa122950044bb2f583b05a5dc40f51002b4a5b Mon Sep 17 00:00:00 2001 From: Khaleel Al-Adhami Date: Fri, 17 Jan 2025 15:24:32 -0800 Subject: [PATCH] don't delete thomas code that's rude --- reflex/vars/base.py | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/reflex/vars/base.py b/reflex/vars/base.py index 521bdc997..b0f27bd64 100644 --- a/reflex/vars/base.py +++ b/reflex/vars/base.py @@ -51,7 +51,7 @@ from typing_extensions import ( from reflex import constants from reflex.base import Base from reflex.constants.compiler import Hooks -from reflex.utils import console, imports, serializers, types +from reflex.utils import console, exceptions, imports, serializers, types from reflex.utils.exceptions import ( VarAttributeError, VarDependencyError, @@ -243,6 +243,9 @@ class VarData: Returns: The merged var data object. + + Raises: + ReflexError: If the positions of the var data objects are different. """ all_var_datas = list(filter(None, all)) @@ -271,15 +274,36 @@ class VarData: *(var_data.imports for var_data in all_var_datas) ) + deps = [dep for var_data in all_var_datas for dep in var_data.deps] + + positions = list( + { + var_data.position + for var_data in all_var_datas + if var_data.position is not None + } + ) + components = tuple( component for var_data in all_var_datas for component in var_data.components ) + if positions: + if len(positions) > 1: + raise exceptions.ReflexError( + f"Cannot merge var data with different positions: {positions}" + ) + position = positions[0] + else: + position = None + return VarData( state=state, field_name=field_name, imports=_imports, hooks=hooks, + deps=deps, + position=position, components=components, )