def new_builder()

in src/aaz_dev/command/model/configuration/_arg_builder.py [0:0]


    def new_builder(cls, schema, parent=None, var_prefix=None, ref_args=None, ref_arg=None, is_update_action=False):
        if var_prefix is None:
            if parent is None or parent._arg_var is None:
                arg_var = "$"
            else:
                arg_var = parent._arg_var
        else:
            arg_var = var_prefix

        if parent is None or parent._arg_var is None:
            if isinstance(schema, CMDSchema):
                if not arg_var.endswith("$") and not schema.name.startswith('[') and not schema.name.startswith('{'):
                    arg_var += '.'
                arg_var += f'{schema.name}'.replace('$', '')  # some schema name may contain $
            else:
                raise NotImplementedError()
        else:
            assert isinstance(parent, CMDArgBuilder)
            if isinstance(parent.schema, CMDArraySchemaBase):
                arg_var += '[]'
            elif isinstance(parent.schema, CMDObjectSchemaAdditionalProperties):
                arg_var += '{}'
            elif isinstance(parent.schema, (CMDObjectSchemaBase, CMDObjectSchemaDiscriminator)):
                if not isinstance(schema, CMDObjectSchemaAdditionalProperties):
                    if not arg_var.endswith("$"):
                        arg_var += '.'
                    if isinstance(schema, CMDObjectSchemaDiscriminator):
                        arg_var += schema.get_safe_value()
                    elif isinstance(schema, CMDSchema):
                        arg_var += f'{schema.name}'.replace('$', '')  # some schema name may contain $
                    else:
                        raise NotImplementedError()
            else:
                raise NotImplementedError()
            cls_name = getattr(parent.schema, 'cls', None)
            if cls_name is not None:
                arg_var = arg_var.replace(parent._arg_var, f"@{cls_name}")

        if ref_arg:
            assert ref_args is None

        flatten = None
        sub_ref_args = []
        if not ref_arg and ref_args:
            for arg in ref_args:
                if arg.var == arg_var:
                    ref_arg = arg
                    flatten = False
                    break
                elif arg.var.startswith(f"{arg_var}."):
                    flatten = True  # this argument already flattened
                    sub_ref_args.append(arg)
        sub_ref_args = sub_ref_args or None
        return cls(schema=schema, arg_var=arg_var, ref_arg=ref_arg, sub_ref_args=sub_ref_args, parent=parent, is_update_action=is_update_action, flatten=flatten)