Releases: python-cmd2/cmd2
Releases · python-cmd2/cmd2
0.9.3 (July 12, 2018)
- Bug Fixes
- Fixed bug when StatementParser
__init__()was called withterminatorsequal toNone - Fixed bug when
Cmd.onecmd()was called with a rawstr
- Fixed bug when StatementParser
- Enhancements
- Added
--clearflag tohistorycommand that clears both the command and readline history.
- Added
- Deletions
- The
CmdResulthelper class which was deprecated in the previous release has now been deleted- It has been replaced by the improved
CommandResultclass
- 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_headermember - Added
pagerandpager_chopattributes to thecmd2.Cmdclasspagerdefaults to less -RXF on POSIX and more on Windowspager_chopdefaults to less -SRXF on POSIX and more on Windows
- Added
chopargument tocmd2.Cmd.ppaged()method for displaying output using a pager- If
chopisFalse, thenself.pageris used as the pager - Otherwise
self.pager_chopis 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
CmdResulthelper class is deprecated and replaced by the improvedCommandResultclassCommandResulthas the following attributes: stdout, stderr, and dataCmdResulthad attributes of: out, err, war
CmdResultwill 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_matchesis 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
argparsearguments viacmd2.argparse_completer.AutoCompleter- See the tab_autocompletion.py example for a demonstration of how to use this feature
cmd2no longer depends on thesixmodulecmd2is 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. commentGrammersis no longer supported or available. Comments are C-style or python style.- Input redirection no longer supported. Use the load command instead.
multilineCommandattribute isnow multiline_commandidentcharsis 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_shlexfunction andPOSIX_SHLEXvariable have been removed. Parsing behavior is now always the more forgivingposix=false.set_strip_quotesfunction andSTRIP_QUOTES_FOR_NON_POSIXhave 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
optparsecode which had previously been deprecated in release 0.8.0- The
optionsdecorator no longer exists - All
cmd2code 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.redirectoris 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
cmd2now supports Python 3.4+
- Known Issues
- Some developers have noted very slow performance when importing the
cmd2module. 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
AttributeErroron Windows when running aselectcommand 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
pyconsole in the following ways- Added tab completion of Python identifiers instead of cmd2 commands
- Separated the
pyconsole 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_matcheslist 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
cmd2for Python 2.7 - The 0.9.0 release of
cmd2will 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
0.8.4 (April 10, 2018)
- Bug Fixes
- Fixed conditional dependency issue in setup.py that was in 0.8.3.
0.8.3 (April 09, 2018)
-
Bug Fixes
- Fixed
helpcommand not calling functions for help topics - Fixed not being able to use quoted paths when redirecting with
<and>
- Fixed
-
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_completefunction 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_spaceallow_closing_quote
- Due to the tab completion changes, non-Windows platforms now depend on 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_helpis now calledhidden_commandssince 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)
- This list also no longer takes the function names of commands (
excludeFromHistoryis now calledexclude_from_historycmd_with_subs_completer()no longer takes an argument calledbase. 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 for an example of how to use
tab completion in subcommands. In addition, the docstring forcmd_with_subs_completer()offers more details.