You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fixed issue where history indexes could get repeated
Fixed issue where TableCreator was tossing blank last line
Corrected help text for alias command
Breaking Changes
cmd2 2.0 supports Python 3.6+ (removed support for Python 3.5)
Argparse Completion / Settables
Replaced choices_function / choices_method with choices_provider.
Replaced completer_function / completer_method with completer.
ArgparseCompleter now always passes cmd2.Cmd or CommandSet instance as the first positional
argument to choices_provider and completer functions.
Moved basic_complete from utils into cmd2.Cmd class.
Moved CompletionError to exceptions.py
Namespace.__statement__ has been removed. Use Namespace.cmd2_statement.get() instead.
Removed --silent flag from alias/macro create since startup scripts can be run silently.
Removed --with_silent flag from alias/macro list since startup scripts can be run silently.
Removed with_argparser_and_unknown_args since it was deprecated in 1.3.0.
Renamed silent_startup_script to silence_startup_script for clarity.
Replaced cmd2.Cmd.completion_header with cmd2.Cmd.formatted_completions. See Enhancements
for description of this new class member.
Settables now have new initialization parameters. It is now a required parameter to supply the reference to the
object that holds the settable attribute. cmd2.Cmd.settables is no longer a public dict attribute - it is now a
property that aggregates all Settables across all registered CommandSets.
Failed transcript testing now sets self.exit_code to 1 instead of -1.
Renamed use_ipython keyword parameter of cmd2.Cmd.__init__() to include_ipy.
py command is only enabled if include_py parameter is True. See Enhancements for a description
of this parameter.
Removed ability to run Python commands from the command line with py. Now py takes no arguments
and just opens an interactive Python shell.
Changed default behavior of runcmds_plus_hooks() to not stop when Ctrl-C is pressed and instead
run the next command in its list.
Removed cmd2.Cmd.quit_on_sigint flag, which when True, quit the application when Ctrl-C was pressed at the prompt.
The history bug fix resulted in structure changes to the classes in cmd2.history. Therefore, persistent history
files created with versions older than 2.0.0 are not compatible.
Enhancements
Added support for custom tab completion and up-arrow input history to cmd2.Cmd2.read_input.
See read_input.py for an example.
Added cmd2.exceptions.PassThroughException to raise unhandled command exceptions instead of printing them.
Added support for ANSI styles and newlines in tab completion results using cmd2.Cmd.formatted_completions. cmd2 provides this capability automatically if you return argparse completion matches as CompletionItems.
Settables enhancements:
Settables may be optionally scoped to a CommandSet. Settables added to CommandSets will appear when a
CommandSet is registered and disappear when a CommandSet is unregistered. Optionally, scoped Settables
may have a prepended prefix.
Settables now allow changes to be applied to any arbitrary object attribute. It no longer needs to match an
attribute added to the cmd2 instance itself.
Raising SystemExit or calling sys.exit() in a command or hook function will set self.exit_code
to the exit code used in those calls. It will also result in the command loop stopping.
ipy command now includes all of self.py_locals in the IPython environment
Added include_py keyword parameter to cmd2.Cmd.__init__(). If False, then the py command will
not be available. Defaults to False. run_pyscript is not affected by this parameter.
Made the amount of space between columns in a SimpleTable configurable
On POSIX systems, shell commands and processes being piped to are now run in the user's preferred shell
instead of /bin/sh. The preferred shell is obtained by reading the SHELL environment variable. If that
doesn't exist or is empty, then /bin/sh is used.
Changed cmd2.Cmd._run_editor() to the public method cmd2.Cmd.run_editor()