Skip to content

Commit

Permalink
fix: numerical strings parsing
Browse files Browse the repository at this point in the history
* Update json_parse_node.py

Fixes numerical strings accidentally getting parsed to date

* Update test_json_parse_node.py
  • Loading branch information
Kobusvdwalt authored Dec 17, 2024
1 parent 43b1927 commit ab1a6c1
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -312,7 +312,8 @@ def try_get_anything(self, value: Any) -> Any:
try:
if self.__is_four_digit_number(value):
return value

if value.isdigit():
return value
datetime_obj = pendulum.parse(value)
if isinstance(datetime_obj, pendulum.Duration):
return datetime_obj.as_timedelta()
Expand Down
19 changes: 19 additions & 0 deletions packages/serialization/json/tests/unit/test_json_parse_node.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,25 @@ def test_get_anythin_does_not_convert_numeric_chars_to_datetime():
assert result == "1212"


def test_get_anythin_does_not_convert_any_length_numeric_chars_to_datetime():
parse_node = JsonParseNode("1212")
result1 = parse_node.try_get_anything("1212")
parse_node_two = JsonParseNode("-PT15M")
result2 = parse_node_two.try_get_anything("-PT15M")
parse_node_three = JsonParseNode("20081008")
result3 = parse_node_three.try_get_anything("20081008")
parse_node_four = JsonParseNode("1011317")
result4 = parse_node_four.try_get_anything("1011317")
assert isinstance(result1, str)
assert result1 == "1212"
assert isinstance(result2, str)
assert result2 == "-PT15M"
assert isinstance(result3, str)
assert result3 == "20081008"
assert isinstance(result4, str)
assert result4 == "1011317"


def test_get_anythin_does_convert_date_string_to_datetime():
parse_node = JsonParseNode("2023-10-05T14:48:00.000Z")
result = parse_node.try_get_anything("2023-10-05T14:48:00.000Z")
Expand Down

0 comments on commit ab1a6c1

Please sign in to comment.