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)