Releases: python-cmd2/cmd2
Releases · python-cmd2/cmd2
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
help
command 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_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.
- 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 calledhidden_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
)
- This list also no longer takes the function names of commands (
excludeFromHistory
is now calledexclude_from_history
cmd_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.
0.8.2 (March 21, 2018)
- 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 forshared_attributes
- Added a check to
ppaged()
to only use a pager when running in a real fully functional terminal
- Enhancements
- Added 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 example to demonstrate how to display tabular data
- Added command aliasing with
alias
andunalias
commands - Added the ability to load an initialization script at startup
- See 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 andreadline
if not
0.8.1 (March 9, 2018)
- 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
- Fixed a bug if a non-existent do_* method was added to the
- Enhancements
- Added support for sub-menus.
- See submenus.py for an example of how to use it
- Added option for persistent readline history
- See persistent_history.py for an example
- See the 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
andexcludeFromHistory
are now instance instead of class attributes- Added flag and index based tab completion helper functions
- Added support for displaying output which won't fit on the screen via a pager using
ppaged()
- See paged_output.py
- Added support for sub-menus.
- 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 (February 1, 2018)
- 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_argparser 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()
- with_argument_list decorator to change argument type from str to List[str]
- See the Argument Processing section of the documentation for more information on these decorators
- Alternatively, see the argparse_example.py
and arg_print.py examples
- Alternatively, see the argparse_example.py
- Added support for Argpasre sub-commands when using the with_argument_parser or with_argparser_and_unknown_args decorators
- See subcommands.py for an example of how to use subcommands
- Tab-completion of sub-command 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
- This makes creating regression tests for your
- Three new decorators for do_* commands to make argument parsing easier
- 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 thecontextlib2
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
- The old options decorator for optparse-based argument parsing is now deprecated
0.7.9 (January 4, 2018)
- 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.
0.7.8 (November 8, 2017)
- Bug Fixes
- Fixed
poutput()
so it can print an integer zero and other falsy things - Fixed a bug which was causing autodoc to fail for building docs on Readthedocs
- Fixed bug due to
pyperclip
dependency radically changing its project structure in latest version
- Fixed
- Enhancements
- Improved documentation for user-settable environment parameters
- Improved documentation for overriding the default supported comment styles
- Added
runcmds_plus_hooks()
method to run multiple commands w/o a cmdloop
0.7.7 (August 25, 2017)
- Bug Fixes
- Added workaround for bug which occurs in Python 2.7 on Linux when
pygtk
is installed pfeedback()
now honors feedback_to_output setting and won't redirect when it isFalse
- For
edit
command, both editor and filename can now have spaces in the name/path - Fixed a bug which occurred when stdin was a pipe instead of a tty due to input redirection
- Added workaround for bug which occurs in Python 2.7 on Linux when
- Enhancements
feedback_to_output
now defaults toFalse
so info like command timing won't redirect- Transcript regular expressions now have predictable, tested, and documented behavior
- This makes a breaking change to the format and expectations of transcript testing
- The prior behavior removed whitespace before making the comparison, now whitespace must match exactly
- Prior version did not allow regexes with whitespace, new version allows any regex
- Improved display for
load
command and input redirection when echo isTrue
0.7.6 (August 11, 2017)
- Bug Fixes
- Case-sensitive command parsing was completely broken and has been fixed
<Ctrl>+d
now properly quits when case-sensitive command parsing is enabled- Fixed some pyperclip clipboard interaction bugs on Linux
- Fixed some timing bugs when running unit tests in parallel by using monkeypatch
- Enhancements
- Enhanced tab-completion of cmd2 command names to support case-insensitive completion
- Added an example showing how to remove unused commands
- Improved how transcript testing handles prompts with ANSI escape codes by stripping them
- Greatly improved implementation for how command output gets piped to a shell command
0.7.5
Release date: 2017-07-08
- Bug Fixes
case_insensitive
is no longer a runtime-settable parameter, but it was still listed as such- Fixed a recursive loop bug when abbreviated commands are enabled and it could get stuck in the editor forever
- Added additional command abbreviations to the "exclude from history" list
- Fixed argparse_example.py and pirate.py examples and transcript_regex.txt transcript
- Fixed a bug in a unit test which occurred under unusual circumstances
- Enhancements
- Organized all attributes used to configure the ParserManager into a single location
- Set the default value of
abbrev
toFalse
(which controls whether or not abbreviated commands are allowed)- With good tab-completion of command names, using abbreviated commands isn't particularly useful
- And it can create complications if you are't careful
- Improved implementation of
load
to use command queue instead of nested inner loop