{"record":{"id":"058362251535fdaa","repo":"OpenBB-finance/OpenBB","slug":"obbject-extension-error-an-obbject-extension-058362","errorCode":null,"errorMessage":"OBBject Extension Error -> \n\nAn OBBject extension that modifies the output is installed but has not been enabled in `system_settings.json`.\n\nSet `allow_mutable_extensions` to True to enable it.\nOr, set the environment variable `OPENBB_ALLOW_MUTABLE_EXTENSIONS` to True.\n\nProceed with caution as this may have security implications.\n\nEnsure the extension is installed from a trusted source.\n\n","messagePattern":"OBBject Extension Error -> \n\nAn OBBject extension that modifies the output is installed but has not been enabled in `system_settings\\.json`\\.\n\nSet `allow_mutable_extensions` to True to enable it\\.\nOr, set the environment variable `OPENBB_ALLOW_MUTABLE_EXTENSIONS` to True\\.\n\nProceed with caution as this may have security implications\\.\n\nEnsure the extension is installed from a trusted source\\.\n\n","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"openbb_platform/core/openbb_core/app/model/extension.py","lineNumber":87,"sourceCode":"            and not SystemService().system_settings.allow_on_command_output\n        ):\n            raise RuntimeError(\n                \"OBBject Extension Error -> \\n\\n\"\n                + \"An OBBject extension that acts on command output is installed \"\n                + \"but has not been enabled in `system_settings.json`.\\n\\n\"\n                + \"Set `allow_on_command_output` to True to enable it.\\n\"\n                + \"Or, set the environment variable `OPENBB_ALLOW_ON_COMMAND_OUTPUT` to True.\"\n                + \"\\n\\nProceed with caution as this may have security implications.\\n\\n\"\n                + \"Ensure the extension is installed from a trusted source.\\n\\n\",\n            )\n\n        # The user must explicitly enable OBBject extensions that modify output.\n        if (\n            self.on_command_output\n            and self.immutable is False\n            and not SystemService().system_settings.allow_mutable_extensions\n        ):\n            raise RuntimeError(\n                \"OBBject Extension Error -> \\n\\n\"\n                + \"An OBBject extension that modifies the output is installed \"\n                + \"but has not been enabled in `system_settings.json`.\\n\\n\"\n                + \"Set `allow_mutable_extensions` to True to enable it.\\n\"\n                + \"Or, set the environment variable `OPENBB_ALLOW_MUTABLE_EXTENSIONS` to True.\"\n                + \"\\n\\nProceed with caution as this may have security implications.\\n\\n\"\n                + \"Ensure the extension is installed from a trusted source.\\n\\n\",\n            )\n\n    @property\n    def obbject_accessor(self) -> Callable:\n        \"\"\"Extend an OBBject, inspired by pandas.\"\"\"\n        # pylint: disable=import-outside-toplevel\n\n        from openbb_core.app.model.obbject import OBBject\n\n        return self.register_accessor(self.name, OBBject)\n","sourceCodeStart":69,"sourceCodeEnd":105,"githubUrl":"https://github.com/OpenBB-finance/OpenBB/blob/3e071fcc2cd9f891cac6040ae60296dba76dab46/openbb_platform/core/openbb_core/app/model/extension.py#L69-L105","documentation":"Raised by the economic-indicators model validator (`parse_and_validate_symbols`, mode='after') when `symbol` is empty. The `dataflow::identifier` symbol is the core selector for this endpoint — there is no default series — so an empty symbol aborts validation immediately.","triggerScenarios":"Calling the economic-indicators endpoint with `symbol=''` or omitted, or passing `symbol=None` when the field is optional-with-default-empty in the params model. Also fires when a caller builds the symbol string dynamically and it concatenates to empty.","commonSituations":"Assuming the endpoint returns 'main indicators' without a symbol; templated code like `symbol=f'{dataflow}::{indicator}'` where indicator is empty at runtime; frontends sending an empty string when the user selects nothing.","solutions":["Pass a valid symbol in `dataflow::identifier` form, e.g. `symbol='IFS::NGDP_XDC'`.","Discover valid symbols first: call `available_indicators()` (search) or `list_tables()` and feed a result back in.","In dynamic builders, assert the symbol is non-empty and contains '::' before calling."],"exampleFix":"# before\nres = obb.economy.economic_indicators(provider='imf', country='USA')\n\n# after\nres = obb.economy.economic_indicators(provider='imf', symbol='IFS::NGDP_XDC', country='USA')","handlingStrategy":"validation","validationCode":"def require_symbol(symbol):\n    if not symbol or not symbol.strip():\n        raise ValueError('IMF economic_indicators requires a non-empty symbol like IFS::NGDP_XDC.')\n    return symbol\n\nsymbol = require_symbol(symbol)","typeGuard":"def is_non_empty_symbol(symbol) -> bool:\n    return isinstance(symbol, str) and bool(symbol.strip())","tryCatchPattern":null,"preventionTips":["When building symbols dynamically, assert the result is non-empty before the call.","Default your UIs to a dataflow-qualified example symbol so users see the expected format."],"tags":["imf","openbb","validation","required-parameter","symbol","pydantic"],"backgroundTag":null,"analyzedSha":"3e071fcc2cd9f891cac6040ae60296dba76dab46","analyzedAt":"2026-08-14T23:40:48.960Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}