@@ -82,15 +82,17 @@ def _process_properties(*, data: oai.Schema, schemas: Schemas, class_name: str)
8282 required_set = set (data .required or [])
8383
8484 def _check_existing (prop : Property ) -> Union [Property , PropertyError ]:
85+ nonlocal properties
86+
8587 existing = properties .get (prop .name )
86- prop_or_error = ( existing and _merge_properties (existing , prop )) or prop
88+ prop_or_error = _merge_properties (existing , prop ) if existing else prop
8789 if isinstance (prop_or_error , PropertyError ):
8890 prop_or_error .header = f"Found conflicting properties named { prop .name } when creating { class_name } "
8991 return prop_or_error
9092 properties [prop_or_error .name ] = prop_or_error
9193 return prop_or_error
9294
93- all_props = data .properties or {}
95+ unprocessed_props = data .properties or {}
9496 for sub_prop in data .allOf or []:
9597 if isinstance (sub_prop , oai .Reference ):
9698 source_name = Reference .from_ref (sub_prop .ref ).class_name
@@ -102,10 +104,10 @@ def _check_existing(prop: Property) -> Union[Property, PropertyError]:
102104 if isinstance (prop_or_error , PropertyError ):
103105 return prop_or_error
104106 else :
105- all_props .update (sub_prop .properties or {})
107+ unprocessed_props .update (sub_prop .properties or {})
106108 required_set .update (sub_prop .required or [])
107109
108- for key , value in all_props .items ():
110+ for key , value in unprocessed_props .items ():
109111 prop_required = key in required_set
110112 prop_or_error , schemas = property_from_data (
111113 name = key , required = prop_required , data = value , schemas = schemas , parent_name = class_name
0 commit comments