def iter_schema_in_operation_by_arg_var()

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