Releases: python-cmd2/cmd2
Releases · python-cmd2/cmd2
3.0.0b2 (2025-09-17)
Same as 3.0.0b1 other than:
- Breaking Changes
- The
auto_load_commands
argument tocmd2.Cmd.__init__
now defaults toFalse
- The
3.0.0b1 (2025-09-16)
Summary
cmd2
now has a dependency on rich for rich text and pretty formatting in the terminal. Previously, cmd2
had a large amount of custom code for this purpose that predated the existence of rich
. This opens the door to even more beautiful cmd2
applications. To get the most out of the new capabilities, we encourage you to spend a little bit of time reading the rich documentation.
Details
-
Breaking Changes
- Refactored and modernized styling and utility modules:
- Removed the legacy
table_creator.py
module in favor ofrich
tables (see the rich_tables.py example for more info) - Moved all string-related functions from
utils.py
to a newstring_utils.py
module - Consolidated all string styling functions from
ansi.py
intostring_utils.py
- Replaced all text style enums from
ansi.py
with modernrich
styles - Renamed
ansi.py
toterminal_utils.py
to better reflect its purpose
- Removed the legacy
- Dropped support for Python 3.9.
cmd2
now requires Python 3.10 or later - Replaced
Settable.get_value()
andSettable.set_value()
methods with a more Pythonicvalue
property - Removed redundant setting of a parser's
prog
value in thewith_argparser()
decorator, as this is now handled centrally inCmd._build_parser()
- Refactored and modernized styling and utility modules:
-
Enhancements
- Enhanced all print methods (
poutput()
,perror()
,ppaged()
, etc.) to natively renderrich
objects, enabling beautiful and complex output - Simplified the process for setting a custom parser for
cmd2
's built-in commands. See the custom_parser.py example for an updated guide - Introduced
Cmd.macro_arg_complete()
for tab-completing macro arguments, with default path completion that can be easily customized - Added
colors.py
andstyles.py
to provide easy access torich
color names and managecmd2
-specific style definitions usingStrEnum
(see the colors.py example for a demonstration of all colors available to yourcmd2
application) - Added ability to create a custom theme for a
cmd2
application usingrich_utils.set_theme
(see the rich_theme.py example for more info) - Consolidated multiple redundant examples into a few more comprehensive ones, see:
- Optimized performance of terminal fixup during command finalization by replacing
stty sane
withtermios.tcsetattr
- Enhanced all print methods (
-
Bug Fixes
- Fixed a redirection bug where
cmd2
could unintentionally overwrite an application'ssys.stdout
- Fixed a redirection bug where
2.7.0 (June 30, 2025)
- Enhancements
- Integrated rich-argparse with cmd2's default argparse help formatter (
Cmd2HelpFormatter
).
- Integrated rich-argparse with cmd2's default argparse help formatter (
2.6.2 (June 26, 2025)
-
Enhancements
- Added explicit support for free-threaded versions of Python, starting with version 3.14
-
Bug Fixes
- Restored code to set a parser's
prog
value in thewith_argparser
decorator. This is to
preserve backward compatibility in thecmd2
2.0 family. This functionality will be removed
incmd2
3.0.0.
- Restored code to set a parser's
2.6.1 (June 8, 2025)
- Bug Fixes
- Fixed bug that prevented
cmd2
from working withfrom __future__ import annotations
- Fixed bug that prevented
2.6.0 (May 31, 2025)
- Breaking Change
cmd2
2.6 supports Python 3.9+ (removed support for Python 3.8)
- Enhancements
- Added support for Python 3.14
- Added new
Cmd.ppretty()
method for pretty printing arbitrary Python data structures - Clarified help text for
-t
/--transcript
argument to thehistory
command
2.5.11 (January 25, 2025)
- Bug Fixes
- Fixed duplicated parameter tables in API documentation.
2.5.10 (January 25, 2025)
- Bug Fixes
- Fixed docstring style for MkDocs API documentation so parameters are displayed properly.
2.5.9 (January 17, 2025)
- Bug Fixes
- Fixed 'index out of range' error when passing no arguments to an argparse-based command function.
2.5.8 (December 17, 2024)
- Bug Fixes
- Rolled back undocumented changes to printing functions introduced in 2.5.0.