From 4479ad490841f5cf0693a85ecae58d5490d51516 Mon Sep 17 00:00:00 2001 From: Sai Asish Y Date: Wed, 17 Jun 2026 17:51:11 -0700 Subject: [PATCH] Handle out-of-range timestamps in _format_data Signed-off-by: Sai Asish Y --- tests/test_base_format.py | 24 ++++++++++++++++++++++++ yahooquery/base.py | 2 +- 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 tests/test_base_format.py diff --git a/tests/test_base_format.py b/tests/test_base_format.py new file mode 100644 index 0000000..7b0e123 --- /dev/null +++ b/tests/test_base_format.py @@ -0,0 +1,24 @@ +from datetime import datetime + +from yahooquery.base import _YahooFinance + + +def _base(): + # Bypass __init__ so no network session is created; _format_data only + # needs an instance for its recursive calls. + return _YahooFinance.__new__(_YahooFinance) + + +def test_format_data_out_of_range_timestamp_falls_back_to_raw(): + base = _base() + data = {"startDate": 636977076120} + result = base._format_data(data, ["startDate"]) + assert result["startDate"] == 636977076120 + + +def test_format_data_valid_timestamp_is_formatted(): + base = _base() + data = {"startDate": 1700000000} + result = base._format_data(data, ["startDate"]) + expected = datetime.fromtimestamp(1700000000).strftime("%Y-%m-%d %H:%M:%S") + assert result["startDate"] == expected diff --git a/yahooquery/base.py b/yahooquery/base.py index de66d30..7fcb004 100644 --- a/yahooquery/base.py +++ b/yahooquery/base.py @@ -154,7 +154,7 @@ def _format_data(self, obj, dates): else: try: obj[k] = datetime.fromtimestamp(v).strftime("%Y-%m-%d %H:%M:%S") - except (TypeError, OSError): + except (TypeError, OSError, ValueError): obj[k] = v elif isinstance(v, dict): if "raw" in v: