def iter_decode(input, fallback_encoding, errors='<STR_LIT:replace>'):
decoder = IncrementalDecoder(fallback_encoding, errors)<EOL>generator = _iter_decode_generator(input, decoder)<EOL>encoding = next(generator)<EOL>return generator, encoding<EOL>
"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.