Resolve a configured page object class with a safe GenericPage fallback.
Source code in src/onion_peeler/pages/registry.py
| def resolve_page_object_class(import_path: str | None) -> Type[GenericPage]:
"""Resolve a configured page object class with a safe GenericPage fallback."""
if not import_path:
return GenericPage
module_name, _, class_name = import_path.rpartition(".")
if not module_name or not class_name:
logger.warning("Invalid page_object path '%s'; using GenericPage", import_path)
return GenericPage
try:
module = importlib.import_module(module_name)
page_cls = getattr(module, class_name)
if not isinstance(page_cls, type) or not issubclass(page_cls, GenericPage):
logger.warning(
"Configured page_object '%s' is not a GenericPage subclass; using GenericPage",
import_path,
)
return GenericPage
return page_cls
except Exception as exc:
logger.warning("Failed to import page_object '%s': %s; using GenericPage", import_path, exc)
return GenericPage
|