From: Yury Selivanov Date: Thu, 15 Sep 2016 18:14:48 +0000 (-0400) Subject: Merge 3.5 (issue #27906) X-Git-Tag: v3.6.0b2~202 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d070154fb5f35c33fd03ce941ec19ca15de32263;p=python Merge 3.5 (issue #27906) --- d070154fb5f35c33fd03ce941ec19ca15de32263 diff --cc Misc/NEWS index a7ba7d836c,0ebf540844..d1f20f7ade --- a/Misc/NEWS +++ b/Misc/NEWS @@@ -400,537 -159,178 +400,540 @@@ Librar - Issue #2466: posixpath.ismount now correctly recognizes mount points which the user does not have permission to access. -- Issue #27773: Correct some memory management errors server_hostname in - _ssl.wrap_socket(). +- Issue #9998: On Linux, ctypes.util.find_library now looks in LD_LIBRARY_PATH + for shared libraries. -- Issue #26750: unittest.mock.create_autospec() now works properly for - subclasses of property() and other data descriptors. +- Issue #27573: exit message for code.interact is now configurable. -- In the curses module, raise an error if window.getstr() or window.instr() is - passed a negative value. +- Issue #27930: Improved behaviour of logging.handlers.QueueListener. + Thanks to Paulo Andrade and Petr Viktorin for the analysis and patch. -- Issue #27783: Fix possible usage of uninitialized memory in - operator.methodcaller. +- Issue #6766: Distributed reference counting added to multiprocessing + to support nesting of shared values / proxy objects. -- Issue #27774: Fix possible Py_DECREF on unowned object in _sre. +- Issue #21201: Improves readability of multiprocessing error message. Thanks + to Wojciech Walczak for patch. -- Issue #27760: Fix possible integer overflow in binascii.b2a_qp. +- asyncio: Add set_protocol / get_protocol to Transports. -- Issue #27758: Fix possible integer overflow in the _csv module for large - record lengths. +- Issue #27456: asyncio: Set TCP_NODELAY by default. -- Issue #27568: Prevent HTTPoxy attack (CVE-2016-1000110). Ignore the - HTTP_PROXY variable when REQUEST_METHOD environment is set, which indicates - that the script is in CGI mode. ++- Issue #27906: Fix socket accept exhaustion during high TCP traffic. ++ Patch by Kevin Conway. + -- Issue #27656: Do not assume sched.h defines any SCHED_* constants. +IDLE +---- -- Issue #27130: In the "zlib" module, fix handling of large buffers - (typically 4 GiB) when compressing and decompressing. Previously, inputs - were limited to 4 GiB, and compression and decompression operations did not - properly handle results of 4 GiB. +- Issue #15308: Add 'interrupt execution' (^C) to Shell menu. + Patch by Roger Serwy, updated by Bayard Randel. -- Issue #27533: Release GIL in nt._isdir +- Issue #27922: Stop IDLE tests from 'flashing' gui widgets on the screen. -- Issue #17711: Fixed unpickling by the persistent ID with protocol 0. - Original patch by Alexandre Vassalotti. +- Issue #27891: Consistently group and sort imports within idlelib modules. -- Issue #27522: Avoid an unintentional reference cycle in email.feedparser. +- Issue #17642: add larger font sizes for classroom projection. -- Issue #26844: Fix error message for imp.find_module() to refer to 'path' - instead of 'name'. Patch by Lev Maximov. +- Add version to title of IDLE help window. -- Issue #23804: Fix SSL zero-length recv() calls to not block and not raise - an error about unclean EOF. +- Issue #25564: In section on IDLE -- console differences, mention that + using exec means that __builtins__ is defined for each statement. -- Issue #27466: Change time format returned by http.cookie.time2netscape, - confirming the netscape cookie format and making it consistent with - documentation. +- Issue #27821: Fix 3.6.0a3 regression that prevented custom key sets + from being selected when no custom theme was defined. -- Issue #26664: Fix activate.fish by removing mis-use of ``$``. +C API +----- -- Issue #22115: Fixed tracing Tkinter variables: trace_vdelete() with wrong - mode no longer break tracing, trace_vinfo() now always returns a list of - pairs of strings, tracing in the "u" mode now works. +- Issue #26900: Excluded underscored names and other private API from limited API. -- Fix a scoping issue in importlib.util.LazyLoader which triggered an - UnboundLocalError when lazy-loading a module that was already put into - sys.modules. +- Issue #26027: Add support for path-like objects in PyUnicode_FSConverter() & + PyUnicode_FSDecoder(). -- Issue #27079: Fixed curses.ascii functions isblank(), iscntrl() and ispunct(). +Tests +----- -- Issue #26754: Some functions (compile() etc) accepted a filename argument - encoded as an iterable of integers. Now only strings and byte-like objects - are accepted. +- Issue #27427: Additional tests for the math module. Patch by Francisco Couzo. -- Issue #27048: Prevents distutils failing on Windows when environment - variables contain non-ASCII characters +- Issue #27953: Skip math and cmath tests that fail on OS X 10.4 due to a + poor libm implementation of tan. -- Issue #27330: Fixed possible leaks in the ctypes module. +- Issue #26040: Improve test_math and test_cmath coverage and rigour. Patch by + Jeff Allen. -- Issue #27238: Got rid of bare excepts in the turtle module. Original patch - by Jelle Zijlstra. +- Issue #27787: Call gc.collect() before checking each test for "dangling + threads", since the dangling threads are weak references. -- Issue #27122: When an exception is raised within the context being managed - by a contextlib.ExitStack() and one of the exit stack generators - catches and raises it in a chain, do not re-raise the original exception - when exiting, let the new chained one through. This avoids the PEP 479 - bug described in issue25782. +Build +----- -- [Security] Issue #27278: Fix os.urandom() implementation using getrandom() on - Linux. Truncate size to INT_MAX and loop until we collected enough random - bytes, instead of casting a directly Py_ssize_t to int. +- Issue #27566: Fix clean target in freeze makefile (patch by Lisa Roach) -- Issue #26386: Fixed ttk.TreeView selection operations with item id's - containing spaces. +- Issue #27705: Update message in validate_ucrtbase.py -- [Security] Issue #22636: Avoid shell injection problems with - ctypes.util.find_library(). +- Issue #27976: Deprecate building _ctypes with the bundled copy of libffi on + non-OSX UNIX platforms. -- Issue #16182: Fix various functions in the "readline" module to use the - locale encoding, and fix get_begidx() and get_endidx() to return code point - indexes. +- Issue #27983: Cause lack of llvm-profdata tool when using clang as + required for PGO linking to be a configure time error rather than + make time when --with-optimizations is enabled. Also improve our + ability to find the llvm-profdata tool on MacOS and some Linuxes. -- Issue #26930: Update Windows builds to use OpenSSL 1.0.2h. +- Issue #21590: Support for DTrace and SystemTap probes. -- Issue #27392: Add loop.connect_accepted_socket(). - Patch by Jim Fulton. +- Issue #26307: The profile-opt build now applys PGO to the built-in modules. -- Issue #27930: Improved behaviour of logging.handlers.QueueListener. - Thanks to Paulo Andrade and Petr Viktorin for the analysis and patch. +- Issue #26539: Add the --with-optimizations flag to turn on LTO and PGO build + support when available. -- Issue #21201: Improves readability of multiprocessing error message. Thanks - to Wojciech Walczak for patch. +- Issue #27917: Set platform triplets for Android builds. -- Issue #27456: asyncio: Set TCP_NODELAY by default. +- Issue #25825: Update references to the $(LIBPL) installation path on AIX. + This path was changed in 3.2a4. -- Issue #27906: Fix socket accept exhaustion during high TCP traffic. - Patch by Kevin Conway. +- Update OS X installer to use SQLite 3.14.1 and XZ 5.2.2. -IDLE ----- +- Issue #21122: Fix LTO builds on OS X. -- Issue #27922: Stop IDLE tests from 'flashing' gui widgets on the screen. +- Issue #17128: Build OS X installer with a private copy of OpenSSL. + Also provide a sample Install Certificates command script to install a + set of root certificates from the third-party certifi module. -- Add version to title of IDLE help window. +Tools/Demos +----------- -- Issue #25564: In section on IDLE -- console differences, mention that - using exec means that __builtins__ is defined for each statement. +- Issue #27952: Get Tools/scripts/fixcid.py working with Python 3 and the + current "re" module, avoid invalid Python backslash escapes, and fix a bug + parsing escaped C quote signs. -- Issue #27714: text_textview and test_autocomplete now pass when re-run - in the same process. This occurs when test_idle fails when run with the - -w option but without -jn. Fix warning from test_config. +Windows +------- -- Issue #25507: IDLE no longer runs buggy code because of its tkinter imports. - Users must include the same imports required to run directly in Python. +- Issue #28065: Update xz dependency to 5.2.2 and build it from source. -- Issue #27452: add line counter and crc to IDLE configHandler test dump. +- Issue #25144: Ensures TargetDir is set before continuing with custom + install. -- Issue #27365: Allow non-ascii chars in IDLE NEWS.txt, for contributor names. +- Issue #1602: Windows console doesn't input or print Unicode (PEP 528) -- Issue #27245: IDLE: Cleanly delete custom themes and key bindings. - Previously, when IDLE was started from a console or by import, a cascade - of warnings was emitted. Patch by Serhiy Storchaka. +- Issue #27781: Change file system encoding on Windows to UTF-8 (PEP 529) -C API ------ +- Issue #27731: Opt-out of MAX_PATH on Windows 10 -- Issue #26754: PyUnicode_FSDecoder() accepted a filename argument encoded as - an iterable of integers. Now only strings and bytes-like objects are accepted. +- Issue #6135: Adds encoding and errors parameters to subprocess. -Tests ------ +- Issue #27959: Adds oem encoding, alias ansi to mbcs, move aliasmbcs to + codec lookup. -- Issue #27787: Call gc.collect() before checking each test for "dangling - threads", since the dangling threads are weak references. +- Issue #27982: The functions of the winsound module now accept keyword + arguments. -- Issue #27369: In test_pyexpat, avoid testing an error message detail that - changed in Expat 2.2.0. +- Issue #20366: Build full text search support into SQLite on Windows. -Tools/Demos ------------ +- Issue #27756: Adds new icons for Python files and processes on Windows. + Designs by Cherry Wang. -- Issue #27952: Get Tools/scripts/fixcid.py working with Python 3 and the - current "re" module, avoid invalid Python backslash escapes, and fix a bug - parsing escaped C quote signs. +- Issue #27883: Update sqlite to 3.14.1.0 on Windows. -- Issue #27332: Fixed the type of the first argument of module-level functions - generated by Argument Clinic. Patch by Petr Viktorin. -- Issue #27418: Fixed Tools/importbench/importbench.py. +What's New in Python 3.6.0 alpha 4 +================================== -Windows -------- +*Release date: 2016-08-15* -- Issue #25144: Ensures TargetDir is set before continuing with custom - install. +Core and Builtins +----------------- -- Issue #27469: Adds a shell extension to the launcher so that drag and drop - works correctly. +- Issue #27704: Optimized creating bytes and bytearray from byte-like objects + and iterables. Speed up to 3 times for short objects. Original patch by + Naoki Inada. -- Issue #27309: Enabled proper Windows styles in python[w].exe manifest. +- Issue #26823: Large sections of repeated lines in tracebacks are now + abbreviated as "[Previous line repeated {count} more times]" by the builtin + traceback rendering. Patch by Emanuel Barry. -Build ------ +- Issue #27574: Decreased an overhead of parsing keyword arguments in functions + implemented with using Argument Clinic. + +- Issue #22557: Now importing already imported modules is up to 2.5 times + faster. + +- Issue #17596: Include to help with Min GW building. + +- Issue #17599: On Windows, rename the privately defined REPARSE_DATA_BUFFER + structure to avoid conflicting with the definition from Min GW. + +- Issue #27507: Add integer overflow check in bytearray.extend(). Patch by + Xiang Zhang. + +- Issue #27581: Don't rely on wrapping for overflow check in + PySequence_Tuple(). Patch by Xiang Zhang. + +- Issue #1621: Avoid signed integer overflow in list and tuple operations. + Patch by Xiang Zhang. + +- Issue #27419: Standard __import__() no longer look up "__import__" in globals + or builtins for importing submodules or "from import". Fixed a crash if + raise a warning about unabling to resolve package from __spec__ or + __package__. + +- Issue #27083: Respect the PYTHONCASEOK environment variable under Windows. + +- Issue #27514: Make having too many statically nested blocks a SyntaxError + instead of SystemError. + +- Issue #27366: Implemented PEP 487 (Simpler customization of class creation). + Upon subclassing, the __init_subclass__ classmethod is called on the base + class. Descriptors are initialized with __set_name__ after class creation. + +Library +------- + +- Issue #26027, #27524: Add PEP 519/__fspath__() support to the os and os.path + modules. Includes code from Jelle Zijlstra. + +- Issue #27598: Add Collections to collections.abc. + Patch by Ivan Levkivskyi, docs by Neil Girdhar. + +- Issue #25958: Support "anti-registration" of special methods from + various ABCs, like __hash__, __iter__ or __len__. All these (and + several more) can be set to None in an implementation class and the + behavior will be as if the method is not defined at all. + (Previously, this mechanism existed only for __hash__, to make + mutable classes unhashable.) Code contributed by Andrew Barnert and + Ivan Levkivskyi. + +- Issue #16764: Support keyword arguments to zlib.decompress(). Patch by + Xiang Zhang. + +- Issue #27736: Prevent segfault after interpreter re-initialization due + to ref count problem introduced in code for Issue #27038 in 3.6.0a3. + Patch by Xiang Zhang. + +- Issue #25628: The *verbose* and *rename* parameters for + collections.namedtuple are now keyword-only. + +- Issue #12345: Add mathematical constant tau to math and cmath. See also + PEP 628. + +- Issue #26823: traceback.StackSummary.format now abbreviates large sections of + repeated lines as "[Previous line repeated {count} more times]" (this change + then further affects other traceback display operations in the module). Patch + by Emanuel Barry. + +- Issue #27664: Add to concurrent.futures.thread.ThreadPoolExecutor() + the ability to specify a thread name prefix. + +- Issue #27181: Add geometric_mean and harmonic_mean to statistics module. + +- Issue #27573: code.interact now prints an message when exiting. + +- Issue #6422: Add autorange method to timeit.Timer objects. + +- Issue #27773: Correct some memory management errors server_hostname in + _ssl.wrap_socket(). + +- Issue #26750: unittest.mock.create_autospec() now works properly for + subclasses of property() and other data descriptors. Removes the never + publicly used, never documented unittest.mock.DescriptorTypes tuple. + +- Issue #26754: Undocumented support of general bytes-like objects + as path in compile() and similar functions is now deprecated. + +- Issue #26800: Undocumented support of general bytes-like objects + as paths in os functions is now deprecated. + +- Issue #26981: Add _order_ compatibility shim to enum.Enum for + Python 2/3 code bases. + +- Issue #27661: Added tzinfo keyword argument to datetime.combine. + +- In the curses module, raise an error if window.getstr() or window.instr() is + passed a negative value. + +- Issue #27783: Fix possible usage of uninitialized memory in + operator.methodcaller. + +- Issue #27774: Fix possible Py_DECREF on unowned object in _sre. + +- Issue #27760: Fix possible integer overflow in binascii.b2a_qp. + +- Issue #27758: Fix possible integer overflow in the _csv module for large + record lengths. + +- Issue #27568: Prevent HTTPoxy attack (CVE-2016-1000110). Ignore the + HTTP_PROXY variable when REQUEST_METHOD environment is set, which indicates + that the script is in CGI mode. + +- Issue #7063: Remove dead code from the "array" module's slice handling. + Patch by Chuck. + +- Issue #27656: Do not assume sched.h defines any SCHED_* constants. + +- Issue #27130: In the "zlib" module, fix handling of large buffers + (typically 4 GiB) when compressing and decompressing. Previously, inputs + were limited to 4 GiB, and compression and decompression operations did not + properly handle results of 4 GiB. + +- Issue #24773: Implemented PEP 495 (Local Time Disambiguation). + +- Expose the EPOLLEXCLUSIVE constant (when it is defined) in the select module. + +- Issue #27567: Expose the EPOLLRDHUP and POLLRDHUP constants in the select + module. + +- Issue #1621: Avoid signed int negation overflow in the "audioop" module. + +- Issue #27533: Release GIL in nt._isdir + +- Issue #17711: Fixed unpickling by the persistent ID with protocol 0. + Original patch by Alexandre Vassalotti. + +- Issue #27522: Avoid an unintentional reference cycle in email.feedparser. + +- Issue #27512: Fix a segfault when os.fspath() called an __fspath__() method + that raised an exception. Patch by Xiang Zhang. + +IDLE +---- + +- Issue #27714: text_textview and test_autocomplete now pass when re-run + in the same process. This occurs when test_idle fails when run with the + -w option but without -jn. Fix warning from test_config. + +- Issue #27621: Put query response validation error messages in the query + box itself instead of in a separate massagebox. Redo tests to match. + Add Mac OSX refinements. Original patch by Mark Roseman. + +- Issue #27620: Escape key now closes Query box as cancelled. + +- Issue #27609: IDLE: tab after initial whitespace should tab, not + autocomplete. This fixes problem with writing docstrings at least + twice indented. + +- Issue #27609: Explicitly return None when there are also non-None + returns. In a few cases, reverse a condition and eliminate a return. + +- Issue #25507: IDLE no longer runs buggy code because of its tkinter imports. + Users must include the same imports required to run directly in Python. + +- Issue #27173: Add 'IDLE Modern Unix' to the built-in key sets. + Make the default key set depend on the platform. + Add tests for the changes to the config module. + +- Issue #27452: add line counter and crc to IDLE configHandler test dump. + +Tests +----- + +- Issue #25805: Skip a test in test_pkgutil as needed that doesn't work when + ``__name__ == __main__``. Patch by SilentGhost. + +- Issue #27472: Add test.support.unix_shell as the path to the default shell. + +- Issue #27369: In test_pyexpat, avoid testing an error message detail that + changed in Expat 2.2.0. + +- Issue #27594: Prevent assertion error when running test_ast with coverage + enabled: ensure code object has a valid first line number. + Patch suggested by Ivan Levkivskyi. + +Windows +------- + +- Issue #27647: Update bundled Tcl/Tk to 8.6.6. + +- Issue #27610: Adds PEP 514 metadata to Windows installer + +- Issue #27469: Adds a shell extension to the launcher so that drag and drop + works correctly. + +- Issue #27309: Enables proper Windows styles in python[w].exe manifest. + +Build +----- + +- Issue #27713: Suppress spurious build warnings when updating importlib's + bootstrap files. Patch by Xiang Zhang + +- Issue #25825: Correct the references to Modules/python.exp, which is + required on AIX. The references were accidentally changed in 3.5.0a1. + +- Issue #27453: CPP invocation in configure must use CPPFLAGS. Patch by + Chi Hsuan Yen. + +- Issue #27641: The configure script now inserts comments into the makefile + to prevent the pgen and _freeze_importlib executables from being cross- + compiled. + +- Issue #26662: Set PYTHON_FOR_GEN in configure as the Python program to be + used for file generation during the build. + +- Issue #10910: Avoid C++ compilation errors on FreeBSD and OS X. + Also update FreedBSD version checks for the original ctype UTF-8 workaround. + +What's New in Python 3.6.0 alpha 3 +================================== + +*Release date: 2016-07-11* + +Core and Builtins +----------------- + +- Issue #27473: Fixed possible integer overflow in bytes and bytearray + concatenations. Patch by Xiang Zhang. + +- Issue #23034: The output of a special Python build with defined COUNT_ALLOCS, + SHOW_ALLOC_COUNT or SHOW_TRACK_COUNT macros is now off by default. It can + be re-enabled using the "-X showalloccount" option. It now outputs to stderr + instead of stdout. + +- Issue #27443: __length_hint__() of bytearray iterators no longer return a + negative integer for a resized bytearray. + +- Issue #27007: The fromhex() class methods of bytes and bytearray subclasses + now return an instance of corresponding subclass. + +Library +------- + +- Issue #26844: Fix error message for imp.find_module() to refer to 'path' + instead of 'name'. Patch by Lev Maximov. + +- Issue #23804: Fix SSL zero-length recv() calls to not block and not raise + an error about unclean EOF. + +- Issue #27466: Change time format returned by http.cookie.time2netscape, + confirming the netscape cookie format and making it consistent with + documentation. + +- Issue #21708: Deprecated dbm.dumb behavior that differs from common dbm + behavior: creating a database in 'r' and 'w' modes and modifying a database + in 'r' mode. + +- Issue #26721: Change the socketserver.StreamRequestHandler.wfile attribute + to implement BufferedIOBase. In particular, the write() method no longer + does partial writes. + +- Issue #22115: Added methods trace_add, trace_remove and trace_info in the + tkinter.Variable class. They replace old methods trace_variable, trace, + trace_vdelete and trace_vinfo that use obsolete Tcl commands and might + not work in future versions of Tcl. Fixed old tracing methods: + trace_vdelete() with wrong mode no longer break tracing, trace_vinfo() now + always returns a list of pairs of strings, tracing in the "u" mode now works. + +- 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. + +- Issue #27186: Update os.fspath()/PyOS_FSPath() to check the return value of + __fspath__() to be either str or bytes. + +- Issue #18726: All optional parameters of the dump(), dumps(), + load() and loads() functions and JSONEncoder and JSONDecoder class + constructors in the json module are now keyword-only. + +- Issue #27319: Methods selection_set(), selection_add(), selection_remove() + and selection_toggle() of ttk.TreeView now allow passing multiple items as + multiple arguments instead of passing them as a tuple. Deprecated + undocumented ability of calling the selection() method with arguments. + +- Issue #27079: Fixed curses.ascii functions isblank(), iscntrl() and ispunct(). + +- Issue #27294: Numerical state in the repr for Tkinter event objects is now + represented as a combination of known flags. + +- Issue #27177: Match objects in the re module now support index-like objects + as group indices. Based on patches by Jeroen Demeyer and Xiang Zhang. + +- Issue #26754: Some functions (compile() etc) accepted a filename argument + encoded as an iterable of integers. Now only strings and byte-like objects + are accepted. + +- Issue #26536: socket.ioctl now supports SIO_LOOPBACK_FAST_PATH. Patch by + Daniel Stokes. + +- Issue #27048: Prevents distutils failing on Windows when environment + variables contain non-ASCII characters + +- Issue #27330: Fixed possible leaks in the ctypes module. + +- Issue #27238: Got rid of bare excepts in the turtle module. Original patch + by Jelle Zijlstra. + +- Issue #27122: When an exception is raised within the context being managed + by a contextlib.ExitStack() and one of the exit stack generators + catches and raises it in a chain, do not re-raise the original exception + when exiting, let the new chained one through. This avoids the PEP 479 + bug described in issue25782. + +- [Security] Issue #27278: Fix os.urandom() implementation using getrandom() on + Linux. Truncate size to INT_MAX and loop until we collected enough random + bytes, instead of casting a directly Py_ssize_t to int. + +- Issue #16864: sqlite3.Cursor.lastrowid now supports REPLACE statement. + Initial patch by Alex LordThorsen. + +- Issue #26386: Fixed ttk.TreeView selection operations with item id's + containing spaces. + +- Issue #8637: Honor a pager set by the env var MANPAGER (in preference to + one set by the env var PAGER). + +- [Security] Issue #22636: Avoid shell injection problems with + ctypes.util.find_library(). + +- Issue #16182: Fix various functions in the "readline" module to use the + locale encoding, and fix get_begidx() and get_endidx() to return code point + indexes. + +- Issue #27392: Add loop.connect_accepted_socket(). + Patch by Jim Fulton. + +IDLE +---- + +- Issue #27477: IDLE search dialogs now use ttk widgets. + +- Issue #27173: Add 'IDLE Modern Unix' to the built-in key sets. + Make the default key set depend on the platform. + Add tests for the changes to the config module. + +- Issue #27452: make command line "idle-test> python test_help.py" work. + __file__ is relative when python is started in the file's directory. + +- Issue #27452: add line counter and crc to IDLE configHandler test dump. + +- Issue #27380: IDLE: add query.py with base Query dialog and ttk widgets. + Module had subclasses SectionName, ModuleName, and HelpSource, which are + used to get information from users by configdialog and file =>Load Module. + Each subclass has itw own validity checks. Using ModuleName allows users + to edit bad module names instead of starting over. + Add tests and delete the two files combined into the new one. + +- Issue #27372: Test_idle no longer changes the locale. + +- Issue #27365: Allow non-ascii chars in IDLE NEWS.txt, for contributor names. + +- Issue #27245: IDLE: Cleanly delete custom themes and key bindings. + Previously, when IDLE was started from a console or by import, a cascade + of warnings was emitted. Patch by Serhiy Storchaka. + +- Issue #24137: Run IDLE, test_idle, and htest with tkinter default root + disabled. Fix code and tests that fail with this restriction. Fix htests to + not create a second and redundant root and mainloop. + +- Issue #27310: Fix IDLE.app failure to launch on OS X due to vestigial import. + +C API +----- + +- Issue #26754: PyUnicode_FSDecoder() accepted a filename argument encoded as + an iterable of integers. Now only strings and byte-like objects are accepted. + +Build +----- - Issue #28066: Fix the logic that searches build directories for generated include files when building outside the source tree.