diff --git a/Doc/library/gzip.rst b/Doc/library/gzip.rst index 9422ea9943a..abbd018ca27 100644 --- a/Doc/library/gzip.rst +++ b/Doc/library/gzip.rst @@ -50,9 +50,10 @@ The module defines the following items: supported. If you need to read a compressed file in text mode, wrap your :class:`GzipFile` with an :class:`io.TextIOWrapper`. - The *compresslevel* argument is an integer from ``1`` to ``9`` controlling the - level of compression; ``1`` is fastest and produces the least compression, and - ``9`` is slowest and produces the most compression. The default is ``9``. + The *compresslevel* argument is an integer from ``0`` to ``9`` controlling + the level of compression; ``1`` is fastest and produces the least + compression, and ``9`` is slowest and produces the most compression. ``0`` + is no compression. The default is ``9``. The *mtime* argument is an optional numeric timestamp to be written to the stream when compressing. All :program:`gzip` compressed streams are diff --git a/Doc/library/zlib.rst b/Doc/library/zlib.rst index 897d919e310..75640d46b44 100644 --- a/Doc/library/zlib.rst +++ b/Doc/library/zlib.rst @@ -51,19 +51,20 @@ The available exception and functions in this module are: .. function:: compress(data[, level]) - Compresses the bytes in *data*, returning a bytes object containing compressed data. - *level* is an integer from ``1`` to ``9`` controlling the level of compression; - ``1`` is fastest and produces the least compression, ``9`` is slowest and - produces the most. The default value is ``6``. Raises the :exc:`error` - exception if any error occurs. + Compresses the bytes in *data*, returning a bytes object containing + compressed data. *level* is an integer from ``0`` to ``9`` controlling the + level of compression; ``1`` is fastest and produces the least compression, + ``9`` is slowest and produces the most. ``0`` is no compression. The default + value is ``6``. Raises the :exc:`error` exception if any error occurs. .. function:: compressobj([level]) Returns a compression object, to be used for compressing data streams that won't - fit into memory at once. *level* is an integer from ``1`` to ``9`` controlling + fit into memory at once. *level* is an integer from ``0`` to ``9`` controlling the level of compression; ``1`` is fastest and produces the least compression, - ``9`` is slowest and produces the most. The default value is ``6``. + ``9`` is slowest and produces the most. ``0`` is no compression. The default + value is ``6``. .. function:: crc32(data[, value]) diff --git a/Lib/gzip.py b/Lib/gzip.py index e1b43a55988..403040bd9c4 100644 --- a/Lib/gzip.py +++ b/Lib/gzip.py @@ -137,9 +137,10 @@ class GzipFile(io.BufferedIOBase): A mode of 'r' is equivalent to one of 'rb', and similarly for 'w' and 'wb', and 'a' and 'ab'. - The compresslevel argument is an integer from 1 to 9 controlling the + The compresslevel argument is an integer from 0 to 9 controlling the level of compression; 1 is fastest and produces the least compression, - and 9 is slowest and produces the most compression. The default is 9. + and 9 is slowest and produces the most compression. 0 is no compression + at all. The default is 9. The mtime argument is an optional numeric timestamp to be written to the stream when compressing. All gzip compressed streams @@ -573,7 +574,7 @@ class GzipFile(io.BufferedIOBase): def compress(data, compresslevel=9): """Compress data in one shot and return the compressed string. - Optional argument is the compression level, in range of 1-9. + Optional argument is the compression level, in range of 0-9. """ buf = io.BytesIO() with GzipFile(fileobj=buf, mode='wb', compresslevel=compresslevel) as f: diff --git a/Misc/NEWS b/Misc/NEWS index cdc96b8276a..4fc124d8175 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -714,6 +714,9 @@ Tools/Demos Documentation ------------- +- Issue #15677: Document that zlib and gzip accept a compression level of 0 to + mean 'no compression'. Patch by Brian Brazil. + - Issue #8040: added a version switcher to the documentation. Patch by Yury Selivanov. diff --git a/Modules/zlibmodule.c b/Modules/zlibmodule.c index 6a772ad622e..bb453aed637 100644 --- a/Modules/zlibmodule.c +++ b/Modules/zlibmodule.c @@ -81,7 +81,7 @@ zlib_error(z_stream zst, int err, char *msg) PyDoc_STRVAR(compressobj__doc__, "compressobj([level]) -- Return a compressor object.\n" "\n" -"Optional arg level is the compression level, in 1-9."); +"Optional arg level is the compression level, in 0-9."); PyDoc_STRVAR(decompressobj__doc__, "decompressobj([wbits]) -- Return a decompressor object.\n" @@ -115,7 +115,7 @@ newcompobject(PyTypeObject *type) PyDoc_STRVAR(compress__doc__, "compress(string[, level]) -- Returned compressed string.\n" "\n" -"Optional arg level is the compression level, in 1-9."); +"Optional arg level is the compression level, in 0-9."); static PyObject * PyZlib_compress(PyObject *self, PyObject *args) @@ -1135,7 +1135,7 @@ PyDoc_STRVAR(zlib_module_documentation, "zlib library, which is based on GNU zip.\n" "\n" "adler32(string[, start]) -- Compute an Adler-32 checksum.\n" -"compress(string[, level]) -- Compress string, with compression level in 1-9.\n" +"compress(string[, level]) -- Compress string, with compression level in 0-9.\n" "compressobj([level]) -- Return a compressor object.\n" "crc32(string[, start]) -- Compute a CRC-32 checksum.\n" "decompress(string,[wbits],[bufsize]) -- Decompresses a compressed string.\n"