Add null type parser
This commit is contained in:
@@ -7,6 +7,7 @@ from .const_type_parser import ConstTypeParser
|
|||||||
from .enum_type_parser import EnumTypeParser
|
from .enum_type_parser import EnumTypeParser
|
||||||
from .float_type_parser import FloatTypeParser
|
from .float_type_parser import FloatTypeParser
|
||||||
from .int_type_parser import IntTypeParser
|
from .int_type_parser import IntTypeParser
|
||||||
|
from .null_type_parser import NullTypeParser
|
||||||
from .object_type_parser import ObjectTypeParser
|
from .object_type_parser import ObjectTypeParser
|
||||||
from .ref_type_parser import RefTypeParser
|
from .ref_type_parser import RefTypeParser
|
||||||
from .string_type_parser import StringTypeParser
|
from .string_type_parser import StringTypeParser
|
||||||
@@ -22,6 +23,7 @@ __all__ = [
|
|||||||
"BooleanTypeParser",
|
"BooleanTypeParser",
|
||||||
"FloatTypeParser",
|
"FloatTypeParser",
|
||||||
"IntTypeParser",
|
"IntTypeParser",
|
||||||
|
"NullTypeParser",
|
||||||
"ObjectTypeParser",
|
"ObjectTypeParser",
|
||||||
"StringTypeParser",
|
"StringTypeParser",
|
||||||
"RefTypeParser",
|
"RefTypeParser",
|
||||||
|
|||||||
25
jambo/parser/null_type_parser.py
Normal file
25
jambo/parser/null_type_parser.py
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
from jambo.parser._type_parser import GenericTypeParser
|
||||||
|
from jambo.types.type_parser_options import TypeParserOptions
|
||||||
|
|
||||||
|
from typing_extensions import Unpack
|
||||||
|
|
||||||
|
|
||||||
|
class NullTypeParser(GenericTypeParser):
|
||||||
|
mapped_type = None
|
||||||
|
|
||||||
|
json_schema_type = "type:null"
|
||||||
|
|
||||||
|
type_mappings = {
|
||||||
|
"default": "default",
|
||||||
|
}
|
||||||
|
|
||||||
|
def from_properties_impl(
|
||||||
|
self, name, properties, **kwargs: Unpack[TypeParserOptions]
|
||||||
|
):
|
||||||
|
mapped_properties = self.mappings_properties_builder(properties, **kwargs)
|
||||||
|
|
||||||
|
default_value = properties.get("default")
|
||||||
|
if default_value is not None:
|
||||||
|
raise ValueError(f"Default value for {name} must be None.")
|
||||||
|
|
||||||
|
return None, mapped_properties
|
||||||
43
tests/parser/test_null_type_parser.py
Normal file
43
tests/parser/test_null_type_parser.py
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
from jambo.parser import NullTypeParser
|
||||||
|
|
||||||
|
from unittest import TestCase
|
||||||
|
|
||||||
|
|
||||||
|
class TestNullTypeParser(TestCase):
|
||||||
|
def test_null_parser_no_options(self):
|
||||||
|
parser = NullTypeParser()
|
||||||
|
|
||||||
|
properties = {"type": "null"}
|
||||||
|
|
||||||
|
type_parsing, type_validator = parser.from_properties_impl(
|
||||||
|
"placeholder", properties
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(type_parsing, None)
|
||||||
|
self.assertEqual(type_validator, {"default": None})
|
||||||
|
|
||||||
|
def test_null_parser_with_default(self):
|
||||||
|
parser = NullTypeParser()
|
||||||
|
|
||||||
|
properties = {
|
||||||
|
"type": "null",
|
||||||
|
"default": None,
|
||||||
|
}
|
||||||
|
|
||||||
|
type_parsing, type_validator = parser.from_properties_impl(
|
||||||
|
"placeholder", properties
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(type_parsing, None)
|
||||||
|
self.assertEqual(type_validator["default"], None)
|
||||||
|
|
||||||
|
def test_null_parser_with_invalid_default(self):
|
||||||
|
parser = NullTypeParser()
|
||||||
|
|
||||||
|
properties = {
|
||||||
|
"type": "null",
|
||||||
|
"default": "invalid",
|
||||||
|
}
|
||||||
|
|
||||||
|
with self.assertRaises(ValueError):
|
||||||
|
parser.from_properties_impl("placeholder", properties)
|
||||||
Reference in New Issue
Block a user