3.0.0b1 (2025-09-16)
Pre-release
Pre-release
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