From 3b67d255f5e45c39e528db6a25636d987f98abab Mon Sep 17 00:00:00 2001 From: Bendik Tromsdal Oustad Date: Mon, 5 Oct 2026 21:52:30 +0300 Subject: [PATCH] Fix deprecated pd.read_json string usage in metrics_engine compute_metrics called pd.read_json() directly on a JSON string (raw_data["financials"] / raw_data["balance_sheet"]), which already triggered a FutureWarning on every test run: pandas will eventually remove support for passing a literal string this way (it ends up guessing whether the string is content or a file path), turning this into a hard crash rather than just a warning. Wrap both strings in io.StringIO before passing them to pd.read_json, which is the way pandas wants this going forward. Verified with `pytest -W error::FutureWarning`: no FutureWarning is raised anymore. Full suite: 40 passed, 92% coverage on src/. Closes #10 --- src/metrics_engine.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/metrics_engine.py b/src/metrics_engine.py index 02769b0..c332f0c 100644 --- a/src/metrics_engine.py +++ b/src/metrics_engine.py @@ -9,6 +9,7 @@ flere kandidatnavn før vi gir opp og returnerer None for en metrikk. """ +import io from dataclasses import dataclass, asdict import pandas as pd @@ -83,8 +84,15 @@ def compute_metrics(raw_data: dict) -> CompanyMetrics: info = raw_data.get("info", {}) or {} try: - financials = pd.read_json(raw_data["financials"]) - balance_sheet = pd.read_json(raw_data["balance_sheet"]) + # pd.read_json vil etter hvert slutte å godta en ren tekststreng + # direkte (den tror da vi mener et filnavn). io.StringIO pakker + # teksten inn slik at pandas skjønner at det er innhold, ikke en + # filsti, og slipper advarselen om dette. + financials_text = io.StringIO(raw_data["financials"]) + balance_sheet_text = io.StringIO(raw_data["balance_sheet"]) + + financials = pd.read_json(financials_text) + balance_sheet = pd.read_json(balance_sheet_text) except Exception: financials = pd.DataFrame() balance_sheet = pd.DataFrame()