From 95657cdd40dace0a8f62c50b3f0991b4ec9972fd Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sat, 25 Jun 2016 22:43:05 +0300 Subject: [PATCH] Issue #26243: Only the level argument to zlib.compress() is keyword argument now. The first argument is positional-only. --- Doc/library/zlib.rst | 2 +- Lib/test/test_zlib.py | 4 +++- Misc/NEWS | 3 +++ Modules/clinic/zlibmodule.c.h | 6 +++--- Modules/zlibmodule.c | 3 ++- 5 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Doc/library/zlib.rst b/Doc/library/zlib.rst index 111fb9ec903..6d8a467a49f 100644 --- a/Doc/library/zlib.rst +++ b/Doc/library/zlib.rst @@ -58,7 +58,7 @@ The available exception and functions in this module are: Raises the :exc:`error` exception if any error occurs. .. versionchanged:: 3.6 - Keyword arguments are now supported. + *level* is now supported as keyword arguments. .. function:: compressobj(level=-1, method=DEFLATED, wbits=15, memLevel=8, strategy=Z_DEFAULT_STRATEGY[, zdict]) diff --git a/Lib/test/test_zlib.py b/Lib/test/test_zlib.py index 4d3611c4a69..bb9292bac45 100644 --- a/Lib/test/test_zlib.py +++ b/Lib/test/test_zlib.py @@ -163,8 +163,10 @@ class CompressTestCase(BaseCompressTestCase, unittest.TestCase): self.assertEqual(zlib.decompress(x), HAMLET_SCENE) def test_keywords(self): - x = zlib.compress(data=HAMLET_SCENE, level=3) + x = zlib.compress(HAMLET_SCENE, level=3) self.assertEqual(zlib.decompress(x), HAMLET_SCENE) + with self.assertRaises(TypeError): + zlib.compress(data=HAMLET_SCENE, level=3) def test_speech128(self): # compress more data diff --git a/Misc/NEWS b/Misc/NEWS index 53537126631..58b774e39b7 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -10,6 +10,9 @@ What's New in Python 3.6.0 alpha 3 Library ------- +- Issue #26243: Only the level argument to zlib.compress() is keyword argument + now. The first argument is positional-only. + - Issue #27038: Expose the DirEntry type as os.DirEntry. Code patch by Jelle Zijlstra. diff --git a/Modules/clinic/zlibmodule.c.h b/Modules/clinic/zlibmodule.c.h index c657bcb6449..dcaeef81e6c 100644 --- a/Modules/clinic/zlibmodule.c.h +++ b/Modules/clinic/zlibmodule.c.h @@ -3,7 +3,7 @@ preserve [clinic start generated code]*/ PyDoc_STRVAR(zlib_compress__doc__, -"compress($module, /, data, level=Z_DEFAULT_COMPRESSION)\n" +"compress($module, data, /, level=Z_DEFAULT_COMPRESSION)\n" "--\n" "\n" "Returns a bytes object containing compressed data.\n" @@ -23,7 +23,7 @@ static PyObject * zlib_compress(PyModuleDef *module, PyObject *args, PyObject *kwargs) { PyObject *return_value = NULL; - static char *_keywords[] = {"data", "level", NULL}; + static char *_keywords[] = {"", "level", NULL}; Py_buffer data = {NULL, NULL}; int level = Z_DEFAULT_COMPRESSION; @@ -460,4 +460,4 @@ exit: #ifndef ZLIB_COMPRESS_COPY_METHODDEF #define ZLIB_COMPRESS_COPY_METHODDEF #endif /* !defined(ZLIB_COMPRESS_COPY_METHODDEF) */ -/*[clinic end generated code: output=9bd8a093baa653b2 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=ba904dec30cc1a1a input=a9049054013a1b77]*/ diff --git a/Modules/zlibmodule.c b/Modules/zlibmodule.c index ad6f28d7bc6..3a459a58f45 100644 --- a/Modules/zlibmodule.c +++ b/Modules/zlibmodule.c @@ -143,6 +143,7 @@ zlib.compress data: Py_buffer Binary data to be compressed. + / level: int(c_default="Z_DEFAULT_COMPRESSION") = Z_DEFAULT_COMPRESSION Compression level, in 0-9 or -1. @@ -151,7 +152,7 @@ Returns a bytes object containing compressed data. static PyObject * zlib_compress_impl(PyModuleDef *module, Py_buffer *data, int level) -/*[clinic end generated code: output=1b97589132b203b4 input=abed30f4fa14e213]*/ +/*[clinic end generated code: output=1b97589132b203b4 input=638d54b6315dbed3]*/ { PyObject *ReturnVal = NULL; Byte *input, *output = NULL;