From d87f9fbd793797ec9af19db83890513187cd1852 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Wed, 4 Dec 2024 07:03:59 -0800 Subject: [PATCH] fix: add fallback to ASCII spinner when Unicode is not supported --- aider/utils.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/aider/utils.py b/aider/utils.py index e91e5deb0..e1e4ac24c 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -268,7 +268,8 @@ def run_install(cmd): class Spinner: - spinner_chars = itertools.cycle(["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"]) + unicode_spinner = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"] + ascii_spinner = ["|", "/", "-", "\\"] def __init__(self, text): self.text = text @@ -276,6 +277,15 @@ class Spinner: self.last_update = 0 self.visible = False self.is_tty = sys.stdout.isatty() + + # Try unicode first, fall back to ascii if needed + try: + # Test if we can print unicode characters + print(self.unicode_spinner[0], end="", flush=True) + print("\r", end="", flush=True) + self.spinner_chars = itertools.cycle(self.unicode_spinner) + except UnicodeEncodeError: + self.spinner_chars = itertools.cycle(self.ascii_spinner) def step(self): if not self.is_tty: