NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #3179 most downloaded on PyPI
cmd2 - quickly build feature-rich and user-friendly interactive command line applications in Python
Last release 16 days ago
08 Sep 2026
Ships fairly regularly
a new release about every 3 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
19 years old
174 releases · first in 2008
Fixed a bug in tab completion of command names within sub-menus
AddSubmenu decorator didn't work with a default value for
shared_attributesppaged() to only use a pager when running in a real fully functional
terminalalias and unalias commandsgnureadline module if available and readline if notOne column per quarter.
Attributes Removed (can cause breaking changes)
exclude_from_help listexclude_from_help and excludeFromHistory are now instance instead of class attributesppaged()
abbrev - Removed support for abbreviated commands
case_insensitive - Removed support for case-insensitive command parsing
The old options decorator for optparse-based argument parsing is now _deprecated_
cmd2 application trivialcmd2 now has an additional dependency on the contextlib2
modulecmd2 no longer includes optparse.make_option, so if your app needs it import
directly from optparseImproved documentation for modifying shortcuts (command aliases)
pyreadline a dependency on Windows to ensure tab completion worksFixed poutput() so it can print an integer zero and other falsy things
poutput() so it can print an integer zero and other falsy thingspyperclip dependency radically changing its project structure in latest
versionruncmds_plus_hooks() method to run multiple commands w/o a cmdloopThis makes a breaking change to the format and expectations of transcript testing
pygtk is installedpfeedback() now honors feedback_to_output setting and won't redirect when it is Falseedit command, both editor and filename can now have spaces in the name/pathfeedback_to_output now defaults to False so info like command timing won't redirectload command and input redirection when echo is TrueCase-sensitive command parsing was completely broken and has been fixed
<Ctrl>+d now properly quits when case-sensitive command parsing is enabledcase_insensitive is no longer a runtime-settable parameter, but it was still listed as such
case_insensitive is no longer a runtime-settable parameter, but it was still listed as suchabbrev to False (which controls whether or not abbreviated
commands are allowed)
load to use command queue instead of nested inner loopFixed a couple bugs in interacting with pastebuffer/clipboard on macOS and Linux
cmd2 command output to a shell command is now more reliable, particularly on
Windowspyscript command on Windows related to \ being interpreted as an escapeload and _relative_load now require a file pathedit and save now use a temporary file if a file path isn't providedload command has better error checking and reportingshell command now supports redirection and piping of outputFixed a bug in displaying a span of history items when only an end index is supplied
Added a MANIFEST.ini file to make sure a few extra files get included in the PyPI source distribution
- wasn't being treated as a legal character
- wasn't being treated as a legal characterpreloop before and postloop afteredit, load, save, and shell commandsshell command or ! shortcutRefactored to use six module for a unified codebase which supports both Python 2 and Python 3
- Support Python 3 input() - Fix subprocess.mswindows bug - Add Python3.6 support - Drop distutils from setup.py
better editor checking (by Ian Cordascu)
Nothing published for this version
No changes to code trunk. Generated sdist from Python 2.7 to avoid 2to3 changes being applied to source. ( Issue https://bitbucket.org/catherinedevlin
Added fix by bitbucket.org/desaintmartin to silence the editor check. bitbucket.org/catherinedevlin/cmd2/issue/1/silent-editor-check
Bugfix for setup.py version check for Python 2.6, contributed by Tomaz Muraus
Changed pyparsing requirement for compatibility with Python version (2 vs 3)
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →