"""Devtools utilities.""" def _setup(): try: import devtools except ModuleNotFoundError: return import logging import time import fcntl import struct import termios import threading class DevtoolsResizer(threading.Thread): """Devtools width resizer depending on tty size.""" def __init__(self, max_rows=200): self.logger = logging.getLogger("startup.devtools") self._run = False super().__init__(name=type(self).__name__, daemon=True) @staticmethod def _width(): ioctl = fcntl.ioctl( 0, termios.TIOCGWINSZ, struct.pack("HHHH", 0, 0, 0, 0) ) th, tw, hp, wp = struct.unpack("HHHH", ioctl) return tw def run(self): self.logger.info("Devtools resizer running") self._run = True while self._run: width = self._width() if devtools.pformat._width != width: self.logger.debug("Resized devtools to %d", devtools.pformat._width) devtools.pformat._width = width time.sleep(0.2) def stop(self): self._run = False DevtoolsResizer().start() _setup() del _setup _summarise_startup()