- update to 0.9.10:
* Fixed unit test that hangs on Windows
* Fixed bug where the ``set`` command was not tab completing from the current ``settable`` dictionary.
* Changed edit command to use do_shell() instead of calling os.system()
* Fixed issue with echoing strings in StdSim. Because they were being sent to a binary buffer, line buffering
was being ignored.
* 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.
* 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.
* **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.
* 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
* 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`.
* All platforms now depend on [wcwidth](https://pypi.python.org/pypi/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`.
* 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
OBS-URL: https://build.opensuse.org/request/show/680103
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-cmd2?expand=0&rev=22
* Fixed unit test that hangs on Windows
* Fixed bug where the ``set`` command was not tab completing from the current ``settable`` dictionary.
* Changed edit command to use do_shell() instead of calling os.system()
* Fixed issue with echoing strings in StdSim. Because they were being sent to a binary buffer, line buffering
was being ignored.
* 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.
* 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.
* **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.
* 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
* 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`.
* All platforms now depend on [wcwidth](https://pypi.python.org/pypi/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`.
* 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
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-cmd2?expand=0&rev=41
Resubmit update to version 0.9.4
I had to revert to the previous version in openSUSE:Factory, as py2 support was dropped. Due to a timing issue,
this package has since been promoted to be a ring package - and there are various things buildrequiring the py2-cmd2 variant too.
Please accept this update again - upon resubmit to oS:F, this will now go through a letter staging
- Update to version 0.9.4
+ 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](https://github.com/python-cmd2/cmd2/blob/master/examples/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()``
- Update to version 0.9.3
+ 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
- Update to version 0.9.2
+ Bug Fixes
OBS-URL: https://build.opensuse.org/request/show/638706
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-cmd2?expand=0&rev=33
- Update to version 0.9.4
+ 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](https://github.com/python-cmd2/cmd2/blob/master/examples/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()``
- Update to version 0.9.3
+ 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
- Update to version 0.9.2
+ 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](https://github.com/python-cmd2/cmd2/blob/master/examples/table_display.py) example
* Now uses the new [tableformatter](https://github.com/python-tableformatter/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
- Update to version 0.8.8
+ 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
- Update to version 0.9.1
+ 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)
- Update to version 0.9.0
+ 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``
* See the [tab_autocompletion.py](https://github.com/python-cmd2/cmd2/blob/master/examples/tab_autocompletion.py) example for a demonstration of how to use this feature
* ``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](https://github.com/python-cmd2/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](http://cmd2.readthedocs.io/en/latest/argument_processing.html) section of the documentation for more information on these decorators
* Alternatively, see the [argparse_example.py](https://github.com/python-cmd2/cmd2/blob/master/examples/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.
- Python2 is no longer supported upstream,
so don't build it.
OBS-URL: https://build.opensuse.org/request/show/637090
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-cmd2?expand=0&rev=31
* Bug Fixes
* Fixed extra slash that could print when tab completing users on Windows
* Prevent crashes that could occur attempting to open a file in non-existent directory or with very long filename
* Make sure pip installs version 0.8.x if you have python 2.7
* 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``
* 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 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
* 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
* See the [Grouping Commands](http://cmd2.readthedocs.io/en/latest/argument_processing.html?highlight=verbose#grouping-commands) section of the docs for more info
* See [help_categories.py](https://github.com/python-cmd2/cmd2/blob/master/examples/help_categories.py) for an example
* 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.
* Tab completion has been overhauled and now supports completion of strings with quotes and spaces.
* Tab completion will automatically add an opening quote if a string with a space is completed.
* Added ``delimiter_complete`` function for tab completing delimited strings
* Added more control over tab completion behavior including the following flags. The use of these flags is documented in cmd2.py
* ``allow_appended_space``
* ``allow_closing_quote``
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-cmd2?expand=0&rev=28
- update to 0.7.9:
* Bug Fixes
* Fixed a couple broken examples
* Enhancements
* Improved documentation for modifying shortcuts (command aliases)
* Made ``pyreadline`` a dependency on Windows to ensure tab-completion works
* Other changes
* Abandoned official support for Python 3.3. It should still work, just don't have an easy way to test it anymore.
* Bug Fixes
* Fixed ``poutput()`` so it can print an integer zero and other **falsy** things
* Fixed a bug which was causing autodoc to fail for building docs on Readthedocs
* Fixed bug due to ``pyperclip`` dependency radically changing its project structure in latest version
* Enhancements
* Improved documentation for user-settable environment parameters
* Improved documentation for overriding the default supported comment styles
* Added ``runcmds_plus_hooks()`` method to run multiple commands w/o a cmdloop
* Bug Fixes
* Added workaround for bug which occurs in Python 2.7 on Linux when ``pygtk`` is installed
* ``pfeedback()`` now honors feedback_to_output setting and won't redirect when it is ``False``
* For ``edit`` command, both **editor** and **filename** can now have spaces in the name/path
* Fixed a bug which occurred when stdin was a pipe instead of a tty due to input redirection
* Enhancements
* ``feedback_to_output`` now defaults to ``False`` so info like command timing won't redirect
* Transcript regular expressions now have predictable, tested, and documented behavior
* This makes a breaking change to the format and expectations of transcript testing
* The prior behavior removed whitespace before making the comparison, now whitespace must match exactly
* Prior version did not allow regexes with whitespace, new version allows any regex
* Improved display for ``load`` command and input redirection when **echo** is ``True``
* Bug Fixes
* Case-sensitive command parsing was completely broken and has been fixed
OBS-URL: https://build.opensuse.org/request/show/576369
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-cmd2?expand=0&rev=16
* Bug Fixes
* Fixed a couple broken examples
* Enhancements
* Improved documentation for modifying shortcuts (command aliases)
* Made ``pyreadline`` a dependency on Windows to ensure tab-completion works
* Other changes
* Abandoned official support for Python 3.3. It should still work, just don't have an easy way to test it anymore.
* Bug Fixes
* Fixed ``poutput()`` so it can print an integer zero and other **falsy** things
* Fixed a bug which was causing autodoc to fail for building docs on Readthedocs
* Fixed bug due to ``pyperclip`` dependency radically changing its project structure in latest version
* Enhancements
* Improved documentation for user-settable environment parameters
* Improved documentation for overriding the default supported comment styles
* Added ``runcmds_plus_hooks()`` method to run multiple commands w/o a cmdloop
* Bug Fixes
* Added workaround for bug which occurs in Python 2.7 on Linux when ``pygtk`` is installed
* ``pfeedback()`` now honors feedback_to_output setting and won't redirect when it is ``False``
* For ``edit`` command, both **editor** and **filename** can now have spaces in the name/path
* Fixed a bug which occurred when stdin was a pipe instead of a tty due to input redirection
* Enhancements
* ``feedback_to_output`` now defaults to ``False`` so info like command timing won't redirect
* Transcript regular expressions now have predictable, tested, and documented behavior
* This makes a breaking change to the format and expectations of transcript testing
* The prior behavior removed whitespace before making the comparison, now whitespace must match exactly
* Prior version did not allow regexes with whitespace, new version allows any regex
* Improved display for ``load`` command and input redirection when **echo** is ``True``
* Bug Fixes
* Case-sensitive command parsing was completely broken and has been fixed
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-cmd2?expand=0&rev=26
- convert to singlespec
- update to 0.7.5:
* `case_insensitive` is no longer a runtime-settable parameter, but it was still listed as such
* Fixed a recursive loop bug when abbreviated commands are enabled and it could get stuck in the editor forever
* Fixed argparse_example.py and pirate.py examples and transcript_regex.txt transcript
* Fixed a bug in a unit test which occurred under unusual circumstances
* Organized all attributes used to configure the ParserManager into a single location
* Set the default value of `abbrev` to `False` (which controls whether or not abbreviated commands are allowed)
* Improved implementation of `load` to use command queue instead of nested inner loop
* Fixed a couple bugs in interacting with pastebuffer/clipboard on macOS and Linux
* Fixed a couple bugs in edit and save commands if called when history is empty
* Ability to pipe ``cmd2`` command output to a shell command is now more reliable, particularly on Windows
* Fixed a bug in ``pyscript`` command on Windows related to ``\`` being interpreted as an escape
* Ensure that path and shell command tab-completion results are alphabetically sorted
* Removed feature for load command to load scripts from URLS
* Removed presence of a default file name and default file extension
* ``load`` command has better error checking and reporting
* Clipboard copy and paste functionality is now handled by the **pyperclip** module
* ``shell`` command now supports redirection and piping of output
* Added a lot of unit tests
* Removed pause command
* Added a dependency on the **pyperclip** module
* Fixed a bug in displaying a span of history items when only an end index is supplied
* Fixed a bug which caused transcript test failures to display twice
* Added the ability to exclude commands from the help menu (**eof** included by default)
* Redundant **list** command removed and features merged into **history** command
* Added **pyscript** command which supports tab-completion and running Python scripts with arguments
* Improved tab-completion of file system paths, command names, and shell commands
* Changed default value of USE_ARG_LIST to True - this affects the beavhior of all **@options** commands
OBS-URL: https://build.opensuse.org/request/show/514847
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-cmd2?expand=0&rev=15
* `case_insensitive` is no longer a runtime-settable parameter, but it was still listed as such
* Fixed a recursive loop bug when abbreviated commands are enabled and it could get stuck in the editor forever
* Fixed argparse_example.py and pirate.py examples and transcript_regex.txt transcript
* Fixed a bug in a unit test which occurred under unusual circumstances
* Organized all attributes used to configure the ParserManager into a single location
* Set the default value of `abbrev` to `False` (which controls whether or not abbreviated commands are allowed)
* Improved implementation of `load` to use command queue instead of nested inner loop
* Fixed a couple bugs in interacting with pastebuffer/clipboard on macOS and Linux
* Fixed a couple bugs in edit and save commands if called when history is empty
* Ability to pipe ``cmd2`` command output to a shell command is now more reliable, particularly on Windows
* Fixed a bug in ``pyscript`` command on Windows related to ``\`` being interpreted as an escape
* Ensure that path and shell command tab-completion results are alphabetically sorted
* Removed feature for load command to load scripts from URLS
* Removed presence of a default file name and default file extension
* ``load`` command has better error checking and reporting
* Clipboard copy and paste functionality is now handled by the **pyperclip** module
* ``shell`` command now supports redirection and piping of output
* Added a lot of unit tests
* Removed pause command
* Added a dependency on the **pyperclip** module
* Fixed a bug in displaying a span of history items when only an end index is supplied
* Fixed a bug which caused transcript test failures to display twice
* Added the ability to exclude commands from the help menu (**eof** included by default)
* Redundant **list** command removed and features merged into **history** command
* Added **pyscript** command which supports tab-completion and running Python scripts with arguments
* Improved tab-completion of file system paths, command names, and shell commands
* Changed default value of USE_ARG_LIST to True - this affects the beavhior of all **@options** commands
* Refactored code to encapsulate most of the pyparsing logic into a ParserManager class
* Added a MANIFEST.ini file to make sure a few extra files get included in the PyPI source distribution
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-cmd2?expand=0&rev=23