in src/aaz_dev/command/controller/cfg_reader.py [0:0]
def find_sub_schema(cls, schema, idx):
assert isinstance(idx, list) and len(idx) > 0
if isinstance(schema, CMDObjectSchemaBase):
current_idx = idx[0]
remain_idx = idx[1:]
if current_idx == '{}':
if schema.additional_props and schema.additional_props.item:
item = schema.additional_props.item
if not remain_idx:
return item
return cls.find_sub_schema(item, remain_idx)
elif schema.props:
for prop in schema.props:
if current_idx == prop.name:
if not remain_idx:
return prop
return cls.find_sub_schema(prop, remain_idx)
elif schema.discriminators:
for disc in schema.discriminators:
if current_idx == disc.get_safe_value():
if not remain_idx:
return disc
return cls.find_sub_schema(disc, remain_idx)
elif isinstance(schema, CMDObjectSchemaDiscriminator):
current_idx = idx[0]
remain_idx = idx[1:]
if schema.props:
for prop in schema.props:
if current_idx == prop.name:
if not remain_idx:
return prop
return cls.find_sub_schema(prop, remain_idx)
elif schema.discriminators:
for disc in schema.discriminators:
if current_idx == disc.get_safe_value():
if not remain_idx:
return disc
return cls.find_sub_schema(disc, remain_idx)
elif isinstance(schema, CMDArraySchemaBase):
current_idx = idx[0]
remain_idx = idx[1:]
if current_idx == '[]':
item = schema.item
if not remain_idx:
return item
return cls.find_sub_schema(item, remain_idx)
return None