code: def terminal_size(kernel32=None):
      
      if IS_WINDOWS:
          kernel32 = kernel32 or ctypes.windll.kernel32
          try:
              return get_console_info(kernel32, kernel32.GetStdHandle(STD_ERROR_HANDLE))
          except OSError:
              try:
                  return get_console_info(kernel32, kernel32.GetStdHandle(STD_OUTPUT_HANDLE))
              except OSError:
                  return DEFAULT_WIDTH, DEFAULT_HEIGHT
  
      try:
          device = __import__('fcntl').ioctl(0, __import__('termios').TIOCGWINSZ, '\0\0\0\0\0\0\0\0')
      except IOError:
          return DEFAULT_WIDTH, DEFAULT_HEIGHT
      height, width = struct.unpack('hhhh', device)[:2]
      return width, height
docs: Get the width and height of the terminal.
  
      http://code.activestate.com/recipes/440694-determine-size-of-console-window-on-windows/
      http://stackoverflow.com/questions/17993814/why-the-irrelevant-code-made-a-difference
  
      :param kernel32: Optional mock kernel32 object. For testing.
  
      :return: Width (number of characters) and height (number of lines) of the terminal.
      :rtype: tuple