@@ -63,6 +63,15 @@ def get_all_properties(self):
6363
6464 return properties
6565
66+ def get_all_required_properties (self ):
67+ required = self .required .copy ()
68+
69+ for subschema in self .all_of :
70+ subschema_req = subschema .get_all_required_properties ()
71+ required += subschema_req
72+
73+ return required
74+
6675 def get_cast_mapping (self ):
6776 mapping = DEFAULT_CAST_CALLABLE_GETTER .copy ()
6877 mapping .update ({
@@ -121,6 +130,7 @@ def _unmarshal_object(self, value):
121130 value = loads (value )
122131
123132 all_properties = self .get_all_properties ()
133+ all_required_properties = self .get_all_required_properties ()
124134 all_properties_keys = all_properties .keys ()
125135 value_keys = value .keys ()
126136
@@ -135,7 +145,7 @@ def _unmarshal_object(self, value):
135145 try :
136146 prop_value = value [prop_name ]
137147 except KeyError :
138- if prop_name in self . required :
148+ if prop_name in all_required_properties :
139149 raise MissingProperty (
140150 "Missing schema property {0}" .format (prop_name ))
141151 if not prop .nullable and not prop .default :
@@ -167,7 +177,7 @@ def __init__(self, dereferencer):
167177 def create (self , schema_spec ):
168178 schema_deref = self .dereferencer .dereference (schema_spec )
169179
170- schema_type = schema_deref .get ('type' )
180+ schema_type = schema_deref .get ('type' , 'object' )
171181 schema_format = schema_deref .get ('format' )
172182 model = schema_deref .get ('x-model' , None )
173183 required = schema_deref .get ('required' , False )
0 commit comments