@property<EOL><INDENT>def cli_aliases(self):<DEDENT>
scripting_groups = []<EOL>aliases = {}<EOL>for cli_class in self.cli_classes:<EOL><INDENT>instance = cli_class()<EOL>if getattr(instance, "<STR_LIT>", None):<EOL><INDENT>scripting_group = getattr(instance, "<STR_LIT>", None)<EOL>if scripting_group:<EOL><INDENT>scripting_groups.append(scripting_group)<EOL>entry = (scripting_group, instance.alias)<EOL>if (scripting_group,) in aliases:<EOL><INDENT>message = "<STR_LIT>"<EOL>message += "<STR_LIT>"<EOL>message = message.format(<EOL>scripting_group, aliases[(scripting_group,)].__name__<EOL>)<EOL>raise Exception(message)<EOL><DEDENT>if entry in aliases:<EOL><INDENT>message = "<STR_LIT>"<EOL>message = message.format(<EOL>aliases[entry].__name__, cli_class.__name__<EOL>)<EOL>raise Exception(message)<EOL><DEDENT>aliases[entry] = cli_class<EOL><DEDENT>else:<EOL><INDENT>entry = (instance.alias,)<EOL>if entry in scripting_groups:<EOL><INDENT>message = "<STR_LIT>"<EOL>message += "<STR_LIT>"<EOL>message = message.format(cli_class.__name__, instance.alias)<EOL>raise Exception(message)<EOL><DEDENT>if entry in aliases:<EOL><INDENT>message = "<STR_LIT>"<EOL>message = message.format(cli_class.__name__, aliases[entry])<EOL>raise Exception(message)<EOL><DEDENT>aliases[(instance.alias,)] = cli_class<EOL><DEDENT><DEDENT>else:<EOL><INDENT>if instance.program_name in scripting_groups:<EOL><INDENT>message = "<STR_LIT>"<EOL>message += "<STR_LIT>"<EOL>message = message.format(cli_class.__name__, instance.program_name)<EOL>raise Exception(message)<EOL><DEDENT>aliases[(instance.program_name,)] = cli_class<EOL><DEDENT><DEDENT>alias_map = {}<EOL>for key, value in aliases.items():<EOL><INDENT>if len(key) == <NUM_LIT:1>:<EOL><INDENT>alias_map[key[<NUM_LIT:0>]] = value<EOL><DEDENT>else:<EOL><INDENT>if key[<NUM_LIT:0>] not in alias_map:<EOL><INDENT>alias_map[key[<NUM_LIT:0>]] = {}<EOL><DEDENT>alias_map[key[<NUM_LIT:0>]][key[<NUM_LIT:1>]] = value<EOL><DEDENT><DEDENT>return alias_map<EOL>
r"""Developer script aliases.