Fall back on os.get_terminal_size() rather than calls to tput/stty
authorScott Gasch <[email protected]>
Sun, 16 Oct 2022 19:01:46 +0000 (12:01 -0700)
committerScott Gasch <[email protected]>
Sun, 16 Oct 2022 19:01:46 +0000 (12:01 -0700)
when we can't figure out how big the console is.

src/pyutils/text_utils.py

index 37d721b7bb027a0dff77d144eb7669328bd3ec20..f80073c3d554701ed8546f9ae2138e0ed0b82af3 100644 (file)
@@ -25,7 +25,7 @@ import re
 import sys
 from collections import defaultdict
 from dataclasses import dataclass
-from typing import Dict, Generator, List, Literal, Optional, Tuple
+from typing import Dict, Generator, List, Literal, Optional, Tuple, Union
 
 from pyutils import string_utils
 from pyutils.ansi import fg, reset
@@ -52,8 +52,8 @@ def get_console_rows_columns() -> RowsColumns:
     """
     from pyutils.exec_utils import cmd
 
-    rows: Optional[str] = os.environ.get('LINES', None)
-    cols: Optional[str] = os.environ.get('COLUMNS', None)
+    rows: Union[Optional[str], int] = os.environ.get('LINES', None)
+    cols: Union[Optional[str], int] = os.environ.get('COLUMNS', None)
     if not rows or not cols:
         logger.debug('Rows: %s, cols: %s, trying stty.', rows, cols)
         try:
@@ -65,25 +65,10 @@ def get_console_rows_columns() -> RowsColumns:
             rows = None
             cols = None
 
-    if rows is None:
-        logger.debug('Rows: %s, cols: %s, tput rows.', rows, cols)
-        try:
-            rows = cmd(
-                "tput rows",
-                timeout_seconds=1.0,
-            )
-        except Exception:
-            rows = None
-
-    if cols is None:
-        logger.debug('Rows: %s, cols: %s, tput cols.', rows, cols)
-        try:
-            cols = cmd(
-                "tput cols",
-                timeout_seconds=1.0,
-            )
-        except Exception:
-            cols = None
+    if not rows or not cols:
+        size = os.get_terminal_size()
+        rows = size.lines
+        cols = size.columns
 
     if not rows or not cols:
         raise Exception('Can\'t determine console size?!')