Skip to content

registry

onion_peeler.pages.registry

resolve_page_object_class(import_path)

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