code: def read_text_file(filename):
      # type: (str) -> str
      
      with open(filename, 'rb') as fp:
          data = fp.read()
  
      encodings = ['utf-8', locale.getpreferredencoding(False), 'latin1']
      for enc in encodings:
          try:
              # https://github.com/python/mypy/issues/1174
              data = data.decode(enc)  # type: ignore
          except UnicodeDecodeError:
              continue
          break
  
      assert not isinstance(data, bytes)  # Latin1 should have worked.
      return data
docs: Return the contents of *filename*.
  
      Try to decode the file contents with utf-8, the preferred system encoding
      (e.g., cp1252 on some Windows machines), and latin1, in that order.
      Decoding a byte string with latin1 will never raise an error. In the worst
      case, the returned string will contain some garbage characters.