code: def smart_open(filepath):
      
      if filepath[-2:] == "gz":
          mode = "rt"
          fopen = gzip.open
      else:
          mode = "r"
          fopen = open
      if sys.version_info[0] < 3:
          fh = fopen(filepath, mode)
      else:
          fh = fopen(filepath, mode, errors="ignore")
      try:
          yield fh
      except IOError:
          fh.close()
      finally:
          fh.close()
docs: Open file intelligently depending on the source and python version.
  
      Args:
          filepath (:obj:`str`): Path to the file.
  
      Yields:
          Context manager for file handle.