@@ -101,12 +101,16 @@ def _get_values_for_config(self, config_schema_db, config_db):
101101 return config
102102
103103 @staticmethod
104- def _get_object_property_schema (object_schema ):
104+ def _get_object_property_schema (object_schema , init_additional_properties = None ):
105105 additional_properties = object_schema .get ("additionalProperties" , {})
106- if isinstance (additional_properties , dict ):
106+ if additional_properties and isinstance (additional_properties , dict ):
107107 property_schema = defaultdict (lambda : additional_properties )
108108 else :
109109 property_schema = {}
110+ if init_additional_properties :
111+ # ensure that these keys are present in the object (vs just defaultdict)
112+ for key in init_additional_properties :
113+ property_schema .__missing__ (key )
110114 property_schema .update (object_schema .get ("properties" , {}))
111115 return property_schema
112116
@@ -206,7 +210,9 @@ def _assign_default_values(self, schema, config):
206210 if not config .get (schema_item_key , None ):
207211 config [schema_item_key ] = {}
208212
209- property_schema = self ._get_object_property_schema (schema_item )
213+ property_schema = self ._get_object_property_schema (
214+ schema_item , config .keys () if has_additional_properties else None
215+ )
210216
211217 self ._assign_default_values (
212218 schema = property_schema , config = config [schema_item_key ]
0 commit comments