This commit is contained in:
Rami Abdelrazzaq 2026-10-20 04:38:57 +00:00 • committed by GitHub
commit f6cc2d0e77
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 26 additions and 2 deletions

View file

@ -31,7 +31,7 @@ def parsedate(
.date()
.isoformat()
)
except parser.ParserError:
except (parser.ParserError, OverflowError):
if errors is IGNORE:
return value
elif errors is SET_NULL:
@ -58,7 +58,7 @@ def parsedatetime(
return value
try:
return parser.parse(value, dayfirst=dayfirst, yearfirst=yearfirst).isoformat()
except parser.ParserError:
except (parser.ParserError, OverflowError):
if errors is IGNORE:
return value
elif errors is SET_NULL:

View file

@ -0,0 +1,24 @@
import pytest
from sqlite_utils import recipes
OVERFLOWING_DATE = "999999999999999999999999999999-01-01"
@pytest.mark.parametrize("fn", ("parsedate", "parsedatetime"))
def test_dateparse_overflow_raises_by_default(fn):
with pytest.raises(OverflowError):
getattr(recipes, fn)(OVERFLOWING_DATE)
@pytest.mark.parametrize("fn", ("parsedate", "parsedatetime"))
@pytest.mark.parametrize(
"errors,expected",
(
(recipes.IGNORE, OVERFLOWING_DATE),
(recipes.SET_NULL, None),
),
)
def test_dateparse_overflow_respects_errors(fn, errors, expected):
assert getattr(recipes, fn)(OVERFLOWING_DATE, errors=errors) == expected