OpenBB-finance/OpenBB · error · AuthServiceError

Extension '{ext_name}' is not installed.

Error message

Extension '{ext_name}' is not installed.

What it means

Raised in the economic-indicators transform stage when a `transform`/unit parameter was supplied for a dataflow that has no transform or unit dimension at all (`transform_dim` and `unit_dim` both None per `detect_transform_dimension`). Distinct from the 'invalid value' case: here the dataflow conceptually doesn't support unit selection (e.g. many STA or non-IFS dataflows), so no value could ever work.

Source

Thrown at openbb_platform/core/openbb_core/app/service/auth_service.py:64

        return self._auth_hook

    @property
    def user_settings_hook(self) -> Callable[..., Awaitable[UserSettings]]:
        """Get user settings hook."""
        return self._user_settings_hook

    @staticmethod
    def _is_installed(ext_name: str) -> bool:
        """Check if auth_extension is installed."""
        extension = ExtensionLoader().get_core_entry_point(ext_name) or False
        return extension and ext_name == extension.name  # type: ignore

    @staticmethod
    def _get_entry_mod(ext_name: str) -> ModuleType:
        """Get the module of the given auth_extension."""
        extension = ExtensionLoader().get_core_entry_point(ext_name)
        if not extension:
            raise AuthServiceError(f"Extension '{ext_name}' is not installed.")
        return import_module(extension.module)

    def _load_extension(self, ext_name: str | None) -> bool:
        """Load auth extension."""
        if ext_name and self._is_installed(ext_name):
            entry_mod = self._get_entry_mod(ext_name)
            self._router = entry_mod.router
            self._auth_hook = entry_mod.auth_hook
            self._user_settings_hook = entry_mod.user_settings_hook
            logger.info("Loaded auth_extension: %s", ext_name)
            return True
        return False

View on GitHub (pinned to 3e071fcc2c)

Solutions

  1. Drop the `transform` parameter for dataflows that don't support it (the error names the dataflow).
  2. Detect support first: `from openbb_imf.utils.imf_metadata import detect_transform_dimension` (or the module used by the model) and only pass transform when a dimension is found.
  3. For heterogeneous batches, set transform conditionally per dataflow or use 'all'.

Example fix

# before
res = obb.economy.economic_indicators(provider='imf', symbol='STA::H_CPI', country='USA', transform='level')

# after
res = obb.economy.economic_indicators(provider='imf', symbol='STA::H_CPI', country='USA')
Defensive patterns

Strategy: try-catch

Try / catch

try:
    res = obb.economy.economic_indicators(provider='imf', symbol=sym, country=c, transform=t)
except Exception as e:
    if 'does not support transform/unit parameter' in str(e):
        # dataflow has no transform dimension: re-issue without transform
        res = obb.economy.economic_indicators(provider='imf', symbol=sym, country=c)
    else:
        raise

Prevention

When it happens

Trigger: Passing `transform='level'` (any non-all value) together with a symbol from a dataflow without UNIT_MEASURE/TRANSFORMATION dimensions, e.g. `symbol='STA::H_CPI', transform='level'`. 'all'/'*' are skipped earlier and never trigger it.

Common situations: Copying a parameter template built for IFS indicators to other dataflows; batch jobs that always set transform; assuming every dataflow supports the same dimensions.

Related errors


AI-assisted analysis of OpenBB-finance/OpenBB@3e071fcc2c (2026-08-14). Data as JSON: /api/errors/eb11fdf54c176220. Report an issue: GitHub.