-
Notifications
You must be signed in to change notification settings - Fork 128
Open
Labels
Description
Description
Using the Cmd.p* output methods from while a rich status spinner is running causes the messages to merge on the terminal.
Environment
- Windows 11
- Windows Terminal Version: 1.23.20211.0
- Python 3.12.2
- cmd2-3.2.0
Steps to Reproduce
import time
from argparse import Namespace
from cmd2 import Cmd, with_category
from rich.console import Console
TEST_CATAGORY: str = "Test Commands"
console = Console()
class MyCmd(Cmd):
@with_category(TEST_CATAGORY)
def do_exemplar(self, args: Namespace):
"""This is what the status is expected to look like."""
with console.status("Working!"):
for _ in range(10):
console.log("console.log: Hello from cmd!")
time.sleep(0.1)
@with_category(TEST_CATAGORY)
def do_problem(self, args: Namespace):
"""Demonstrate the problem."""
with console.status("Working!"):
for _ in range(10):
self.pwarning("pwarning: Hello from cmd!")
time.sleep(0.1)
if __name__ == "__main__":
MyCmd().cmdloop()
Solutions
I did some digging into rich and cmd2 and could not find a way to insert my own console instance into the cmd2.Cmd for use with the print methods (cmd2.Cmd.p*). If there is an obvious solution, please let me know. I have been a long time user of this package and the new changes integrating rich are very exciting.
One possible fix would be to not create a new console object for each call to the print methods. I am not really sure how easy that will be to change or maintain. There could be a console attribute for the cmd2.Cmd class or cmd2 could manage a global console object like how rich does.
Reactions are currently unavailable