Skip to content

Releases: python-cmd2/cmd2

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.

0.9.21 (November 26, 2019)

26 Nov 17:55
Compare
Choose a tag to compare
  • Bug Fixes
    • Fixed bug where pipe processes were not being stopped by Ctrl-C
    • Added exception handling to account for non-standard Python environments in which readline is not loaded dynamically from a shared library file
  • Enhancements
    • Added read_input() function that is used to read from stdin. Unlike the Python built-in input(), it also has an argument to disable tab completion while input is being entered.
    • Added capability to override the argument parser class used by cmd2 built-in commands. See override_parser.py example for more details.
    • Added end argument to pfeedback() to be consistent with the other print functions like poutput().
    • Added apply_style to pwarning().
  • Breaking changes
    • For consistency between all the print functions:
      • Made end and chop keyword-only arguments of ppaged()
      • end is always added to message in ppaged()

0.9.20 (November 12, 2019)

13 Nov 01:24
2cf4d87
Compare
Choose a tag to compare
  • Bug Fixes
    • Fixed bug where setting use_ipython to False removed ipy command from the entire cmd2.Cmd class instead of just the instance being created
    • Fix bug where cmd2 ran 'stty sane' command when stdin was not a terminal
  • Enhancements
    • Send all startup script paths to run_script. Previously we didn't do this if the file was empty, but that showed no record of the run_script command in history.
    • Made it easier for developers to override edit command by having do_history no longer call do_edit. This also removes the need to exclude edit command from history list.
    • It is no longer necessary to set the prog attribute of an argparser with subcommands. cmd2 now automatically sets the prog value of it and all its subparsers so that all usage statements contain the top level command name and not sys.argv[0].
  • Breaking changes
    • Some constants were moved from cmd2.py to constants.py
    • cmd2 command decorators were moved to decorators.py. If you were importing them via cmd2's __init__.py, then there will be no issues.

0.9.19 (October 14, 2019)

14 Oct 18:07
Compare
Choose a tag to compare
  • Bug Fixes
    • Fixed ValueError exception which could occur when an old format persistent history file is loaded with new cmd2
  • Enhancements
    • Improved displaying multiline CompletionErrors by indenting all lines

0.9.18 (October 1, 2019)

01 Oct 19:41
Compare
Choose a tag to compare
  • Bug Fixes
    • Fixed bug introduced in 0.9.17 where help functions for hidden and disabled commands were not being filtered out as help topics
  • Enhancements
    • AutoCompleter now handles argparse's mutually exclusive groups. It will not tab complete flag names or positionals for already completed groups. It also will print an error if you try tab completing a flag's value if the flag belongs to a completed group.
    • AutoCompleter now uses the passed-in parser's help formatter to generate hint text. This gives help and hint text for an argument consistent formatting.

0.9.17 (September 23, 2019)

24 Sep 02:55
Compare
Choose a tag to compare
  • Bug Fixes
    • Fixed a bug when using WSL when all Windows paths have been removed from $PATH
    • Fixed a bug when running a cmd2 application on Linux without Gtk libraries installed
  • Enhancements
    • No longer treating empty text scripts as an error condition
    • Allow dynamically extending a cmd2.Cmd object instance with a do_xxx method at runtime
    • Choices/Completer functions can now be passed a dictionary that maps command-line tokens to their argparse argument. This is helpful when one argument determines what is tab completed for another argument. If these functions have an argument called arg_tokens, then AutoCompleter will automatically pass this dictionary to them.
    • Added CompletionError class that can be raised during argparse-based tab completion and printed to the user
    • Added the following convenience methods
      • Cmd.in_script() - return whether a text script is running
      • Cmd.in_pyscript() - return whether a pyscript is running

0.9.16 (August 7, 2019)

08 Aug 02:00
Compare
Choose a tag to compare
  • Bug Fixes
    • Fixed inconsistent parsing/tab completion behavior based on the value of allow_redirection. This flag is only meant to be a security setting that prevents redirection of stdout and should not alter parsing logic.
  • Enhancements
    • Raise TypeError if trying to set choices/completions on argparse action that accepts no arguments
    • Create directory for the persistent history file if it does not already exist
    • Added set_choices_function(), set_choices_method(), set_completer_function(), and set_completer_method() to support cases where this functionality needs to be added to an argparse action outside of the normal parser.add_argument() call.
  • Breaking Changes
    • Aliases and macros can no longer have the same name as a command

0.9.15 (July 24, 2019)

25 Jul 02:12
Compare
Choose a tag to compare
  • Bug Fixes
    • Fixed exception caused by tab completing after an invalid subcommand was entered
    • Fixed bug where history -v was sometimes showing raw and expanded commands when they weren't different
    • Fixed bug where multiline commands were having leading and ending spaces stripped. This would mess up quoted strings that crossed multiple lines.
    • Fixed a bug when appending to the clipboard where contents were in reverse order
    • Fixed issue where run_pyscript failed if the script's filename had 2 or more consecutive spaces
    • Fixed issue where completer function of disabled command would still run
  • Enhancements
    • Greatly simplified using argparse-based tab completion. The new interface is a complete overhaul that breaks the previous way of specifying completion and choices functions. See header of argparse_custom.py for more information.
    • Enabled tab completion on multiline commands
  • Renamed Commands Notice
    • The following commands were renamed in the last release and have been removed in this release
      • load - replaced by run_script
      • _relative_load - replaced by _relative_run_script
      • pyscript - replaced by run_pyscript
    • We apologize for any inconvenience, but the new names are more self-descriptive
      • Lots of end users were confused particularly about what exactly load should be loading
  • Breaking Changes
    • Restored cmd2.Cmd.statement_parser to be a public attribute (no underscore)
    • Completely overhauled the interface for adding tab completion to argparse arguments. See enhancements for more details.
    • ACArgumentParser is now called Cmd2ArgumentParser
    • Moved basic_complete to utils.py
    • Made optional arguments on the following completer methods keyword-only: delimiter_complete, flag_based_complete, index_based_complete, path_complete, shell_cmd_complete
    • Renamed history option from --output-file to --output_file
    • Renamed matches_sort_key to default_sort_key. This value determines the default sort ordering of string results like alias, command, category, macro, settable, and shortcut names. Unsorted tab-completion results also are sorted with this key. Its default value (ALPHABETICAL_SORT_KEY) performs a case-insensitive alphabetical sort, but it can be changed to a natural sort by setting the value to NATURAL_SORT_KEY.
    • StatementParser now expects shortcuts to be passed in as dictionary. This eliminates the step of converting the shortcuts dictionary into a tuple before creating StatementParser.
    • Renamed Cmd.pyscript_name to Cmd.py_bridge_name
    • Renamed Cmd.pystate to Cmd.py_locals
    • Renamed PyscriptBridge to PyBridge