{"record":{"id":"eb11fdf54c176220","repo":"OpenBB-finance/OpenBB","slug":"extension-ext-name-is-not-installed","errorCode":null,"errorMessage":"Extension '{ext_name}' is not installed.","messagePattern":"Extension '(.+?)' is not installed\\.","errorType":"exception","errorClass":"AuthServiceError","httpStatus":null,"severity":"error","filePath":"openbb_platform/core/openbb_core/app/service/auth_service.py","lineNumber":64,"sourceCode":"        return self._auth_hook\n\n    @property\n    def user_settings_hook(self) -> Callable[..., Awaitable[UserSettings]]:\n        \"\"\"Get user settings hook.\"\"\"\n        return self._user_settings_hook\n\n    @staticmethod\n    def _is_installed(ext_name: str) -> bool:\n        \"\"\"Check if auth_extension is installed.\"\"\"\n        extension = ExtensionLoader().get_core_entry_point(ext_name) or False\n        return extension and ext_name == extension.name  # type: ignore\n\n    @staticmethod\n    def _get_entry_mod(ext_name: str) -> ModuleType:\n        \"\"\"Get the module of the given auth_extension.\"\"\"\n        extension = ExtensionLoader().get_core_entry_point(ext_name)\n        if not extension:\n            raise AuthServiceError(f\"Extension '{ext_name}' is not installed.\")\n        return import_module(extension.module)\n\n    def _load_extension(self, ext_name: str | None) -> bool:\n        \"\"\"Load auth extension.\"\"\"\n        if ext_name and self._is_installed(ext_name):\n            entry_mod = self._get_entry_mod(ext_name)\n            self._router = entry_mod.router\n            self._auth_hook = entry_mod.auth_hook\n            self._user_settings_hook = entry_mod.user_settings_hook\n            logger.info(\"Loaded auth_extension: %s\", ext_name)\n            return True\n        return False\n","sourceCodeStart":46,"sourceCodeEnd":77,"githubUrl":"https://github.com/OpenBB-finance/OpenBB/blob/3e071fcc2cd9f891cac6040ae60296dba76dab46/openbb_platform/core/openbb_core/app/service/auth_service.py#L46-L77","documentation":"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.","triggerScenarios":"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.","commonSituations":"Copying a parameter template built for IFS indicators to other dataflows; batch jobs that always set transform; assuming every dataflow supports the same dimensions.","solutions":["Drop the `transform` parameter for dataflows that don't support it (the error names the dataflow).","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.","For heterogeneous batches, set transform conditionally per dataflow or use 'all'."],"exampleFix":"# before\nres = obb.economy.economic_indicators(provider='imf', symbol='STA::H_CPI', country='USA', transform='level')\n\n# after\nres = obb.economy.economic_indicators(provider='imf', symbol='STA::H_CPI', country='USA')","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try:\n    res = obb.economy.economic_indicators(provider='imf', symbol=sym, country=c, transform=t)\nexcept Exception as e:\n    if 'does not support transform/unit parameter' in str(e):\n        # dataflow has no transform dimension: re-issue without transform\n        res = obb.economy.economic_indicators(provider='imf', symbol=sym, country=c)\n    else:\n        raise","preventionTips":["Only pass transform for dataflows known to expose UNIT_MEASURE/TRANSFORMATION dimensions (IFS-style dataflows).","In batch jobs, make the transform parameter conditional on the dataflow prefix of each symbol.","Treat 'does not support' as a structural fact about the dataflow — retrying with a different value will not help; drop the parameter."],"tags":["imf","openbb","validation","transform","dataflow","sdmx"],"backgroundTag":null,"analyzedSha":"3e071fcc2cd9f891cac6040ae60296dba76dab46","analyzedAt":"2026-08-14T23:40:48.960Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}