Release date: 2016-12-16
Release date: 2016-12-06
Release date: 2016-11-21
Release date: 2016-10-31
Release date: 2016-10-10
Issue #27998: Fixed bytes path support in os.scandir() on Windows. Patch by Eryk Sun.
Issue #28317: The disassembler now decodes FORMAT_VALUE argument.
Issue #26293: Fixed writing ZIP files that starts not from the start of the file. Offsets in ZIP file now are relative to the start of the archive in conforming to the specification.
Issue #28380: unittest.mock Mock autospec functions now properly support assert_called, assert_not_called, and assert_called_once.
Issue #27181 remove statistics.geometric_mean and defer until 3.7.
Issue #28229: lzma module now supports pathlib.
Issue #28321: Fixed writing non-BMP characters with binary format in plistlib.
Issue #28225: bz2 module now supports pathlib. Initial patch by Ethan Furman.
Issue #28227: gzip now supports pathlib. Patch by Ethan Furman.
Issue #27358: Optimized merging var-keyword arguments and improved error message when pass a non-mapping as a var-keyword argument.
Issue #28257: Improved error message when pass a non-iterable as a var-positional argument. Added opcode BUILD_TUPLE_UNPACK_WITH_CALL.
Issue #28322: Fixed possible crashes when unpickle itertools objects from incorrect pickle data. Based on patch by John Leitch.
Issue #28228: imghdr now supports pathlib.
Issue #28226: compileall now supports pathlib.
Issue #28314: Fix function declaration (C flags) for the getiterator() method of xml.etree.ElementTree.Element.
Issue #28148: Stop using localtime() and gmtime() in the time module.
Introduced platform independent _PyTime_localtime API that is similar to POSIX localtime_r, but available on all platforms. Patch by Ed Schouten.
Issue #28253: Fixed calendar functions for extreme months: 0001-01 and 9999-12.
Methods itermonthdays() and itermonthdays2() are reimplemented so that they don’t call itermonthdates() which can cause datetime.date under/overflow.
Issue #28275: Fixed possible use after free in the decompress() methods of the LZMADecompressor and BZ2Decompressor classes. Original patch by John Leitch.
Issue #27897: Fixed possible crash in sqlite3.Connection.create_collation() if pass invalid string-like object as a name. Patch by Xiang Zhang.
Issue #18844: random.choices() now has k as a keyword-only argument to improve the readability of common cases and come into line with the signature used in other languages.
Issue #18893: Fix invalid exception handling in Lib/ctypes/macholib/dyld.py. Patch by Madison May.
Issue #27611: Fixed support of default root window in the tkinter.tix module. Added the master parameter in the DisplayStyle constructor.
Issue #27348: In the traceback module, restore the formatting of exception messages like “Exception: None”. This fixes a regression introduced in 3.5a2.
Issue #25651: Allow falsy values to be used for msg parameter of subTest().
Issue #27778: Fix a memory leak in os.getrandom() when the getrandom() is interrupted by a signal and a signal handler raises a Python exception.
Issue #28200: Fix memory leak on Windows in the os module (fix path_converter() function).
Issue #25400: RobotFileParser now correctly returns default values for crawl_delay and request_rate. Initial patch by Peter Wirtz.
Issue #27932: Prevent memory leak in win32_ver().
Fix UnboundLocalError in socket._sendfile_use_sendfile.
Issue #28075: Check for ERROR_ACCESS_DENIED in Windows implementation of os.stat(). Patch by Eryk Sun.
Issue #22493: Warning message emitted by using inline flags in the middle of regular expression now contains a (truncated) regex pattern. Patch by Tim Graham.
Issue #25270: Prevent codecs.escape_encode() from raising SystemError when an empty bytestring is passed.
Issue #28181: Get antigravity over HTTPS. Patch by Kaartic Sivaraam.
Issue #25895: Enable WebSocket URL schemes in urllib.parse.urljoin. Patch by Gergely Imreh and Markus Holtermann.
Issue #28114: Fix a crash in parse_envlist() when env contains byte strings. Patch by Eryk Sun.
Issue #27599: Fixed buffer overrun in binascii.b2a_qp() and binascii.a2b_qp().
Issue #27906: Fix socket accept exhaustion during high TCP traffic. Patch by Kevin Conway.
Issue #28174: Handle when SO_REUSEPORT isn’t properly supported. Patch by Seth Michael Larson.
Issue #26654: Inspect functools.partial in asyncio.Handle.__repr__. Patch by iceboy.
Issue #26909: Fix slow pipes IO in asyncio. Patch by INADA Naoki.
Issue #28176: Fix callbacks race in asyncio.SelectorLoop.sock_connect.
Issue #27759: Fix selectors incorrectly retain invalid file descriptors. Patch by Mark Williams.
Issue #28368: Refuse monitoring processes if the child watcher has no loop attached. Patch by Vincent Michel.
Issue #28369: Raise RuntimeError when transport’s FD is used with add_reader, add_writer, etc.
Issue #28370: Speedup asyncio.StreamReader.readexactly. Patch by Коренберг Марк.
Issue #28371: Deprecate passing asyncio.Handles to run_in_executor.
Issue #28372: Fix asyncio to support formatting of non-python coroutines.
Issue #28399: Remove UNIX socket from FS before binding. Patch by Коренберг Марк.
Issue #27972: Prohibit Tasks to await on themselves.
Release date: 2016-09-12
Release date: 2016-08-15
Release date: 2016-07-11
Release date: 2016-06-13
Release date: 2016-05-16
Issue #27057: Fix os.set_inheritable() on Android, ioctl() is blocked by SELinux and fails with EACCESS. The function now falls back to fcntl(). Patch written by Michał Bednarski.
Issue #27014: Fix infinite recursion using typing.py. Thanks to Kalle Tuure!
Issue #27031: Removed dummy methods in Tkinter widget classes: tk_menuBar() and tk_bindForTraversal().
Issue #14132: Fix urllib.request redirect handling when the target only has a query string. Original fix by Ján Janech.
Issue #17214: The “urllib.request” module now percent-encodes non-ASCII bytes found in redirect target URLs. Some servers send Location header fields with non-ASCII bytes, but “http.client” requires the request target to be ASCII-encodable, otherwise a UnicodeEncodeError is raised. Based on patch by Christian Heimes.
Issue #27033: The default value of the decode_data parameter for smtpd.SMTPChannel and smtpd.SMTPServer constructors is changed to False.
Issue #27034: Removed deprecated class asynchat.fifo.
Issue #26870: Added readline.set_auto_history(), which can stop entries being automatically added to the history list. Based on patch by Tyler Crompton.
Issue #26039: zipfile.ZipFile.open() can now be used to write data into a ZIP file, as well as for extracting data. Patch by Thomas Kluyver.
Issue #26892: Honor debuglevel flag in urllib.request.HTTPHandler. Patch contributed by Chi Hsuan Yen.
Issue #22274: In the subprocess module, allow stderr to be redirected to stdout even when stdout is not redirected. Patch by Akira Li.
Issue #26807: mock_open ‘files’ no longer error on readline at end of file. Patch from Yolanda Robla.
Issue #25745: Fixed leaking a userptr in curses panel destructor.
Issue #26977: Removed unnecessary, and ignored, call to sum of squares helper in statistics.pvariance.
Issue #26002: Use bisect in statistics.median instead of a linear search. Patch by Upendra Kuma.
Issue #25974: Make use of new Decimal.as_integer_ratio() method in statistics module. Patch by Stefan Krah.
Issue #26996: Add secrets module as described in PEP 506.
Issue #26881: The modulefinder module now supports extended opcode arguments.
Issue #23815: Fixed crashes related to directly created instances of types in _tkinter and curses.panel modules.
Issue #17765: weakref.ref() no longer silently ignores keyword arguments. Patch by Georg Brandl.
Issue #26873: xmlrpc now raises ResponseError on unsupported type tags instead of silently return incorrect result.
Issue #26915: The __contains__ methods in the collections ABCs now check for identity before checking equality. This better matches the behavior of the concrete classes, allows sensible handling of NaNs, and makes it easier to reason about container invariants.
Issue #26711: Fixed the comparison of plistlib.Data with other types.
Issue #24114: Fix an uninitialized variable in ctypes.util.
The bug only occurs on SunOS when the ctypes implementation searches for the crle program. Patch by Xiang Zhang. Tested on SunOS by Kees Bos.
Issue #26864: In urllib.request, change the proxy bypass host checking against no_proxy to be case-insensitive, and to not match unrelated host names that happen to have a bypassed hostname as a suffix. Patch by Xiang Zhang.
Issue #24902: Print server URL on http.server startup. Initial patch by Felix Kaiser.
Issue #25788: fileinput.hook_encoded() now supports an “errors” argument for passing to open. Original patch by Joseph Hackman.
Issue #26634: recursive_repr() now sets __qualname__ of wrapper. Patch by Xiang Zhang.
Issue #26804: urllib.request will prefer lower_case proxy environment variables over UPPER_CASE or Mixed_Case ones. Patch contributed by Hans-Peter Jansen.
Issue #26837: assertSequenceEqual() now correctly outputs non-stringified differing items (like bytes in the -b mode). This affects assertListEqual() and assertTupleEqual().
Issue #26041: Remove “will be removed in Python 3.7” from deprecation messages of platform.dist() and platform.linux_distribution(). Patch by Kumaripaba Miyurusara Athukorala.
Issue #26822: itemgetter, attrgetter and methodcaller objects no longer silently ignore keyword arguments.
Issue #26733: Disassembling a class now disassembles class and static methods. Patch by Xiang Zhang.
Issue #26801: Fix error handling in shutil.get_terminal_size(), catch AttributeError instead of NameError. Patch written by Emanuel Barry.
Issue #24838: tarfile’s ustar and gnu formats now correctly calculate name and link field limits for multibyte character encodings like utf-8.
[Security] Issue #26657: Fix directory traversal vulnerability with http.server on Windows. This fixes a regression that was introduced in 3.3.4rc1 and 3.4.0rc1. Based on patch by Philipp Hagemeister.
Issue #26717: Stop encoding Latin-1-ized WSGI paths with UTF-8. Patch by Anthony Sottile.
Issue #26782: Add STARTUPINFO to subprocess.__all__ on Windows.
Issue #26404: Add context manager to socketserver. Patch by Aviv Palivoda.
Issue #26735: Fix os.urandom() on Solaris 11.3 and newer when reading more than 1,024 bytes: call getrandom() multiple times with a limit of 1024 bytes per call.
Issue #26585: Eliminate http.server._quote_html() and use html.escape(quote=False). Patch by Xiang Zhang.
Issue #26685: Raise OSError if closing a socket fails.
Issue #16329: Add .webm to mimetypes.types_map. Patch by Giampaolo Rodola’.
Issue #13952: Add .csv to mimetypes.types_map. Patch by Geoff Wilson.
Issue #26587: the site module now allows .pth files to specify files to be added to sys.path (e.g. zip files).
Issue #25609: Introduce contextlib.AbstractContextManager and typing.ContextManager.
Issue #26709: Fixed Y2038 problem in loading binary PLists.
Issue #23735: Handle terminal resizing with Readline 6.3+ by installing our own SIGWINCH handler. Patch by Eric Price.
Issue #25951: Change SSLSocket.sendall() to return None, as explicitly documented for plain socket objects. Patch by Aviv Palivoda.
Issue #26586: In http.server, respond with “413 Request header fields too large” if there are too many header fields to parse, rather than killing the connection and raising an unhandled exception. Patch by Xiang Zhang.
Issue #26676: Added missing XMLPullParser to ElementTree.__all__.
Issue #22854: Change BufferedReader.writable() and BufferedWriter.readable() to always return False.
Issue #26492: Exhausted iterator of array.array now conforms with the behavior of iterators of other mutable sequences: it lefts exhausted even if iterated array is extended.
Issue #26641: doctest.DocFileTest and doctest.testfile() now support packages (module splitted into multiple directories) for the package parameter.
Issue #25195: Fix a regression in mock.MagicMock. _Call is a subclass of tuple (changeset 3603bae63c13 only works for classes) so we need to implement __ne__ ourselves. Patch by Andrew Plummer.
Issue #26644: Raise ValueError rather than SystemError when a negative length is passed to SSLSocket.recv() or read().
Issue #23804: Fix SSL recv(0) and read(0) methods to return zero bytes instead of up to 1024.
Issue #26616: Fixed a bug in datetime.astimezone() method.
Issue #26637: The importlib module now emits an ImportError rather than a TypeError if __import__() is tried during the Python shutdown process but sys.path is already cleared (set to None).
Issue #21925: warnings.formatwarning() now catches exceptions when calling linecache.getline() and tracemalloc.get_object_traceback() to be able to log ResourceWarning emitted late during the Python shutdown process.
Issue #23848: On Windows, faulthandler.enable() now also installs an exception handler to dump the traceback of all Python threads on any Windows exception, not only on UNIX signals (SIGSEGV, SIGFPE, SIGABRT).
Issue #26530: Add C functions _PyTraceMalloc_Track() and _PyTraceMalloc_Untrack() to track memory blocks using the tracemalloc module. Add _PyTraceMalloc_GetTraceback() to get the traceback of an object.
Issue #26588: The _tracemalloc now supports tracing memory allocations of multiple address spaces (domains).
Issue #24266: Ctrl+C during Readline history search now cancels the search mode when compiled with Readline 7.
Issue #26590: Implement a safe finalizer for the _socket.socket type. It now releases the GIL to close the socket.
Issue #18787: spwd.getspnam() now raises a PermissionError if the user doesn’t have privileges.
Issue #26560: Avoid potential ValueError in BaseHandler.start_response. Initial patch by Peter Inglesby.
Issue #26567: Add a new function PyErr_ResourceWarning() function to pass the destroyed object. Add a source attribute to warnings.WarningMessage. Add warnings._showwarnmsg() which uses tracemalloc to get the traceback where source object was allocated.
[Security] Issue #26313: ssl.py _load_windows_store_certs fails if windows cert store is empty. Patch by Baji.
Issue #26569: Fix pyclbr.readmodule() and pyclbr.readmodule_ex() to support importing packages.
Issue #26499: Account for remaining Content-Length in HTTPResponse.readline() and read1(). Based on patch by Silent Ghost. Also document that HTTPResponse now supports these methods.
Issue #25320: Handle sockets in directories unittest discovery is scanning. Patch from Victor van den Elzen.
Issue #16181: cookiejar.http2time() now returns None if year is higher than datetime.MAXYEAR.
Issue #26513: Fixes platform module detection of Windows Server
Issue #23718: Fixed parsing time in week 0 before Jan 1. Original patch by Tamás Bence Gedai.
Issue #26323: Add Mock.assert_called() and Mock.assert_called_once() methods to unittest.mock. Patch written by Amit Saha.
Issue #20589: Invoking Path.owner() and Path.group() on Windows now raise NotImplementedError instead of ImportError.
Issue #26177: Fixed the keys() method for Canvas and Scrollbar widgets.
Issue #15068: Got rid of excessive buffering in fileinput. The bufsize parameter is now deprecated and ignored.
Issue #19475: Added an optional argument timespec to the datetime isoformat() method to choose the precision of the time component.
Issue #2202: Fix UnboundLocalError in AbstractDigestAuthHandler.get_algorithm_impls. Initial patch by Mathieu Dupuy.
Issue #26167: Minimized overhead in copy.copy() and copy.deepcopy(). Optimized copying and deepcopying bytearrays, NotImplemented, slices, short lists, tuples, dicts, sets.
Issue #25718: Fixed pickling and copying the accumulate() iterator with total is None.
Issue #26475: Fixed debugging output for regular expressions with the (?x) flag.
Issue #26482: Allowed pickling recursive dequeues.
Issue #26335: Make mmap.write() return the number of bytes written like other write methods. Patch by Jakub Stasiak.
Issue #26457: Fixed the subnets() methods in IP network classes for the case when resulting prefix length is equal to maximal prefix length. Based on patch by Xiang Zhang.
Issue #26385: Remove the file if the internal open() call in NamedTemporaryFile() fails. Patch by Silent Ghost.
Issue #26402: Fix XML-RPC client to retry when the server shuts down a persistent connection. This was a regression related to the new http.client.RemoteDisconnected exception in 3.5.0a4.
Issue #25913: Leading <~ is optional now in base64.a85decode() with adobe=True. Patch by Swati Jaiswal.
Issue #26186: Remove an invalid type check in importlib.util.LazyLoader.
Issue #26367: importlib.__import__() raises ImportError like builtins.__import__() when level is specified but without an accompanying package specified.
Issue #26309: In the “socketserver” module, shut down the request (closing the connected socket) when verify_request() returns false. Patch by Aviv Palivoda.
Issue #23430: Change the socketserver module to only catch exceptions raised from a request handler that are derived from Exception (instead of BaseException). Therefore SystemExit and KeyboardInterrupt no longer trigger the handle_error() method, and will now to stop a single-threaded server.
[Security] Issue #25939: On Windows open the cert store readonly in ssl.enum_certificates.
Issue #25995: os.walk() no longer uses FDs proportional to the tree depth.
Issue #25994: Added the close() method and the support of the context manager protocol for the os.scandir() iterator.
Issue #23992: multiprocessing: make MapResult not fail-fast upon exception.
Issue #26243: Support keyword arguments to zlib.compress(). Patch by Aviv Palivoda.
Issue #26117: The os.scandir() iterator now closes file descriptor not only when the iteration is finished, but when it was failed with error.
Issue #25949: __dict__ for an OrderedDict instance is now created only when needed.
Issue #25911: Restored support of bytes paths in os.walk() on Windows.
Issue #26045: Add UTF-8 suggestion to error message when posting a non-Latin-1 string with http.client.
Issue #26039: Added zipfile.ZipInfo.from_file() and zipinfo.ZipInfo.is_dir(). Patch by Thomas Kluyver.
Issue #12923: Reset FancyURLopener’s redirect counter even if there is an exception. Based on patches by Brian Brazil and Daniel Rocco.
Issue #25945: Fixed a crash when unpickle the functools.partial object with wrong state. Fixed a leak in failed functools.partial constructor. “args” and “keywords” attributes of functools.partial have now always types tuple and dict correspondingly.
Issue #26202: copy.deepcopy() now correctly copies range() objects with non-atomic attributes.
Issue #23076: Path.glob() now raises a ValueError if it’s called with an invalid pattern. Patch by Thomas Nyberg.
Issue #19883: Fixed possible integer overflows in zipimport.
Issue #26227: On Windows, getnameinfo(), gethostbyaddr() and gethostbyname_ex() functions of the socket module now decode the hostname from the ANSI code page rather than UTF-8.
Issue #26099: The site module now writes an error into stderr if sitecustomize module can be imported but executing the module raise an ImportError. Same change for usercustomize.
Issue #26147: xmlrpc now works with strings not encodable with used non-UTF-8 encoding.
Issue #25935: Garbage collector now breaks reference loops with OrderedDict.
Issue #16620: Fixed AttributeError in msilib.Directory.glob().
Issue #26013: Added compatibility with broken protocol 2 pickles created in old Python 3 versions (3.4.3 and lower).
Issue #26129: Deprecated accepting non-integers in grp.getgrgid().
Issue #25850: Use cross-compilation by default for 64-bit Windows.
Issue #25822: Add docstrings to the fields of urllib.parse results. Patch contributed by Swati Jaiswal.
Issue #22642: Convert trace module option parsing mechanism to argparse. Patch contributed by SilentGhost.
Issue #24705: Fix sysconfig._parse_makefile not expanding ${} vars appearing before $() vars.
Issue #26069: Remove the deprecated apis in the trace module.
Issue #22138: Fix mock.patch behavior when patching descriptors. Restore original values after patching. Patch contributed by Sean McCully.
Issue #25672: In the ssl module, enable the SSL_MODE_RELEASE_BUFFERS mode option if it is safe to do so.
Issue #26012: Don’t traverse into symlinks for ** pattern in pathlib.Path.[r]glob().
Issue #24120: Ignore PermissionError when traversing a tree with pathlib.Path.[r]glob(). Patch by Ulrich Petri.
Issue #21815: Accept ] characters in the data portion of imap responses, in order to handle the flags with square brackets accepted and produced by servers such as gmail.
Issue #25447: fileinput now uses sys.stdin as-is if it does not have a buffer attribute (restores backward compatibility).
Issue #25971: Optimized creating Fractions from floats by 2 times and from Decimals by 3 times.
Issue #25802: Document as deprecated the remaining implementations of importlib.abc.Loader.load_module().
Issue #25928: Add Decimal.as_integer_ratio().
Issue #25447: Copying the lru_cache() wrapper object now always works, independently from the type of the wrapped object (by returning the original object unchanged).
Issue #25768: Have the functions in compileall return booleans instead of ints and add proper documentation and tests for the return values.
Issue #24103: Fixed possible use after free in ElementTree.XMLPullParser.
Issue #25860: os.fwalk() no longer skips remaining directories when error occurs. Original patch by Samson Lee.
Issue #25914: Fixed and simplified OrderedDict.__sizeof__.
Issue #25869: Optimized deepcopying ElementTree; it is now 20 times faster.
Issue #25873: Optimized iterating ElementTree. Iterating elements Element.iter() is now 40% faster, iterating text Element.itertext() is now up to 2.5 times faster.
Issue #25902: Fixed various refcount issues in ElementTree iteration.
Issue #22227: The TarFile iterator is reimplemented using generator. This implementation is simpler that using class.
Issue #25638: Optimized ElementTree.iterparse(); it is now 2x faster. Optimized ElementTree parsing; it is now 10% faster.
Issue #25761: Improved detecting errors in broken pickle data.
Issue #25717: Restore the previous behaviour of tolerating most fstat() errors when opening files. This was a regression in 3.5a1, and stopped anonymous temporary files from working in special cases.
Issue #24903: Fix regression in number of arguments compileall accepts when ‘-d’ is specified. The check on the number of arguments has been dropped completely as it never worked correctly anyway.
Issue #25764: In the subprocess module, preserve any exception caused by fork() failure when preexec_fn is used.
Issue #25771: Tweak the exception message for importlib.util.resolve_name() when ‘package’ isn’t specified but necessary.
Issue #6478: _strptime’s regexp cache now is reset after changing timezone with time.tzset().
Issue #14285: When executing a package with the “python -m package” option, and package initialization fails, a proper traceback is now reported. The “runpy” module now lets exceptions from package initialization pass back to the caller, rather than raising ImportError.
Issue #19771: Also in runpy and the “-m” option, omit the irrelevant message ”. . . is a package and cannot be directly executed” if the package could not even be initialized (e.g. due to a bad *.pyc file).
Issue #25177: Fixed problem with the mean of very small and very large numbers. As a side effect, statistics.mean and statistics.variance should be significantly faster.
Issue #25718: Fixed copying object with state with boolean value is false.
Issue #10131: Fixed deep copying of minidom documents. Based on patch by Marian Ganisin.
Issue #7990: dir() on ElementTree.Element now lists properties: “tag”, “text”, “tail” and “attrib”. Original patch by Santoso Wijaya.
Issue #25725: Fixed a reference leak in pickle.loads() when unpickling invalid data including tuple instructions.
Issue #25663: In the Readline completer, avoid listing duplicate global names, and search the global namespace before searching builtins.
Issue #25688: Fixed file leak in ElementTree.iterparse() raising an error.
Issue #23914: Fixed SystemError raised by unpickler on broken pickle data.
Issue #25691: Fixed crash on deleting ElementTree.Element attributes.
Issue #25624: ZipFile now always writes a ZIP_STORED header for directory entries. Patch by Dingyuan Wang.
Issue #25626: Change three zlib functions to accept sizes that fit in Py_ssize_t, but internally cap those sizes to UINT_MAX. This resolves a regression in 3.5 where GzipFile.read() failed to read chunks larger than 2 or 4 GiB. The change affects the zlib.Decompress.decompress() max_length parameter, the zlib.decompress() bufsize parameter, and the zlib.Decompress.flush() length parameter.
Issue #25583: Avoid incorrect errors raised by os.makedirs(exist_ok=True) when the OS gives priority to errors such as EACCES over EEXIST.
Issue #25593: Change semantics of EventLoop.stop() in asyncio.
Issue #6973: When we know a subprocess.Popen process has died, do not allow the send_signal(), terminate(), or kill() methods to do anything as they could potentially signal a different process.
Issue #23883: Added missing APIs to __all__ to match the documented APIs for the following modules: calendar, csv, enum, fileinput, ftplib, logging, optparse, tarfile, threading and wave. Also added a test.support.check__all__() helper. Patches by Jacek Kołodziej, Mauro S. M. Rodrigues and Joel Taddei.
Issue #25590: In the Readline completer, only call getattr() once per attribute. Also complete names of attributes such as properties and slots which are listed by dir() but not yet created on an instance.
Issue #25498: Fix a crash when garbage-collecting ctypes objects created by wrapping a memoryview. This was a regression made in 3.5a1. Based on patch by Eryksun.
Issue #25584: Added “escape” to the __all__ list in the glob module.
Issue #25584: Fixed recursive glob() with patterns starting with ‘**’.
Issue #25446: Fix regression in smtplib’s AUTH LOGIN support.
Issue #18010: Fix the pydoc web server’s module search function to handle exceptions from importing packages.
Issue #25554: Got rid of circular references in regular expression parsing.
Issue #18973: Command-line interface of the calendar module now uses argparse instead of optparse.
Issue #25510: fileinput.FileInput.readline() now returns b’’ instead of ‘’ at the end if the FileInput was opened with binary mode. Patch by Ryosuke Ito.
Issue #25503: Fixed inspect.getdoc() for inherited docstrings of properties. Original patch by John Mark Vandenberg.
Issue #25515: Always use os.urandom as a source of randomness in uuid.uuid4.
Issue #21827: Fixed textwrap.dedent() for the case when largest common whitespace is a substring of smallest leading whitespace. Based on patch by Robert Li.
Issue #25447: The lru_cache() wrapper objects now can be copied and pickled (by returning the original object unchanged).
Issue #25390: typing: Don’t crash on Union[str, Pattern].
Issue #25441: asyncio: Raise error from drain() when socket is closed.
Issue #25410: Cleaned up and fixed minor bugs in C implementation of OrderedDict.
Issue #25411: Improved Unicode support in SMTPHandler through better use of the email package. Thanks to user simon04 for the patch.
Move the imp module from a PendingDeprecationWarning to DeprecationWarning.
Issue #25407: Remove mentions of the formatter module being removed in Python 3.6.
Issue #25406: Fixed a bug in C implementation of OrderedDict.move_to_end() that caused segmentation fault or hang in iterating after moving several items to the start of ordered dict.
Issue #25382: pickletools.dis() now outputs implicit memo index for the MEMOIZE opcode.
Issue #25357: Add an optional newline paramer to binascii.b2a_base64(). base64.b64encode() uses it to avoid a memory copy.
Issue #24164: Objects that need calling __new__ with keyword arguments, can now be pickled using pickle protocols older than protocol version 4.
Issue #25364: zipfile now works in threads disabled builds.
Issue #25328: smtpd’s SMTPChannel now correctly raises a ValueError if both decode_data and enable_SMTPUTF8 are set to true.
Issue #16099: RobotFileParser now supports Crawl-delay and Request-rate extensions. Patch by Nikolay Bogoychev.
Issue #25316: distutils raises OSError instead of DistutilsPlatformError when MSVC is not installed.
Issue #25380: Fixed protocol for the STACK_GLOBAL opcode in pickletools.opcodes.
Issue #23972: Updates asyncio datagram create method allowing reuseport and reuseaddr socket options to be set prior to binding the socket. Mirroring the existing asyncio create_server method the reuseaddr option for datagram sockets defaults to True if the O/S is ‘posix’ (except if the platform is Cygwin). Patch by Chris Laws.
Issue #25304: Add asyncio.run_coroutine_threadsafe(). This lets you submit a coroutine to a loop from another thread, returning a concurrent.futures.Future. By Vincent Michel.
Issue #25232: Fix CGIRequestHandler to split the query from the URL at the first question mark (?) rather than the last. Patch from Xiang Zhang.
Issue #24657: Prevent CGIRequestHandler from collapsing slashes in the query part of the URL as if it were a path. Patch from Xiang Zhang.
Issue #25287: Don’t add crypt.METHOD_CRYPT to crypt.methods if it’s not supported. Check if it is supported, it may not be supported on OpenBSD for example.
Issue #23600: Default implementation of tzinfo.fromutc() was returning wrong results in some cases.
Issue #25203: Failed readline.set_completer_delims() no longer left the module in inconsistent state.
Issue #25011: rlcompleter now omits private and special attribute names unless the prefix starts with underscores.
Issue #25209: rlcompleter now can add a space or a colon after completed keyword.
Issue #22241: timezone.utc name is now plain ‘UTC’, not ‘UTC-00:00’.
Issue #23517: fromtimestamp() and utcfromtimestamp() methods of datetime.datetime now round microseconds to nearest with ties going to nearest even integer (ROUND_HALF_EVEN), as round(float), instead of rounding towards -Infinity (ROUND_FLOOR).
Issue #23552: Timeit now warns when there is substantial (4x) variance between best and worst times. Patch from Serhiy Storchaka.
Issue #24633: site-packages/README -> README.txt.
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 #24874: Improve speed of itertools.cycle() and make its pickle more compact.
Fix crash in itertools.cycle.__setstate__() when the first argument wasn’t a list.
Issue #20059: urllib.parse raises ValueError on all invalid ports. Patch by Martin Panter.
Issue #24360: Improve __repr__ of argparse.Namespace() for invalid identifiers. Patch by Matthias Bussonnier.
Issue #23426: run_setup was broken in distutils. Patch from Alexander Belopolsky.
Issue #13938: 2to3 converts StringTypes to a tuple. Patch from Mark Hammond.
Issue #2091: open() accepted a ‘U’ mode string containing ‘+’, but ‘U’ can only be used with ‘r’. Patch from Jeff Balogh and John O’Connor.
Issue #8585: improved tests for zipimporter2. Patch from Mark Lawrence.
Issue #18622: unittest.mock.mock_open().reset_mock would recurse infinitely. Patch from Nicola Palumbo and Laurent De Buyst.
Issue #24426: Fast searching optimization in regular expressions now works for patterns that starts with capturing groups. Fast searching optimization now can’t be disabled at compile time.
Issue #23661: unittest.mock side_effects can now be exceptions again. This was a regression vs Python 3.4. Patch from Ignacio Rossi
Issue #13248: Remove deprecated inspect.getmoduleinfo function.
Issue #25578: Fix (another) memory leak in SSLSocket.getpeercer().
Issue #25530: Disable the vulnerable SSLv3 protocol by default when creating ssl.SSLContext.
Issue #25569: Fix memory leak in SSLSocket.getpeercert().
Issue #25471: Sockets returned from accept() shouldn’t appear to be nonblocking.
Issue #25319: When threading.Event is reinitialized, the underlying condition should use a regular lock rather than a recursive lock.
Skip getaddrinfo if host is already resolved. Patch by A. Jesse Jiryu Davis.
Issue #26050: Add asyncio.StreamReader.readuntil() method. Patch by Марк Коренберг.
Issue #25924: Avoid unnecessary serialization of getaddrinfo(3) calls on OS X versions 10.5 or higher. Original patch by A. Jesse Jiryu Davis.
Issue #26406: Avoid unnecessary serialization of getaddrinfo(3) calls on current versions of OpenBSD and NetBSD. Patch by A. Jesse Jiryu Davis.
Issue #26848: Fix asyncio/subprocess.communicate() to handle empty input. Patch by Jack O’Connor.
Issue #27040: Add loop.get_exception_handler method
Issue #27041: asyncio: Add loop.create_future method
Release date: 2015-12-06
Release date: 2015-11-22
Release date: 2015-09-13
Release date: 2015-09-09
Release date: 2015-09-07
Release date: 2015-08-25
Release date: 2015-08-09
Release date: 2015-07-26
Release date: 2015-07-05
Release date: 2015-05-31
Release date: 2015-05-24
Release date: 2015-04-19
Release date: 2015-03-28
Release date: 2015-03-09
- Eliminated OverflowError from timedelta * float for some floats;
- Corrected rounding in timedlta true division.
Release date: 2015-02-08
(For information about older versions, consult the HISTORY file.)