From: Ezio Melotti Date: Wed, 28 Sep 2011 21:18:19 +0000 (+0300) Subject: #13054: sys.maxunicode is now always 0x10FFFF. X-Git-Tag: v3.3.0a1~1461 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=48a2f8fd972205688a1011348100bdb482c81836;p=thirdparty%2FPython%2Fcpython.git #13054: sys.maxunicode is now always 0x10FFFF. --- diff --git a/Doc/library/sys.rst b/Doc/library/sys.rst index acdde6d62a1c..43f65e206b88 100644 --- a/Doc/library/sys.rst +++ b/Doc/library/sys.rst @@ -625,9 +625,13 @@ always available. .. data:: maxunicode - An integer giving the largest supported code point for a Unicode character. The - value of this depends on the configuration option that specifies whether Unicode - characters are stored as UCS-2 or UCS-4. + An integer giving the value of the largest Unicode code point, + i.e. ``1114111`` (``0x10FFFF`` in hexadecimal). + + .. versionchanged:: 3.3 + Before :pep:`393`, :data:`sys.maxunicode` used to return either ``0xFFFF`` + or ``0x10FFFF``, depending on the configuration option that specified + whether Unicode characters were stored as UCS-2 or UCS-4. .. data:: meta_path diff --git a/Doc/whatsnew/3.3.rst b/Doc/whatsnew/3.3.rst index 717e4e4748df..3cd4dd1f8250 100644 --- a/Doc/whatsnew/3.3.rst +++ b/Doc/whatsnew/3.3.rst @@ -55,6 +55,17 @@ PEP XXX: Stub ============= +PEP 393: Flexible String Representation +======================================= + +XXX Add list of changes introduced by :pep:`393` here: + +* The value of :data:`sys.maxunicode` is now always ``1114111`` (``0x10FFFF`` + in hexadecimal). The :c:func:`PyUnicode_GetMax` function still returns + either ``0xFFFF`` or ``0x10FFFF`` for backward compatibility, and it should + not be used with the new Unicode API (see :issue:`13054`). + + Other Language Changes ====================== diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py index 0b7bbf129661..c99f4d7e092b 100644 --- a/Lib/test/test_sys.py +++ b/Lib/test/test_sys.py @@ -447,6 +447,7 @@ class SysModuleTest(unittest.TestCase): self.assertIsInstance(sys.maxsize, int) self.assertIsInstance(sys.maxunicode, int) + self.assertEqual(sys.maxunicode, 0x10FFFF) self.assertIsInstance(sys.platform, str) self.assertIsInstance(sys.prefix, str) self.assertIsInstance(sys.version, str) diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index b61f0581b320..45d56f7f187c 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -207,7 +207,8 @@ static unsigned char ascii_linebreak[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; - +/* The max unicode value is always 0x10FFFF while using the PEP-393 API. + This function is kept for backward compatibility with the old API. */ Py_UNICODE PyUnicode_GetMax(void) { diff --git a/Python/sysmodule.c b/Python/sysmodule.c index b5492035365a..dea21490e29b 100644 --- a/Python/sysmodule.c +++ b/Python/sysmodule.c @@ -1261,7 +1261,7 @@ float_repr_style -- string indicating the style of repr() output for floats\n\ hexversion -- version information encoded as a single integer\n\ int_info -- a struct sequence with information about the int implementation.\n\ maxsize -- the largest supported length of containers.\n\ -maxunicode -- the largest supported character\n\ +maxunicode -- the value of the largest Unicode codepoint\n\ platform -- platform identifier\n\ prefix -- prefix used to find the Python library\n\ thread_info -- a struct sequence with information about the thread implementation.\n\ @@ -1536,7 +1536,7 @@ _PySys_Init(void) SET_SYS_FROM_STRING("hash_info", get_hash_info()); SET_SYS_FROM_STRING("maxunicode", - PyLong_FromLong(PyUnicode_GetMax())); + PyLong_FromLong(0x10FFFF)); SET_SYS_FROM_STRING("builtin_module_names", list_builtin_module_names()); {