Merge pull request #27 from PR0M3TH3AN/codex/wrap-datetime.fromisoformat-in-try/except

Add error handling for invalid date inputs
This commit is contained in:
thePR0M3TH3AN authored and GitHub committed 2025-05-31 18:14:34 -04:00
commit 59de89e66f
3 files changed
+36 -6

No files matched your search

+12 -2
View File
@@ -14,6 +14,7 @@ import argparse
from datetime import datetime from datetime import datetime
from pathlib import Path from pathlib import Path
from typing import Tuple from typing import Tuple
import sys
from scripts.constants import DB_PATH_DEFAULT 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") p.add_argument("--no-show", action="store_true", help="do not display the figure")
args = p.parse_args(argv) args = p.parse_args(argv)
start_dt = datetime.fromisoformat(args.start) try:
end_dt = datetime.fromisoformat(args.end) 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) 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) validate_series(btc, m2, args.btc_series, args.m2_series)
+12 -2
View File
@@ -12,6 +12,7 @@ from __future__ import annotations
import argparse import argparse
from datetime import datetime from datetime import datetime
import sys
from pathlib import Path from pathlib import Path
from typing import Iterable from typing import Iterable
@@ -79,8 +80,17 @@ def main(argv: list[str] | None = None) -> plt.Figure:
) )
args = p.parse_args(argv) args = p.parse_args(argv)
start_dt = datetime.fromisoformat(args.start) try:
end_dt = datetime.fromisoformat(args.end) 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) data = fetch_series_multi(args.series, start_dt, end_dt, args.db)
fig = plot_series(data) fig = plot_series(data)
+12 -2
View File
@@ -14,6 +14,7 @@ from __future__ import annotations
import argparse import argparse
from datetime import datetime from datetime import datetime
from pathlib import Path from pathlib import Path
import sys
import logging import logging
logger = logging.getLogger(__name__) 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") p.add_argument("--no-show", action="store_true", help="do not display the figure")
args = p.parse_args(argv) args = p.parse_args(argv)
start_dt = datetime.fromisoformat(args.start) try:
end_dt = datetime.fromisoformat(args.end) 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 # Fetch both UNRATE and oil; UNRATE may contain NaNs if the last