cmd2.decorators¶
Decorators for cmd2 commands
- cmd2.decorators.with_category(category: str) Callable[[Callable[[...], Optional[bool]]], Callable[[...], Optional[bool]]]¶
A decorator to apply a category to a
do_*command method.- Parameters:
category – the name of the category in which this command should be grouped when displaying the list of commands.
- Example:
>>> class MyApp(cmd2.Cmd): >>> @cmd2.with_category('Text Functions') >>> def do_echo(self, args) >>> self.poutput(args)
For an alternative approach to categorizing commands using a function, see
categorize()
- cmd2.decorators.ArgListCommandFuncOptionalBoolReturn¶
Function signature for an Command Function that accepts a pre-processed argument list from user input and optionally returns a boolean
alias of
Union[Callable[[cmd2.Cmd,List[str]],Optional[bool]],Callable[[CommandSet,List[str]],Optional[bool]]]
- cmd2.decorators.ArgListCommandFuncBoolReturn¶
Function signature for an Command Function that accepts a pre-processed argument list from user input and returns a boolean
alias of
Union[Callable[[cmd2.Cmd,List[str]],bool],Callable[[CommandSet,List[str]],bool]]
- cmd2.decorators.ArgListCommandFuncNoneReturn¶
Function signature for an Command Function that accepts a pre-processed argument list from user input and returns Nothing
alias of
Union[Callable[[cmd2.Cmd,List[str]],None],Callable[[CommandSet,List[str]],None]]
- cmd2.decorators.ArgListCommandFunc¶
Aggregate of all accepted function signatures for Command Functions that accept a pre-processed argument list
alias of
Union[Callable[[cmd2.Cmd,List[str]],Optional[bool]],Callable[[CommandSet,List[str]],Optional[bool]],Callable[[cmd2.Cmd,List[str]],bool],Callable[[CommandSet,List[str]],bool],Callable[[cmd2.Cmd,List[str]],None],Callable[[CommandSet,List[str]],None]]
- cmd2.decorators.with_argument_list(func_arg: Optional[Union[Callable[[cmd2.Cmd, List[str]], Optional[bool]], Callable[[CommandSet, List[str]], Optional[bool]], Callable[[cmd2.Cmd, List[str]], bool], Callable[[CommandSet, List[str]], bool], Callable[[cmd2.Cmd, List[str]], None], Callable[[CommandSet, List[str]], None]]] = None, *, preserve_quotes: bool = False) Union[Callable[[Union[CommandSet, cmd2.Cmd], Union[Statement, str]], Optional[bool]], Callable[[Union[Callable[[cmd2.Cmd, List[str]], Optional[bool]], Callable[[CommandSet, List[str]], Optional[bool]], Callable[[cmd2.Cmd, List[str]], bool], Callable[[CommandSet, List[str]], bool], Callable[[cmd2.Cmd, List[str]], None], Callable[[CommandSet, List[str]], None]]], Callable[[Union[CommandSet, cmd2.Cmd], Union[Statement, str]], Optional[bool]]]]¶
A decorator to alter the arguments passed to a
do_*method. Default passes a string of whatever the user typed. With this decorator, the decorated method will receive a list of arguments parsed from user input.- Parameters:
func_arg – Single-element positional argument list containing
do_*method this decorator is wrappingpreserve_quotes – if
True, then argument quotes will not be stripped
- Returns:
function that gets passed a list of argument strings
- Example:
>>> class MyApp(cmd2.Cmd): >>> @cmd2.with_argument_list >>> def do_echo(self, arglist): >>> self.poutput(' '.join(arglist)
- cmd2.decorators.ArgparseCommandFuncOptionalBoolReturn¶
Function signature for a Command Function that uses an argparse.ArgumentParser to process user input and optionally returns a boolean
alias of
Union[Callable[[cmd2.Cmd,Namespace],Optional[bool]],Callable[[CommandSet,Namespace],Optional[bool]]]
- cmd2.decorators.ArgparseCommandFuncBoolReturn¶
Function signature for a Command Function that uses an argparse.ArgumentParser to process user input and returns a boolean
alias of
Union[Callable[[cmd2.Cmd,Namespace],bool],Callable[[CommandSet,Namespace],bool]]
- cmd2.decorators.ArgparseCommandFuncNoneReturn¶
Function signature for an Command Function that uses an argparse.ArgumentParser to process user input and returns nothing
alias of
Union[Callable[[cmd2.Cmd,Namespace],None],Callable[[CommandSet,Namespace],None]]
- cmd2.decorators.ArgparseCommandFunc¶
Aggregate of all accepted function signatures for an argparse Command Function
alias of
Union[Callable[[cmd2.Cmd,Namespace],Optional[bool]],Callable[[CommandSet,Namespace],Optional[bool]],Callable[[cmd2.Cmd,Namespace],bool],Callable[[CommandSet,Namespace],bool],Callable[[cmd2.Cmd,Namespace],None],Callable[[CommandSet,Namespace],None]]
- cmd2.decorators.with_argparser(parser: ArgumentParser, *, ns_provider: Optional[Callable[[...], Namespace]] = None, preserve_quotes: bool = False, with_unknown_args: bool = False) Callable[[Union[Callable[[cmd2.Cmd, Namespace], Optional[bool]], Callable[[CommandSet, Namespace], Optional[bool]], Callable[[cmd2.Cmd, Namespace], bool], Callable[[CommandSet, Namespace], bool], Callable[[cmd2.Cmd, Namespace], None], Callable[[CommandSet, Namespace], None]]], Callable[[Union[CommandSet, cmd2.Cmd], Union[Statement, str]], Optional[bool]]]¶
A decorator to alter a cmd2 method to populate its
argsargument by parsing arguments with the given instance of argparse.ArgumentParser.- Parameters:
parser – unique instance of ArgumentParser
ns_provider – An optional function that accepts a cmd2.Cmd or cmd2.CommandSet object as an argument and returns an argparse.Namespace. This is useful if the Namespace needs to be prepopulated with state data that affects parsing.
preserve_quotes – if
True, then arguments passed to argparse maintain their quoteswith_unknown_args – if true, then capture unknown args
- Returns:
function that gets passed argparse-parsed args in a
NamespaceAcmd2.argparse_custom.Cmd2AttributeWrappercalledcmd2_statementis included in theNamespaceto provide access to thecmd2.Statementobject that was created when parsing the command line. This can be useful if the command function needs to know the command line.- Example:
>>> parser = cmd2.Cmd2ArgumentParser() >>> parser.add_argument('-p', '--piglatin', action='store_true', help='atinLay') >>> parser.add_argument('-s', '--shout', action='store_true', help='N00B EMULATION MODE') >>> parser.add_argument('-r', '--repeat', type=int, help='output [n] times') >>> parser.add_argument('words', nargs='+', help='words to print') >>> >>> class MyApp(cmd2.Cmd): >>> @cmd2.with_argparser(parser, preserve_quotes=True) >>> def do_argprint(self, args): >>> "Print the options and argument list this options command was called with." >>> self.poutput(f'args: {args!r}')
- Example with unknown args:
>>> parser = cmd2.Cmd2ArgumentParser() >>> parser.add_argument('-p', '--piglatin', action='store_true', help='atinLay') >>> parser.add_argument('-s', '--shout', action='store_true', help='N00B EMULATION MODE') >>> parser.add_argument('-r', '--repeat', type=int, help='output [n] times') >>> >>> class MyApp(cmd2.Cmd): >>> @cmd2.with_argparser(parser, with_unknown_args=True) >>> def do_argprint(self, args, unknown): >>> "Print the options and argument list this options command was called with." >>> self.poutput(f'args: {args!r}') >>> self.poutput(f'unknowns: {unknown}')
- cmd2.decorators.as_subcommand_to(command: str, subcommand: str, parser: ArgumentParser, *, help: Optional[str] = None, aliases: Optional[List[str]] = None) Callable[[Union[Callable[[cmd2.Cmd, Namespace], Optional[bool]], Callable[[CommandSet, Namespace], Optional[bool]], Callable[[cmd2.Cmd, Namespace], bool], Callable[[CommandSet, Namespace], bool], Callable[[cmd2.Cmd, Namespace], None], Callable[[CommandSet, Namespace], None]]], Union[Callable[[cmd2.Cmd, Namespace], Optional[bool]], Callable[[CommandSet, Namespace], Optional[bool]], Callable[[cmd2.Cmd, Namespace], bool], Callable[[CommandSet, Namespace], bool], Callable[[cmd2.Cmd, Namespace], None], Callable[[CommandSet, Namespace], None]]]¶
Tag this method as a subcommand to an existing argparse decorated command.
- Parameters:
command – Command Name. Space-delimited subcommands may optionally be specified
subcommand – Subcommand name
parser – argparse Parser for this subcommand
help – Help message for this subcommand which displays in the list of subcommands of the command we are adding to. This is passed as the help argument to ArgumentParser.add_subparser().
aliases – Alternative names for this subcommand. This is passed as the alias argument to ArgumentParser.add_subparser().
- Returns:
Wrapper function that can receive an argparse.Namespace