diff --git a/.hgtags b/.hgtags index ab6ce659e25..b1aa75d67e3 100644 --- a/.hgtags +++ b/.hgtags @@ -153,3 +153,4 @@ b4cbecbc0781e89a309d03b60a1f75f8499250e6 v3.4.3 0035fcd9b9243ae52c2e830204fd9c1f7d528534 v3.5.0b3 c0d64105463581f85d0e368e8d6e59b7fd8f12b1 v3.5.0b4 1a58b1227501e046eee13d90f113417b60843301 v3.5.0rc1 +cc15d736d860303b9da90d43cd32db39bab048df v3.5.0rc2 diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py index 931754e1544..6f62bb35fef 100644 --- a/Lib/importlib/_bootstrap.py +++ b/Lib/importlib/_bootstrap.py @@ -745,7 +745,7 @@ class BuiltinImporter: @classmethod def exec_module(self, module): """Exec a built-in module""" - _call_with_frames_removed(_imp.exec_dynamic, module) + _call_with_frames_removed(_imp.exec_builtin, module) @classmethod @_requires_builtin diff --git a/Misc/NEWS b/Misc/NEWS index e12494c03d7..04401520bad 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -10,36 +10,19 @@ Release date: XXXX-XX-XX Core and Builtins ----------------- -- Issue #21167: NAN operations are now handled correctly when python is - compiled with ICC even if -fp-model strict is not specified. - - Issue #9232: Modify Python's grammar to allow trailing commas in the argument list of a function declaration. For example, "def f(*, a = 3,): pass" is now legal. Patch from Mark Dickinson. -- Issue #24667: Resize odict in all cases that the underlying dict resizes. - Library ------- - Issue #24633: site-packages/README -> README.txt. -- Issue #20362: Honour TestCase.longMessage correctly in assertRegex. - Patch from Ilia Kurenkov. - -- Issue #24764: cgi.FieldStorage.read_multi() now ignores the Content-Length - header in part headers. Patch written by Peter Landry and reviewed by Pierre - Quentel. - - Issue #24879: help() and pydoc can now list named tuple fields in the order they were defined rather than alphabetically. The ordering is determined by the _fields attribute if present. -- Issue #24774: Fix docstring in http.server.test. Patch from Chiu-Hsiang Hsu. - -- Issue #21159: Improve message in configparser.InterpolationMissingOptionError. - Patch from Łukasz Langa. - - Issue #24874: Improve speed of itertools.cycle() and make its pickle more compact. @@ -49,45 +32,12 @@ Library - Issue #20059: urllib.parse raises ValueError on all invalid ports. Patch by Martin Panter. -- Issue #24824: Signatures of codecs.encode() and codecs.decode() now are - compatible with pydoc. - -- Issue #4395: Better testing and documentation of binary operators. - Patch by Martin Panter. - -- Issue #23973: Update typing.py from GitHub repo. - -- Issue #23004: mock_open() now reads binary data correctly when the type of - read_data is bytes. Initial patch by Aaron Hill. - -- Issue #23888: Handle fractional time in cookie expiry. Patch by ssh. - -- Issue #23652: Make it possible to compile the select module against the - libc headers from the Linux Standard Base, which do not include some - EPOLL macros. Patch by Matt Frank. - -- Issue #22932: Fix timezones in email.utils.formatdate. - Patch from Dmitry Shachnev. - -- Issue #23779: imaplib raises TypeError if authenticator tries to abort. - Patch from Craig Holmquist. - - Issue #24360: Improve __repr__ of argparse.Namespace() for invalid identifiers. Patch by Matthias Bussonnier. -- Issue #23319: Fix ctypes.BigEndianStructure, swap correctly bytes. Patch - written by Matthieu Gautier. - -- Issue #19450: Update Windows and OS X installer builds to use SQLite 3.8.11. - -- Issue #23254: Document how to close the TCPServer listening socket. - Patch from Martin Panter. - - Issue #23426: run_setup was broken in distutils. Patch from Alexander Belopolsky. -- Issue #17527: Add PATCH to wsgiref.validator. Patch from Luca Sbardella. - - Issue #13938: 2to3 converts StringTypes to a tuple. Patch from Mark Hammond. - Issue #2091: open() accepted a 'U' mode string containing '+', but 'U' can @@ -108,15 +58,142 @@ Library - Issue #13248: Remove deprecated inspect.getargspec and inspect.getmoduleinfo functions. +Documentation +------------- + +Tests +----- + + +What's New in Python 3.5.1 +========================== + +Release date: TBA + +Core and Builtins +----------------- + +Library +------- + +- Issue #24764: cgi.FieldStorage.read_multi() now ignores the Content-Length + header in part headers. Patch written by Peter Landry and reviewed by Pierre + Quentel. + +- Issue #24774: Fix docstring in http.server.test. Patch from Chiu-Hsiang Hsu. + +- Issue #21159: Improve message in configparser.InterpolationMissingOptionError. + Patch from Łukasz Langa. + +- Issue #20362: Honour TestCase.longMessage correctly in assertRegex. + Patch from Ilia Kurenkov. + +- Issue #23572: Fixed functools.singledispatch on classes with falsy + metaclasses. Patch by Ethan Furman. + +Documentation +------------- + +- Issue #23725: Overhaul tempfile docs. Note deprecated status of mktemp. + Patch from Zbigniew Jędrzejewski-Szmek. + +- Issue #24808: Update the types of some PyTypeObject fields. Patch by + Joseph Weston. + +- Issue #22812: Fix unittest discovery examples. + Patch from Pam McA'Nulty. + + +What's New in Python 3.5.0 release candidate 2? +=============================================== + +Release date: 2015-08-25 + +Core and Builtins +----------------- + +- Issue #24769: Interpreter now starts properly when dynamic loading + is disabled. Patch by Petr Viktorin. + +- Issue #21167: NAN operations are now handled correctly when python is + compiled with ICC even if -fp-model strict is not specified. + +- Issue #24492: A "package" lacking a __name__ attribute when trying to perform + a ``from .. import ...`` statement will trigger an ImportError instead of an + AttributeError. + +Library +------- + +- Issue #24847: Removes vcruntime140.dll dependency from Tcl/Tk. + +- Issue #24839: platform._syscmd_ver raises DeprecationWarning + - Issue #24867: Fix Task.get_stack() for 'async def' coroutines + +What's New in Python 3.5.0 release candidate 1? +=============================================== + +Release date: 2015-08-09 + +Core and Builtins +----------------- + +- Issue #24667: Resize odict in all cases that the underlying dict resizes. + +Library +------- + +- Issue #24824: Signatures of codecs.encode() and codecs.decode() now are + compatible with pydoc. + +- Issue #24634: Importing uuid should not try to load libc on Windows + +- Issue #24798: _msvccompiler.py doesn't properly support manifests + +- Issue #4395: Better testing and documentation of binary operators. + Patch by Martin Panter. + +- Issue #23973: Update typing.py from GitHub repo. + +- Issue #23004: mock_open() now reads binary data correctly when the type of + read_data is bytes. Initial patch by Aaron Hill. + +- Issue #23888: Handle fractional time in cookie expiry. Patch by ssh. + +- Issue #23652: Make it possible to compile the select module against the + libc headers from the Linux Standard Base, which do not include some + EPOLL macros. Patch by Matt Frank. + +- Issue #22932: Fix timezones in email.utils.formatdate. + Patch from Dmitry Shachnev. + +- Issue #23779: imaplib raises TypeError if authenticator tries to abort. + Patch from Craig Holmquist. + +- Issue #23319: Fix ctypes.BigEndianStructure, swap correctly bytes. Patch + written by Matthieu Gautier. + +- Issue #23254: Document how to close the TCPServer listening socket. + Patch from Martin Panter. + +- Issue #19450: Update Windows and OS X installer builds to use SQLite 3.8.11. + +- Issue #17527: Add PATCH to wsgiref.validator. Patch from Luca Sbardella. + +- Issue #23812: Fix asyncio.Queue.get() to avoid loosing items on cancellation. + Patch by Gustavo J. A. M. Carneiro. + +- Issue #24791: Fix grammar regression for call syntax: 'g(*a or b)'. + IDLE ---- - Issue #23672: Allow Idle to edit and run files with astral chars in name. Patch by Mohd Sanad Zaki Rizvi. -- Issue 24745: Idle editor default font. Switch from Courier to +- Issue #24745: Idle editor default font. Switch from Courier to platform-sensitive TkFixedFont. This should not affect current customized font selections. If there is a problem, edit $HOME/.idlerc/config-main.cfg and remove 'fontxxx' entries from [Editor Window]. Patch by Mark Roseman. @@ -129,15 +206,6 @@ IDLE Documentation ------------- -- Issue #24808: Update the types of some PyTypeObject fields. Patch by - Joseph Weston. - -- Issue #22812: Fix unittest discovery examples. - Patch from Pam McA'Nulty. - -- Issue #23725: Overhaul tempfile docs. Note deprecated status of mktemp. - Patch from Zbigniew Jędrzejewski-Szmek. - - Issue #24129: Clarify the reference documentation for name resolution. This includes removing the assumption that readers will be familiar with the name resolution scheme Python used prior to the introduction of lexical @@ -455,14 +523,14 @@ Library - Issue #14373: Added C implementation of functools.lru_cache(). Based on patches by Matt Joiner and Alexey Kachayev. -- Issue 24230: The tempfile module now accepts bytes for prefix, suffix and dir +- Issue #24230: The tempfile module now accepts bytes for prefix, suffix and dir parameters and returns bytes in such situations (matching the os module APIs). - Issue #22189: collections.UserString now supports __getnewargs__(), __rmod__(), casefold(), format_map(), isprintable(), and maketrans(). Patch by Joe Jevnik. -- Issue 24244: Prevents termination when an invalid format string is +- Issue #24244: Prevents termination when an invalid format string is encountered on Windows in strftime. - Issue #23973: PEP 484: Add the typing module. @@ -600,26 +668,26 @@ Library - asyncio: async() function is deprecated in favour of ensure_future(). -- Issue 24178: asyncio.Lock, Condition, Semaphore, and BoundedSemaphore +- Issue #24178: asyncio.Lock, Condition, Semaphore, and BoundedSemaphore support new 'async with' syntax. Contributed by Yury Selivanov. -- Issue 24179: Support 'async for' for asyncio.StreamReader. +- Issue #24179: Support 'async for' for asyncio.StreamReader. Contributed by Yury Selivanov. -- Issue 24184: Add AsyncIterator and AsyncIterable ABCs to +- Issue #24184: Add AsyncIterator and AsyncIterable ABCs to collections.abc. Contributed by Yury Selivanov. -- Issue 22547: Implement informative __repr__ for inspect.BoundArguments. +- Issue #22547: Implement informative __repr__ for inspect.BoundArguments. Contributed by Yury Selivanov. -- Issue 24190: Implement inspect.BoundArgument.apply_defaults() method. +- Issue #24190: Implement inspect.BoundArgument.apply_defaults() method. Contributed by Yury Selivanov. -- Issue 20691: Add 'follow_wrapped' argument to +- Issue #20691: Add 'follow_wrapped' argument to inspect.Signature.from_callable() and inspect.signature(). Contributed by Yury Selivanov. -- Issue 24248: Deprecate inspect.Signature.from_function() and +- Issue #24248: Deprecate inspect.Signature.from_function() and inspect.Signature.from_builtin(). - Issue #23898: Fix inspect.classify_class_attrs() to support attributes @@ -721,7 +789,7 @@ Library - Issue #4254: Adds _curses.update_lines_cols() Patch by Arnon Yaari -- Issue 19933: Provide default argument for ndigits in round. Patch by +- Issue #19933: Provide default argument for ndigits in round. Patch by Vajrasky Kok. - Issue #23193: Add a numeric_owner parameter to @@ -2537,7 +2605,7 @@ Library - Issue #13936: Remove the ability of datetime.time instances to be considered false in boolean contexts. -- Issue 18931: selectors module now supports /dev/poll on Solaris. +- Issue #18931: selectors module now supports /dev/poll on Solaris. Patch by Giampaolo Rodola'. - Issue #19977: When the ``LC_TYPE`` locale is the POSIX locale (``C`` locale), diff --git a/Python/clinic/import.c.h b/Python/clinic/import.c.h index 53b5b171eef..247766519e1 100644 --- a/Python/clinic/import.c.h +++ b/Python/clinic/import.c.h @@ -318,6 +318,33 @@ exit: #endif /* defined(HAVE_DYNAMIC_LOADING) */ +PyDoc_STRVAR(_imp_exec_builtin__doc__, +"exec_builtin($module, mod, /)\n" +"--\n" +"\n" +"Initialize a built-in module."); + +#define _IMP_EXEC_BUILTIN_METHODDEF \ + {"exec_builtin", (PyCFunction)_imp_exec_builtin, METH_O, _imp_exec_builtin__doc__}, + +static int +_imp_exec_builtin_impl(PyModuleDef *module, PyObject *mod); + +static PyObject * +_imp_exec_builtin(PyModuleDef *module, PyObject *mod) +{ + PyObject *return_value = NULL; + int _return_value; + + _return_value = _imp_exec_builtin_impl(module, mod); + if ((_return_value == -1) && PyErr_Occurred()) + goto exit; + return_value = PyLong_FromLong((long)_return_value); + +exit: + return return_value; +} + #ifndef _IMP_CREATE_DYNAMIC_METHODDEF #define _IMP_CREATE_DYNAMIC_METHODDEF #endif /* !defined(_IMP_CREATE_DYNAMIC_METHODDEF) */ @@ -325,4 +352,4 @@ exit: #ifndef _IMP_EXEC_DYNAMIC_METHODDEF #define _IMP_EXEC_DYNAMIC_METHODDEF #endif /* !defined(_IMP_EXEC_DYNAMIC_METHODDEF) */ -/*[clinic end generated code: output=0f1059766dd58f88 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=32324a5e46cdfc4b input=a9049054013a1b77]*/ diff --git a/Python/import.c b/Python/import.c index 44aae809907..edf030d87ae 100644 --- a/Python/import.c +++ b/Python/import.c @@ -1943,6 +1943,34 @@ _imp_is_frozen_impl(PyModuleDef *module, PyObject *name) return PyBool_FromLong((long) (p == NULL ? 0 : p->size)); } +/* Common implementation for _imp.exec_dynamic and _imp.exec_builtin */ +static int +exec_builtin_or_dynamic(PyObject *mod) { + PyModuleDef *def; + void *state; + + if (!PyModule_Check(mod)) { + return 0; + } + + def = PyModule_GetDef(mod); + if (def == NULL) { + if (PyErr_Occurred()) { + return -1; + } + return 0; + } + state = PyModule_GetState(mod); + if (PyErr_Occurred()) { + return -1; + } + if (state) { + /* Already initialized; skip reload */ + return 0; + } + return PyModule_ExecDef(mod, def); +} + #ifdef HAVE_DYNAMIC_LOADING /*[clinic input] @@ -2014,34 +2042,28 @@ static int _imp_exec_dynamic_impl(PyModuleDef *module, PyObject *mod) /*[clinic end generated code: output=4b84f1301b22d4bd input=9fdbfcb250280d3a]*/ { - PyModuleDef *def; - void *state; - - if (!PyModule_Check(mod)) { - return 0; - } - - def = PyModule_GetDef(mod); - if (def == NULL) { - if (PyErr_Occurred()) { - return -1; - } - return 0; - } - state = PyModule_GetState(mod); - if (PyErr_Occurred()) { - return -1; - } - if (state) { - /* Already initialized; skip reload */ - return 0; - } - return PyModule_ExecDef(mod, def); + return exec_builtin_or_dynamic(mod); } #endif /* HAVE_DYNAMIC_LOADING */ +/*[clinic input] +_imp.exec_builtin -> int + + mod: object + / + +Initialize a built-in module. +[clinic start generated code]*/ + +static int +_imp_exec_builtin_impl(PyModuleDef *module, PyObject *mod) +/*[clinic end generated code: output=215e99876a27e284 input=7beed5a2f12a60ca]*/ +{ + return exec_builtin_or_dynamic(mod); +} + /*[clinic input] dump buffer [clinic start generated code]*/ @@ -2064,6 +2086,7 @@ static PyMethodDef imp_methods[] = { _IMP_IS_FROZEN_METHODDEF _IMP_CREATE_DYNAMIC_METHODDEF _IMP_EXEC_DYNAMIC_METHODDEF + _IMP_EXEC_BUILTIN_METHODDEF _IMP__FIX_CO_FILENAME_METHODDEF {NULL, NULL} /* sentinel */ }; diff --git a/Python/importlib.h b/Python/importlib.h index d5d34066927..a4daf621e24 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -1304,7 +1304,7 @@ const unsigned char _Py_M__importlib[] = { 0,1,100,1,0,83,41,2,122,22,69,120,101,99,32,97, 32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,101, 78,41,3,114,65,0,0,0,114,57,0,0,0,90,12,101, - 120,101,99,95,100,121,110,97,109,105,99,41,2,114,19,0, + 120,101,99,95,98,117,105,108,116,105,110,41,2,114,19,0, 0,0,114,89,0,0,0,114,10,0,0,0,114,10,0,0, 0,114,11,0,0,0,114,139,0,0,0,233,2,0,0,115, 2,0,0,0,0,3,122,27,66,117,105,108,116,105,110,73, diff --git a/README b/README index 04c282ebe7e..f232755601a 100644 --- a/README +++ b/README @@ -166,7 +166,7 @@ http://www.python.org/dev/peps/. Release Schedule ---------------- -See PEP 478 for release details: http://www.python.org/dev/peps/pep-0478/ +See PEP 494 for release details: http://www.python.org/dev/peps/pep-0494/ Copyright and License Information