3.0.0rc1 Release Candidate (2025-09-26)
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 Pythonic
value
property - Removed redundant setting of a parser's
prog
value in thewith_argparser()
decorator, as
this is now handled centrally inCmd._build_parser()
- The
auto_load_commands
argument tocmd2.Cmd.__init__
now defaults toFalse
- Refactored and modernized styling and utility modules:
-
Enhancements
- Enhanced all print methods (
poutput()
,perror()
,ppaged()
, etc.) to natively render
rich
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 manage
cmd2
-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's
sys.stdout
- Fixed a redirection bug where
-
Migration Aids - these will help you iteratively migrate to
cmd2
3.x in stages- Published new cmd2-ansi module which is a backport of
thecmd2.ansi
module present incmd2
2.7.0 - Published new cmd2-table module which is a backport of
thecmd2.table_creator
module present incmd2
2.7.0
- Published new cmd2-ansi module which is a backport of