\section{\module{zlib} ---
         Compression compatible with \program{gzip}}

\declaremodule{builtin}{zlib}
\modulesynopsis{Low-level interface to compression and decompression
                routines compatible with \program{gzip}.}


For applications that require data compression, the functions in this
module allow compression and decompression, using the zlib library.
The zlib library has its own home page at \url{http://www.zlib.net}.  
There are known incompatibilities between the Python module and
versions of the zlib library earlier than 1.1.3; 1.1.3 has a security
vulnerability, so we recommend using 1.1.4 or later.

zlib's functions have many options and often need to be used in a
particular order.  This documentation doesn't attempt to cover all of
the permutations; consult the zlib manual at
\url{http://www.zlib.net/manual.html} for authoritative information.

The available exception and functions in this module are:

\begin{excdesc}{error}
  Exception raised on compression and decompression errors.
\end{excdesc}


\begin{funcdesc}{adler32}{string\optional{, value}}
   Computes a Adler-32 checksum of \var{string}.  (An Adler-32
   checksum is almost as reliable as a CRC32 but can be computed much
   more quickly.)  If \var{value} is present, it is used as the
   starting value of the checksum; otherwise, a fixed default value is
   used.  This allows computing a running checksum over the
   concatenation of several input strings.  The algorithm is not
   cryptographically strong, and should not be used for
   authentication or digital signatures.  Since the algorithm is
   designed for use as a checksum algorithm, it is not suitable for
   use as a general hash algorithm.
\end{funcdesc}

\begin{funcdesc}{compress}{string\optional{, level}}
  Compresses the data in \var{string}, returning a string contained
  compressed data.  \var{level} is an integer from \code{1} to
  \code{9} controlling the level of compression; \code{1} is fastest
  and produces the least compression, \code{9} is slowest and produces
  the most.  The default value is \code{6}.  Raises the
  \exception{error} exception if any error occurs.
\end{funcdesc}

\begin{funcdesc}{compressobj}{\optional{level}}
  Returns a compression object, to be used for compressing data streams
  that won't fit into memory at once.  \var{level} is an integer from
  \code{1} to \code{9} controlling the level of compression; \code{1} is
  fastest and produces the least compression, \code{9} is slowest and
  produces the most.  The default value is \code{6}.
\end{funcdesc}

\begin{funcdesc}{crc32}{string\optional{, value}}
  Computes a CRC (Cyclic Redundancy Check)%
  \index{Cyclic Redundancy Check}
  \index{checksum!Cyclic Redundancy Check}
  checksum of \var{string}. If
  \var{value} is present, it is used as the starting value of the
  checksum; otherwise, a fixed default value is used.  This allows
  computing a running checksum over the concatenation of several
  input strings.  The algorithm is not cryptographically strong, and
  should not be used for authentication or digital signatures.  Since
  the algorithm is designed for use as a checksum algorithm, it is not
  suitable for use as a general hash algorithm.
\end{funcdesc}

\begin{funcdesc}{decompress}{string\optional{, wbits\optional{, bufsize}}}
  Decompresses the data in \var{string}, returning a string containing
  the uncompressed data.  The \var{wbits} parameter controls the size of
  the window buffer.  If \var{bufsize} is given, it is used as the
  initial size of the output buffer.  Raises the \exception{error}
  exception if any error occurs.

The absolute value of \var{wbits} is the base two logarithm of the
size of the history buffer (the ``window size'') used when compressing
data.  Its absolute value should be between 8 and 15 for the most
recent versions of the zlib library, larger values resulting in better
compression at the expense of greater memory usage.  The default value
is 15.  When \var{wbits} is negative, the standard
\program{gzip} header is suppressed; this is an undocumented feature
of the zlib library, used for compatibility with \program{unzip}'s
compression file format.

\var{bufsize} is the initial size of the buffer used to hold
decompressed data.  If more space is required, the buffer size will be
increased as needed, so you don't have to get this value exactly
right; tuning it will only save a few calls to \cfunction{malloc()}.  The
default size is 16384.
   
\end{funcdesc}

\begin{funcdesc}{decompressobj}{\optional{wbits}}
  Returns a decompression object, to be used for decompressing data
  streams that won't fit into memory at once.  The \var{wbits}
  parameter controls the size of the window buffer.
\end{funcdesc}

Compression objects support the following methods:

\begin{methoddesc}[Compress]{compress}{string}
Compress \var{string}, returning a string containing compressed data
for at least part of the data in \var{string}.  This data should be
concatenated to the output produced by any preceding calls to the
\method{compress()} method.  Some input may be kept in internal buffers
for later processing.
\end{methoddesc}

\begin{methoddesc}[Compress]{flush}{\optional{mode}}
All pending input is processed, and a string containing the remaining
compressed output is returned.  \var{mode} can be selected from the
constants \constant{Z_SYNC_FLUSH},  \constant{Z_FULL_FLUSH},  or 
\constant{Z_FINISH}, defaulting to \constant{Z_FINISH}.  \constant{Z_SYNC_FLUSH} and 
\constant{Z_FULL_FLUSH} allow compressing further strings of data, while
\constant{Z_FINISH} finishes the compressed stream and 
prevents compressing any more data.  After calling
\method{flush()} with \var{mode} set to \constant{Z_FINISH}, the
\method{compress()} method cannot be called again; the only realistic
action is to delete the object.  
\end{methoddesc}

\begin{methoddesc}[Compress]{copy}{}
Returns a copy of the compression object.  This can be used to efficiently
compress a set of data that share a common initial prefix.
\versionadded{2.5}
\end{methoddesc}

Decompression objects support the following methods, and two attributes:

\begin{memberdesc}{unused_data}
A string which contains any bytes past the end of the compressed data.
That is, this remains \code{""} until the last byte that contains
compression data is available.  If the whole string turned out to
contain compressed data, this is \code{""}, the empty string.

The only way to determine where a string of compressed data ends is by
actually decompressing it.  This means that when compressed data is
contained part of a larger file, you can only find the end of it by
reading data and feeding it followed by some non-empty string into a
decompression object's \method{decompress} method until the
\member{unused_data} attribute is no longer the empty string.
\end{memberdesc}

\begin{memberdesc}{unconsumed_tail}
A string that contains any data that was not consumed by the last
\method{decompress} call because it exceeded the limit for the
uncompressed data buffer.  This data has not yet been seen by the zlib
machinery, so you must feed it (possibly with further data
concatenated to it) back to a subsequent \method{decompress} method
call in order to get correct output.
\end{memberdesc}


\begin{methoddesc}[Decompress]{decompress}{string\optional{, max_length}}
Decompress \var{string}, returning a string containing the
uncompressed data corresponding to at least part of the data in
\var{string}.  This data should be concatenated to the output produced
by any preceding calls to the
\method{decompress()} method.  Some of the input data may be preserved
in internal buffers for later processing.

If the optional parameter \var{max_length} is supplied then the return value
will be no longer than \var{max_length}. This may mean that not all of the
compressed input can be processed; and unconsumed data will be stored
in the attribute \member{unconsumed_tail}. This string must be passed
to a subsequent call to \method{decompress()} if decompression is to
continue.  If \var{max_length} is not supplied then the whole input is
decompressed, and \member{unconsumed_tail} is an empty string.
\end{methoddesc}

\begin{methoddesc}[Decompress]{flush}{\optional{length}}
All pending input is processed, and a string containing the remaining
uncompressed output is returned.  After calling \method{flush()}, the
\method{decompress()} method cannot be called again; the only realistic
action is to delete the object.

The optional parameter \var{length} sets the initial size of the
output buffer.
\end{methoddesc}

\begin{methoddesc}[Decompress]{copy}{}
Returns a copy of the decompression object.  This can be used to save the
state of the decompressor midway through the data stream in order to speed up
random seeks into the stream at a future point.
\versionadded{2.5}
\end{methoddesc}

\begin{seealso}
  \seemodule{gzip}{Reading and writing \program{gzip}-format files.}
  \seeurl{http://www.zlib.net}{The zlib library home page.}
  \seeurl{http://www.zlib.net/manual.html}{The zlib manual explains 
    the semantics and usage of the library's many functions.}
\end{seealso}
