code: def iter_decode(input, fallback_encoding, errors='replace'):
      
  
      decoder = IncrementalDecoder(fallback_encoding, errors)
      generator = _iter_decode_generator(input, decoder)
      encoding = next(generator)
      return generator, encoding
docs: "Pull"-based decoder.
  
      :param input:
          An iterable of byte strings.
  
          The input is first consumed just enough to determine the encoding
          based on the precense of a BOM,
          then consumed on demand when the return value is.
      :param fallback_encoding:
          An :class:`Encoding` object or a label string.
          The encoding to use if :obj:`input` does note have a BOM.
      :param errors: Type of error handling. See :func:`codecs.register`.
      :raises: :exc:`~exceptions.LookupError` for an unknown encoding label.
      :returns:
          An ``(output, encoding)`` tuple.
          :obj:`output` is an iterable of Unicode strings,
          :obj:`encoding` is the :obj:`Encoding` that is being used.