Skip to content

Commit 8e9f982

Browse files
authored
improve handling
1 parent b4c5751 commit 8e9f982

File tree

1 file changed

+8
-10
lines changed

1 file changed

+8
-10
lines changed

airbyte_cdk/utils/datetime_helpers.py

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,11 @@ def ab_datetime_parse(
404404
instant = Instant.from_timestamp(timestamp)
405405
return AirbyteDateTime.from_datetime(instant.py_datetime())
406406

407+
if not isinstance(dt_str, str):
408+
raise ValueError(
409+
f"Could not parse datetime string: expected string or integer, got {type(dt_str)}"
410+
)
411+
407412
if formats:
408413
ex_list: list[Exception] = []
409414
for format in formats:
@@ -417,14 +422,9 @@ def ab_datetime_parse(
417422

418423
if disallow_other_formats:
419424
raise ValueError(
420-
f"Could not parse datetime string. {str(ex_list)}"
425+
f"Could not parse datetime string with provided formats [{formats}]: {str(ex_list)}"
421426
)
422427

423-
if not isinstance(dt_str, str):
424-
raise ValueError(
425-
f"Could not parse datetime string: expected string or integer, got {type(dt_str)}"
426-
)
427-
428428
# Else, value is a string
429429

430430
# Try parsing standard ISO/RFC formats with whenever
@@ -436,9 +436,7 @@ def ab_datetime_parse(
436436

437437
# Handle int-like strings
438438
if (
439-
isinstance(dt_str, str) and (
440-
dt_str.isdigit() or (dt_str.startswith("-") and dt_str[1:].isdigit())
441-
)
439+
dt_str.isdigit() or (dt_str.startswith("-") and dt_str[1:].isdigit())
442440
):
443441
try:
444442
return ab_datetime_format(int(dt_str))
@@ -453,7 +451,7 @@ def ab_datetime_parse(
453451

454452
return AirbyteDateTime.from_datetime(parsed)
455453
except (ValueError, TypeError):
456-
raise ValueError(f"Could not parse datetime string: {dt_str}")
454+
raise ValueError(f"Could not parse datetime string: {dt_str}, ({type(dt_str).__name__})")
457455

458456

459457
def ab_datetime_try_parse(dt_str: str) -> AirbyteDateTime | None:

0 commit comments

Comments
 (0)