@@ -183,27 +183,34 @@ def _check_attributes(
183183 feature .is_abstract = True
184184 else :
185185 # Handle attributes
186- if isinstance (value , dict ): # it represents nested attributes
187- attributes_list = self ._process_nested_attribute (feature , value )
186+ if value is None : # for boolean values the value may be not provided
187+ default_value = True
188+ elif isinstance (value , dict ): # it represents nested attributes
189+ attributes_list = self ._process_nested_attribute (feature , key , value )
188190 for attr in attributes_list :
189191 feature .add_attribute (attr )
192+ default_value = None
190193 else :
191194 default_value = value
192195 feature .add_attribute (Attribute (name = str (key ), default_value = default_value ))
193196 feature .constraints_attributes = self .constraints_attributes [feature ]
194197
195198 def _process_nested_attribute (self ,
196199 parent : Feature ,
200+ parent_attribute_name : str ,
197201 nested_values : dict [Any , Any ]) -> list [Attribute ]:
198202 attributes = []
199203 for key , value in nested_values .items ():
200- if isinstance (value , dict ):
201- attributes_list = self ._process_nested_attribute (parent , value )
204+ if value is None : # for boolean values the value may be not provided
205+ default_value = True
206+ elif isinstance (value , dict ):
207+ attributes_list = self ._process_nested_attribute (parent , f'{ parent_attribute_name } .{ key } ' , value )
202208 for attr in attributes_list :
203209 attributes .append (attr )
210+ default_value = None
204211 else :
205212 default_value = value
206- attribute = Attribute (name = str ( key ) , default_value = default_value )
213+ attribute = Attribute (name = f' { parent_attribute_name } . { key } ' , default_value = default_value )
207214 attribute .parent = parent
208215 attributes .append (attribute )
209216 return attributes
0 commit comments