Cmd2

Latest version: v2.5.11

Safety actively analyzes 723158 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 14 of 17

0.8.4

- Bug Fixes
- Fixed conditional dependency issue in setup.py that was in 0.8.3.

0.8.3

- Bug Fixes

- Fixed `help` command not calling functions for help topics
- Fixed not being able to use quoted paths when redirecting with `<` and `>`

- Enhancements

- Tab completion has been overhauled and now supports completion of strings with quotes and spaces.
- Tab completion will automatically add an opening quote if a string with a space is completed.
- Added `delimiter_complete` function for tab completing delimited strings
- Added more control over tab completion behavior including the following flags. The use of these flags is documented in cmd2.py
- `allow_appended_space`
- `allow_closing_quote`
- Due to the tab completion changes, non-Windows platforms now depend on [wcwidth](https://pypi.python.org/pypi/wcwidth).
- An alias name can now match a command name.
- An alias can now resolve to another alias.

- Attribute Changes (Breaks backward compatibility)
- `exclude_from_help` is now called `hidden_commands` since these commands are hidden from things other than help, including tab completion
- This list also no longer takes the function names of commands (`do_history`), but instead uses the command names themselves (`history`)
- `excludeFromHistory` is now called `exclude_from_history`
- `cmd_with_subs_completer()` no longer takes an argument called `base`. Adding tab completion to subcommands has been simplified to declaring it in the
subcommand parser's default settings. This easily allows arbitrary completers like path_complete to be used.
See [subcommands.py](https://github.com/python-cmd2/cmd2/blob/master/examples/subcommands.py) for an example of how to use
tab completion in subcommands. In addition, the docstring for `cmd_with_subs_completer()` offers more details.

0.8.2

- Bug Fixes
- Fixed a bug in tab completion of command names within sub-menus
- Fixed a bug when using persistent readline history in Python 2.7
- Fixed a bug where the `AddSubmenu` decorator didn't work with a default value for `shared_attributes`
- Added a check to `ppaged()` to only use a pager when running in a real fully functional terminal
- Enhancements
- Added [quit_on_sigint](http://cmd2.readthedocs.io/en/latest/settingchanges.html#quit-on-sigint) attribute to enable canceling current line instead of quitting when Ctrl+C is typed
- Added possibility of having readline history preservation in a SubMenu
- Added [table_display.py](https://github.com/python-cmd2/cmd2/blob/master/examples/table_display.py) example to demonstrate how to display tabular data
- Added command aliasing with `alias` and `unalias` commands
- Added the ability to load an initialization script at startup
- See [alias_startup.py](https://github.com/python-cmd2/cmd2/blob/master/examples/alias_startup.py) for an example
- Added a default SIGINT handler which terminates any open pipe subprocesses and re-raises a KeyboardInterrupt
- For macOS, will load the `gnureadline` module if available and `readline` if not

0.8.1

- Bug Fixes
- Fixed a bug if a non-existent **do\_\*** method was added to the `exclude_from_help` list
- Fixed a bug in a unit test which would fail if your home directory was empty on a Linux system
- Fixed outdated help text for the **edit** command
- Fixed outdated [remove_unused.py](https://github.com/python-cmd2/cmd2/blob/master/examples/remove_unused.py)
- Enhancements
- Added support for sub-menus.
- See [submenus.py](https://github.com/python-cmd2/cmd2/blob/master/examples/submenus.py) for an example of how to use it
- Added option for persistent readline history
- See [persistent_history.py](https://github.com/python-cmd2/cmd2/blob/master/examples/persistent_history.py) for an example
- See the [Searchable command history](http://cmd2.readthedocs.io/en/latest/freefeatures.html#searchable-command-history) section of the documentation for more info
- Improved PyPI packaging by including unit tests and examples in the tarball
- Improved documentation to make it more obvious that **poutput()** should be used instead of **print()**
- `exclude_from_help` and `excludeFromHistory` are now instance instead of class attributes
- Added flag and index based tab completion helper functions
- See [tab_completion.py](https://github.com/python-cmd2/cmd2/blob/master/examples/tab_completion.py)
- Added support for displaying output which won't fit on the screen via a pager using `ppaged()`
- See [paged_output.py](https://github.com/python-cmd2/cmd2/blob/master/examples/paged_output.py)
- Attributes Removed (**can cause breaking changes**)
- `abbrev` - Removed support for abbreviated commands
- Good tab completion makes this unnecessary and its presence could cause harmful unintended actions
- `case_insensitive` - Removed support for case-insensitive command parsing
- Its presence wasn't very helpful and could cause harmful unintended actions

0.8.0

- Bug Fixes
- Fixed unit tests on Python 3.7 due to changes in how re.escape() behaves in Python 3.7
- Fixed a bug where unknown commands were getting saved in the history
- Enhancements
- Three new decorators for **do\_\*** commands to make argument parsing easier
- **with_argument_list** decorator to change argument type from str to List[str]
- **do\_\*** commands get a single argument which is a list of strings, as pre-parsed by shlex.split()
- **with_arparser** decorator for strict argparse-based argument parsing of command arguments
- **do\_\*** commands get a single argument which is the output of argparse.parse_args()
- **with_argparser_and_unknown_args** decorator for argparse-based argument parsing, but allows unknown args
- **do\_\*** commands get two arguments, the output of argparse.parse_known_args()
- See the [Argument Processing](http://cmd2.readthedocs.io/en/latest/argument_processing.html) section of the documentation for more information on these decorators
- Alternatively, see the [argparse_example.py](https://github.com/python-cmd2/cmd2/blob/master/examples/argparse_example.py)
and [arg_print.py](https://github.com/python-cmd2/cmd2/blob/master/examples/arg_print.py) examples
- Added support for Argparse subcommands when using the **with_argument_parser** or **with_argparser_and_unknown_args** decorators
- See [subcommands.py](https://github.com/python-cmd2/cmd2/blob/master/examples/subcommands.py) for an example of how to use subcommands
- Tab completion of subcommand names is automatically supported
- The **\_\_relative_load** command is now hidden from the help menu by default
- This command is not intended to be called from the command line, only from within scripts
- The **set** command now has an additional **-a/--all** option to also display read-only settings
- The **history** command can now run, edit, and save prior commands, in addition to displaying prior commands.
- The **history** command can now automatically generate a transcript file for regression testing
- This makes creating regression tests for your `cmd2` application trivial
- Commands Removed
- The **cmdenvironment** has been removed and its functionality incorporated into the **-a/--all** argument to **set**
- The **show** command has been removed. Its functionality has always existing within **set** and continues to do so
- The **save** command has been removed. The capability to save commands is now part of the **history** command.
- The **run** command has been removed. The capability to run prior commands is now part of the **history** command.
- Other changes
- The **edit** command no longer allows you to edit prior commands. The capability to edit prior commands is now part of the **history** command. The **edit** command still allows you to edit arbitrary files.
- the **autorun_on_edit** setting has been removed.
- For Python 3.4 and earlier, `cmd2` now has an additional dependency on the `contextlib2` module
- Deprecations
- The old **options** decorator for optparse-based argument parsing is now _deprecated_
- The old decorator is still present for now, but will be removed in a future release
- `cmd2` no longer includes **optparse.make_option**, so if your app needs it import directly from optparse

0.7.9

- Bug Fixes
- Fixed a couple broken examples
- Enhancements
- Improved documentation for modifying shortcuts (command aliases)
- Made `pyreadline` a dependency on Windows to ensure tab completion works
- Other changes
- Abandoned official support for Python 3.3. It should still work, just don't have an easy way to test it anymore.

Page 14 of 17

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.