Skip to content

Releases: python-cmd2/cmd2

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

0.9.2 (June 28, 2018)

29 Jun 04:30
e03c6c2
Compare
Choose a tag to compare
  • Bug Fixes
    • Fixed issue where piping and redirecting did not work correctly with paths that had spaces
  • Enhancements
    • Added ability to print a header above tab-completion suggestions using completion_header member
    • Added pager and pager_chop attributes to the cmd2.Cmd class
      • pager defaults to less -RXF on POSIX and more on Windows
      • pager_chop defaults to less -SRXF on POSIX and more on Windows
    • Added chop argument to cmd2.Cmd.ppaged() method for displaying output using a pager
      • If chop is False, then self.pager is used as the pager
      • Otherwise self.pager_chop is used as the pager
    • Greatly improved the table_display.py example
      • Now uses the new tableformatter module which looks better than tabulate
  • Deprecations
    • The CmdResult helper class is deprecated and replaced by the improved CommandResult class
      • CommandResult has the following attributes: stdout, stderr, and data
        • CmdResult had attributes of: out, err, war
      • CmdResult will be deleted in the next release

0.8.8 (June 28, 2018)

29 Jun 04:28
Compare
Choose a tag to compare
  • Bug Fixes
    • Prevent crashes that could occur attempting to open a file in non-existent directory or with very long filename
  • Enhancements
    • display_matches is no longer restricted to delimited strings

0.9.1 (May 28, 2018)

29 May 00:06
Compare
Choose a tag to compare
  • Bug Fixes
    • Fix packaging error for 0.8.x versions (yes we had to deploy a new version
      of the 0.9.x series to fix a packaging error with the 0.8.x version)

0.9.0 (May 28, 2018)

28 May 15:37
Compare
Choose a tag to compare
  • Bug Fixes
    • If self.default_to_shell is true, then redirection and piping are now properly passed to the shell. Previously it was truncated.
    • Submenus now call all hooks, it used to just call precmd and postcmd.
  • Enhancements
    • Automatic completion of argparse arguments via cmd2.argparse_completer.AutoCompleter
    • cmd2 no longer depends on the six module
    • cmd2 is now a multi-file Python package instead of a single-file module
    • New pyscript approach that provides a pythonic interface to commands in the cmd2 application.
    • Switch command parsing from pyparsing to custom code which utilizes shlex.
      • The object passed to do_* methods has changed. It no longer is the pyparsing object, it's a new Statement object, which is a subclass of str. The statement object has many attributes which give you access to various components of the parsed input. If you were using anything but the string in your do_* methods, this change will require you to update your code.
      • commentGrammers is no longer supported or available. Comments are C-style or python style.
      • Input redirection no longer supported. Use the load command instead.
      • multilineCommand attribute is now multiline_command
      • identchars is now ignored. The standardlibrary cmd uses those characters to split the first "word" of the input, but cmd2 hasn't used those for a while, and the new parsing logic parses on whitespace, which has the added benefit of full unicode support, unlike cmd or prior versions of cmd2.
      • set_posix_shlex function and POSIX_SHLEX variable have been removed. Parsing behavior is now always the more forgiving posix=false.
      • set_strip_quotes function and STRIP_QUOTES_FOR_NON_POSIX have been removed. Quotes are stripped from arguments when presented as a list (a la sys.argv), and present when arguments are presented as a string (like the string passed to do_*).
  • Changes
    • strip_ansi() and strip_quotes() functions have moved to new utils module
    • Several constants moved to new constants module
    • Submenu support has been moved to a new cmd2-submenu plugin. If you use submenus, you will need to update your dependencies and modify your imports.
  • Deletions (potentially breaking changes)
    • Deleted all optparse code which had previously been deprecated in release 0.8.0
      • The options decorator no longer exists
      • All cmd2 code should be ported to use the new argparse-based decorators
      • See the Argument Processing section of the documentation for more information on these decorators
      • Alternatively, see the argparse_example.py
    • Deleted cmd_with_subs_completer, get_subcommands, and get_subcommand_completer
      • Replaced by default AutoCompleter implementation for all commands using argparse
    • Deleted support for old method of calling application commands with cmd() and self
    • cmd2.redirector is no longer supported. Output redirection can only be done with '>' or '>>'
    • Deleted postparse() hook since it was redundant with postparsing_precmd
  • Python 2 no longer supported
    • cmd2 now supports Python 3.4+
  • Known Issues
    • Some developers have noted very slow performance when importing the cmd2 module. The issue
      it intermittant, and investigation of the root cause is ongoing.

0.8.7 (May 28, 2018)

29 May 00:04
Compare
Choose a tag to compare
  • Bug Fixes
    • Make sure pip installs version 0.8.x if you have python 2.7

0.8.6 (May 27, 2018)

27 May 23:03
Compare
Choose a tag to compare
  • Bug Fixes
    • Commands using the @with_argparser_and_unknown_args were not correctly recognized when tab completing
    • Fixed issue where completion display function was overwritten when a submenu quits
    • Fixed AttributeError on Windows when running a select command cause by pyreadline not implementing remove_history_item
  • Enhancements
    • Added warning about libedit variant of readline not being supported on macOS
    • Added tab-completion of alias names in value filed of alias command
    • Enhanced the py console in the following ways
      • Added tab completion of Python identifiers instead of cmd2 commands
      • Separated the py console history from the cmd2 history

0.8.5 (April 15, 2018)

15 Apr 18:43
Compare
Choose a tag to compare
  • Bug Fixes

    • Fixed a bug with all argument decorators where the wrapped function wasn't returning a value and thus couldn't cause the cmd2 app to quit
  • Enhancements

    • Added support for verbose help with -v where it lists a brief summary of what each command does
    • Added support for categorizing commands into groups within the help menu
    • Tab completion of paths now supports ~user user path expansion
    • Simplified implementation of various tab completion functions so they no longer require ctypes
    • Expanded documentation of display_matches list to clarify its purpose. See cmd2.py for this documentation.
    • Adding opening quote to tab completion if any of the completion suggestions have a space.
  • Python 2 EOL notice

    • This is the last release where new features will be added to cmd2 for Python 2.7
    • The 0.9.0 release of cmd2 will support Python 3.4+ only
    • Additional 0.8.x releases may be created to supply bug fixes for Python 2.7 up until August 31, 2018
    • After August 31, 2018 not even bug fixes will be provided for Python 2.7