Implements Object Defaults
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
from jambo.parser._type_parser import GenericTypeParser
|
||||
from jambo.utils.properties_builder.numeric_properties_builder import numeric_properties_builder
|
||||
from jambo.utils.properties_builder.numeric_properties_builder import (
|
||||
numeric_properties_builder,
|
||||
)
|
||||
|
||||
|
||||
class FloatTypeParser(GenericTypeParser):
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
from jambo.parser._type_parser import GenericTypeParser
|
||||
from jambo.utils.properties_builder.numeric_properties_builder import numeric_properties_builder
|
||||
from jambo.utils.properties_builder.numeric_properties_builder import (
|
||||
numeric_properties_builder,
|
||||
)
|
||||
|
||||
|
||||
class IntTypeParser(GenericTypeParser):
|
||||
|
||||
@@ -10,10 +10,12 @@ class ObjectTypeParser(GenericTypeParser):
|
||||
def from_properties(name, properties):
|
||||
from jambo.schema_converter import SchemaConverter
|
||||
|
||||
if "default" in properties:
|
||||
raise RuntimeError("Default values for objects are not supported.")
|
||||
type_parsing = SchemaConverter.build_object(name, properties)
|
||||
type_properties = {}
|
||||
|
||||
return (
|
||||
SchemaConverter.build_object(name, properties),
|
||||
{}, # The second argument is not used in this case
|
||||
)
|
||||
if "default" in properties:
|
||||
type_properties["default_factory"] = lambda: type_parsing.model_validate(
|
||||
properties["default"]
|
||||
)
|
||||
|
||||
return type_parsing, type_properties
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
from jambo.parser import GenericTypeParser
|
||||
from jambo.types.json_schema_type import JSONSchema
|
||||
|
||||
from jsonschema.exceptions import SchemaError
|
||||
from jsonschema.protocols import Validator
|
||||
from pydantic import create_model
|
||||
from pydantic.fields import Field
|
||||
|
||||
from typing import Type
|
||||
|
||||
from jambo.types.json_schema_type import JSONSchema
|
||||
from pydantic.main import ModelT
|
||||
|
||||
|
||||
class SchemaConverter:
|
||||
@@ -20,7 +18,7 @@ class SchemaConverter:
|
||||
"""
|
||||
|
||||
@staticmethod
|
||||
def build(schema: JSONSchema) -> Type:
|
||||
def build(schema: JSONSchema) -> ModelT:
|
||||
"""
|
||||
Converts a JSON Schema to a Pydantic model.
|
||||
:param schema: The JSON Schema to convert.
|
||||
@@ -35,7 +33,7 @@ class SchemaConverter:
|
||||
def build_object(
|
||||
name: str,
|
||||
schema: JSONSchema,
|
||||
) -> Type:
|
||||
) -> ModelT:
|
||||
"""
|
||||
Converts a JSON Schema object to a Pydantic model given a name.
|
||||
:param name:
|
||||
@@ -60,7 +58,7 @@ class SchemaConverter:
|
||||
@staticmethod
|
||||
def _build_model_from_properties(
|
||||
model_name: str, model_properties: dict, required_keys: list[str]
|
||||
) -> Type:
|
||||
) -> ModelT:
|
||||
properties = SchemaConverter._parse_properties(model_properties, required_keys)
|
||||
|
||||
return create_model(model_name, **properties)
|
||||
|
||||
Reference in New Issue
Block a user