\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.gzip.org/zlib/}.  Version 1.1.3 is the
most recent version as of September 2000; use a later version if one
is available.  There are known incompatibilities between the Python
module and earlier versions of the zlib library.

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.
\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.
\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 and
are used to allow partial error recovery on decompression, 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}

Decompression objects support the following methods, and a single attribute:

\begin{memberdesc}{unused_data}
A string which contains any unused data from the last string fed to
this decompression object.  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 into a decompression object's
\method{decompress} method until the \member{unused_data} attribute is
no longer the empty string.  
\end{memberdesc}

\begin{methoddesc}[Decompress]{decompress}{string}
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.
\end{methoddesc}

\begin{methoddesc}[Decompress]{flush}{}
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.
\end{methoddesc}

\begin{seealso}
  \seemodule{gzip}{Reading and writing \program{gzip}-format files.}
  \seeurl{http://www.gzip.org/zlib/}{The zlib library home page.}
\end{seealso}
