diff --git a/packages/serialization/text/kiota_serialization_text/text_parse_node.py b/packages/serialization/text/kiota_serialization_text/text_parse_node.py index cb6819f4..3b1f3cb7 100644 --- a/packages/serialization/text/kiota_serialization_text/text_parse_node.py +++ b/packages/serialization/text/kiota_serialization_text/text_parse_node.py @@ -160,7 +160,11 @@ def get_enum_value(self, enum_class: K) -> Optional[K]: raw_key = self.get_str_value() camel_case_key = None if raw_key: - camel_case_key = raw_key[0].upper() + raw_key[1:] + if raw_key.lower() == "none": + # None is a reserved keyword in python + camel_case_key = "None_" + else: + camel_case_key = raw_key[0].upper() + raw_key[1:] if camel_case_key: try: return enum_class[camel_case_key] # type: ignore diff --git a/packages/serialization/text/tests/unit/test_text_parse_node.py b/packages/serialization/text/tests/unit/test_text_parse_node.py index db34dee1..0480261b 100644 --- a/packages/serialization/text/tests/unit/test_text_parse_node.py +++ b/packages/serialization/text/tests/unit/test_text_parse_node.py @@ -1,5 +1,6 @@ import json from datetime import date, datetime, time, timedelta +from enum import Enum from uuid import UUID import pytest @@ -114,6 +115,16 @@ def test_get_enum_value(): assert result == OfficeLocation.Dunhill +def test_get_enum_value_none_member(): + class RiskLevel(Enum): + Low = "low" + None_ = "none" + + parse_node = TextParseNode("none") + result = parse_node.get_enum_value(RiskLevel) + assert result == RiskLevel.None_ + + def test_get_object_value(sample_structured_data): with pytest.raises(Exception) as e_info: parse_node = TextParseNode(sample_structured_data)