in awscli/customizations/flatten.py [0:0]
def flatten_args(self, command, argument_table, **kwargs):
# For each argument with a bag of parameters
for name, argument in self.configs[command.name].items():
argument_from_table = argument_table[name]
overwritten = False
LOG.debug('Flattening {0} argument {1} into {2}'.format(
command.name, name,
', '.join([v['name'] for k, v in argument['flatten'].items()])
))
# For each parameter to flatten out
for sub_argument, new_config in argument['flatten'].items():
config = new_config.copy()
config['container'] = argument_from_table
config['prop'] = sub_argument
# Handle nested arguments
_arg = self._find_nested_arg(
argument_from_table.argument_model, sub_argument
)
# Pull out docs and required attribute
self._merge_member_config(_arg, sub_argument, config)
# Create and set the new flattened argument
new_arg = FlattenedArgument(**config)
argument_table[new_config['name']] = new_arg
if name == new_config['name']:
overwritten = True
# Delete the original argument?
if not overwritten and ('keep' not in argument or
not argument['keep']):
del argument_table[name]