diff options
Diffstat (limited to 'Misc/NEWS')
-rw-r--r-- | Misc/NEWS | 1258 |
1 files changed, 958 insertions, 300 deletions
@@ -2,45 +2,112 @@ Python News +++++++++++ -What's New in Python 3.3.3 release candidate 1? -=============================================== - -*Not yet released, see sections below for changes released in 3.3.2* +What's New in Python 3.4.0 Alpha 2? +=================================== -.. *Release date: TBD* +Projected Release date: 2013-09-08 Core and Builtins ----------------- +- Issue #16499: Add command line option for isolated mode. + +- Issue #15301: Parsing fd, uid, and gid parameters for builtins + in Modules/posixmodule.c is now far more robust. + - Issue #18368: PyOS_StdioReadline() no longer leaks memory when realloc() - fails. + fail. + +- Issue #17934: Add a clear() method to frame objects, to help clean up + expensive details (local variables) and break reference cycles. + +Library +------- + +- Issue #8112: xlmrpc.server's DocXMLRPCServer server no longer raises an error + if methods have annotations; it now correctly displays the annotations. + +- Issue #18600: Added policy argument to email.message.Message.as_string, + and as_bytes and __bytes__ methods to Message. + +- Issue #18671: Output more information when logging exceptions occur. + +- Issue #18621: Prevent the site module's patched builtins from keeping + too many references alive for too long. + +- Issue #4885: Add weakref support to mmap objects. Patch by Valerie Lambert. + +- Issue #8860: Fixed rounding in timedelta constructor. + + +What's New in Python 3.4.0 Alpha 1? +=================================== + +Release date: 2013-08-03 + +Core and Builtins +----------------- - Issue #16741: Fix an error reporting in int(). - Issue #17899: Fix rare file descriptor leak in os.listdir(). +- Issue #9035: ismount now recognises volumes mounted below a drive root + on Windows. Original patch by Atsuo Ishimoto. + +- Issue #18214: Improve finalization of Python modules to avoid setting + their globals to None, in most cases. + +- Issue #18112: PEP 442 implementation (safe object finalization). + - Issue #18552: Check return value of PyArena_AddPyObject() in obj2ast_object(). - Issue #18560: Fix potential NULL pointer dereference in sum(). +- Issue #18520: Add a new PyStructSequence_InitType2() function, same than + PyStructSequence_InitType() except that it has a return value (0 on success, + -1 on error). + - Issue #15905: Fix theoretical buffer overflow in handling of sys.argv[0], prefix and exec_prefix if the operation system does not obey MAXPATHLEN. +- Issue #18408: Fix many various bugs in code handling errors, especially + on memory allocation failure (MemoryError). + - Issue #18344: Fix potential ref-leaks in _bufferedreader_read_all(). +- Issue #18342: Use the repr of a module name when an import fails when using + ``from ... import ...``. + - Issue #17872: Fix a segfault in marshal.load() when input stream returns more bytes than requested. +- Issue #18338: `python --version` now prints version string to stdout, and + not to stderr. Patch by Berker Peksag and Michael Dickens. + - Issue #18426: Fix NULL pointer dereference in C extension import when PyModule_GetDef() returns an error. +- Issue #17206: On Windows, increase the stack size from 2 MB to 4.2 MB to fix + a stack overflow in the marshal module (fix a crash in test_marshal). + Patch written by Jeremy Kloth. + +- Issue #3329: Implement the PEP 445: Add new APIs to customize Python memory + allocators. + - Issue #18328: Reorder ops in PyThreadState_Delete*() functions. Now the tstate is first removed from TLS and then deallocated. +- Issue #13483: Use VirtualAlloc in obmalloc on Windows. + - Issue #18184: PyUnicode_FromFormat() and PyUnicode_FromFormatV() now raise OverflowError when an argument of %c format is out of range. +- Issue #18111: The min() and max() functions now support a default argument + to be returned instead of raising a ValueError on an empty sequence. + (Contributed by Julian Berman.) + - Issue #18137: Detect integer overflow on precision in float.__format__() and complex.__format__(). @@ -52,48 +119,173 @@ Core and Builtins - Issue #18038: SyntaxError raised during compilation sources with illegal encoding now always contains an encoding name. +- Issue #17931: Resolve confusion on Windows between pids and process + handles. + +- Tweak the exception message when the magic number or size value in a bytecode + file is truncated. + +- Issue #17932: Fix an integer overflow issue on Windows 64-bit in iterators: + change the C type of seqiterobject.it_index from long to Py_ssize_t. + +- Issue #18065: Don't set __path__ to the package name for frozen packages. + +- Issue #18088: When reloading a module, unconditionally reset all relevant + attributes on the module (e.g. __name__, __loader__, __package__, __file__, + __cached__). + +- Issue #17937: Try harder to collect cyclic garbage at shutdown. + +- Issue #12370: Prevent class bodies from interfering with the __class__ + closure. + - Issue #17644: Fix a crash in str.format when curly braces are used in square brackets. -- Issue #17983: Raise a SyntaxError for a ``global __class__`` statement in a - class body. +- Issue #17237: Fix crash in the ASCII decoder on m68k. -- Issue #17927: Frame objects kept arguments alive if they had been copied into - a cell, even if the cell was cleared. +- Issue #17927: Frame objects kept arguments alive if they had been + copied into a cell, even if the cell was cleared. + +- Issue #1545463: At shutdown, defer finalization of codec modules so + that stderr remains usable. + +- Issue #7330: Implement width and precision (ex: "%5.3s") for the format + string of PyUnicode_FromFormat() function, original patch written by Ysj Ray. + +- Issue #1545463: Global variables caught in reference cycles are now + garbage-collected at shutdown. + +- Issue #17094: Clear stale thread states after fork(). Note that this + is a potentially disruptive change since it may release some system + resources which would otherwise remain perpetually alive (e.g. database + connections kept in thread-local storage). + +- Issue #17408: Avoid using an obsolete instance of the copyreg module when + the interpreter is shutdown and then started again. + +- Issue #5845: Enable tab-completion in the interactive interpreter by + default, thanks to a new sys.__interactivehook__. + +- Issue #17115,17116: Module initialization now includes setting __package__ and + __loader__ attributes to None. + +- Issue #17853: Ensure locals of a class that shadow free variables always win + over the closures. + +- Issue #17863: In the interactive console, don't loop forever if the encoding + can't be fetched from stdin. + +- Issue #17867: Raise an ImportError if __import__ is not found in __builtins__. + +- Issue #17857: Prevent build failures with pre-3.5.0 versions of sqlite3, + such as was shipped with Centos 5 and Mac OS X 10.4. + +- Issue #17413: sys.settrace callbacks were being passed a string instead of an + exception instance for the 'value' element of the arg tuple if the exception + originated from C code; now an exception instance is always provided. + +- Issue #17782: Fix undefined behaviour on platforms where + ``struct timespec``'s "tv_nsec" member is not a C long. + +- Issue #17722: When looking up __round__, resolve descriptors. + +- Issue #16061: Speed up str.replace() for replacing 1-character strings. + +- Issue #17715: Fix segmentation fault from raising an exception in a __trunc__ + method. + +- Issue #17643: Add __callback__ attribute to weakref.ref. + +- Issue #16447: Fixed potential segmentation fault when setting __name__ on a + class. + +- Issue #17669: Fix crash involving finalization of generators using yield from. + +- Issue #14439: Python now prints the traceback on runpy failure at startup. + + +- Issue #17469: Fix _Py_GetAllocatedBlocks() and sys.getallocatedblocks() + when running on valgrind. + +- Issue #17619: Make input() check for Ctrl-C correctly on Windows. + +- Issue #17357: Add missing verbosity messages for -v/-vv that were lost during + the importlib transition. + +- Issue #17610: Don't rely on non-standard behavior of the C qsort() function. + +- Issue #17323: The "[X refs, Y blocks]" printed by debug builds has been + disabled by default. It can be re-enabled with the `-X showrefcount` option. Library ------- -- Issue #8112: xlmrpc.server's DocXMLRPCServer server no longer raises an error - if methods have annotations; it now correctly displays the annotations. +- Issue #14323: Expanded the number of digits in the coefficients for the + RGB -- YIQ conversions so that they match the FCC NTSC versions. - Issue #17998: Fix an internal error in regular expression engine. - Issue #17557: Fix os.getgroups() to work with the modified behavior of getgroups(2) on OS X 10.8. Original patch by Mateusz Lenik. +- Issue #18608: Avoid keeping a strong reference to the locale module + inside the _io module. + +- Issue #18619: Fix atexit leaking callbacks registered from sub-interpreters, + and make it GC-aware. + +- Issue #15699: The readline module now uses PEP 3121-style module + initialization, so as to reclaim allocated resources (Python callbacks) + at shutdown. Original patch by Robin Schreiber. + +- Issue #17616: wave.open now supports the context manager protocol. + - Issue #18599: Fix name attribute of _sha1.sha1() object. It now returns 'SHA1' instead of 'SHA'. +- Issue #13266: Added inspect.unwrap to easily unravel __wrapped__ chains + (initial patch by Daniel Urban and Aaron Iles) + - Issue #18561: Skip name in ctypes' _build_callargs() if name is NULL. - Issue #18559: Fix NULL pointer dereference error in _pickle module -- Issue #18556: Check the return value of a PyUnicode_AsWideChar() call in - ctypes' U_set(). +- Issue #18556: Check the return type of PyUnicode_AsWideChar() in ctype's + U_set(). + +- Issue #17818: aifc.getparams now returns a namedtuple. - Issue #18549: Eliminate dead code in socket_ntohl() +- Issue #18530: Remove additional stat call from posixpath.ismount. + Patch by Alex Gaynor. + - Issue #18514: Fix unreachable Py_DECREF() call in PyCData_FromBaseObj() +- Issue #9177: Calling read() or write() now raises ValueError, not + AttributeError, on a closed SSL socket. Patch by Senko Rasic. + - Issue #18513: Fix behaviour of cmath.rect w.r.t. signed zeros on OS X 10.8 + gcc. +- Issue #18479: Changed venv Activate.ps1 to make deactivate a function, and + removed Deactivate.ps1. + - Issue #18480: Add missing call to PyType_Ready to the _elementtree extension. - Issue #17778: Fix test discovery for test_multiprocessing. (Patch by Zachary Ware.) +- Issue #18393: The private module _gestalt and private functions + platform._mac_ver_gestalt, platform._mac_ver_lookup and + platform._bcd2str have been removed. This does not affect the public + interface of the platform module. + +- Issue #17482: functools.update_wrapper (and functools.wraps) now set the + __wrapped__ attribute correctly even if the underlying function has a + __wrapped__ attribute set. + - Issue #18431: The new email header parser now decodes RFC2047 encoded words in structured headers. @@ -107,11 +299,18 @@ Library - Issue #18101: Tcl.split() now process strings nested in a tuple as it do with byte strings. +- Issue #18116: getpass was always getting an error when testing /dev/tty, + and thus was always falling back to stdin. It also leaked an open file + when it did so. Both of these issues are now fixed. + - Issue #17198: Fix a NameError in the dbm module. Patch by Valentina Mukhamedzhanova. - Issue #18013: Fix cgi.FieldStorage to parse the W3C sample form. +- Issue #18020: improve html.escape speed by an order of magnitude. + Patch by Matt Bryant. + - Issue #18347: ElementTree's html serializer now preserves the case of closing tags. @@ -126,6 +325,9 @@ Library - Issue #18339: Negative ints keys in unpickler.memo dict no longer cause a segfault inside the _pickle C extension. +- Issue 18240: The HMAC module is no longer restricted to bytes and accepts + any bytes-like object, e.g. memoryview. Original patch by Jonas Borgström. + - Issue #18224: Removed pydoc script from created venv, as it causes problems on Windows and adds no value over and above python -m pydoc ... @@ -136,240 +338,141 @@ Library - Issue #14360: encode_quopri can now be successfully used as an encoder when constructing a MIMEApplication object. +- Issue #11390: Add -o and -f command line options to the doctest CLI to + specify doctest options (and convert it to using argparse). + - Issue #18135: ssl.SSLSocket.write() now raises an OverflowError if the input string in longer than 2 gigabytes, and ssl.SSLContext.load_cert_chain() raises a ValueError if the password is longer than 2 gigabytes. The ssl module does not support partial write. +- Issue #11016: Add C implementation of the stat module as _stat. + - Issue #18248: Fix libffi build on AIX. - Issue #18259: Declare sethostname in socketmodule.c for AIX +- Issue #18147: Add diagnostic functions to ssl.SSLContext(). get_ca_list() + lists all loaded CA certificates and cert_store_stats() returns amount of + loaded X.509 certs, X.509 CA certs and CRLs. + - Issue #18167: cgi.FieldStorage no longer fails to handle multipart/form-data when \r\n appears at end of 65535 bytes without other newlines. -- subprocess: Prevent a possible double close of parent pipe fds when the - subprocess exec runs into an error. Prevent a regular multi-close of the - /dev/null fd when any of stdin, stdout and stderr was set to DEVNULL. - -- Issue #16102: Make uuid._netbios_getnode() work again on Python 3. - -- Issue #18109: os.uname() now decodes fields from the locale encoding, and - socket.gethostname() now decodes the hostname from the locale encoding, - instead of using the UTF-8 encoding in strict mode. - -- Issue #17403: urllib.parse.robotparser normalizes the urls before adding to - ruleline. This helps in handling certain types invalid urls in a conservative - manner. - -- Issue #18025: Fixed a segfault in io.BufferedIOBase.readinto() when raw - stream's read() returns more bytes than requested. - -- Issue #18011: base64.b32decode() now raises a binascii.Error if there are - non-alphabet characters present in the input string to conform a docstring. - Updated the module documentation. - -- Issue #13772: Restored directory detection of targets in ``os.symlink`` on - Windows, which was temporarily removed in Python 3.2.3 due to an incomplete - implementation. The implementation now works even if the symlink is created - in a location other than the current directory. - -- Issue #16986: ElementTree now correctly parses a string input not only when - an internal XML encoding is UTF-8 or US-ASCII. - -- Issue #17812: Fixed quadratic complexity of base64.b32encode(). - -- Issue #17980: Fix possible abuse of ssl.match_hostname() for denial of - service using certificates with many wildcards (CVE-2013-2099). - -- Issue #17981: Closed socket on error in SysLogHandler. - -- Fix typos in the multiprocessing module. - -- Issue #17754: Make ctypes.util.find_library() independent of the locale. - -- Issue #17968: Fix memory leak in os.listxattr(). - -- Issue #17269: Workaround for socket.getaddrinfo crash on MacOS X - with port None or "0" and flags AI_NUMERICSERV. - -- Issue #18080: When building a C extension module on OS X, if the compiler - is overriden with the CC environment variable, use the new compiler as - the default for linking if LDSHARED is not also overriden. This restores - Distutils behavior introduced in 3.2.3 and inadvertently dropped in 3.3.0. - -- Issue #18113: Fixed a refcount leak in the curses.panel module's - set_userptr() method. Reported by Atsuo Ishimoto. - -C API ------ - -- Issue #18351: Fix various issues with a helper function in importlib used - by PyImport_ExecCodeModuleWithPathnames() (and thus by extension PyImport_ExecCodeModule() and PyImport_ExecCodeModuleEx()). - -IDLE ----- - -- Issue #18279: Format - Strip trailing whitespace no longer marks a file as - changed when it has not been changed. This fix followed the addition of a - test file originally written by Phil Webster (the issue's main goal). - -- Issue #7136: In the Idle File menu, "New Window" is renamed "New File". - Patch by Tal Einat, Roget Serwy, and Todd Rovito. - -- Remove dead imports of imp. - -- Issue #18196: Avoid displaying spurious SystemExit tracebacks. - -- Issue #5492: Avoid traceback when exiting IDLE caused by a race condition. - -- Issue #17511: Keep IDLE find dialog open after clicking "Find Next". - Original patch by Sarah K. - -- Issue #18055: Move IDLE off of imp and on to importlib. - -- Issue #15392: Create a unittest framework for IDLE. - Initial patch by Rajagopalasarma Jayakrishnan. - See Lib/idlelib/idle_test/README.txt for how to run Idle tests. - -- Issue #14146: Highlight source line while debugging on Windows. - -- Issue #17532: Always include Options menu for IDLE on OS X. - Patch by Guilherme Simões. - -Tests ------ - +- Issue #18076: Introduce importlib.util.decode_source(). - Issue #18357: add tests for dictview set difference. Patch by Fraser Tweedale. -- Issue #18273: move the tests in Lib/test/json_tests to Lib/test/test_json - and make them discoverable by unittest. Patch by Zachary Ware. - -- Fix a fcntl test case on KFreeBSD, Debian #708653 (Petr Salinger). - -- Issue #18396: Fix spurious test failure in test_signal on Windows when - faulthandler is enabled (Patch by Jeremy Kloth) - -- Issue #17046: Fix broken test_executable_without_cwd in test_subprocess. - -- Issue #15415: Add new temp_dir() and change_cwd() context managers to - test.support, and refactor temp_cwd() to use them. Patch by Chris Jerdonek. - -- Issue #15494: test.support is now a package rather than a module (Initial - patch by Indra Talip) -- Issue #17944: test_zipfile now discoverable and uses subclassing to - generate tests for different compression types. Fixed a bug with skipping - some tests due to use of exhausted iterators. +- importlib.abc.SourceLoader.get_source() no longer changes SyntaxError or + UnicodeDecodeError into ImportError. -- Issue #18266: test_largefile now works with unittest test discovery and - supports running only selected tests. Patch by Zachary Ware. +- Issue #18058, 18057: Make the namespace package loader meet the + importlib.abc.InspectLoader ABC, allowing for namespace packages to work with + runpy. -- Issue #17767: test_locale now works with unittest test discovery. - Original patch by Zachary Ware. +- Issue #17177: The imp module is pending deprecation. -- Issue #18375: Assume --randomize when --randseed is used for running the - testsuite. +- subprocess: Prevent a possible double close of parent pipe fds when the + subprocess exec runs into an error. Prevent a regular multi-close of the + /dev/null fd when any of stdin, stdout and stderr was set to DEVNULL. -- Issue #11185: Fix test_wait4 under AIX. Patch by Sébastien Sablé. +- Issue #18194: Introduce importlib.util.cache_from_source() and + source_from_cache() while documenting the equivalent functions in imp as + deprecated. -- Issue #17691: test_univnewlines now works with unittest test discovery. - Patch by Zachary Ware. +- Issue #17907: Document imp.new_module() as deprecated in favour of + types.ModuleType. -- Issue #18094: test_uuid no more reports skipped tests as passed. - -- Issue #11995: test_pydoc doesn't import all sys.path modules anymore. +- Issue #18192: Introduce importlib.util.MAGIC_NUMBER and document as deprecated + imp.get_magic(). -Documentation -------------- +- Issue #18149: Add filecmp.clear_cache() to manually clear the filecmp cache. + Patch by Mark Levitt -- Issue #18440: Clarify that `hash()` can truncate the value returned from an - object's custom `__hash__()` method. +- Issue #18193: Add importlib.reload(). -- Issue #17953: Mention that you shouldn't replace sys.modules and deleting key - items will cause Python to not be happy. +- Issue #18157: Stop using imp.load_module() in pydoc. -- Issue #17844: Add links to encoders and decoders for bytes-to-bytes codecs. +- Issue #16102: Make uuid._netbios_getnode() work again on Python 3. -- Issue #14097: improve the "introduction" page of the tutorial. +- Issue #17134: Add ssl.enum_cert_store() as interface to Windows' cert store. -- Issue #17977: The documentation for the cadefault argument's default value - in urllib.request.urlopen() is fixed to match the code. +- Issue #18143: Implement ssl.get_default_verify_paths() in order to debug + the default locations for cafile and capath. -Tools/Demos ------------ +- Issue #17314: Move multiprocessing.forking over to importlib. -- Issue #18439: Make patchcheck work on Windows for ACKS, NEWS. +- Issue #11959: SMTPServer and SMTPChannel now take an optional map, use of + which avoids affecting global state. -- Issue #18448: Fix a typo in Tools/demo/eiffel.py. +- Issue #18109: os.uname() now decodes fields from the locale encoding, and + socket.gethostname() now decodes the hostname from the locale encoding, + instead of using the UTF-8 encoding in strict mode. -- Issue #18457: Fixed saving of formulas and complex numbers in - Tools/demo/ss1.py. +- Issue #18089: Implement importlib.abc.InspectLoader.load_module. -- Issue #18449: Make Tools/demo/ss1.py work again on Python 3. Patch by - Févry Thibault. - -- Issue #15239: Make mkstringprep.py work again on Python 3. +- Issue #18088: Introduce importlib.abc.Loader.init_module_attrs for setting + module attributes. Leads to the pending deprecation of + importlib.util.module_for_loader. -- Issue #12990: The "Python Launcher" on OSX could not launch python scripts - that have paths that include wide characters. - -Build ------ +- Issue #17403: urllib.parse.robotparser normalizes the urls before adding to + ruleline. This helps in handling certain types invalid urls in a conservative + manner. Patch contributed by Mher Movsisyan. -- Issue #16067: Add description into MSI file to replace installer's temporary name. +- Issue #18070: Have importlib.util.module_for_loader() set attributes + unconditionally in order to properly support reloading. -- Issue #18256: Compilation fix for recent AIX releases. Patch by - David Edelsohn. +- Added importlib.util.module_to_load to return a context manager to provide the + proper module object to load. -- Issue #15172: Document NASM 2.10+ as requirement for building OpenSSL 1.0.1 - on Windows. +- Issue #18025: Fixed a segfault in io.BufferedIOBase.readinto() when raw + stream's read() returns more bytes than requested. -What's New in Python 3.3.2? -=========================== +- Issue #18011: base64.b32decode() now raises a binascii.Error if there are + non-alphabet characters present in the input string to conform a docstring. + Updated the module documentation. -*Release date: 13-May-2013* +- Issue #18072: Implement importlib.abc.InspectLoader.get_code() and + importlib.abc.ExecutionLoader.get_code(). -Core and Builtins ------------------ +- Issue #8240: Set the SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER flag on SSL + sockets. -- Issue #17237: Fix crash in the ASCII decoder on m68k. +- Issue #17269: Workaround for socket.getaddrinfo crash on MacOS X + with port None or "0" and flags AI_NUMERICSERV. -- Issue #17408: Avoid using an obsolete instance of the copyreg module when - the interpreter is shutdown and then started again. +- Issue #16986: ElementTree now correctly parses a string input not only when + an internal XML encoding is UTF-8 or US-ASCII. -- Issue #17863: In the interactive console, don't loop forever if the encoding - can't be fetched from stdin. +- Issue #17996: socket module now exposes AF_LINK constant on BSD and OSX. -- Issue #17867: Raise an ImportError if __import__ is not found in __builtins__. +- Issue #17900: Allowed pickling of recursive OrderedDicts. Decreased pickled + size and pickling time. -- Issue #17857: Prevent build failures with pre-3.5.0 versions of sqlite3, - such as was shipped with Centos 5 and Mac OS X 10.4. +- Issue #17914: Add os.cpu_count(). Patch by Yogesh Chaudhari, based on an + initial patch by Trent Nelson. -- Issue #17413: sys.settrace callbacks were being passed a string instead of an - exception instance for the 'value' element of the arg tuple if the exception - originated from C code; now an exception instance is always provided. +- Issue #17812: Fixed quadratic complexity of base64.b32encode(). + Optimize base64.b32encode() and base64.b32decode() (speed up to 3x). -- Issue #17782: Fix undefined behaviour on platforms where - ``struct timespec``'s "tv_nsec" member is not a C long. +- Issue #17980: Fix possible abuse of ssl.match_hostname() for denial of + service using certificates with many wildcards (CVE-2013-2099). -- Issue #17715: Fix segmentation fault from raising an exception in a __trunc__ - method. +- Issue #15758: Fix FileIO.readall() so it no longer has O(n**2) complexity. -- Issue #16447: Fixed potential segmentation fault when setting __name__ on a - class. +- Issue #14596: The struct.Struct() objects now use more compact implementation. -- Issue #17669: Fix crash involving finalization of generators using yield from. +- Issue #17981: Closed socket on error in SysLogHandler. -- Issue #17619: Make input() check for Ctrl-C correctly on Windows. +- Issue #17964: Fix os.sysconf(): the return type of the C sysconf() function + is long, not int. -- Issue #17610: Don't rely on non-standard behavior of the C qsort() function. +- Fix typos in the multiprocessing module. -- Issue #17357: Add missing verbosity output when using -v/-vv. +- Issue #17754: Make ctypes.util.find_library() independent of the locale. -Library -------- +- Issue #17968: Fix memory leak in os.listxattr(). - Issue #17606: Fixed support of encoded byte strings in the XMLGenerator characters() and ignorableWhitespace() methods. Original patch by Sebastian @@ -378,9 +481,6 @@ Library - Issue #17732: Ignore distutils.cfg options pertaining to install paths if a virtual environment is active. -- Issue #1159051: Back out a fix for handling corrupted gzip files that - broke backwards compatibility. - - Issue #17915: Fix interoperability of xml.sax with file objects returned by codecs.open(). @@ -394,35 +494,64 @@ Library - Issue #12181: select module: Fix struct kevent definition on OpenBSD 64-bit platforms. Patch by Federico Schwindt. +- Issue #11816: multiple improvements to the dis module: get_instructions + generator, ability to redirect output to a file, Bytecode and Instruction + abstractions. Patch by Nick Coghlan, Ryan Kelly and Thomas Kluyver. + +- Issue #13831: Embed stringification of remote traceback in local + traceback raised when pool task raises an exception. + +- Issue #15528: Add weakref.finalize to support finalization using + weakref callbacks. + - Issue #14173: Avoid crashing when reading a signal handler during interpreter shutdown. -- Issue #16316: mimetypes now recognizes the .xz and .txz (.tar.xz) extensions. - - Issue #15902: Fix imp.load_module() accepting None as a file when loading an extension module. -- Issue #17802: Fix an UnboundLocalError in html.parser. Initial tests by - Thomas Barlow. +- Issue #13721: SSLSocket.getpeercert() and SSLSocket.do_handshake() now + raise an OSError with ENOTCONN, instead of an AttributeError, when the + SSLSocket is not connected. -- Issue #15535: Fix namedtuple pickles which were picking up the OrderedDict - instead of just the underlying tuple. +- Issue #14679: add an __all__ (that contains only HTMLParser) to html.parser. -- Issue #17192: Restore the patch for Issue #11729 which was ommitted in - 3.3.1 when updating the bundled version of libffi used by ctypes. Update - many libffi files that were missed in 3.3.1's update to libffi-3.0.13. +- Issue #17802: Fix an UnboundLocalError in html.parser. Initial tests by + Thomas Barlow. - Issue #17358: Modules loaded by imp.load_source() and load_compiled() (and by extention load_module()) now have a better chance of working when reloaded. +- Issue #17804: New function ``struct.iter_unpack`` allows for streaming + struct unpacking. + +- Issue #17830: When keyword.py is used to update a keyword file, it now + preserves the line endings of the original file. + +- Issue #17272: Making the urllib.request's Request.full_url a descriptor. + Fixes bugs with assignment to full_url. Patch by Demian Brecht. + - Issue #17353: Plistlib emitted empty data tags with deeply nested datastructures - Issue #11714: Use 'with' statements to assure a Semaphore releases a condition variable. Original patch by Thomas Rachel. +- Issue #16624: `subprocess.check_output` now accepts an `input` argument, + allowing the subprocess's stdin to be provided as a (byte) string. + Patch by Zack Weinberg. + - Issue #17795: Reverted backwards-incompatible change in SysLogHandler with Unix domain sockets. +- Issue #16694: Add a pure Python implementation of the operator module. + Patch by Zachary Ware. + +- Issue #11182: remove the unused and undocumented pydoc.Scanner class. + Patch by Martin Morrison. + +- Issue #17741: Add ElementTree.IncrementalParser, an event-driven parser + for non-blocking applications. + - Issue #17555: Fix ForkAwareThreadLock so that size of after fork registry does not grow exponentially with generation of process. @@ -450,72 +579,112 @@ Library - Issue #16804: Fix a bug in the 'site' module that caused running 'python -S -m site' to incorrectly throw an exception. +- Issue #15480: Remove the deprecated and unused TYPE_INT64 code from marshal. + Initial patch by Daniel Riti. + +- Issue #2118: SMTPException is now a subclass of IOError. + - Issue #17016: Get rid of possible pointer wraparounds and integer overflows in the re module. Patch by Nickolai Zeldovich. - Issue #16658: add missing return to HTTPConnection.send() Patch by Jeff Knupp. +- Issue #9556: Allowed specifying a time-of-day for a TimedRotatingFileHandler + to rotate. + - Issue #14971: unittest test discovery no longer gets confused when a function has a different __name__ than its name in the TestCase class dictionary. -- Issue #17678: Fix DeprecationWarning in the http/cookiejar.py by changing the - usage of get_origin_req_host() to origin_req_host. +- Issue #17487: The wave getparams method now returns a namedtuple rather than + a plain tuple. + +- Issue #17675: socket repr() provides local and remote addresses (if any). + Patch by Giampaolo Rodola' + +- Issue #17093: Make the ABCs in importlib.abc provide default values or raise + reasonable exceptions for their methods to make them more amenable to super() + calls. + +- Issue #17566: Make importlib.abc.Loader.module_repr() optional instead of an + abstractmethod and raising NotImplementedError so as to be ignored by default. + +- Issue #17678: Remove the use of deprecated method in http/cookiejar.py. + Changing the usage of get_origin_req_host() to origin_req_host. - Issue #17666: Fix reading gzip files with an extra field. +- Issue #16475: Support object instancing, recursion and interned strings + in marshal + - Issue #17502: Process DEFAULT values in mock side_effect that returns iterator. - Patch by Michael Foord. -- Issue #17572: Avoid chained exceptions while passing bad directives to - time.strptime(). Initial patch by Claudiu Popa. +- Issue #16795: On the ast.arguments object, unify vararg with varargannotation + and kwarg and kwargannotation. Change the column offset of ast.Attribute to be + at the attribute name. -- Issue #17435: threading.Timer's __init__ method no longer uses mutable - default values for the args and kwargs parameters. +- Issue #17434: Properly raise a SyntaxError when a string occurs between future + imports. -- Issue #17526: fix an IndexError raised while passing code without filename to - inspect.findsource(). Initial patch by Tyler Doyle. +- Issue #17117: Import and @importlib.util.set_loader now set __loader__ when + it has a value of None or the attribute doesn't exist. -- Issue #16550: Update the opcode descriptions of pickletools to use unsigned - integers where appropriate. Initial patch by Serhiy Storchaka. +- Issue #17032: The "global" in the "NameError: global name 'x' is not defined" + error message has been removed. Patch by Ram Rachum. -IDLE ----- +- Issue #18080: When building a C extension module on OS X, if the compiler + is overriden with the CC environment variable, use the new compiler as + the default for linking if LDSHARED is not also overriden. This restores + Distutils behavior introduced in 3.2.3 and inadvertently dropped in 3.3.0. -- Issue #17838: Allow sys.stdin to be reassigned. +- Issue #18113: Fixed a refcount leak in the curses.panel module's + set_userptr() method. Reported by Atsuo Ishimoto. -- Issue #13495: Avoid loading the color delegator twice in IDLE. +- Implement PEP 443 "Single-dispatch generic functions". -- Issue #17798: Allow IDLE to edit new files when specified on command line. +- Implement PEP 435 "Adding an Enum type to the Python standard library". -- Issue #14735: Update IDLE docs to omit "Control-z on Windows". +Tests +----- -- Issue #17585: Fixed IDLE regression. Now closes when using exit() or quit(). +- Issue #18273: move the tests in Lib/test/json_tests to Lib/test/test_json + and make them discoverable by unittest. Patch by Zachary Ware. -- Issue #17657: Show full Tk version in IDLE's about dialog. - Patch by Todd Rovito. +- Fix a fcntl test case on KFreeBSD, Debian #708653 (Petr Salinger). -- Issue #17613: Prevent traceback when removing syntax colorizer in IDLE. +- Issue #18396: Fix spurious test failure in test_signal on Windows when + faulthandler is enabled (Patch by Jeremy Kloth) -- Issue #1207589: Backwards-compatibility patch for right-click menu in IDLE. +- Issue #17046: Fix broken test_executable_without_cwd in test_subprocess. -- Issue #16887: IDLE now accepts Cancel in tabify/untabify dialog box. +- Issue #15415: Add new temp_dir() and change_cwd() context managers to + test.support, and refactor temp_cwd() to use them. Patch by Chris Jerdonek. -- Issue #17625: In IDLE, close the replace dialog after it is used. +- Issue #15494: test.support is now a package rather than a module (Initial + patch by Indra Talip) -- Issue #14254: IDLE now handles readline correctly across shell restarts. +- Issue #17944: test_zipfile now discoverable and uses subclassing to + generate tests for different compression types. Fixed a bug with skipping + some tests due to use of exhausted iterators. -- Issue #17614: IDLE no longer raises exception when quickly closing a file. +- Issue #18266: test_largefile now works with unittest test discovery and + supports running only selected tests. Patch by Zachary Ware. -- Issue #6698: IDLE now opens just an editor window when configured to do so. +- Issue #17767: test_locale now works with unittest test discovery. + Original patch by Zachary Ware. -- Issue #8900: Using keyboard shortcuts in IDLE to open a file no longer - raises an exception. +- Issue #18375: Assume --randomize when --randseed is used for running the + testsuite. -- Issue #6649: Fixed missing exit status in IDLE. Patch by Guilherme Polo. +- Issue #11185: Fix test_wait4 under AIX. Patch by Sébastien Sablé. -Tests ------ +- Issue #18207: Fix test_ssl for some versions of OpenSSL that ignore seconds + in ASN1_TIME fields. + +- Issue #18094: test_uuid no more reports skipped tests as passed. + +- Issue #17992: Add timeouts to asyncore and asynchat tests so that they won't + accidentally hang. - Issue #17833: Fix test_gdb failures seen on machines where debug symbols for glibc are available (seen on PPC64 Linux). @@ -523,6 +692,9 @@ Tests - Issue #7855: Add tests for ctypes/winreg for issues found in IronPython. Initial patch by Dino Viehland. +- Issue #11078: test___all__ now checks for duplicates in __all__. + Initial patch by R. David Murray. + - Issue #17712: Fix test_gdb failures on Ubuntu 13.04. - Issue #17835: Fix test_io when the default OS pipe buffer size is larger @@ -534,6 +706,9 @@ Tests - Issue #12820: add tests for the xml.dom.minicompat module. Patch by John Chandler and Phil Connell. +- Issue #17691: test_univnewlines now works with unittest test discovery. + Patch by Zachary Ware. + - Issue #17790: test_set now works with unittest test discovery. Patch by Zachary Ware. @@ -552,44 +727,127 @@ Tests - Issue #17692: test_sqlite now works with unittest test discovery. Patch by Zachary Ware. -- Issue #17843: Removed bz2 test data file that was triggering false-positive - virus warnings with certain antivirus software. +- Issue #11995: test_pydoc doesn't import all sys.path modules anymore. Documentation ------------- +- Issue #18440: Clarify that `hash()` can truncate the value returned from an + object's custom `__hash__()` method. + +- Issue #17844: Add links to encoders and decoders for bytes-to-bytes codecs. + +- Issue #14097: improve the "introduction" page of the tutorial. + +- Issue #17977: The documentation for the cadefault argument's default value + in urllib.request.urlopen() is fixed to match the code. + - Issue #15940: Specify effect of locale on time functions. - Issue #6696: add documentation for the Profile objects, and improve profile/cProfile docs. Patch by Tom Pinckney. -- Issue #17915: Fix interoperability of xml.sax with file objects returned by - codecs.open(). - -Build +C-API ----- -- Issue #17547: In configure, explicitly pass -Wformat for the benefit for GCC - 4.8. +- Issue #18351: Fix various issues in a function in importlib provided to help + PyImport_ExecCodeModuleWithPathnames() (and thus by extension PyImport_ExecCodeModule() and PyImport_ExecCodeModuleEx()). -- Issue #17962: Build with OpenSSL 1.0.1e on Windows. +- Issue #9369: The types of `char*` arguments of PyObject_CallFunction() and + PyObject_CallMethod() now changed to `const char*`. Based on patches by + Jörg Müller and Lars Buitinck. +- Issue #17206: Py_CLEAR(), Py_DECREF(), Py_XINCREF() and Py_XDECREF() now + expand their arguments once instead of multiple times. Patch written by Illia + Polosukhin. -What's New in Python 3.3.1? -=========================== +- Issue #17522: Add the PyGILState_Check() API. -*Release date: 07-Apr-2013* +- Issue #17327: Add PyDict_SetDefault. + +IDLE +---- + +- Issue #18279: Format - Strip trailing whitespace no longer marks a file as + changed when it has not been changed. This fix followed the addition of a + test file originally written by Phil Webster (the issue's main goal). + +- Issue #7136: In the Idle File menu, "New Window" is renamed "New File". + Patch by Tal Einat, Roget Serwy, and Todd Rovito. + +- Remove dead imports of imp. + +- Issue #18196: Avoid displaying spurious SystemExit tracebacks. + +- Issue #5492: Avoid traceback when exiting IDLE caused by a race condition. + +- Issue #17511: Keep IDLE find dialog open after clicking "Find Next". + Original patch by Sarah K. + +- Issue #18055: Move IDLE off of imp and on to importlib. + +- Issue #15392: Create a unittest framework for IDLE. + Initial patch by Rajagopalasarma Jayakrishnan. + See Lib/idlelib/idle_test/README.txt for how to run Idle tests. + +- Issue #14146: Highlight source line while debugging on Windows. + +- Issue #17838: Allow sys.stdin to be reassigned. + +- Issue #13495: Avoid loading the color delegator twice in IDLE. + +- Issue #17798: Allow IDLE to edit new files when specified on command line. + +- Issue #14735: Update IDLE docs to omit "Control-z on Windows". + +- Issue #17532: Always include Options menu for IDLE on OS X. + Patch by Guilherme Simões. + +Windows +------- + +- Issue #18569: The installer now adds .py to the PATHEXT variable when extensions + are registered. Patch by Paul Moore. Build ----- -- Issue #17550: Fix the --enable-profiling configure switch. +- Issue #16067: Add description into MSI file to replace installer's + temporary name. -IDLE -------- +- Issue #18257: Fix readlink usage in python-config. Install the python + version again on Darwin. -- Issue #17625: In IDLE, close the replace dialog after it is used. +- Issue #18481: Add C coverage reporting with gcov and lcov. A new make target + "coverage-report" creates an instrumented Python build, runs unit tests + and creates a HTML. The report can be updated with "make coverage-lcov". + +- Issue #17845: Clarified the message printed when some module are not built. +- Issue #18256: Compilation fix for recent AIX releases. Patch by + David Edelsohn. + +- Issue #17547: In configure, explicitly pass -Wformat for the benefit for GCC + 4.8. + +- Issue #15172: Document NASM 2.10+ as requirement for building OpenSSL 1.0.1 + on Windows. + +Tools/Demos +----------- + +- Issue #18439: Make patchcheck work on Windows for ACKS, NEWS. + +- Issue #18448: Fix a typo in Tools/demo/eiffel.py. + +- Issue #18457: Fixed saving of formulas and complex numbers in + Tools/demo/ss1.py. + +- Issue #18449: Make Tools/demo/ss1.py work again on Python 3. Patch by + Févry Thibault. + +- Issue #12990: The "Python Launcher" on OSX could not launch python scripts + that have paths that include wide characters. What's New in Python 3.3.1 release candidate 1? =============================================== @@ -601,24 +859,23 @@ Core and Builtins - Issue #17328: Fix possible refleak in dict.setdefault. -- Issue #17223: Fix PyUnicode_FromUnicode() for string of 1 character outside - the range U+0000-U+10ffff. - -- Issue #1692335: Move initial args assignment to - BaseException.__new__ to help pickling of naive subclasses. - - Issue #17275: Corrected class name in init error messages of the C version of BufferedWriter and BufferedRandom. - Issue #7963: Fixed misleading error message that issued when object is called without arguments. +- Issue #8745: Small speed up zipimport on Windows. Patch by Catalin Iacob. + - Issue #5308: Raise ValueError when marshalling too large object (a sequence with size >= 2**31), instead of producing illegal marshal data. - Issue #12983: Bytes literals with invalid \x escape now raise a SyntaxError and a full traceback including line number. +- Issue #16967: In function definition, evaluate positional defaults before + keyword-only defaults. + - Issue #17173: Remove uses of locale-dependent C functions (isalpha() etc.) in the interpreter. @@ -633,6 +890,10 @@ Core and Builtins - Issue #16979: Fix error handling bugs in the unicode-escape-decode decoder. +- Issue #16772: The base argument to the int constructor no longer accepts + floats, or other non-integer objects with an __int__ method. Objects + with an __index__ method are now accepted. + - Issue #10156: In the interpreter's initialization phase, unicode globals are now initialized dynamically as needed. @@ -660,12 +921,6 @@ Core and Builtins - Issue #16367: Fix FileIO.readall() on Windows for files larger than 2 GB. -- Issue #16455: On FreeBSD and Solaris, if the locale is C, the - ASCII/surrogateescape codec is now used, instead of the locale encoding, to - decode the command line arguments. This change fixes inconsistencies with - os.fsencode() and os.fsdecode() because these operating systems announces an - ASCII locale encoding, whereas the ISO-8859-1 encoding is used in practice. - - Issue #16761: Calling int() with base argument only now raises TypeError. - Issue #16759: Support the full DWORD (unsigned long) range in Reg2Py @@ -675,24 +930,51 @@ Core and Builtins - Issue #14420: Support the full DWORD (unsigned long) range in Py2Reg when passed a REG_DWORD value. Fixes OverflowError in winreg.SetValueEx. +- Issue #11939: Set the st_dev attribute of stat_result to allow Windows to + take advantage of the os.path.samefile/sameopenfile/samestat implementations + used by other platforms. + +- Issue #16772: The int() constructor's second argument (base) no longer + accepts non integer values. Consistent with the behavior in Python 2. + +- Issue #14470: Remove w9xpopen support per PEP 11. + +- Issue #9856: Replace deprecation warning with raising TypeError + in object.__format__. Patch by Florent Xicluna. + - Issue #16597: In buffered and text IO, call close() on the underlying stream if invoking flush() fails. - Issue #16722: In the bytes() constructor, try to call __bytes__ on the argument before __index__. +- Issue #16421: loading multiple modules from one shared object is now + handled correctly (previously, the first module loaded from that file + was silently returned). Patch by Václav Šmilauer. + - Issue #16602: When a weakref's target was part of a long deallocation chain, the object could remain reachable through its weakref even though its refcount had dropped to zero. -- Issue #16416: On Mac OS X, operating system data are now always - encoded/decoded to/from UTF-8/surrogateescape, instead of the locale encoding - (which may be ASCII if no locale environment variable is set), to avoid - inconsistencies with os.fsencode() and os.fsdecode() functions which are - already using UTF-8/surrogateescape. +- Issue #16495: Remove extraneous NULL encoding check from bytes_decode(). + +- Issue #16619: Create NameConstant AST class to represent None, True, and False + literals. As a result, these constants are never loaded at runtime from + builtins. + +- Issue #16455: On FreeBSD and Solaris, if the locale is C, the + ASCII/surrogateescape codec is now used, instead of the locale encoding, to + decode the command line arguments. This change fixes inconsistencies with + os.fsencode() and os.fsdecode() because these operating systems announces an + ASCII locale encoding, whereas the ISO-8859-1 encoding is used in practice. + +- Issue #16562: Optimize dict equality testing. Patch by Serhiy Storchaka. - Issue #16588: Silence unused-but-set warnings in Python/thread_pthread +- Issue #16592: stringlib_bytes_join doesn't raise MemoryError on allocation + failure. + - Issue #16546: Fix: ast.YieldFrom argument is now mandatory. - Issue #16514: Fix regression causing a traceback when sys.path[0] is None @@ -704,11 +986,23 @@ Core and Builtins - Issue #16215: Fix potential double memory free in str.replace(). Patch by Serhiy Storchaka. +- Issue #16290: A float return value from the __complex__ special method is no + longer accepted in the complex() constructor. + +- Issue #16416: On Mac OS X, operating system data are now always + encoded/decoded to/from UTF-8/surrogateescape, instead of the locale encoding + (which may be ASCII if no locale environment variable is set), to avoid + inconsistencies with os.fsencode() and os.fsdecode() functions which are + already using UTF-8/surrogateescape. + - Issue #16453: Fix equality testing of dead weakref objects. - Issue #9535: Fix pending signals that have been received but not yet handled by Python to not persist after os.fork() in the child process. +- Issue #14794: Fix slice.indices to return correct results for huge values, + rather than raising OverflowError. + - Issue #15001: fix segfault on "del sys.modules['__main__']". Patch by Victor Stinner. @@ -728,23 +1022,43 @@ Core and Builtins - Issue #8401: assigning an int to a bytearray slice (e.g. b[3:4] = 5) now raises an error. +- Issue #7317: Display full tracebacks when an error occurs asynchronously. + Patch by Alon Horev with update by Alexey Kachayev. + +- Issue #16309: Make PYTHONPATH="" behavior the same as if PYTHONPATH + not set at all. + +- Issue #10189: Improve the error reporting of SyntaxErrors related to global + and nonlocal statements. + - Fix segfaults on setting __qualname__ on builtin types and attempting to delete it on any type. +- Issue #14625: Rewrite the UTF-32 decoder. It is now 3x to 4x faster. Patch + written by Serhiy Storchaka. + - Issue #16345: Fix an infinite loop when ``fromkeys`` on a dict subclass received a nonempty dict from the constructor. - Issue #16271: Fix strange bugs that resulted from __qualname__ appearing in a class's __dict__ and on type. +- Issue #12805: Make bytes.join and bytearray.join faster when the separator + is empty. Patch by Serhiy Storchaka. + - Issue #6074: Ensure cached bytecode files can always be updated by the user that created them, even when the source file is read-only. +- Issue #15958: bytes.join and bytearray.join now accept arbitrary buffer + objects. + - Issue #14783: Improve int() docstring and switch docstrings for str(), range(), and slice() to use multi-line signatures. - Issue #16160: Subclass support now works for types.SimpleNamespace. +- Upgrade Unicode data (UCD) to version 6.2. + - Issue #15379: Fix passing of non-BMP characters as integers for the charmap decoder (already working as unicode strings). Patch by Serhiy Storchaka. @@ -757,25 +1071,50 @@ Core and Builtins - Issue #15839: Convert SystemErrors in `super()` to RuntimeErrors. +- Issue #15448: Buffered IO now frees the buffer when closed, instead + of when deallocating. + - Issue #15846: Fix SystemError which happened when using `ast.parse()` in an exception handler on code with syntax errors. +- Issue #15897: zipimport.c doesn't check return value of fseek(). + Patch by Felipe Cruz. + - Issue #15801: Make sure mappings passed to '%' formatting are actually subscriptable. -- Issue #15111: __import__ should let ImportError propagate when a module that - is imported as a side-effect of using fromlist tries to import a module - that cannot be found. +- Issue #15111: __import__ should propagate ImportError when raised as a + side-effect of a module triggered from using fromlist. +- Issue #15022: Add pickle and comparison support to types.SimpleNamespace. Library ------- +- Issue #15596: Faster pickling of unicode strings. + +- Issue #17572: Avoid chained exceptions while passing bad directives to + time.strptime(). Initial patch by Claudiu Popa. + +- Issue #17435: threading.Timer's __init__ method no longer uses mutable + default values for the args and kwargs parameters. + +- Issue #17526: fix an IndexError raised while passing code without filename to + inspect.findsource(). Initial patch by Tyler Doyle. + - Issue #17540: Added style to formatter configuration by dict. +- Issue #16692: The ssl module now supports TLS 1.1 and TLS 1.2. Initial + patch by Michele Orrù. + +- Issue #17025: multiprocessing: Reduce Queue and SimpleQueue contention. + - Issue #17536: Add to webbrowser's browser list: www-browser, x-www-browser, iceweasel, iceape. +- Issue #17150: pprint now uses line continuations to wrap long string + literals. + - Issue #17488: Change the subprocess.Popen bufsize parameter default value from unbuffered (0) to buffering (-1) to match the behavior existing code expects and match the behavior of the subprocess module in Python 2 to avoid @@ -794,6 +1133,18 @@ Library sending mail by closing the socket and reporting the 421 error code via the exception appropriate to the command that received the error response. +- Issue #16997: unittest.TestCase now provides a subTest() context manager + to procedurally generate, in an easy way, small test instances. + +- Issue #17485: Also delete the Request Content-Length header if the data + attribute is deleted. (Follow on to issue 16464). + +- Issue #15927: CVS now correctly parses escaped newlines and carriage + when parsing with quoting turned off. + +- Issue #17467: add readline and readlines support to mock_open in + unittest.mock. + - Issue #17192: Update the ctypes module's libffi to v3.0.13. This specifically addresses a stack misalignment issue on x86 and issues on some more recent platforms. @@ -807,20 +1158,51 @@ Library - Issue #17476: Fixed regression relative to Python2 in undocumented pydoc 'allmethods'; it was missing unbound methods on the class. +- Issue #17474: Remove the deprecated methods of Request class. + +- Issue #16709: unittest discover order is no-longer filesystem specific. Patch + by Jeff Ramnani. + +- Use the HTTPS PyPI url for upload, overriding any plain HTTP URL in pypirc. + +- Issue #5024: sndhdr.whichhdr now returns the frame count for WAV files + rather than -1. + +- Issue #17460: Remove the strict argument of HTTPConnection and removing the + DeprecationWarning being issued from 3.2 onwards. + - Issue #16880: Do not assume _imp.load_dynamic() is defined in the imp module. - Issue #16389: Fixed a performance regression relative to Python 3.1 in the caching of compiled regular expressions. +- Added missing FeedParser and BytesFeedParser to email.parser.__all__. + - Issue #17431: Fix missing import of BytesFeedParser in email.parser. +- Issue #12921: http.server's send_error takes an explain argument to send more + information in response. Patch contributed by Karl. + +- Issue #17414: Add timeit, repeat, and default_timer to timeit.__all__. + - Issue #1285086: Get rid of the refcounting hack and speed up urllib.parse.unquote() and urllib.parse.unquote_to_bytes(). +- Issue #17099: Have importlib.find_loader() raise ValueError when __loader__ + is not set, harmonizing with what happens when the attribute is set to None. + +- Expose the O_PATH constant in the os module if it is available. + - Issue #17368: Fix an off-by-one error in the Python JSON decoder that caused a failure while decoding empty object literals when object_pairs_hook was specified. +- Issue #17385: Fix quadratic behavior in threading.Condition. The FIFO + queue now uses a deque instead of a list. + +- Issue #15806: Add contextlib.ignored(). This creates a context manager + to ignore specified exceptions, replacing the "except Exc: pass" idiom. + - Issue #14645: The email generator classes now produce output using the specified linesep throughout. Previously if the prolog, epilog, or body were stored with a different linesep, that linesep was used. This @@ -832,18 +1214,30 @@ Library - Issue #16962: Use getdents64 instead of the obsolete getdents syscall in the subprocess module on Linux. +- Issue #16935: unittest now counts the module as skipped if it raises SkipTest, + instead of counting it as an error. Patch by Zachary Ware. + - Issue #17018: Make Process.join() retry if os.waitpid() fails with EINTR. - Issue #17223: array module: Fix a crasher when converting an array containing invalid characters (outside range [U+0000; U+10ffff]) to Unicode: repr(array), str(array) and array.tounicode(). Patch written by Manuel Jacob. +- Issue #17197: profile/cProfile modules refactored so that code of run() and + runctx() utility functions is not duplicated in both modules. + - Issue #14720: sqlite3: Convert datetime microseconds correctly. Patch by Lowe Thiderman. +- Issue #15132: Allow a list for the defaultTest argument of + unittest.TestProgram. Patch by Jyrki Pulliainen. + - Issue #17225: JSON decoder now counts columns in the first line starting with 1, as in other lines. +- Issue #6623: Added explicit DeprecationWarning for ftplib.netrc, which has + been deprecated and undocumented for a long time. + - Issue #13700: Fix byte/string handling in imaplib authentication when an authobject is specified. @@ -860,11 +1254,19 @@ Library - Issue #17143: Fix a missing import in the trace module. Initial patch by Berker Peksag. +- Issue #15220: email.feedparser's line splitting algorithm is now simpler and + faster. + - Issue #16743: Fix mmap overflow check on 32 bit Windows. +- Issue #16996: webbrowser module now uses shutil.which() to find a + web-browser on the executable search path. + - Issue #16800: tempfile.gettempdir() no longer left temporary files when the disk is full. Original patch by Amir Szekely. +- Issue #17192: Import libffi-3.0.12. + - Issue #16564: Fixed regression relative to Python2 in the operation of email.encoders.encode_7or8bit when used with binary data. @@ -882,6 +1284,9 @@ Library - Issue #6975: os.path.realpath() now correctly resolves multiple nested symlinks on POSIX platforms. +- Issue #13773: sqlite3.connect() gets a new `uri` parameter to pass the + filename as a URI, allowing to pass custom options. + - Issue #16564: Fixed regression relative to Python2 in the operation of email.encoders.encode_noop when used with binary data. @@ -900,6 +1305,9 @@ Library - Issue #16723: httplib.HTTPResponse no longer marked closed when the connection is automatically closed. +- Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by + Brian Thorne. + - Issue #16948: Fix quoted printable body encoding for non-latin1 character sets in the email package. @@ -924,6 +1332,10 @@ Library stream or a decoder produces data of an unexpected type (i.e. when io.TextIOWrapper initialized with text stream or use bytes-to-bytes codec). +- Issue #17015: When it has a spec, a Mock object now inspects its signature + when matching calls, so that arguments can be matched positionally or + by name. + - Issue #15633: httplib.HTTPResponse is now mark closed when the server sends less than the advertised Content-Length. @@ -943,6 +1355,14 @@ Library - Issue #12004: Fix an internal error in PyZipFile when writing an invalid Python file. Patch by Ben Morgan. +- Have py_compile use importlib as much as possible to avoid code duplication. + Code now raises FileExistsError if the file path to be used for the + byte-compiled file is a symlink or non-regular file as a warning that import + will not keep the file path type if it writes to that path. + +- Issue #180022: Have site.addpackage() consider already known paths even when + none are explicitly passed in. Bug report and fix by Kirill. + - Issue #1602133: on Mac OS X a shared library build (``--enable-shared``) now fills the ``os.environ`` variable correctly. @@ -959,6 +1379,9 @@ Library current directory on Unix and no longer searches a relative file path with a directory part in PATH directories. Patch by Thomas Kluyver. +- Issue #1159051: GzipFile now raises EOFError when reading a corrupted file + with truncated header or footer. + - Issue #16993: shutil.which() now preserves the case of the path and extension on Windows. @@ -971,8 +1394,6 @@ Library - Issue #15861: tkinter now correctly works with lists and tuples containing strings with whitespaces, backslashes or unbalanced braces. -- Issue #10527: Use poll() instead of select() for multiprocessing pipes. - - Issue #9720: zipfile now writes correct local headers for files larger than 4 GiB. @@ -981,6 +1402,13 @@ Library - SSLContext.load_dh_params() now properly closes the input file. +- Issue #15031: Refactor some .pyc management code to cut down on code + duplication. Thanks to Ronan Lamy for the report and taking an initial stab + at the problem. + +- Issue #16398: Optimize deque.rotate() so that it only moves pointers + and doesn't touch the underlying data with increfs and decrefs. + - Issue #16900: Issue a ResourceWarning when an ssl socket is left unclosed. - Issue #13899: \A, \Z, and \B now correctly match the A, Z, and B literals @@ -990,12 +1418,29 @@ Library failing if the connection used a row factory (such as sqlite3.Row) that produced unsortable objects. (Regression was introduced by fix for 9750). +- fcntl: add F_DUPFD_CLOEXEC constant, available on Linux 2.6.24+. + - Issue #15972: Fix error messages when os functions expecting a file name or file descriptor receive the incorrect type. +- Issue #8109: The ssl module now has support for server-side SNI, thanks + to a :meth:`SSLContext.set_servername_callback` method. Patch by Daniel + Black. + +- Issue #16860: In tempfile, use O_CLOEXEC when available to set the + close-on-exec flag atomically. + +- Issue #16674: random.getrandbits() is now 20-40% faster for small integers. + +- Issue #16009: JSON error messages now provide more information. + - Issue #16828: Fix error incorrectly raised by bz2.compress(b'') and bz2.BZ2Compressor.compress(b''). Initial patch by Martin Packman. +- Issue #16833: In http.client.HTTPConnection, do not concatenate the request + headers and body when the payload exceeds 16 KB, since it can consume more + memory for no benefit. Patch by Benno Leslie. + - Issue #16541: tk_setPalette() now works with keyword arguments. - Issue #16820: In configparser, `parser.popitem()` no longer raises ValueError. @@ -1011,14 +1456,21 @@ Library - Issue #9586: Redefine SEM_FAILED on MacOSX to keep compiler happy. +- Issue #16787: Increase asyncore and asynchat default output buffers size, to + decrease CPU usage and increase throughput. + - Issue #10527: make multiprocessing use poll() instead of select() if available. - Issue #16688: Now regexes contained backreferences correctly work with non-ASCII strings. Patch by Matthew Barnett. +- Issue #16486: Make aifc files act as context managers. + - Issue #16485: Now file descriptors are closed if file header patching failed on closing an aifc file. +- Issue #16640: Run less code under a lock in sched module. + - Issue #16165: sched.scheduler.run() no longer blocks a scheduler for other threads. @@ -1028,6 +1480,8 @@ Library - Issue #16618: Make glob.glob match consistently across strings and bytes regarding leading dots. Patch by Serhiy Storchaka. +- Issue #16788: Add samestat to Lib/ntpath.py + - Issue #16713: Parsing of 'tel' urls using urlparse separates params from path. @@ -1049,10 +1503,25 @@ Library supports all None default values present in decimal.py. These values were largely undocumented. +- Issue #11175: argparse.FileType now accepts encoding and errors + arguments. Patch by Lucas Maystre. + +- Issue #16488: epoll() objects now support the `with` statement. Patch + by Serhiy Storchaka. + - Issue #16298: In HTTPResponse.read(), close the socket when there is no Content-Length and the incoming stream is finished. Patch by Eran Rundstein. +- Add abc.ABC class to use inheritance rather than a direct invocation of + ABCMeta metaclass. Patch by Bruno Dupuis. + +- Expose the TCP_FASTOPEN and MSG_FASTOPEN flags in socket when they're + available. + +- Issue #15701: Add a .headers attribute to urllib.error.HTTPError. Patch + contributed by Berker Peksag. + - Issue #15872: Fix 3.3 regression introduced by the new fd-based shutil.rmtree that caused it to not ignore certain errors when ignore_errors was set. Patch by Alessandro Moura and Serhiy Storchaka. @@ -1060,6 +1529,9 @@ Library - Issue #16248: Disable code execution from the user's home directory by tkinter when the -E flag is passed to Python. Patch by Zachary Ware. +- Issue #13390: New function :func:`sys.getallocatedblocks()` returns the + number of memory blocks currently allocated. + - Issue #16628: Fix a memory leak in ctypes.resize(). - Issue #13614: Fix setup.py register failure with invalid rst in description. @@ -1080,6 +1552,9 @@ Library - Issue #10182: The re module doesn't truncate indices to 32 bits anymore. Patch by Serhiy Storchaka. +- Issue #16333: use (",", ": ") as default separator when indent is specified + to avoid trailing whitespace. Patch by Serhiy Storchaka. + - Issue #16573: In 2to3, treat enumerate() like a consuming call, so superfluous list() calls aren't added to filter(), map(), and zip() which are directly passed enumerate(). @@ -1088,17 +1563,46 @@ Library lengths as unsigned 32-bit integers, like the C implementation does. Patch by Serhiy Storchaka. +- Issue #16423: urllib.request now has support for ``data:`` URLs. Patch by + Mathias Panzenböck. + +- Issue #4473: Add a POP3.stls() to switch a clear-text POP3 session into + an encrypted POP3 session, on supported servers. Patch by Lorenzo Catucci. + +- Issue #4473: Add a POP3.capa() method to query the capabilities advertised + by the POP3 server. Patch by Lorenzo Catucci. + +- Issue #4473: Ensure the socket is shutdown cleanly in POP3.close(). + Patch by Lorenzo Catucci. + +- Issue #16522: added FAIL_FAST flag to doctest. + +- Issue #15627: Add the importlib.abc.InspectLoader.source_to_code() method. + - Issue #16408: Fix file descriptors not being closed in error conditions in the zipfile module. Patch by Serhiy Storchaka. +- Issue #14631: Add a new :class:`weakref.WeakMethod` to simulate weak + references to bound methods. + +- Issue #16469: Fix exceptions from float -> Fraction and Decimal -> Fraction + conversions for special values to be consistent with those for float -> int + and Decimal -> int. Patch by Alexey Kachayev. + - Issue #16481: multiprocessing no longer leaks process handles on Windows. +- Issue #12428: Add a pure Python implementation of functools.partial(). + Patch by Brian Thorne. + - Issue #16140: The subprocess module no longer double closes its child subprocess.PIPE parent file descriptors on child error prior to exec(). - Remove a bare print to stdout from the subprocess module that could have happened if the child process wrote garbage to its pre-exec error pipe. +- The subprocess module now raises its own SubprocessError instead of a + RuntimeError in various error situations which should not normally happen. + - Issue #16327: The subprocess module no longer leaks file descriptors used for stdin/stdout/stderr pipes to the child when fork() fails. @@ -1119,6 +1623,9 @@ Library - Issue #16431: Use the type information when constructing a Decimal subtype from a Decimal argument. +- Issue #15641: Clean up deprecated classes from importlib + Patch by Taras Lyapun. + - Issue #16350: zlib.decompressobj().decompress() now accumulates data from successive calls after EOF in unused_data, instead of only saving the argument to the last call. decompressobj().flush() now correctly sets unused_data and @@ -1131,30 +1638,57 @@ Library - Issue #16152: fix tokenize to ignore whitespace at the end of the code when no newline is found. Patch by Ned Batchelder. +- Issue #16284: Prevent keeping unnecessary references to worker functions + in concurrent.futures ThreadPoolExecutor. + - Issue #16230: Fix a crash in select.select() when one the lists changes size while iterated on. Patch by Serhiy Storchaka. - Issue #16228: Fix a crash in the json module where a list changes size while it is being encoded. Patch by Serhiy Storchaka. +- Issue #16351: New function gc.get_stats() returns per-generation collection + statistics. + - Issue #14897: Enhance error messages of struct.pack and struct.pack_into. Patch by Matti Mäki. +- Issue #16316: mimetypes now recognizes the .xz and .txz (.tar.xz) extensions. + Patch by Serhiy Storchaka. + - Issue #12890: cgitb no longer prints spurious <p> tags in text mode when the logdir option is specified. - Issue #16307: Fix multiprocessing.Pool.map_async not calling its callbacks. Patch by Janne Karila. -- Issue #16250: Fix URLError invocation with proper args. +- Issue #16305: Fix a segmentation fault occurring when interrupting + math.factorial. - Issue #16116: Fix include and library paths to be correct when building C extensions in venvs. - Issue #16245: Fix the value of a few entities in html.entities.html5. +- Issue #16301: Fix the localhost verification in urllib/request.py for file:// + urls. + +- Issue #16250: Fix the invocations of URLError which had misplaced filename + attribute for exception. + +- Issue #10836: Fix exception raised when file not found in urlretrieve + Initial patch by Ezio Melotti. + - Issue #14398: Fix size truncation and overflow bugs in the bz2 module. +- Issue #12692: Fix resource leak in urllib.request when talking to an HTTP + server that does not include a "Connection: close" header in its responses. + +- Issue #12034: Fix bogus caching of result in check_GetFinalPathNameByHandle. + Patch by Atsuo Ishimoto. + +- Improve performance of `lzma.LZMAFile`. + - Issue #16220: wsgiref now always calls close() on an iterable response. Patch by Brent Tubbs. @@ -1166,27 +1700,37 @@ Library - Issue #16176: Properly identify Windows 8 via platform.platform() +- Issue #16088: BaseHTTPRequestHandler's send_error method includes a + Content-Length header in it's response now. Patch by Antoine Pitrou. + - Issue #16114: The subprocess module no longer provides a misleading error message stating that args[0] did not exist when either the cwd or executable keyword arguments specified a path that did not exist. - Issue #16169: Fix ctypes.WinError()'s confusion between errno and winerror. -- Issue #16076: Made _elementtree.Element pickleable in a way that is compatible - with the Python Element. Pickling/unpickling of xml.etree.ElementTree.Element - works again - this was a temporary regression from 3.2 where the by-default - imported _elementtree had no pickling capability. +- Issue #1492704: shutil.copyfile() raises a distinct SameFileError now if + source and destination are the same file. Patch by Atsuo Ishimoto. + +- Issue #13896: Make shelf instances work with 'with' as context managers. + Original patch by Filip Gruszczyński. + +- Issue #15417: Add support for csh and fish in venv activation scripts. + +- Issue #14377: ElementTree.write and some of the module-level functions have + a new parameter - *short_empty_elements*. It controls how elements with no + contents are emitted. - Issue #16089: Allow ElementTree.TreeBuilder to work again with a non-Element element_factory (fixes a regression in SimpleTAL). -- Issue #16913: Fix Element.itertext()'s handling of text with XML entities., +- Issue #9650: List commonly used format codes in time.strftime and + time.strptime docsttings. Original patch by Mike Hoy. - Issue #16034: Fix performance regressions in the new `bz2.BZ2File` implementation. Initial patch by Serhiy Storchaka. -- Issue #16112: platform.architecture does not correctly escape argument to - /usr/bin/file. Patch by David Benjamin. +- `pty.spawn()` now returns the child process status returned by `os.waitpid()`. - Issue #15756: `subprocess.poll()` now properly handles `errno.ECHILD` to return a returncode of 0 when the child has already exited or cannot be waited @@ -1206,6 +1750,9 @@ Library - Issue #15421: Fix an OverflowError in `Calendar.itermonthdates()` after `datetime.MAXYEAR`. Patch by Cédric Krier. +- Issue #16112: platform.architecture does not correctly escape argument to + /usr/bin/file. Patch by David Benjamin. + - Issue #15970: `xml.etree.ElementTree` now serializes correctly the empty HTML elements 'meta' and 'param'. @@ -1228,22 +1775,61 @@ Library Popen when ``%action`` substitutions produce empty strings. - Issue #12776, issue #11839: Call `argparse` type function (specified by - add_argument) only once. Before, the type function was called twice in the + add_argument) only once. Before, the type function was called twice in the case where the default was specified and the argument was given as well. This was especially problematic for the FileType type, as a default file would always be opened, even if a file argument was specified on the command line. -- Issue #15906: Fix a regression in `argparse` caused by the preceding change, +- Issue #15906: Fix a regression in argparse caused by the preceding change, when ``action='append'``, ``type='str'`` and ``default=[]``. +- Issue #16113: Added sha3 module based on the Keccak reference implementation + 3.2. The `hashlib` module has four additional hash algorithms: `sha3_224`, + `sha3_256`, `sha3_384` and `sha3_512`. As part of the patch some common + code was moved from _hashopenssl.c to hashlib.h. + +- ctypes.call_commethod was removed, since its only usage was in the defunct + samples directory. + +- Issue #16692: Added TLSv1.1 and TLSv1.2 support for the ssl modules. + +- Issue #16832: add abc.get_cache_token() to expose cache validity checking + support in ABCMeta. + IDLE ---- +- Issue #17585: Fixed IDLE regression. Now closes when using exit() or quit(). + +- Issue #17657: Show full Tk version in IDLE's about dialog. + Patch by Todd Rovito. + +- Issue #17613: Prevent traceback when removing syntax colorizer in IDLE. + +- Issue #1207589: Backwards-compatibility patch for right-click menu in IDLE. + +- Issue #16887: IDLE now accepts Cancel in tabify/untabify dialog box. + +- Issue #17625: In IDLE, close the replace dialog after it is used. + +- Issue #14254: IDLE now handles readline correctly across shell restarts. + +- Issue #17614: IDLE no longer raises exception when quickly closing a file. + +- Issue #6698: IDLE now opens just an editor window when configured to do so. + +- Issue #8900: Using keyboard shortcuts in IDLE to open a file no longer + raises an exception. + +- Issue #6649: Fixed missing exit status in IDLE. Patch by Guilherme Polo. + - Issue #17114: IDLE now uses non-strict config parser. - Issue #9290: In IDLE the sys.std* streams now implement io.TextIOBase interface and support all mandatory methods and properties. +- Issue #5066: Update IDLE docs. Patch by Todd Rovito. + - Issue #16829: IDLE printing no longer fails if there are spaces or other special characters in the file path. @@ -1260,6 +1846,9 @@ IDLE - Issue #1207589: Add Cut/Copy/Paste items to IDLE right click Context Menu Patch by Todd Rovito. +- Issue #16123: IDLE - deprecate running without a subprocess. + Patch by Roger Serwy. + Tests ----- @@ -1280,8 +1869,15 @@ Tests - Issue #13898: test_ssl no longer prints a spurious stack trace on Ubuntu. +- Issue #17283: Share code between `__main__.py` and `regrtest.py` in + `Lib/test`. + - Issue #17249: convert a test in test_capi to use unittest and reap threads. +- Issue #17107: Test client-side SNI support in urllib.request thanks to + the new server-side SNI support in the ssl module. Initial patch by + Daniel Black. + - Issue #17041: Fix testing when Python is configured with the --without-doc-strings. @@ -1289,6 +1885,8 @@ Tests - Issue #15539: Added regression tests for Tools/scripts/pindent.py. +- Issue #16836: Enable IPv6 support even if IPv6 is disabled on the build host. + - Issue #17479: test_io now works with unittest test discovery. Patch by Zachary Ware. @@ -1348,6 +1946,11 @@ Tests - Issue #16748: test_heapq now works with unittest test discovery. +- Issue #10646: Tests rearranged for os.samefile/samestat to check for not + just symlinks but also hard links. + +- Issue #15302: Switch regrtest from using getopt to using argparse. + - Issue #15324: Fix regrtest parsing of --fromfile, --match, and --randomize options. @@ -1357,6 +1960,9 @@ Tests - Issue #16664: Add regression tests for glob's behaviour concerning entries starting with a ".". Patch by Sebastian Kreft. +- Issue #13390: The ``-R`` option to regrtest now also checks for memory + allocation leaks, using :func:`sys.getallocatedblocks()`. + - Issue #16559: Add more tests for the json module, including some from the official test suite at json.org. Patch by Serhiy Storchaka. @@ -1375,7 +1981,7 @@ Tests - Issue #15802: Fix test logic in `TestMaildir.test_create_tmp()`. Patch by Serhiy Storchaka. -- Issue #15557: Add a test suite for the `webbrowser` module, thanks to Anton +- Issue #15557: Added a test suite for the webbrowser module, thanks to Anton Barkovsky. - Issue #16698: Skip posix test_getgroups when built with OS X @@ -1384,6 +1990,9 @@ Tests Build ----- +- Issue #17591: Use lowercase filenames when including Windows header files. + Patch by Roumen Petrov. + - Issue #17550: Fix the --enable-profiling configure switch. - Issue #17425: Build with openssl 1.0.1d on Windows. @@ -1399,6 +2008,10 @@ Build - Issue #3718: Use AC_ARG_VAR to set MACHDEP in configure.ac. +- Issue #16235: Implement python-config as a shell script. + +- Issue #16769: Remove outdated Visual Studio projects. + - Issue #17031: Fix running regen in cross builds. - Issue #3754: fix typo in pthread AC_CACHE_VAL. @@ -1406,12 +2019,14 @@ Build - Issue #15484: Fix _PYTHON_PROJECT_BASE for srcdir != builddir builds; use _PYTHON_PROJECT_BASE in distutils/sysconfig.py. +- Drop support for Windows 2000. + - Issue #17029: Let h2py search the multiarch system include directory. - Issue #16953: Fix socket module compilation on platforms with HAVE_BROKEN_POLL. Patch by Jeffrey Armstrong. -- Issue #16836: Enable IPv6 support even if IPv6 is disabled on the build host. +- Issue #16320: Remove redundant Makefile dependencies for strings and bytes. - Cross compiling needs host and build settings. configure no longer creates a broken PYTHON_FOR_BUILD variable when --build is missing. @@ -1433,6 +2048,8 @@ Build - Issue #15923: Fix a mistake in ``asdl_c.py`` that resulted in a TypeError after 2801bf875a24 (see #15801). +- Issue #16135: Remove OS/2 support. + - Issue #15819: Make sure we can build Python out-of-tree from a read-only source directory. (Somewhat related to issue #9860.) @@ -1447,9 +2064,24 @@ C-API - Issue #16881: Fix Py_ARRAY_LENGTH macro for GCC < 3.1. +- Issue #15422: Get rid of PyCFunction_New macro. Use PyCFunction_NewEx + function (PyCFunction_New func is still present for backward compatibility). + +- Issue #16505: Remove unused Py_TPFLAGS_INT_SUBCLASS. + +- Issue #16086: PyTypeObject.tp_flags and PyType_Spec.flags are now unsigned + (unsigned long and unsigned int) to avoid an undefined behaviour with + Py_TPFLAGS_TYPE_SUBCLASS ((1 << 31). PyType_GetFlags() result type is + now unsigned too (unsigned long, instead of long). + +- Issue #16166: Add PY_LITTLE_ENDIAN and PY_BIG_ENDIAN macros and unified + endianness detection and handling. + Documentation ------------- +- Issue #15940: Specify effect of locale on time functions. + - Issue 17538: Document XML vulnerabilties - Issue #16642: sched.scheduler timefunc initial default is time.monotonic. @@ -1494,8 +2126,8 @@ Documentation - Issue #13538: Improve str() and object.__str__() documentation. -- Issue #16489: Make it clearer that importlib.find_loader() requires any and - all packages to be separately imported. +- Issue #16489: Make it clearer that importlib.find_loader() needs parent + packages to be explicitly imported. - Issue #16400: Update the description of which versions of a given package PyPI displays. @@ -1518,6 +2150,9 @@ Documentation - Issue #16115: Improve subprocess.Popen() documentation around args, shell, and executable arguments. +- Issue #13498: Clarify docs of os.makedirs()'s exist_ok argument. Done with + great native-speaker help from R. David Murray. + - Issue #15533: Clarify docs and add tests for `subprocess.Popen()`'s cwd argument. @@ -1538,6 +2173,11 @@ Documentation Tools/Demos ----------- +- Issue #15239: Make mkstringprep.py work again on Python 3. + +- Issue #17028: Allowed Python arguments to be supplied to the Windows + launcher. + - Issue #17156: pygettext.py now uses an encoding of source file and correctly writes and escapes non-ascii characters. @@ -1546,9 +2186,18 @@ Tools/Demos improper indentation. pindent.py now works with continued lines broken after "class" or "def" keywords and with continuations at the start of line. -- Issue #15378: Fix Tools/unicode/comparecodecs.py. Patch by Serhiy Storchaka. +- Issue #11797: Add a 2to3 fixer that maps reload() to imp.reload(). + +- Issue #10966: Remove the concept of unexpected skipped tests. + +- Issue #9893: Removed the Misc/Vim directory. -- Issue #16476: Fix json.tool to avoid including trailing whitespace. +- Removed the Misc/TextMate directory. + +- Issue #16245: Add the Tools/scripts/parse_html5_entities.py script to parse + the list of HTML5 entities and update the html.entities.html5 dictionary. + +- Issue #15378: Fix Tools/unicode/comparecodecs.py. Patch by Serhiy Storchaka. - Issue #16549: Make json.tool work again on Python 3 and add tests. Initial patch by Berker Peksag and Serhiy Storchaka. @@ -1643,6 +2292,9 @@ Core and Builtins Library ------- +- Issue #17158: Add 'symbols' to help() welcome message; clarify + 'modules spam' messages. + - Issue #15847: Fix a regression in argparse, which did not accept tuples as argument lists anymore. @@ -1718,6 +2370,8 @@ Core and Builtins Library ------- +- Issue #13248: removed deprecated and undocumented difflib.isbjunk, isbpopular. + - Issue #13370: Ensure that ctypes works on Mac OS X when Python is compiled using the clang compiler. @@ -2133,6 +2787,10 @@ Documentation - Issue #15250: Document that `filecmp.dircmp()` compares files shallowly. Patch contributed by Chris Jerdonek. +- Issue #15442: Expose the default list of directories ignored by + `filecmp.dircmp()` as a module attribute, and expand the list to more modern + values. + Tests ----- @@ -2245,9 +2903,6 @@ Core and Builtins Library ------- -- Issue #16305: Fix a segmentation fault occurring when interrupting - math.factorial. - - Issue #12288: Consider '0' and '0.0' as valid initialvalue for tkinter SimpleDialog. @@ -3942,7 +4597,7 @@ Library - Issue #13589: Fix some serialization primitives in the aifc module. Patch by Oleg Plakhotnyuk. -- Issue #13642: Unquote before b64encoding ``user:password`` during Basic +- Issue #13642: Unquote before b64encoding user:password during Basic Authentication. Patch contributed by Joonas Kuorilehto. - Issue #12364: Fix a hang in concurrent.futures.ProcessPoolExecutor. @@ -4401,8 +5056,8 @@ Library - Issue #12607: In subprocess, fix issue where if stdin, stdout or stderr is given as a low fd, it gets overwritten. -- Issue #12576: Fix urlopen behavior on sites which do not send (or obfuscate) - a ``Connection: close`` header. +- Issue #12576: Fix urlopen behavior on sites which do not send (or obfuscates) + Connection:close header. - Issue #12560: Build libpython.so on OpenBSD. Patch by Stefan Sperling. @@ -4960,6 +5615,9 @@ Library - Issue #11635: Don't use polling in worker threads and processes launched by concurrent.futures. +- Issue #5845: Automatically read readline configuration to enable completion + in interactive mode. + - Issue #6811: Allow importlib to change a code object's co_filename attribute to match the path to where the source code currently is, not where the code object originally came from. @@ -4994,7 +5652,7 @@ Library - Issue #11127: Raise a TypeError when trying to pickle a socket object. -- Issue #11563: ``Connection: close`` header is sent by requests using URLOpener +- Issue #11563: Connection:close header is sent by requests using URLOpener class which helps in closing of sockets after connection is over. Patch contributions by Jeff McNeil and Nadeem Vawda. @@ -5570,7 +6228,7 @@ Tests - Issue #11505: improves test coverage of string.py. Patch by Alicia Arlen -- Issue #11490: test_subprocess.test_leaking_fds_on_error no longer gives a +- Issue #11490: test_subprocess:test_leaking_fds_on_error no longer gives a false positive if the last directory in the path is inaccessible. - Issue #11223: Fix test_threadsignals to fail, not hang, when the |