Python Changelog

New in version 3.4.2

October 9th, 2014
  • Core and Builtins -Library:
  • Issue #10510: distutils register and upload methods now use HTML standards compliant CRLF line endings.
  • Issue #9850: Fixed macpath.join() for empty first component. Patch by Oleg Oshmyan.
  • Issue #22427: TemporaryDirectory no longer attempts to clean up twice when used in the with statement in generator.
  • Issue #20912: Now directories added to ZIP file have correct Unix and MS-DOS directory attributes.
  • Issue #21866: ZipFile.close() no longer writes ZIP64 central directory records if allowZip64 is false.
  • Issue #22415: Fixed debugging output of the GROUPREF_EXISTS opcode in the re module. Removed trailing spaces in debugging output.
  • Issue #22423: Unhandled exception in thread no longer causes unhandled AttributeError when sys.stderr is None.
  • Issue #21332: Ensure that bufsize=1 in subprocess.Popen() selects line buffering, rather than block buffering. Patch by Akira Li.

New in version 3.4.1 (May 19th, 2014)

  • Core and Builtins:
  • Issue #21418: Fix a crash in the builtin function super() when called without argument and without current frame (ex: embedded Python).
  • Issue #21425: Fix flushing of standard streams in the interactive interpreter.
  • Issue #21435: In rare cases, when running finalizers on objects in cyclic trash a bad pointer dereference could occur due to a subtle flaw in internal iteration logic.
  • Library:
  • Issue #10744: Fix PEP 3118 format strings on ctypes objects with a nontrivial shape.
  • Issue #20998: Fixed re.fullmatch() of repeated single character pattern with ignore case. Original patch by Matthew Barnett.
  • Issue #21075: fileinput.FileInput now reads bytes from standard stream if binary mode is specified. Patch by Sam Kimbrel.
  • Issue #21396: Fix TextIOWrapper(..., write_through=True) to not force a flush() on the underlying binary stream. Patch by akira.
  • Issue #21470: Do a better job seeding the random number generator by using enough bytes to span the full state space of the Mersenne Twister.
  • Issue #21398: Fix an unicode error in the pydoc pager when the documentation contains characters not encodable to the stdout encoding.
  • Tests:
  • Issue #17756: Fix test_code test when run from the installed location.
  • Issue #17752: Fix distutils tests when run from the installed location.
  • IDLE:
  • Issue #18104: Add idlelib/idle_test/htest.py with a few sample tests to begin consolidating and improving human-validated tests of Idle. Change other files as needed to work with htest. Running the module as __main__ runs all tests.

New in version 3.4.0 (March 17th, 2014)

  • PEP 428, a "pathlib" module providing object-oriented filesystem paths
  • PEP 435, a standardized "enum" module
  • PEP 436, a build enhancement that will help generate introspection information for builtins
  • PEP 442, improved semantics for object finalization
  • PEP 443, adding single-dispatch generic functions to the standard library
  • PEP 445, a new C API for implementing custom memory allocators
  • PEP 446, changing file descriptors to not be inherited by default in subprocesses
  • PEP 450, a new "statistics" module
  • PEP 451, standardizing module metadata for Python's module import system
  • PEP 453, a bundled installer for the pip package manager
  • PEP 454, a new "tracemalloc" module for tracing Python memory allocations
  • PEP 456, a new hash algorithm for Python strings and binary data
  • PEP 3154, a new and improved protocol for pickled objects
  • PEP 3156, a new "asyncio" module, a new framework for asynchronous I/O

New in version 3.4.0 RC 3 (March 10th, 2014)

  • Changes:
  • PEP 428, a "pathlib" module providing object-oriented filesystem paths
  • PEP 435, a standardized "enum" module
  • PEP 436, a build enhancement that will help generate introspection information for builtins
  • PEP 442, improved semantics for object finalization
  • PEP 443, adding single-dispatch generic functions to the standard library
  • PEP 445, a new C API for implementing custom memory allocators
  • PEP 446, changing file descriptors to not be inherited by default in subprocesses
  • PEP 450, a new "statistics" module
  • PEP 451, standardizing module metadata for Python's module import system
  • PEP 453, a bundled installer for the pip package manager
  • PEP 454, a new "tracemalloc" module for tracing Python memory allocations
  • PEP 456, a new hash algorithm for Python strings and binary data
  • PEP 3154, a new and improved protocol for pickled objects
  • PEP 3156, a new "asyncio" module, a new framework for asynchronous I/O

