From b4264351be699f772501e35cb7774e914c67baf6 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <53631862+PR0M3TH3AN@users.noreply.github.com> Date: Sat, 31 May 2025 18:13:28 -0400 Subject: [PATCH] Wrap datetime parsing in try/except --- scripts/bitcoin_m2_chart.py | 14 ++++++++++++-- scripts/custom_chart.py | 14 ++++++++++++-- scripts/lagged_oil_unrate_chart_styled.py | 14 ++++++++++++-- 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/scripts/bitcoin_m2_chart.py b/scripts/bitcoin_m2_chart.py index 746ed90..a5bb8c0 100644 --- a/scripts/bitcoin_m2_chart.py +++ b/scripts/bitcoin_m2_chart.py @@ -14,6 +14,7 @@ import argparse from datetime import datetime from pathlib import Path from typing import Tuple +import sys from scripts.constants import DB_PATH_DEFAULT @@ -147,8 +148,17 @@ def main(argv: list[str] | None = None) -> plt.Figure: p.add_argument("--no-show", action="store_true", help="do not display the figure") args = p.parse_args(argv) - start_dt = datetime.fromisoformat(args.start) - end_dt = datetime.fromisoformat(args.end) + try: + start_dt = datetime.fromisoformat(args.start) + except ValueError: + print(f"Invalid --start date: {args.start}", file=sys.stderr) + raise SystemExit(1) + + try: + end_dt = datetime.fromisoformat(args.end) + except ValueError: + print(f"Invalid --end date: {args.end}", file=sys.stderr) + raise SystemExit(1) btc, m2 = fetch_series(start_dt, end_dt, args.btc_series, args.m2_series, args.db) validate_series(btc, m2, args.btc_series, args.m2_series) diff --git a/scripts/custom_chart.py b/scripts/custom_chart.py index e47b513..44812f3 100644 --- a/scripts/custom_chart.py +++ b/scripts/custom_chart.py @@ -12,6 +12,7 @@ from __future__ import annotations import argparse from datetime import datetime +import sys from pathlib import Path from typing import Iterable @@ -79,8 +80,17 @@ def main(argv: list[str] | None = None) -> plt.Figure: ) args = p.parse_args(argv) - start_dt = datetime.fromisoformat(args.start) - end_dt = datetime.fromisoformat(args.end) + try: + start_dt = datetime.fromisoformat(args.start) + except ValueError: + print(f"Invalid --start date: {args.start}", file=sys.stderr) + raise SystemExit(1) + + try: + end_dt = datetime.fromisoformat(args.end) + except ValueError: + print(f"Invalid --end date: {args.end}", file=sys.stderr) + raise SystemExit(1) data = fetch_series_multi(args.series, start_dt, end_dt, args.db) fig = plot_series(data) diff --git a/scripts/lagged_oil_unrate_chart_styled.py b/scripts/lagged_oil_unrate_chart_styled.py index d2578da..e9d05c5 100644 --- a/scripts/lagged_oil_unrate_chart_styled.py +++ b/scripts/lagged_oil_unrate_chart_styled.py @@ -14,6 +14,7 @@ from __future__ import annotations import argparse from datetime import datetime from pathlib import Path +import sys import logging logger = logging.getLogger(__name__) @@ -255,8 +256,17 @@ def main(argv: list[str] | None = None) -> plt.Figure: p.add_argument("--no-show", action="store_true", help="do not display the figure") args = p.parse_args(argv) - start_dt = datetime.fromisoformat(args.start) - end_dt = datetime.fromisoformat(args.end) + try: + start_dt = datetime.fromisoformat(args.start) + except ValueError: + print(f"Invalid --start date: {args.start}", file=sys.stderr) + raise SystemExit(1) + + try: + end_dt = datetime.fromisoformat(args.end) + except ValueError: + print(f"Invalid --end date: {args.end}", file=sys.stderr) + raise SystemExit(1) # ─────────────────────────────────────────────────────────────────────── # Fetch both UNRATE and oil; UNRATE may contain NaNs if the last