Fix chromecasts to work with new version of pychromecast; rename
[python_utils.git] / text_utils.py
index 36cfe2fd720d9e0cb479992495a70d66161ae132..9a9eb54702b25783abdc8100124b173790c00c5b 100644 (file)
@@ -3,6 +3,7 @@
 """Utilities for dealing with "text"."""
 
 from collections import defaultdict
+import logging
 import math
 import sys
 from typing import List, NamedTuple, Optional
@@ -10,6 +11,9 @@ from typing import List, NamedTuple, Optional
 from ansi import fg, reset
 
 
+logger = logging.getLogger(__file__)
+
+
 class RowsColumns(NamedTuple):
     rows: int
     columns: int
@@ -18,8 +22,15 @@ class RowsColumns(NamedTuple):
 def get_console_rows_columns() -> RowsColumns:
     """Returns the number of rows/columns on the current console."""
 
-    from exec_utils import cmd
-    rows, columns = cmd("stty size").split()
+    from exec_utils import cmd_with_timeout
+    try:
+        rows, columns = cmd_with_timeout(
+            "stty size",
+            timeout_seconds=5.0,
+        ).split()
+    except Exception as e:
+        logger.exception(e)
+        raise Exception('Can\'t determine console size?!')
     return RowsColumns(int(rows), int(columns))