Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion reflex/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -1443,7 +1443,7 @@ def _submit_work(fn: Callable[..., tuple[str, str]], *args, **kwargs):
custom_components_output,
custom_components_result,
custom_components_imports,
) = compiler.compile_components(set(CUSTOM_COMPONENTS.values()))
) = compiler.compile_components(dict.fromkeys(CUSTOM_COMPONENTS.values()))
compile_results.append((custom_components_output, custom_components_result))
all_imports.update(custom_components_imports)

Expand Down
4 changes: 2 additions & 2 deletions reflex/compiler/compiler.py
Original file line number Diff line number Diff line change
Expand Up @@ -326,7 +326,7 @@ def _compile_component(component: Component | StatefulComponent) -> str:


def _compile_components(
components: set[CustomComponent],
components: Iterable[CustomComponent],
) -> tuple[str, dict[str, list[ImportVar]]]:
"""Compile the components.

Expand Down Expand Up @@ -572,7 +572,7 @@ def compile_page(


def compile_components(
components: set[CustomComponent],
components: Iterable[CustomComponent],
) -> tuple[str, str, dict[str, list[ImportVar]]]:
"""Compile the custom components.

Expand Down
2 changes: 1 addition & 1 deletion reflex/compiler/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ def compile_import_statement(fields: list[ImportVar]) -> tuple[str, list[str]]:
default = next(iter({field.name for field in defaults}), "")
rest = {field.name for field in fields_set - defaults}

return default, list(rest)
return default, sorted(rest)


def validate_imports(import_dict: ParsedImportDict):
Expand Down
36 changes: 14 additions & 22 deletions reflex/components/component.py
Original file line number Diff line number Diff line change
Expand Up @@ -2261,7 +2261,9 @@ def _get_hook_deps(hook: str) -> list[str]:
return [var_name]

@staticmethod
def _get_deps_from_event_trigger(event: EventChain | EventSpec | Var) -> set[str]:
def _get_deps_from_event_trigger(
event: EventChain | EventSpec | Var,
) -> dict[str, None]:
"""Get the dependencies accessed by event triggers.

Args:
Expand All @@ -2271,7 +2273,7 @@ def _get_deps_from_event_trigger(event: EventChain | EventSpec | Var) -> set[str
The dependencies accessed by the event triggers.
"""
events: list = [event]
deps = set()
deps = {}

if isinstance(event, EventChain):
events.extend(event.events)
Expand All @@ -2282,7 +2284,7 @@ def _get_deps_from_event_trigger(event: EventChain | EventSpec | Var) -> set[str
for a in arg:
var_datas = VarData.merge(a._get_all_var_data())
if var_datas and var_datas.deps is not None:
deps |= {str(dep) for dep in var_datas.deps}
deps |= {str(dep): None for dep in var_datas.deps}
return deps

@classmethod
Expand Down Expand Up @@ -2499,27 +2501,23 @@ def empty_component() -> Component:
return Bare.create("")


def render_dict_to_var(tag: dict | Component | str, imported_names: set[str]) -> Var:
def render_dict_to_var(tag: dict | Component | str) -> Var:
"""Convert a render dict to a Var.

Args:
tag: The render dict.
imported_names: The names of the imported components.

Returns:
The Var.
"""
if not isinstance(tag, dict):
if isinstance(tag, Component):
return render_dict_to_var(tag.render(), imported_names)
return render_dict_to_var(tag.render())
return Var.create(tag)

if "iterable" in tag:
function_return = LiteralArrayVar.create(
[
render_dict_to_var(child.render(), imported_names)
for child in tag["children"]
]
[render_dict_to_var(child.render()) for child in tag["children"]]
)

func = ArgsFunctionOperation.create(
Expand All @@ -2537,7 +2535,7 @@ def render_dict_to_var(tag: dict | Component | str, imported_names: set[str]) ->
if tag["name"] == "match":
element = tag["cond"]

conditionals = render_dict_to_var(tag["default"], imported_names)
conditionals = render_dict_to_var(tag["default"])

for case in tag["match_cases"][::-1]:
condition = case[0].to_string() == element.to_string()
Expand All @@ -2546,7 +2544,7 @@ def render_dict_to_var(tag: dict | Component | str, imported_names: set[str]) ->

conditionals = ternary_operation(
condition,
render_dict_to_var(case[-1], imported_names),
render_dict_to_var(case[-1]),
conditionals,
)

Expand All @@ -2555,8 +2553,8 @@ def render_dict_to_var(tag: dict | Component | str, imported_names: set[str]) ->
if "cond" in tag:
return ternary_operation(
tag["cond"],
render_dict_to_var(tag["true_value"], imported_names),
render_dict_to_var(tag["false_value"], imported_names)
render_dict_to_var(tag["true_value"]),
render_dict_to_var(tag["false_value"])
if tag["false_value"] is not None
else LiteralNoneVar.create(),
)
Expand All @@ -2574,7 +2572,7 @@ def render_dict_to_var(tag: dict | Component | str, imported_names: set[str]) ->
tag_name,
props,
*([Var(contents)] if contents is not None else []),
*[render_dict_to_var(child, imported_names) for child in tag["children"]],
*[render_dict_to_var(child) for child in tag["children"]],
)


Expand All @@ -2595,13 +2593,7 @@ def _cached_var_name(self) -> str:
Returns:
The name of the var.
"""
var_data = self._get_all_var_data()
if var_data is not None:
# flatten imports
imported_names = {j.alias or j.name for i in var_data.imports for j in i[1]}
else:
imported_names = set()
return str(render_dict_to_var(self._var_value.render(), imported_names))
return str(render_dict_to_var(self._var_value.render()))

@cached_property_no_lock
def _cached_get_all_var_data(self) -> VarData | None:
Expand Down
2 changes: 1 addition & 1 deletion reflex/utils/prerequisites.py
Original file line number Diff line number Diff line change
Expand Up @@ -1120,7 +1120,7 @@ def _update_next_config(

if transpile_packages:
next_config["transpilePackages"] = list(
{format_library_name(p) for p in transpile_packages}
dict.fromkeys([format_library_name(p) for p in transpile_packages])
)
if export:
next_config["output"] = "export"
Expand Down
4 changes: 2 additions & 2 deletions reflex/vars/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -233,11 +233,11 @@ def merge(*all: VarData | None) -> VarData | None:
deps = [dep for var_data in all_var_datas for dep in var_data.deps]

positions = list(
{
dict.fromkeys(
var_data.position
for var_data in all_var_datas
if var_data.position is not None
}
)
)
if positions:
if len(positions) > 1:
Expand Down