If *max_length* is non-negative, the method returns at most *max_length*
bytes of decompressed data. If this limit is reached and further
- output can be produced, the :attr:`~.needs_input` attribute will
- be set to ``False``. In this case, the next call to
+ output can be produced (or EOF is reached), the :attr:`~.needs_input`
+ attribute will be set to ``False``. In this case, the next call to
:meth:`~.decompress` may provide *data* as ``b''`` to obtain
- more of the output.
+ more of the output. The full content can thus be read like::
+
+ process_output(d.decompress(data, max_length))
+ while not d.eof and not d.needs_input:
+ process_output(d.decompress(b"", max_length))
If all of the input data was decompressed and returned (either
because this was less than *max_length* bytes, or because
:attr:`unconsumed_tail`. This bytestring must be passed to a subsequent call to
:meth:`decompress` if decompression is to continue. If *max_length* is zero
then the whole input is decompressed, and :attr:`unconsumed_tail` is empty.
+ For example, the full content could be read like::
+
+ process_output(d.decompress(data, max_length))
+ while chunk := d.decompress(d.unconsumed_tail, max_length):
+ process_output(chunk)
.. versionchanged:: 3.6
*max_length* can be used as a keyword argument.