Skip to content

Releases: python-cmd2/cmd2

0.9.11 (March 13, 2019)

13 Mar 13:13
Compare
Choose a tag to compare
  • Bug Fixes
    • Fixed bug in how history command deals with multiline commands when output to a script
    • Fixed a bug when the with_argument_list decorator is called with the optional preserve_quotes argument
    • Fix bug in perror() where it would try to print an exception Traceback even if none existed
  • Enhancements
    • Improvements to the history command
      • Simplified the display format and made it more similar to bash
      • Added -x, --expanded flag
        • output expanded commands instead of entered command (expands aliases, macros, and shortcuts)
      • Added -v, --verbose flag
        • display history and include expanded commands if they differ from the typed command
      • Added support for negative indices
    • Added matches_sort_key to override the default way tab completion matches are sorted
    • Added StdSim.pause_storage member which when True will cause StdSim to not save the output sent to it. See documentation for CommandResult in pyscript_bridge.py for reasons pausing the storage can be useful.
    • Added ability to disable/enable individual commands and entire categories of commands. When a command is disabled, it will not show up in the help menu or tab complete. If a user tries to run the command or call help on it, a command-specific message supplied by the developer will be printed. The following commands were added to support this feature.
      • enable_command()
      • enable_category()
      • disable_command()
      • disable_category()
  • Potentially breaking changes
    • Made cmd2_app a positional and required argument of AutoCompleter since certain functionality now requires that it can't be None.
    • AutoCompleter no longer assumes CompletionItem results are sorted. Therefore you should follow the cmd2 convention of setting self.matches_sorted to True before returning the results if you have already sorted the CompletionItem list. Otherwise it will be sorted using self.matches_sort_key.
    • Removed support for bash completion since this feature had slow performance. Also it relied on AutoCompleter which has since developed a dependency on cmd2 methods.
    • Removed ability to call commands in pyscript as if they were functions (e.g app.help()) in favor of only supporting one pyscript interface. This simplifies future maintenance.
    • No longer supporting C-style comments. Hash (#) is the only valid comment marker.
    • No longer supporting comments embedded in a command. Only command line input where the first non-whitespace character is a # will be treated as a comment. This means any # character appearing later in the command will be treated as a literal. The same applies to a # in the middle of a multiline command, even if it is the first character on a line.
      • # this is a comment
      • this # is not a comment

0.9.10 (February 22, 2019)

22 Feb 18:09
Compare
Choose a tag to compare

0.9.10 (February 22, 2019)

  • Bug Fixes
    • Fixed unit test that hangs on Windows

0.9.9 (February 21, 2019)

22 Feb 02:23
Compare
Choose a tag to compare
  • Bug Fixes
    • Fixed bug where the set command was not tab completing from the current settable dictionary.
  • Enhancements
    • Changed edit command to use do_shell() instead of calling os.system()

0.9.8 (February 06, 2019)

07 Feb 02:49
bc9fd93
Compare
Choose a tag to compare
  • Bug Fixes
    • Fixed issue with echoing strings in StdSim. Because they were being sent to a binary buffer, line buffering was being ignored.
  • Enhancements
    • Made quit() and exit() functions available to scripts run with pyscript. This allows those scripts to exit back to the console's prompt instead of exiting the whole application.

0.9.7 (January 08, 2019)

09 Jan 02:25
Compare
Choose a tag to compare
  • Bug Fixes
    • Fixed bug when user chooses a zero or negative index when calling Cmd.select()
    • Restored behavior where cmd_echo always starts as False in a py script. This was broken in 0.9.5.
  • Enhancements
    • cmdloop now only attempts to register a custom signal handler for SIGINT if running in the main thread
    • commands run as a result of default_to_shell being True now run via do_shell() and are saved
      to history.
    • Added more tab completion to pyscript command.
  • Deletions (potentially breaking changes)
    • Deleted Cmd.colorize() and Cmd._colorcodes which were deprecated in 0.9.5
    • Replaced dir_exe_only and dir_only flags in path_complete with optional path_filter function
      that is used to filter paths out of completion results.
    • perror() no longer prepends "ERROR: " to the error message being printed

0.9.6 (October 13, 2018)

13 Oct 23:20
dcb5be4
Compare
Choose a tag to compare
  • Bug Fixes
    • Fixed bug introduced in 0.9.5 caused by backing up and restoring self.prompt in pseudo_raw_input.
      As part of this fix, continuation prompts will not be redrawn with async_update_prompt or async_alert.
  • Enhancements
    • All platforms now depend on wcwidth to assist with asynchronous alerts.
    • Macros now accept extra arguments when called. These will be tacked onto the resolved command.
    • All cmd2 commands run via py now go through onecmd_plus_hooks.

0.9.5 (October 11, 2018)

11 Oct 18:47
Compare
Choose a tag to compare
  • Bug Fixes
    • Fixed bug where get_all_commands could return non-callable attributes
    • Fixed bug where alias command was dropping quotes around arguments
    • Fixed bug where running help on argparse commands didn't work if they didn't support -h
    • Fixed transcript testing bug where last command in transcript has no expected output
    • Fixed bugs with how AutoCompleter and ArgparseFunctor handle argparse
      arguments with nargs=argparse.REMAINDER. Tab completion now correctly
      matches how argparse will parse the values. Command strings generated by
      ArgparseFunctor should now be compliant with how argparse expects
      REMAINDER arguments to be ordered.
    • Fixed bugs with how AutoCompleter handles flag prefixes. It is no
      longer hard-coded to use '-' and will check against the prefix_chars in
      the argparse object. Also, single-character tokens that happen to be a
      prefix char are not treated as flags by argparse and AutoCompleter now
      matches that behavior.
    • Fixed bug where AutoCompleter was not distinguishing between a negative number and a flag
    • Fixed bug where AutoCompleter did not handle -- the same way argparse does (all args after -- are non-options)
  • Enhancements
    • Added exit_code attribute of cmd2.Cmd class
      • Enables applications to return a non-zero exit code when exiting from cmdloop
    • ACHelpFormatter now inherits from argparse.RawTextHelpFormatter to make it easier
      for formatting help/description text
    • Aliases are now sorted alphabetically
    • The set command now tab-completes settable parameter names
    • Added async_alert, async_update_prompt, and set_window_title functions
      • These allow you to provide feedback to the user in an asychronous fashion, meaning alerts can
        display when the user is still entering text at the prompt. See async_printing.py
        for an example.
    • Cross-platform colored output support
      • colorama gets initialized properly in Cmd.__init()
      • The Cmd.colors setting is no longer platform dependent and now has three values:
        • Terminal (default) - output methods do not strip any ANSI escape sequences when output is a terminal, but
          if the output is a pipe or a file the escape sequences are stripped
        • Always - output methods never strip ANSI escape sequences, regardless of the output destination
        • Never - output methods strip all ANSI escape sequences
    • Added macro command to create macros, which are similar to aliases, but can take arguments when called
    • All cmd2 command functions have been converted to use argparse.
    • Renamed argparse_example.py to decorator_example.py to help clarify its intent
  • Deprecations
    • Deprecated the built-in cmd2 support for colors including Cmd.colorize() and Cmd._colorcodes
  • Deletions (potentially breaking changes)
    • The preparse, postparsing_precmd, and postparsing_postcmd methods deprecated in the previous release
      have been deleted
      • The new application lifecycle hook system allows for registration of callbacks to be called at various points
        in the lifecycle and is more powerful and flexible than the previous system
    • alias is now a command with sub-commands to create, list, and delete aliases. Therefore its syntax
      has changed. All current alias commands in startup scripts or transcripts will break with this release.
    • unalias was deleted since alias delete replaced it

0.9.4 (August 21, 2018)

21 Aug 03:25
Compare
Choose a tag to compare
  • Bug Fixes
    • Fixed bug where preparse was not getting called
    • Fixed bug in parsing of multiline commands where matching quote is on another line
  • Enhancements
    • Improved implementation of lifecycle hooks to support a plugin
      framework, see docs/hooks.rst for details.
    • New dependency on attrs third party module
    • Added matches_sorted member to support custom sorting of tab-completion matches
    • Added tab_autocomp_dynamic.py example
      • Demonstrates updating the argparse object during init instead of during class construction
  • Deprecations
    • Deprecated the following hook methods, see hooks.rst for full details:
      • cmd2.Cmd.preparse() - equivalent functionality available
        via cmd2.Cmd.register_postparsing_hook()
      • cmd2.Cmd.postparsing_precmd() - equivalent functionality available
        via cmd2.Cmd.register_postparsing_hook()
      • cmd2.Cmd.postparsing_postcmd() - equivalent functionality available
        via cmd2.Cmd.register_postcmd_hook()

0.8.9 (August 20, 2018)

21 Aug 02:59
Compare
Choose a tag to compare
  • Bug Fixes
    • Fixed extra slash that could print when tab completing users on Windows

NOTE: This is likely the final release of cmd2 for Python 2.7

0.9.3 (July 12, 2018)

12 Jul 18:03
Compare
Choose a tag to compare
  • Bug Fixes
    • Fixed bug when StatementParser __init__() was called with terminators equal to None
    • Fixed bug when Cmd.onecmd() was called with a raw str
  • Enhancements
    • Added --clear flag to history command that clears both the command and readline history.
  • Deletions
    • The CmdResult helper class which was deprecated in the previous release has now been deleted
      • It has been replaced by the improved CommandResult class