in src/aaz_dev/command/controller/cfg_reader.py [0:0]
def iter_schema_in_operation_by_arg_var(cls, operation, arg_var):
def schema_filter(_parent, _schema, _schema_idx):
if isinstance(_schema, CMDSchema):
if _schema.arg == arg_var:
# find match
return (_parent, _schema, _schema_idx), False
elif isinstance(_schema, CMDSchemaBase):
if arg_var.endswith('[]') and _schema_idx[-1] == '[]' and \
isinstance(_parent, CMDArraySchema) and _parent.arg == arg_var[:-2]:
# find match
return (_parent, _schema, _schema_idx), False
elif arg_var.endswith('{}') and _schema_idx[-1] == '{}' and \
isinstance(_parent, CMDObjectSchema) and _parent.arg == arg_var[:-2]:
# find match
return (_parent, _schema, _schema_idx), False
return None, False
if isinstance(operation, CMDHttpOperation) and operation.http.request:
for parent, schema, schema_idx in cls._iter_schema_in_request(
operation.http.request, schema_filter=schema_filter):
if schema:
schema_idx = [_SchemaIdxEnum.Http, _SchemaIdxEnum.Request, *schema_idx]
yield parent, schema, schema_idx
if isinstance(operation, CMDInstanceUpdateOperation):
if isinstance(operation.instance_update, CMDJsonInstanceUpdateAction):
for parent, schema, schema_idx in cls._iter_schema_in_json(
operation.instance_update.json, schema_filter=schema_filter):
if schema:
schema_idx = [_SchemaIdxEnum.Instance, _SchemaIdxEnum.Update, *schema_idx]
yield parent, schema, schema_idx
if isinstance(operation, CMDInstanceCreateOperation):
if isinstance(operation.instance_create, CMDJsonInstanceCreateAction):
for parent, schema, schema_idx in cls._iter_schema_in_json(
operation.instance_create.json, schema_filter=schema_filter):
if schema:
schema_idx = [_SchemaIdxEnum.Instance, _SchemaIdxEnum.Create, *schema_idx]
yield parent, schema, schema_idx