in src/backend/entrypoints/llm_backend/api/plots.py [0:0]
def get_prices_plots_data(request_model: DataRequestModel = Depends(), session: Session = Depends(get_session)):
if not session.flow_status.is_step_done(Steps.FETCH_TICKERS):
raise DataNotFetchedError
plots_meta = session.flow_status.step_fetch["plots_meta"]["symbols"]
for symbol in request_model.symbols:
if symbol not in plots_meta:
raise DataNotFetchedError(f"Data for '{symbol}' wasn't fetched")
data: dict[str, pd.DataFrame] = {
**session["data_by_symbol"],
**session.get("data_by_synth", {}),
}
response = defaultdict(list)
for symbol in request_model.symbols:
dividends_lines: list[str] = [line["name"] for chart in plots_meta[symbol]["charts"] for line in chart]
dividends_lines.remove("close")
keys_to_add = ["open", "high", "low", "close"] + dividends_lines
for idx, row in data[symbol].iterrows():
info = {key: (row[key] if not np.isnan(row[key]) else None) for key in keys_to_add if key in row}
info["date"] = idx.strftime("%Y-%m-%d")
response[symbol].append(info)
return response