44from six import iteritems
55
66from openapi_core .compat import lru_cache
7+ from openapi_core .schema .extensions .generators import ExtensionsGenerator
78from openapi_core .schema .properties .generators import PropertiesGenerator
89from openapi_core .schema .schemas .models import Schema
9- from openapi_core .schema .schemas .types import Contribution
10+ from openapi_core .schema .schemas .types import Contribution , NoValue
1011
1112log = logging .getLogger (__name__ )
1213
@@ -21,9 +22,8 @@ def create(self, schema_spec):
2122
2223 schema_type = schema_deref .get ('type' , None )
2324 schema_format = schema_deref .get ('format' )
24- model = schema_deref .get ('x-model' , None )
2525 required = schema_deref .get ('required' , False )
26- default = schema_deref .get ('default' , None )
26+ default = schema_deref .get ('default' , NoValue )
2727 properties_spec = schema_deref .get ('properties' , None )
2828 items_spec = schema_deref .get ('items' , None )
2929 nullable = schema_deref .get ('nullable' , False )
@@ -47,6 +47,8 @@ def create(self, schema_spec):
4747 min_properties = schema_deref .get ('minProperties' , None )
4848 max_properties = schema_deref .get ('maxProperties' , None )
4949
50+ extensions = self .extensions_generator .generate (schema_deref )
51+
5052 properties = None
5153 if properties_spec :
5254 properties = self .properties_generator .generate (properties_spec )
@@ -68,7 +70,7 @@ def create(self, schema_spec):
6870 additional_properties = self .create (additional_properties_spec )
6971
7072 return Schema (
71- schema_type = schema_type , model = model , properties = properties ,
73+ schema_type = schema_type , properties = properties ,
7274 items = items , schema_format = schema_format , required = required ,
7375 default = default , nullable = nullable , enum = enum ,
7476 deprecated = deprecated , all_of = all_of , one_of = one_of ,
@@ -79,9 +81,15 @@ def create(self, schema_spec):
7981 exclusive_maximum = exclusive_maximum ,
8082 exclusive_minimum = exclusive_minimum ,
8183 min_properties = min_properties , max_properties = max_properties ,
84+ extensions = extensions ,
8285 _source = schema_deref ,
8386 )
8487
88+ @property
89+ @lru_cache ()
90+ def extensions_generator (self ):
91+ return ExtensionsGenerator (self .dereferencer )
92+
8593 @property
8694 @lru_cache ()
8795 def properties_generator (self ):
0 commit comments