fix safe_build crashing due to missing import

This commit is contained in:
Aran-Fey
2024-04-17 21:57:05 +02:00
parent 96cefe2944
commit 17878f1eec
2 changed files with 9 additions and 24 deletions
+1 -20
View File
@@ -30,25 +30,6 @@ __all__ = [
]
def _validate_build_function(
build_function: Callable[[], rio.Component],
) -> Callable[[], rio.Component]:
assert callable(
build_function
), f"The App requires a function that returns a component, not {build_function!r}"
def wrapper():
component = build_function()
assert isinstance(
component, rio.Component
), f"The `build` function passed to the App must return a `Component` instance, not {component!r}."
return component
return wrapper
def make_default_connection_lost_component() -> rio.Component:
class DefaultConnectionLostComponent(rio.Component):
def build(self) -> rio.Component:
@@ -250,7 +231,7 @@ class App:
self.assets_dir = main_file.parent / assets_dir
self.name = name
self._build = _validate_build_function(build)
self._build = build
self._icon = assets.Asset.from_image(icon)
self.pages = tuple(pages)
self._on_app_start = on_app_start
+8 -4
View File
@@ -312,9 +312,10 @@ def safe_build(build_function: Callable[[], rio.Component]) -> rio.Component:
build_function_repr = _repr_build_function(build_function)
rio._logger.exception(f"An exception occurred in `{build_function_repr}`")
return rio.components.build_failed.BuildFailed(
f"`{build_function_repr}` has crashed", repr(err)
)
from rio.components.build_failed import BuildFailed # Screw circular imports
return BuildFailed(f"`{build_function_repr}` has crashed", repr(err))
# Make sure the result meets expectations
if not isinstance(build_result, rio.Component): # type: ignore[unnecessary-isinstance]
@@ -324,7 +325,10 @@ def safe_build(build_function: Callable[[], rio.Component]) -> rio.Component:
f"The output of `build` methods must be instances of"
f" `rio.Component`, but `{build_function_repr}` returned `{build_result!r}`"
)
return rio.components.build_failed.BuildFailed(
from rio.components.build_failed import BuildFailed # Screw circular imports
return BuildFailed(
f"`{build_function_repr}` has returned an invalid result",
f"Build functions must return instances of `rio.Component`, but the result was {build_result!r}",
)