From 0a7dc1cf9895112c26b9ed0624772ea953980eaf Mon Sep 17 00:00:00 2001 From: "J. Istiak" Date: Tue, 24 Jun 2025 12:24:41 +0200 Subject: [PATCH 1/2] fix(cli): prevent UnicodeDecodeError when relaying child stdout `flet_cli/commands/run.py` crashed whenever the spawned process wrote non-UTF-8 bytes to stdout (e.g. OpenCV, C printf, binary progress bars). --- sdk/python/packages/flet-cli/src/flet_cli/commands/run.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/python/packages/flet-cli/src/flet_cli/commands/run.py b/sdk/python/packages/flet-cli/src/flet_cli/commands/run.py index f2da83ab5..ceec661bc 100644 --- a/sdk/python/packages/flet-cli/src/flet_cli/commands/run.py +++ b/sdk/python/packages/flet-cli/src/flet_cli/commands/run.py @@ -337,7 +337,7 @@ def on_any_event(self, event): def print_output(self, p): while True: - line = p.stdout.readline() + line = p.stdout.readline().decode("utf-8", errors="replace") if not line: break line = line.rstrip("\r\n") From e1e657a0ef85bc429dbc54e5926cf1c6b322e467 Mon Sep 17 00:00:00 2001 From: "J. Istiak" Date: Tue, 24 Jun 2025 12:58:23 +0200 Subject: [PATCH 2/2] Handle both binary and text mode --- .../packages/flet-cli/src/flet_cli/commands/run.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/sdk/python/packages/flet-cli/src/flet_cli/commands/run.py b/sdk/python/packages/flet-cli/src/flet_cli/commands/run.py index ceec661bc..8ced5bdba 100644 --- a/sdk/python/packages/flet-cli/src/flet_cli/commands/run.py +++ b/sdk/python/packages/flet-cli/src/flet_cli/commands/run.py @@ -337,10 +337,13 @@ def on_any_event(self, event): def print_output(self, p): while True: - line = p.stdout.readline().decode("utf-8", errors="replace") - if not line: + raw = p.stdout.readline() + if not raw: break - line = line.rstrip("\r\n") + + line = raw.decode("utf-8", errors="replace") if isinstance(raw, bytes) else raw + line = line.rstrip("\r\n") + if line.startswith(self.page_url_prefix): if not self.page_url: self.page_url = line[len(self.page_url_prefix) + 1 :]