"""Utilities for dealing with "text"."""
from collections import defaultdict
+import logging
import math
import sys
from typing import List, NamedTuple, Optional
from ansi import fg, reset
+logger = logging.getLogger(__file__)
+
+
class RowsColumns(NamedTuple):
rows: int
columns: int
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))
return out
-class Indenter:
+class Indenter(object):
"""
with Indenter(pad_count = 8) as i:
i.print('test')