code: def from_file(cls, fp, format_=None, fps=None, **kwargs):
          
          if format_ is None:
              # Autodetect subtitle format, then read again using correct parser.
              # The file might be a pipe and we need to read it twice,
              # so just buffer everything.
              text = fp.read()
              fragment = text[:10000]
              format_ = autodetect_format(fragment)
              fp = io.StringIO(text)
  
          impl = get_format_class(format_)
          subs = cls() # an empty subtitle file
          subs.format = format_
          subs.fps = fps
          impl.from_file(subs, fp, format_, fps=fps, **kwargs)
          return subs
docs: Read subtitle file from file object.
  
          See :meth:`SSAFile.load()` for full description.
  
          Note:
              This is a low-level method. Usually, one of :meth:`SSAFile.load()`
              or :meth:`SSAFile.from_string()` is preferable.
  
          Arguments:
              fp (file object): A file object, ie. :class:`io.TextIOBase` instance.
                  Note that the file must be opened in text mode (as opposed to binary).
  
          Returns:
              SSAFile