async def generate_analysis(ticker) -> data_model.StockReport: """Generates a stock analysis using the Gemini API.""" data = await asyncio.gather( generate_company(ticker), generate_company_overview(ticker), generate_key_financials(ticker), generate_case(True, ticker, 3), generate_case(False, ticker, 3) ) data_as_dict = { "company": data[0], "company_overview": data[1], "key_financial_data": data[2], "buy_case": data[3], "sell_case": data[4] } return data_model.StockReport(**data_as_dict)