docs: def size(fd):
      """
      Return a tuple (rows,cols) representing the size of the TTY `fd`.
  
      The provided file descriptor should be the stdout stream of the TTY.
  
      If the TTY size cannot be determined, returns None.
      """
  
      if not os.isatty(fd.fileno()):
          return None
  
      try:
          dims = struct.unpack('hh', fcntl.ioctl(fd, termios.TIOCGWINSZ, 'hhhh'))
      except:
          try:
              dims = (os.environ['LINES'], os.environ['COLUMNS'])
          except:
              return None
  
      return dims