File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -1034,7 +1034,14 @@ def check_parser_uninstallable(parser: Cmd2ArgumentParser) -> None:
10341034 # No subcommands to check
10351035 return
10361036
1037+ # Prevent redundant traversal of parser aliases
1038+ checked_parsers : set [Cmd2ArgumentParser ] = set ()
1039+
10371040 for subparser in subparsers_action .choices .values ():
1041+ if subparser in checked_parsers :
1042+ continue
1043+ checked_parsers .add (subparser )
1044+
10381045 attached_cmdset_id = getattr (subparser , constants .PARSER_ATTR_COMMANDSET_ID , None )
10391046 if attached_cmdset_id is not None and attached_cmdset_id != cmdset_id :
10401047 raise CommandSetRegistrationError (
Original file line number Diff line number Diff line change @@ -19,8 +19,15 @@ def get_sub_commands(parser: Cmd2ArgumentParser) -> list[str]:
1919 # No subcommands
2020 return []
2121
22+ # Prevent redundant traversal of parser aliases
23+ checked_parsers : set [Cmd2ArgumentParser ] = set ()
24+
2225 sub_cmds = []
2326 for subcmd , subcmd_parser in subparsers_action .choices .items ():
27+ if subcmd_parser in checked_parsers :
28+ continue
29+ checked_parsers .add (subcmd_parser )
30+
2431 sub_cmds .append (subcmd )
2532
2633 # Look for nested subcommands
You can’t perform that action at this time.
0 commit comments