Filter entries by content:
Release date: XX-XXX-2012
Release date: 29-Sep-2012
Release date: 23-Sep-2012
Release date: 09-Sep-2012
Release date: 25-Aug-2012
Release date: 12-Aug-2012
Release date: 27-Jun-2012
Issue #14225: Fix Unicode support for curses (#12567) on OS X
Issue #14928: Fix importlib bootstrap issues by using a custom executable (Modules/_freeze_importlib) to build Python/importlib.h.
Release date: 31-May-2012
Release date: 01-May-2012
Release date: 01-Apr-2012
Release date: 05-Mar-2012
Issue #14172: Fix reference leak when marshalling a buffer-like object (other than a bytes object).
Issue #13521: dict.setdefault() now does only one lookup for the given key, making it “atomic” for many purposes. Patch by Filip Gruszczyński.
PEP 409, Issue #6210: “raise X from None” is now supported as a means of suppressing the display of the chained exception context. The chained context still remains available as the __context__ attribute.
Issue #10181: New memoryview implementation fixes multiple ownership and lifetime issues of dynamically allocated Py_buffer members (#9990) as well as crashes (#8305, #7433). Many new features have been added (See whatsnew/3.3), and the documentation has been updated extensively. The ndarray test object from _testbuffer.c implements all aspects of PEP-3118, so further development towards the complete implementation of the PEP can proceed in a test-driven manner.
Thanks to Nick Coghlan, Antoine Pitrou and Pauli Virtanen for review and many ideas.
Issue #12834: Fix incorrect results of memoryview.tobytes() for non-contiguous arrays.
Issue #5231: Introduce memoryview.cast() method that allows changing format and shape without making a copy of the underlying memory.
Issue #14084: Fix a file descriptor leak when importing a module with a bad encoding.
Upgrade Unicode data to Unicode 6.1.
Issue #14040: Remove rarely used file name suffixes for C extensions (under POSIX mainly).
Issue #14051: Allow arbitrary attributes to be set of classmethod and staticmethod.
Issue #13703: oCERT-2011-003: Randomize hashes of str and bytes to protect against denial of service attacks due to hash collisions within the dict and set types. Patch by David Malcolm, based on work by Victor Stinner.
Issue #13020: Fix a reference leak when allocating a structsequence object fails. Patch by Suman Saha.
Issue #13908: Ready types returned from PyType_FromSpec.
Issue #11235: Fix OverflowError when trying to import a source file whose modification time doesn’t fit in a 32-bit timestamp.
Issue #12705: A SyntaxError exception is now raised when attempting to compile multiple statements as a single interactive statement.
Fix the builtin module initialization code to store the init function for future reinitialization.
Issue #8052: The posix subprocess module would take a long time closing all possible file descriptors in the child process rather than just open file descriptors. It now closes only the open fds if possible for the default close_fds=True behavior.
Issue #13629: Renumber the tokens in token.h so that they match the indexes into _PyParser_TokenNames.
Issue #13752: Add a casefold() method to str.
Issue #13761: Add a “flush” keyword argument to the print() function, used to ensure flushing the output stream.
Issue #13645: pyc files now contain the size of the corresponding source code, to avoid timestamp collisions (especially on filesystems with a low timestamp resolution) when checking for freshness of the bytecode.
PEP 380, Issue #11682: Add “yield from <x>” to support easy delegation to subgenerators (initial patch by Greg Ewing, integration into 3.3 by Renaud Blanch, Ryan Kelly, Zbigniew Jędrzejewski-Szmek and Nick Coghlan)
Issue #13748: Raw bytes literals can now be written with the rb prefix as well as br.
Issue #12736: Use full unicode case mappings for upper, lower, and title case.
Issue #12760: Add a create mode to open(). Patch by David Townshend.
Issue #13738: Simplify implementation of bytes.lower() and bytes.upper().
Issue #13577: Built-in methods and functions now have a __qualname__. Patch by sbt.
Issue #6695: Full garbage collection runs now clear the freelist of set objects. Initial patch by Matthias Troffaes.
Fix OSError.__init__ and OSError.__new__ so that each of them can be overriden and take additional arguments (followup to issue #12555).
Fix the fix for issue #12149: it was incorrect, although it had the side effect of appearing to resolve the issue. Thanks to Mark Shannon for noticing.
Issue #13505: Pickle bytes objects in a way that is compatible with Python 2 when using protocols <= 2.
Issue #11147: Fix an unused argument in _Py_ANNOTATE_MEMORY_ORDER. (Fix given by Campbell Barton).
Issue #13503: Use a more efficient reduction format for bytearrays with pickle protocol >= 3. The old reduction format is kept with older protocols in order to allow unpickling under Python 2. Patch by Irmen de Jong.
Issue #7111: Python can now be run without a stdin, stdout or stderr stream. It was already the case with Python 2. However, the corresponding sys module entries are now set to None (instead of an unusable file object).
Issue #11849: Ensure that free()d memory arenas are really released on POSIX systems supporting anonymous memory mappings. Patch by Charles-François Natali.
Issue #13452: PyUnicode_EncodeDecimal() doesn’t support error handlers different than “strict” anymore. The caller was unable to compute the size of the output buffer: it depends on the error handler.
PEP 3155 / issue #13448: Qualified name for classes and functions.
Issue #13436: Fix a bogus error message when an AST object was passed an invalid integer value.
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Issue #13338: Handle all enumerations in _Py_ANNOTATE_MEMORY_ORDER to allow compiling extension modules with -Wswitch-enum on gcc. Initial patch by Floris Bruynooghe.
Issue #10227: Add an allocation cache for a single slice object. Patch by Stefan Behnel.
Issue #13393: BufferedReader.read1() now asks the full requested size to the raw stream instead of limiting itself to the buffer size.
Issue #13392: Writing a pyc file should now be atomic under Windows as well.
Issue #13333: The UTF-7 decoder now accepts lone surrogates (the encoder already accepts them).
Issue #13389: Full garbage collection passes now clear the freelists for list and dict objects. They already cleared other freelists in the interpreter.
Issue #13327: Remove the need for an explicit None as the second argument to os.utime, os.lutimes, os.futimes, os.futimens, os.futimesat, in order to update to the current time. Also added keyword argument handling to os.utimensat in order to remove the need for explicit None.
Issue #13350: Simplify some C code by replacing most usages of PyUnicode_Format by PyUnicode_FromFormat.
Issue #13342: input() used to ignore sys.stdin’s and sys.stdout’s unicode error handler in interactive mode (when calling into PyOS_Readline()).
Issue #9896: Add start, stop, and step attributes to range objects.
Issue #13343: Fix a SystemError when a lambda expression uses a global variable in the default value of a keyword-only argument: lambda *, arg=GLOBAL_NAME: None
Issue #12797: Added custom opener parameter to builtin open() and FileIO.open().
Issue #10519: Avoid unnecessary recursive function calls in setobject.c.
Issue #10363: Deallocate global locks in Py_Finalize().
Issue #13018: Fix reference leaks in error paths in dictobject.c. Patch by Suman Saha.
Issue #13201: Define ‘==’ and ‘!=’ to compare range objects based on the sequence of values they define (instead of comparing based on object identity).
Issue #1294232: In a few cases involving metaclass inheritance, the interpreter would sometimes invoke the wrong metaclass when building a new class object. These cases now behave correctly. Patch by Daniel Urban.
Issue #12753: Add support for Unicode name aliases and named sequences. Both unicodedata.lookup() and ‘N{...}’ now resolve aliases, and unicodedata.lookup() resolves named sequences too.
Issue #12170: The count(), find(), rfind(), index() and rindex() methods of bytes and bytearray objects now accept an integer between 0 and 255 as their first argument. Patch by Petri Lehtinen.
Issue #12604: VTRACE macro expanded to no-op in _sre.c to avoid compiler warnings. Patch by Josh Triplett and Petri Lehtinen.
Issue #12281: Rewrite the MBCS codec to handle correctly replace and ignore error handlers on all Windows versions. The MBCS codec is now supporting all error handlers, instead of only replace to encode and ignore to decode.
Issue #13188: When called without an explicit traceback argument, generator.throw() now gets the traceback from the passed exception’s __traceback__ attribute. Patch by Petri Lehtinen.
Issue #13146: Writing a pyc file is now atomic under POSIX.
Issue #7833: Extension modules built using distutils on Windows will no longer include a “manifest” to prevent them failing at import time in some embedded situations.
PEP 3151 / issue #12555: reworking the OS and IO exception hierarchy.
Add internal API for static strings (_Py_identifier et al.).
Issue #13063: the Windows error ERROR_NO_DATA (numbered 232 and described as “The pipe is being closed”) is now mapped to POSIX errno EPIPE (previously EINVAL).
Issue #12911: Fix memory consumption when calculating the repr() of huge tuples or lists.
PEP 393: flexible string representation. Thanks to Torsten Becker for the initial implementation, and Victor Stinner for various bug fixes.
Issue #14081: The ‘sep’ and ‘maxsplit’ parameter to str.split, bytes.split, and bytearray.split may now be passed as keyword arguments.
Issue #13012: The ‘keepends’ parameter to str.splitlines may now be passed as a keyword argument: “my_string.splitlines(keepends=True)”. The same change also applies to bytes.splitlines and bytearray.splitlines.
Issue #7732: Don’t open a directory as a file anymore while importing a module. Ignore the direcotry if its name matchs the module name (e.g. “__init__.py”) and raise a ImportError instead.
Issue #13021: Missing decref on an error path. Thanks to Suman Saha for finding the bug and providing a patch.
Issue #12973: Fix overflow checks that relied on undefined behaviour in list_repeat (listobject.c) and islice_next (itertoolsmodule.c). These bugs caused test failures with recent versions of Clang.
Issue #12904: os.utime, os.futimes, os.lutimes, and os.futimesat now write atime and mtime with nanosecond precision on modern POSIX platforms.
Issue #12802: the Windows error ERROR_DIRECTORY (numbered 267) is now mapped to POSIX errno ENOTDIR (previously EINVAL).
Issue #9200: The str.is* methods now work with strings that contain non-BMP characters even in narrow Unicode builds.
Issue #12791: Break reference cycles early when a generator exits with an exception.
Issue #12773: Make __doc__ mutable on user-defined classes.
Issue #12766: Raise a ValueError when creating a class with a class variable that conflicts with a name in __slots__.
Issue #12266: Fix str.capitalize() to correctly uppercase/lowercase titlecased and cased non-letter characters.
Issue #12732: In narrow unicode builds, allow Unicode identifiers which fall outside the BMP.
Issue #12575: Validate user-generated AST before it is compiled.
Make type(None), type(Ellipsis), and type(NotImplemented) callable. They return the respective singleton instances.
Forbid summing bytes with sum().
Verify the types of AST strings and identifiers provided by the user before compiling them.
Issue #12647: The None object now has a __bool__() method that returns False. Formerly, bool(None) returned False only because of special case logic in PyObject_IsTrue().
Issue #12579: str.format_map() now raises a ValueError if used on a format string that contains positional fields. Initial patch by Julian Berman.
Issue #10271: Allow warnings.showwarning() be any callable.
Issue #11627: Fix segfault when __new__ on a exception returns a non-exception class.
Issue #12149: Update the method cache after a type’s dictionary gets cleared by the garbage collector. This fixes a segfault when an instance and its type get caught in a reference cycle, and the instance’s deallocator calls one of the methods on the type (e.g. when subclassing IOBase). Diagnosis and patch by Davide Rizzo.
Issue #9611, #9015: FileIO.read() clamps the length to INT_MAX on Windows.
Issue #9642: Uniformize the tests on the availability of the mbcs codec, add a new HAVE_MBCS define.
Issue #9642: Fix filesystem encoding initialization: use the ANSI code page on Windows if the mbcs codec is not available, and fail with a fatal error if we cannot get the locale encoding (if nl_langinfo(CODESET) is not available) instead of using UTF-8.
When a generator yields, do not retain the caller’s exception state on the generator.
Issue #12475: Prevent generators from leaking their exception state into the caller’s frame as they return for the last time.
Issue #12291: You can now load multiple marshalled objects from a stream, with other data interleaved between marshalled objects.
Issue #12356: When required positional or keyword-only arguments are not given, produce a informative error message which includes the name(s) of the missing arguments.
Issue #12370: Fix super with no arguments when __class__ is overriden in the class body.
Issue #12084: os.stat on Windows now works properly with relative symbolic links when called from any directory.
Loosen type restrictions on the __dir__ method. __dir__ can now return any sequence, which will be converted to a list and sorted by dir().
Issue #12265: Make error messages produced by passing an invalid set of arguments to a function more informative.
Issue #12225: Still allow Python to build if Python is not in its hg repo or mercurial is not installed.
Issue #1195: my_fgets() now always clears errors before calling fgets(). Fix the following case: sys.stdin.read() stopped with CTRL+d (end of file), raw_input() interrupted by CTRL+c.
Issue #12216: Allow unexpected EOF errors to happen on any line of the file.
Issue #12199: The TryExcept and TryFinally and AST nodes have been unified into a Try node.
Issue #9670: Increase the default stack size for secondary threads on Mac OS X and FreeBSD to reduce the chances of a crash instead of a “maximum recursion depth” RuntimeError exception. (patch by Ronald Oussoren)
Issue #12106: The use of the multiple-with shorthand syntax is now reflected in the AST.
Issue #12190: Try to use the same filename object when compiling unmarshalling a code objects in the same file.
Issue #12166: Move implementations of dir() specialized for various types into the __dir__() methods of those types.
Issue #5715: In socketserver, close the server socket in the child process.
Correct lookup of __dir__ on objects. Among other things, this causes errors besides AttributeError found on lookup to be propagated.
Issue #12060: Use sig_atomic_t type and volatile keyword in the signal module. Patch written by Charles-François Natali.
Issue #1746656: Added the if_nameindex, if_indextoname, if_nametoindex methods to the socket module.
Issue #12044: Fixed subprocess.Popen when used as a context manager to wait for the process to end when exiting the context to avoid unintentionally leaving zombie processes around.
Issue #1195: Fix input() if it is interrupted by CTRL+d and then CTRL+c, clear the end-of-file indicator after CTRL+d.
Issue #1856: Avoid crashes and lockups when daemon threads run while the interpreter is shutting down; instead, these threads are now killed when they try to take the GIL.
Issue #9756: When calling a method descriptor or a slot wrapper descriptor, the check of the object type doesn’t read the __class__ attribute anymore. Fix a crash if a class override its __class__ attribute (e.g. a proxy of the str type). Patch written by Andreas Stührk.
Issue #10517: After fork(), reinitialize the TLS used by the PyGILState_* APIs, to avoid a crash with the pthread implementation in RHEL 5. Patch by Charles-François Natali.
Issue #10914: Initialize correctly the filesystem codec when creating a new subinterpreter to fix a bootstrap issue with codecs implemented in Python, as the ISO-8859-15 codec.
Issue #11918: OS/2 and VMS are no more supported because of the lack of maintainer.
Issue #6780: fix starts/endswith error message to mention that tuples are accepted too.
Issue #5057: fix a bug in the peepholer that led to non-portable pyc files between narrow and wide builds while optimizing BINARY_SUBSCR on non-BMP chars (e.g. “U00012345”[0]).
Issue #11845: Fix typo in rangeobject.c that caused a crash in compute_slice_indices. Patch by Daniel Urban.
Issue #5673: Added a timeout keyword argument to subprocess.Popen.wait, subprocess.Popen.communicated, subprocess.call, subprocess.check_call, and subprocess.check_output. If the blocking operation takes more than timeout seconds, the subprocess.TimeoutExpired exception is raised.
Issue #11650: PyOS_StdioReadline() retries fgets() if it was interrupted (EINTR), for example if the program is stopped with CTRL+z on Mac OS X. Patch written by Charles-Francois Natali.
Issue #9319: Include the filename in “Non-UTF8 code ...” syntax error.
Issue #10785: Store the filename as Unicode in the Python parser.
Issue #11619: _PyImport_LoadDynamicModule() doesn’t encode the path to bytes on Windows.
Issue #10998: Remove mentions of -Q, sys.flags.division_warning and Py_DivisionWarningFlag left over from Python 2.
Issue #11244: Remove an unnecessary peepholer check that was preventing negative zeros from being constant-folded properly.
Issue #11395: io.FileIO().write() clamps the data length to 32,767 bytes on Windows if the file is a TTY to workaround a Windows bug. The Windows console returns an error (12: not enough space error) on writing into stdout if stdout mode is binary and the length is greater than 66,000 bytes (or less, depending on heap usage).
Issue #11320: fix bogus memory management in Modules/getpath.c, leading to a possible crash when calling Py_SetPath().
Issue #11432: A bug was introduced in subprocess.Popen on posix systems with 3.2.0 where the stdout or stderr file descriptor being the same as the stdin file descriptor would raise an exception. webbrowser.open would fail. fixed.
Issue #9856: Change object.__format__ with a non-empty format string to be a DeprecationWarning. In 3.2 it was a PendingDeprecationWarning. In 3.4 it will be a TypeError.
Issue #11244: The peephole optimizer is now able to constant-fold arbitrarily complex expressions. This also fixes a 3.2 regression where operations involving negative numbers were not constant-folded.
Issue #11450: Don’t truncate hg version info in Py_GetBuildInfo() when there are many tags (e.g. when using mq). Patch by Nadeem Vawda.
Issue #11335: Fixed a memory leak in list.sort when the key function throws an exception.
Issue #8923: When a string is encoded to UTF-8 in strict mode, the result is cached into the object. Examples: str.encode(), str.encode(‘utf-8’), PyUnicode_AsUTF8String() and PyUnicode_AsEncodedString(unicode, “utf-8”, NULL).
Issue #10831: PyUnicode_FromFormat() supports %li, %lli and %zi formats.
Issue #10829: Refactor PyUnicode_FromFormat(), use the same function to parse the format string in the 3 steps, fix crashs on invalid format strings.
Issue #13007: whichdb should recognize gdbm 1.9 magic numbers.
Issue #11246: Fix PyUnicode_FromFormat(“%V”) to decode the byte string from UTF-8 (with replace error handler) instead of ISO-8859-1 (in strict mode). Patch written by Ray Allen.
Issue #11286: Raise a ValueError from calling PyMemoryView_FromBuffer with a buffer struct having a NULL data pointer.
Issue #11272: On Windows, input() strips ‘r’ (and not only ‘n’), and sys.stdin uses universal newline (replace ‘rn’ by ‘n’).
issue #11828: startswith and endswith don’t accept None as slice index. Patch by Torsten Becker.
Issue #10830: Fix PyUnicode_FromFormatV(“%c”) for non-BMP characters on narrow build.
Issue #11168: Remove filename debug variable from PyEval_EvalFrameEx(). It encoded the Unicode filename to UTF-8, but the encoding fails on undecodable filename (on surrogate characters) which raises an unexpected UnicodeEncodeError on recursion limit.
Issue #11187: Remove bootstrap code (use ASCII) of PyUnicode_AsEncodedString(), it was replaced by a better fallback (use the locale encoding) in PyUnicode_EncodeFSDefault().
Check for NULL result in PyType_FromSpec.
Issue #10516: New copy() and clear() methods for lists and bytearrays.
Issue #11386: bytearray.pop() now throws IndexError when the bytearray is empty, instead of OverflowError.
Issue #12380: The rjust, ljust and center methods of bytes and bytearray now accept a bytearray argument.
Release date: 20-Feb-2011
Release date: 13-Feb-2011
Release date: 30-Jan-2011
Release date: 16-Jan-2011
Release date: 19-Dec-2010
Release date: 05-Dec-2010
Release date: 13-Nov-2010
Release date: 09-Oct-2010
Release date: 05-Sep-2010
Issue #9225: Remove the ROT_FOUR and DUP_TOPX opcode, the latter replaced by the new (and simpler) DUP_TOP_TWO. Performance isn’t changed, but our bytecode is a bit simplified. Patch by Demur Rumed.
Issue #9766: Rename poorly named variables exposed by _warnings to prevent confusion with the proper variables names from ‘warnings’ itself.
Issue #9212: dict_keys and dict_items now provide the isdisjoint() method, to conform to the Set ABC. Patch by Daniel Urban.
Issue #9737: Fix a crash when trying to delete a slice or an item from a memoryview object.
Issue #9549: sys.setdefaultencoding() and PyUnicode_SetDefaultEncoding() are now removed, since their effect was inexistent in 3.x (the default encoding is hardcoded to utf-8 and cannot be changed).
Issue #7415: PyUnicode_FromEncodedObject() now uses the new buffer API properly. Patch by Stefan Behnel.
Issue #5553: The Py_LOCAL_INLINE macro now results in inlining on most platforms. Previously, it inlined only when using Microsoft Visual C.
Issue #9712: Fix tokenize on identifiers that start with non-ascii names.
Issue #9688: __basicsize__ and __itemsize__ must be accessed as Py_ssize_t.
Issue #9684: Added a definition for SIZEOF_WCHAR_T to PC/pyconfig.h, to match the pyconfig.h generated by configure on other systems.
Issue #9666: Only catch AttributeError in hasattr(). All other exceptions that occur during attribute lookup are now propagated to the caller.
Issue #8622: Add PYTHONFSENCODING environment variable to override the filesystem encoding.
Issue #5127: The C functions that access the Unicode Database now accept and return characters from the full Unicode range, even on narrow unicode builds (Py_UNICODE_TOLOWER, Py_UNICODE_ISDECIMAL, and others). A visible difference in Python is that unicodedata.numeric() now returns the correct value for large code points, and repr() may consider more characters as printable.
Issue #9425: Create PyModule_GetFilenameObject() function to get the filename as a unicode object, instead of a byte string. Function needed to support unencodable filenames. Deprecate PyModule_GetFilename() in favor on the new function.
Issue #8063: Call _PyGILState_Init() earlier in Py_InitializeEx().
Issue #9612: The set object is now 64-bit clean under Windows.
Issue #8202: sys.argv[0] is now set to ‘-m’ instead of ‘-c’ when searching for the module file to be executed with the -m command line option.
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr() functions to write a message formatted by PyUnicode_FromFormatV() to sys.stdout and sys.stderr.
Issue #9542: Create PyUnicode_FSDecoder() function, a ParseTuple converter: decode bytes objects to unicode using PyUnicode_DecodeFSDefaultAndSize(); str objects are output as-is.
Issue #9203: Computed gotos are now enabled by default on supported compilers (which are detected by the configure script). They can still be disable selectively by specifying –without-computed-gotos.
Issue #9425: Create PyErr_WarnFormat() function, similar to PyErr_WarnEx() but use PyUnicode_FromFormatV() to format the warning message.
Issue #8530: Prevent stringlib fastsearch from reading beyond the front of an array.
Issue #5319: Print an error if flushing stdout fails at interpreter shutdown.
Issue #9337: The str() of a float or complex number is now identical to its repr().
Issue #9416: Fix some issues with complex formatting where the output with no type specifier failed to match the str output:
- format(complex(-0.0, 2.0), ‘-‘) omitted the real part from the output,
- format(complex(0.0, 2.0), ‘-‘) included a sign and parentheses.
Release date: 01-Aug-2010
Issue #8991: convertbuffer() rejects discontigious buffers.
Issue #7616: Fix copying of overlapping memoryview slices with the Intel compiler.
Issue #8413: structsequence now subclasses tuple.
Issue #8271: during the decoding of an invalid UTF-8 byte sequence, only the start byte and the continuation byte(s) are now considered invalid, instead of the number of bytes specified by the start byte. E.g.: ‘xf1x80AB’.decode(‘utf-8’, ‘replace’) now returns u’ufffdAB’ and replaces with U+FFFD only the start byte (‘xf1’) and the continuation byte (‘x80’) even if ‘xf1’ is the start byte of a 4-bytes sequence. Previous versions returned a single u’ufffd’.
Issue #9011: A negated imaginary literal (e.g., “-7j”) now has real part -0.0 rather than 0.0. So “-7j” is now exactly equivalent to “-(7j)”.
Be more specific in error messages about positional arguments.
Issue #8949: “z” format of PyArg_Parse*() functions doesn’t accept bytes objects, as described in the documentation.
Issue #6543: Write the traceback in the terminal encoding instead of utf-8. Fix the encoding of the modules filename. Patch written by Amaury Forgeot d’Arc.
Issue #9011: Remove buggy and unnecessary (in 3.x) ST->AST compilation code dealing with unary minus applied to a constant. The removed code was mutating the ST, causing a second compilation to fail.
Issue #850997: mbcs encoding (Windows only) handles errors argument: strict mode raises unicode errors. The encoder only supports “strict” and “replace” error handlers, the decoder only supports “strict” and “ignore” error handlers. Patch written by Mark Hammond.
Issue #8850: Remove “w” and “w#” formats from PyArg_Parse*() functions, use “w*” format instead. Add tests for “w*” format.
Issue #8592: PyArg_Parse*() functions raise a TypeError for “y”, “u” and “Z” formats if the string contains a null byte/character. Write unit tests for string formats.
Issue #7490: To facilitate sharing of doctests between 2.x and 3.x test suites, the IGNORE_EXCEPTION_DETAIL directive now also ignores the module location of the raised exception.
Issue #8969: On Windows, use mbcs codec in strict mode to encode and decode filenames and enable os.fsencode().
Issue #9058: Remove assertions about INT_MAX in UnicodeDecodeError.
Issue #8941: Decoding big endian UTF-32 data in UCS-2 builds could crash the interpreter with characters outside the Basic Multilingual Plane (higher than 0x10000).
Issue #8950: (See also issue #5080). Py_ArgParse*() functions now raise TypeError instead of giving a DeprecationWarning when a float is parsed using the ‘L’ code (for long long). (All other integer codes already raise TypeError in this case.)
Issue #8922: Normalize the encoding name in PyUnicode_AsEncodedString() to enable shortcuts for upper case encoding name. Add also a shortcut for “iso-8859-1” in PyUnicode_AsEncodedString() and PyUnicode_Decode().
Issue #8838: Remove codecs.charbuffer_encode() function. The buffer protocol doesn’t support “char buffer” anymore in Python 3.
Issue #8339: Remove “t#” format of PyArg_Parse*() functions, use “s#” or “s*” instead. codecs.charbuffer_encode() now accepts modifiable buffer objects like bytearray.
Issue #8837: Remove “O?” format of PyArg_Parse*() functions. The format is no used anymore and it was never documented.
In str.format(), raise a ValueError when indexes to arguments are too large.
Issue #2844: Make int(‘42’, n) consistently raise ValueError for invalid integers n (including n = -909).
Issue #8188: Introduce a new scheme for computing hashes of numbers (instances of int, float, complex, decimal.Decimal and fractions.Fraction) that makes it easy to maintain the invariant that hash(x) == hash(y) whenever x and y have equal value.
Issue #8748: Fix two issues with comparisons between complex and integer objects. (1) The comparison could incorrectly return True in some cases (2**53+1 == complex(2**53) == 2**53), breaking transitivity of equality. (2) The comparison raised an OverflowError for large integers, leading to unpredictable exceptions when combining integers and complex objects in sets or dicts.
Issue #8766: Initialize _warnings module before importing the first module. Fix a crash if an empty directory called “encodings” exists in sys.path.
Issue #8589: Decode PYTHONWARNINGS environment variable with the file system encoding and surrogateescape error handler instead of the locale encoding to be consistent with os.environ. Add PySys_AddWarnOptionUnicode() function.
PyObject_Dump() encodes unicode objects to utf8 with backslashreplace (instead of strict) error handler to escape surrogates.
Issue #8715: Create PyUnicode_EncodeFSDefault() function: Encode a Unicode object to Py_FileSystemDefaultEncoding with the “surrogateescape” error handler, and return bytes. If Py_FileSystemDefaultEncoding is not set, fall back to UTF-8.
Enable shortcuts for common encodings in PyUnicode_AsEncodedString() for any error handler, not only the default error handler (strict).
Issue #8610: Load file system codec at startup, and display a fatal error on failure. Set the file system encoding to utf-8 (instead of None) if getting the locale encoding failed, or if nl_langinfo(CODESET) function is missing.
PyFile_FromFd() uses PyUnicode_DecodeFSDefault() instead of PyUnicode_FromString() to support surrogates in the filename and use the right encoding.
Issue #7507: Quote ”!” in pipes.quote(); it is special to some shells.
PyUnicode_DecodeFSDefaultAndSize() uses surrogateescape error handler.
Issue #8419: Prevent the dict constructor from accepting non-string keyword arguments.
Issue #8124: PySys_WriteStdout() and PySys_WriteStderr() don’t execute indirectly Python signal handlers anymore because mywrite() ignores exceptions (KeyboardInterrupt).
Issue #8092: Fix PyUnicode_EncodeUTF8() to support error handler producing unicode string (eg. backslashreplace).
Issue #8485: PyUnicode_FSConverter() doesn’t accept byteearray objects anymore, you have to convert your bytearray filenames to bytes.
Issue #7332: Remove the 16KB stack-based buffer in PyMarshal_ReadLastObjectFromFile, which doesn’t bring any noticeable benefit compared to the dynamic memory allocation fallback. Patch by Charles-François Natali.
Issue #8417: Raise an OverflowError when an integer larger than sys.maxsize is passed to bytes or bytearray.
Issue #7301: Add environment variable $PYTHONWARNINGS.
Issue #8329: Don’t return the same lists from select.select when no fds are changed.
Issue #8259: 1L << (2**31) no longer produces an ‘outrageous shift error’ on 64-bit machines. The shift count for either left or right shift is permitted to be up to sys.maxsize.
Ensure that tokenization of identifiers is not affected by locale.
Issue #1222585: Added LDCXXSHARED for C++ support. Patch by Arfrever.
Raise a TypeError when trying to delete a T_STRING_INPLACE struct member.
Issue #8211: Save/restore CFLAGS around AC_PROG_CC in configure.in, in case it is set.
Issue #8226: sys.setfilesystemencoding() raises a LookupError if the encoding is unknown.
Issue #1583863: A str subclass can now override the __str__ method.
Issue #8014: Setting a T_UINT or T_PYSSIZET attribute of an object with PyMemberDefs could produce an internal error; raise TypeError instead.
Issue #7845: Rich comparison methods on the complex type now return NotImplemented rather than raising a TypeError when comparing with an incompatible type; this allows user-defined classes to implement their own comparisons with complex.
Issue #3137: Don’t ignore errors at startup, especially a keyboard interrupt (SIGINT). If an error occurs while importing the site module, the error is printed and Python exits. Initialize the GIL before importing the site module.
Issue #7173: Generator finalization could invalidate sys.exc_info().
Issue #7544: Preallocate thread memory before creating the thread to avoid a fatal error in low memory condition.
Issue #7820: The parser tokenizer restores all bytes in the right if the BOM check fails.
Handle errors from looking up __prepare__ correctly.
Issue #5939: Add additional runtime checking to ensure a valid capsule in Modules/_ctypes/callproc.c.
Issue #7309: Fix unchecked attribute access when converting UnicodeEncodeError, UnicodeDecodeError, and UnicodeTranslateError to strings.
Issue #6902: Fix problem with built-in types format incorrectly with 0 padding.
Issue #7988: Fix default alignment to be right aligned for complex.__format__. Now it matches other numeric types.
Issue #5988: Remove deprecated functions PyOS_ascii_formatd, PyOS_ascii_strtod, and PyOS_ascii_atof. Use PyOS_double_to_string and PyOS_string_to_double instead. See issue #5835 for the original deprecations.
Issue #7385: Fix a crash in MemoryView_FromObject when PyObject_GetBuffer fails. Patch by Florent Xicluna.
Issue #7788: Fix an interpreter crash produced by deleting a list slice with very large step value.
Issue #7766: Change sys.getwindowsversion() return value to a named tuple and add the additional members returned in an OSVERSIONINFOEX structure. The new members are service_pack_major, service_pack_minor, suite_mask, and product_type.
Issue #7561: Operations on empty bytearrays (such as int(bytearray())) could crash in many places because of the PyByteArray_AS_STRING() macro returning NULL. The macro now returns a statically allocated empty string instead.
Issue #6690: Optimize the bytecode for expressions such as x in {1, 2, 3}, where the right hand operand is a set of constants, by turning the set into a frozenset and pre-building it as a constant. The comparison operation is made against the constant instead of building a new set each time it is executed (a similar optimization already existed which turned a list of constants into a pre-built tuple). Patch and additional tests by Dave Malcolm.
Issue #7622: Improve the split(), rsplit(), splitlines() and replace() methods of bytes, bytearray and unicode objects by using a common implementation based on stringlib’s fast search. Patch by Florent Xicluna.
Issue #7632: Fix various str -> float conversion bugs present in 2.7 alpha 2, including: (1) a serious ‘wrong output’ bug that could occur for long (> 40 digit) input strings, (2) a crash in dtoa.c that occurred in debug builds when parsing certain long numeric strings corresponding to subnormal values, (3) a memory leak for some values large enough to cause overflow, and (4) a number of flaws that could lead to incorrectly rounded results.
The __complex__ method is now looked up on the class of instances to make it consistent with other special methods.
Issue #7462: Implement the stringlib fast search algorithm for the rfind, rindex, rsplit and rpartition methods. Patch by Florent Xicluna.
Issue #7604: Deleting an unset slotted attribute did not raise an AttributeError.
Issue #7534: Fix handling of IEEE specials (infinities, nans, negative zero) in ** operator. The behaviour now conforms to that described in C99 Annex F.
Issue #1811: improve accuracy and cross-platform consistency for true division of integers: the result of a/b is now correctly rounded for ints a and b (at least on IEEE 754 platforms), and in particular does not depend on the internal representation of an int.
Issue #6834: replace the implementation for the ‘python’ and ‘pythonw’ executables on OSX.
These executables now work properly with the arch(1) command: arch -ppc python will start a universal binary version of python in PPC mode (unlike previous releases).
Issue #7466: Segmentation fault when the garbage collector is called in the middle of populating a tuple. Patch by Florent Xicluna.
Issue #7419: setlocale() could crash the interpreter on Windows when called with invalid values.
Issue #6077: On Windows, files opened with tempfile.TemporaryFile in “wt+” mode would appear truncated on the first ‘0x1a’ byte (aka. Ctrl+Z).
Issue #7085: Fix crash when importing some extensions in a thread on MacOSX 10.6.
Issue #1757126: Fix the cyrillic-asian alias for the ptcp154 encoding.
Issue #6970: Remove redundant calls when comparing objects that don’t implement the relevant rich comparison methods.
Issue #7298: Fixes for range and reversed(range(...)). Iteration over range(a, b, c) incorrectly gave an empty iterator when a, b and c fit in C long but the length of the range did not. Also fix several cases where reversed(range(a, b, c)) gave wrong results, and fix a refleak for reversed(range(a, b, c)) with large arguments.
Issue #7244: itertools.izip_longest() no longer ignores exceptions raised during the formation of an output tuple.
Issue #3297: On wide unicode builds, do not split unicode characters into surrogates.
Remove length limitation when constructing a complex number from a string.
Issue #1087418: Boost performance of bitwise operations for longs.
Support for AtheOS has been completely removed from the code base. It was disabled since Python 3.0.
Support for several legacy threading libraries has been disabled. These libraries are: Mach C threads, SunOS LWP, GNU pth, Irix threads. Support code will be entirely removed in 3.3.
Support for OSF* has been disabled. If nobody stands up, support will be removed in 3.3. See <http://bugs.python.org/issue8606>.
Peephole constant folding had missed UNARY_POSITIVE.
Issue #1722344: threading._shutdown() is now called in Py_Finalize(), which fixes the problem of some exceptions being thrown at shutdown when the interpreter is killed. Patch by Adam Olsen.
Issue #7147: Remove support for compiling Python without complex number support.
Issue #7120: logging: Removed import of multiprocessing which is causing crash in GAE.
Issue #1754094: Improve the stack depth calculation in the compiler. There should be no other effect than a small decrease in memory use. Patch by Christopher Tur Lesniewski-Laas.
Issue #7065: Fix a crash in bytes.maketrans and bytearray.maketrans when using byte values greater than 127. Patch by Derk Drukker.
Issue #1571184: The Unicode database contains properties for more characters. The tables for code points representing numeric values, white spaces or line breaks are now generated from the official Unicode Character Database files, and include information from the Unihan.txt file.
Issue #7019: Raise ValueError when unmarshalling bad long data, instead of producing internally inconsistent Python longs.
Issue #6990: Fix threading.local subclasses leaving old state around after a reference cycle GC which could be recycled by new locals.
Issue #5460: Fix an ambiguity in the grammar.
Issue #1766304: Improve performance of membership tests on range objects.
Issue #6713: Improve performance of integer -> string conversions.
Issue #6846: Fix bug where bytearray.pop() returns negative integers.
Issue #6750: A text file opened with io.open() could duplicate its output when writing from multiple threads at the same time.
Issue #6707: dir() on an uninitialized module caused a crash.
Issue #6540: Fixed crash for bytearray.translate() with invalid parameters.
Issue #6573: set.union() stopped processing inputs if an instance of self occurred in the argument chain.
Issue #6070: On posix platforms import no longer copies the execute bit from the .py file to the .pyc file if it is set.
Issue #1616979: Added the cp720 (Arabic DOS) encoding.
Issue #6428: Since Python 3.0, the __bool__ method must return a bool object, and not an int. Fix the corresponding error message, and the documentation.
The deprecated PyCObject has been removed.
Issue #6347: Include inttypes.h as well as stdint.h in pyport.h. This fixes a build failure on HP-UX: int32_t and uint32_t are defined in inttypes.h instead of stdint.h on that platform.
Issue #6373: Fixed a SystemError when encoding with the latin-1 codec and the ‘surrogateescape’ error handler, a string which contains unpaired surrogates.
Issue #4856: Remove checks for win NT.
Issue #6687: PyBytes_FromObject() no longer accepts an integer as its argument to construct a null-initialized bytes object.
Issue #1023290: Add from_bytes() and to_bytes() methods to integers. These methods allow the conversion of integers to bytes, and vice-versa.
Issue #7382: Fix bug in bytes.__getnewargs__ that prevented bytes instances from being copied with copy.copy(), and bytes subclasses from being pickled properly.
Code objects now support weak references.
Issue #7072: isspace(0xa0) is true on Mac OS X.
Issue #8084: PEP 370 now conforms to system conventions for framework builds on MacOS X. That is, “python setup.py install –user” will install into “~/Library/Python/2.7” instead of “~/.local”.
In pdb, when Ctrl-C is entered while defining commands for a breakpoint, the old commands are restored.
For traceback debugging, the pdb listing now also shows the locations where the exception was originally (re)raised, if it differs from the last line executed (e.g. in case of finally clauses).
The pdb command “source” has been added. It displays the source code for a given object, if possible.
The pdb command “longlist” has been added. It displays the whole source code for the current function.
Issue #1503502: Make pdb.Pdb easier to subclass by putting message and error output into methods.
Issue #809887: Make the output of pdb’s breakpoint deletions more consistent; emit a message when a breakpoint is enabled or disabled.
Issue #5294: Fix the behavior of pdb’s “continue” command when called in the top-level debugged frame.
Issue #5727: Restore the ability to use readline when calling into pdb in doctests.
Issue #6719: In pdb, do not stop somewhere in the encodings machinery if the source file to be debugged is in a non-builtin encoding.
Issue #8048: Prevent doctests from failing when sys.displayhook has been reassigned.
Issue #8015: In pdb, do not crash when an empty line is entered as a breakpoint command.
In pdb, allow giving a line number to the “until” command.
Issue #1437051: For pdb, allow “continue” and related commands in .pdbrc files. Also, add a command-line option “-c” that runs a command as if given in .pdbrc.
Issue #4179: In pdb, allow “list .” as a command to return to the currently debugged line.
Issue #4108: In urllib.robotparser, if there are multiple User-agent: * entries, consider the first one.
Issue #6630: Allow customizing regex flags when subclassing the string.Template class.
Issue #9411: Allow specifying an encoding for config files in the configparser module.
Issue #1682942: Improvements to configparser: support alternate delimiters, alternate comment prefixes and empty lines in values.
Issue #9354: Provide getsockopt() in asyncore’s file_wrapper.
Issue #8966: ctypes: Remove implicit bytes-unicode conversion.
Issue #9378: python -m pickle <pickle file> will now load and display the first object in the pickle file.
Issue #4770: Restrict binascii module to accept only bytes (as specified). And fix the email package to encode to ASCII instead of raw-unicode-escape before ASCII-to-binary decoding.
Issue #9384: python -m tkinter will now display a simple demo applet.
The default size of the re module’s compiled regular expression cache has been increased from 100 to 500 and the cache replacement policy has changed from simply clearing the entire cache on overflow to forgetting the least recently used cached compiled regular expressions. This is a performance win for applications that use a lot of regular expressions and limits the impact of the performance hit anytime the cache is exceeded.
Issue #7113: Speed up loading in configparser. Patch by Łukasz Langa.
Issue #9032: XML-RPC client retries the request on EPIPE error. The EPIPE error occurs when the server closes the socket and the client sends a big XML-RPC request.
Issue #4629: getopt raises an error if an argument ends with “=”, whereas getopt doesn’t accept a value (eg. –help= is rejected if getopt uses [‘help=’] long options).
Issue #7989: Added pure python implementation of the datetime module. The C module is renamed to _datetime and if available, overrides all classes defined in datetime with fast C impementation. Python implementation is based on the original python prototype for the datetime module by Tim Peters with minor modifications by the PyPy project. The test suite now tests datetime module with and without _datetime acceleration using the same test cases.
Issue #7895: platform.mac_ver() no longer crashes after calling os.fork().
Issue #9323: Fixed a bug in trace.py that resulted in loosing the name of the script being traced. Patch by Eli Bendersky.
Issue #9282: Fixed –listfuncs option of trace.py. Thanks Eli Bendersky for the patch.
Issue #3704: http.cookiejar was not properly handling URLs with a / in the parameters.
Issue #9268: pickletools.dis() now has an optional annotate argument which controls printing of opcode descriptions in dis() output.
Issue #1555570: email no longer inserts extra blank lines when a rn combo crosses an 8192 byte boundary.
Issue #9243: Fix sndhdr module and add unit tests, contributed by James Lee.
ast.literal_eval() now allows byte literals.
Issue #9137: Fix issue in MutableMapping.update, which incorrectly treated keyword arguments called ‘self’ or ‘other’ specially.
ast.literal_eval() now allows set literals.
Issue #9164: Ensure that sysconfig handles duplicate -arch flags in CFLAGS.
Issue #7646: The fnmatch pattern cache no longer grows without bound.
Issue #9136: Fix ‘dictionary changed size during iteration’ RuntimeError produced when profiling the decimal module. This was due to a dangerous iteration over ‘locals()’ in Context.__init__.
Fix extreme speed issue in Decimal.pow when the base is an exact power of 10 and the exponent is tiny (for example, Decimal(10) ** Decimal('1e-999999999')).
Issue #9186: Fix math.log1p(-1.0) to raise ValueError, not OverflowError.
Issue #9130: Fix validation of relative imports in parser module.
Issue #9128: Fix validation of class decorators in parser module.
Issue #9094: python -m pickletools will now disassemble pickle files listed in the command line arguments. See output of python -m pickletools -h for more details.
Issue #5468: urlencode to handle bytes type and other encodings in its query parameter. Patch by Dan Mahn.
Issue #7673: Fix security vulnerability (CVE-2010-2089) in the audioop module, ensure that the input string length is a multiple of the frame size.
Issue #6507: Accept source strings in dis.dis(). Original patch by Daniel Urban.
Issue #7829: Clearly document that the dis module is exposing an implementation detail that is not stable between Python VMs or releases.
Issue #6589: cleanup asyncore.socket_map in case smtpd.SMTPServer constructor raises an exception.
Issue #9110: Addition of ContextDecorator to contextlib, for creating APIs that act as both context managers and decorators. contextmanager changes to use ContextDecorator.
Implement importlib.abc.SourceLoader and deprecate PyLoader and PyPycLoader for removal in Python 3.4.
Issue #9064: pdb’s “up” and “down” commands now accept an optional argument giving the number of frames to go.
Issue #9018: os.path.normcase() now raises a TypeError if the argument is not str or bytes.
Issue #9075: In the ssl module, remove the setting of a debug flag on an OpenSSL structure.
Issue #8682: The ssl module now temporary increments the reference count of a socket object got through PyWeakref_GetObject, so as to avoid possible deallocation while the object is still being used.
Issue #1368368: FancyURLOpener class changed to throw an Exception on wrong password instead of presenting an interactive prompt. Older behavior can be obtained by passing retry=True to http_error_xxx methods of FancyURLOpener.
Issue #8720: Fix regression caused by fix for #4050 by making getsourcefile smart enough to find source files in the linecache.
Issue #5610: feedparser no longer eats extra characters at the end of a body part if the body part ends with a \r\n.
Issue #8986: math.erfc was incorrectly raising OverflowError for values between -27.3 and -30.0 on some platforms.
Issue #8784: Set tarfile default encoding to ‘utf-8’ on Windows.
Issue #8966: If a ctypes structure field is an array of c_char, convert its value to bytes instead of str (as done for c_char and c_char_p).
Issue #8188: Comparisons between Decimal and Fraction objects are now permitted, returning a result based on the exact numerical values of the operands. This builds on issue #2531, which allowed Decimal-to-float comparisons; all comparisons involving numeric types (bool, int, float, complex, Decimal, Fraction) should now act as expected.
Issue #8897: Fix sunau module, use bytes to write the header. Patch written by Thomas Jollans.
Issue #8899: time.struct_time now has class and attribute docstrings.
Issue #6470: Drop UNC prefix in FixTk.
Issue #4768: base64 encoded email body parts were incorrectly stored as binary strings. They are now correctly converted to strings.
Issue #8833: tarfile created hard link entries with a size field != 0 by mistake.
Charset.body_encode now correctly handles base64 encoding by encoding with the output_charset before calling base64mime.encode. Passes the tests from 2.x issue #1368247.
Issue #8845: sqlite3 Connection objects now have a read-only in_transaction attribute that is True iff there are uncommitted changes.
Issue #1289118: datetime.timedelta objects can now be multiplied by float and divided by float and int objects. Results are rounded to the nearest multiple of timedelta.resolution with ties resolved using round-half-to-even method.
Issue #7150: Raise OverflowError if the result of adding or subtracting timedelta from date or datetime falls outside of the MINYEAR:MAXYEAR range.
Issue #8806: add SSL contexts support to ftplib.
Issue #4769: Fix main() function of the base64 module, use sys.stdin.buffer and sys.stdout.buffer (instead of sys.stdin and sys.stdout) to use the bytes API.
Issue #8770: Now sysconfig displays information when it’s called as a script. Initial idea by Sridhar Ratnakumar.
Issue #6662: Fix parsing of malformatted charref (&#bad;), patch written by Fredrik Håård.
Issue #8540: Decimal module: rename the Context._clamp attribute to Context.clamp and make it public. This is useful in creating contexts that correspond to the decimal interchange formats specified in IEEE 754.
Issue #6268: Fix seek() method of codecs.open(), don’t read or write the BOM twice after seek(0). Fix also reset() method of codecs, UTF-16, UTF-32 and StreamWriter classes.
Issue #3798: sys.exit(message) writes the message to sys.stderr file, instead of the C file stderr, to use stderr encoding and error handler.
Issue #8782: Add a trailing newline in linecache.updatecache to the last line of files without one.
Issue #8729: Return NotImplemented from collections.Mapping.__eq__ when comparing to a non-mapping.
Issue #8774: tabnanny uses the encoding cookie (#coding:...) to use the correct encoding.
Issue #4870: Add an options attribute to SSL contexts, as well as several OP_* constants to the ssl module. This allows to selectively disable protocol versions, when used in combination with PROTOCOL_SSLv23.
Issue #8759: Fixed user paths in sysconfig for posix and os2 schemes.
Issue #8663: distutils.log emulates backslashreplace error handler. Fix compilation in a non-ASCII directory if stdout encoding is ASCII (eg. if stdout is not a TTY).
Issue #8513: os.get_exec_path() supports b’PATH’ key and bytes value. subprocess.Popen() and os._execvpe() support bytes program name. Add os.supports_bytes_environ flag: True if the native OS type of the environment is bytes (eg. False on Windows).
Issue #8633: tarfile is now able to read and write archives with “raw” binary pax headers as described in POSIX.1-2008.
Issue #1285086: Speed up urllib.parse functions: quote, quote_from_bytes, unquote, unquote_to_bytes.
Issue #8688: Distutils now recalculates MANIFEST everytime.
Issue #8477: ssl.RAND_egd() and ssl._test_decode_cert() support str with surrogates and bytes for the filename.
Issue #8550: Add first class SSLContext objects to the ssl module.
Issue #8681: Make the zlib module’s error messages more informative when the zlib itself doesn’t give any detailed explanation.
The audioop module now supports sound fragments of length greater than 2**31 bytes on 64-bit machines, and is PY_SSIZE_T_CLEAN.
Issue #4972: Add support for the context manager protocol to the ftplib.FTP class.
Issue #8664: In py_compile, create __pycache__ when the compiled path is given.
Issue #8514: Add os.fsencode() function (Unix only): encode a string to bytes for use in the file system, environment variables or the command line.
Issue #8571: Fix an internal error when compressing or decompressing a chunk larger than 1GB with the zlib module’s compressor and decompressor objects.
Issue #8603: Support bytes environmental variables on Unix: Add os.environb mapping and os.getenvb() function. os.unsetenv() encodes str argument to the file system encoding with the surrogateescape error handler (instead of utf8/strict) and accepts bytes. posix.environ keys and values are now bytes.
Issue #8573: asyncore _strerror() function might throw ValueError.
Issue #8483: asyncore.dispatcher’s __getattr__ method produced confusing error messages when accessing undefined class attributes because of the cheap inheritance with the underlying socket object. The cheap inheritance has been deprecated.
Issue #4265: shutil.copyfile() was leaking file descriptors when disk fills. Patch by Tres Seaver.
Issue #8390: tarfile uses surrogateescape as the default error handler (instead of replace in read mode or strict in write mode).
Issue #7755: Use an unencumbered audio file for tests.
Issue #8621: uuid.uuid4() returned the same sequence of values in the parent and any children created using os.fork on MacOS X 10.6.
Issue #8567: Fix precedence of signals in Decimal module: when a Decimal operation raises multiple signals and more than one of those signals is trapped, the specification determines the order in which the signals should be handled. In many cases this order wasn’t being followed, leading to the wrong Python exception being raised.
Issue #7865: The close() method of io objects should not swallow exceptions raised by the implicit flush(). Also qensure that calling close() several times is supported. Patch by Pascal Chambon.
Issue #4687: Fix accuracy of garbage collection runtimes displayed with gc.DEBUG_STATS.
Issue #8354: The siginterrupt setting is now preserved for all signals, not just SIGCHLD.
Issue #7192: webbrowser.get(“firefox”) now works on Mac OS X, as does webbrowser.get(“safari”).
Issue #8464: tarfile no longer creates files with execute permissions set when mode=”w|” is used.
Issue #7834: Fix connect() of Bluetooth L2CAP sockets with recent versions of the Linux kernel. Patch by Yaniv Aknin.
Issue #8295: Added shutil.unpack_archive.
Issue #6312: Fixed http HEAD request when the transfer encoding is chunked. It should correctly return an empty response now.
Issue #8546: Reject None given as the buffering argument to _pyio.open.
Issue #8549: Fix compiling the _ssl extension under AIX. Patch by Sridhar Ratnakumar.
Issue #6656: fix locale.format_string to handle escaped percents and mappings.
Issue #2302: Fix a race condition in SocketServer.BaseServer.shutdown, where the method could block indefinitely if called just before the event loop started running. This also fixes the occasional freezes witnessed in test_httpservers.
Issue #8524: When creating an SSL socket, the timeout value of the original socket wasn’t retained (instead, a socket with a positive timeout would be turned into a non-blocking SSL socket).
Issue #5103: SSL handshake would ignore the socket timeout and block indefinitely if the other end didn’t respond.
The do_handshake() method of SSL objects now adjusts the blocking mode of the SSL structure if necessary (as other methods already do).
Issue #8391: os.execvpe() and os.getenv() supports unicode with surrogates and bytes strings for environment keys and values.
Issue #8467: Pure Python implementation of subprocess encodes the error message using surrogatepass error handler to support surrogates in the message.
Issue #8468: bz2.BZ2File() accepts str with surrogates and bytes filenames.
Issue #8451: Syslog module now uses basename(sys.argv[0]) instead of the string “python” as the ident. openlog() arguments are all optional and keywords.
Issue #8108: Fix the unwrap() method of SSL objects when the socket has a non-infinite timeout. Also make that method friendlier with applications wanting to continue using the socket in clear-text mode, by disabling OpenSSL’s internal readahead. Thanks to Darryl Miles for guidance.
Issue #8496: make mailcap.lookup() always return a list, rather than an iterator. Patch by Gregory Nofi.
Issue #8195: Fix a crash in sqlite Connection.create_collation() if the collation name contains a surrogate character.
Issue #8484: Load all ciphers and digest algorithms when initializing the _ssl extension, such that verification of some SSL certificates doesn’t fail because of an “unknown algorithm”.
Issue #6547: Added the ignore_dangling_symlinks option to shutil.copytree.
Issue #1540112: Now allowing the choice of a copy function in shutil.copytree.
Issue #4814: timeout parameter is now applied also for connections resulting from PORT/EPRT commands.
Issue #8463: added missing reference to bztar in shutil’s documentation.
Issue #7154: urllib.request can now detect the proxy settings on OSX 10.6 (as long as the user didn’t specify ‘automatic proxy configuration’).
Issue #3817: ftplib.FTP.abort() method now considers 225 a valid response code as stated in RFC-959 at chapter 5.4.
Issue #8394: _ctypes.dlopen() accepts bytes, bytearray and str with surrogates.
Issue #850728: Add a timeout parameter to the acquire() method of threading.Semaphore objects. Original patch by Torsten Landschoff.
Issue #8322: Add a ciphers argument to SSL sockets, so as to change the available cipher list. Helps fix test_ssl with OpenSSL 1.0.0.
Issue #8393: subprocess accepts bytes, bytearray and str with surrogates for the current working directory.
Issue #7606: XML-RPC traceback stored in X-traceback is now encoded to ASCII using backslashreplace error handler.
Issue #8412: os.system() now accepts bytes, bytearray and str with surrogates.
Issue #2987: RFC2732 support for urlparse (IPv6 addresses). Patch by Tony Locke and Hans Ulrich Niedermann.
Issue #5277: Fix quote counting when parsing RFC 2231 encoded parameters.
Issue #7316: The acquire() method of lock objects in the threading module now takes an optional timeout argument in seconds. Timeout support relies on the system threading library, so as to avoid a semi-busy wait loop.
Issue #8383: pickle and pickletools use surrogatepass error handler when encoding unicode as utf8 to support lone surrogates and stay compatible with Python 2.x and 3.x.
Issue #7585: difflib context and unified diffs now place a tab between filename and date, conforming to the ‘standards’ they were originally designed to follow. This improves compatibility with patch tools.
Issue #7472: Fixed typo in email.encoders module; messages using ISO-2022 character sets will now consistently use a Content-Transfer-Encoding of 7bit rather than sometimes being marked as 8bit.
Issue #8375: test_distutils now checks if the temporary directory are still present before it cleans them.
Issue #8374: Update the internal alias table in the locale module to cover recent locale changes and additions.
Issue #8321: Give access to OpenSSL version numbers from the ssl module, using the new attributes ssl.OPENSSL_VERSION, ssl.OPENSSL_VERSION_INFO and ssl.OPENSSL_VERSION_NUMBER.
Add functools.total_ordering() and functools.cmp_to_key().
Issue #8257: The Decimal construct now accepts a float instance directly, converting that float to a Decimal of equal value:
>>> Decimal(1.1)
Decimal('1.100000000000000088817841970012523233890533447265625')
Issue #8294: The Fraction constructor now accepts Decimal and float instances directly.
Issue #7279: Comparisons involving a Decimal signaling NaN now signal InvalidOperation instead of returning False. (Comparisons involving a quiet NaN are unchanged.) Also, Decimal quiet NaNs are now hashable; Decimal signaling NaNs remain unhashable.
Issue #2531: Comparison operations between floats and Decimal instances now return a result based on the numeric values of the operands; previously they returned an arbitrary result based on the relative ordering of id(float) and id(Decimal). See also issue #8188, which adds Decimal-to-Fraction comparisons.
Added a subtract() method to collections.Counter().
Issue #8233: When run as a script, py_compile.py optionally takes a single argument - which tells it to read files to compile from stdin. Each line is read on demand and the named file is compiled immediately. (Original patch by Piotr Ożarowski).
Backwards incompatible change: Unicode codepoints line tabulation (0x0B) and form feed (0x0C) are now considered linebreaks, as specified in Unicode Standard Annex #14. See issue #7643. http://www.unicode.org/reports/tr14/
Comparisons using one of <, <=, >, >= between a complex instance and a Fractions instance now raise TypeError instead of returning True/False. This makes Fraction <=> complex comparisons consistent with int <=> complex, float <=> complex, and complex <=> complex comparisons.
Issue #8139: ossaudiodev didn’t initialize its types properly, therefore some methods (such as oss_mixer_device.fileno()) were not available. Initial patch by Bertrand Janin.
Issue #8205: Remove the “Modules” directory from sys.path when Python is running from the build directory (POSIX only).
Issue #7512: shutil.copystat() could raise an OSError when the filesystem didn’t support chflags() (for example ZFS under FreeBSD). The error is now silenced.
Issue #7860: platform.uname now reports the correct ‘machine’ type when Python is running in WOW64 mode on 64 bit Windows.
Issue #3890, #8222: Fix recv() and recv_into() on non-blocking SSL sockets. Also, enable the SSL_MODE_AUTO_RETRY flag on SSL sockets, so that blocking reads and writes are always retried by OpenSSL itself.
Issue #4282: Fix the main function of the profile module for a non-ASCII script, open the file in binary mode and not in text mode with the default (utf8) encoding.
Issue #8179: Fix macpath.realpath() on a non-existing path.
Issue #8024: Update the Unicode database to 5.2.
Issue #8168: py_compile now handles files with utf-8 BOMS.
tokenize.detect_encoding now returns 'utf-8-sig' when a UTF-8 BOM is detected.
Issue #6716/2: Backslash-replace error output in compilall.
Issue #4961: Inconsistent/wrong result of askyesno function in tkMessageBox with Tcl/Tk-8.5.
Issue #8140: extend compileall to compile single files. Add -i option.
Issue #7356: ctypes.util: Make parsing of ldconfig output independent of the locale.
The internals of the subprocess module on POSIX systems have been replaced by an extension module (_posixsubprocess) so that the fork()+exec() can be done safely without the possibility of deadlock in multithreaded applications.
subprocess.Popen now has restore_signals and start_new_session features. The default of restore_signals=True is a new behavior compared to earlier Python versions. This means that signals such as SIGPIPE are not ignored by default in subprocesses launched by Python (Issue #1652).
Issue #6472: The xml.etree package is updated to ElementTree 1.3. The cElementTree module is updated too.
Issue #7774: Set sys.executable to an empty string if argv[0] has been set to an non existent program name and Python is unable to retrieve the real program name.
Issue #7880: Fix sysconfig when the python executable is a symbolic link.
Issue #6509: fix re.sub to work properly when the pattern, the string, and the replacement were all bytes. Patch by Antoine Pitrou.
The sqlite3 module was updated to pysqlite 2.6.0. This fixes several obscure bugs and allows loading SQLite extensions from shared libraries.
Issue #1054943: Fix unicodedata.normalize('NFC', text) for the Public Review Issue #29 (http://unicode.org/review/pr-29.html).
Issue #7494: fix a crash in _lsprof (cProfile) after clearing the profiler, reset also the pointer to the current pointer context.
Issue #7232: Add support for the context manager protocol to the TarFile class.
Issue #7250: Fix info leak of os.environ across multi-run uses of wsgiref.handlers.CGIHandler.
Issue #1729305: Fix doctest to handle encode error with “backslashreplace”.
Issue #691291: codecs.open() should not convert end of lines on reading and writing.
Issue #7869: logging: improved diagnostic for format-time errors.
Issue #7868: logging: added loggerClass attribute to Manager.
logging: Implemented PEP 391.
Issue #1537721: Add a writeheader() method to csv.DictWriter.
Issue #7959: ctypes callback functions are now registered correctly with the cycle garbage collector.
Issue #5801: removed spurious empty lines in wsgiref.
Issue #6666: fix bug in trace.py that applied the list of directories to be ignored only to the first file. Noted by Bogdan Opanchuk.
Issue #7597: curses.use_env() can now be called before initscr(). Noted by Kan-Ru Chen.
Issue #7310: fix the __repr__ of os.environ to show the environment variables.
Issue #7970: email.Generator.flatten now correctly flattens message/rfc822 messages parsed by email.Parser.HeaderParser.
Issue #7361: Importlib was not properly checking the number of bytes in bytecode file when it was less then 8 bytes.
Issue #7633: In the decimal module, Context class methods (with the exception of canonical and is_canonical) now accept instances of int and long wherever a Decimal instance is accepted, and implicitly convert that argument to Decimal. Previously only some arguments were converted.
Issue #7835: shelve should no longer produce mysterious warnings during interpreter shutdown.
Issue #2746: Don’t escape ampersands and angle brackets (“&”, “<”, “>”) in XML processing instructions and comments. These raw characters are allowed by the XML specification, and are necessary when outputting e.g. PHP code in a processing instruction. Patch by Neil Muller.
Issue #6233: ElementTree failed converting unicode characters to XML entities when they could’t be represented in the requested output encoding. Patch by Jerry Chen.
Issue #6003: add an argument to zipfile.Zipfile.writestr to specify the compression type.
Issue #4772: Raise a ValueError when an unknown Bluetooth protocol is specified, rather than fall through to AF_PACKET (in the socket module). Also, raise ValueError rather than TypeError when an unknown TIPC address type is specified. Patch by Brian Curtin.
Issue #6939: Fix file I/O objects in the io module to keep the original file position when calling truncate(). It would previously change the file position to the given argument, which goes against the tradition of ftruncate() and other truncation APIs. Patch by Pascal Chambon.
Issue #7610: Reworked implementation of the internal zipfile.ZipExtFile class used to represent files stored inside an archive. The new implementation is significantly faster and can be wrapped in a io.BufferedReader object for more speedups. It also solves an issue where interleaved calls to read() and readline() give wrong results. Patch by Nir Aides.
Issue #6963: Added “maxtasksperchild” argument to multiprocessing.Pool, allowing for a maximum number of tasks within the pool to be completed by the worker before that worker is terminated, and a new one created to replace it.
Issue #7792: Registering non-classes to ABCs raised an obscure error.
Issue #7785: Don’t accept bytes in FileIO.write().
Removed the functions ‘verify’ and ‘vereq’ from Lib/test/support.py.
Issue #7773: Fix an UnboundLocalError in platform.linux_distribution() when the release file is empty.
Issue #7561: Fix crashes when using bytearray objects with the posix module.
Issue #1670765: Prevent email.generator.Generator from re-wrapping headers in multipart/signed MIME parts, which fixes one of the sources of invalid modifications to such parts by Generator.
Issue #7703: Add support for the new buffer API to binascii.a2bhqx. Patch by Florent Xicluna, along with some additional tests.
Issue #7701: Fix crash in binascii.b2a_uu() in debug mode when given a 1-byte argument. Patch by Victor Stinner.
Issue #3299: Fix possible crash in the _sre module when given bad argument values in debug mode. Patch by Victor Stinner.
Issue #2846: Add support for gzip.GzipFile reading zero-padded files. Patch by Brian Curtin.
Issue #7681: Use floor division in appropiate places in the wave module.
Issue #5372: Drop the reuse of .o files in Distutils’ ccompiler (since Extension extra options may change the output without changing the .c file). Initial patch by Collin Winter.
Issue #7617: Make sure distutils.unixccompiler.UnixCCompiler recognizes gcc when it has a fully qualified configuration prefix. Initial patch by Arfrever.
Issue #7105: Make WeakKeyDictionary and WeakValueDictionary robust against the destruction of weakref’ed objects while iterating.
Issue #7455: Fix possible crash in cPickle on invalid input. Patch by Victor Stinner.
Issue #1628205: Socket file objects returned by socket.socket.makefile() now properly handles EINTR within the read, readline, write & flush methods. The socket.sendall() method now properly handles interrupted system calls.
Issue #7471: Improve the performance of GzipFile’s buffering mechanism, and make it implement the io.BufferedIOBase ABC to allow for further speedups by wrapping it in an io.BufferedReader. Patch by Nir Aides.
Issue #3972: http.client.HTTPConnection now accepts an optional source_address parameter to allow specifying where your connections come from.
socket.create_connection now accepts an optional source_address parameter.
Issue #5511: now zipfile.ZipFile can be used as a context manager. Initial patch by Brian Curtin.
Issue #7556: Make sure Distutils’ msvc9compile reads and writes the MSVC XML Manifest file in text mode so string patterns can be used in regular expressions.
Issue #7552: Removed line feed in the base64 Authorization header in the Distutils upload command to avoid an error when PyPI reads it. This occurs on long passwords. Initial patch by JP St. Pierre.
Issue #7231: urllib2 cannot handle https with proxy requiring auth. Patch by Tatsuhiro Tsujikawa.
Issue #4757: zlib.compress and other methods in the zlib module now raise a TypeError when given an str object (rather than a bytes-like object). Patch by Victor Stinner and Florent Xicluna.
Issue #7349: Make methods of file objects in the io module accept None as an argument where file-like objects (ie StringIO and BytesIO) accept them to mean the same as passing no argument.
Issue #7357: tarfile no longer suppresses fatal extraction errors by default.
Issue #5949: added check for correct lineends in input from IMAP server in imaplib.
Add count() and reverse() methods to collections.deque().
Fix variations of extending deques: d.extend(d) d.extendleft(d) d+=d
Issue #6986: Fix crash in the JSON C accelerator when called with the wrong parameter types. Patch by Victor Stinner.
Issue #7457: added a read_pkg_file method to distutils.dist.DistributionMetadata.
logging: Added optional secure parameter to SMTPHandler, to enable use of TLS with authentication credentials.
Issue #1923: Fixed the removal of meaningful spaces when PKG-INFO is generated in Distutils. Patch by Stephen Emslie.
Issue #4120: Drop reference to CRT from manifest when building extensions with msvc9compiler.
Issue #7333: The posix module gains an initgroups() function providing access to the initgroups(3) C library call on Unix systems which implement it. Patch by Jean-Paul Calderone.
Issue #7408: Fixed distutils.tests.sdist so it doesn’t check for group ownership when the group is not forced, because the group may be different from the user’s group and inherit from its container when the test is run.
Issue #4486: When an exception has an explicit cause, do not print its implicit context too. This affects the traceback module as well as built-in exception printing.
Issue #1515: Enable use of deepcopy() with instance methods. Patch by Robert Collins.
Issue #7403: logging: Fixed possible race condition in lock creation.
Issue #6845: Add restart support for binary upload in ftplib. The storbinary() method of FTP and FTP_TLS objects gains an optional rest argument. Patch by Pablo Mouzo.
Issue #5788: datetime.timedelta objects get a new total_seconds() method returning the total number of seconds in the duration. Patch by Brian Quinlan.
Issue #7133: SSL objects now support the new buffer API.
Issue #1488943: difflib.Differ() doesn’t always add hints for tab characters.
Issue #6123: tarfile now opens empty archives correctly and consistently raises ReadError on empty files.
Issue #7354: distutils.tests.test_msvc9compiler - dragfullwindows can be 2.
Issue #5037: Proxy the __bytes__ special method instead to __bytes__ instead of __str__.
Issue #7341: Close the internal file object in the TarFile constructor in case of an error.
Issue #7293: distutils.test_msvc9compiler is fixed to work on any fresh Windows box. Help provided by David Bolen.
Issue #2054: ftplib now provides an FTP_TLS class to do secure FTP using TLS or SSL. Patch by Giampaolo Rodola’.
Issue #7328: pydoc no longer corrupts sys.path when run with the ‘-m’ switch.
Issue #4969: The mimetypes module now reads the MIME database from the registry under Windows. Patch by Gabriel Genellina.
Issue #6816: runpy now provides a run_path function that allows Python code to execute file paths that refer to source or compiled Python files as well as zipfiles, directories and other valid sys.path entries that contain a __main__.py file. This allows applications that run other Python scripts to support the same flexibility as the CPython command line itself.
Issue #7318: multiprocessing now uses a timeout when it fails to establish a connection with another process, rather than looping endlessly. The default timeout is 20 seconds, which should be amply sufficient for local connections.
Issue #7197: Allow unittest.TextTestRunner objects to be pickled and unpickled. This fixes crashes under Windows when trying to run test_multiprocessing in verbose mode.
Issue #7893: unittest.TextTestResult is made public and a resultclass argument added to the TextTestRunner constructor allowing a different result class to be used without having to subclass.
Issue #7588: unittest.TextTestResult.getDescription now includes the test name in failure reports even if the test has a docstring.
Issue #3001: Add a C implementation of recursive locks which is used by default when instantiating a threading.RLock object. This makes recursive locks as fast as regular non-recursive locks (previously, they were slower by 10x to 15x).
Issue #7282: Fix a memory leak when an RLock was used in a thread other than those started through threading.Thread (for example, using _thread.start_new_thread()).
Issue #7187: Importlib would not silence the IOError raised when trying to write new bytecode when it was made read-only.
Issue #7264: Fix a possible deadlock when deallocating thread-local objects which are part of a reference cycle.
Issue #7211: Allow 64-bit values for the ident and data fields of kevent objects on 64-bit systems. Patch by Michael Broghton.
Issue #6896: mailbox.Maildir now invalidates its internal cache each time a modification is done through it. This fixes inconsistencies and test failures on systems with slightly bogus mtime behaviour.
Issue #7246 & Issue #7208: getpass now properly flushes input before reading from stdin so that existing input does not confuse it and lead to incorrect entry or an IOError. It also properly flushes it afterwards to avoid the terminal echoing the input afterwards on OSes such as Solaris.
Issue #7233: Fix a number of two-argument Decimal methods to make sure that they accept an int or long as the second argument. Also fix buggy handling of large arguments (those with coefficient longer than the current precision) in shift and rotate.
Issue #4750: Store the basename of the original filename in the gzip FNAME header as required by RFC 1952.
Issue #1180: Added a new global option to ignore ~/.pydistutils.cfg in Distutils.
Issue #7218: Fix test_site for win32, the directory comparison was done with an uppercase.
Issue #7205: Fix a possible deadlock when using a BZ2File object from several threads at once.
Issue #7077: logging: SysLogHandler now treats Unicode as per RFC 5424.
Issue #7099: Decimal.is_normal now returns True for numbers with exponent larger than emax.
Issue #7080: locale.strxfrm() raises a MemoryError on 64-bit non-Windows platforms, and assorted locale fixes by Derk Drukker.
Issue #5833: Fix extra space character in readline completion with the GNU readline library version 6.0.
Issue #6894: Fixed the issue urllib2 doesn’t respect “no_proxy” environment.
Issue #7086: Added TCP support to SysLogHandler, and tidied up some anachronisms in the code which were a relic of 1.5.2 compatibility.
Issue #7082: When falling back to the MIME ‘name’ parameter, the correct place to look for it is the Content-Type header.
Make tokenize.detect_coding() normalize utf-8 and iso-8859-1 variants like the builtin tokenizer.
Issue #7048: Force Decimal.logb to round its result when that result is too large to fit in the current precision.
Issue #6236, #6348: Fix various failures in the I/O library under AIX and other platforms, when using a non-gcc compiler. Patch by Derk Drukker.
Issue #4606: Passing ‘None’ if ctypes argtype is set to POINTER(...) does now always result in NULL.
Issue #5042: Structure sub-subclass does now initialize correctly with base class positional arguments.
Issue #6882: Import uuid creates zombies processes.
Issue #6635: Fix profiler printing usage message.
Issue #6856: Add a filter keyword argument to TarFile.add().
Issue #6888: pdb’s alias command was broken when no arguments were given.
Issue #6857: Default format() alignment should be ‘>’ for Decimal instances.
Issue #6795: int(Decimal(‘nan’)) now raises ValueError instead of returning NaN or raising InvalidContext. Also, fix infinite recursion in long(Decimal(‘nan’)).
Issue #6850: Fix bug in Decimal._parse_format_specifier for formats with no type specifier.
Issue #6239: ctypes.c_char_p return value must return bytes.
Issue #6838: Use a list to accumulate the value instead of repeatedly concatenating strings in http.client’s HTTPResponse._read_chunked providing a significant speed increase when downloading large files servend with a Transfer-Encoding of ‘chunked’.
Trying to import a submodule from a module that is not a package, ImportError should be raised, not AttributeError.
When the globals past to importlib.__import__() has __package__ set to None, fall back to computing what __package__ should be instead of giving up.
Raise a TypeError when the name of a module to be imported for importlib.__import__ is not a string (was raising an AttributeError before).
Allow the fromlist passed into importlib.__import__ to be any iterable.
Have importlib raise ImportError if None is found in sys.modules.
Issue #6054: Do not normalize stored pathnames in tarfile.
Issue #6794: Fix Decimal.compare_total and Decimal.compare_total_mag: NaN payloads are now ordered by integer value rather than lexicographically.
Issue #1356969: Add missing info methods in tix.HList.
Issue #1522587: New constants and methods for the tix.Grid widget.
Issue #1250469: Fix the return value of tix.PanedWindow.panes.
Issue #1119673: Do not override tkinter.Text methods when creating a ScrolledText.
Issue #6665: Fix fnmatch to properly match filenames with newlines in them.
Issue #1135: Add the XView and YView mix-ins to avoid duplicating the xview* and yview* methods.
Issue #6629: Fix a data corruption issue in the new I/O library, which could occur when writing to a BufferedRandom object (e.g. a file opened in “rb+” or “wb+” mode) after having buffered a certain amount of data for reading. This bug was not present in the pure Python implementation.
Issue #6622: Fix “local variable ‘secret’ referenced before assignment” bug in POP3.apop.
Issue #2715: Remove remnants of Carbon.File from binhex module.
Issue #6595: The Decimal constructor now allows arbitrary Unicode decimal digits in input, as recommended by the standard. Previously it was restricted to accepting [0-9].
Issue #6106: telnetlib.Telnet.process_rawq doesn’t handle default WILL/WONT DO/DONT correctly.
Issue #1424152: Fix for http.client, urllib.request to support SSL while working through proxy. Original patch by Christopher Li, changes made by Senthil Kumaran.
Add importlib.abc.ExecutionLoader to represent the PEP 302 protocol for loaders that allow for modules to be executed. Both importlib.abc.PyLoader and PyPycLoader inherit from this class and provide implementations in relation to other methods required by the ABCs.
importlib.abc.PyLoader did not inherit from importlib.abc.ResourceLoader like the documentation said it did even though the code in PyLoader relied on the abstract method required by ResourceLoader.
Issue #6431: Make Fraction type return NotImplemented when it doesn’t know how to handle a comparison without loss of precision. Also add correct handling of infinities and nans for comparisons with float.
Issue #6415: Fixed warnings.warn segfault on bad formatted string.
Issue #6358: The exit status of a command started with os.popen() was reported differently than it did with python 2.x.
Issue #6323: The pdb debugger did not exit when running a script with a syntax error.
Issue #3392: The subprocess communicate() method no longer fails in select() when file descriptors are large; communicate() now uses poll() when possible.
Issue #6369: Fix an RLE decompression bug in the binhex module.
Issue #6344: Fixed a crash of mmap.read() when passed a negative argument.
The deprecated function string.maketrans has been removed.
Issue #4005: Fixed a crash of pydoc when there was a zip file present in sys.path.
Issue #6218: io.StringIO and io.BytesIO instances are now picklable.
The os.get_exec_path() function to return the list of directories that will be searched for an executable when launching a subprocess was added.
Issue #7481: When a threading.Thread failed to start it would leave the instance stuck in initial state and present in threading.enumerate().
Issue #1068268: The subprocess module now handles EINTR in internal os.waitpid and os.read system calls where appropriate.
Issue #6729: Added ctypes.c_ssize_t to represent ssize_t.
Issue #6247: The argparse module has been added to the standard library.
Issue #8235: _socket: Add the constant SO_SETFIB. SO_SETFIB is a socket option available on FreeBSD 7.1 and newer.
Issue #9315: Fix for the trace module to record correct class name for tracing methods.
Release date: 27-June-2009
Release date: 13-June-2009
Release date: 2009-05-30
Release date: 2009-05-06
Issue #5914: Add new C API function PyOS_string_to_double, and deprecate PyOS_ascii_strtod and PyOS_ascii_atof.
Issue #3382: float.__format__, complex.__format__, and %-formatting no longer map ‘F’ to ‘f’. Because of issue #5859 (below), this only affects nan -> NAN and inf -> INF.
Issue #5799: ntpath (ie, os.path on Windows) fully supports UNC pathnames in all operations, including splitdrive, split, etc. splitunc() now issues a PendingDeprecation warning.
Issue #5920: For float.__format__, change the behavior with the empty presentation type (that is, not one of ‘e’, ‘f’, ‘g’, or ‘n’) to be like ‘g’ but with at least one decimal point and with a default precision of 12. Previously, the behavior the same but with a default precision of 6. This more closely matches str(), and reduces surprises when adding alignment flags to the empty presentation type. This also affects the new complex.__format__ in the same way.
Implement PEP 383, Non-decodable Bytes in System Character Interfaces.
Issue #5890: in subclasses of ‘property’ the __doc__ attribute was shadowed by classtype’s, even if it was None. property now inserts the __doc__ into the subclass instance __dict__.
Issue #4426: The UTF-7 decoder was too strict and didn’t accept some legal sequences. Patch by Nick Barnes and Victor Stinner.
Issue #3672: Reject surrogates in utf-8 codec; add surrogatepass error handler.
Issue #5883: In the io module, the BufferedIOBase and TextIOBase ABCs have received a new method, detach(). detach() disconnects the underlying stream from the buffer or text IO and returns it.
Issue #5859: Remove switch from ‘%f’ to ‘%g’-style formatting for floats with absolute value over 1e50. Also remove length restrictions for float formatting: ‘%.67f’ % 12.34 and ‘%.120e’ % 12.34 no longer raise an exception.
Issue #1588: Add complex.__format__. For example, format(complex(1, 2./3), ‘.5’) now produces a sensible result.
Issue #5864: Fix empty format code formatting for floats so that it never gives more than the requested number of significant digits.
Issue #5793: Rationalize isdigit / isalpha / tolower, etc. Includes new Py_ISDIGIT / Py_ISALPHA / Py_TOLOWER, etc. in pctypes.h.
Issue #5835: Deprecate PyOS_ascii_formatd.
Issue #4971: Fix titlecase for characters that are their own titlecase, but not their own uppercase.
Issue #5283: Setting __class__ in __del__ caused a segfault.
Issue #5816: complex(repr(z)) now recovers z exactly, even when z involves nans, infs or negative zeros.
Issue #3166: Make int -> float conversions correctly rounded.
Issue #1869 (and many duplicates): make round(x, n) correctly rounded for a float x, by using the decimal <-> binary conversions from Python/dtoa.c. As a consequence, (e.g.) round(x, 2) now consistently agrees with format(x, ‘.2f’).
Issue #5787: object.__getattribute__(some_type, “__bases__”) segfaulted on some builtin types.
Issue #5772: format(1e100, ‘<’) produces ‘1e+100’, not ‘1.0e+100’.
Issue #5515: str.format() type ‘n’ combined with commas and leading zeros no longer gives odd results with ints and floats.
Implement PEP 378, Format Specifier for Thousands Separator, for floats.
The str function switches to exponential notation at 1e11, not 1e12. This avoids printing 13 significant digits in situations where only 12 of them are correct. Example problem value: str(1e11 + 0.5). (This minor issue has existed in 2.x for a long time.)
Issue #1580: On most platforms, use a ‘short’ float repr: for a finite float x, repr(x) now outputs a string based on the shortest sequence of decimal digits that rounds to x. Previous behaviour was to output 17 significant digits and then strip trailing zeros. Another minor difference is that the new repr switches to exponential notation at 1e16 instead of the previous 1e17; this avoids misleading output in some cases.
There’s a new sys attribute sys.float_repr_style, which takes the value ‘short’ to indicate that we’re using short float repr, and ‘legacy’ if the short float repr isn’t available for one reason or another.
The float repr change involves incorporating David Gay’s ‘perfect rounding’ code into the Python core (it’s in Python/dtoa.c). As a secondary consequence, all string-to-float and float-to-string conversions (including all float formatting operations) will be correctly rounded on these platforms.
See issue #1580 discussions for details of platforms for which this change does not apply.
Issue #5759: float() didn’t call __float__ on str subclasses.
The string.maketrans() function is deprecated; there is a new static method maketrans() on the bytes and bytearray classes. This removes confusion about the types string.maketrans() is supposed to work with, and mirrors the methods available on the str class.
Issue #2170: refactored xml.dom.minidom.normalize, increasing both its clarity and its speed.
Issue #1113244: Py_XINCREF, Py_DECREF, Py_XDECREF: Add do { ... } while (0) to avoid compiler warnings.
Issue #3739: The unicode-internal encoder now reports the number of characters consumed like any other encoder (instead of the number of bytes).
Release date: 2009-4-4
Release date: 2009-03-07
(For information about older versions, consult the HISTORY file.)