OpenBB-finance/OpenBB · error · OpenBBError
No summary data found. The data source may have changed.
Error message
No summary data found. The data source may have changed.
What it means
Raised in the 'summary' branch of total_factor_productivity transform: after pivoting the raw table into PERIOD_COLUMN_MAP columns and validating each row, the results list is empty. The message explicitly flags that the Fed's TFP page/table structure may have changed, since a correctly-shaped scrape always yields at least one summary row.
Source
Thrown at openbb_platform/providers/federal_reserve/openbb_federal_reserve/models/total_factor_productivity.py:589
if frequency == "summary":
# Summary rows are those that don't match the date pattern
summary_df = df[~valid_mask].copy()
summary_df = summary_df.rename(columns={date_col: "period"})
summary_df = summary_df[summary_df["period"].isin(PERIOD_COLUMN_MAP.keys())]
summary_df = summary_df.set_index("period").T.reset_index()
summary_df = summary_df.rename(
columns={"index": "variable", **PERIOD_COLUMN_MAP}
)
summary_df["variable_title"] = summary_df["variable"].map(VARIABLE_TITLES)
summary_df = summary_df.replace({np.nan: None})
results: list[FederalReserveTfpData] = [
FederalReserveTfpData.model_validate(row.to_dict())
for _, row in summary_df.iterrows()
]
if not results:
raise OpenBBError(
"No summary data found. The data source may have changed."
)
return results
# Time series data
data_df = df[valid_mask].copy()
if frequency == "quarter":
# Convert "YYYY:QN" to proper dates
date_series = pd.PeriodIndex(
data_df[date_col].str.replace(":", ""), freq="Q"
).to_timestamp()
data_df[date_col] = date_series.date
else:
# Annual: convert year to January 1 of that year
data_df[date_col] = pd.to_datetime(
data_df[date_col].astype(int), format="%Y"View on GitHub (pinned to 3e071fcc2c)
Solutions
- Update the openbb-federal-reserve provider package — scraper fixes for layout changes ship as patches.
- Inspect the fetched raw data (log the DataFrame before transform) to see which columns the site now emits and compare with PERIOD_COLUMN_MAP.
- If maintaining a fork, update PERIOD_COLUMN_MAP and VARIABLE_TITLES to the new table headers.
Defensive patterns
Strategy: try-catch
Try / catch
try:
res = obb.economy.tfp(provider='federal_reserve', transform='summary')
except OpenBBError as e:
if 'data source may have changed' in str(e):
log_provider_update_needed(e)
raise Prevention
- Update the provider when the Fed site redesigns pages
- Cache summary results; scraper breakages are common
When it happens
Trigger: Calling the TFP fetcher with the summary transform where the scraped DataFrame's columns no longer align with PERIOD_COLUMN_MAP/VARIABLE_TITLES, so model_validate produces zero rows (or the source table layout changed so summary_df ends up empty before iteration).
Common situations: The Fed redesigned its TFP data page (renamed variables, different period columns); provider version lagging behind the site; np.nan replacement masking rows that then fail validation.
Related errors
- Could not find the header row in the CSV data.
- The query filters resulted in no data. Try again with differ
- Unsupported file format. Please use .json or .env files.
- Failed to get Jupyter URL
- Invalid extension type(s): {', '.join(invalid)}. Valid choic
AI-assisted analysis of OpenBB-finance/OpenBB@3e071fcc2c (2026-08-14).
Data as JSON: /api/errors/fbf6b6ca4b25aeeb.
Report an issue: GitHub.