From 872da20feba57f42dde204da01dc48c4c87e1b54 Mon Sep 17 00:00:00 2001 From: Eric Lin Date: Thu, 10 Sep 2020 09:15:05 -0400 Subject: Changes default category to be heritable by default - meaning that subclasses will inherit the parent class's default category. Adds optional flag to disable heritability. --- cmd2/cmd2.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'cmd2/cmd2.py') diff --git a/cmd2/cmd2.py b/cmd2/cmd2.py index 3e9ea9bc..97378bef 100644 --- a/cmd2/cmd2.py +++ b/cmd2/cmd2.py @@ -46,7 +46,7 @@ from . import ansi, constants, plugin, utils from .argparse_custom import DEFAULT_ARGUMENT_PARSER, CompletionItem from .clipboard import can_clip, get_paste_buffer, write_to_paste_buffer from .command_definition import CommandSet -from .constants import COMMAND_FUNC_PREFIX, COMPLETER_FUNC_PREFIX, HELP_FUNC_PREFIX +from .constants import CLASS_ATTR_DEFAULT_HELP_CATEGORY, COMMAND_FUNC_PREFIX, COMPLETER_FUNC_PREFIX, HELP_FUNC_PREFIX from .decorators import with_argparser, as_subcommand_to from .exceptions import ( CommandSetRegistrationError, @@ -483,6 +483,8 @@ class Cmd(cmd.Cmd): predicate=lambda meth: isinstance(meth, Callable) and hasattr(meth, '__name__') and meth.__name__.startswith(COMMAND_FUNC_PREFIX)) + default_category = getattr(cmdset, CLASS_ATTR_DEFAULT_HELP_CATEGORY, None) + installed_attributes = [] try: for method_name, method in methods: @@ -505,6 +507,9 @@ class Cmd(cmd.Cmd): self._cmd_to_command_sets[command] = cmdset + if default_category and not hasattr(method, constants.CMD_ATTR_HELP_CATEGORY): + utils.categorize(method, default_category) + self._installed_command_sets.append(cmdset) self._register_subcommands(cmdset) -- cgit v1.2.1