@@ -82,15 +82,17 @@ def _process_properties(*, data: oai.Schema, schemas: Schemas, class_name: str)
82
82
required_set = set (data .required or [])
83
83
84
84
def _check_existing (prop : Property ) -> Union [Property , PropertyError ]:
85
+ nonlocal properties
86
+
85
87
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
87
89
if isinstance (prop_or_error , PropertyError ):
88
90
prop_or_error .header = f"Found conflicting properties named { prop .name } when creating { class_name } "
89
91
return prop_or_error
90
92
properties [prop_or_error .name ] = prop_or_error
91
93
return prop_or_error
92
94
93
- all_props = data .properties or {}
95
+ unprocessed_props = data .properties or {}
94
96
for sub_prop in data .allOf or []:
95
97
if isinstance (sub_prop , oai .Reference ):
96
98
source_name = Reference .from_ref (sub_prop .ref ).class_name
@@ -102,10 +104,10 @@ def _check_existing(prop: Property) -> Union[Property, PropertyError]:
102
104
if isinstance (prop_or_error , PropertyError ):
103
105
return prop_or_error
104
106
else :
105
- all_props .update (sub_prop .properties or {})
107
+ unprocessed_props .update (sub_prop .properties or {})
106
108
required_set .update (sub_prop .required or [])
107
109
108
- for key , value in all_props .items ():
110
+ for key , value in unprocessed_props .items ():
109
111
prop_required = key in required_set
110
112
prop_or_error , schemas = property_from_data (
111
113
name = key , required = prop_required , data = value , schemas = schemas , parent_name = class_name
0 commit comments