{"record":{"id":"b4aa3d0f57716245","repo":"OpenBB-finance/OpenBB","slug":"error-fetching-data-e-b4aa3d","errorCode":null,"errorMessage":"Error fetching data: {e}","messagePattern":"Error fetching data: (.+?)","errorType":"exception","errorClass":"OpenBBError","httpStatus":null,"severity":"error","filePath":"openbb_platform/providers/deribit/openbb_deribit/models/futures_instruments.py","lineNumber":118,"sourceCode":"    @staticmethod\n    def transform_query(params: dict[str, Any]) -> DeribitFuturesInstrumentsQueryParams:\n        \"\"\"Transform the query.\"\"\"\n        return DeribitFuturesInstrumentsQueryParams(**params)\n\n    @staticmethod\n    async def aextract_data(\n        query: DeribitFuturesInstrumentsQueryParams,\n        credentials: dict[str, str] | None,\n        **kwargs: Any,\n    ) -> list:\n        \"\"\"Extract data from Deribit API.\"\"\"\n        # pylint: disable=import-outside-toplevel\n        from openbb_deribit.utils.helpers import get_instruments\n\n        try:\n            data = await get_instruments(\"all\", \"future\")\n        except Exception as e:  # pylint: disable=broad-except\n            raise OpenBBError(f\"Error fetching data: {e}\") from e\n        if not data:\n            raise OpenBBError(\n                \"There was an error with the request and it was returned empty.\"\n            )\n\n        return data\n\n    @staticmethod\n    def transform_data(\n        query: DeribitFuturesInstrumentsQueryParams,\n        data: list,\n        **kwargs: Any,\n    ) -> list[DeribitFuturesInstrumentData]:\n        \"\"\"Transform the data.\"\"\"\n        return [DeribitFuturesInstrumentData.model_validate(d) for d in data]\n","sourceCodeStart":100,"sourceCodeEnd":134,"githubUrl":"https://github.com/OpenBB-finance/OpenBB/blob/3e071fcc2cd9f891cac6040ae60296dba76dab46/openbb_platform/providers/deribit/openbb_deribit/models/futures_instruments.py#L100-L134","documentation":"OpenBBError raised in DeribitFuturesInstruments.aextract_data wrapping any exception from the get_instruments('all','future') call. This is a pure transport/wrapper error: get_instruments already converts its own failures to 'Failed to get instruments -> ...', so this fires on network exceptions or unexpected shapes before that mapping.","triggerScenarios":"No route to deribit.com, TLS/proxy failures, or an exception raised inside get_instruments outside its try block (e.g. during URL building). Because get_instruments' own errors are re-wrapped here, the message may double-wrap.","commonSituations":"Corporate proxies blocking deribit.com, air-gapped CI, DNS outages, or Deribit API downtime.","solutions":["Verify network access: curl 'https://www.deribit.com/api/v2/public/get_instruments?currency=any&kind=future' from the same host.","Configure proxy/SSL environment variables if the runtime sits behind a corporate proxy.","Retry with backoff for transient Deribit outages.","Read the inner exception name in '{e}' to distinguish DNS/timeout (network) from other failures."],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"from openbb_core.provider.utils.errors import OpenBBError\ntry:\n    data = obb.derivatives.futures.instruments(provider=\"deribit\")\nexcept OpenBBError as e:\n    if \"Error fetching data\" in str(e):\n        wait_and_retry_once()  # transport-level; usually transient\n    raise","preventionTips":["Verify deribit.com reachability from the runtime before jobs start.","Configure proxy env vars in restricted networks.","Cache instrument lists to reduce exposure to this endpoint's failures."],"tags":["deribit","network","instruments","proxy","transport"],"backgroundTag":null,"analyzedSha":"3e071fcc2cd9f891cac6040ae60296dba76dab46","analyzedAt":"2026-08-14T23:40:48.960Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}