Issue #12306: Add ZLIB_RUNTIME_VERSION to the zlib module.

While we're at it, also document ZLIB_VERSION.

Patch by Torsten Landschoff.
This commit is contained in:
Nadeem Vawda 2011-09-12 00:04:13 +02:00
parent 249ab5e8d1
commit 64d25ddb9c
4 changed files with 40 additions and 0 deletions

View file

@ -122,6 +122,7 @@ The available exception and functions in this module are:
won't fit into memory at once. The *wbits* parameter controls the size of the
window buffer.
Compression objects support the following methods:
@ -217,6 +218,26 @@ Decompression objects support the following methods and attributes:
seeks into the stream at a future point.
Information about the version of the zlib library in use is available through
the following constants:
.. data:: ZLIB_VERSION
The version string of the zlib library that was used for building the module.
This may be different from the zlib library actually used at runtime, which
is available as :const:`ZLIB_RUNTIME_VERSION`.
.. versionadded:: 3.3
.. data:: ZLIB_RUNTIME_VERSION
The version string of the zlib library actually loaded by the interpreter.
.. versionadded:: 3.3
.. seealso::
Module :mod:`gzip`

View file

@ -13,6 +13,17 @@
mmap = None
class VersionTestCase(unittest.TestCase):
def test_library_version(self):
# On the build system, ZLIB_RUNTIME_VERSION should match ZLIB_VERSION.
# ZLIB_RUNTIME_VERSION is the actual library version while ZLIB_VERSION
# is the version from the header file. On the build system, the headers
# should match with the library exactly. At runtime, only the first
# digit is required to match.
self.assertEqual(zlib.ZLIB_RUNTIME_VERSION, zlib.ZLIB_VERSION)
class ChecksumTestCase(unittest.TestCase):
# checksum test cases
def test_crc32start(self):
@ -647,6 +658,7 @@ def choose_lines(source, number, seed=None, generator=random):
def test_main():
support.run_unittest(
VersionTestCase,
ChecksumTestCase,
ChecksumBigBufferTestCase,
ExceptionTestCase,

View file

@ -274,6 +274,9 @@ Core and Builtins
Library
-------
- Issue #12306: Expose the runtime version of the zlib C library as a constant,
ZLIB_RUNTIME_VERSION, in the zlib module. Patch by Torsten Landschoff.
- Issue #12959: Add collections.ChainMap to collections.__all__.
- Issue #12567: Add curses.unget_wch() function. Push a character so the next

View file

@ -1169,6 +1169,10 @@ PyInit_zlib(void)
if (ver != NULL)
PyModule_AddObject(m, "ZLIB_VERSION", ver);
ver = PyUnicode_FromString(zlibVersion());
if (ver != NULL)
PyModule_AddObject(m, "ZLIB_RUNTIME_VERSION", ver);
PyModule_AddStringConstant(m, "__version__", "1.0");
return m;