New in version 3.3.5 (March 10th, 2014)

  • Core and Builtins:
  • Issue #20731: Properly position in source code files even if they are opened in text mode. Patch by Serhiy Storchaka.
  • Issue #19619: str.encode, bytes.decode and bytearray.decode now use an internal API to throw LookupError for known non-text encodings, rather than attempting the encoding or decoding operation and then throwing a TypeError for an unexpected output type. (The latter mechanism remains in place for third party non-text encodings)
  • Library:
  • Issue #20778: Fix modulefinder to work with bytecode-only modules.
  • Issue #20791: copy.copy() now doesn’t make a copy when the input is a bytes object. Initial patch by Peter Otten.
  • Issue #20621: Fixes a zipimport bug introduced in 3.3.4 that could cause spurious crashes or SystemErrors when importing modules or packages from a zip file. The change causing the problem was reverted.
  • Issue #20404: io.TextIOWrapper (and hence the open() builtin) now uses the internal codec marking system added for issue #19619 to throw LookupError for known non-text encodings at stream construction time. The existing output type checks remain in place to deal with unmarked third party codecs.
  • Tests:
  • Issue #20743: Fix a reference leak in test_tcl.
  • Tools/Demos:
  • Issue #20535: PYTHONWARNING no longer affects the run_tests.py script. Patch by Arfrever Frehtes Taifersar Arahesis.

New in version 3.3.5 RC 1 (February 24th, 2014)

  • Core and Builtins:
  • Issue #19619: str.encode, bytes.decode and bytearray.decode now use an internal API to throw LookupError for known non-text encodings, rather than attempting the encoding or decoding operation and then throwing a TypeError for an unexpected output type. (The latter mechanism remains in place for third party non-text encodings)
  • Issue #20588: Make Python-ast.c C89 compliant.
  • Issue #20437: Fixed 21 potential bugs when deleting objects references.
  • Issue #20538: UTF-7 incremental decoder produced inconsistant string when input was truncated in BASE64 section.
  • Library:
  • Issue #20635: Fixed grid_columnconfigure() and grid_rowconfigure() methods of Tkinter widgets to work in wantobjects=True mode.
  • Issue #19612: On Windows, subprocess.Popen.communicate() now ignores OSError(22, ‘Invalid argument’) when writing input data into stdin, whereas the process already exited.
  • Issue #6815: os.path.expandvars() now supports non-ASCII environment variables names and values.
  • Issue #17671: Fixed a crash when use non-initialized io.BufferedRWPair. Based on patch by Stephen Tu.
  • Issue #8478: Untokenizer.compat processes first token from iterator input. Patch based on lines from Georg Brandl, Eric Snow, and Gareth Rees.
  • Issue #20594: Avoid name clash with the libc function posix_close.
  • Issue #19856: shutil.move() failed to move a directory to other directory on Windows if source name ends with os.altsep.
  • Issue #14983: email.generator now always adds a line end after each MIME boundary marker, instead of doing so only when there is an epilogue. This fixes an RFC compliance bug and solves an issue with signed MIME parts.
  • Issue #20540: Fix a performance regression (vs. Python 3.2) when layering a multiprocessing Connection over a TCP socket. For small payloads, Nagle’s algorithm would introduce idle delays before the entire transmission of a message.
  • Issue #16983: the new email header parsing code will now decode encoded words that are (incorrectly) surrounded by quotes, and register a defect.
  • Issue #19772: email.generator no longer mutates the message object when doing a down-transform from 8bit to 7bit CTEs.
  • Issue #18805: the netmask/hostmask parsing in ipaddress now more reliably filters out illegal values and correctly allows any valid prefix length.
  • Issue #17369: get_filename was raising an exception if the filename parameter’s RFC2231 encoding was broken in certain ways. This was a regression relative to python2.
  • Issue #20013: Some imap servers disconnect if the current mailbox is deleted, and imaplib did not handle that case gracefully. Now it handles the ‘bye’ correctly.
  • Issue #19920: TarFile.list() no longer fails when outputs a listing containing non-encodable characters. Based on patch by Vajrasky Kok.
  • Issue #20515: Fix NULL pointer dereference introduced by issue #20368.
  • Issue #19186: Restore namespacing of expat symbols inside the pyexpat module.
  • Issue #20426: When passing the re.DEBUG flag, re.compile() displays the debug output every time it is called, regardless of the compilation cache.
  • Issue #20368: The null character now correctly passed from Tcl to Python. Improved error handling in variables-related commands.
  • Issue #20435: Fix _pyio.StringIO.getvalue() to take into account newline translation settings.
  • Issue #20288: fix handling of invalid numeric charrefs in HTMLParser.
  • Issue #20424: Python implementation of io.StringIO now supports lone surrogates.
  • Issue #19456: ntpath.join() now joins relative paths correctly when a drive is present.
  • Issue #19077: tempfile.TemporaryDirectory cleanup is now most likely successful when called during nulling out of modules during shutdown. Misleading exception no longer raised when resource warning is emitted during shutdown.
  • Issue #20367: Fix behavior of concurrent.futures.as_completed() for duplicate arguments. Patch by Glenn Langford.
  • Issue #8260: The read(), readline() and readlines() methods of codecs.StreamReader returned incomplete data when were called after readline() or read(size). Based on patch by Amaury Forgeot d’Arc.
  • IDLE:
  • Issue #20406: Use Python application icons for Idle window title bars. Patch mostly by Serhiy Storchaka.
  • Update the python.gif icon for the Idle classbrowser and pathbowser from the old green snake to the new new blue and yellow snakes.
  • Issue #17721: Remove non-functional configuration dialog help button until we make it actually gives some help when clicked. Patch by Guilherme Simões.
  • Tests:
  • Issue #20743: Fix a reference leak in test_tcl.
  • Issue #20510: Rewrote test_exit in test_sys to match existing comments, use modern unittest features, and use helpers from test.script_helper instead of using subprocess directly. Patch by Gareth Rees.
  • Issue #20532: Tests which use _testcapi are now marked as CPython only.
  • Issue #19920: Added tests for TarFile.list(). Based on patch by Vajrasky Kok.
  • Issue #19990: Added tests for the imghdr module. Based on patch by Claudiu Popa.
  • Issue #20474: Fix test_socket “unexpected success” failures on OS X 10.7+.
  • Issue #20605: Make test_socket getaddrinfo OS X segfault test more robust.
  • Documentation:
  • Issue #20488: Importlib is no longer an implementation of import, it’s the implementation.
  • Build:
  • Issue #20221: Removed conflicting (or circular) hypot definition when compiled with VS 2010 or above. Initial patch by Tabrez Mohammed.
  • Issue #20609: Restored the ability to build 64-bit Windows binaries on 32-bit Windows, which was broken by the change in issue #19788.
  • Tools/Demos:
  • Issue #20535: PYTHONWARNING no longer affects the run_tests.py script. Patch by Arfrever Frehtes Taifersar Arahesis.

