Cmd2

Latest version: v2.5.11

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

Scan your dependencies

Page 13 of 17

0.9.1

- Bug Fixes
- fix packaging error for 0.8.x versions (yes we had to deploy a new version
of the 0.9.x series to fix a packaging error with the 0.8.x version)

0.9.0

- Bug Fixes
- If self.default_to_shell is true, then redirection and piping are now properly passed to the shell. Previously it was truncated.
- Submenus now call all hooks, it used to just call precmd and postcmd.
- Enhancements
- Automatic completion of `argparse` arguments via `cmd2.argparse_completer.AutoCompleter`
- See the [tab_autocompletion.py](https://github.com/python-cmd2/cmd2/blob/master/examples/tab_autocompletion.py) example for a demonstration of how to use this feature
- `cmd2` no longer depends on the `six` module
- `cmd2` is now a multi-file Python package instead of a single-file module
- New pyscript approach that provides a pythonic interface to commands in the cmd2 application.
- Switch command parsing from pyparsing to custom code which utilizes shlex.
- The object passed to do*\* methods has changed. It no longer is the pyparsing object, it's a new Statement object, which is a subclass of `str`. The statement object has many attributes which give you access to various components of the parsed input. If you were using anything but the string in your do*\* methods, this change will require you to update your code.
- `commentGrammars` is no longer supported or available. Comments are C-style or python style.
- Input redirection no longer supported. Use the load command instead.
- `multilineCommand` attribute is `now multiline_command`
- `identchars` is now ignored. The standardlibrary cmd uses those characters to split the first "word" of the input, but cmd2 hasn't used those for a while, and the new parsing logic parses on whitespace, which has the added benefit of full unicode support, unlike cmd or prior versions of cmd2.
- `set_posix_shlex` function and `POSIX_SHLEX` variable have been removed. Parsing behavior is now always the more forgiving `posix=false`.
- `set_strip_quotes` function and `STRIP_QUOTES_FOR_NON_POSIX` have been removed. Quotes are stripped from arguments when presented as a list (a la `sys.argv`), and present when arguments are presented as a string (like the string passed to do\_\*).
- Changes
- `strip_ansi()` and `strip_quotes()` functions have moved to new utils module
- Several constants moved to new constants module
- Submenu support has been moved to a new [cmd2-submenu](https://github.com/python-cmd2/cmd2-submenu) plugin. If you use submenus, you will need to update your dependencies and modify your imports.
- Deletions (potentially breaking changes)
- Deleted all `optparse` code which had previously been deprecated in release 0.8.0
- The `options` decorator no longer exists
- All `cmd2` code should be ported to use the new `argparse`-based decorators
- 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)
- Deleted `cmd_with_subs_completer`, `get_subcommands`, and `get_subcommand_completer`
- Replaced by default AutoCompleter implementation for all commands using argparse
- Deleted support for old method of calling application commands with `cmd()` and `self`
- `cmd2.redirector` is no longer supported. Output redirection can only be done with '>' or '>>'
- Deleted `postparse()` hook since it was redundant with `postparsing_precmd`
- Python 2 no longer supported
- `cmd2` now supports Python 3.4+
- Known Issues
- Some developers have noted very slow performance when importing the `cmd2` module. The issue
it intermittent, and investigation of the root cause is ongoing.

0.8.9

- Bug Fixes
- Fixed extra slash that could print when tab completing users on Windows

0.8.8

- Bug Fixes
- Prevent crashes that could occur attempting to open a file in non-existent directory or with very long filename
- Enhancements
- `display_matches` is no longer restricted to delimited strings

0.8.6

- Bug Fixes
- Commands using the with_argparser_and_unknown_args were not correctly recognized when tab completing
- Fixed issue where completion display function was overwritten when a submenu quits
- Fixed `AttributeError` on Windows when running a `select` command cause by **pyreadline** not implementing `remove_history_item`
- Enhancements
- Added warning about **libedit** variant of **readline** not being supported on macOS
- Added tab completion of alias names in value field of **alias** command
- Enhanced the `py` console in the following ways
- Added tab completion of Python identifiers instead of **cmd2** commands
- Separated the `py` console history from the **cmd2** history

0.8.5

- Bug Fixes

- Fixed a bug with all argument decorators where the wrapped function wasn't returning a value and thus couldn't cause the cmd2 app to quit

- Enhancements

- Added support for verbose help with -v where it lists a brief summary of what each command does
- Added support for categorizing commands into groups within the help menu
- See the [Grouping Commands](http://cmd2.readthedocs.io/en/latest/argument_processing.html?highlight=verbose#grouping-commands) section of the docs for more info
- See [help_categories.py](https://github.com/python-cmd2/cmd2/blob/master/examples/help_categories.py) for an example
- Tab completion of paths now supports ~user user path expansion
- Simplified implementation of various tab completion functions so they no longer require `ctypes`
- Expanded documentation of `display_matches` list to clarify its purpose. See cmd2.py for this documentation.
- Adding opening quote to tab completion if any of the completion suggestions have a space.

- **Python 2 EOL notice**
- This is the last release where new features will be added to `cmd2` for Python 2.7
- The 0.9.0 release of `cmd2` will support Python 3.4+ only
- Additional 0.8.x releases may be created to supply bug fixes for Python 2.7 up until August 31, 2018
- After August 31, 2018 not even bug fixes will be provided for Python 2.7

Page 13 of 17

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.