when we can't figure out how big the console is.
import sys
from collections import defaultdict
from dataclasses import dataclass
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
from pyutils import string_utils
from pyutils.ansi import fg, reset
"""
from pyutils.exec_utils import cmd
"""
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:
if not rows or not cols:
logger.debug('Rows: %s, cols: %s, trying stty.', rows, cols)
try:
- 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?!')
if not rows or not cols:
raise Exception('Can\'t determine console size?!')