{"record":{"id":"7447044d37cb7103","repo":"OpenBB-finance/OpenBB","slug":"no-valid-dataflows-found-to-search-indicators-in-t","errorCode":null,"errorMessage":"No valid dataflows found to search indicators in.This might be due to incorrect dataflow IDs.","messagePattern":"No valid dataflows found to search indicators in\\.This might be due to incorrect dataflow IDs\\.","errorType":"validation","errorClass":"OpenBBError","httpStatus":null,"severity":"error","filePath":"openbb_platform/providers/imf/openbb_imf/utils/metadata.py","lineNumber":220,"sourceCode":"        Returns\n        -------\n        list[dict]\n            A list of matching indicators with table/hierarchy information included.\n        \"\"\"\n        target_dataflow_ids: list = []\n        if dataflows:\n            target_dataflow_ids = (\n                [dataflows] if isinstance(dataflows, str) else dataflows\n            )\n        else:\n            if not query and not keywords:\n                raise OpenBBError(\n                    \"A query must be provided when no dataflows and keywords are specified.\"\n                )\n            target_dataflow_ids = list(self.dataflows.keys())\n\n        if not target_dataflow_ids:\n            raise OpenBBError(\n                \"No valid dataflows found to search indicators in.\"\n                \"This might be due to incorrect dataflow IDs.\"\n            )\n\n        # Build a map of indicators to their tables for enrichment\n        indicator_to_tables: dict[str, list[dict]] = {}\n        # Also build searchable text for each indicator from their tables\n        indicator_table_text: dict[str, str] = {}\n\n        for df_id in set(target_dataflow_ids):\n            try:\n                hierarchies = self.get_dataflow_hierarchies(df_id)\n                for hierarchy in hierarchies:\n                    try:\n                        structure = self.get_dataflow_table_structure(\n                            df_id, hierarchy[\"id\"]\n                        )\n                        # Build searchable table text","sourceCodeStart":202,"sourceCodeEnd":238,"githubUrl":"https://github.com/OpenBB-finance/OpenBB/blob/3e071fcc2cd9f891cac6040ae60296dba76dab46/openbb_platform/providers/imf/openbb_imf/utils/metadata.py#L202-L238","documentation":"Raised by search_indicators when the dataflows argument WAS provided but none of the supplied IDs exist in the loaded metadata's self.dataflows dict (or, in the no-dataflows branch, the dataflows dict itself is empty). Distinct from error 594: filters were given, but they match zero known dataflows. The message hints the IDs may simply be wrong.","triggerScenarios":"dataflows='imts ' (trailing space), dataflows=['DOT','IMF'] vs actual IDs like 'IMTS' or 'DOT' depending on catalog version; metadata object built from a failed/partial load so self.dataflows is empty.","commonSituations":"Guessing dataflow IDs from topic names; casing/whitespace mistakes; offline or interrupted metadata initialization leaving an empty catalog; IMF renaming dataflows between releases.","solutions":["List valid IDs first: inspect meta.dataflows.keys() or use search_dataflows(query='trade') to discover the right ID.","Strip and upper-case user-supplied IDs; verify each is present before searching.","If self.dataflows is empty, re-initialize the metadata object (its load step failed — check network) rather than retrying the search."],"exampleFix":"# before\nres = meta.search_indicators(dataflows=['trade_stats'])\n\n# after\nvalid_ids = list(meta.dataflows.keys())\ndf_id = next(d for d in valid_ids if 'TRADE' in d.upper())  # e.g. 'IMTS'\nres = meta.search_indicators(dataflows=[df_id])","handlingStrategy":"validation","validationCode":"wanted = [d.strip().upper() for d in dataflows_list]\nvalid = [d for d in wanted if d in meta.dataflows]\nif not valid:\n    raise ValueError(f'No known dataflows in {wanted}; valid examples: {sorted(meta.dataflows)[:5]}')\nres = meta.search_indicators(dataflows=valid, query=query)","typeGuard":"def are_known_dataflows(ids: list[str], catalog: dict) -> bool:\n    return bool(ids) and all(i in catalog for i in ids)","tryCatchPattern":"try:\n    res = meta.search_indicators(dataflows=ids, query=q)\nexcept OpenBBError as e:\n    if 'No valid dataflows' in str(e):\n        ids = [d for d in meta.dataflows if q.lower() in d.lower()]\n        res = meta.search_indicators(dataflows=ids, query=q)\n    else:\n        raise","preventionTips":["Normalize IDs (strip/upper) and check membership in meta.dataflows before searching.","Discover IDs programmatically, don't hard-code guesses.","If the catalog itself is empty, re-initialize the metadata object first."],"tags":["validation","imf","metadata","dataflow-id","search"],"backgroundTag":null,"analyzedSha":"3e071fcc2cd9f891cac6040ae60296dba76dab46","analyzedAt":"2026-08-14T23:40:48.960Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}