fix dynamic imports app

This commit is contained in:
Khaleel Al-Adhami 2025-02-10 15:07:49 -08:00
parent 77a661b773
commit 65930138eb
2 changed files with 13 additions and 9 deletions

View File

@ -178,7 +178,8 @@ def extra_overlay_function() -> Optional[Component]:
module, _, function_name = extra_config.rpartition(".") module, _, function_name = extra_config.rpartition(".")
try: try:
module = __import__(module) module = __import__(module)
config_overlay = getattr(module, function_name)() config_overlay = Fragment.create(getattr(module, function_name)())
config_overlay._get_all_imports()
except Exception as e: except Exception as e:
from reflex.compiler.utils import save_error from reflex.compiler.utils import save_error
@ -290,7 +291,9 @@ class App(MiddlewareMixin, LifespanMixin):
app_wraps: Dict[tuple[int, str], Callable[[bool], Optional[Component]]] = ( app_wraps: Dict[tuple[int, str], Callable[[bool], Optional[Component]]] = (
dataclasses.field( dataclasses.field(
default_factory=lambda: { default_factory=lambda: {
(55, "ErrorBoundary"): lambda stateful: default_error_boundary(), (55, "ErrorBoundary"): (
lambda stateful: default_error_boundary() if stateful else None
),
(5, "Overlay"): ( (5, "Overlay"): (
lambda stateful: default_overlay_component() if stateful else None lambda stateful: default_overlay_component() if stateful else None
), ),
@ -1073,6 +1076,13 @@ class App(MiddlewareMixin, LifespanMixin):
# Add the custom components from the page to the set. # Add the custom components from the page to the set.
custom_components |= component._get_all_custom_components() custom_components |= component._get_all_custom_components()
# Add the app wraps to the app.
for key, app_wrap in self.app_wraps.items():
component = app_wrap(self._state is not None)
if component is not None:
app_wrappers[key] = component
custom_components |= component._get_all_custom_components()
if self.error_boundary: if self.error_boundary:
console.deprecate( console.deprecate(
feature_name="App.error_boundary", feature_name="App.error_boundary",
@ -1082,13 +1092,6 @@ class App(MiddlewareMixin, LifespanMixin):
) )
app_wrappers[(55, "ErrorBoundary")] = self.error_boundary() app_wrappers[(55, "ErrorBoundary")] = self.error_boundary()
# Add the app wraps to the app.
for key, app_wrap in self.app_wraps.items():
component = app_wrap(self._state is not None)
if component is not None:
app_wrappers[key] = component
custom_components |= component._get_all_custom_components()
# Perform auto-memoization of stateful components. # Perform auto-memoization of stateful components.
with console.timing("Auto-memoize StatefulComponents"): with console.timing("Auto-memoize StatefulComponents"):
( (

View File

@ -78,6 +78,7 @@ def _compile_app(app_root: Component) -> str:
hooks=app_root._get_all_hooks(), hooks=app_root._get_all_hooks(),
window_libraries=window_libraries, window_libraries=window_libraries,
render=app_root.render(), render=app_root.render(),
dynamic_imports=app_root._get_all_dynamic_imports(),
) )