Releases: python-cmd2/cmd2
Releases · python-cmd2/cmd2
1.1.0 (June 6, 2020)
- Bug Fixes
- Fixed issue where subcommand usage text could contain a subcommand alias instead of the actual name
- Fixed bug in
ArgparseCompleter
wherefill_width
could become negative iftoken_width
was large
relative to the terminal width.
- Enhancements
- Made
ipy
consistent withpy
in the following waysipy
returns whether any of the commands run in it returned True to stop command loopCmd.in_pyscript()
returns True while inipy
.- Starting
ipy
whenCmd.in_pyscript()
is already True is not allowed.
with_argument_list
,with_argparser
, andwith_argparser_and_unknown_args
wrappers now pass
kwargs
through to their wrapped command function.- Added
table_creator
module for creating richly formatted tables. This module is in beta and subject
to change.- See table_creation
documentation for an overview. - See table_creation.py
for an example.
- See table_creation
- Added the following exceptions to the public API
SkipPostcommandHooks
- Custom exception class for when a command has a failure bad enough to skip
post command hooks, but not bad enough to print the exception to the user.Cmd2ArgparseError
- ASkipPostcommandHooks
exception for when a command fails to parse its arguments.
Normally argparse raises aSystemExit
exception in these cases. To avoid stopping the command
loop, catch theSystemExit
and raise this instead. If you still need to run post command hooks
after parsing fails, just return instead of raising an exception.
- Added explicit handling of
SystemExit
. If a command raises this exception, the command loop will be
gracefully stopped.
- Made
1.0.2 (April 06, 2020)
- Bug Fixes
- Ctrl-C now stops a running text script instead of just the current
run_script
command
- Ctrl-C now stops a running text script instead of just the current
- Enhancements
do_shell()
now saves the return code of the command it runs inself.last_result
for use in pyscripts
1.0.1 (March 13, 2020)
- Bug Fixes
- Fixed issue where postcmd hooks were running after an
argparse
exception in a command.
- Fixed issue where postcmd hooks were running after an
1.0.0 (March 1, 2020)
- Enhancements
- The documentation at cmd2.rftd.io received a major overhaul
- Other
- Moved categorize utility function from decorators module to utils module
- Notes
- Now that the 1.0 release is out,
cmd2
intends to follow Semantic Versioning
- Now that the 1.0 release is out,
0.10.1 (February 19, 2020)
- Bug Fixes
- Corrected issue where the actual new value was not always being printed in do_set. This occurred in cases where the typed value differed from what the setter had converted it to.
- Fixed bug where ANSI style sequences were not correctly handled in
utils.truncate_line()
. - Fixed bug where pyscripts could edit
cmd2.Cmd.py_locals
dictionary. - Fixed bug where cmd2 set
sys.path[0]
for a pyscript to cmd2's working directory instead of the script file's directory. - Fixed bug where
sys.path
was not being restored after a pyscript ran.
- Enhancements
- Renamed set command's
-l/--long
flag to-v/--verbose
for consistency with help and history commands. - Setting the following pyscript variables:
__name__
: main__file__
: script path (as typed, ~ will be expanded)
- Only tab complete after redirection tokens if redirection is allowed
- Made
CompletionError
exception available to non-argparse tab completion - Added
apply_style
toCompletionError
initializer. It defaults to True, but can be set to False if you don't want the error text to haveansi.style_error()
applied to it when printed.
- Renamed set command's
- Other
- Removed undocumented
py run
command since it was replaced byrun_pyscript
a while ago - Renamed
AutoCompleter
toArgparseCompleter
for clarity - Custom
EmptyStatement
exception is no longer part of the documented public API
- Removed undocumented
- Notes
- This is a beta release leading up to the 1.0.0 release
- We intend no more breaking changes prior to 1.0.0
- Just bug fixes, documentation updates, and enhancements
0.10.0 (February 7, 2020)
- Enhancements
- Changed the default help text to make
help -v
more discoverable - set command now supports tab-completion of values
- Added
add_settable()
andremove_settable()
convenience methods to updateself.settable
dictionary - Added convenience
ansi.fg
andansi.bg
enums of foreground and background colorsansi.style()
fg
argument can now either be of typestr
oransi.fg
ansi.style()
bg
argument can now either be of typestr
oransi.bg
- This supports IDE auto-completion of color names
- The enums also support
f-strings
andformat()
calls (e.g."{}hello{}".format(fg.blue, fg.reset)
)- string concatenation (e.g.
fg.blue + "hello" + fg.reset
)
- Changed the default help text to make
- Breaking changes
- Renamed
locals_in_py
attribute ofcmd2.Cmd
toself_in_py
- The following public attributes of
cmd2.Cmd
are no longer settable at runtime by default:continuation_prompt
self_in_py
prompt
self.settable
changed toself.settables
- It is now a Dict[str, Settable] instead of Dict[str, str]
- setting onchange callbacks have a new method signature and must be added to the
Settable instance in order to be called
- Removed
cast()
utility function - Removed
ansi.FG_COLORS
andansi.BG_COLORS
dictionaries- Replaced with
ansi.fg
andansi.bg
enums providing similar but improved functionality
- Replaced with
- Renamed
- Notes
- This is an alpha release leading up to the 1.0.0 release
- We intend no more breaking changes prior to 1.0.0
- Just bug fixes, documentation updates, and enhancements
0.9.25 (January 26, 2020)
- Enhancements
- Reduced what gets put in package downloadable from PyPI (removed irrelevant CI config files and such)
0.9.24 (January 23, 2020)
- Enhancements
- Flushing stderr when setting the window title and printing alerts for better responsiveness in cases where stderr is not unbuffered.
- Added function to truncate a single line to fit within a given display width.
cmd2.utils.truncate_line
supports characters with display widths greater than 1 and ANSI style sequences. - Added line truncation support to
cmd2.utils
text alignment functions. - Added support for Python 3.9 alpha
0.9.23 (January 9, 2020)
- Bug Fixes
- Fixed bug where startup script containing a single quote in its file name was incorrectly quoted
- Added missing implicit dependency on
setuptools
due to build withsetuptools_scm
- Enhancements
- Added dim text style support via
style()
function andansi.INTENSITY_DIM
setting.
- Added dim text style support via
- Breaking changes
- Renamed the following
ansi
members for accuracy in what types of ANSI escape sequences are handledansi.allow_ansi
->ansi.allow_style
ansi.ansi_safe_wcswidth()
->ansi.style_aware_wcswidth()
ansi.ansi_aware_write()
->ansi.style_aware_write()
- Renamed the following
ansi
members for clarificationansi.BRIGHT
->ansi.INTENSITY_BRIGHT
ansi.NORMAL
->ansi.INTENSITY_NORMAL
- Renamed the following
0.9.22 (December 9, 2019)
- Bug Fixes
- Fixed bug where a redefined
ansi.style_error
was not being used in allcmd2
files
- Fixed bug where a redefined
- Enhancements
- Enabled line buffering when redirecting output to a file
- Added
align_left()
,align_center()
, andalign_right()
to utils.py. All 3 of these functions support ANSI escape sequences and characters with display widths greater than 1. They wrapalign_text()
which is also in utils.py.