Releases: python-cmd2/cmd2
Releases · python-cmd2/cmd2
0.9.4 (August 21, 2018)
- Bug Fixes
- Fixed bug where
preparse
was not getting called - Fixed bug in parsing of multiline commands where matching quote is on another line
- Fixed bug where
- Enhancements
- Improved implementation of lifecycle hooks to support a plugin
framework, seedocs/hooks.rst
for details. - New dependency on
attrs
third party module - Added
matches_sorted
member to support custom sorting of tab-completion matches - Added tab_autocomp_dynamic.py example
- Demonstrates updating the argparse object during init instead of during class construction
- Improved implementation of lifecycle hooks to support a plugin
- Deprecations
- Deprecated the following hook methods, see
hooks.rst
for full details:cmd2.Cmd.preparse()
- equivalent functionality available
viacmd2.Cmd.register_postparsing_hook()
cmd2.Cmd.postparsing_precmd()
- equivalent functionality available
viacmd2.Cmd.register_postparsing_hook()
cmd2.Cmd.postparsing_postcmd()
- equivalent functionality available
viacmd2.Cmd.register_postcmd_hook()
- Deprecated the following hook methods, see
0.8.9 (August 20, 2018)
- Bug Fixes
- Fixed extra slash that could print when tab completing users on Windows
NOTE: This is likely the final release of cmd2
for Python 2.7
0.9.3 (July 12, 2018)
- Bug Fixes
- Fixed bug when StatementParser
__init__()
was called withterminators
equal toNone
- Fixed bug when
Cmd.onecmd()
was called with a rawstr
- Fixed bug when StatementParser
- Enhancements
- Added
--clear
flag tohistory
command that clears both the command and readline history.
- Added
- Deletions
- The
CmdResult
helper class which was deprecated in the previous release has now been deleted- It has been replaced by the improved
CommandResult
class
- It has been replaced by the improved
- The
0.9.2 (June 28, 2018)
- Bug Fixes
- Fixed issue where piping and redirecting did not work correctly with paths that had spaces
- Enhancements
- Added ability to print a header above tab-completion suggestions using
completion_header
member - Added
pager
andpager_chop
attributes to thecmd2.Cmd
classpager
defaults to less -RXF on POSIX and more on Windowspager_chop
defaults to less -SRXF on POSIX and more on Windows
- Added
chop
argument tocmd2.Cmd.ppaged()
method for displaying output using a pager- If
chop
isFalse
, thenself.pager
is used as the pager - Otherwise
self.pager_chop
is used as the pager
- If
- Greatly improved the table_display.py example
- Now uses the new tableformatter module which looks better than
tabulate
- Now uses the new tableformatter module which looks better than
- Added ability to print a header above tab-completion suggestions using
- Deprecations
- The
CmdResult
helper class is deprecated and replaced by the improvedCommandResult
classCommandResult
has the following attributes: stdout, stderr, and dataCmdResult
had attributes of: out, err, war
CmdResult
will be deleted in the next release
- The
0.8.8 (June 28, 2018)
- 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.9.1 (May 28, 2018)
- 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)
- Fix packaging error for 0.8.x versions (yes we had to deploy a new version
0.9.0 (May 28, 2018)
- 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 viacmd2.argparse_completer.AutoCompleter
- See the tab_autocompletion.py example for a demonstration of how to use this feature
cmd2
no longer depends on thesix
modulecmd2
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. commentGrammers
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 isnow 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 andPOSIX_SHLEX
variable have been removed. Parsing behavior is now always the more forgivingposix=false
.set_strip_quotes
function andSTRIP_QUOTES_FOR_NON_POSIX
have been removed. Quotes are stripped from arguments when presented as a list (a lasys.argv
), and present when arguments are presented as a string (like the string passed to do_*).
- 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
- Automatic completion of
- Changes
strip_ansi()
andstrip_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 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 newargparse
-based decorators - See the Argument Processing section of the documentation for more information on these decorators
- Alternatively, see the argparse_example.py
- The
- Deleted
cmd_with_subs_completer
,get_subcommands
, andget_subcommand_completer
- Replaced by default AutoCompleter implementation for all commands using argparse
- Deleted support for old method of calling application commands with
cmd()
andself
cmd2.redirector
is no longer supported. Output redirection can only be done with '>' or '>>'- Deleted
postparse()
hook since it was redundant withpostparsing_precmd
- Deleted all
- 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 intermittant, and investigation of the root cause is ongoing.
- Some developers have noted very slow performance when importing the
0.8.7 (May 28, 2018)
- Bug Fixes
- Make sure pip installs version 0.8.x if you have python 2.7
0.8.6 (May 27, 2018)
- 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 aselect
command cause by pyreadline not implementingremove_history_item
- Enhancements
- Added warning about libedit variant of readline not being supported on macOS
- Added tab-completion of alias names in value filed 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 (April 15, 2018)
-
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 section of the docs for more info
- See 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
- This is the last release where new features will be added to