Kaydet (Commit) cba14976 authored tarafından Nadeem Vawda's avatar Nadeem Vawda

Issue #15677: Document that zlib and gzip accept a compression level of 0 to mean 'no compression'.

Patch by Brian Brazil.
...@@ -38,7 +38,7 @@ The module defines the following items: ...@@ -38,7 +38,7 @@ The module defines the following items:
``'w'``, or ``'wb'`` for binary mode, or ``'rt'``, ``'at'``, or ``'wt'`` for ``'w'``, or ``'wb'`` for binary mode, or ``'rt'``, ``'at'``, or ``'wt'`` for
text mode. The default is ``'rb'``. text mode. The default is ``'rb'``.
The *compresslevel* argument is an integer from 1 to 9, as for the The *compresslevel* argument is an integer from 0 to 9, as for the
:class:`GzipFile` constructor. :class:`GzipFile` constructor.
For binary mode, this function is equivalent to the :class:`GzipFile` For binary mode, this function is equivalent to the :class:`GzipFile`
...@@ -80,9 +80,10 @@ The module defines the following items: ...@@ -80,9 +80,10 @@ The module defines the following items:
in text mode, use :func:`.open` (or wrap your :class:`GzipFile` with an in text mode, use :func:`.open` (or wrap your :class:`GzipFile` with an
:class:`io.TextIOWrapper`). :class:`io.TextIOWrapper`).
The *compresslevel* argument is an integer from ``1`` to ``9`` controlling the The *compresslevel* argument is an integer from ``0`` to ``9`` controlling
level of compression; ``1`` is fastest and produces the least compression, and the level of compression; ``1`` is fastest and produces the least
``9`` is slowest and produces the most compression. The default is ``9``. 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 *mtime* argument is an optional numeric timestamp to be written to
the stream when compressing. All :program:`gzip` compressed streams are the stream when compressing. All :program:`gzip` compressed streams are
......
...@@ -52,10 +52,10 @@ The available exception and functions in this module are: ...@@ -52,10 +52,10 @@ The available exception and functions in this module are:
.. function:: compress(data[, level]) .. function:: compress(data[, level])
Compresses the bytes in *data*, returning a bytes object containing compressed data. 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; *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 ``1`` is fastest and produces the least compression, ``9`` is slowest and
produces the most. The default value is ``6``. Raises the :exc:`error` produces the most. ``0`` is no compression. The default value is ``6``.
exception if any error occurs. Raises the :exc:`error` exception if any error occurs.
.. function:: compressobj(level=-1, method=DEFLATED, wbits=15, memlevel=8, strategy=Z_DEFAULT_STRATEGY[, zdict]) .. function:: compressobj(level=-1, method=DEFLATED, wbits=15, memlevel=8, strategy=Z_DEFAULT_STRATEGY[, zdict])
...@@ -63,9 +63,10 @@ The available exception and functions in this module are: ...@@ -63,9 +63,10 @@ The available exception and functions in this module are:
Returns a compression object, to be used for compressing data streams that won't Returns a compression object, to be used for compressing data streams that won't
fit into memory at once. fit into memory at once.
*level* is the compression level -- an integer from ``1`` to ``9``. A value *level* is the compression level -- an integer from ``0`` to ``9``. A value
of ``1`` is fastest and produces the least compression, while a value of of ``1`` is fastest and produces the least compression, while a value of
``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``.
*method* is the compression algorithm. Currently, the only supported value is *method* is the compression algorithm. Currently, the only supported value is
``DEFLATED``. ``DEFLATED``.
......
...@@ -160,9 +160,10 @@ class GzipFile(io.BufferedIOBase): ...@@ -160,9 +160,10 @@ class GzipFile(io.BufferedIOBase):
A mode of 'r' is equivalent to one of 'rb', and similarly for 'w' and A mode of 'r' is equivalent to one of 'rb', and similarly for 'w' and
'wb', and 'a' and 'ab'. '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, 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 The mtime argument is an optional numeric timestamp to be written
to the stream when compressing. All gzip compressed streams to the stream when compressing. All gzip compressed streams
...@@ -622,7 +623,7 @@ class GzipFile(io.BufferedIOBase): ...@@ -622,7 +623,7 @@ class GzipFile(io.BufferedIOBase):
def compress(data, compresslevel=9): def compress(data, compresslevel=9):
"""Compress data in one shot and return the compressed string. """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() buf = io.BytesIO()
with GzipFile(fileobj=buf, mode='wb', compresslevel=compresslevel) as f: with GzipFile(fileobj=buf, mode='wb', compresslevel=compresslevel) as f:
......
...@@ -359,6 +359,9 @@ Tools/Demos ...@@ -359,6 +359,9 @@ Tools/Demos
Documentation 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 - Issue #8040: added a version switcher to the documentation. Patch by
Yury Selivanov. Yury Selivanov.
......
...@@ -139,7 +139,7 @@ newcompobject(PyTypeObject *type) ...@@ -139,7 +139,7 @@ newcompobject(PyTypeObject *type)
PyDoc_STRVAR(compress__doc__, PyDoc_STRVAR(compress__doc__,
"compress(string[, level]) -- Returned compressed string.\n" "compress(string[, level]) -- Returned compressed string.\n"
"\n" "\n"
"Optional arg level is the compression level, in 1-9."); "Optional arg level is the compression level, in 0-9.");
static PyObject * static PyObject *
PyZlib_compress(PyObject *self, PyObject *args) PyZlib_compress(PyObject *self, PyObject *args)
...@@ -1227,7 +1227,7 @@ PyDoc_STRVAR(zlib_module_documentation, ...@@ -1227,7 +1227,7 @@ PyDoc_STRVAR(zlib_module_documentation,
"zlib library, which is based on GNU zip.\n" "zlib library, which is based on GNU zip.\n"
"\n" "\n"
"adler32(string[, start]) -- Compute an Adler-32 checksum.\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" "compressobj([level[, ...]]) -- Return a compressor object.\n"
"crc32(string[, start]) -- Compute a CRC-32 checksum.\n" "crc32(string[, start]) -- Compute a CRC-32 checksum.\n"
"decompress(string,[wbits],[bufsize]) -- Decompresses a compressed string.\n" "decompress(string,[wbits],[bufsize]) -- Decompresses a compressed string.\n"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment