- 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