Closed
Description
Environment
- Python Version: 3.12.6
- kiota-serialization-json version: 1.3.1 - 1.3.3
- OS: Ubuntu 22.04
Stack trace (if available)
________________________________________________________________ test_get_anything_does_work_on_single_slash _______________________________________________________________
def test_get_anything_does_work_on_single_slash():
parse_node = JsonParseNode("/2")
> result = parse_node.try_get_anything("/2")
tests/unit/test_json_parse_node.py:207:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
kiota_serialization_json/json_parse_node.py:312: in try_get_anything
datetime_obj = pendulum.parse(value)
../../.virtualenvs/kiota/lib/python3.12/site-packages/pendulum/parser.py:30: in parse
return _parse(text, **options)
../../.virtualenvs/kiota/lib/python3.12/site-packages/pendulum/parser.py:43: in _parse
parsed = base_parse(text, **options)
../../.virtualenvs/kiota/lib/python3.12/site-packages/pendulum/parsing/__init__.py:78: in parse
return _normalize(_parse(text, **_options), **_options)
../../.virtualenvs/kiota/lib/python3.12/site-packages/pendulum/parsing/__init__.py:116: in _parse
return _parse_iso8601_interval(text)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
text = '/2'
def _parse_iso8601_interval(text: str) -> _Interval:
if "/" not in text:
raise ParserError("Invalid interval")
first, last = text.split("/")
start = end = duration = None
> if first[0] == "P":
E IndexError: string index out of range
../../.virtualenvs/kiota/lib/python3.12/site-packages/pendulum/parsing/__init__.py:217: IndexError
Describe the bug
Version 1.3.1 changed how JsonParseNode
behaves on a string containing a single slash at the start or the end.
Before this version try_get_anything
returned the input value, on 1.3.1 an exception is raised.
To Reproduce
The simple test that can be added to tests/test_json_parse_node.py
def test_get_anything_does_work_on_single_slash():
parse_node = JsonParseNode("/2")
result = parse_node.try_get_anything("/2")
assert isinstance(result, str)
assert result == "/2"
Expected behavior
Exception should not be raised and the input value should be returned.
Screenshots
Additional context
I've encountered this issue when using Microsoft Graph API via msgraph.GraphServiceClient