New in version 3.4.0 RC 1 (February 11th, 2014)

  • Core and Builtins:
  • Issue #19255: The builtins module is restored to initial value before cleaning other modules. The sys and builtins modules are cleaned last.
  • Issue #20588: Make Python-ast.c C89 compliant.
  • Issue #20437: Fixed 22 potential bugs when deleting objects references.
  • Issue #20500: Displaying an exception at interpreter shutdown no longer risks triggering an assertion failure in PyObject_Str.
  • Issue #20538: UTF-7 incremental decoder produced inconsistent string when input was truncated in BASE64 section.
  • Issue #20404: io.TextIOWrapper (and hence the open() builtin) now uses the internal codec marking system added for issue #19619 to throw LookupError for known non-text encodings at stream construction time. The existing output type checks remain in place to deal with unmarked third party codecs.
  • Issue #17162: Add PyType_GetSlot.
  • Issue #20162: Fix an alignment issue in the siphash24() hash function which caused a crash on PowerPC 64-bit (ppc64).
  • Library:
  • Issue #20530: The signatures for slot builtins have been updated to reflect the fact that they only accept positional-only arguments.
  • Issue #20517: Functions in the os module that accept two filenames now register both filenames in the exception on failure.
  • Issue #20563: The ipaddress module API is now considered stable.
  • Issue #14983: email.generator now always adds a line end after each MIME boundary marker, instead of doing so only when there is an epilogue. This fixes an RFC compliance bug and solves an issue with signed MIME parts.
  • Issue #20540: Fix a performance regression (vs. Python 3.2) when layering a multiprocessing Connection over a TCP socket. For small payloads, Nagle’s algorithm would introduce idle delays before the entire transmission of a message.
  • Issue #16983: the new email header parsing code will now decode encoded words that are (incorrectly) surrounded by quotes, and register a defect.
  • Issue #19772: email.generator no longer mutates the message object when doing a down-transform from 8bit to 7bit CTEs.
  • Issue #20536: the statistics module now correctly handle Decimal instances with positive exponents
  • Issue #18805: the netmask/hostmask parsing in ipaddress now more reliably filters out illegal values and correctly allows any valid prefix length.
  • Issue #20481: For at least Python 3.4, the statistics module will require that all inputs for a single operation be of a single consistent type, or else a mixed of ints and a single other consistent type. This avoids some interoperability issues that arose with the previous approach of coercing to a suitable common type.
  • Issue #20478: the statistics module now treats collections.Counter inputs like any other iterable.
  • Issue #17369: get_filename was raising an exception if the filename parameter’s RFC2231 encoding was broken in certain ways. This was a regression relative to python2.
  • Issue #20013: Some imap servers disconnect if the current mailbox is deleted, and imaplib did not handle that case gracefully. Now it handles the ‘bye’ correctly.
  • Issue #20531: Revert 3.4 version of fix for #19063, and apply the 3.3 version. That is, do not raise an error if unicode is passed to email.message.Message.set_payload.
  • Issue #20476: If a non-compat32 policy is used with any of the email parsers, EmailMessage is now used as the factory class. The factory class should really come from the policy; that will get fixed in 3.5.
  • Issue #19920: TarFile.list() no longer fails when outputs a listing containing non-encodable characters. Based on patch by Vajrasky Kok.
  • Issue #20515: Fix NULL pointer dereference introduced by issue #20368.
  • Issue #19186: Restore namespacing of expat symbols inside the pyexpat module.
  • Issue #20053: ensurepip (and hence venv) are no longer affected by the settings in the default pip configuration file.
  • Issue #20426: When passing the re.DEBUG flag, re.compile() displays the debug output every time it is called, regardless of the compilation cache.
  • Issue #20368: The null character now correctly passed from Tcl to Python. Improved error handling in variables-related commands.
  • Issue #20435: Fix _pyio.StringIO.getvalue() to take into account newline translation settings.
  • tracemalloc: Fix slicing traces and fix slicing a traceback.
  • Issue #20354: Fix an alignment issue in the tracemalloc module on 64-bit platforms. Bug seen on 64-bit Linux when using “make profile-opt”.
  • Issue #17159: inspect.signature now accepts duck types of functions, which adds support for Cython functions. Initial patch by Stefan Behnel.
  • Issue #18801: Fix inspect.classify_class_attrs to correctly classify object.__new__ and object.__init__.
  • Fixed cmath.isinf’s name in its argument parsing code.
  • Issue #20311, #20452: poll and epoll now round the timeout away from zero, instead of rounding towards zero, in select and selectors modules: select.epoll.poll(), selectors.PollSelector.poll() and selectors.EpollSelector.poll(). For example, a timeout of one microsecond (1e-6) is now rounded to one millisecondi (1e-3), instead of being rounded to zero. However, the granularity property and asyncio’s resolution feature were removed again.
  • asyncio: Some refactoring; various fixes; add write flow control to unix pipes; Future.set_exception() instantiates the exception argument if it is a class; improved proactor pipe transport; support wait_for(f, None); don’t log broken/disconnected pipes; use ValueError instead of assert for forbidden subprocess_{shell,exec} arguments; added a convenience API for subprocess management; added StreamReader.at_eof(); properly handle duplicate coroutines/futures in gather(), wait(), as_completed(); use a bytearray for buffering in StreamReader; and more.
  • Issue #20288: fix handling of invalid numeric charrefs in HTMLParser.
  • Issue #20424: Python implementation of io.StringIO now supports lone surrogates.
  • Issue #20308: inspect.signature now works on classes without user-defined __init__ or __new__ methods.
  • Issue #20372: inspect.getfile (and a bunch of other inspect functions that use it) doesn’t crash with unexpected AttributeError on classes defined in C without __module__.
  • Issue #20356: inspect.signature formatting uses ‘/’ to separate positional-only parameters from others.
  • Issue #20223: inspect.signature now supports methods defined with functools.partialmethods.
  • Issue #19456: ntpath.join() now joins relative paths correctly when a drive is present.
  • Issue #19077: tempfile.TemporaryDirectory cleanup no longer fails when called during shutdown. Emitting resource warning in __del__ no longer fails. Original patch by Antoine Pitrou.
  • Issue #20394: Silence Coverity warning in audioop module.
  • Issue #20367: Fix behavior of concurrent.futures.as_completed() for duplicate arguments. Patch by Glenn Langford.
  • Issue #8260: The read(), readline() and readlines() methods of codecs.StreamReader returned incomplete data when were called after readline() or read(size). Based on patch by Amaury Forgeot d’Arc.
  • Issue #20105: the codec exception chaining now correctly sets the traceback of the original exception as its __traceback__ attribute.
  • Issue #17481: inspect.getfullargspec() now uses inspect.signature() API.
  • Issue #15304: concurrent.futures.wait() can block forever even if Futures have completed. Patch by Glenn Langford.
  • Issue #14455: plistlib: fix serializing integers integers in the range of an unsigned long long but outside of the range of signed long long for binary plist files.
  • IDLE:
  • Issue #20406: Use Python application icons for Idle window title bars. Patch mostly by Serhiy Storchaka.
  • Update the python.gif icon for the Idle classbrowser and pathbowser from the old green snake to the new new blue and yellow snakes.
  • Issue #17721: Remove non-functional configuration dialog help button until we make it actually gives some help when clicked. Patch by Guilherme Simões.
  • Tests:
  • Issue #20532: Tests which use _testcapi now are marked as CPython only.
  • Issue #19920: Added tests for TarFile.list(). Based on patch by Vajrasky Kok.
  • Issue #19990: Added tests for the imghdr module. Based on patch by Claudiu Popa.
  • Issue #20474: Fix test_socket “unexpected success” failures on OS X 10.7+.
  • Tools/Demos:
  • Issue #20530: Argument Clinic’s signature format has been revised again. The new syntax is highly human readable while still preventing false positives. The syntax also extends Python syntax to denote “self” and positional-only parameters, allowing inspect.Signature objects to be totally accurate for all supported builtins in Python 3.4.
  • Issue #20456: Argument Clinic now observes the C preprocessor conditional compilation statements of the C files it parses. When a Clinic block is inside a conditional code, it adjusts its output to match, including automatically generating an empty methoddef macro.
  • Issue #20456: Cloned functions in Argument Clinic now use the correct name, not the name of the function they were cloned from, for text strings inside generated code.
  • Issue #20456: Fixed Argument Clinic’s test suite and “–converters” feature.
  • Issue #20456: Argument Clinic now allows specifying different names for a parameter in Python and C, using “as” on the parameter line.
  • Issue #20326: Argument Clinic now uses a simple, unique signature to annotate text signatures in docstrings, resulting in fewer false positives. “self” parameters are also explicitly marked, allowing inspect.Signature() to authoritatively detect (and skip) said parameters.
  • Issue #20326: Argument Clinic now generates separate checksums for the input and output sections of the block, allowing external tools to verify that the input has not changed (and thus the output is not out-of-date).
  • Build:
  • Issue #20465: Update SQLite shipped with OS X installer to 3.8.3.
  • C-API:
  • Issue #20517: Added new functions allowing OSError exceptions to reference two filenames instead of one: PyErr_SetFromErrnoWithFilenameObjects() and PyErr_SetExcFromWindowsErrWithFilenameObjects().
  • Documentation:
  • Issue #20488: Change wording to say importlib is the implementation of import instead of just an implementation.
  • Issue #6386: Clarify in the tutorial that specifying a symlink to execute means the directory containing the executed script and not the symlink is added to sys.path.

