diff --git a/scripts/workers/fmcsa_census_downloader.py b/scripts/workers/fmcsa_census_downloader.py index 7d97e30..2da466b 100644 --- a/scripts/workers/fmcsa_census_downloader.py +++ b/scripts/workers/fmcsa_census_downloader.py @@ -59,13 +59,16 @@ def parse_fmcsa_date(date_str: str | None) -> str | None: return None -def safe_int(val) -> int | None: - """Convert value to int, handling strings and None.""" +def safe_int(val, max_val: int = 2_147_483_647) -> int | None: + """Convert value to int, handling strings, None, and out-of-range values.""" if val is None: return None try: - return int(val) - except (ValueError, TypeError): + v = int(float(val)) # handle "1.234e7" scientific notation + if v > max_val or v < -max_val: + return None # out of range for PostgreSQL INTEGER + return v + except (ValueError, TypeError, OverflowError): return None