Skip to content

Releases: python-cmd2/cmd2

1.1.0 (June 6, 2020)

06 Jun 17:46
Compare
Choose a tag to compare
  • Bug Fixes
    • Fixed issue where subcommand usage text could contain a subcommand alias instead of the actual name
    • Fixed bug in ArgparseCompleter where fill_width could become negative if token_width was large
      relative to the terminal width.
  • Enhancements
    • Made ipy consistent with py in the following ways
      • ipy returns whether any of the commands run in it returned True to stop command loop
      • Cmd.in_pyscript() returns True while in ipy.
      • Starting ipy when Cmd.in_pyscript() is already True is not allowed.
    • with_argument_list, with_argparser, and with_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.
    • 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 - A SkipPostcommandHooks exception for when a command fails to parse its arguments.
        Normally argparse raises a SystemExit exception in these cases. To avoid stopping the command
        loop, catch the SystemExit 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.

1.0.2 (April 06, 2020)

06 Apr 17:31
Compare
Choose a tag to compare
  • Bug Fixes
    • Ctrl-C now stops a running text script instead of just the current run_script command
  • Enhancements
    • do_shell() now saves the return code of the command it runs in self.last_result for use in pyscripts

1.0.1 (March 13, 2020)

13 Mar 15:55
Compare
Choose a tag to compare
  • Bug Fixes
    • Fixed issue where postcmd hooks were running after an argparse exception in a command.

1.0.0 (March 1, 2020)

01 Mar 23:52
Compare
Choose a tag to compare
  • Enhancements
    • The documentation at cmd2.rftd.io received a major overhaul
  • Other
    • Moved categorize utility function from decorators module to utils module
  • Notes

0.10.1 (February 19, 2020)

19 Feb 16:45
8b6f4b3
Compare
Choose a tag to compare
  • 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 to CompletionError initializer. It defaults to True, but can be set to False if you don't want the error text to have ansi.style_error() applied to it when printed.
  • Other
    • Removed undocumented py run command since it was replaced by run_pyscript a while ago
    • Renamed AutoCompleter to ArgparseCompleter for clarity
    • Custom EmptyStatement exception is no longer part of the documented public API
  • 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)

08 Feb 04:46
Compare
Choose a tag to compare
  • Enhancements
    • Changed the default help text to make help -v more discoverable
    • set command now supports tab-completion of values
    • Added add_settable() and remove_settable() convenience methods to update self.settable dictionary
    • Added convenience ansi.fg and ansi.bg enums of foreground and background colors
      • ansi.style() fg argument can now either be of type str or ansi.fg
      • ansi.style() bg argument can now either be of type str or ansi.bg
      • This supports IDE auto-completion of color names
      • The enums also support
        • f-strings and format() calls (e.g. "{}hello{}".format(fg.blue, fg.reset))
        • string concatenation (e.g. fg.blue + "hello" + fg.reset)
  • Breaking changes
    • Renamed locals_in_py attribute of cmd2.Cmd to self_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 to self.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 and ansi.BG_COLORS dictionaries
      • Replaced with ansi.fg and ansi.bg enums providing similar but improved functionality
  • 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)

26 Jan 23:06
Compare
Choose a tag to compare
  • Enhancements
    • Reduced what gets put in package downloadable from PyPI (removed irrelevant CI config files and such)

0.9.24 (January 23, 2020)

24 Jan 01:32
Compare
Choose a tag to compare
  • 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)

10 Jan 03:27
Compare
Choose a tag to compare
  • 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 with setuptools_scm
  • Enhancements
    • Added dim text style support via style() function and ansi.INTENSITY_DIM setting.
  • Breaking changes
    • Renamed the following ansi members for accuracy in what types of ANSI escape sequences are handled
      • ansi.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 clarification
      • ansi.BRIGHT -> ansi.INTENSITY_BRIGHT
      • ansi.NORMAL -> ansi.INTENSITY_NORMAL

0.9.22 (December 9, 2019)

10 Dec 02:17
bc99c90
Compare
Choose a tag to compare
  • Bug Fixes
    • Fixed bug where a redefined ansi.style_error was not being used in all cmd2 files
  • Enhancements
    • Enabled line buffering when redirecting output to a file
    • Added align_left(), align_center(), and align_right() to utils.py. All 3 of these functions support ANSI escape sequences and characters with display widths greater than 1. They wrap align_text() which is also in utils.py.