New in version 3.3.4 (February 11th, 2014)

  • Library:
  • Issue #20374: Fix build warnings of the readline module with libedit on Mac.

New in version 3.3.4 RC 1 (January 27th, 2014)

  • Core and Builtins:
  • Issue #17825: Cursor “^” is correctly positioned for SyntaxError and IndentationError.
  • Issue #2382: SyntaxError cursor “^” is now written at correct position in most cases when multibyte characters are in line (before “^”). This still not works correctly with wide East Asian characters.
  • Issue #18960: The first line of Python script could be executed twice when the source encoding was specified on the second line. Now the source encoding declaration on the second line isn’t effective if the first line contains anything except a comment. ‘python -x’ works now again with files with the source encoding declarations, and can be used to make Python batch files on Windows.
  • Issue #17432: Drop UCS2 from names of Unicode functions in python3.def.
  • Issue #19969: PyBytes_FromFormatV() now raises an OverflowError if “%c” argument is not in range [0; 255].
  • Issue #14432: Generator now clears the borrowed reference to the thread state. Fix a crash when a generator is created in a C thread that is destroyed while the generator is still used. The issue was that a generator contains a frame, and the frame kept a reference to the Python state of the destroyed C thread. The crash occurs when a trace function is setup.
  • Issue #19932: Fix typo in import.h, missing whitespaces in function prototypes.
  • Issue #19729: In str.format(), fix recursive expansion in format spec.
  • Issue #19638: Fix possible crash / undefined behaviour from huge (more than 2 billion characters) input strings in _Py_dg_strtod.
  • Library:
  • Issue #16042: CVE-2013-1752: smtplib: Limit amount of data read by limiting the call to readline(). Original patch by Christian Heimes.
  • Issue #20317: ExitStack.__exit__ could create a self-referential loop if an exception raised by a cleanup operation already had its context set correctly (for example, by the @contextmanager decorator). The infinite loop this caused is now avoided by checking if the expected context is already set before trying to fix it.
  • Issue #20374: Fix build with GNU readline >= 6.3.
  • Issue #20262: Warnings are raised now when duplicate names are added in the ZIP file or too long ZIP file comment is truncated.
  • Issue #18574: Added missing newline in 100-Continue reply from http.server.BaseHTTPRequestHandler. Patch by Nikolaus Rath.
  • Issue #20270: urllib.urlparse now supports empty ports.
  • Issue #20243: TarFile no longer raise ReadError when opened in write mode.
  • Issue #20238: TarFile opened with external fileobj and “w:gz” mode didn’t write complete output on close.
  • Issue #20245: The open functions in the tarfile module now correctly handle empty mode.
  • Issue #20242: Fixed basicConfig() format strings for the alternative formatting styles. Thanks to kespindler for the bug report and patch.
  • Issue #20246: Fix buffer overflow in socket.recvfrom_into.
  • Issues #20206 and #5803: Fix edge case in email.quoprimime.encode where it truncated lines ending in a character needing encoding but no newline by using a more efficient algorithm that doesn’t have the bug.
  • Issue #19082: Working xmlrpc.server and xmlrpc.client examples. Both in modules and in documentation. Initial patch contributed by Vajrasky Kok.
  • Issue #20138: The wsgiref.application_uri() and wsgiref.request_uri() functions now conform to PEP 3333 when handle non-ASCII URLs.
  • Issue #19097: Raise the correct Exception when cgi.FieldStorage is given an invalid fileobj.
  • Issue #20217: Fix build in SCHED_SPORADIC is defined.
  • Issue #13107: argparse and optparse no longer raises an exception when output a help on environment with too small COLUMNS. Based on patch by Elazar Gershuni.
  • Issue #20207: Always disable SSLv2 except when PROTOCOL_SSLv2 is explicitly asked for.
  • Issue #18960: The tokenize module now ignore the source encoding declaration on the second line if the first line contains anything except a comment.
  • Issue #20078: Reading malformed zipfiles no longer hangs with 100% CPU consumption.
  • Issue #20113: os.readv() and os.writev() now raise an OSError exception on error instead of returning -1.
  • Issue #20072: Fixed multiple errors in tkinter with wantobjects is False.
  • Issue #20108: Avoid parameter name clash in inspect.getcallargs().
  • Issue #12692: Backport the fix for ResourceWarning in test_urllib2net. This also helps in closing the socket when Connection Close header is not sent.
  • Issue #19422: Explicitly disallow non-SOCK_STREAM sockets in the ssl module, rather than silently let them emit clear text data.
  • Issue #18116: getpass was always getting an error when testing /dev/tty, and thus was always falling back to stdin, and would then raise an exception if stdin could not be used (such as /dev/null). It also leaked an open file. All of these issues are now fixed.
  • Issue #20027: Fixed locale aliases for devanagari locales.
  • Issue #20067: Tkinter variables now work when wantobjects is false.
  • Issue #19020: Tkinter now uses splitlist() instead of split() in configure methods.
  • Fix TypeError on “setup.py upload –show-response”.
  • Issue #12226: HTTPS is now used by default when connecting to PyPI.
  • Issue #20045: Fix “setup.py register –list-classifiers”.
  • Issue #18879: When a method is looked up on a temporary file, avoid closing the file before the method is possibly called.
  • Issue #20034: Updated alias mapping to most recent locale.alias file from X.org distribution using makelocalealias.py.
  • Issue #5815: Fixed support for locales with modifiers. Fixed support for locale encodings with hyphens.
  • Issue #20026: Fix the sqlite module to handle correctly invalid isolation level (wrong type).
  • Issue #18829: csv.Dialect() now checks type for delimiter, escapechar and quotechar fields. Original patch by Vajrasky Kok.
  • Issue #19855: uuid.getnode() on Unix now looks on the PATH for the executables used to find the mac address, with /sbin and /usr/sbin as fallbacks.
  • Issue #20007: HTTPResponse.read(0) no more prematurely closes connection. Original patch by Simon Sapin.
  • Issue #19912: Fixed numerous bugs in ntpath.splitunc().
  • Issue #19911: ntpath.splitdrive() now correctly processes the ‘İ’ character (U+0130, LATIN CAPITAL LETTER I WITH DOT ABOVE).
  • Issue #19532: python -m compileall with no filename/directory arguments now respects the -f and -q flags instead of ignoring them.
  • Issue #19623: Fixed writing to unseekable files in the aifc module.
  • Issue #17919: select.poll.register() again works with poll.POLLNVAL on AIX. Fixed integer overflow in the eventmask parameter.
  • Issue #19063: if a Charset’s body_encoding was set to None, the email package would generate a message claiming the Content-Transfer-Encoding was 7bit, and produce garbage output for the content. This now works. A couple of other set_payload mishandlings of non-ASCII are also fixed.
  • Issue #17200: telnetlib’s read_until and expect timeout was broken by the fix to Issue #14635 in Python 3.3.0 to be interpreted as milliseconds instead of seconds when the platform supports select.poll (ie: everywhere). It is now treated as seconds once again.
  • Issue #17429: platform.linux_distribution() now decodes files from the UTF-8 encoding with the surrogateescape error handler, instead of decoding from the locale encoding in strict mode. It fixes the function on Fedora 19 which is probably the first major distribution release with a non-ASCII name. Patch written by Toshio Kuratomi.
  • Issue #19929: Call os.read with 32768 within subprocess.Popen.communicate rather than 4096 for efficiency. A microbenchmark shows Linux and OS X both using ~50% less cpu time this way.
  • Issue #19506: Use a memoryview to avoid a data copy when piping data to stdin within subprocess.Popen.communicate. 5-10% less cpu usage.
  • Issue #19839: Fix regression in bz2 module’s handling of non-bzip2 data at EOF, and analogous bug in lzma module.
  • Issue #19138: doctest’s IGNORE_EXCEPTION_DETAIL now allows a match when no exception detail exists (no colon following the exception’s name, or a colon does follow but no text follows the colon).
  • Issue #19834: Support unpickling of exceptions pickled by Python 2.
  • Issue #15798: Fixed subprocess.Popen() to no longer fail if file descriptor 0, 1 or 2 is closed.
  • Issue #19088: Fixed incorrect caching of the copyreg module in object.__reduce__() and object.__reduce_ex__().
  • Fixed _pickle.Unpickler to not fail when loading empty strings as persistent IDs.
  • Issue #11480: Fixed copy.copy to work with classes with custom metaclasses. Patch by Daniel Urban.
  • Issue #6477: Added support for pickling the types of built-in singletons (i.e., Ellipsis, NotImplemented, None).
  • Issue #11508: Fixed uuid.getnode() and uuid.uuid1() on environment with virtual interface. Original patch by Kent Frazier.
  • Issue #11489: JSON decoder now accepts lone surrogates.
  • Issue #19545: Avoid chained exceptions while passing stray % to time.strptime(). Initial patch by Claudiu Popa.
  • Issue #19633: Fixed writing not compressed 16- and 32-bit wave files on big-endian platforms.
  • Issue #19449: in csv’s writerow, handle non-string keys when generating the error message that certain keys are not in the ‘fieldnames’ list.
  • Fix test.support.bind_port() to not cause an error when Python was compiled on a system with SO_REUSEPORT defined in the headers but run on a system with an OS kernel that does not support that reasonably new socket option.
  • Fix compilation error under gcc of the ctypes module bundled libffi for arm.
  • Issue #19523: Closed FileHandler leak which occurred when delay was set.
  • Issue #13674: Prevented time.strftime from crashing on Windows when given a year before 1900 and a format of %y.
  • Issue #19544 and Issue #6286: Restore use of urllib over http allowing use of http_proxy for Distutils upload command, a feature accidentally lost in the rollback of distutils2.
  • Issue #19544 and Issue #7457: Restore the read_pkg_file method to distutils.dist.DistributionMetadata accidentally removed in the undo of distutils2.
  • Issue #1575020: Fixed support of 24-bit wave files on big-endian platforms.
  • Issue #19480: HTMLParser now accepts all valid start-tag names as defined by the HTML5 standard.
  • Issue #6157: Fixed tkinter.Text.debug(). Original patch by Guilherme Polo.
  • Issue #6160: The bbox() method of tkinter.Spinbox now returns a tuple of integers instead of a string. Based on patch by Guilherme Polo.
  • Issue #10197: Rework subprocess.get[status]output to use subprocess functionality and thus to work on Windows. Patch by Nick Coghlan.
  • Issue #19286: Directories in package_data are no longer added to the filelist, preventing failure outlined in the ticket.
  • IDLE:
  • Issue #17390: Add Python version to Idle editor window title bar. Original patches by Edmond Burnett and Kent Johnson.
  • Issue #18960: IDLE now ignores the source encoding declaration on the second line if the first line contains anything except a comment.
  • Issue #20058: sys.stdin.readline() in IDLE now always returns only one line.
  • Issue #19481: print() of string subclass instance in IDLE no longer hangs.
  • Issue #18270: Prevent possible IDLE AttributeError on OS X when no initial shell window is present.
  • Tests:
  • Issue #19804: The test_find_mac test in test_uuid is now skipped if the ifconfig executable is not available.
  • Issue #19886: Use better estimated memory requirements for bigmem tests.
  • Issue #20055: Fix test_shutil under Windows with symlink privileges held. Patch by Vajrasky Kok.
  • Issue #19938: Re-enabled test_bug_1333982 in test_dis, which had been disabled since 3.0 due to the changes in listcomp handling.
  • Issue #19320: test_tcl no longer fails when wantobjects is false.
  • Issue #19683: Removed empty tests from test_minidom. Patch by Ajitesh Gupta.
  • Issue #19919: Fix flaky SSL test. connect_ex() sometimes returns EWOULDBLOCK on Windows or VMs hosted on Windows.
  • Issue #19912: Added tests for ntpath.splitunc().
  • Issue #19828: Fixed test_site when the whole suite is run with -S.
  • Issue #19928: Implemented a test for repr() of cell objects.
  • Issue #19535: Fixed test_docxmlrpc when python is run with -OO.
  • Issue #19926: Removed unneeded test_main from test_abstract_numbers. Patch by Vajrasky Kok.
  • Issue #19595, #19987: Re-enabled a long-disabled test in test_winsound.
  • Issue #19588: Fixed tests in test_random that were silently skipped most of the time. Patch by Julian Gindi.
  • Issue #19596: Set untestable tests in test_importlib to None to avoid reporting success on empty tests.
  • Issue #19440: Clean up test_capi by removing an unnecessary __future__ import, converting from test_main to unittest.main, and running the _testcapi module tests within a unittest TestCase.
  • Issue #18702, 19572: All skipped tests now reported as skipped.
  • Issue #19085: Added basic tests for all tkinter widget options.
  • Documentation:
  • Issue #20265: Updated some parts of the Using Windows document.
  • Issue #20266: Updated some parts of the Windows FAQ.
  • Issue #20255: Updated the about and bugs pages.
  • Issue #20253: Fixed a typo in the ipaddress docs that advertised an illegal attribute name. Found by INADA Naoki.
  • Issue #19963: Document that importlib.import_module() no longer requires importing parent packages separately.
  • Issue #18840: Introduce the json module in the tutorial, and de-emphasize the pickle module.
  • Issue #19845: Updated the Compiling Python on Windows section.
  • Issue #19795: Improved markup of True/False constants.
  • Issue #18326: Clarify that list.sort’s arguments are keyword-only. Also, attempt to reduce confusion in the glossary by not saying there are different “types” of arguments and parameters.
  • Build:
  • Issue #19788: kill_python(_d).exe is now run as a PreBuildEvent on the pythoncore sub-project. This should prevent build errors due a previous build’s python(_d).exe still running.
  • Add workaround for VS 2010 nmake clean issue. VS 2010 doesn’t set up PATH for nmake.exe correctly.
  • Tools/Demos:
  • Issue #19936: Added executable bits or shebang lines to Python scripts which requires them. Disable executable bits and shebang lines in test and benchmark files in order to prevent using a random system python, and in source files of modules which don’t provide command line interface. Fixed shebang line to use python3 executable in the unittestgui script.
  • Issue #18960: 2to3 and the findnocoding.py script now ignore the source encoding declaration on the second line if the first line contains anything except a comment.