Skip to content

Commit ab1a6c1

Browse files
authored
fix: numerical strings parsing
* Update json_parse_node.py Fixes numerical strings accidentally getting parsed to date * Update test_json_parse_node.py
1 parent 43b1927 commit ab1a6c1

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

packages/serialization/json/kiota_serialization_json/json_parse_node.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,8 @@ def try_get_anything(self, value: Any) -> Any:
312312
try:
313313
if self.__is_four_digit_number(value):
314314
return value
315-
315+
if value.isdigit():
316+
return value
316317
datetime_obj = pendulum.parse(value)
317318
if isinstance(datetime_obj, pendulum.Duration):
318319
return datetime_obj.as_timedelta()

packages/serialization/json/tests/unit/test_json_parse_node.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,25 @@ def test_get_anythin_does_not_convert_numeric_chars_to_datetime():
139139
assert result == "1212"
140140

141141

142+
def test_get_anythin_does_not_convert_any_length_numeric_chars_to_datetime():
143+
parse_node = JsonParseNode("1212")
144+
result1 = parse_node.try_get_anything("1212")
145+
parse_node_two = JsonParseNode("-PT15M")
146+
result2 = parse_node_two.try_get_anything("-PT15M")
147+
parse_node_three = JsonParseNode("20081008")
148+
result3 = parse_node_three.try_get_anything("20081008")
149+
parse_node_four = JsonParseNode("1011317")
150+
result4 = parse_node_four.try_get_anything("1011317")
151+
assert isinstance(result1, str)
152+
assert result1 == "1212"
153+
assert isinstance(result2, str)
154+
assert result2 == "-PT15M"
155+
assert isinstance(result3, str)
156+
assert result3 == "20081008"
157+
assert isinstance(result4, str)
158+
assert result4 == "1011317"
159+
160+
142161
def test_get_anythin_does_convert_date_string_to_datetime():
143162
parse_node = JsonParseNode("2023-10-05T14:48:00.000Z")
144163
result = parse_node.try_get_anything("2023-10-05T14:48:00.000Z")

0 commit comments

Comments
 (0)