| 
									
										
										
										
											1998-08-10 19:42:37 +00:00
										 |  |  | \section{\module{zlib} --- | 
					
						
							| 
									
										
										
										
											1999-04-21 18:44:41 +00:00
										 |  |  |          Compression compatible with \program{gzip}} | 
					
						
							| 
									
										
										
										
											1998-07-23 17:59:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-02-20 00:14:17 +00:00
										 |  |  | \declaremodule{builtin}{zlib} | 
					
						
							| 
									
										
										
										
											1998-07-27 22:08:49 +00:00
										 |  |  | \modulesynopsis{Low-level interface to compression and decompression | 
					
						
							| 
									
										
										
										
											1999-04-21 18:44:41 +00:00
										 |  |  |                 routines compatible with \program{gzip}.} | 
					
						
							| 
									
										
										
										
											1998-07-23 17:59:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1997-04-30 18:12:27 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | For applications that require data compression, the functions in this | 
					
						
							| 
									
										
										
										
											1998-04-09 15:41:44 +00:00
										 |  |  | module allow compression and decompression, using the zlib library. | 
					
						
							|  |  |  | The zlib library has its own home page at | 
					
						
							| 
									
										
										
										
											2000-09-16 06:18:26 +00:00
										 |  |  | \url{http://www.info-zip.org/pub/infozip/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. | 
					
						
							| 
									
										
										
										
											1999-04-05 21:55:21 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-04-03 06:49:26 +00:00
										 |  |  | The available exception and functions in this module are: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{excdesc}{error} | 
					
						
							|  |  |  |   Exception raised on compression and decompression errors. | 
					
						
							|  |  |  | \end{excdesc} | 
					
						
							| 
									
										
										
										
											1997-04-30 18:12:27 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-03-17 06:33:25 +00:00
										 |  |  | \begin{funcdesc}{adler32}{string\optional{, value}} | 
					
						
							| 
									
										
										
										
											1997-04-30 18:12:27 +00:00
										 |  |  |    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} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-03-17 06:33:25 +00:00
										 |  |  | \begin{funcdesc}{compress}{string\optional{, level}} | 
					
						
							| 
									
										
										
										
											1998-06-19 21:18:28 +00:00
										 |  |  |   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. | 
					
						
							| 
									
										
										
										
											1997-04-30 18:12:27 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{compressobj}{\optional{level}} | 
					
						
							| 
									
										
										
										
											1998-01-22 16:11:18 +00:00
										 |  |  |   Returns a compression object, to be used for compressing data streams | 
					
						
							| 
									
										
										
										
											1997-04-30 18:12:27 +00:00
										 |  |  |   that won't fit into memory at once.  \var{level} is an integer from | 
					
						
							| 
									
										
										
										
											1998-01-22 16:11:18 +00:00
										 |  |  |   \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}. | 
					
						
							| 
									
										
										
										
											1997-04-30 18:12:27 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-03-17 06:33:25 +00:00
										 |  |  | \begin{funcdesc}{crc32}{string\optional{, value}} | 
					
						
							| 
									
										
										
										
											1998-04-03 06:49:26 +00:00
										 |  |  |   Computes a CRC (Cyclic Redundancy Check)%
 | 
					
						
							|  |  |  |   \index{Cyclic Redundancy Check} | 
					
						
							| 
									
										
										
										
											1998-04-04 06:28:54 +00:00
										 |  |  |   \index{checksum!Cyclic Redundancy Check} | 
					
						
							| 
									
										
										
										
											1998-04-03 06:49:26 +00:00
										 |  |  |   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. | 
					
						
							| 
									
										
										
										
											1997-04-30 18:12:27 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-04-03 20:13:55 +00:00
										 |  |  | \begin{funcdesc}{decompress}{string\optional{, wbits\optional{, bufsize}}} | 
					
						
							| 
									
										
										
										
											1998-06-19 21:18:28 +00:00
										 |  |  |   Decompresses the data in \var{string}, returning a string containing | 
					
						
							|  |  |  |   the uncompressed data.  The \var{wbits} parameter controls the size of | 
					
						
							| 
									
										
										
										
											2000-04-03 20:13:55 +00:00
										 |  |  |   the window buffer.  If \var{bufsize} is given, it is used as the | 
					
						
							| 
									
										
										
										
											1998-06-19 21:18:28 +00:00
										 |  |  |   initial size of the output buffer.  Raises the \exception{error} | 
					
						
							|  |  |  |   exception if any error occurs. | 
					
						
							| 
									
										
										
										
											2000-04-03 20:13:55 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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. | 
					
						
							|  |  |  |     | 
					
						
							| 
									
										
										
										
											1997-04-30 18:12:27 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{decompressobj}{\optional{wbits}} | 
					
						
							| 
									
										
										
										
											1998-06-19 21:18:28 +00:00
										 |  |  |   Returns a compression 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. | 
					
						
							| 
									
										
										
										
											1997-04-30 18:12:27 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Compression objects support the following methods: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-04-03 06:49:26 +00:00
										 |  |  | \begin{methoddesc}[Compress]{compress}{string} | 
					
						
							| 
									
										
										
										
											1997-04-30 18:12:27 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											1998-01-22 16:11:18 +00:00
										 |  |  | \method{compress()} method.  Some input may be kept in internal buffers | 
					
						
							| 
									
										
										
										
											1997-04-30 18:12:27 +00:00
										 |  |  | for later processing. | 
					
						
							| 
									
										
										
										
											1998-04-03 06:49:26 +00:00
										 |  |  | \end{methoddesc} | 
					
						
							| 
									
										
										
										
											1997-04-30 18:12:27 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-12-31 21:14:23 +00:00
										 |  |  | \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 | 
					
						
							| 
									
										
										
										
											1998-01-22 16:11:18 +00:00
										 |  |  | \method{compress()} method cannot be called again; the only realistic | 
					
						
							| 
									
										
										
										
											1998-12-31 21:14:23 +00:00
										 |  |  | action is to delete the object.   | 
					
						
							| 
									
										
										
										
											1998-04-03 06:49:26 +00:00
										 |  |  | \end{methoddesc} | 
					
						
							| 
									
										
										
										
											1997-04-30 18:12:27 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-04-03 20:13:55 +00:00
										 |  |  | 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} | 
					
						
							| 
									
										
										
										
											1997-04-30 18:12:27 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-04-03 06:49:26 +00:00
										 |  |  | \begin{methoddesc}[Decompress]{decompress}{string} | 
					
						
							| 
									
										
										
										
											1997-04-30 18:12:27 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											1998-01-22 16:11:18 +00:00
										 |  |  | \method{decompress()} method.  Some of the input data may be preserved | 
					
						
							| 
									
										
										
										
											1997-04-30 19:39:21 +00:00
										 |  |  | in internal buffers for later processing. | 
					
						
							| 
									
										
										
										
											1998-04-03 06:49:26 +00:00
										 |  |  | \end{methoddesc} | 
					
						
							| 
									
										
										
										
											1997-04-30 18:12:27 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-04-03 06:49:26 +00:00
										 |  |  | \begin{methoddesc}[Decompress]{flush}{} | 
					
						
							| 
									
										
										
										
											1997-04-30 18:12:27 +00:00
										 |  |  | All pending input is processed, and a string containing the remaining | 
					
						
							| 
									
										
										
										
											1998-01-22 16:11:18 +00:00
										 |  |  | uncompressed output is returned.  After calling \method{flush()}, the | 
					
						
							|  |  |  | \method{decompress()} method cannot be called again; the only realistic | 
					
						
							| 
									
										
										
										
											1997-04-30 18:12:27 +00:00
										 |  |  | action is to delete the object. | 
					
						
							| 
									
										
										
										
											1998-04-03 06:49:26 +00:00
										 |  |  | \end{methoddesc} | 
					
						
							| 
									
										
										
										
											1997-04-30 18:12:27 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1997-07-17 16:34:52 +00:00
										 |  |  | \begin{seealso} | 
					
						
							| 
									
										
										
										
											2000-10-18 17:43:06 +00:00
										 |  |  |   \seemodule{gzip}{Reading and writing \program{gzip}-format files.} | 
					
						
							| 
									
										
										
										
											2000-09-16 06:18:26 +00:00
										 |  |  |   \seeurl{http://www.info-zip.org/pub/infozip/zlib/}{The | 
					
						
							|  |  |  |           zlib library home page.} | 
					
						
							| 
									
										
										
										
											1997-07-17 16:34:52 +00:00
										 |  |  | \end{seealso} |