feat: format and linting pre-merge

This commit is contained in:
2025-11-26 10:54:42 -03:00
parent 40106e4765
commit 27e756dadf
4 changed files with 18 additions and 34 deletions

View File

@@ -73,13 +73,11 @@ class GenericTypeParser(ABC, Generic[T]):
:param kwargs: Additional options for type parsing. :param kwargs: Additional options for type parsing.
:return: A tuple containing the type and its properties. :return: A tuple containing the type and its properties.
""" """
parser = cls._get_impl( parser = cls._get_impl(cls._normalize_properties(properties))
cls._normalize_properties(properties)
)
return parser().from_properties(name=name, properties=properties, **kwargs) return parser().from_properties(name=name, properties=properties, **kwargs)
@staticmethod @staticmethod
def _normalize_properties(properties: JSONSchema) -> JSONSchema: def _normalize_properties(properties: JSONSchema) -> JSONSchema:
""" """
@@ -87,21 +85,21 @@ class GenericTypeParser(ABC, Generic[T]):
:param properties: The properties to be normalized. :param properties: The properties to be normalized.
""" """
type_value = properties.pop("type", None) type_value = properties.pop("type", None)
if isinstance(type_value, str): if isinstance(type_value, str):
properties["type"] = type_value properties["type"] = type_value
return properties return properties
if isinstance(type_value, list) and len(type_value) == 0: if isinstance(type_value, list) and len(type_value) == 0:
raise InvalidSchemaException( raise InvalidSchemaException(
"Invalid schema: 'type' list cannot be empty", invalid_field=str(properties) "Invalid schema: 'type' list cannot be empty",
invalid_field=str(properties),
) )
if isinstance(type_value, list) and len(type_value) == 1: if isinstance(type_value, list) and len(type_value) == 1:
properties["type"] = type_value[0] properties["type"] = type_value[0]
return properties return properties
if isinstance(type_value, list): if isinstance(type_value, list):
properties["anyOf"] = [{"type": t} for t in type_value] properties["anyOf"] = [{"type": t} for t in type_value]
return properties return properties

View File

@@ -1,4 +1,4 @@
from jambo.exceptions import InternalAssertionException, InvalidSchemaException, UnsupportedSchemaException from jambo.exceptions import InvalidSchemaException, UnsupportedSchemaException
from jambo.parser import ObjectTypeParser, RefTypeParser from jambo.parser import ObjectTypeParser, RefTypeParser
from jambo.types import JSONSchema, RefCacheDict from jambo.types import JSONSchema, RefCacheDict
@@ -135,11 +135,12 @@ class SchemaConverter:
""" """
if "$ref" in schema: if "$ref" in schema:
return "$ref" return "$ref"
type_value = schema.get("type") type_value = schema.get("type")
if isinstance(type_value, list): if isinstance(type_value, list):
raise InvalidSchemaException( raise InvalidSchemaException(
"Invalid schema: 'type' cannot be a list at the top level", invalid_field=str(schema) "Invalid schema: 'type' cannot be a list at the top level",
invalid_field=str(schema),
) )
return type_value return type_value

View File

@@ -42,7 +42,7 @@ JSONSchema = TypedDict(
"description": str, "description": str,
"default": JSONType, "default": JSONType,
"examples": List[JSONType], "examples": List[JSONType],
"type": JSONSchemaType|List[JSONSchemaType], "type": JSONSchemaType | List[JSONSchemaType],
"enum": List[JSONType], "enum": List[JSONType],
"const": JSONType, "const": JSONType,
"properties": Dict[str, "JSONSchema"], "properties": Dict[str, "JSONSchema"],

View File

@@ -1003,11 +1003,7 @@ class TestSchemaConverter(TestCase):
schema = { schema = {
"title": "TestListType", "title": "TestListType",
"type": "object", "type": "object",
"properties": { "properties": {"values": {"type": ["string", "number"]}},
"values": {
"type": ["string", "number"]
}
},
} }
Model = self.converter.build_with_cache(schema) Model = self.converter.build_with_cache(schema)
@@ -1022,11 +1018,7 @@ class TestSchemaConverter(TestCase):
schema = { schema = {
"title": "TestListType", "title": "TestListType",
"type": "object", "type": "object",
"properties": { "properties": {"values": {"type": ["string"]}},
"values": {
"type": ["string"]
}
},
} }
Model = self.converter.build_with_cache(schema) Model = self.converter.build_with_cache(schema)
@@ -1038,21 +1030,14 @@ class TestSchemaConverter(TestCase):
schema = { schema = {
"title": "TestListType", "title": "TestListType",
"type": "object", "type": "object",
"properties": { "properties": {"values": {"type": []}},
"values": {
"type": []
}
},
} }
with self.assertRaises(InvalidSchemaException): with self.assertRaises(InvalidSchemaException):
self.converter.build_with_cache(schema) self.converter.build_with_cache(schema)
def test_parse_list_type_root_level_throws(self): def test_parse_list_type_root_level_throws(self):
schema = { schema = {"title": "TestListType", "type": ["string", "number"]}
"title": "TestListType",
"type": ["string", "number"]
}
with self.assertRaises(InvalidSchemaException): with self.assertRaises(InvalidSchemaException):
self.converter.build_with_cache(schema) self.converter.build_with_cache(schema)